2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(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><b>  C語言課程設(shè)計(jì)</b></p><p><b>  報(bào)告</b></p><p>  題目 : 學(xué)生成績(jī)管理系統(tǒng) </p><p>  姓名 : </p><p>  學(xué)號(hào) :

2、 </p><p>  班級(jí) : </p><p>  專業(yè) : </p><p>  學(xué)院 : </p><p>  指導(dǎo)教師 : </p><p>  2008年 12 月

3、25 日</p><p><b>  一:題目與要求</b></p><p>  (一)、 課程設(shè)計(jì)題目</p><p>  《學(xué)生成績(jī)管理系統(tǒng)》的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  (二)、 課程設(shè)計(jì)目的</p><p>  1、 進(jìn)一步掌握和利用C語言進(jìn)行程設(shè)計(jì)的能力;</p>&

4、lt;p>  2、 進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法;</p><p>  3、 初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;</p><p>  4、 學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;</p><p>  5、 學(xué)會(huì)利用流程圖或N-S圖表示算法;</p><p>  6、 掌握書寫程設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告)

5、;</p><p><b>  (三)、 設(shè)計(jì)內(nèi)容</b></p><p>  1、每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3門課成績(jī)、平均成績(jī)。</p><p>  2、輸入功能:可以一次完成若干條記錄的輸入。</p><p>  3、顯示功能:完成全部學(xué)生記錄的顯示。</p><p>  4、查找

6、功能:完成按姓名查找學(xué)生記錄,并顯示。</p><p>  5、排序功能:按學(xué)生平均成績(jī)進(jìn)行排序。</p><p>  6、插入功能:按平均成績(jī)高低插入一條學(xué)生記錄。</p><p>  7、將學(xué)生記錄存在文件score中。</p><p>  8、應(yīng)提供一個(gè)界面來調(diào)用各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀!</p>

7、;<p><b>  (四)、 設(shè)計(jì)要求</b></p><p>  1、 用C語言實(shí)現(xiàn)系統(tǒng);</p><p>  2、 利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);</p><p>  3、 系統(tǒng)具有增加,查詢,插入,排序等基本功能;</p><p>  4、 系統(tǒng)的各個(gè)功能模塊要求用函數(shù)的形式實(shí)現(xiàn)

8、;</p><p>  5、 完成設(shè)計(jì)任務(wù)并書寫課程設(shè)計(jì)報(bào)告。</p><p>  6、 將學(xué)生成績(jī)信息存在文件中。</p><p><b>  (五)、提交材料</b></p><p><b>  1、課程設(shè)計(jì)報(bào)告</b></p><p>  1)課程設(shè)計(jì)題目、內(nèi)容、要

9、求。</p><p>  2)總體設(shè)計(jì)(包含幾大功能模塊)。</p><p>  3)詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法——流程圖)</p><p>  4)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述,各模塊(函數(shù))的功能介紹,參數(shù)說明等。</p><p>  5)調(diào)試分析(包含各模塊的測(cè)試用例,及測(cè)試結(jié)果。)</p><p>  6)總結(jié)(課

10、程設(shè)計(jì)完成了哪些功能,還有哪些地方需要改進(jìn),及通過一周的課程設(shè)計(jì)有何收獲,調(diào)試程序的體會(huì)等)</p><p>  二:程序數(shù)據(jù)結(jié)構(gòu)說明:</p><p> ?。保湵淼慕⒛K(一次性輸入,輸入個(gè)數(shù)由用戶決定,最大可容納80記錄,最大數(shù)可以在源程序中改) 。</p><p> ?。玻湵磔敵瞿K。(在屏幕上顯示當(dāng)前鏈表的數(shù)據(jù))。</p><p&g

11、t;<b> ?。常薷哪K。</b></p><p><b> ?。矗畡h除模塊。</b></p><p><b>  5.插入模塊。</b></p><p> ?。叮檎夷K(按姓名查找)。</p><p><b> ?。罚迦肽K。</b></p

12、><p>  8.排序模塊(對(duì)記錄進(jìn)行排序,按平均成績(jī)排序)。</p><p><b> ?。梗迤?。</b></p><p>  10.?dāng)?shù)據(jù)結(jié)構(gòu)是這樣的:學(xué)號(hào)只能由數(shù)字字符組成,最大可以11個(gè)字符;姓名由字符組成,最大可以20個(gè)字符;三門科目分?jǐn)?shù)都是整型;平均成績(jī)是實(shí)型。</p><p>  11.程序中定義了學(xué)生的容量為

13、50個(gè)。容量可以在源程序宏定義中改,本程序宏定義#define N 50</p><p>  三:各個(gè)模塊的流程圖</p><p><b>  主菜單函數(shù)</b></p><p><b>  主介面的流程圖如下</b></p><p>  說明:從該流程圖中我們可以看出每個(gè)模塊結(jié)構(gòu)所對(duì)應(yīng)的功能,從而

14、能夠清楚的了解此程序的結(jié)構(gòu)網(wǎng)絡(luò),只需把每個(gè)模塊函數(shù)寫好存放在對(duì)應(yīng)的模塊即可,這能夠大大的提高程序的可讀性。</p><p> ?。ㄒ唬㈡湵斫⒛K流程圖</p><p>  說明:在此建立一個(gè)鏈表用于存放學(xué)生信息的結(jié)構(gòu)體。</p><p>  (二)、鏈表輸出模塊流程圖</p><p>  說明:鏈表輸出是對(duì)學(xué)生信息輸出的函數(shù)根據(jù)指針P所指

15、向的結(jié)點(diǎn)而輸出對(duì)應(yīng)的學(xué)生個(gè)人數(shù)據(jù)信息。</p><p> ?。ㄈ?、修改模塊流程圖</p><p>  說明:調(diào)用w1=modify_data(i,n)修改函數(shù)時(shí),若返回值為1則表示用戶在修改函數(shù)里面確認(rèn)了這次修改,其中i表示第i個(gè)記錄(要修改的),n表示總共有n個(gè)記錄,n以便這修改函數(shù)在調(diào)用輸入函數(shù)時(shí)用;若返回值不為1則不保存這次修改,但保存這次之前的修改,這由w2來控制,w2=1則表示

16、有過用戶修改確認(rèn)史。</p><p>  (四)、刪除模塊流程圖</p><p>  說明:若在讓用戶選擇操作時(shí)選擇了"3).直接退出",則不保存所有刪除過的記錄。這里不同于修改模塊。stu[k].ave=0;作刪除標(biāo)記,保存時(shí)則此記錄不保存</p><p>  (五)、插入模塊流程圖</p><p>  (六)、查找模塊流程圖</p&

17、gt;<p>  說明:這模塊是按姓名查找的,找到以后,增加了對(duì)它刪除和修改功能。而刪除和修改模塊都有瀏覽(記錄信息不清楚的用戶進(jìn)行),或許刪除和修改模塊顯得有點(diǎn)重復(fù)。</p><p>  (七)、排序模塊流程圖</p><p>  (八)、保存模塊流程圖</p><p>  說明:形參n是控制保存的個(gè)數(shù).stu[k].ave=0;作刪除標(biāo)記,保存時(shí)則

18、不保存此記錄</p><p>  五:測(cè)試心得體會(huì)與分析</p><p>  在本次設(shè)計(jì)中學(xué)到了不少知識(shí),對(duì)C語言的理解加深了,也加強(qiáng)了動(dòng)手能力。其中知道了清屏函數(shù)clrscr();;按任意鍵可以插入getch();;getchar();的小技巧――當(dāng)輸入整型時(shí)可以接收過濾錯(cuò)誤輸入(如字符輸入),對(duì)這個(gè)小技巧作了如下的測(cè)試:一開始我的主菜單模塊里有多分支選擇,并且對(duì)用戶選擇(輸入整型數(shù)

19、字)作判斷,若超出范圍則提示用戶且讓用戶重新選擇。但測(cè)試中發(fā)現(xiàn)當(dāng)輸入字符時(shí)(如a)就出現(xiàn)死循環(huán):關(guān)鍵部分源代碼如下:do{printf(“Choice your number(1-8): [ ]\b\b”);scanf(“%d”,&n);if(n<1||n>9) {printf(“\nChoice erroe! please again.”); w1=1;getchar();  }else

20、 w1=0;}while (w1==1);最后我測(cè)試發(fā)現(xiàn)加了getchar();就可以解決。</p><p>  自定義函數(shù)中最讓我感到得意的是加載函數(shù)load();它既精簡(jiǎn)又強(qiáng)大,每當(dāng)要讀文本時(shí)用這個(gè)函數(shù)既可讀入數(shù)據(jù),又可以統(tǒng)計(jì)記錄個(gè)數(shù)。它的返回值就是記錄個(gè)數(shù)。除全新輸入模塊沒有到,其余的都要調(diào)用它,而且?guī)缀醵加玫剿姆祷刂?。這一函數(shù)也體現(xiàn)出結(jié)構(gòu)化設(shè)計(jì)。它的源代碼如下:load(){FILE *fp

21、; int i; if((fp=fopen(“score..txt”,”rb”))==NULL) {printf(“\nCannot open file”); return NULL; } for(i=0;!feof(fp);i++) fread(&stu[i],sizeof(struct student),1,fp); fclose(fp); return(i-1);}原先我不會(huì)使用fe

22、of(fp); 緩沖文件系統(tǒng)函數(shù),就用記錄容量值N=50來控制for語句的結(jié)束。寫了源程序后總是覺得不好,因?yàn)槿萘渴窍鄬?duì)來說是一個(gè)常量,而且顯示記錄時(shí)也不好控制語句的結(jié)束,有時(shí)會(huì)出現(xiàn)沒有的記錄也顯示出來(即顯示為0)。這時(shí)心里總是不安,我就翻開書看看...,??!終于被我發(fā)現(xiàn)</p><p>  我覺得這次C語言課程設(shè)計(jì)還算成功,這程序還比較完善,我對(duì)它增加了修改模塊、刪除模塊,而且需要用戶的確認(rèn)才能修改或刪除。增

23、加了對(duì)學(xué)號(hào)輸入時(shí)進(jìn)行分析判斷――只能輸入0-9的字符,而且不允許學(xué)號(hào)雷同。一些重要部分的選擇作了判斷(如主菜單里面的選擇,而且加了getchar();來接收錯(cuò)誤輸入),在確保程序完善些時(shí)避免死循環(huán)。其它次要的選擇(沒有必要的)則沒有加判斷,如果輸入就會(huì)自動(dòng)返回。</p><p>  4. 本程序有待改進(jìn)的或不足有:保存函數(shù)不能同時(shí)對(duì)全新輸入模塊與追加模塊調(diào)用,本程序里它沒有被追加模塊調(diào)用。由于本人還不熟悉用

24、文件指針,所以不能對(duì)單個(gè)記錄保存。沒有另存為功能,也沒有打開其它位置文件(同類型)的功能。我發(fā)現(xiàn)在結(jié)構(gòu)體里的score[3]不能定義為實(shí)型,否則編譯正確運(yùn)行錯(cuò)誤(當(dāng)輸入科目分?jǐn)?shù)時(shí),直接跳過不給輸入,并提示錯(cuò)誤。如下由于時(shí)間關(guān)系,沒有增加按其它項(xiàng)目的查找(如按科目1,科目2等等)。這里只有按姓名查找。</p><p><b>  各模塊的測(cè)試。</b></p><p>

25、  對(duì)全新輸入學(xué)生記錄:運(yùn)行程序進(jìn)入了主菜單――>選擇(輸入)1――>輸入用戶待輸入記錄的個(gè)數(shù)――>然后逐個(gè)輸入記錄――>提示成功詢問是瀏覽還是返回,最后對(duì)每個(gè)函數(shù)調(diào)用,觀察輸出顯示是否正確。</p><p><b>  六:總結(jié)</b></p><p>  本次課程設(shè)計(jì)主要是考察我們對(duì)一些基本函數(shù)的認(rèn)識(shí)以及對(duì)鏈表的處理。。在設(shè)計(jì)的過程中遇到問

26、題,可以說得是困難重重,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)一些前面學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表……通過這次課程設(shè)計(jì)之后,我們把前面所學(xué)過的知識(shí)又重新溫故了一遍。</p><p>  編程是一件很枯燥很無聊的事情,但是出于完成作業(yè),得到學(xué)分的壓力,還必須強(qiáng)破自己堅(jiān)持下去,按照老師所說的模塊化思想,分部分的進(jìn)行編寫。而且編程是一件高精度、模范化

27、的事情,稍有疏乎都會(huì)影響全局,也可能因?yàn)槟骋惶幍男〉腻e(cuò)誤而導(dǎo)致整個(gè)程序的無法運(yùn)行。所以認(rèn)真仔細(xì)就是非常重要的了。開始的時(shí)候真的感覺編程是一件很無聊的事情,不過當(dāng)一個(gè)程序運(yùn)行成功的時(shí)候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多錯(cuò)誤和漏洞,不過還是很高興的。無論如何是自己的勞動(dòng)成果,是自己經(jīng)過努力得到的成績(jī),同時(shí)也是學(xué)習(xí)C語言的一次實(shí)踐作業(yè),自己進(jìn)步的證明。</p>&

28、lt;p>  通過這次課程設(shè)計(jì),使我對(duì)C語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯(cuò)字母,通過學(xué)習(xí)也有所改進(jìn);再有對(duì)C語言的一些標(biāo)準(zhǔn)庫(kù)函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,還有對(duì)C語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐的學(xué)習(xí),我認(rèn)識(shí)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計(jì)算機(jī)方面的

29、知識(shí)都要重在實(shí)踐,所以后在學(xué)習(xí)過程中,我會(huì)更加注視實(shí)踐操作,使自己更好地學(xué)好計(jì)算機(jī)。</p><p><b>  附 錄</b></p><p>  /************************************************************************</p><p>  C語言 課程設(shè)計(jì)程序參考程

30、序</p><p>  *************************************************************************/</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #inclu

31、de<string.h></p><p>  #include<malloc.h></p><p>  #include<conio.h></p><p>  #define NULL 0</p><p>  #define LEN sizeof(struct student)</p><

32、;p>  #define M 3 /*課程數(shù)*/</p><p>  #define TC3</p><p>  int n; /*學(xué)生數(shù),用全局變量表示*/</p><p>  struct student</p><p><b>  {</b></p><p>

33、  unsigned num; /*學(xué)號(hào)*/</p><p>  char name[10]; /*姓名*/</p><p>  unsigned score[M]; /*分?jǐn)?shù)*/</p><p>  float aver; /*平均成績(jī)*/</p><p>  struct student *

34、next;</p><p><b>  };</b></p><p>  /**************************************************************************</p><p>  幫助函數(shù),提示相關(guān)的操作。</p><p>  **************

35、*************************************************************</p><p>  void Help()</p><p><b>  {</b></p><p>  puts(" ***********************************************

36、**********");</p><p>  puts(" * Student System Command Help *");</p><p>  puts(" *********************************************************");&l

37、t;/p><p>  puts(" * L = List all records *");</p><p>  puts(" * D = Delete a record select by number *");</p>&

38、lt;p>  puts(" * A = Append records *");</p><p>  puts(" * I = Insert records *");</p><p>  puts(&

39、quot; * S = Sort records *");</p><p>  puts(" * H = Show this help message *");</p><p>  puts(" * V = S

40、ave records to a file *");</p><p>  puts(" * O = Load recors from a file *");</p><p>  puts(" * C = Clear screen

41、 *");</p><p>  puts(" * Q = Quit Syestem *");</p><p>  puts(" **************************************

42、*******************");</p><p>  puts(" * 制作人: 日期:2008.12.28 *");</p><p>  puts(" *********************************************************");<

43、;/p><p><b>  }</b></p><p>  /**************************************************************************</p><p>  建立鏈表,即輸入學(xué)生檔案。</p><p>  ***********************

44、****************************************************/struct student *CreatTable(void)</p><p><b>  {</b></p><p>  struct student *p1, *p2, *head;</p><p>  int i, j[M];

45、 /*定義臨時(shí)變量和數(shù)組*/ </p><p>  char name[10];</p><p><b>  n = 0;</b></p><p>  p1 = p2 = (struct student *) malloc(LEN);/*申請(qǐng)動(dòng)態(tài)空間*/</p><p>  head = NULL;<

46、/p><p>  p1->aver = 0;/*初始化頭指針和平均值*/</p><p>  printf("Please input the number of student:\n");</p><p>  scanf("%d", &i);</p><p>  p1 -> num =

47、 i;</p><p>  printf("Please input the name of student:\n");</p><p>  scanf("%s", name);</p><p>  strcpy(p1->name, name);</p><p>  for(i = 0; i &l

48、t; M; i++)</p><p><b>  {</b></p><p>  printf("Please input the score[%d] of student:\n", i);</p><p>  scanf("%d", &j[i]);</p><p>  p

49、1->score[i] = j[i];</p><p>  p1->aver += j[i];</p><p><b>  }</b></p><p>  p1->aver /= M; /*求平均值*/</p><p>  while(p1 -> num != 0)

50、 /*如果學(xué)號(hào)是0則退出建表程序*/</p><p><b>  {</b></p><p><b>  n++;</b></p><p>  if(n == 1)</p><p>  head = p1;</p><p><b>  else

51、</b></p><p>  p2->next = p1;</p><p><b>  p2 = p1;</b></p><p>  p1 = (struct student *)malloc(LEN);</p><p>  p1->aver = 0;</p><p>  

52、printf("Please input the number of student:\n");</p><p>  scanf("%d", &p1 -> num);</p><p>  printf("Please input the name of student:\n");</p><p&g

53、t;  scanf("%s", name);</p><p>  strcpy(p1->name, name);</p><p>  for(i = 0; i < M; i++)</p><p><b>  {</b></p><p>  printf("Please input

54、 the score[%d] of student:\n", i);</p><p>  scanf("%d", &j[i]);</p><p>  p1->score[i] = j[i];</p><p>  p1->aver += j[i];</p><p><b>  }<

55、;/b></p><p>  p1->aver /= M;</p><p><b>  }</b></p><p>  p2->next = NULL;</p><p>  return(head);</p><p><b>  }</b></p>

56、;<p>  /**************************************************************************</p><p>  打印鏈表,即輸出學(xué)生檔案。</p><p>  ************************************************************************

57、***/void PrintTable(struct student *head)</p><p><b>  {</b></p><p>  struct student *p;</p><p><b>  int i;</b></p><p>  printf("\nNow,These

58、 %d record are\n", n);</p><p>  printf("num name ");</p><p>  for(i = 0; i < M; i++)</p><p>  printf("score[%d] ", i);</p><p>  printf(&qu

59、ot;aver");</p><p>  printf("\n-------------------------------------------------------\n");</p><p><b>  p = head;</b></p><p>  if(head != NULL)</p>

60、<p><b>  do</b></p><p><b>  {</b></p><p>  printf("%-5d%-6s", p->num, p->name);</p><p>  for(i = 0; i < M; i++)</p><p> 

61、 printf("%-9d", p->score[i]);</p><p>  printf("%-5.1f\n", p->aver);</p><p>  p = p->next;</p><p><b>  }</b></p><p>  while(p !=

62、 NULL);</p><p><b>  }</b></p><p>  /**************************************************************************</p><p>  刪除鏈表中的一個(gè)元素。</p><p>  ***************

63、************************************************************</p><p>  struct student *DeleteTable(struct student *head, int num)</p><p><b>  {</b></p><p>  struct studen

64、t *p1, *p2;</p><p>  p1 = head;</p><p>  while((unsigned)num != p1->num && p1->next != NULL)</p><p><b>  {</b></p><p><b>  p2 = p1;</

65、b></p><p>  p1 = p1->next;</p><p><b>  }</b></p><p>  if(p1->num == (unsigned)num)</p><p><b>  {</b></p><p>  if(p1 == hea

66、d)</p><p>  head = p1 -> next;</p><p><b>  else</b></p><p>  p2->next = p1->next;</p><p><b>  n--;</b></p><p><b>  f

67、ree(p1);</b></p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><p>  /*******************************************************

68、*******************</p><p>  在鏈表中追加一個(gè)元素</p><p>  **************************************************************************/</p><p>  void AppendToTable(struct student *head)</p&

69、gt;<p><b>  {</b></p><p>  struct student *p, *pt;</p><p>  int i, j[M];</p><p>  char name[10];</p><p>  pt = (struct student *)malloc(LEN);</p&g

70、t;<p>  pt->aver = 0;</p><p>  printf("Please input the number of student:\n");</p><p>  scanf("%d", &i);</p><p>  pt -> num = i;</p><

71、;p>  printf("Please input the name of student:\n");</p><p>  scanf("%s", name);</p><p>  strcpy(pt->name, name);</p><p>  for(i = 0; i < M; i++)</p&g

72、t;<p><b>  {</b></p><p>  printf("Please input the score[%d] of student:\n", i);</p><p>  scanf("%d", &j[i]);</p><p>  pt->score[i] = j

73、[i];</p><p>  pt->aver += j[i];</p><p><b>  }</b></p><p>  pt->aver /= M;</p><p><b>  p = head;</b></p><p>  while(p->next

74、 != NULL)</p><p>  p = p->next;</p><p>  p->next = pt;</p><p>  pt->next = NULL;</p><p><b>  n++;</b></p><p><b>  }</b><

75、;/p><p>  struct student *InsertToTable(struct student *head)</p><p><b>  {</b></p><p>  struct student *p1, *p2, *pt;</p><p>  int i, j[M];</p><p&g

76、t;  char name[10];</p><p>  pt = (struct student *)malloc(LEN);</p><p>  pt->aver = 0;</p><p>  printf("Please input the number of student:\n");</p><p>  s

77、canf("%d", &i);</p><p>  pt -> num = i;</p><p>  printf("Please input the name of student:\n");</p><p>  scanf("%s", name);</p><p>

78、  strcpy(pt->name, name);</p><p>  for(i = 0; i < M; i++)</p><p><b>  {</b></p><p>  printf("Please input the score[%d] of student:\n", i);</p>&l

79、t;p>  scanf("%d", &j[i]);</p><p>  pt->score[i] = j[i];</p><p>  pt->aver += j[i];</p><p><b>  }</b></p><p>  pt->aver /= M;</p

80、><p>  p1 = head;</p><p>  while((p1->num < pt->num) && (p1->next != NULL))</p><p><b>  {</b></p><p><b>  p2 = p1;</b></p>

81、;<p>  p1 = p1->next;</p><p><b>  }</b></p><p>  if(p1->num > pt->num)</p><p><b>  {</b></p><p>  if(head == p1)</p>&

82、lt;p>  head = pt;</p><p><b>  else</b></p><p>  p2->next = pt;</p><p>  pt->next = p1;</p><p><b>  }</b></p><p><b> 

83、 else</b></p><p><b>  {</b></p><p>  p1->next = pt; </p><p>  pt->next = NULL;</p><p><b>  }</b></p><p><b>  n++;

84、</b></p><p>  return(head);</p><p><b>  }</b></p><p>  struct student *SortTable(struct student *head)</p><p><b>  {</b></p><p

85、>  struct student *ph, *p1, *p2, *pb, *pa, *pt;</p><p>  ph = head; </p><p>  head = pa = NULL;</p><p>  while(ph != NULL)</p><p><b>  {</b><

86、;/p><p>  p1 = pt = ph; </p><p>  while(p1->next != NULL)</p><p><b>  {</b></p><p><b>  p2 = p1;</b></p><p>  p1 = p1->next;&l

87、t;/p><p>  if(pt->aver > p1->aver)</p><p><b>  {</b></p><p>  pb = p2;/*pb指向最小平均值的元素前面的一個(gè)元素*/</p><p>  pt = p1;/*pt指向最小平均值的元素*/</p><p>&l

88、t;b>  }</b></p><p><b>  }</b></p><p>  if(pt == ph)</p><p><b>  {</b></p><p>  ph = ph->next;</p><p><b>  }</b

89、></p><p><b>  else</b></p><p><b>  {</b></p><p>  pb->next = pt->next; //從表中刪除元素</p><p><b>  }</b></p><p>  

90、head = pt;</p><p>  pt->next = pa;</p><p><b>  pa = pt;</b></p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b>

91、;</p><p>  void Save(struct student *head)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  struct student *p;</p><p><b>

92、  p = head;</b></p><p>  if((fp = fopen("stulist", "wb")) == NULL)</p><p><b>  {</b></p><p>  printf("Cant open file\n");</p>

93、<p><b>  }</b></p><p>  while(p != NULL)</p><p><b>  {</b></p><p>  if((fwrite(p, LEN, 1, fp)) != 1)</p><p>  printf("File write error

94、\n");</p><p>  p = p->next;</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void Load(struct student *hea

95、d)</p><p><b>  {</b></p><p>  struct student *p;</p><p><b>  FILE *fp;</b></p><p><b>  int i;</b></p><p><b>  p =

96、 head;</b></p><p>  fp = fopen("stulist", "rb");</p><p>  printf("\nNow,These %d record are\n", n);</p><p>  while(p != NULL)</p><p>

97、;<b>  {</b></p><p>  fread(p, LEN, 1, fp);</p><p>  printf("%-5d%-6s", p->num, p->name);</p><p>  for(i = 0; i < M; i++)</p><p>  printf(

98、"%-9d", p->score[i]);</p><p>  printf("%-5.1f\n", p->aver);</p><p>  p = p->next;</p><p><b>  }</b></p><p>  fclose(fp);</p&

99、gt;<p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  struct student *stu;</p><p>  unsigned num;</p><p><b&g

100、t;  char key;</b></p><p>  stu = CreatTable();</p><p>  #ifdef TC3</p><p>  clrscr(); // TC中的清屏操作要包含#include<conio.h></p><p><b>  #else<

101、/b></p><p>  system("cls"); //VC中的清屏操作要包含#include<stdlib.h></p><p><b>  #endif</b></p><p><b>  Help();</b></p><p>  prin

102、tf("Plese select your want:\n");</p><p>  while((key = getche()) != 'q' && key != 'Q' && key != 27)</p><p><b>  {</b></p><p>  

103、puts(" ");</p><p>  switch(key)</p><p><b>  {</b></p><p>  case 'l' : case 'L' :</p><p>  PrintTable(stu);</p><p><

104、;b>  break;</b></p><p>  case 'd' : case 'D' :</p><p>  printf("Please input the number you want delete:");</p><p>  scanf("%d", &nu

105、m);</p><p>  stu = DeleteTable(stu, num);</p><p><b>  break;</b></p><p>  case 'a' : case 'A' :</p><p>  AppendToTable(stu);</p><

106、p><b>  break;</b></p><p>  case 'i' : case 'I':</p><p>  stu = InsertToTable(stu);</p><p><b>  break;</b></p><p>  case '

107、s' : case 'S' :</p><p>  stu = SortTable(stu);</p><p>  puts("Sort complished! Please use command L to list.");</p><p><b>  break;</b></p>&

108、lt;p>  case 'v' : case 'V' :</p><p>  Save(stu);</p><p><b>  break;</b></p><p>  case 'o' : case 'O' :</p><p>  Load(stu)

109、;</p><p><b>  break;</b></p><p>  case 'c' : case 'C' :</p><p>  #ifdef TC3</p><p>  clrscr(); // TC中的清屏操作要包含#include<conio.h&

110、gt;</p><p><b>  #else</b></p><p>  system("cls"); //VC中的清屏操作要包含#include<stdlib.h></p><p><b>  #endif</b></p><p><b>  

111、break;</b></p><p>  case 'h' : case 'H' :</p><p><b>  Help();</b></p><p><b>  break;</b></p><p>  default : puts("Err

112、or command!");</p><p><b>  }</b></p><p>  printf("\n The key you input is:%c ",key);</p><p><b>  }</b></p><p><b>  }</b&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論