2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  學(xué)生成績統(tǒng)計管理</b></p><p><b>  一、課程設(shè)計內(nèi)容</b></p><p>  輸入一個班級的學(xué)生的基本信息(包括學(xué)號,姓名,性別,5門課程成績)。</p><p>  按姓名或者學(xué)號查找、修改、刪除和保存各個學(xué)生的信息。</p><p>  計算每

2、個學(xué)生各門功課總分和平均分,按學(xué)號或總分排序輸出每個學(xué)生的基本信息及總分、平均分和名次。</p><p>  計算全班各門功課的平均分,顯示每門課程中低于平均分的每一個學(xué)生的學(xué)號,姓名,性別,科目,成績。</p><p>  顯示每門科目中,成績在90分以上的學(xué)生信息,以及每門科目中不及格的學(xué)生信息。</p><p><b>  用菜單進(jìn)行管理</b

3、></p><p>  只有正確輸入用戶名密碼才能使用此系統(tǒng)。</p><p>  所有內(nèi)容能夠保存到文件中。下次進(jìn)入系統(tǒng)是從文件中讀取原有信息。</p><p><b>  二、課程設(shè)計目的</b></p><p>  1. 培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識獨(dú)立完成課題的能力。 </p><

4、p>  2. 使學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計思想和方法。</p><p>  3. 提高對工作認(rèn)真負(fù)責(zé)、一絲不茍,對同學(xué)團(tuán)結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。 </p><p>  4. 培養(yǎng)勇于探索、嚴(yán)謹(jǐn)推理、實事求是、有錯必改,用實踐來檢驗理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。 </p><p>  5. 培

5、養(yǎng)從資料文獻(xiàn)、科學(xué)實驗中獲得知識的能力,提高從別人經(jīng)驗中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。 </p><p>  6. 對掌握知識的深度、運(yùn)用理論去處理問題的能力、實驗?zāi)芰?、課程設(shè)計能力、書面及口頭表達(dá)能力進(jìn)行考核</p><p><b>  三、工具/準(zhǔn)備工作</b></p><p>  查閱相關(guān)資料,借鑒他人

6、寫過的程序,從中找到突破口。從程序中了解需要的各種函數(shù)準(zhǔn)備,再進(jìn)一步獲悉該函數(shù)的功能與使用方法。</p><p><b>  功能分析:</b></p><p>  菜單管理:分列功能選項,學(xué)生信息的構(gòu)建,查找、修改、刪除和保存各個學(xué)生的信息,計算各科總分,平均分,并排序,查找優(yōu)秀學(xué)生信息及不及格學(xué)生信息。</p><p>  功能實現(xiàn):實現(xiàn)各

7、個功能。</p><p>  寫入文件:所有內(nèi)容能夠保存到文件中。下次進(jìn)入系統(tǒng)是從文件中讀取原有信息。</p><p><b>  四、設(shè)計步驟、方法</b></p><p><b>  4. 1 菜單管理</b></p><p><b>  菜單顯示: </b></p&

8、gt;<p>  4. 2 輸入一個班級的學(xué)生信息</p><p>  4. 2. 1 創(chuàng)建一個鏈表</p><p><b>  結(jié)構(gòu)體:</b></p><p>  struct student</p><p><b>  {</b></p><p>  in

9、t num; //學(xué)號</p><p>  float score[Subject_n]; //五個學(xué)科的分?jǐn)?shù)</p><p>  float summary; //總分</p><p>  float aver_score; //平均分</p><p>  c

10、har name[16]; //學(xué)生姓名 </p><p>  char sex[3]; //性別</p><p>  struct student *next;</p><p><b>  };</b></p><p><b>  輸入

11、學(xué)生信息: </b></p><p>  4. 3 按學(xué)號查找、修改、刪除和保存各個學(xué)生的信息</p><p>  4. 3. 1 查找學(xué)生信息</p><p>  4. 3. 2 修改學(xué)生信息</p><p>  4. 3. 3 刪除學(xué)生信息</p><p>  4. 4 計算總分和平均分</p&g

12、t;<p>  4. 4. 1 總分</p><p>  4. 4. 2 平均分</p><p>  ( 1 ) 學(xué)生的平均成績</p><p>  ( 2 ) 學(xué)科的平均成績</p><p>  4. 5 按總分/學(xué)號排序</p><p>  4. 6 篩選優(yōu)秀和不及格學(xué)生的信息</p>

13、<p>  4. 6. 1 篩選優(yōu)秀學(xué)生</p><p>  4. 6. 2 篩選不及格學(xué)生</p><p>  4. 7 每門課程低于平均分的學(xué)生</p><p><b>  4. 8 寫入文本</b></p><p><b>  4. 9 密碼管理</b></p>&l

14、t;p><b>  五、設(shè)計結(jié)果及分析</b></p><p><b>  5. 1 輸入密碼</b></p><p>  5. 2輸入學(xué)生信息</p><p>  5. 3 根據(jù)所需功能選擇選項</p><p><b>  5. 4 文件讀取</b></p>

15、<p><b>  5. 5 排序</b></p><p><b>  5. 6 刪除</b></p><p><b>  5.7 添加</b></p><p><b>  5. 8 查找</b></p><p>  5. 9 低于平均分&l

16、t;/p><p>  5. 10 高于90分</p><p><b>  5. 11 不及格</b></p><p>  5.12 按0結(jié)束程序</p><p><b>  六、設(shè)計結(jié)論</b></p><p>  在實現(xiàn)程序過程中往往不會一帆風(fēng)順,學(xué)會調(diào)試才是關(guān)鍵。</p

17、><p>  注意使用子函數(shù),在子函數(shù)中分段調(diào)試實現(xiàn)階段性成功,能更好地走向終點(diǎn)。</p><p>  編譯成功不代表程序運(yùn)行的完整性,在運(yùn)行程序時,要更多的實現(xiàn)各種各樣的特殊值,提高程序的可行性。</p><p><b>  七、問題及心得體會</b></p><p>  常見問題:變量的定義,在循環(huán)過程中變量的初始化。&

18、lt;/p><p>  程序測試時出現(xiàn)的問題:</p><p>  1.科目平均成績計算錯誤;</p><p>  2.科目平均成績有時會亂碼;</p><p><b>  3.不顯示總成績;</b></p><p>  4.修改信息沒有提示;</p><p>  5.修改信息

19、要輸入兩次學(xué)號;</p><p>  6.文件操作時,按提示操作確無法創(chuàng)建也無法打開文件;</p><p>  7.文件在程序結(jié)束前不能保存;</p><p><b>  8.不能讀取文件;</b></p><p>  9.查找不存在的學(xué)生時程序崩潰;</p><p>  10.第一次顯示鏈表時平

20、均成績沒有計算出來;</p><p>  11.按總成績排序時,第一個和最后一個無法參與排序;</p><p><b>  12.沒有名次;</b></p><p>  13.文件輸出格式不對;</p><p>  14.人數(shù)大于科目數(shù)時,明明有數(shù)據(jù)輸出卻同時輸出了無;</p><p>  15.

21、寫入文件后,鏈表變成空;</p><p>  16.鏈表為空時,修改學(xué)生信息仍然工作,但寫入信息后程序崩潰;</p><p>  17.主菜單,第二次輸入操作數(shù)字時,如果輸入的不是數(shù)字,程序陷入死循環(huán);</p><p>  18.修改不存在的學(xué)生信息,雖然提示了學(xué)生不存在,但修改信息確依然工作,輸入信息后程序崩潰;</p><p>  19.

22、兩個學(xué)生的排序無法進(jìn)行;</p><p>  20.不只是主菜單,其他要求輸入數(shù)字的菜單,如果收入的不是數(shù)字,程序陷入死循環(huán);</p><p>  21.輸入密碼的時候,如果輸入的密碼過長,程序崩潰;</p><p>  22.輸入學(xué)生姓名過長時,程序崩潰;</p><p>  23.類似問題就是輸入字符串較長的時候,程序一般都會崩潰;<

23、;/p><p>  24.多重錯誤信息的輸出;</p><p>  25.學(xué)生姓名為四個漢字時,因為姓名與性別連在一起,輸出文件后再讀取文件時,把姓名和性別當(dāng)成一個字符串,導(dǎo)致后面所有的信息讀取錯誤;26.修改學(xué)生信息時,輸出的確認(rèn)信息里,沒有重新計算總分,平均分;27.0個文件讀取錯誤;28.當(dāng)添加相同學(xué)號的學(xué)生時,不會提示重復(fù);29.添加學(xué)生后,沒有計算總分與平均分;30.修改了

24、代碼的格式,簡化了排序函數(shù);31.經(jīng)過按成績排序后,添加相同學(xué)號的學(xué)生,不會提示重復(fù);32.修改信息,如果不想修改,增加了可跳過的功能;</p><p>  在程序?qū)崿F(xiàn)的過程中,需要考慮變量的范圍,一般程序順序思考過程中,要全面考慮。另外在實現(xiàn)程序的過程中要學(xué)會注釋,使得在重新審視程序時能更方便快捷。其中,在書寫程序師趨向于人性化,一步一步步驟化。解決實際問題是需要樣樣斟酌,考慮不同的可能性。</p&g

25、t;<p>  八、對本設(shè)計過程及方法、手段的改進(jìn)建議</p><p>  本程序?qū)τ脩糨斎氲南拗品矫嫒杂腥毕?,?dāng)接受不符合要求或過長的字符(串)時,程序仍然可能出現(xiàn)異常。建議對每一次的輸入都進(jìn)行檢驗,并使用更安全的函數(shù)scanf_s(); fgets(); 等函數(shù)取代scanf(); gets(); 以確保程序的穩(wěn)定運(yùn)行。</p><p>  程序顯示過程中沒有清屏操作,每

26、一次顯示都在上一次的結(jié)果后進(jìn)行,導(dǎo)致程序多次執(zhí)行顯示任務(wù)后,界面變得很混亂。建議在某些顯示任務(wù)執(zhí)行前,使用system(“cls”); 函數(shù)執(zhí)行清屏操作。</p><p>  程序在讀取文件或者創(chuàng)建新的成績單時,覆蓋了上一次的成績單,但是程序并沒有將上一次保存在內(nèi)存中的數(shù)據(jù)清理,也沒有釋放被占用的內(nèi)存。這就有可能導(dǎo)致程序在執(zhí)行多次讀取或創(chuàng)建操作后,占用的內(nèi)存越來越大。建議在覆蓋后立即釋放不需要的內(nèi)存,節(jié)約空間。&

27、lt;/p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 賈宗璞、許合利.《C語言程序設(shè)計(第二版)》.人民郵電出版社,2014年.</p><p><b>  [2] 百度百科.</b></p><p><b>  附錄I</b></p><

28、;p><b>  分工:</b></p><p>  程序設(shè)計、編寫、修改和測試,撰寫報告。</p><p><b>  附錄II</b></p><p><b>  源代碼:</b></p><p>  #include<stdio.h></p>

29、<p>  #include<string.h></p><p>  #include<malloc.h></p><p>  #define Subject_n 5</p><p>  #define LEN sizeof(struct student)</p><p>  struct student

30、</p><p><b>  {</b></p><p><b>  int num;</b></p><p>  float score[Subject_n];</p><p>  float summary; </p><p>  float aver_score;<

31、;/p><p>  char name[16];</p><p>  char sex[3];</p><p>  struct student *next;</p><p><b>  };</b></p><p>  typedef struct student stu;</p>&

32、lt;p>  const static char Format_head[]={"學(xué)號\t姓名\t 性別\t科目1\t科目2\t科目3\t科目4\t科目5\t總分\t平均分\n"};</p><p>  const static char Format_head_2[]={"\n學(xué)號\t姓名\t 性別\t該科成績\n"};</p><p>

33、  const static char Format_data[]={"%-8d%-10s %-3s\t"};</p><p>  const static char PassWord[16]={"123456\n"};</p><p>  float sub_ave_s[Subject_n]={0};</p><p>  s

34、tu *Creat(stu *head);</p><p>  stu *Insert(stu *head);</p><p>  stu *Insert_File(int rf_stu_n);</p><p>  stu *Delete(stu *head);</p><p>  stu *Sort(stu *head);</p>

35、;<p>  stu *File_R_And_W(stu *head,const char *type);</p><p>  stu *Find_Stu(stu *head);</p><p>  stu *Change_Value(stu *head);</p><p>  int Count_Stu(stu *head);</p>

36、<p>  void Summary_Score(stu *head);</p><p>  void Stu_Aver_Score(stu *head,int count);</p><p>  void Sub_Aver_Score(stu *head);</p><p>  void Display(stu *head);</p>&l

37、t;p>  void Show_Under_Average(stu *head);</p><p>  void Show_Higher(stu *head);</p><p>  void Show_Fail(stu *head);</p><p>  void Show_One(stu *one);</p><p>  void S

38、how_Subject_Average(stu *head,float *sub_ave_s);</p><p>  void Show_By_Condition(stu *head,int type);</p><p>  void help(int type);</p><p>  int Log_In();</p><p>  int

39、main(void)</p><p><b>  {</b></p><p>  stu *head = NULL;</p><p>  int Access=0;</p><p>  int Access_n=3;</p><p>  int operate = 0;</p>&l

40、t;p>  char File_type[3];</p><p>  int Show_type=0;</p><p>  printf("學(xué)生成績統(tǒng)計管理程序\n");</p><p>  Access=Log_In();</p><p>  while(Access_n)</p><p>

41、<b>  {</b></p><p>  if(Access>0)</p><p><b>  {</b></p><p><b>  help(1);</b></p><p>  while (scanf("%d", &operate)==

42、1)</p><p><b>  {</b></p><p>  switch (operate)</p><p><b>  {</b></p><p>  case 1:head = Creat(head);Display(head);break;</p><p>  c

43、ase 2:Display(head);break;</p><p>  case 3:head = Insert(head);break;</p><p>  case 4:head = Delete(head);break;</p><p>  case 5:Show_By_Condition(Find_Stu(head),4);break;</p>

44、<p>  case 6:Change_Value(head);Sub_Aver_Score(head);break;</p><p>  case 7:Stu_Aver_Score(head,Count_Stu(head));Display(head);break;</p><p>  case 8:Sub_Aver_Score(head);Show_Subject_Ave

45、rage(head,sub_ave_s);break;</p><p>  case 9:help(4);Sort(head);Display(head);break;</p><p>  case 10:help(2);</p><p>  while(scanf("%d",&Show_type) != 1)</p>&l

46、t;p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p>  Show_By_Condition(head,Show_type)

47、;break;</p><p>  case 11:help(3);scanf_s("%s",File_type,3);</p><p>  head=File_R_And_W(head,File_type);break;</p><p>  case 0:return 0;</p><p><b>  defa

48、ult:;</b></p><p><b>  }</b></p><p><b>  help(1);</b></p><p><b>  }</b></p><p>  fflush(stdin);</p><p><b> 

49、 }</b></p><p>  else if(Access_n>1)</p><p><b>  {</b></p><p>  Access_n--;</p><p>  printf("\n密碼錯誤,你還有%d次機(jī)會輸入\n",Access_n);</p>&l

50、t;p>  Access=Log_In();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("\n錯誤次數(shù)過多,程序終止!\n"); &l

51、t;/p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }<

52、/b></p><p>  stu *Creat(stu *head)</p><p><b>  {</b></p><p>  stu *head_old = head;</p><p><b>  stu *p;</b></p><p>  stu *tail;&

53、lt;/p><p><b>  int x=0;</b></p><p>  int score_n;</p><p><b>  char y_n;</b></p><p>  tail = head = NULL;</p><p>  printf("\n此操作會覆

54、蓋原有的成績單!是否繼續(xù)?(y/n) ");</p><p>  getchar();</p><p>  y_n=getchar();</p><p>  if(y_n == 'y' || y_n == 'Y')</p><p><b>  {</b></p>&

55、lt;p>  printf("\n請輸入學(xué)生的學(xué)號(輸入 0 結(jié)束):");</p><p>  while(scanf("%d", &x) != 1)</p><p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p&

56、gt;<p>  fflush(stdin);</p><p><b>  }</b></p><p>  while (x != 0)</p><p><b>  {</b></p><p>  p = (stu *)malloc(LEN);</p><p>

57、  (*p).num = x;</p><p>  if (head == NULL) head = p;</p><p>  printf("請輸入學(xué)生的姓名:");</p><p>  scanf_s("%s", &(*p).name,16);</p><p>  printf("

58、請輸入學(xué)生的姓別:");</p><p>  scanf_s("%s", &(*p).sex,3);</p><p>  printf("請輸入學(xué)生五門課的成績:");</p><p>  for(score_n=0;score_n<Subject_n;score_n++)</p><

59、;p><b>  {</b></p><p>  while(scanf("%f", &(*p).score[score_n]) != 1)</p><p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p>

60、<p>  fflush(stdin);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (tail != NULL) (*tail).next = p;</p><p><b>  tail = p;</b>

61、;</p><p>  printf("請輸入學(xué)生的學(xué)號(輸入 0 結(jié)束):");</p><p>  while(scanf("%d", &x) != 1)</p><p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:&qu

62、ot;);</p><p>  fflush(stdin);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (tail != NULL) (*tail).next = NULL;</p><p>  Stu_Aver

63、_Score(head,Count_Stu(head));</p><p>  Sub_Aver_Score(head);</p><p>  return head;</p><p><b>  }</b></p><p><b>  else</b></p><p>&

64、lt;b>  {</b></p><p>  return head_old;</p><p><b>  }</b></p><p><b>  }</b></p><p>  stu *Insert(stu *head)</p><p><b>

65、;  {</b></p><p>  int score_n;</p><p>  stu *new_stu = (stu *)malloc(LEN);</p><p>  stu *find = NULL;</p><p>  stu *last = NULL;</p><p>  stu *traver

66、sal = NULL; </p><p>  find = head;</p><p>  printf("\n請輸入學(xué)生的學(xué)號:");</p><p>  while(scanf("%d",&(*new_stu).num) != 1)</p><p><b>  {</b>

67、;</p><p>  printf("輸入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p>  if (find != NULL)</p><p><b>  {</b>&

68、lt;/p><p>  for ( ; find!=NULL&&(*find).num < (*new_stu).num ; find = (*find).next )</p><p><b>  {</b></p><p>  last = find;</p><p><b>  }<

69、/b></p><p>  for(traversal = head ; traversal != NULL ; traversal=(*traversal).next )</p><p><b>  {</b></p><p>  if((*new_stu).num == (*traversal).num)</p><

70、;p><b>  {</b></p><p>  printf("\n該學(xué)生已存在\n");</p><p>  free(new_stu);</p><p>  new_stu=NULL;</p><p>  return head;</p><p><b>

71、  }</b></p><p><b>  }</b></p><p>  if (find != NULL)</p><p><b>  {</b></p><p>  if(find != head) (*last).next = new_stu;</p><p

72、>  else head = new_stu;</p><p>  (*new_stu).next = find;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><

73、p>  (*last).next = new_stu;</p><p>  (*new_stu).next = NULL;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p>

74、<p><b>  {</b></p><p>  head = new_stu;</p><p>  (*new_stu).next = NULL;</p><p><b>  }</b></p><p>  printf("請輸入學(xué)生的姓名:");</p>

75、;<p>  scanf_s("%s", &(*new_stu).name,16);</p><p>  printf("請輸入學(xué)生的姓別:");</p><p>  scanf_s("%s", &(*new_stu).sex,3);</p><p>  printf(&quo

76、t;請輸入學(xué)生五門課的成績:");</p><p>  for(score_n=0;score_n<Subject_n;score_n++)</p><p><b>  {</b></p><p>  while(scanf("%f", &(*new_stu).score[score_n]) != 1

77、)</p><p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p><b>  }</b&g

78、t;</p><p>  Stu_Aver_Score(new_stu,1);</p><p>  if(new_stu != NULL)</p><p><b>  {</b></p><p>  printf("\n添加的學(xué)生信息:\n");</p><p>  Show_

79、By_Condition(new_stu,4);</p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><p>  stu *Insert_File(int rf_stu_n)</p><p>&

80、lt;b>  {</b></p><p>  stu *rf = NULL;</p><p>  stu *head = NULL;</p><p><b>  int n=0;</b></p><p>  if(rf_stu_n<1)</p><p><b> 

81、 {</b></p><p>  return head;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  rf = (stu *)malloc

82、(LEN);</p><p><b>  head=rf;</b></p><p>  for(n=0;n<rf_stu_n-1;n++)</p><p><b>  {</b></p><p>  (*rf).next = (stu *)malloc(LEN);</p><

83、;p>  rf=(*rf).next;</p><p><b>  }</b></p><p>  (*rf).next=NULL;</p><p><b>  }</b></p><p>  return head;</p><p><b>  }<

84、/b></p><p>  stu *Delete(stu *head)</p><p><b>  {</b></p><p>  int num = 0;</p><p>  stu *find = NULL;</p><p>  stu *last = NULL;</p>

85、<p>  find = head;</p><p>  if(head != NULL)</p><p><b>  {</b></p><p>  printf("\n請輸入需要刪除的學(xué)生的學(xué)號:");</p><p>  while(scanf("%d", &am

86、p;num) != 1)</p><p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p>  for ( ;

87、 find != NULL && (*find).num != num ; find = (*find).next)</p><p><b>  {</b></p><p>  last = find;</p><p><b>  }</b></p><p>  if (find !

88、= NULL && (*find).num == num)</p><p><b>  {</b></p><p>  if (find == head) head = (*head).next;</p><p>  else (*last).next = (*find).next;</p><p>  

89、free(find);</p><p>  printf("\n已刪除\n"); </p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  pr

90、intf("\nERROR:NotFound!\n");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p

91、><p>  printf("\nERROR:The list is NULL!\n");</p><p>  return head;</p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b>

92、;</p><p>  stu *Sort(stu *head)</p><p><b>  {</b></p><p>  stu *find = NULL;</p><p>  stu *tail = NULL;</p><p>  stu *next = NULL;</p>&

93、lt;p><b>  stu temp;</b></p><p>  int type=0;</p><p>  find = head;</p><p>  next = find;</p><p>  while(scanf("%d",&type) != 1)</p>

94、<p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p>  if(type==1)</p><p>

95、;<b>  {</b></p><p>  if (find != NULL)</p><p><b>  {</b></p><p>  if(head->next==NULL) return head;</p><p>  for(find=head;find!=NULL;find=fi

96、nd->next);</p><p>  tail=find;</p><p>  while(tail!=head->next)</p><p><b>  {</b></p><p>  for(find=head;find->next!=tail;find=(*find).next)</p&

97、gt;<p><b>  {</b></p><p>  next=(*find).next;</p><p>  if((*find).summary<(*next).summary)</p><p><b>  {</b></p><p>  temp=(*next);<

98、;/p><p>  (*next)=(*find);</p><p>  (*find)=temp;</p><p>  temp.next=(*next).next;</p><p>  (*next).next=(*find).next;</p><p>  (*find).next=temp.next;&

99、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  tail=find;</p><p><b>  }</b></p><p><b>  }</b></p><

100、p>  return head;</p><p><b>  }</b></p><p>  else if(type==2)</p><p><b>  {</b></p><p>  if(find != NULL)</p><p><b>  {<

101、;/b></p><p>  if(head->next==NULL) return head;</p><p>  for(find=head;find!=NULL;find=find->next);</p><p>  tail=find;</p><p>  while(tail!=head->next)<

102、/p><p><b>  {</b></p><p>  for(find=head;find->next!=tail;find=(*find).next)</p><p><b>  {</b></p><p>  next=(*find).next;</p><p> 

103、 if((*find).num>(*next).num)</p><p><b>  {</b></p><p>  temp=(*next);</p><p>  (*next)=(*find);</p><p>  (*find)=temp;</p><p>  temp.next=(*

104、next).next;</p><p>  (*next).next=(*find).next;</p><p>  (*find).next=temp.next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  tail=

105、find;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><p>  else printf("\nERROR\n

106、");</p><p><b>  }</b></p><p>  stu* File_R_And_W(stu *head,const char *type)</p><p><b>  {</b></p><p>  FILE *read_f=NULL;</p><p

107、>  FILE *write_f=NULL;</p><p>  stu *p=NULL;</p><p>  stu *head_new=head;</p><p>  int rf_stu_n=0;</p><p>  int sub_n=0;</p><p>  char file_name[128];&l

108、t;/p><p>  char temp[128];</p><p><b>  char y_n;</b></p><p>  if(strcmp(type,"r")==0 || strcmp(type,"R")==0)</p><p><b>  {</b>&

109、lt;/p><p>  getchar();</p><p>  printf("\n此操作會覆蓋原有的成績單!是否繼續(xù)?(y/n) ");</p><p>  y_n=getchar();</p><p>  if(y_n == 'y' || y_n == 'Y')</p>&l

110、t;p><b>  {</b></p><p>  printf("文件名:");</p><p>  getchar();</p><p>  gets(file_name);</p><p>  read_f=fopen(file_name,"r");</p>

111、<p>  if(read_f==NULL)</p><p><b>  {</b></p><p>  printf("\nERROR:This file cannot be opened!\n");</p><p><b>  }</b></p><p><

112、;b>  else</b></p><p><b>  {</b></p><p>  fscanf(read_f,"%d\n",&rf_stu_n);</p><p>  p=Insert_File(rf_stu_n);</p><p>  head_new=p;</

113、p><p>  fgets(temp,100,read_f);</p><p>  while (p!=NULL&&!feof(read_f))</p><p><b>  {</b></p><p>  fscanf(read_f,"%d%s%s",&(*p).num,&

114、(*p).name,&(*p).sex);</p><p>  for(sub_n=0;sub_n<Subject_n;sub_n++)</p><p><b>  {</b></p><p>  fscanf(read_f,"%f",&(*p).score[sub_n]);</p>&l

115、t;p><b>  }</b></p><p>  fscanf(read_f,"%f%f",&(*p).summary,&(*p).aver_score);</p><p>  p = (*p).next;</p><p><b>  }</b></p><p

116、>  Display(head_new);</p><p><b>  }</b></p><p>  fclose(read_f);</p><p>  return head_new;</p><p><b>  }</b></p><p><b>  

117、else</b></p><p><b>  {</b></p><p>  return head_new;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if( (strcm

118、p(type,"w")==0 || strcmp(type,"W")==0) && head!=NULL)</p><p><b>  {</b></p><p>  getchar();</p><p>  printf("文件名:");</p><

119、;p>  gets(file_name);</p><p>  write_f=fopen(file_name,"w");</p><p><b>  p=head;</b></p><p>  if(write_f==NULL)</p><p><b>  {</b>&l

120、t;/p><p>  printf("\nERROR:This file cannot be opened!\n");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

121、;<p>  fprintf(write_f,"%d\n",Count_Stu(head));</p><p>  fprintf(write_f,Format_head);</p><p><b>  do</b></p><p><b>  {</b></p><p

122、>  fprintf(write_f,Format_data,(*p).num,(*p).name,(*p).sex);</p><p>  for(sub_n=0;sub_n<Subject_n;sub_n++)</p><p><b>  {</b></p><p>  fprintf(write_f,"%5.1f\t

123、",(*p).score[sub_n]);</p><p><b>  }</b></p><p>  fprintf(write_f,"%5.1f\t%5.1f\n",(*p).summary,(*p).aver_score);</p><p>  p = (*p).next;</p><p&

124、gt;  } while (p != NULL);</p><p><b>  }</b></p><p>  fclose(write_f);</p><p><b>  }</b></p><p>  else printf("\nERROR!\n");</p>

125、<p>  return head_new;</p><p><b>  }</b></p><p>  stu *Find_Stu(stu *head)</p><p><b>  {</b></p><p><b>  int num;</b></p>

126、;<p>  stu *find = head;</p><p>  if (head != NULL)</p><p><b>  {</b></p><p>  printf("\n請輸入要查找的學(xué)生的學(xué)號:");</p><p>  while(scanf("%d&quo

127、t;,&num) != 1)</p><p><b>  {</b></p><p>  printf("輸入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p><

128、;b>  do</b></p><p><b>  {</b></p><p>  if((*find).num == num) break;</p><p>  else find = (*find).next;</p><p>  } while (find != NULL);</p>

129、<p>  if(find == NULL)printf("\nERROR:NotFound!\n");</p><p><b>  }</b></p><p>  else printf("\nERROR:The list is NULL!\n");</p><p>  return fin

130、d;</p><p><b>  }</b></p><p>  stu *Change_Value(stu *head)</p><p><b>  {</b></p><p>  stu *change=NULL;</p><p><b>  stu temp;

131、</b></p><p>  int score_n;</p><p>  change=Find_Stu(head);</p><p>  if(change!=NULL)</p><p><b>  {</b></p><p>  temp = *change;</p>

132、<p>  getchar();</p><p>  Show_One(change);</p><p>  printf("\n請重新輸入學(xué)生信息\n");</p><p>  printf("請輸入學(xué)生的姓名(直接按回車鍵可跳過此步驟):");</p><p>  gets((*cha

133、nge).name);</p><p>  if(strcmp((*change).name,"")==0)</p><p><b>  {</b></p><p>  strcpy((*change).name,temp.name);</p><p><b>  }</b>&l

134、t;/p><p>  printf("請輸入學(xué)生的姓別(直接按回車鍵可跳過此步驟):");</p><p>  gets((*change).sex);</p><p>  if(strcmp((*change).sex,"")==0)</p><p><b>  {</b></

135、p><p>  strcpy((*change).sex,temp.sex);</p><p><b>  }</b></p><p>  printf("請輸入學(xué)生五門課的成績(輸入 -1 可跳過此步驟):");</p><p>  for(score_n=0;score_n<Subject_n;

136、score_n++)</p><p><b>  {</b></p><p>  while(scanf("%f", &(*change).score[score_n]) != 1)</p><p><b>  {</b></p><p>  printf("輸

137、入錯誤,請重新輸入:");</p><p>  fflush(stdin);</p><p><b>  }</b></p><p>  if((*change).score[0] == -1)</p><p><b>  {</b></p><p>  (*cha

138、nge).score[0]=temp.score[0];</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Stu_Aver_Score(change,1);</p&g

139、t;<p>  printf("\n修改的學(xué)生信息:\n");</p><p>  Show_By_Condition(change,4);</p><p><b>  }</b></p><p>  return change; </p><p><b>  }</b&

140、gt;</p><p>  int Count_Stu(stu *head)</p><p><b>  {</b></p><p>  stu *p = head;</p><p>  int count=0;</p><p>  if (head != NULL)</p><

141、;p><b>  {</b></p><p><b>  do</b></p><p><b>  {</b></p><p><b>  count++;</b></p><p>  p = (*p).next;</p><p&

142、gt;  } while (p != NULL);</p><p><b>  }</b></p><p>  return count;</p><p><b>  }</b></p><p>  void Summary_Score(stu *head)</p><p>

143、<b>  {</b></p><p>  stu *p = head;</p><p>  int score_n=0;</p><p>  if (head != NULL)</p><p><b>  {</b></p><p><b>  do</b&

144、gt;</p><p><b>  {</b></p><p>  for(score_n=0,(*p).summary=0;score_n<Subject_n;score_n++)</p><p>  (*p).summary += (*p).score[score_n];</p><p>  p = (*p).

145、next;</p><p>  } while (p != NULL);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Stu_Aver_Score(stu *head,int count)</p><p>&l

溫馨提示

  • 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

提交評論