課程設(shè)計(jì)報(bào)告--學(xué)生測評系統(tǒng)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《C語言程序設(shè)計(jì)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  題 目: 學(xué)生測評系統(tǒng)____</p><p>  院 (系): 信息科學(xué)與工程學(xué)院 </p><p>  專業(yè)班級(jí):___軟件工程

2、 __</p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p>  20 13 年 6 月 8 日至20

3、13 年 6 月 21 日</p><p>  C語言程序設(shè)計(jì) 課程設(shè)計(jì)任務(wù)書</p><p><b>  目 錄</b></p><p>  1 系統(tǒng)需求分析………………………………………………………………………5</p><p>  1.1系統(tǒng)概述……………………………………………………………………

4、…5 </p><p>  1.2 系統(tǒng)功能分析…………………………………………………………………5</p><p>  2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)…………………………………………………………………………6</p><p>  3 系統(tǒng)實(shí)現(xiàn)………………………………………………………………………………8~21</p><p>  4 系統(tǒng)測試………………

5、………………………………………………………………22~28</p><p>  結(jié)論………………………………………………………………………………………29</p><p> ?。ㄒ螅耗夸涱}頭用三號(hào)黑體字居中書寫,隔行書寫目錄內(nèi)容。目錄中各級(jí)題序及題標(biāo)用小四號(hào)黑體字)</p><p><b>  1 系統(tǒng)需求分析</b></p>

6、<p><b>  1.1 系統(tǒng)概述</b></p><p>  現(xiàn)代人社會(huì)交往越來越多,紙質(zhì)的測評系統(tǒng)已經(jīng)不能滿足我們的要求,更新麻煩,查詢困難,錄入也不方便等缺點(diǎn)是紙質(zhì)測評系統(tǒng)所不能克服的。在此情況下,迫切需要一個(gè)電子版的學(xué)生測評系統(tǒng)來滿足我們的需求,對學(xué)生測評系統(tǒng)進(jìn)行必要的管理,滿足人們對記錄提供了極大的方便??紤]到要對學(xué)生測評系統(tǒng)進(jìn)行快速檢索,所以采用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)通訊錄信

7、息管理系統(tǒng)。要求實(shí)現(xiàn)插入、查找、刪除、修改、保存等基本功能,人機(jī)界面友好,使用文字化界面。所以便產(chǎn)生該學(xué)生測評系統(tǒng)。</p><p>  1.2 系統(tǒng)功能分析</p><p>  該系統(tǒng)通過結(jié)構(gòu)體數(shù)組或鏈表實(shí)現(xiàn)了對學(xué)生測評信息的批量錄入、瀏覽、修改、刪除、添加、查詢以及考試平均成績和綜合測評總分自動(dòng)計(jì)算功能。具體要求如下:</p><p>  學(xué)生的測評信息為:學(xué)號(hào)

8、、姓名、性別、家庭住址、聯(lián)系電話、語文成績、數(shù)學(xué)成績、外語成績、考試平均成績、同學(xué)互評分、品德成績、教師評分、綜合測評總分,試設(shè)計(jì)學(xué)生測評信息管理系統(tǒng),使之能提供以下功能:</p><p><b>  (1) 基本功能:</b></p><p>  ①系統(tǒng)以菜單方式工作:提供一個(gè)字符主菜單使用戶可以選擇不同的字符來實(shí)現(xiàn)系統(tǒng)的各個(gè)功能,各個(gè)功能實(shí)現(xiàn)后又能夠返回到主菜單。

9、</p><p> ?、谂夸浫牍δ埽涸阡浫氲倪^程中,通過詢問用戶是否繼續(xù)錄入的方法來錄入多個(gè)學(xué)生的測評信息(每個(gè)學(xué)生考試平均成績和綜合測評總分信息不用錄入)。</p><p>  ③平均成績和綜合測評總分自動(dòng)計(jì)算:根據(jù)考試平均成績=(語文+數(shù)學(xué)+外語)/3 ,計(jì)算出學(xué)生的考試平均成績,根據(jù)綜合測評總分=考試成績*0.6+同學(xué)互評分*0.1+品德成績*0.1+老師評分*0.2,計(jì)算出學(xué)生的

10、綜合測評總分。</p><p> ?、転g覽功能:按一定的格式顯示所有學(xué)生測評信息。</p><p> ?、菪薷墓δ埽狠斎胍薷牡膶W(xué)號(hào),先對該學(xué)號(hào)進(jìn)行查詢,如果查詢成功,則可以根據(jù)提示對該學(xué)生測評每項(xiàng)信息(學(xué)生考試平均成績和綜合測評總分信息除外)進(jìn)行修改,當(dāng)修改了語文成績、數(shù)學(xué)成績、外語成績、同學(xué)互評分、品德成績、教師評分后,能夠自動(dòng)修改學(xué)生的考試平均成績和綜合測評總分的信息,如果查詢不成功

11、,則顯示相應(yīng)的提示信息。</p><p> ?、迍h除功能:輸入要?jiǎng)h除的學(xué)號(hào),先對該學(xué)號(hào)進(jìn)行查詢,如果查詢成功,則刪除該學(xué)生測評所有信息,如果查詢不成功,則顯示相應(yīng)的提示信息。</p><p> ?、咛砑庸δ埽狠斎胍砑拥膶W(xué)號(hào),先對該學(xué)號(hào)進(jìn)行查詢,如果查詢成功,則提示輸入的學(xué)號(hào)已存在的信息,并要求能夠重新輸入,如果查詢不成功,則輸入該學(xué)生測評的其他信息(考試平均成績和綜合測評總分信息不添加)

12、,并實(shí)現(xiàn)對考試平均成績和綜合測評總分自動(dòng)計(jì)算,從而完成一個(gè)學(xué)生測評信息的錄入。</p><p> ?、嗖樵児δ埽耗軌蚍謩e按輸入的學(xué)號(hào)和姓名查詢學(xué)生測評的信息,如果查詢成功,則按一定的格式顯示查詢結(jié)果,如果查詢不成功,則顯示相應(yīng)的提示信息。</p><p><b>  (2)擴(kuò)展功能:</b></p><p> ?、?保存功能:首先提示用戶輸入保

13、存的文件名,將結(jié)構(gòu)體數(shù)組或鏈表中的通訊錄信息保存在指定的文件中。</p><p><b>  2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)</b></p><p><b>  2.1 系統(tǒng)結(jié)構(gòu)圖</b></p><p>  2.2 函數(shù)詳細(xì)說明</p><p>  main();主函數(shù) indesk();

14、主界面函數(shù)</p><p>  luru();錄入函數(shù) liulan();瀏覽函數(shù)</p><p>  update_record();修改函數(shù) delete_record();刪除函數(shù)</p><p>  add(); 添加函數(shù) search(); 查找函數(shù)</p><p>  save

15、_to_file();保存函數(shù) read(); 讀取數(shù)據(jù)函數(shù)</p><p>  average();求平均值函數(shù) paixu();排序函數(shù)</p><p>  Main是主函數(shù),程序首先是從主函數(shù)開始運(yùn)行的。在主函數(shù)中要判斷你是第幾次進(jìn)入系統(tǒng)。</p><p>  luru是錄入函數(shù),可以批量錄入學(xué)生的信息,他被主函數(shù)所調(diào)用,也被主界面函

16、數(shù)調(diào)用。</p><p>  Index函數(shù)是顯示主界面的,提供用戶所進(jìn)行的一些操作選項(xiàng)。被反復(fù)調(diào)用,與其他函數(shù)(除主函數(shù))進(jìn)行相互調(diào)用。</p><p>  liulan是瀏覽函數(shù),調(diào)用排序函數(shù)按學(xué)號(hào)的從小到大進(jìn)行排序后瀏覽所有的學(xué)生信息。</p><p>  Update-record是更新函數(shù),可以修改學(xué)生的信息。</p><p>  

17、Deleted-record是刪除函數(shù),可以刪除學(xué)生的信息。</p><p>  add是添加函數(shù),可以添加新的學(xué)生信息。</p><p>  Save_to_file是保存函數(shù),可以保存用戶所錄入的學(xué)生的信息。</p><p><b>  3 系統(tǒng)實(shí)現(xiàn)</b></p><p>  3.1學(xué)生結(jié)構(gòu)體數(shù)組的定義和基本的頭文

18、件聲明</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #define N 100</p><p>  int n=0,t=0;</p

19、><p>  struct student_assess//定義一個(gè)結(jié)構(gòu)體數(shù)組。</p><p>  {char num[30];</p><p>  char name[30];</p><p>  char sex[10];</p><p>  char address[30];</p><p>

20、;  char phonenumber[30];</p><p>  float chinese_score;</p><p>  float math_score;</p><p>  float english_score;</p><p>  float class_a_score;</p><p>  floa

21、t quality_score;</p><p>  float te_a_score;</p><p><b>  }s[N];</b></p><p><b>  3.2主函數(shù)</b></p><p>  主函數(shù)判斷用戶是否是第一次進(jìn)入系統(tǒng),如果是的話就調(diào)用錄入函數(shù),不是的話就調(diào)用讀入函數(shù)和主界

22、面函數(shù)。</p><p>  void main()//主函數(shù)</p><p><b>  { char a;</b></p><p>  void luru();</p><p>  void indesk();</p><p>  void read();</p><p&g

23、t;  printf("你是第一次登陸嗎?< y 是, n 不是>\n");</p><p>  scanf("%c",&a);</p><p>  if(a=='y') luru();</p><p>  if(a=='n') </p><p>&l

24、t;b>  { read();</b></p><p><b>  indesk();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.3 主界面函數(shù)</b><

25、;/p><p>  顯示系統(tǒng)的所有功能,讓用戶選擇。</p><p>  void indesk()//主菜單函數(shù)</p><p>  {void luru();</p><p>  void liulan();</p><p>  void update_record();</p><p>  

26、void delete_record();</p><p>  void add();</p><p>  void search();</p><p>  void save_to_file();</p><p><b>  int x;</b></p><p>  printf("*

27、***-----歡迎來到學(xué)生測評系統(tǒng)------****\n");</p><p>  printf("*--------軟工1202------李偉--------*\n");</p><p>  printf("選擇要執(zhí)行的功能\n");</p><p>  printf("1 錄入學(xué)生信息\n2 瀏覽

28、所有學(xué)生信息\n3 修改學(xué)生信息\n4 刪除學(xué)生記錄\n5 添加新學(xué)生\n6 查詢學(xué)生信息\n7 保存學(xué)生信息\n8 退出系統(tǒng)\n");</p><p>  printf("*----------------------------------*\n");</p><p>  scanf("%d",&x);</p>&

29、lt;p>  if (x==1) {system("cls");luru();}//錄入學(xué)生信息</p><p>  if(x==2) {system("cls");liulan();}//瀏覽所有學(xué)生信息</p><p>  if(x==3) {system("cls");update_record();}//修改學(xué)生信息

30、</p><p>  if(x==4) delete_record();//刪除學(xué)生記錄</p><p>  if(x==5) {system("cls");add();}//添加新學(xué)生</p><p>  if(x==6) {system("cls");search();}//查詢學(xué)生信息</p><p&

31、gt;  if(x==7) save_to_file();//保存學(xué)生信息</p><p>  if(x==8) exit(0);</p><p><b>  }</b></p><p><b>  3.4 錄入函數(shù)</b></p><p>  可以批量錄入學(xué)生的信息。</p><

32、;p>  void luru()//批量錄入函數(shù)</p><p><b>  { int x;</b></p><p>  printf("請輸入學(xué)生信息:\n");</p><p>  for(;t<N;t++)</p><p>  { printf("學(xué)號(hào) 姓名 性別 家

33、庭住址 聯(lián)系電話 語文成績 數(shù)學(xué) 外語 同學(xué)評 品德 教師評\n");</p><p>  scanf("%s%s%s%s%s%f%f%f%f%f%f",s[t].num,s[t].name,s[t].sex,s[t].address,s[t].phonenumber,&s[t].chinese_score,&s[t].math_score,&s[t].e

34、nglish_score,&s[t].class_a_score,&s[t].quality_score,&s[t].te_a_score);</p><p><b>  n=n+1;</b></p><p>  printf("請選擇:\n1 繼續(xù)錄入學(xué)生\n2 停止錄入返回主菜單\n");</p><

35、p>  scanf("%d",&x);</p><p><b>  if(x==1) </b></p><p><b>  continue;</b></p><p><b>  if(x==2) </b></p><p><b> 

36、 indesk();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.5瀏覽函數(shù)</b></p><p>  通過調(diào)用排序函數(shù)來按學(xué)號(hào)順序輸出所有學(xué)生的信息。</p><p&

37、gt;  void liulan()//瀏覽函數(shù)</p><p><b>  { int x;</b></p><p>  void paixu();</p><p><b>  paixu();</b></p><p>  printf("請輸入1可返回主菜單:");<

38、/p><p>  scanf("%d",&x);</p><p>  if(x==1) indesk();</p><p><b>  }</b></p><p><b>  3.6修改函數(shù)</b></p><p>  先查找學(xué)生,然后進(jìn)行修改。<

39、;/p><p>  void update_record()//修改學(xué)生信息函數(shù)</p><p>  { int i,g,count;</p><p>  char b[30];</p><p>  printf("請輸入學(xué)號(hào):");</p><p>  scanf("%s",&

40、amp;b);</p><p>  for(i=0;i<=n;i++)</p><p>  { if(strcmp(b,s[i].num)==0)</p><p>  { printf("該學(xué)生信息為:學(xué)號(hào):%s 姓名:%s 性別:%s 家庭住址:%s 聯(lián)系電話:%s\n語文成績:%.2f 數(shù)學(xué):%.2f 英語:%.2f 同學(xué)互評:%.2f 品

41、德:%.2f 老師互評:%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score);</p><p><b&

42、gt;  count=i;</b></p><p>  printf("請輸入修改后的學(xué)生信息:(按以上順序輸入)\n");</p><p>  scanf("%s%s%s%s%s%f%f%f%f%f%f",s[count].num,s[count].name,s[count].sex,s[count].address,s[count].

43、phonenumber,&s[count].chinese_score,&s[count].math_score,&s[count].english_score,&s[count].class_a_score,&s[count].quality_score,&s[count].te_a_score);</p><p>  average(s[count]);<

44、/p><p>  printf("1 返回主菜單");</p><p>  scanf("%d",&g);</p><p>  if(g==1) indesk();</p><p><b>  break;</b></p><p><b>  

45、}</b></p><p><b>  }</b></p><p><b>  if(i>n) </b></p><p>  printf("沒有找到學(xué)號(hào)是【%s】的學(xué)生。\n1 返回主菜單",b);</p><p>  scanf("%d"

46、,&g);</p><p>  if(g==1) indesk();</p><p><b>  }</b></p><p><b>  3.7刪除函數(shù)</b></p><p>  先通過學(xué)號(hào)來查詢?nèi)缓髮?shí)現(xiàn)刪除。</p><p>  void delete_recor

47、d()//刪除函數(shù)</p><p>  { void index();</p><p>  int i,x,j;</p><p>  char g[30];</p><p>  system("cls");</p><p>  printf("請輸入要?jiǎng)h除的學(xué)號(hào):\n");&

48、lt;/p><p>  scanf("%s",g);</p><p>  for(j=0;j<n;j++)</p><p><b>  { </b></p><p>  if(strcmp(g,s[j].num)==0)</p><p>  { printf(&quo

49、t;存在該生信息,刪除該生信息:\n");</p><p>  for(i=j;i<n;i++)</p><p><b>  {</b></p><p>  strcpy(s[i].num,s[i+1].num);</p><p>  strcpy(s[i].name,s[i+1].name);</

50、p><p>  strcpy(s[i].sex,s[i+1].sex);</p><p>  strcpy(s[i].phonenumber,s[i+1].phonenumber);</p><p>  strcpy(s[i].address,s[i+1].address);</p><p>  strcpy(s[i].address,s[i+1

51、].address);</p><p>  s[i].chinese_score=s[i+1].chinese_score;</p><p>  s[i].english_score=s[i+1].english_score;</p><p>  s[i].math_score=s[i+1].math_score;</p><p>  s[i

52、].class_a_score=s[i+1].class_a_score;</p><p>  s[i].quality_score=s[i+1].quality_score;</p><p>  s[i].te_a_score=s[i+1].te_a_score;</p><p><b>  n=n-1;</b></p><

53、;p><b>  } </b></p><p>  printf("恭喜你刪除成功!\n"); </p><p><b>  }</b></p><p>  else if(j==n-1)printf("不存在這個(gè)學(xué)生\n");</p><p><

54、b>  }</b></p><p>  printf("1 返回主菜單\n 2 繼續(xù)刪除\n");</p><p>  scanf("%d",&x);</p><p>  if(x==1) indesk();</p><p>  else delete_record();<

55、;/p><p><b>  }</b></p><p><b>  3.8添加函數(shù)</b></p><p>  先查找是否存在該學(xué)生,如果不存在就進(jìn)行添加,存在的話就提示該學(xué)生信息存在不用添加。</p><p>  void add()//添加新學(xué)生函數(shù)</p><p>  

56、{ int i,m,x;</p><p>  char b[30];</p><p>  void paixu();</p><p>  printf("請輸入要添加學(xué)生的學(xué)號(hào):");</p><p>  scanf("%s",&b);</p><p>  for(i

57、=0;i<n;i++)</p><p>  {if(strcmp(s[i].num,b)==0) </p><p>  {printf("該學(xué)生存在(不用添加)信息為:學(xué)號(hào)%s 姓名%s 性別%s 家庭住址%s 聯(lián)系電話%s\n語文成績%.2f 數(shù)學(xué)%.2f 英語%.2f 同學(xué)互評%.2f 品德%.2f 老師互評%.2f\n",s[i].num,s[i].nam

58、e,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score);</p><p><b>  break;}</b></p><p>

59、<b>  }</b></p><p><b>  if(i>=n)</b></p><p>  { printf("該學(xué)號(hào)不存在可以添加\n");</p><p>  printf("請按下列順序輸入\n學(xué)號(hào) 姓名 性別 家庭住址 聯(lián)系電話 語文成績 數(shù)學(xué) 外語 同學(xué)評分 品德 教師評

60、分\n");</p><p>  scanf("%s%s%s%s%s%f%f%f%f%f%f",s[n].num,s[n].name,s[n].sex,s[n].address,s[n].phonenumber,&s[n].chinese_score,&s[n].math_score,&s[n].english_score,&s[n].class_a_

61、score,&s[n].quality_score,&s[n].te_a_score);</p><p><b>  n=n+1;</b></p><p>  printf("共有%d個(gè)學(xué)生\n",n);</p><p><b>  }</b></p><p> 

62、 printf("您可以選擇\n1按學(xué)號(hào)順序查看所有學(xué)生信息。\n2繼續(xù)添加。\n");</p><p>  scanf("%d",&m);</p><p><b>  if(m==1) </b></p><p>  { paixu();</p><p>  printf(

63、"請輸入1可返回主菜單:");</p><p>  scanf("%d",&x);</p><p>  if(x==1) indesk();</p><p><b>  }</b></p><p>  if(m==2) add();</p><p>

64、<b>  }</b></p><p><b>  3.9查詢函數(shù)</b></p><p>  可以分別按學(xué)號(hào)和姓名來查詢學(xué)生的信息。</p><p>  void search()//查詢函數(shù)</p><p>  { int i,x,k;</p><p>  char a[

65、20],b[30];</p><p>  void average(struct student_assess w);</p><p>  printf("請輸入按何種方式查詢:\n1 按學(xué)號(hào)\n2 按姓名\n");</p><p>  scanf("%d",&x);</p><p><b

66、>  if(x==1)</b></p><p>  { printf("按學(xué)號(hào)查詢,請輸入學(xué)號(hào):\n");</p><p>  scanf("%s",a);</p><p>  for(i=0;i<n;i++)</p><p><b>  { </b>&

67、lt;/p><p>  if(strcmp(a,s[i].num)==0)</p><p><b>  {</b></p><p>  printf("存在該生信息\n");</p><p>  printf("該學(xué)生信息為:學(xué)號(hào)%s 姓名%s 性別%s 家庭住址%s 聯(lián)系電話%s\n語文成績%

68、.2f 數(shù)學(xué)%.2f 英語%.2f同學(xué)評%.2f品德%.2f 老師評%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score);</p

69、><p>  average(s[i]); </p><p>  printf("1 繼續(xù)查找\n2 返回主菜單\n");</p><p>  scanf("%d",&k);</p><p>  if(k==1) search();</p><p>  if(k==2) in

70、desk();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(i>=n) </b></p><p>  {

71、 printf("沒有找到這個(gè)學(xué)生\n1 繼續(xù)查找\n2 返回主菜單\n");</p><p>  scanf("%d",&k);</p><p><b>  }</b></p><p>  if(k==1) search();</p><p>  if(k==2) ind

72、esk();</p><p><b>  }</b></p><p><b>  if(x==2)</b></p><p>  { printf("按姓名查詢,請輸入姓名:");</p><p>  scanf("%s",b);</p><

73、;p>  for(i=0;i<n;i++)</p><p><b>  { </b></p><p>  if(strcmp(b,s[i].name)==0) </p><p>  { printf("存在該生信息\n");</p><p>  printf("該學(xué)生信息為:

74、\n學(xué)號(hào)%s 姓名%s 性別%s 家庭住址%s 聯(lián)系電話%s\n語文成績%.2f 數(shù)學(xué)%.2f 英語%.2f 同學(xué)互評%.2f 品德%.2f 老師互評%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,

75、s[i].quality_score,s[i].te_a_score);</p><p>  average(s[i]);</p><p>  printf("1 繼續(xù)查找\n2 返回主菜單\n");</p><p>  scanf("%d",&k);</p><p>  if(k==1) se

76、arch();</p><p>  if(k==2) indesk();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(i&g

77、t;=n) </b></p><p>  { printf("沒有找到這個(gè)學(xué)生\n1 繼續(xù)查找\n2 返回主菜單\n");</p><p>  scanf("%d",&k);</p><p><b>  }</b></p><p>  if(k==1) sea

78、rch();</p><p>  if(k==2) indesk();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.10保存函數(shù)</b></p><p>  可以輸入一個(gè)文件名進(jìn)行保存。

79、</p><p>  void save_to_file()//保存到文件函數(shù)</p><p><b>  {</b></p><p><b>  FILE*fp;</b></p><p><b>  int i,x;</b></p><p>  cha

80、r filename[30];</p><p>  printf("請輸入文件名(在30個(gè)字符以內(nèi)):\n");</p><p>  scanf("%s",filename);</p><p>  if((fp=fopen(filename,"wb"))==NULL)</p><p>

81、;<b>  {</b></p><p>  printf("不能打開該文件\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(fwrite(&n,sizeof(int),

82、1,fp)!=1)</p><p>  { printf("不能寫入\n");</p><p>  printf("請輸入1可返回主菜單:");</p><p>  scanf("%d",&x);</p><p>  if(x==1) indesk();</p>

83、;<p><b>  }</b></p><p>  for(i=0;i<n;i++)</p><p>  {if(fwrite(&s[i],sizeof(struct student_assess),1,fp)!=1)</p><p><b>  {</b></p><

84、;p>  printf("不能寫入\n");</p><p>  printf("請輸入1可返回主菜單:");</p><p>  scanf("%d",&x);</p><p>  if(x==1) indesk();</p><p><b>  }<

85、/b></p><p>  else printf("保存成功!\n");</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  indesk();</p><p><b>  }</b></

86、p><p><b>  3.11排序函數(shù)</b></p><p>  利用冒泡排序按學(xué)號(hào)從小到大輸出。</p><p>  void paixu()//排序函數(shù)</p><p><b>  {</b></p><p>  int i,j,k;</p><p&g

87、t;  char g[30],l[30],m[10],f[30],z[30];</p><p>  float r,t,y,u,w,q;</p><p>  for(j=0;j<n-1;j++)</p><p><b>  {</b></p><p>  for(k=j+1;k<n;k++)</p>

88、;<p><b>  { </b></p><p>  if(strcmp(s[j].num,s[k].num)>0)</p><p><b>  { </b></p><p>  strcpy(g,s[j].num);strcpy(s[j].num,s[k].num);strcpy(s[k].nu

89、m,g);</p><p>  strcpy(l,s[j].name);strcpy(s[j].name,s[k].name);strcpy(s[k].name,l);</p><p>  strcpy(m,s[j].sex);strcpy(s[j].sex,s[k].sex);strcpy(s[k].sex,m);</p><p>  strcpy(f,s[j].

90、address);strcpy(s[j].address,s[k].address);strcpy(s[k].address,f);</p><p>  strcpy(z,s[j].phonenumber);strcpy(s[j].phonenumber,s[k].phonenumber);strcpy(s[k].phonenumber,z);</p><p>  r=s[j].math_

91、score;s[j].math_score=s[k].math_score;s[k].math_score=r;</p><p>  t=s[j].chinese_score;s[j].chinese_score=s[k].chinese_score;s[k].chinese_score=t;</p><p>  y=s[j].english_score;s[j].english_scor

92、e=s[k].english_score;s[k].english_score=y;</p><p>  u=s[j].quality_score;s[j].quality_score=s[k].quality_score;s[k].quality_score=u;</p><p>  w=s[j].class_a_score;s[j].class_a_score=s[k].class_a

93、_score;s[k].class_a_score=w;</p><p>  q=s[j].te_a_score;s[j].te_a_score=s[k].te_a_score;s[k].te_a_score=q;</p><p><b>  }</b></p><p><b>  }</b></p><

94、;p><b>  }</b></p><p>  printf("+---------------------------------------------------------------------------+\n");</p><p>  printf("學(xué)號(hào) 姓名 性別 家庭住址 電話號(hào)碼 語文成績 數(shù)學(xué) 外語 同學(xué)互

95、評 品德 教師評分\n");</p><p>  printf("+---------------------------------------------------------------------------+\n");</p><p>  for(i=0;i<n;i++)</p><p>  { printf(&quo

96、t;%s %s %s %s %s %.2f %.2f %.2f %.2f %.2f %.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score

97、); </p><p>  average(s[i]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  3.12求平均值函數(shù)</p><p>  將結(jié)構(gòu)體數(shù)組的一個(gè)變量傳給該函數(shù),再按公式計(jì)算出學(xué)生的平均分和綜合測評成績。

98、</p><p>  void average(struct student_assess w)//計(jì)算平均值函數(shù)</p><p>  { float score_1,score_2;</p><p>  score_1=(w.chinese_score+w.math_score+w.english_score)/3.0;</p><p> 

99、 printf("考試平均成績?yōu)?%.2f",score_1); </p><p>  score_2=score_1*0.6+w.class_a_score*0.1+w.quality_score*0.1+w.te_a_score*0.2;</p><p>  printf("綜合測評總分:%.2f\n",score_2);</p>

100、<p><b>  }</b></p><p><b>  4 系統(tǒng)測試</b></p><p>  4.1 主函數(shù)功能測試</p><p>  在主函數(shù)中,通過詢問用戶是否是第一次進(jìn)入系統(tǒng)。若果用戶是的就會(huì)輸入“y”那么就會(huì)調(diào)用相應(yīng)的批量錄入函數(shù)執(zhí)行結(jié)果如下:</p><p>  如果用

101、戶輸入的“n”就會(huì)調(diào)用read函數(shù)從文件當(dāng)中讀取相應(yīng)的數(shù)據(jù)。</p><p>  4.2 批量錄入函數(shù)功能測試</p><p>  在批量錄入函數(shù)當(dāng)中有計(jì)算錄入人數(shù)的語句,錄入一條將全局變量n加一。在詢問用戶是否繼續(xù)錄入,具體執(zhí)行結(jié)果如下:</p><p>  4.3瀏覽函數(shù)功能測試</p><p>  當(dāng)用戶在主菜單選擇2時(shí),就會(huì)按學(xué)號(hào)的大

102、小順序?yàn)g覽所有學(xué)生的信息。并且會(huì)按照表頭順序顯示。</p><p>  4.4主界面函數(shù)功能測試</p><p>  主界面函數(shù)提供給用戶選擇執(zhí)行相應(yīng)的功能。</p><p>  4.5修改函數(shù)功能測試</p><p>  當(dāng)執(zhí)行修改函數(shù)時(shí)會(huì)提示用戶請輸入學(xué)號(hào),然后按學(xué)號(hào)查找該學(xué)生是否存在。如果存在就顯示該生信息然后進(jìn)行修改。如果不存在就提醒

103、用戶該生不存在。</p><p>  4.6刪除函數(shù)功能測試</p><p>  先查詢,再刪除。執(zhí)行如下:</p><p>  刪除后可以返回主菜單選擇2瀏覽所有學(xué)生信息。如下表:</p><p>  4.7查詢函數(shù)功能測試</p><p>  執(zhí)行查詢函數(shù)時(shí),用戶可以選擇按學(xué)號(hào)和按姓名兩種不同的方式進(jìn)行查詢,如果不

104、存在就提示沒有這個(gè)學(xué)生。然后在選擇其他功能執(zhí)行,如下圖:</p><p>  如果存在的話,就按一定的格式顯示該學(xué)生的信息。如下圖:</p><p>  4.8添加函數(shù)功能測試</p><p>  先輸入學(xué)號(hào),按學(xué)號(hào)進(jìn)行查找該學(xué)生是否存在,如果不存在就提示用戶可以添加。執(zhí)行如下:添加之后可以選擇繼續(xù)添加和瀏覽所有學(xué)生信息。</p><p> 

105、 如果學(xué)生存在的話就提示用戶該生存在不用添加。</p><p>  4.9保存函數(shù)功能測試</p><p>  保存函數(shù)可以提示用戶輸入文件名進(jìn)行保存,保存成功之后自動(dòng)返回主界面函數(shù)。</p><p><b>  結(jié)論</b></p><p>  這次課程設(shè)計(jì)的題目是學(xué)生測評系統(tǒng)。從看到課程設(shè)計(jì)任務(wù)書書開始我就一心一意的

106、做這個(gè)系統(tǒng),希望把自己今年來所學(xué)到的知識(shí)運(yùn)用到這個(gè)系統(tǒng)上面。我開始就一條一條的寫代碼,一個(gè)字母一個(gè)字母的寫進(jìn)我的程序當(dāng)中。我以為這個(gè)系統(tǒng)很簡單,只要寫出了代碼就可以實(shí)現(xiàn)各個(gè)功能,但事實(shí)上并非如此。做一個(gè)系統(tǒng)不僅僅是寫代碼的問題,更注重的是考驗(yàn)我們綜合運(yùn)用所有知識(shí)的能力。我們?nèi)绻鰹橐幻嬲能浖ぷ魅藛T,那么我需要做的還有需求分析,最終的系統(tǒng)實(shí)現(xiàn),和客戶的溝通等等。</p><p>  最重要的一點(diǎn)是合作和交流,

107、一個(gè)大型的程序我們一個(gè)的想法肯定是不全面的,一個(gè)人的思路也存在著缺陷。所以要學(xué)會(huì)去借鑒和交流,可能我想出來的你沒有想出了,你想出來的我沒有想出來。通過相互的補(bǔ)充我們的程序才會(huì)接近完美。</p><p>  所以在這次課程設(shè)計(jì)當(dāng)中,我明白了一名合格的程序工作人員需要具備的一些能力。也更加堅(jiān)定了我學(xué)習(xí)的目標(biāo)。</p><p>  在具體的細(xì)節(jié)方面,我認(rèn)為做程序?qū)懘a必須有耐心和毅力,換有細(xì)心。

溫馨提示

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

評論

0/150

提交評論