版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)--c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)———學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)_學(xué)生成績(jī)管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)
- c語言課程設(shè)計(jì)--學(xué)生成績(jī)管理
- c語言課程設(shè)計(jì)--- 學(xué)生成績(jī)管理
評(píng)論
0/150
提交評(píng)論