數(shù)據(jù)結(jié)構(gòu)學(xué)生成績(jī)管理課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì) 報(bào) 告 </p><p>  課程名稱 數(shù)據(jù)結(jié)構(gòu) </p><p>  設(shè)計(jì)題目 學(xué)生成績(jī)管理系統(tǒng) </p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  

2、班 級(jí) </p><p>  學(xué) 號(hào) </p><p>  姓 名 </p><p>  完成日期 2012年6月7號(hào)

3、 </p><p><b>  一、問題描述</b></p><p>  編寫一個(gè)簡(jiǎn)單的學(xué)生信息管理程序,能實(shí)現(xiàn)對(duì)學(xué)生信息的簡(jiǎn)單管理。 </p><p><b>  二、基本要求</b></p><p>  建立一個(gè)4個(gè)學(xué)生的信息登記表,每個(gè)學(xué)生的信息包括:學(xué)號(hào),姓

4、名,和3門課程的成績(jī)(FOX,C,ENGLISH)。</p><p>  程序運(yùn)行時(shí)顯示一個(gè)簡(jiǎn)單的菜單,例如:</p><p> ?。?)信息輸入(INPUT)   (2)總分統(tǒng)計(jì)(COUNT)   (3)總分排序(SORT)   (4)查詢(QUERY)輸入要求:</p><p><b>

5、  三、測(cè)試數(shù)據(jù)</b></p><p><b>  其中:</b></p><p>  (1)對(duì)4個(gè)學(xué)生的信息進(jìn)行輸入;</p><p> ?。?)對(duì)每個(gè)學(xué)生的3門課程統(tǒng)計(jì)總分;</p><p> ?。?)對(duì)4個(gè)學(xué)生的總分按降序排序并顯示出來;</p><p> ?。?)查詢輸入一個(gè)

6、學(xué)號(hào)后,顯示出該學(xué)生的有關(guān)信息;。</p><p><b>  四、算法思想</b></p><p>  信息輸入:采用數(shù)組的形式把自己輸入的那些關(guān)于學(xué)生信息的資料存儲(chǔ)起來,以便于以后的應(yīng)用。</p><p>  打印顯示:把那些已經(jīng)錄入的學(xué)生信息按錄入的順序輸出來檢查是否有錯(cuò)。</p><p>  修改和刪除模塊:錄入

7、的那些信息按要求刪除和修改。</p><p>  查詢模塊:按姓名查詢和按學(xué)好查詢,都是把他們和原來的那些數(shù)據(jù)進(jìn)行比較就可以查找。</p><p>  最后就是總分排序的模塊</p><p><b>  五、數(shù)據(jù)結(jié)構(gòu)</b></p><p>  學(xué)生成績(jī)管理的數(shù)據(jù)類型:</p><p>  str

8、uct stu</p><p><b>  {</b></p><p>  char name[20];</p><p><b>  int num;</b></p><p><b>  };</b></p><p>  struct dom</p

9、><p>  { int zong_num;</p><p>  int shu_num;</p><p>  int ying_num;</p><p>  int c_num;</p><p>  struct stu st;}s[MAX],p;</p><p><b>  六、測(cè)試情

10、況</b></p><p><b>  1、主菜單界面:</b></p><p>  2、錄入學(xué)生信息時(shí)候的界面:</p><p>  3、查詢模塊的操作頁(yè)面:</p><p>  4、總分排序的操作界面:</p><p><b>  七、心得:</b></

11、p><p>  在選擇題目的時(shí)候我就想了,我可以把原來的程序給改了,可是我還是想的太簡(jiǎn)單了,修改一個(gè)程序不是那么的簡(jiǎn)單的,有時(shí)候還會(huì)把他給復(fù)雜化,因?yàn)樵瓉淼某绦蚨紩?huì)有好多的不能用的語(yǔ)句,需要把他們一句一句的都給刪掉,原來多余的也要?jiǎng)h掉,還有的可要可不要的程序,有時(shí)候自己都拿不準(zhǔn)要不要了,起步的時(shí)候還是有這樣或者那樣的一些不對(duì)的東西,程序的錯(cuò)誤是在所難免的,我們要一步一步的去施行,去修改,沒有免費(fèi)的午餐,有時(shí)候調(diào)程序的

12、時(shí)候就好幾個(gè)小時(shí)坐在那里不動(dòng)一動(dòng),自己的脖子就會(huì)很痛很痛。不過在調(diào)出來程序的時(shí)候一切都是值得的。當(dāng)你成功時(shí)候的那種喜悅,和別人羨慕的表情中,感覺自己很偉大。當(dāng)然在自己調(diào)程序的時(shí)候感覺自己對(duì)程序的了解有了質(zhì)的飛躍。不是每個(gè)人都有這樣的機(jī)會(huì)的。</p><p><b>  八、源程序</b></p><p>  #include <stdio.h></p

13、><p>  #include "string.h"</p><p>  #define MAX 10</p><p>  #define PRINT1 printf("---------------------------------------------------------------------------\n")

14、</p><p>  #define PRINT2 printf("學(xué)號(hào)--學(xué)生姓名--數(shù)學(xué)成績(jī)--英語(yǔ)成績(jī)--c語(yǔ)言成績(jī)\n\n")</p><p><b>  int sum;</b></p><p>  struct stu</p><p>  {char name[20];int num;

15、};</p><p>  struct dom</p><p>  {int zong_num, shu_num, ying_num, c_num;</p><p>  struct stu st;}s[MAX],p;</p><p>  save_message()/*保存信息*/</p><p>  { FILE

16、*fp;</p><p><b>  int i;</b></p><p>  if((fp=fopen("dom.txt","wt"))==NULL)</p><p>  {printf("讀文件錯(cuò)誤!\n");</p><p>  return 0;}<

17、;/p><p>  for(i=0;i<sum;i++)</p><p>  if(fwrite(&s[i],sizeof(struct dom),1,fp)!=1)</p><p>  printf("寫文件錯(cuò)誤!\n");</p><p>  fclose(fp);}</p><p>

18、  input_message()/*輸入模塊*/</p><p>  { int i=0,j;</p><p>  printf("錄入人數(shù):");</p><p>  scanf("%d",&j);</p><p>  printf("\n\n 錄入學(xué)生信息(

19、最多%d個(gè))\n",MAX);</p><p>  printf(" ----------------------------\n"); do</p><p>  { printf("\n 第%d個(gè)學(xué)生\n\n",i+1);</p><p>  printf("

20、;\n 學(xué)號(hào): ");</p><p>  scanf("%d",&s[i].st.num);</p><p>  if(s[i].st.num==0) break;</p><p>  printf("\n 學(xué)生姓名: ");</p><p>  

21、scanf("%s",s[i].st.name); </p><p>  printf("請(qǐng)輸入數(shù)學(xué)成績(jī):");</p><p>  scanf("%d",&s[i].shu_num);</p><p>  getchar();</p><p>  printf(&qu

22、ot;請(qǐng)輸入英語(yǔ)成績(jī):");</p><p>  scanf("%d",&s[i].ying_num);</p><p>  getchar();</p><p>  printf("請(qǐng)輸入C語(yǔ)言成績(jī):");</p><p>  scanf("%d",&s[

23、i].c_num);</p><p><b>  i++;</b></p><p>  }while(i<j);</p><p>  printf("\n --%d個(gè)學(xué)生的信息輸入完畢!--\n",i);</p><p><b>  sum=i;</b>

24、</p><p>  printf("\n 按任意鍵返回主菜單!");</p><p>  getchar();</p><p>  return 0;}</p><p>  int read_message()/*讀取信息*/</p><p>  {FILE *fp;</

25、p><p><b>  int i=0;</b></p><p>  if((fp=fopen("dom.txt","rt"))==NULL)</p><p>  {printf("\n\n*****暫時(shí)還沒有任何信息,按任意鍵進(jìn)入主菜單選擇基本信息的錄入!*****\n");return

26、 0; }</p><p>  while(!feof(fp))</p><p>  {fread(&s[i],sizeof(struct dom),1,fp);</p><p><b>  i++;}</b></p><p>  fclose(fp);</p><p>  return(

27、i);}</p><p>  output_message()/*輸出模塊*/</p><p>  { int i=0;</p><p>  printf("\n\n --學(xué)生信息表-- \n\n");</p><p><b>  PRINT2;&l

28、t;/b></p><p><b>  PRINT1;</b></p><p>  for(i=0;i<sum;i++)</p><p>  if(s[i].st.num!=0)</p><p>  {printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[

29、i].st.name,</p><p>  s[i].shu_num,s[i].ying_num,s[i].c_num);</p><p>  printf("\n");}}</p><p>  insert_message()/*添加學(xué)生信息*/</p><p>  {int i=sum,flag=0;</p>

30、;<p>  char choice;</p><p>  printf("\n\n 添加一個(gè)新同學(xué)\n");</p><p>  printf(" ---------------\n");do</p><p>  {printf(&qu

31、ot;\n 新學(xué)號(hào): ");</p><p>  scanf("%d",&s[i].st.num);</p><p>  printf("\n 學(xué)生姓名: ");</p><p>  scanf("%s",s[i].st.name);<

32、;/p><p>  printf("\n 數(shù)學(xué)成績(jī) ");</p><p>  scanf("%d",&s[i].shu_num);</p><p>  printf("\n 英語(yǔ)成績(jī) ");</p><p>  scanf("%d&

33、quot;,&s[i].ying_num);</p><p>  printf("\n C語(yǔ)言成績(jī) ");</p><p>  scanf("%d",&s[i].c_num);</p><p><b>  sum++;</b></p><p>  

34、printf("\n 要繼續(xù)嗎?(Y/N)");</p><p>  getchar();</p><p>  scanf("%c",&choice);</p><p>  if(choice=='y' || choice=='Y')</p><

35、;p>  {flag=1; i++;</p><p>  printf("\n 繼續(xù)!\n");}</p><p>  else flag=0;</p><p>  }while(flag==1);</p><p>  printf("\n 按任意鍵返回主

36、菜單!");</p><p>  return 0;} /*刪除模塊*/</p><p>  del_message()</p><p>  {int flag,del_num,i,k;</p><p>  char choice; do</p><p>  {printf("\n

37、 輸入要?jiǎng)h除的學(xué)生學(xué)號(hào): ");</p><p>  scanf("%d",&del_num);</p><p>  for(i=0;i<sum;i++)</p><p>  if(del_num==s[i].st.num)</p><p>  for(k=i;k<sum-1

38、;k++)</p><p>  s[k]=s[k+1];sum--;</p><p>  printf("\n\n 繼續(xù)嗎?(Y/N)");</p><p>  getchar();</p><p>  scanf("%c",&choice);</p><

39、;p>  if(choice=='y' || choice=='Y')</p><p><b>  {flag=1;</b></p><p>  printf("\n 繼續(xù)!\n");}</p><p>  else flag=0;</p><p&g

40、t;  }while(flag==1);</p><p>  printf("\n\n 按任意鍵返回主菜單!");</p><p>  getchar();</p><p>  return 0;}</p><p>  revise_message()/*修改模塊*/</p>

41、<p>  {int i=0,choices,revise_num,flag=0; </p><p><b>  do</b></p><p>  {printf("\n 輸入要修改的學(xué)生號(hào): ");</p><p>  scanf("%d",&re

42、vise_num);</p><p>  for(i=0;i<sum;i++)</p><p>  if(s[i].st.num==revise_num)</p><p><b>  {</b></p><p>  printf("\n --學(xué)生信息--\n");</

43、p><p><b>  PRINT1;</b></p><p>  PRINT2; printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,s[i].shu_num,s[i].ying_num,s[i].c_num;</p><p>  printf("\n

44、 您要修改哪一項(xiàng)?\n");</p><p>  printf("\n 1.學(xué)號(hào)\n");</p><p>  printf("\n 2.姓名\n");</p><p>  printf("\n 3.數(shù)學(xué)成績(jī)\n&

45、quot;);</p><p>  printf("\n 4.英語(yǔ)成績(jī)\n");</p><p>  printf("\n 5.c語(yǔ)言成績(jī)\n");</p><p>  printf("\n 請(qǐng)選擇(1-5): ");</

46、p><p>  scanf("%d",&choices);</p><p>  switch(choices)</p><p>  {case 1:printf("\n 輸入修改后的學(xué)號(hào)");</p><p>  scanf("%d",&s[i].st.num)

47、;break;</p><p>  case 2:printf("\n 輸入修改后的姓名");</p><p>  scanf("%s",s[i].st.name);break; </p><p>  case 3:printf("\n 輸入修改后的數(shù)學(xué)成績(jī)");</p&

48、gt;<p>  scanf("%d",&s[i].shu_num);break;</p><p>  case 4:printf("\n 輸入修改后的英語(yǔ)成績(jī)");</p><p>  scanf("%d",&s[i].ying_num);break;</p><p>

49、;  case 5:printf("\n 輸入修改后的c語(yǔ)言成績(jī)");</p><p>  scanf("%d",&s[i].c_num);break; }</p><p><b>  PRINT1;</b></p><p><b>  PRINT2;</b><

50、/p><p>  printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,s[i].shu_num,s[i].ying_num,s[i].c_num;</p><p><b>  break; }</b></p><p>  if(i==sum)</p><

51、;p>  printf("\n 該學(xué)生不存在!");</p><p><b>  return 0;</b></p><p>  }while(flag==1);</p><p>  getchar();</p><p>  printf("\n

52、 按任意鍵返回主菜單! ");</p><p>  return 0;}</p><p>  renew_message()/*更新模塊*/</p><p>  { int choice;do</p><p>  {printf("\n\n\n *****更新學(xué)生

53、信息*****\n\n");</p><p>  printf(" 1.添加學(xué)生信息\n\n");</p><p>  printf(" 2.刪除學(xué)生信息\n\n");</p><p>  printf("

54、 3.修改學(xué)生信息\n\n");</p><p>  printf(" 0.返回主菜單\n請(qǐng)選擇(0-3)\n");</p><p>  scanf("%d",&choice);</p><p>  switch

55、(choice){</p><p>  case 1:insert_message();break;</p><p>  case 2:del_message();break;</p><p>  case 3:revise_message();break;</p><p>  case 0:break;}}</p><p

56、>  while(choice!=0);</p><p>  return 0;}</p><p>  inquire_name() /*按姓名查詢*/</p><p>  {int i,j=0;</p><p>  char inquire_name[10];</p><p>  printf(&

57、quot;\n 輸入要查詢的學(xué)生姓名: ");</p><p>  scanf("%s",inquire_name);</p><p>  for(i=0;i<sum;i++)</p><p>  if(strcmp(s[i].st.name,inquire_name)==0&&am

58、p;s[i].st.num!=0)</p><p>  {printf("\n --學(xué)生信息-- \n");</p><p><b>  PRINT1;</b></p><p><b>  PRINT2;</b></p><p&g

59、t;  printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,s[i].shu_num,s[i].ying_num,s[i].c_num;</p><p>  }else j++;</p><p>  if(j==sum)</p><p>  printf("\n

60、 該學(xué)生不存在!");</p><p>  return 0; }</p><p>  int inquire_num() /*按學(xué)號(hào)查詢*/</p><p>  {int i,j=0,inquire_num;</p><p>  printf("\n

61、 輸入要查詢的學(xué)生學(xué)號(hào): ");</p><p>  scanf("%d",&inquire_num);</p><p>  for(i=0;i<sum;i++)</p><p>  if(inquire_num==s[i].st.num)</p><p>  {print

62、f("\n --學(xué)生信息--\n");</p><p><b>  PRINT1;</b></p><p><b>  PRINT2;</b></p><p>  printf("%2d%10s%8d%8d%8d\n",s[i].st.nu

63、m,s[i].st.name,s[i].shu_num,</p><p>  s[i].ying_num,s[i].c_num);}</p><p><b>  else j++;</b></p><p>  if(j==sum)</p><p>  printf("\n

64、 該學(xué)生不存在!");</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  /*查詢模塊*/</b></p><p>  inquire_message()</p><p>

65、;  {int choice;do</p><p>  {printf("\n\n *****查詢學(xué)生信息*****\n\n");</p><p>  printf(" 1.按學(xué)生姓名查詢\n");</p><p>  printf("

66、 2.按學(xué)生學(xué)號(hào)查詢\n");</p><p>  printf(" 0.回主菜單\n");</p><p>  printf(" 請(qǐng)選擇(0-2): ");</p><p>  scanf("%d"

67、;,&choice);</p><p>  switch(choice)</p><p>  {case 1:inquire_name();break;</p><p>  case 2:inquire_num();break;</p><p>  case 0:break;}</p><p>  }while

68、(choice!=0);</p><p>  return 0;}</p><p>  count_person() /*學(xué)生成績(jī)情況統(tǒng)計(jì)*/</p><p>  {int i,j;struct dom tmp;</p><p>  printf("\n 學(xué)生總分

69、排序情況");</p><p>  printf("\n -------------------------------\n");</p><p>  printf("\n 姓名 學(xué)號(hào) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) C語(yǔ)言成績(jī) 總成績(jī) \n");</p><p>  for(i=0;i<sum;

70、i++)s[i].zong_num=s[i].shu_num+s[i].ying_num+s[i].c_num;</p><p>  for (i=0;i<sum;i++)</p><p>  {for (j=1;j<sum-i;j++)</p><p>  {if (s[j-1].zong_num<s[j].zong_num)</p>

71、<p>  {tmp=s[j-1];</p><p>  s[j-1]=s[j];</p><p>  s[j]=tmp; }} }</p><p>  for(i=0;i<sum-1;i++)</p><p>  printf("\n%10s%8d%8d%8d%8d%8d\n",s[i].st.nam

72、e,s[i].st.num,s[i].shu_num,</p><p>  s[i].ying_num,s[i].c_num,s[i].zong_num);}</p><p>  void main()</p><p>  {int choice;</p><p>  sum=read_message();do</p><

73、p>  {printf("\n\n\n *****學(xué)生成績(jī)管理系統(tǒng)*****\n\n");</p><p>  printf(" 1.錄入學(xué)生信息\n\n");</p><p>  printf(" 2.顯示學(xué)生信息\n\n");</p><p>  p

74、rintf(" 3.更新學(xué)生信息\n\n");</p><p>  printf(" 4.查詢學(xué)生信息\n\n");</p><p>  printf(" 5.總分排序成績(jī)\n\n");</p><p>  printf("

75、 0.退出系統(tǒng)\n\n");</p><p>  printf(" 請(qǐng)選擇(0-5):");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p>  {case 1: input_me

76、ssage(); break; /*錄入模塊*/</p><p>  case 2: output_message(); break; /*輸出模塊*/</p><p>  case 3: renew_message(); break; /*更新模塊*/</p><p>  case 4: inquire_message

77、(); break; /*查詢模塊*/</p><p>  case 5: count_person(); break; /*統(tǒng)計(jì)模塊*/</p><p>  case 0: break; /*退出系統(tǒng)*/}</p><p>  }while(choice!=0);</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論