




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)的內(nèi)容1)信息維護(hù):要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息2)信息查詢:要求:查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按學(xué)號(hào)查詢3)成績(jī)統(tǒng)計(jì):要求:A輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如60—70),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況。4)排序:能對(duì)用戶指定的任意課程名,按成績(jī)升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果)(使用多種方法排序者,加分)二)其它要求:(1)只能使用C/C++語(yǔ)言,源程序要有適當(dāng)?shù)淖⑨專钩绦蛉菀组喿x(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)學(xué)生可自動(dòng)增加新功能模塊(視情況可另外加分)(4)寫(xiě)出課程設(shè)計(jì)報(bào)告,具體要求見(jiàn)相關(guān)說(shuō)明文檔二、課程設(shè)計(jì)的要求與數(shù)據(jù)1、進(jìn)一步掌握和利用C語(yǔ)言進(jìn)行程設(shè)計(jì)的能力;2、進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法;3、初步掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;4、學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;5、學(xué)會(huì)利用流程圖或N-S圖表示算法;6、掌握書(shū)寫(xiě)程序設(shè)計(jì)開(kāi)發(fā)文檔的能力。三、課程設(shè)計(jì)應(yīng)完成的工作1、編寫(xiě)完成相應(yīng)題目的程序;2、編寫(xiě)課程設(shè)計(jì)報(bào)告,課程設(shè)計(jì)報(bào)告的內(nèi)容應(yīng)包括以下6個(gè)部分:1)需求分析:包括設(shè)計(jì)題目、設(shè)計(jì)要求以及系統(tǒng)功能需求分析;2)總體設(shè)計(jì):包括系統(tǒng)總體設(shè)計(jì)框架和系統(tǒng)功能模塊圖;3)詳細(xì)設(shè)計(jì):包括主要功能模塊的算法設(shè)計(jì)思路以及對(duì)應(yīng)的工作流程圖;4)調(diào)試分析過(guò)程描述:包括測(cè)試數(shù)據(jù)、測(cè)試輸出結(jié)果,以及對(duì)程序調(diào)試過(guò)程中存在問(wèn)題的思考(列出主要問(wèn)題的出錯(cuò)現(xiàn)象、出錯(cuò)原因、解決方法及效果等,適當(dāng)?shù)陌Y(jié)果截圖);5)總結(jié):課程設(shè)計(jì)完成了哪些功能,有沒(méi)有什么擴(kuò)展功能還有哪些地方需要改進(jìn)課程設(shè)計(jì)過(guò)程中的學(xué)習(xí)體會(huì)與收獲、對(duì)本次課程設(shè)計(jì)的認(rèn)識(shí)以及自己的建議等內(nèi)容;6)附錄:主要源程序代碼,含必要的注釋。3、答辯:在實(shí)驗(yàn)室建立程序運(yùn)行的環(huán)境,并在指導(dǎo)教師的監(jiān)督下,獨(dú)立解決問(wèn)題、運(yùn)行程序和回答教師提出的問(wèn)題。目錄TOC\o"1-5"\h\z\o"CurrentDocument"1設(shè)計(jì)目的與要求P4\o"CurrentDocument"2總體設(shè)計(jì)P4\o"CurrentDocument"3詳細(xì)設(shè)計(jì)P5\o"CurrentDocument"功能模塊設(shè)計(jì)P53.1.1XX功能模塊(可選)P5YY功能模塊(可選)P6ZZ功能模塊(可選)P7數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)P84調(diào)試分析P9結(jié)構(gòu)體P9鏈表P115遇到的問(wèn)題及解決方法分析P12\o"CurrentDocument"6總結(jié)P137源文件P13鏈表P13結(jié)構(gòu)體P281、目的與要求一目的:編制一程序?qū)崿F(xiàn)對(duì)學(xué)生成績(jī)的管理,讓自己既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐,將課本上的理論知識(shí)和實(shí)際應(yīng)用問(wèn)題進(jìn)行有機(jī)結(jié)合,鍛煉自己分析、解決實(shí)際問(wèn)題的能力,提高自身項(xiàng)目開(kāi)發(fā)及程序調(diào)試能力。二要求:1、整個(gè)系統(tǒng)均用C語(yǔ)言實(shí)現(xiàn);2、利用指針、結(jié)構(gòu)體、鏈表來(lái)實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、系統(tǒng)具有輸入、顯示、查詢(查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按學(xué)號(hào)查詢)、刪除、排序、插入,保存、讀取基本功能;4、系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來(lái)實(shí)現(xiàn);5、學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息;6、可以輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如60--70),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況;7、能對(duì)用戶指定的任意課程名,按成績(jī)升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果;8、可自動(dòng)增加新功能模塊;9、可以將學(xué)生信息從文件中讀取出來(lái)。2總體設(shè)計(jì)1、主函數(shù)main()利用if-else,While循環(huán)語(yǔ)句和switch()實(shí)現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來(lái)調(diào)用相應(yīng)的函數(shù)。2、菜單選擇函數(shù)voidmenu();這是一個(gè)無(wú)參函數(shù),主要實(shí)現(xiàn)“功能選擇”的界面,在這個(gè)界面里有顯示系統(tǒng)的13大功能,根據(jù)每個(gè)功能前面的序號(hào)進(jìn)行選擇。等執(zhí)行完每一個(gè)函數(shù)功能后,按任‘0'鍵回到主界面也要通過(guò)這個(gè)函數(shù)提示來(lái)實(shí)現(xiàn)!
3、自定義函數(shù)voidprintstart()、voidWrong()、voidNofind()、voidprintc()、voidprinte(Node*p)用voidWrong()來(lái)提示輸入錯(cuò)誤,用voidNofind()提示沒(méi)有找到學(xué)生資料,用voidprintc()來(lái)輸出中文,用voidprinte(Node*p)來(lái)輸出中文。3詳細(xì)設(shè)計(jì)功能模塊設(shè)計(jì)3.1.1排序數(shù)學(xué)成績(jī)功能模塊
函數(shù)voidMaths(LinkI)該函數(shù)用于對(duì)數(shù)學(xué)成績(jī)進(jìn)行降序,丨l=(Link)malloc(sizeof(Node))用于做新的鏈表連接,如果原鏈表為空的話,返回;不為空的話,p=l->next;建立接點(diǎn)用于保存信息,對(duì)指定鏈表地址進(jìn)行排序。流程圖如圖所示:Linkllll=(Link)malloc(sizeof(Node))用于做新的連表^\|->next二二NULL沒(méi)有資料可以排序returnP=l->nextwhile(p)s=(Node*)malloc(sizeof(Node))rr=llwhile(rr->next!二NULL&&rr->next->>=p->rr->next二ss->next二rr->next;rr->next二sP=P->nextl->next=ll->next(排序完成)3.1.2顯示學(xué)生資料功能模塊函數(shù)voidDisp(Linkl)該函數(shù)負(fù)責(zé)顯示學(xué)生資料,這是一個(gè)不返回值函數(shù)。算法:先將P結(jié)點(diǎn)的指針指向第一個(gè)結(jié)點(diǎn),將P結(jié)點(diǎn)(即第一個(gè)結(jié)點(diǎn))的數(shù)據(jù)輸出。然后再將P結(jié)點(diǎn)的指針指向P指針的的指針(即下一結(jié)點(diǎn)),將P結(jié)點(diǎn)(即第一結(jié)點(diǎn))的數(shù)據(jù)輸出。重復(fù)執(zhí)行此步聚直到P指針指向NULL為止。流程圖如圖所示:
提示沒(méi)有P指向下一結(jié)點(diǎn)p=p->next資料可以輸出P指向的結(jié)點(diǎn),即學(xué)生信息顯示returnP指向下一結(jié)點(diǎn)p二p->next3.1.3刪除資料功能模塊函數(shù)voidDel(LinkI)該函數(shù)用于有選擇地刪除學(xué)生資料,如果原來(lái)的鏈表為空的話,會(huì)返回;不為空的話,選擇用按哪種類型刪除,如果按學(xué)號(hào)刪除,就輸入學(xué)號(hào),后判斷是否取得地址,取得就執(zhí)行刪除;按名字刪除就輸入名字,運(yùn)行同學(xué)號(hào)一樣。流程圖如圖所示:數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(可選)一個(gè)結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個(gè)學(xué)生的學(xué)號(hào)、姓名、成績(jī)等數(shù)據(jù))。一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段起始地址??梢栽O(shè)一個(gè)指針變量,用來(lái)指向一結(jié)構(gòu)體變量,此時(shí)指針變量的值是結(jié)構(gòu)體的起始地址。指針量變也可以用來(lái)指向一結(jié)構(gòu)體數(shù)組中的元素。structstudent{charnum[10];/*學(xué)號(hào)*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charneartime[10];/*最近更新時(shí)間*/};typedefstructnode{structstudentdata;structnode*next;}Node,*Link;6總結(jié)經(jīng)過(guò)一個(gè)多星期的C語(yǔ)言課程設(shè)計(jì),感覺(jué)自己收獲不少!首先是:要達(dá)到這樣的功能,使用鏈表相當(dāng)方便,但不容易理解,所以在這方面我很了很多的時(shí)間看課本,使C語(yǔ)言的知識(shí)強(qiáng)化了不少。其次,在做課程設(shè)計(jì)的過(guò)程中,發(fā)現(xiàn)了平時(shí)很多沒(méi)有注意到的問(wèn)題,例如:返回值函數(shù)和不返回值函數(shù)兩者在主函數(shù)中的調(diào)用是不同的…………更重要的是,這次課程設(shè)計(jì)雖然花了我不少時(shí)間,但正是這些時(shí)間,讓我見(jiàn)識(shí)到了C語(yǔ)言的重要性。這個(gè)學(xué)生成績(jī)管理系統(tǒng)都是在自己知識(shí)范圍內(nèi)完成的,所以界面清晰簡(jiǎn)單,可能不是很好看,但絕對(duì)實(shí)用!從這里我也得到一個(gè)體會(huì),做一個(gè)程序,或者開(kāi)發(fā)一個(gè)軟件,應(yīng)該著重從它的后臺(tái)制作入手,不能做出一個(gè)中看不中用的程序或者軟件。相信這次的課程設(shè)計(jì)使我的C語(yǔ)言知識(shí)扎實(shí)了很多。由于這是第一次進(jìn)行設(shè)計(jì),寫(xiě)文檔,難免會(huì)寫(xiě)得不好!7源程序7.1鏈表#include""#include""#include""intshoudsave=0;/**/structstudent{charnum[10];/*學(xué)號(hào)*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charneartime[10];/*最近更新時(shí)間*/};typedefstructnode{structstudentdata;structnode*next;}Node,*Link;voidmenu(){“、*********");printf("\t1登記學(xué)生資料\t\t\t\t\t2刪除學(xué)生資料\n");printf("\t3查詢學(xué)生資料\t\t\t\t\t4修改學(xué)生資料\n");printf("\t5顯示學(xué)生資料\t\t\t\t\t6統(tǒng)計(jì)學(xué)生資料\n");printf("\t7排序語(yǔ)文成績(jī)\t\t\t\t\t8排序數(shù)學(xué)成績(jī)\n");printf("\t9排序英語(yǔ)成績(jī)\t\t\t\t\t10選出分段分?jǐn)?shù)\n");printf("\t11保存學(xué)生資料\t\t\t\t\t12幫助信息\t\t\n");printf("\tO退出系統(tǒng)\t\t\t\t\t\t\t\n");slzslzslzslzsL*sL*sL*sL*sL*\II、*********\n");}voidprintstart(){printf("\n");}voidWrong(){printf("\n二二二=>提示:輸入錯(cuò)誤!\n");}voidNofind(){printf("\n二二二二二〉提示:沒(méi)有找到該學(xué)生!\n");}voidprintc()/*本函數(shù)用于輸出中文*/{printf(”學(xué)號(hào)\t姓名\t性別語(yǔ)文成績(jī)數(shù)學(xué)成績(jī)英語(yǔ)成績(jī)總分平均分\n");}voidprinte(Node*p)/*本函數(shù)用于輸出英文*/{printf("%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->,p->,p->,p->,p->,p->,p->,p->;}Node*Locate(Linkl,charfindmess[],charnameornum[])/*該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針*/{Node*r;if(strcmp(nameornum,"num")==0)/*按學(xué)號(hào)查詢*/{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)returnr;r=r->next;}}elseif(strcmp(nameornum,"name")==0)/*按姓名查詢*/{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)returnr;r=r->next;}}return0;}voidAdd(Linkl)/*增加學(xué)生*/{Node*p,*r,*s;charnum[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;/*將指針置于最末尾*/while(1){printf("請(qǐng)你輸入學(xué)號(hào)(以'O'返回上一級(jí)菜單:)");scanf("%s",num);if(strcmp(num,"O")==O)break;while(s){if(strcmp(s->,num)==O){printf("=====>提示:學(xué)號(hào)為'%s'的學(xué)生已經(jīng)存在,若要修改請(qǐng)你選擇'4修改'!\n",num);printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node*)malloc(sizeof(Node));strcpy(p->,num);printf(”請(qǐng)你輸入姓名:");scanf("%s",p->;getchar();printf("請(qǐng)你輸入性別:");scanf("%s",p->;getchar();printf(”請(qǐng)你輸入語(yǔ)文成績(jī):");scanf("%d",&p->;getchar();printf(”請(qǐng)你輸入數(shù)學(xué)成績(jī):");scanf("%d",&p->;getchar();printf("請(qǐng)你輸入英語(yǔ)成績(jī):");scanf("%d",&p->;getchar();p->=p->+p->+p->;p->=p->/3;/*信息輸入已經(jīng)完成*/p->next=NULL;r->next=p;r=p;shoudsave=1;}}voidQur(Linkl)/*查詢學(xué)生*/{intsel;charfindmess[20];Node*p;if(!l->next){printf("\n二二二二二〉提示:沒(méi)有資料可以查詢!\n");return;}printf("\n====>1按學(xué)號(hào)查找\n==二二二>2按姓名查找\n");scanf("%d",&sel);if(sel==1)/*學(xué)號(hào)*/{printf(”請(qǐng)你輸入要查找的學(xué)號(hào):");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("\t\t\t\t查找結(jié)果\n");printstart();printc();printe(p);printstart();}elseNofind();}elseif(sel==2)/*姓名*/{printf("請(qǐng)你輸入要查找的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){printf("\t\t\t\t查找結(jié)果\n");printstart();printc();printe(p);printstart();}elseNofind();}elseWrong();voidDel(Linkl)/*刪除*/{intsel;Node*p,*r;charfindmess[20];if(!l->next){printf("\n二二二二二〉提示:沒(méi)有資料可以刪除!\n");return;}printf("\n二二二二二>1按學(xué)號(hào)刪除\n二二二二二>2按姓名刪除\n");scanf("%d",&sel);if(sel==1){printf("請(qǐng)你輸入要?jiǎng)h除的學(xué)號(hào):");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n二二二==>提示:該學(xué)生已經(jīng)成功刪除!\n");shoudsave=1;}elseNofind();}elseif(sel==2){printf("請(qǐng)你輸入要?jiǎng)h除的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n二二二=>提示:該學(xué)生已經(jīng)成功刪除!\n");shoudsave=1;}elseNofind();}elseWrong();}voidModify(Linkl){Node*p;charfindmess[20];if(!l->next){printf("\n二二二二二〉提示:沒(méi)有資料可以修改!\n");return;}printf(”請(qǐng)你輸入要修改的學(xué)生學(xué)號(hào):");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("請(qǐng)你輸入新學(xué)號(hào)(原來(lái)是%s):",p->;scanf("%s",p->;printf("請(qǐng)你輸入新姓名(原來(lái)是%s):",p->;scanf("%s",p->;getchar();printf("請(qǐng)你輸入新性別(原來(lái)是%s):",p->;scanf("%s",p->;printf(”請(qǐng)你輸入新的語(yǔ)文成績(jī)(原來(lái)是%d分):",p->;scanf("%d",&p->;getchar();printf(”請(qǐng)你輸入新的數(shù)學(xué)成績(jī)(原來(lái)是%d分):",p->;scanf("%d",&p->;getchar();printf(”請(qǐng)你輸入新的英語(yǔ)成績(jī)(原來(lái)是%d分):",p->;scanf("%d",&p->;p->=p->+p->+p->;p->=p->3;printf("\n二二二二二〉提示:資料修改成功!\n");shoudsave=1;}elseNofind();}voidDisp(Linkl){intcount=0;Node*p;p=l->next;if(!p){printf("\n二二=二>提示:沒(méi)有資料可以顯示!\n");return;}printf("\t\t\t\t顯示結(jié)果\n");printstart();printc();printf("\n");while(p){printe(p);p=p->next;}printstart();printf("\n");}voidTongji(Linkl){Node*pm,*pe,*pc,*pt,*pa;/*用于指向分?jǐn)?shù)最高的接點(diǎn)*/Node*r=l->next;if(!r){printf("\n二二二二二〉提示:沒(méi)有資料可以統(tǒng)計(jì)!\n");return;}pm=pe=pc=pt=pa=r;while(r!=NULL){if(r->>=pc->pc=r;if(r->>=pm->pm=r;if(r->>=pe->pe=r;if(r->>=pt->pt=r;if(r->>=pa->pa=r;r=r->next;}printf("統(tǒng)計(jì)結(jié)\n");printf("總分最高者:\t%s%d分\n",pt->,pt->;printf("平均分最高者:\t%s%d分\n",pa->,pa->;printf("英語(yǔ)最高者:\t%s%d分\n",pe->,pe->;printf("數(shù)學(xué)最高者:\t%s%d分\n",pm->,pm->;printf("語(yǔ)文最高者:\t%s%d分\n",pc->,pc->;printstart();}voidChinese(Linkl){Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node));/*用于做新的連表*/ll->next=NULL;if(l->next==NULL){printf("\n二二二二二〉提示:沒(méi)有資料可以排序!\n");return;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node));/*新建接點(diǎn)用于保存信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL&&rr->next->>=p->rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n二二二=>提示:排序已經(jīng)完成!\n");}voidMaths(Linkl)/*對(duì)數(shù)學(xué)排序*/{Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node));/*用于做新的連表*/ll->next=NULL;if(l->next==NULL){printf("\n二二二二二〉提示:沒(méi)有資料可以排序!\n");return;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node));/*新建接點(diǎn)用于保存信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL&&rr->next->>=p->rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n二二二=>提示:排序已經(jīng)完成!\n");}voidEnglish(Linkl)/*對(duì)英語(yǔ)排序*/{Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node));/*用于做新的連表*/ll->next=NULL;if(l->next==NULL){printf("\n二二二二二〉提示:沒(méi)有資料可以排序!\n");return;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node));/*新建接點(diǎn)用于保存信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL&&rr->next->>=p->rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n二二二=>提示:排序已經(jīng)完成!\n");}voidselect(Linkl){inti;intj,k;Node*pc=l;文2.數(shù)學(xué)3.英語(yǔ)");scanf("%d",&i);if(i==1){printf("請(qǐng)輸入篩選分?jǐn)?shù)的上限:");scanf("%d",&j);printf("請(qǐng)輸入篩選分?jǐn)?shù)的下限:");scanf("%d",&k);printf(篩選結(jié)printf(\n");語(yǔ)文成績(jī)數(shù)學(xué)成績(jī)英語(yǔ)成績(jī)printf(”學(xué)號(hào)\t姓名\t性別語(yǔ)文成績(jī)數(shù)學(xué)成績(jī)英語(yǔ)成績(jī)分平均分\n");printstart();while(r!=NULL)if(k<=(r->&&(r-><j)printe(r);r=r->next;}}elseif(i==2){printf("請(qǐng)輸入篩選分?jǐn)?shù)的上限:");scanf("%d",&j);printf("請(qǐng)輸入篩選分?jǐn)?shù)的下限:");scanf("%d",&k);printf("篩選結(jié)\n");printf(”學(xué)號(hào)\t姓名\t性別語(yǔ)文成績(jī)數(shù)學(xué)成績(jī)英語(yǔ)成績(jī)分平均分\n");printstart();while(r!=NULL){if(k<=(r->&&(r-><j)printe(r);r=r->next;}}elseif(i==3){printf("請(qǐng)輸入篩選分?jǐn)?shù)的上限:");scanf("%d",&j);printf("請(qǐng)輸入篩選分?jǐn)?shù)的下限:");scanf("%d",&k);printf("篩選結(jié)\n");printf(”學(xué)號(hào)\t姓名\t性別語(yǔ)文成績(jī)數(shù)學(xué)成績(jī)英語(yǔ)成績(jī)分平均分\n");printstart();while(r!=NULL){if(k<=(r->&&(r-><j)printe(r);r=r->next;}}elseWrong();voidSave(Linkl){FILE*fp;Node*p;intflag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){printf("\n二二二二二〉提示:重新打開(kāi)文件時(shí)發(fā)生錯(cuò)誤!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){,count);printf("\n二二二=>提示:文件保存成功?(有%4條記錄已經(jīng)保存.,count);shoudsave=0;}fclose(fp);}voidmain(){Link丨;/*連表*/FILE*fp;/*文件指針*/intsei;
charch;charjian;intcount=0;Node*p,*r;printf("\t\t\t\t學(xué)生成績(jī)管理系統(tǒng)\n\t\t\t06自動(dòng)化2班蔡曉慶49\t\t\t\t\n");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("C:\\student","wb");loop:menu();printf("請(qǐng)你選擇操作:");scanf("%d",&sel);if(sel==0){if(shoudsave==1){getchar();printf("\n二二二=>提示:資料已經(jīng)改動(dòng),是否將改動(dòng)保存到文件中(y/n)\n");scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(l);}printf("\n二二二=>提示:你已經(jīng)退出系統(tǒng),再見(jiàn)!\n");return;}switch(sel){casecasecasecasecasecasecase1234567Add(l);gotoloop;break;casecasecasecasecasecasecase1234567Add(l);gotoloop;break;/*增加學(xué)生*/Del(l);gotoloop;break;/*刪除學(xué)生*/Qur(l);gotoloop;break;/*查詢學(xué)生*/Modify(l);gotoloop;break;/*修改學(xué)生*/Disp(l);gotoloop;break;/*顯示學(xué)生*/Tongji(l);gotoChinese(l);gotocasecasecaseloop;break;/*統(tǒng)計(jì)學(xué)生*/loop;break;/*吾文排序*/loop;break;/*數(shù)學(xué)排序*/loop;break;/*英語(yǔ)排序*/loop;break;/*選擇分段分?jǐn)?shù)*/case8:Maths(l);goto9:English(l);goto10:select(l);goto11:Save(l);gotoloop;break;/*保存學(xué)生*/casecase12:printf("\t\t\t二二二二二二二二二二幫助信息二二二二二二二二二二\n");gotoloop;break;default:Wrong();getchar();break;7.2結(jié)構(gòu)體#include<>#include<>#include<>structstudent{charclass_0[20];charnum[20];charname[20];floatmath;floatc_prog;floateng;floatpolity;floatsport;floatave;}stu[1000];charj,h;/*函數(shù)聲明*/voidluru();voidchaxun();voidcharu();voidtongji();voidxiugai();voidshanchu();voidpaixu();voidtuichu();FILE*fp;錄入學(xué)生成績(jī)\n");\n");printf("\t\t2.排序?qū)W生成績(jī)\n");printf("\t\t3.printf("\t\t4.統(tǒng)計(jì)輸出成績(jī)查詢學(xué)生成績(jī)\n");\n");printf("\t\t5.printf("\t\t6.插入學(xué)生成績(jī)修改學(xué)生成績(jī)\n");\n");printf("\t\t7.printf("\t\t8.刪除學(xué)生成績(jī)退出管理系統(tǒng)\n");\n");intn;printf("請(qǐng)選擇功能\n\n");scanf("%d",&n);system("cls");switch(n){case1:printf("\t\t錄入學(xué)生成績(jī)\n\n");luru();gotoloop;case2:printf("\t\t排序?qū)W生成績(jī)\n\n");paixu();gotoloop;case3:printf("\t\t統(tǒng)計(jì)輸出學(xué)生成績(jī)\n\n");tongji();gotoloop;case4:printf("\t\t查詢學(xué)生成績(jī)\n\n");chaxun();gotoloop;case5:printf("\t\t插入學(xué)生成績(jī)\n\n");charu();gotoloop;case6:printf("\t\t修改學(xué)生成績(jī)\n\n");xiugai();gotoloop;case7:printf("\t\t刪除學(xué)生成績(jī)\n\n");shanchu();gotoloop;case8:printf("\t\t程序退出。\t謝謝使用!\n\n");exit(0);default:printf("您的輸入有誤,請(qǐng)重試!\n\n");fflush(stdin);gotoloop;}printf("\n按任意鍵返回");}voidluru(){inti,m;FILE*fp;printf("請(qǐng)輸入學(xué)生人數(shù):");scanf("%d",&m);if(m>1000||m<0){printf("\n錯(cuò)誤\n\n");return;}elsefor(i=0;i<m;i++){printf("\n請(qǐng)輸入第%4位學(xué)生的成績(jī):\n",i+1);printf("班級(jí):");scanf("%s",stu[i].class_0);printf("學(xué)號(hào):");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("高等數(shù)學(xué)成績(jī):");scanf("%f",&stu[i].math);printf("C程序設(shè)計(jì)成績(jī):");scanf("%f",&stu[i].c_prog);printf("大學(xué)英語(yǔ)成績(jī):");scanf("%f",&stu[i].eng);printf("馬克思主義政治經(jīng)濟(jì)學(xué)成績(jī):");scanf("%f",&stu[i].polity);printf("大學(xué)體育成績(jī):");scanf("%f",&stu[i].sport);stu[i].ave=(stu[i].c_prog+stu[i].eng+stu[i].math+stu[i].polity+stu[i].sport)/5;}fp=fopen("","w");for(i=0;i<m;i++)if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("\n打開(kāi)文件失敗\n\n\n");fclose(fp);fp=fopen("","r");printf("\n已錄入的學(xué)生成績(jī):\n");printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)C程序設(shè)計(jì)大學(xué)英語(yǔ)馬克思主義經(jīng)濟(jì)學(xué)大學(xué)體育平均分\n");for(i=0;i<m;i++){fread(&stu[i],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%%%%%%\n",stu[i].class_0,stu[i].num,stu[i].name,stu[i].math,stu[i].c_prog,stu[i].eng,stu[i].polity,stu[i].sport,stu[i].ave);}fclose(fp);getchar();}voidpaixu(){loop:printf("\t二二二二二二二二二二二二二二二二二1,平均成績(jī)排序二二===========\n");printf("\t===========2,高數(shù)成績(jī)排序二二二二二二二二=====\n");printf("\t二二二二二二二二=========3,C語(yǔ)言成績(jī)排序二二二二二二二=========\n");printf("\t=================4,英語(yǔ)成績(jī)排序二二二二二二二二=========\n");printf("\t二二二二二二二二======5,馬克思經(jīng)濟(jì)學(xué)成績(jī)排序二二二二=====\n");printf("\t二二二二二二二二=========6,大學(xué)體育成績(jī)排序二二二二二二=======\n");printf("\t=================7,學(xué)號(hào)排序二====================\n");printf("請(qǐng)輸入你的選擇\n");intt;scanf("%d",&t);if(t=1){FILE*fp;intx,y,z;structstudenttemp;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].ave<stu[y].ave){temp=stu[x];stu[x]=stu[y];stu[y]=temp;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)C程序設(shè)計(jì)大學(xué)英語(yǔ)馬克思主義經(jīng)濟(jì)學(xué)大學(xué)體育平均分\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%%%%%%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].math,stu[x].c_prog,stu[x].eng,stu[x].polity,stu[x].sport,stu[x].ave);}printf("\n");getchar();fclose(fp);return;}elseif(t=2){FILE*fp;intx,y,z;structstudentgaoshu;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].math<stu[y].math){gaoshu=stu[x];stu[x]=stu[y];stu[y]=gaoshu;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].math);}printf("\n");getchar();fclose(fp);return;}elseif(t=3){FILE*fp;intx,y,z;structstudentyuyan;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].c_prog<stu[y].c_prog){yuyan=stu[x];stu[x]=stu[y];stu[y]=yuyan;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名C語(yǔ)言\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].c_prog);}printf("\n");getchar();fclose(fp);return;}elseif(t=4){FILE*fp;intx,y,z;structstudentying;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].eng<stu[y].eng){ying=stu[x];stu[x]=stu[y];stu[y]=ying;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名英語(yǔ)\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].eng);}printf("\n");getchar();fclose(fp);return;}elseif(t=5){FILE*fp;intx,y,z;structstudentmakesi;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].polity<stu[y].polity){makesi=stu[x];stu[x]=stu[y];stu[y]=makesi;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名馬克思經(jīng)濟(jì)學(xué)\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].polity);}printf("\n");getchar();fclose(fp);return;}elseif(t=6){FILE*fp;intx,y,z;structstudenttiyu;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].sport<stu[y].sport){tiyu=stu[x];stu[x]=stu[y];stu[y]=tiyu;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名大學(xué)體育\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].sport);}printf("\n");getchar();fclose(fp);return;}else{FILE*fp;intx,y,z;structstudentxuehao;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++){}printf("\n");fclose(fp);z=x;for(x=0;x<z;x++)for(y=x+1;y<z;y++)if(stu[x].num<stu[y].num){xuehao=stu[x];stu[x]=stu[y];stu[y]=xuehao;}printf("\n排序后的數(shù)據(jù):\n");printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)C程序設(shè)計(jì)大學(xué)英語(yǔ)馬克思主義經(jīng)濟(jì)學(xué)大學(xué)體育平均分\n");fp=fopen("","w");for(x=0;x<z;x++){fwrite(&stu[x],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%%%%%%\n",stu[x].class_0,stu[x].num,stu[x].name,stu[x].math,stu[x].c_prog,stu[x].eng,stu[x].polity,stu[x].sport,stu[x].ave);}printf("\n");getchar();fclose(fp);return;}}voidtongji(){FILE*fp;inti,d,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if((fp=fopen("","rb"))==NULL){printf(”文件打開(kāi)失敗.\n");exit(1);}for(i=0;fread(&stu[i],sizeof(structstudent),1,fp)!=0;i++){};d=i;rewind(fp);for(i=0;i<d;i++){if(0<=stu[i].ave&&stu[i].ave<10)j=j+1;elseif(10<=stu[i].ave&&stu[i].ave<20)k=k+1;elseif(20<=stu[i].ave&&stu[i].ave<30)l=l+1;elseif(30<=stu[i].ave&&stu[i].ave<40)m=m+1;elseif(40<=stu[i].ave&&stu[i].ave<50)n=n+1;elseif(50<=stu[i].ave&&stu[i].ave<60)o=o+1;elseif(60<=stu[i].ave&&stu[i].ave<70)p=p+1;elseif(70<=stu[i].ave&&stu[i].ave<80)q=q+1;elseif(80<=stu[i].ave&&stu[i].ave<90)r=r+1;elseif(90<=stu[i].ave&&stu[i].ave<100)s=s+1;}printf("0-10:");printf("\t%d\n",j);printf("10-20:");printf("\t%d\n",k);printf("20-30:");printf("\t%d\n",l);printf("30-40:");printf("\t%d\n",m);printf("40-50:");printf("\t%d\n",n);printf("50-60:");printf("\t%d\n",o);printf("60-70:");printf("\t%d\n",p);printf("70-80:");printf("\t%d\n",q);printf("80-90:");printf("\t%d\n",r);printf("90-100:");printf("\t%d\n",s);fclose(fp);getchar();return;}voidchaxun(){intg1,k1,a1;FILE*fp;charnum1[10];if((fp=fopen("","rb"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(g1=0;fread(&stu[g1],sizeof(structstudent),1,fp)!=0;g1++){};fclose(fp);k1=g1;printf("\n請(qǐng)輸入要查詢的學(xué)生學(xué)號(hào):\n");scanf("%s",num1);for(a1=1,g1=0;a1&&g1<k1;g1++){if(strcmp(num1,stu[g1].num)==0)a1=0;}if(!a1){printf("\n你要查詢的學(xué)生成績(jī):\n");printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)C程序設(shè)計(jì)大學(xué)英語(yǔ)馬克思主義經(jīng)濟(jì)學(xué)大學(xué)體育平均分\n");printf("\n%-6s%-6s%-6s%%%%%%\n",stu[g1-1].class_0,stu[g1-1].num,stu[g1-1].name,stu[g1-1].math,stu[g1-1].c_prog,stu[g1-1].eng,stu[g1-1].polity,stu[g1-1].sport,stu[g1-1].ave);}else{printf("\n沒(méi)有你要查詢的學(xué)生成績(jī):\n\n\n");return;}fclose(fp);getchar();}voidcharu(){FILE*fp;inti,e,n;structstudents;printf("請(qǐng)輸入需要插入的學(xué)生數(shù)據(jù)\n");printf("班級(jí):");scanf("%s",;printf("學(xué)號(hào):");scanf("%s",;printf("姓名:");scanf("%s",;printf("高等數(shù)學(xué)成績(jī):");scanf("%f",&;printf("C程序設(shè)計(jì)成績(jī):");scanf("%f",&;printf(”大學(xué)英語(yǔ)成績(jī):");scanf("%f",&;printf("馬克思主義政治經(jīng)濟(jì)學(xué)成績(jī):");scanf("%f",&;printf("大學(xué)體育成績(jī):");scanf("%f",&;=++++/5;if((fp=fopen("","r"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}for(e=0;fread(&stu[e],sizeof(structstudent),1,fp)!=0;e++){};n=e;printf("\n插入后的學(xué)生成績(jī):\n");fp二fopen("","w");fwrite(&s,sizeof(structstudent),1,fp);printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)C程序設(shè)計(jì)大學(xué)英語(yǔ)馬克思主義經(jīng)濟(jì)學(xué)大學(xué)體育平均分\n");printf("\n%-6s%-6s%-6s%%%%%%\n",,,,,,,,,Jfor(e=0;e<n;e++){fwrite(&stu[e],sizeof(structstudent),1,fp);printf("\n%-6s%-6s%-6s%%%%%%\n",stu[e].class_0,stu[e].num,stu[e].name,stu[e].math,stu[e].c_prog,stu[e].eng,stu[e].polity,stu[e].sport,stu[e].ave);}fclose(fp);getchar();}voidxiugai(){intg2,k2,a2;FILE*fp;structstudents1;charnum[10];if((fp=fopen("","rb"))==NULL){printf("\n無(wú)法打開(kāi)文件\n\n\n");return;}printf("\n學(xué)生成績(jī)列表:\n");printf("\n班級(jí)學(xué)號(hào)姓名高等數(shù)學(xué)C程序設(shè)計(jì)大學(xué)英語(yǔ)馬克思主義經(jīng)濟(jì)學(xué)大學(xué)體育平均分\n");for(g2=0;fread(&stu[g2],sizeof(structstudent),1,fp)!=0;g2++){printf("\n%-6s%-6s%-6s%%%%%%\n",stu[g2].class_0,stu[g2].num,stu[g2].name,stu[g2].math,stu[g2].c_prog,stu[g2].eng,stu[g2].polity,stu[g2].sport,stu[g2].ave);};fclose(fp);k2=g2;printf("\n請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):\n");scanf("%s",num);printf("\n請(qǐng)重新輸入學(xué)生信息:\n");printf("班級(jí):");scanf("%s",;printf("學(xué)號(hào):")
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)展長(zhǎng)期服務(wù)合同范例
- 農(nóng)莊房子出售合同范本
- 云南正規(guī)勞動(dòng)合同范例
- 與送菜公司合同范例
- 共享加盟合同范例
- 中標(biāo)政府采購(gòu)合同范本
- 傳媒公司會(huì)場(chǎng)服務(wù)合同范例
- 公司委托公司加工合同范本
- 債轉(zhuǎn)股借款合同范例
- 保安行業(yè)勞務(wù)合同范例
- 養(yǎng)老專題:養(yǎng)老理念
- 藝術(shù)概論P(yáng)PT全套完整教學(xué)課件
- 幼兒園園長(zhǎng)證考試真題匯編及答案(209題)
- 第三章農(nóng)業(yè)遙感技術(shù)與應(yīng)用課件
- 《蘇東坡傳》閱讀匯報(bào)
- 托福閱讀強(qiáng)化課講義版本
- 聚酰亞胺液晶高分子及液晶取向膜
- 怒江水電開(kāi)發(fā)的工程倫理案例分析
- 上海書(shū)法家協(xié)會(huì)書(shū)法級(jí)理論重點(diǎn)內(nèi)容總結(jié)
- 2023新疆中考數(shù)學(xué)試卷及答案解析
- 最全壽生債查詢表
評(píng)論
0/150
提交評(píng)論