c語言課程設(shè)計報告--學(xué)生成績信息記錄簿的設(shè)計_第1頁
已閱讀1頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  一、需求分析:本程序設(shè)計的名稱是學(xué)生成績信息記錄簿的設(shè)計,設(shè)計內(nèi)容是設(shè)計一個學(xué)生成績記錄簿系統(tǒng),該系統(tǒng)要求對學(xué)生成績信息進(jìn)行管理和維護(hù)。任務(wù)和要求:編制一個C語言成績記錄簿,每個學(xué)生信息包括:學(xué)號、姓名、C語言成績。具體功能:(1)創(chuàng)建信息鏈表并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績;(3)按學(xué)號或姓名查詢成績;(4)添加成績記錄;(5)修改指定姓名或?qū)W號的學(xué)生的成績并可存盤;(6)顯示輸出60

2、分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息(可選項(xiàng))。此編程用于對學(xué)生的餓C語言成績進(jìn)行管理。</p><p><b>  二、算法設(shè)計:</b></p><p><b>  流程圖:</b></p><p><b>  、</b></p><p>  重要

3、的數(shù)據(jù)結(jié)構(gòu):(1)有主菜單menu();的編寫,用printf();將相應(yīng)的選項(xiàng)輸出在屏幕上,便于操作者進(jìn)行選擇,menu();中包括學(xué)生成績信息記錄簿設(shè)計,主菜單,1、輸入所有學(xué)生的學(xué)號、姓名、C語言分?jǐn)?shù)2、顯示所有學(xué)生的信息3、按學(xué)號或姓名查詢成績4、添加成績記錄5、修改指定姓名或?qū)W號的學(xué)生的成績并可存盤6、輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息7、結(jié)束;(2)子函數(shù):主要有creat();input(

4、);search()</p><p>  Insert();modi()以及sort();(3)主函數(shù):main();主要使用了switch()語句。</p><p>  主要算法思想:運(yùn)行程序后,會顯示主菜單,根據(jù)主菜單中的提示選擇相應(yīng)的數(shù)字鍵,會實(shí)現(xiàn)相應(yīng)的功能。主要使用了界面的制作、使用了相應(yīng)的子函數(shù),同時使用了動態(tài)鏈表的創(chuàng)建、文件的讀寫等。本程序主要有三大設(shè)計模塊,第一模塊是主菜單m

5、enu();的編寫,其作用是便于操作者進(jìn)行相應(yīng)問題的選擇,具有提示信息的作用。第二模塊是相應(yīng)子函數(shù)的編寫,第一個子函數(shù)creat();主要思想是運(yùn)用了鏈表的動態(tài)創(chuàng)建,使用了malloc函數(shù),將每位學(xué)生的信息動態(tài)傳遞下去,并使用了文件的讀取操作,使用了文件中w+的打開模式,讀取磁盤文件并顯示所有學(xué)生的信息。主要作用是在顯示屏及磁盤文件stut.txt中顯示每個學(xué)生的信息。</p><p>  第二個子函數(shù)input

6、();主要使用了文件中r+的打開模式,打開已有文件stut.txt,并在顯示屏中顯示所有學(xué)生的信息</p><p>  第三個子函數(shù)search();主要實(shí)現(xiàn)了當(dāng)輸入一個學(xué)生的姓名或?qū)W號時,顯示屏中會顯示該學(xué)生的所有信息,該子函數(shù)實(shí)現(xiàn)了子函數(shù)的調(diào)用,即子函數(shù)調(diào)用子函數(shù),調(diào)用了name();和num();兩個子函數(shù),當(dāng)輸入學(xué)生的姓名或?qū)W號與文件中的name或num相等時,即strcmp(xs.name,name)=

7、=0或xs.num==num時輸出該生的所有信息包括學(xué)號、姓名以及C語言的成績。</p><p>  第四個子函數(shù)insert();即插入一個學(xué)生的信息并可以讀取到磁盤文件中,主要運(yùn)用了結(jié)構(gòu)體數(shù)組及文件的讀取操作。</p><p>  第五個子函數(shù)modi();實(shí)現(xiàn)修改指定姓名或?qū)W號的學(xué)生的成績并可存盤,該子函數(shù)主要使用了結(jié)構(gòu)體數(shù)組及文件的打開操作,打開已有文件找到要修改的學(xué)生的成績并修改

8、該生的成績,修改后進(jìn)行存盤操作。</p><p>  第六個子函數(shù)sort();主要是篩選顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息,將篩選后的結(jié)果顯示在屏幕上,在該子函數(shù)中主要使用了動態(tài)鏈表、結(jié)構(gòu)體數(shù)組即文件的打開操作;利用鏈表使學(xué)生的信息動態(tài)傳遞下去,使用結(jié)構(gòu)體數(shù)組將各個分?jǐn)?shù)段的學(xué)生的信息存儲下來,利用文件的r+打開模式將文件打開并通過篩選,輸出各個分?jǐn)?shù)段的學(xué)生。最后一個模塊即主

9、函數(shù)main();主要使用了switch語句對各個子函數(shù)進(jìn)行操作選擇,主要實(shí)現(xiàn)了與主菜單的對應(yīng),選擇case中相應(yīng)的數(shù)字鍵,會運(yùn)行相應(yīng)的子函數(shù)并實(shí)現(xiàn)主菜單中相應(yīng)的要求。</p><p>  3、實(shí)現(xiàn)注釋:該設(shè)計的主要任務(wù)是編制一個C語言成績記錄簿,每個學(xué)生信息包括:學(xué)號、姓名、C語言成績。具體要求:(1)創(chuàng)建信息鏈表并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績;(3)按學(xué)號或姓名查詢成績;(4)添

10、加成績記錄;(5)修改指定姓名或?qū)W號的學(xué)生的成績并可存盤;(6)顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息。本程序主要運(yùn)用了六個子函數(shù)來實(shí)現(xiàn)相應(yīng)的要求;對于第一個要求:創(chuàng)建信息鏈表并以磁盤文件保存,實(shí)現(xiàn)程度為:當(dāng)根據(jù)提示顯示數(shù)字鍵1時,會提示你輸入學(xué)生數(shù),輸入學(xué)生數(shù)后,按下Enter鍵,會提示操作者輸入學(xué)生的學(xué)號、姓名以及C語言的成績。同時在會形成一個stut.txt文件夾,文件中中即磁盤文件中讀入了所有學(xué)

11、生的學(xué)號、姓名及C語言的成績;第二個讀取磁盤文件并顯示輸出所有學(xué)生的成績,實(shí)現(xiàn)程度為:當(dāng)執(zhí)行了第一步操作后,再執(zhí)行第二部就會將磁盤文件中的內(nèi)容再次顯示在顯示屏上;第三個按學(xué)號或姓名查詢成績,實(shí)現(xiàn)程度為:當(dāng)選擇數(shù)字鍵3時,會出現(xiàn)一個提示,提示你選擇姓名還是學(xué)號查找,選擇后,會在顯示屏上出現(xiàn)該生的信息;第四個添加成績記錄;實(shí)現(xiàn)程度為:當(dāng)</p><p>  4、算法設(shè)計中的一些新的想法:該算法的應(yīng)用是對學(xué)生C語言成績

12、進(jìn)行管理和維護(hù),是一個C語言程序記錄本,算法中不足之處有不能使用二級菜單,插入學(xué)生的學(xué)號或姓名時沒能按成績進(jìn)行排序一下,還可以對學(xué)生的成績進(jìn)行排序一下。</p><p><b>  三、用戶手冊</b></p><p>  課程設(shè)計的使用說明:輸入數(shù)據(jù)時,要根據(jù)顯示屏上的格式要求,使得整個界面變得好看些,還有根據(jù)提示選擇相應(yīng)的數(shù)字鍵,輸入完畢后按Enter鍵會執(zhí)行下一

13、步操作,操作者可根據(jù)提示進(jìn)行操作,整個操作簡單易行。有些操作是要有上一步的操作基礎(chǔ)才能進(jìn)行,例如必須有學(xué)生記錄才能查找,所以操作者在操作時要認(rèn)清每個數(shù)字鍵相應(yīng)子函數(shù)的功能。</p><p><b>  四、調(diào)試及測試</b></p><p>  調(diào)試過程中主要遇到了主菜單制作的界面掌握不好,頭文件的少寫或多寫,鏈表的動態(tài)創(chuàng)建掌握不熟及子函數(shù)中少寫參數(shù)、文件的讀寫具體流

14、程掌握模糊、子函數(shù)和主函數(shù)不能很好的相應(yīng)結(jié)合、類型的定義出錯或少定義、指針用法不熟、前后子函數(shù)不能很好的相互利用等;解決方法:查閱參考文獻(xiàn)、詢問同學(xué),讓同學(xué)幫忙改一下自己改不出來的錯誤、及詢問老師;測試數(shù)據(jù)集:</p><p><b>  現(xiàn)在的界面:</b></p><p>  本課程的設(shè)計經(jīng)驗(yàn)和體會:經(jīng)驗(yàn):學(xué)習(xí)不僅僅只學(xué)好學(xué)校發(fā)的教材書,還有好多教材書上沒有的知識

15、也需要掌握,C語言是一門很大的課程,有許多知識點(diǎn)需要掌握,在學(xué)習(xí)中不懂的去讀書管借書,在設(shè)計中不會的函數(shù)或知識可以查閱參考書或詢問老師,課程設(shè)計的大程序需要有一個很清晰的思路并對各個知識點(diǎn)掌握很熟悉,能夠?qū)⒏鱾€知識點(diǎn)有效地連接在一起,并能很好的運(yùn)用在實(shí)際中。體會:我覺得C語言學(xué)的不扎實(shí),各個知識點(diǎn)的漏洞太多,會寫一些小程序并可以運(yùn)行但是遇到大一點(diǎn)的程序,就不能將各個知識點(diǎn)很好的加以利用就需要有扎實(shí)的C語言基礎(chǔ),用到的知識很全面,在這次C

16、語言課程設(shè)計中我學(xué)到了自己的C語言學(xué)的不是很全面,各個知識點(diǎn)的不能很好的連接在一起,需要進(jìn)一步加強(qiáng)。</p><p>  五、小結(jié):在本次課程設(shè)計中,我的設(shè)計題目是學(xué)生成績信息記錄簿的設(shè)計。任務(wù)和要求為:編制一個C語言成績記錄簿,每個學(xué)生信息包括:學(xué)號、姓名、C語言成績。具體功能:(1)創(chuàng)建信息鏈表并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績;(3)按學(xué)號或姓名查詢成績;(4)添加成績記錄;(5)

17、修改指定姓名或?qū)W號的學(xué)生的成績并可存盤;(6)顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息(可選項(xiàng))。此編程用于對學(xué)生的餓C語言成績進(jìn)行管理。收獲:在設(shè)計過程中,我學(xué)會了菜單的制作、鏈表的創(chuàng)建、鏈表的插入、查找、文件的讀寫及子函數(shù)的正確運(yùn)用等等并可以很好的將這些知識點(diǎn)連接在了一起,并發(fā)現(xiàn)了自己C語言學(xué)習(xí)的不足:掌握的知識點(diǎn)漏洞太多,許多函數(shù)不能正確的運(yùn)用,看的書太少僅限于書本上的知識和老師發(fā)的講義,不能很好的

18、將各個知識點(diǎn)連接在一起。本次課程設(shè)計,使得自己第一次將理論很好的聯(lián)系實(shí)際,寫的程序能運(yùn)用到實(shí)際中,而且我學(xué)會了將參考書上的知識很好的運(yùn)用在自己的系統(tǒng)中,不會的知識點(diǎn)也可以向老師或同學(xué)進(jìn)行詢問。在調(diào)試過程中,可以進(jìn)行一個子函數(shù)一個子函數(shù)的調(diào)試,并改錯。在設(shè)計過程中,往</p><p><b>  六、參考文獻(xiàn):</b></p><p>  [1] 黃明等編著《C語言課程

19、設(shè)計》北京:電子工業(yè)出版社</p><p>  [2] 郭翠英編著《C語言課程設(shè)計案例精編》北京:中國水利水電出版社</p><p>  [3] 寧正元《數(shù)據(jù)結(jié)構(gòu)(c語言)》 南京:東南大學(xué)出版社。2000年6月第1版</p><p>  [4] 嚴(yán)蔚敏等 《數(shù)據(jù)結(jié)構(gòu)(c語言版)》 北京:清華大學(xué)出版社,1997年4月第1版</p><p>

20、  [5] 譚浩強(qiáng)編著《C程序設(shè)計題解與上機(jī)指導(dǎo)(第3版) 》北京:清華大學(xué)出版社</p><p>  [6] 譚浩強(qiáng)編著《C程序設(shè)計(第3版) 》北京:清華大學(xué)出版社</p><p><b>  附錄:</b></p><p>  源程序清單:#include<stdio.h></p><p>  #inc

21、lude<stdlib.h></p><p>  #include<malloc.h></p><p>  #include<string.h></p><p>  #define N 100</p><p>  typedef struct student</p><p><

22、b>  {</b></p><p><b>  long num;</b></p><p>  char name[4];</p><p>  float score;</p><p>  struct student *next;</p><p><b>  }stu

23、;</b></p><p><b>  FILE *fp;</b></p><p>  void menu()//在這里進(jìn)行主菜單的調(diào)用</p><p><b>  {</b></p><p>  printf("\n");</p><p> 

24、 printf("\n\t\t\t*******************************\n");</p><p>  printf("\n\t\t\t* 學(xué)生成績信息記錄簿設(shè)計 *\n");</p><p>  printf("\n\t\t\t*******************************\n\n&quo

25、t;);</p><p>  printf("\t\t\t-----------主菜單------------\n\n");</p><p>  printf("\t\t1、\t輸入所有學(xué)生的學(xué)號、姓名、C語言分?jǐn)?shù)\n\n");</p><p>  printf("\t\t2、\t顯示所有學(xué)生的信息\n\n"

26、;);</p><p>  printf("\t\t3、\t按學(xué)號或姓名查詢成績\n\n");</p><p>  printf("\t\t4、\t 添加成績記錄\n\n");</p><p>  printf("\t\t5、\t修改指定姓名或?qū)W號的學(xué)生的成績并可存盤\n\n");</p>&

27、lt;p>  printf("\t\t6、\t輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息\n\n");</p><p>  printf("\t\t7、\t==================結(jié)束===================");</p><p><b>  }</b></p>

28、;<p>  struct student *creat()//創(chuàng)建學(xué)生信息鏈表,將學(xué)生信息動態(tài)傳遞下去</p><p><b>  {</b></p><p>  struct student *head,*p,*q;</p><p>  int i=0,n;</p><p>  printf("

29、;\n-----請輸入學(xué)生數(shù):");</p><p>  scanf("%d",&n);</p><p>  printf("\n\t\t\t 學(xué)生的信息如下:\n");</p><p>  printf("\n\t\t\t學(xué)號======姓名=======分?jǐn)?shù)\n");</

30、p><p><b>  do </b></p><p><b>  {</b></p><p>  p=(struct student *)malloc(sizeof(struct student));//申請內(nèi)存</p><p>  printf("\t\t\t");</p&

31、gt;<p>  scanf("%ld%s%f",&p->num,&p->name,&p->score);//鏈表的傳遞</p><p><b>  i++;</b></p><p><b>  if(i==1)</b></p><p><b

32、>  head=p;</b></p><p><b>  else</b></p><p>  q->next=p;</p><p><b>  q=p;</b></p><p><b>  }</b></p><p>  wh

33、ile(i<n);</p><p>  q->next=NULL;</p><p>  return head;</p><p><b>  }</b></p><p>  void print(struct student *head)//在這里使用文件中的w+打開模式將學(xué)生信息讀入磁盤文件</p&g

34、t;<p><b>  {</b></p><p>  struct student *p=head;</p><p>  fp=fopen("stut.txt","w");</p><p>  while(p!=NULL)</p><p><b>  {&

35、lt;/b></p><p>  fprintf(fp,"%d %s %f\n",p->num,p->name,p->score);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  fclose(fp);//關(guān)閉文件&

36、lt;/p><p><b>  }</b></p><p>  void input()//具體功能是將文件中的內(nèi)容讀取到顯示屏上,主要使用了文件中的r+打開模式</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p>

37、<p><b>  stu *p;</b></p><p>  if((fp=fopen("stut.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("File open error!\n")

38、;</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  p=(stu *)malloc(sizeof(stu));</p><p>  while((fscanf(fp,"%ld%s%f",&p->num

39、,&p->name,&p->score))!=EOF)</p><p>  printf(" %ld %s %f\n",p->num,p->name,p->score);</p><p>  fclose(fp);</p><p><b>  }</b></p>

40、;<p>  //查找,實(shí)現(xiàn)了按學(xué)號或姓名查找,里面采用了子函數(shù)調(diào)用子函數(shù)的方法實(shí)現(xiàn)了該功能</p><p>  void name()</p><p><b>  {</b></p><p>  FILE *fp=NULL;</p><p>  stu *xs=NULL,*temp=NULL,*pr=NU

41、LL;</p><p>  char name[10];</p><p>  int flag=1;</p><p>  printf("\n輸入要查學(xué)生的姓名: ");</p><p>  scanf("%s",name);</p><p>  if((fp=fopen(&qu

42、ot;stut.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("can't open file!\n");</p><p><b>  exit(0);</b></p><p>

43、<b>  }</b></p><p><b>  temp=xs;</b></p><p><b>  do </b></p><p><b>  {</b></p><p>  pr=(stu *)malloc(sizeof(stu));

44、 </p><p>  if(pr==NULL)</p><p>  printf("申請內(nèi)存失??!"),exit(0);</p><p>  if(xs==NULL)</p><p><b>  xs=pr;</b></p><p><b>  else</b

45、></p><p><b>  {</b></p><p><b>  temp=xs;</b></p><p>  while(temp->next!=NULL)</p><p>  temp=temp->next;</p><p>  temp->

46、next=pr;</p><p><b>  }</b></p><p><b>  temp=pr;</b></p><p>  temp->num=0;</p><p>  fscanf(fp,"%d%s%f",&temp->num,temp->na

47、me,&temp->score);</p><p>  temp->next=NULL;</p><p>  }while(pr->num!=0);</p><p><b>  pr=xs; </b></p><p>  while(pr!=NULL) </p><p&g

48、t;<b>  {</b></p><p>  if(strcmp(xs->name,name)==0)//當(dāng)找到該生時輸出該生的信息</p><p><b>  {</b></p><p>  printf("\n\t\t該學(xué)生的信息如下:\n"); </p><p>

49、  printf("\t");</p><p>  printf("%10s %6d %6.2f\n",xs->name,xs->num,xs->score);</p><p><b>  flag=0;</b></p><p><b>  break;</b>&l

50、t;/p><p><b>  }</b></p><p>  pr=pr->next;</p><p><b>  }</b></p><p><b>  if(flag)</b></p><p>  printf("沒有找到該生的信息!&q

51、uot;);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void num()//按學(xué)號查找</p><p><b>  {</b></p><p>  FILE *fp=NULL;</p><p

52、>  stu *xs=NULL,*temp=NULL,*pr=NULL; </p><p><b>  long num;</b></p><p>  int flag=1;</p><p>  printf("\n輸入要查學(xué)生的學(xué)號: ");</p><p>  scanf("%

53、ld",&num); </p><p>  if((fp=fopen("stut.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("can't open file!\n");</p>

54、<p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  temp=xs;</b></p><p><b>  do </b></p><p><b>  {</

55、b></p><p>  pr=(stu *)malloc(sizeof(stu)); </p><p>  if(pr==NULL)</p><p>  printf("申請內(nèi)存失?。?quot;),exit(0);</p><p>  if(xs==NULL)</p><p><b>

56、;  xs=pr;</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  temp=xs;</b></p><p>  while(temp->next!=NULL)</p>&

57、lt;p>  temp=temp->next;</p><p>  temp->next=pr;</p><p><b>  }</b></p><p><b>  temp=pr;</b></p><p>  temp->num=0;</p><p>

58、;  fscanf(fp,"%d%s%f",&temp->num,temp->name,&temp->score);</p><p>  temp->next=NULL;</p><p>  }while(pr->num!=0);</p><p><b>  pr=xs;</b>

59、</p><p>  while(pr!=NULL)</p><p><b>  {</b></p><p>  if(pr->num==num)</p><p><b>  {</b></p><p>  printf("\n\n====學(xué)生的信息如下:\n

60、"); </p><p>  printf("-----");</p><p>  printf("%10s %6d %6.2f\n",pr->name,pr->num,pr->score);</p><p>  flag=0; </p><p><b> 

61、 }</b></p><p>  pr=pr->next;</p><p><b>  }</b></p><p><b>  if(flag)</b></p><p>  printf("沒有找到該生的信息!"); </p><p> 

62、 fclose(fp);</p><p><b>  }</b></p><p>  void search()//主函數(shù)中的子函數(shù)調(diào)用了兩個子函數(shù),使用switch語句實(shí)現(xiàn)</p><p><b>  {</b></p><p>  int chioce;</p><p>

63、  system("cls");</p><p>  printf("\t\t1-----姓名查詢信息-----\n");</p><p>  printf("\n\t\t2-----學(xué)號查詢信息-----\n");</p><p>  printf("\n請選擇以何種方式進(jìn)行查詢:")

64、;</p><p>  scanf("%d",&chioce);</p><p>  switch(chioce) </p><p><b>  {</b></p><p>  case 1:name(); </p><p><b>  break;

65、</b></p><p>  case 2:num(); </p><p><b>  break;</b></p><p><b>  default:</b></p><p>  printf("選擇錯誤!\n");</p><p>&

66、lt;b>  }</b></p><p><b>  }</b></p><p><b>  //插入學(xué)生的信息</b></p><p>  void insert()</p><p><b>  { </b></p><p><

67、;b>  int n=0;</b></p><p><b>  int i,j;</b></p><p>  struct student s,sx[N];</p><p>  printf("\n請輸入插入的學(xué)生的姓名:"); </p><p>  scanf("

68、%s",s.name);</p><p>  printf("\n學(xué)生的學(xué)號:"); </p><p>  scanf("%ld",&s.num);</p><p>  printf("\n學(xué)生的成績:"); </p&g

69、t;<p>  scanf("%f",&s.score);</p><p>  if((fp=fopen("stut.txt","r+"))==NULL) </p><p><b>  {</b></p><p>  printf("can't

70、open file!\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  while((fscanf(fp,"%ld%s%f",&sx[n].num,sx[n].name,&sx[n].score))!=E

71、OF)</p><p><b>  {</b></p><p><b>  n++;</b></p><p><b>  }</b></p><p>  fclose(fp);</p><p>  for(i=0;i<n;i++)</p>

72、;<p><b>  {</b></p><p>  if(s.score<sx[i].score)</p><p><b>  break; </b></p><p><b>  }</b></p><p>  for(j=n;j>=i;j--)&l

73、t;/p><p>  {sx[j+1]=sx[j];}</p><p><b>  sx[i]=s;</b></p><p>  if((fp=fopen("stut.txt","w"))==NULL) </p><p>  {printf("不能建立文件!\n")

74、;exit(0);}</p><p><b>  else</b></p><p>  {for(i=0;i<=n;i++)</p><p>  {fprintf(fp,"%d %s %f\n",sx[i].num,sx[i].name,sx[i].score);} </p><p>  fcl

75、ose(fp);}</p><p><b>  }</b></p><p>  void modi(stu *head)</p><p><b>  {</b></p><p>  stu *xs=head;</p><p>  char name[10];</p>

76、;<p>  int flag=1;</p><p>  system("cls");</p><p>  printf("\n輸入要修改學(xué)生的姓名: ");</p><p>  scanf("%s",name);</p><p>  fp=fopen("st

77、ut.txt","a+");</p><p>  while(xs!=NULL)</p><p>  {if(strcmp(xs->name,name)==0)/*判斷輸入要修改的姓名是否存在*/</p><p><b>  { </b></p><p>  fprintf(fp,&

78、quot;\n====修改前學(xué)生的信息如下:\n");</p><p>  fprintf(fp,"\n%10s %6s %6s\n","姓名","學(xué)號","C語言的成績");</p><p>  fprintf(fp,"\n%10s %6d %6.2f \n",xs->na

79、me,xs->num,xs->score);</p><p>  printf("\n請輸入該生的C語言成績:");</p><p>  scanf("%f",&xs->score);</p><p><b>  flag=0;</b></p><p>&

80、lt;b>  break;</b></p><p>  }xs=xs->next;</p><p><b>  }</b></p><p>  fprintf(fp,"\n====修改后的學(xué)生的信息如下:\n");</p><p>  fprintf(fp,"\n%1

81、0s %6s %6s\n","姓名","學(xué)號","C語言的成績");</p><p>  fprintf(fp,"\n%10s %6d %6.2f\n",xs->name,xs->num,xs->score);</p><p><b>  if(flag)</b>

82、;</p><p>  printf("\n學(xué)生不存在,修改失敗!!"); </p><p>  fclose(fp);</p><p>  getchar();</p><p><b>  }</b></p><p>  void sort(stu *head)</p&

83、gt;<p><b>  {</b></p><p>  stu *p=head;</p><p>  printf("60分以下:\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p

84、>  if(p->score<60)</p><p>  printf("%d\t%s\t%f\n",p->num,p->name,p->score);</p><p>  p=p->next;</p><p><b>  }</b></p><p>&l

85、t;b>  p=head;</b></p><p>  printf("60~79分:\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(p->score>60 && p->

86、score<79)</p><p>  printf("%d\t%s\t%f\n",p->num,p->name,p->score);</p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  p=head;

87、</b></p><p>  printf("80~89:\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(p->score>80 && p->score<89)</

88、p><p>  printf("%d\t%s\t%f\n",p->num,p->name,p->score);</p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  p=head;</b></p&

89、gt;<p>  printf("90分以上:\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(p->score>90)</p><p>  printf("%d\t%s\t%f\n&qu

90、ot;,p->num,p->name,p->score);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  getchar();</p><p><b>  }&l

91、t;/b></p><p>  void main()</p><p><b>  {</b></p><p>  int chioce;</p><p>  stu *head;</p><p><b>  menu();</b></p><p&

92、gt;  printf("\n\n-----請選擇序號:");</p><p>  scanf("%d",&chioce);</p><p>  while(chioce!=0)</p><p><b>  {</b></p><p>  switch(chioce)&l

93、t;/p><p><b>  {</b></p><p><b>  case 1: </b></p><p>  head=creat();</p><p>  print(head);</p><p><b>  break;</b></p>

94、<p>  case 2:input();</p><p><b>  break;</b></p><p>  case 3:search();</p><p><b>  menu();</b></p><p><b>  break;</b></p&

95、gt;<p>  case 4:insert();</p><p><b>  break;</b></p><p>  case 5:modi(head);</p><p><b>  menu();</b></p><p><b>  break;</b>&

96、lt;/p><p>  case 6:sort(head);</p><p><b>  break;</b></p><p>  case 7:exit(0);</p><p><b>  }</b></p><p>  printf("\n請繼續(xù)輸入你想選擇的:&q

97、uot;);</p><p>  scanf("%d",&chioce);</p><p><b>  }</b></p><p><b>  }</b></p><p>  測試數(shù)據(jù)集:選擇序號1、請輸入學(xué)生數(shù)2學(xué)生的信息:1001 張銳 78 1002

溫馨提示

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

評論

0/150

提交評論