c語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  C語言課程設計書</b></p><p>  設計題目: 學生成績統(tǒng)計系統(tǒng) </p><p>  課程名稱: C語言課程設計 </p><p>  學 院 :物理與光電工程學院 </p><

2、p>  專業(yè)班級: 電子科學與技術(1)班 </p><p>  學 號 : </p><p>  姓 名 : </p><p>  聯(lián)系方式 :

3、 </p><p>  任課教師 : </p><p>  2013 年 11月 10日</p><p><b>  目錄</b></p><p>  設計目的 ······&

4、#183;············ 2</p><p>  任務要求 ··················

5、;· 2</p><p>  總體設計 ··················· 2</p><p>  部分程序 ····&#

6、183;············· 4</p><p>  調試分析過程 ·················&#

7、183;· 9</p><p>  課程設計總結 ···················· 13</p><p><b>  題目:學生成績統(tǒng)計</b>&l

8、t;/p><p><b>  一、設計目的:</b></p><p>  (1)該課程設計要求學生既動手又動腦,自學,查資料,獨立實踐。將上學期課本上的理論知識和實際有機的結合起來,鍛煉學生實際分析問題和解決問題的能力,提高學生適應實際、實踐編(程的能力,使對C語言系統(tǒng)編程有一個大致的了解。</p><p> ?。?)C語言的實踐。掌握C語言函數(shù)的

9、定義方法,函數(shù)的聲明及函數(shù)的調用過程。掌握結構體類型變量的定義和使用,綜合應用C語言的知識,實現(xiàn)一個完整的系統(tǒng),提高編程能力,體會軟件程序的開發(fā)過程。</p><p><b>  二、任務要求:</b></p><p>  假設某班有:30人(姓名自定)</p><p>  考試課程有:高等數(shù)學、物理、外語、C語言、德育5門課程。</p&

10、gt;<p>  將所有同學的成績保留在文件中,對文件中的數(shù)據(jù)處理,輸出所要求的內(nèi)容, 程序的功能主要包括3方面: </p><p><b>  輸入成績到文件中</b></p><p><b>  輸出成績</b></p><p><b>  輸出不及格學生名單</b></p&

11、gt;<p><b>  成績排序</b></p><p><b>  修改記錄</b></p><p><b>  刪除記錄</b></p><p><b>  插入記錄等</b></p><p>  主函數(shù)中對3個功能選擇(菜單),調用對

12、應的函數(shù)完成。</p><p><b>  三、總體設計:</b></p><p> ?。?)程序設計組成框圖</p><p><b> ?。?)模塊功能說明</b></p><p>  1 輸出功能:顯示全部學生的記錄。</p><p>  2 查詢功能:輸入姓名可以查詢學

13、生的詳細信息。</p><p>  3 增加功能:增加新學生的信息。 </p><p>  4 刪除功能:刪除學生信息。</p><p>  5 修改功能:修改學生的錯誤信息。</p><p>  6 保存功能:保存已輸入信息。</p><p>  7讀取功能:讀取已輸入信息。</p><p>

14、  8顯示功能:按照所需要的要求顯示學生記錄。</p><p>  9 排序功能:按照要求完成對學生信息的排序。 </p><p><b>  10 退出系統(tǒng)。</b></p><p><b> ?。?)程序流程圖</b></p><p>  四、部分程序代碼如下:</p><

15、p> ?。?) 該函數(shù)功能:從文件中讀學生信息到鏈表中</p><p>  void ReadInfoFormFile(void)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  STUDENT *p;</p>

16、<p>  fp=fopen("student.txt","r");</p><p><b>  if(!fp)</b></p><p><b>  {</b></p><p>  printf("文件不存在\n");</p><p&

17、gt;<b>  return;</b></p><p><b>  }</b></p><p>  p=MallocNode();</p><p>  while(fscanf(fp,"%s%s%s%f%f%f%f%f",p->studentNumber,p->studentName,p-

18、>className,</p><p>  &(p->mark1),&(p->mark2),&(p->mark3),&(p->mark4),&(p->mark5))>0)</p><p><b>  {</b></p><p>  InsertOneNode(p)

19、;</p><p>  p=MallocNode();</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  (2)該函數(shù)功能:顯示菜單,根據(jù)用戶的輸入的數(shù)字</p>&l

20、t;p><b>  完成對應的功能</b></p><p>  void DesplayMenu(void)</p><p><b>  {</b></p><p>  STUDENT *p;</p><p>  printf("\t\t=========歡迎來到學生成績管理系統(tǒng)==

21、==============\n");</p><p>  printf("\t\t\t-------請選擇相應功能------------\n");</p><p>  printf("\t\t|************************************************|\n");</p><p&

22、gt;  printf("\t\t|------------- 1 按班級輸出學生成績單 -----------|\n");</p><p>  printf("\t\t|------------- 2 按姓名查詢----------------------|\n");</p><p>  printf("\t\t|------------

23、- 3 增加學生 -----------------------|\n");</p><p>  printf("\t\t|------------- 4 刪除學生 -----------------------|\n");</p><p>  printf("\t\t|------------- 5 按班級修改學生成績 -------------|

24、\n");</p><p>  printf("\t\t|------------- 6 保存所有學生信息 ---------------|\n");</p><p>  printf("\t\t|------------- 7 顯示不及格學生名單--------------|\n");</p><p>  prin

25、tf("\t\t|------------- 8 按平均成績排序并輸出成績--------|\n");</p><p>  printf("\t\t|------------- 9 退出 --------------------------|\n");</p><p>  printf("\t\t|*********************

26、***************************|\n");</p><p>  printf("\t\t\t\t\t\t制作者:何燦豪\n"); </p><p>  printf("\t\t\t\t\t\t制作時間:2013年11月10號\n"); </p><p>  scanf("%d&quo

27、t;,&choose);/*取得用戶的選擇*/</p><p>  switch(choose)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  OutputInformation();/*顯示所有學生的信息*/</p&g

28、t;<p><b>  break;</b></p><p><b>  case 2:</b></p><p>  DesplayInfoBystudentName();</p><p><b>  break;</b></p><p><b>  c

29、ase 3:</b></p><p>  p=MallocNode();/*先申請一個新結點*/</p><p>  GetInformation(p);/*要求用戶輸入信息到新結點中*/</p><p>  InsertOneNode(p);/*將新結點加到鏈表中*/</p><p><b>  break;</

30、b></p><p><b>  case 4:</b></p><p>  DeleteNodeBystudentNumber();/*根據(jù)用戶輸入的學號刪除該學生*/</p><p><b>  break;</b></p><p><b>  case 5:</b>

31、</p><p>  ChangeMarkByName();/*根據(jù)用戶輸入的姓名修改學生成績*/</p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  SaveLinkToFile();/*保存數(shù)據(jù)*/</p>&l

32、t;p><b>  break;</b></p><p><b>  case 7:</b></p><p>  DesplayMarkSegment();/*顯示不及格的學生成績*/</p><p><b>  break;</b></p><p><b> 

33、 case 8:</b></p><p>  CompositorByTotalMark();/*按平均成績排序*/</p><p><b>  break;</b></p><p><b>  case 9:</b></p><p>  SaveLinkToFile();/*保存數(shù)據(jù)后

34、再退出*/</p><p>  free(headLink);</p><p><b>  exit(1);</b></p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>

35、;  break;</b></p><p><b>  }</b></p><p>  DesplayMenu();/*遞歸調用*/</p><p><b>  }</b></p><p> ?。?)函數(shù)功能:根據(jù)用戶輸入的學號刪除該學生</p><p>  vo

36、id DeleteNodeBystudentNumber(void)</p><p><b>  {</b></p><p>  char studentNumber[10];</p><p>  STUDENT *p,*q;</p><p>  char flag=0;</p><p>  pr

37、intf("請輸入要刪除的學生學號:");</p><p>  scanf("%s",studentNumber);</p><p>  p=headLink;</p><p>  q=headLink->next;</p><p><b>  while(q)</b><

38、;/p><p><b>  {</b></p><p>  if(strcmp(q->studentNumber,studentNumber)==0)</p><p><b>  {</b></p><p>  p->next=q->next;</p><p>

39、<b>  free(q);</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  p=p->next;</p><

40、;p>  q=q->next;</p><p><b>  }</b></p><p><b>  if(!flag)</b></p><p><b>  {</b></p><p>  printf("不存在該學號的學生\n");</p&

41、gt;<p><b>  return;</b></p><p><b>  }</b></p><p>  printf("成功刪除\n");</p><p><b>  }</b></p><p> ?。?)該函數(shù)功能是:保存鏈表數(shù)據(jù)到文件

42、中</p><p>  void SaveLinkToFile(void)</p><p><b>  {</b></p><p>  STUDENT *p;</p><p><b>  FILE *fp;</b></p><p>  p=headLink->next;

43、</p><p>  if(p==NULL)</p><p><b>  {</b></p><p>  printf("現(xiàn)在沒有學生信息,請先輸入學生信息\n\n");</p><p><b>  return;</b></p><p><b>

44、;  }</b></p><p>  fp=fopen("student.txt","w+");</p><p><b>  if(!fp)</b></p><p><b>  {</b></p><p>  printf("文件不存在\

45、n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  fpr

46、intf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3,p->mark4,p->mark5);</p><p>  p=p->next;</p><p><b>

47、;  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p> ?。?)函數(shù)功能:輸出不及格學生名單 </p><p>  void DesplayMarkSegment(void)</p><p><b>  {<

48、;/b></p><p>  STUDENT *p;</p><p>  p=headLink->next;</p><p>  printf("不及格學生的名單有:\n");</p><p><b>  while(p)</b></p><p><b>

49、  {</b></p><p>  if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10)))||</p><p>  (6>((int)(p->mark4/10)))||(6>((int)(p->mark3/10)))

50、)/*只要有一科不及格就認為該生不及格*/</p><p><b>  {</b></p><p>  printf("%s\n",p->studentName);</p><p><b>  }</b></p><p>  p=p->next;</p>

51、<p><b>  }</b></p><p><b>  }</b></p><p> ?。?)該函數(shù)功能:按平均成績進行排序</p><p>  void CompositorByTotalMark(void)</p><p><b>  {</b></p

52、><p>  STUDENT exchange,*r,*p,*q;</p><p>  r=headLink->next;</p><p>  if(r==NULL)</p><p><b>  {</b></p><p>  printf("現(xiàn)在還沒學生信息,請先輸入學生信息\n&q

53、uot;);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  while(r)/*兩層while循環(huán)實現(xiàn)排序*/</p><p><b>  {</b></p><p><b> 

54、 p=r;</b></p><p>  q=r->next;</p><p><b>  while(q)</b></p><p><b>  {</b></p><p>  if((q->mark1+q->mark2+q->mark3+q->mark4+q

55、->mark5)>(p->mark1+p->mark2+p->mark3+p->mark4+p->mark5))</p><p><b>  {</b></p><p>  strcpy(exchange.studentNumber,q->studentNumber);/*先復制q結點信息到exchange*/</

56、p><p>  strcpy(exchange.studentName,q->studentName);</p><p>  strcpy(exchange.className,q->className);</p><p>  exchange.mark1=q->mark1;</p><p>  exchange.mark2=q

57、->mark2;</p><p>  exchange.mark3=q->mark3;</p><p>  exchange.mark4=q->mark4;</p><p>  exchange.mark5=q->mark5;</p><p>  strcpy(q->studentNumber,p->stu

58、dentNumber);/*再復制p結點信息到q*/</p><p>  strcpy(q->studentName,p->studentName);</p><p>  strcpy(q->className,p->className);</p><p>  q->mark1=p->mark1;</p><p

59、>  q->mark2=p->mark3;</p><p>  q->mark3=p->mark3;</p><p>  q->mark4=p->mark4;</p><p>  q->mark5=p->mark5;</p><p>  strcpy(p->studentNumber

60、,exchange.studentNumber);/*最后復制exchange結點信息到p*/</p><p>  strcpy(p->studentName,exchange.studentName);</p><p>  strcpy(p->className,exchange.className);</p><p>  p->mark1=ex

61、change.mark1;</p><p>  p->mark2=exchange.mark2;</p><p>  p->mark3=exchange.mark3;</p><p>  p->mark4=exchange.mark4;</p><p>  p->mark5=exchange.mark5;</p&

62、gt;<p><b>  }</b></p><p>  q=q->next;</p><p><b>  }</b></p><p>  r=r->next;</p><p><b>  }</b></p><p>  Out

63、putInformation();</p><p><b>  }</b></p><p><b>  五、調試分析過程:</b></p><p><b>  界面:</b></p><p><b>  增加學生:</b></p><p

64、><b>  輸出學生成績單:</b></p><p><b>  按姓名查詢:</b></p><p><b>  刪除學生:</b></p><p><b>  輸出不及格的名單:</b></p><p>  按平均成績排序輸出:</p&

65、gt;<p><b>  六、設計總結:</b></p><p>  通過這次的課程設計,讓我更加地對C語言有更深的了解,還有讓我發(fā)現(xiàn)了在結構體和鏈表這方面的知識要有待加強。第一次編程這么多的程序,說實話真的有點難度,但是通過后面慢慢的看書,一點點地去解決問題。在編寫程序是一定要注意細節(jié)的問題,因為一個小小錯誤會導致整個程序不能運行,例如分號一定要加,否則在編譯的時候會出現(xiàn)錯誤

66、,當然它會提示哪里有錯誤的,這種小錯誤最好能避免。一開始調試的時候出現(xiàn)了幾十條錯誤的記錄,其中包括小錯誤的,但是,只要慢慢的檢查的話,程序就會趨向完善,最后程序就會運行的。C語言是計算機編程語言中最基礎的語言,務必要熟練掌握。所以在以后的練習中,一定要多多寫這樣的程序,這樣的話才能提高編程的能力。經(jīng)過一周的編程實習,并在后一段的報告總結,我對C語言這門科有新的認識,本人實在是獲益不淺!要想編寫一個準確、高效并有使用價值的程序,一定先要對

溫馨提示

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

評論

0/150

提交評論