C語(yǔ)言課程設(shè)計(jì)(成績(jī)管理系統(tǒng)).doc
《C語(yǔ)言課程設(shè)計(jì)(成績(jī)管理系統(tǒng)).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言課程設(shè)計(jì)(成績(jī)管理系統(tǒng)).doc(39頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
_一、 課程設(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ù)淖⑨?,使程序容易閱讀(2) 至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3) 學(xué)生可自動(dòng)增加新功能模塊(視情況可另外加分)(4)寫出課程設(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ū)寫程序設(shè)計(jì)開(kāi)發(fā)文檔的能力。三、課程設(shè)計(jì)應(yīng)完成的工作1、編寫完成相應(yīng)題目的程序;2、編寫課程設(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)題。目 錄1 設(shè)計(jì)目的與要求P42 總體設(shè)計(jì)P43 詳細(xì)設(shè)計(jì)P53.1功能模塊設(shè)計(jì)P53.1.1 XX功能模塊(可選) P53.1.2 YY功能模塊(可選) P63.1.3 ZZ功能模塊(可選)P73.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)P84調(diào)試分析 P9 4.1結(jié)構(gòu)體P9 4.2鏈表P115遇到的問(wèn)題及解決方法分析P126 總結(jié)P137源文件P13 7.1鏈表P13 7.2結(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ù)void menu();這是一個(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ù) void printstart()、void Wrong()、void Nofind()、void printc()、void printe(Node *p)用void Wrong()來(lái)提示輸入錯(cuò)誤,用void Nofind()提示沒(méi)有找到學(xué)生資料,用void printc()來(lái)輸出中文,用void printe(Node *p)來(lái)輸出中文。main() void Add(Link l) void Maths(Link l) void Qur(Link l) void English(Link l) void Del(Link l) void select(Link l) void Modify(Link l) void Save(Link l) void Disp(Link l) void menu() void Tongji(Link l) void printc() void Chinese(Link l) void printe(Node *p)3 詳細(xì)設(shè)計(jì)3.1功能模塊設(shè)計(jì)3.1.1 排序數(shù)學(xué)成績(jī)功能模塊函數(shù)void Maths(Link l)該函數(shù)用于對(duì)數(shù)學(xué)成績(jī)進(jìn)行降序,ll=(Link)malloc(sizeof(Node)用于做新的鏈表連接,如果原鏈表為空的話,返回;不為空的話,p=l-next;建立接點(diǎn)用于保存信息,對(duì)指定鏈表地址進(jìn)行排序。流程圖如圖所示:Link llll=(Link)malloc(sizeof(Node) 用于做新的連表 l-next=NULL是 否沒(méi)有資料可以 p=l-next排序 while(p)return s=(Node*)malloc(sizeof(Node) rr=ll while(rr-next!=NULL& rr-next-data.mgrade=p-data.mgrade) 是 rr-next=NULL 否 rr-next=s s-next=rr-next; rr-next=s p=p-next l-next=ll-next (排序完成)3.1.2 顯示學(xué)生資料功能模塊函數(shù)void Disp(Link l)該函數(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為止。流程圖如圖所示: 原來(lái)鏈表是否為空是 否提示沒(méi)有 p指向下一結(jié)點(diǎn)p=p-next資料可以 輸出p指向的結(jié)點(diǎn),即學(xué)生信息顯示 return p指向下一結(jié)點(diǎn)p=p-next3.1.3 刪除資料功能模塊函數(shù)void Del(Link l)該函數(shù)用于有選擇地刪除學(xué)生資料,如果原來(lái)的鏈表為空的話,會(huì)返回;不為空的話,選擇用按哪種類型刪除,如果按學(xué)號(hào)刪除,就輸入學(xué)號(hào),后判斷是否取得地址,取得就執(zhí)行刪除;按名字刪除就輸入名字,運(yùn)行同學(xué)號(hào)一樣。流程圖如圖所示: 原鏈表是否為空是 否沒(méi)有資料 1 按1學(xué)號(hào)還是2按名字? 2可以刪除 輸入你要?jiǎng)h除的學(xué)號(hào) 輸入你要?jiǎng)h除的名字 P是否取得輸入地址 P是否取得輸入地址 是 否 否 是Return r指向下一 Nofind() Nofind () r指向下一 結(jié)點(diǎn) 結(jié)點(diǎn) 執(zhí)行free(p) 執(zhí)行free(p)3.2數(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ù)組中的元素。struct student char num10;/* 學(xué)號(hào) */ char name20; char sex4; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime10;/* 最近更新時(shí)間 */ ; typedef struct node struct student data; struct node *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ì),寫文檔,難免會(huì)寫得不好!7 源程序7. 1鏈表#include stdio.h #include stdlib.h #include string.h int shoudsave=0; /* */ struct student char num10;/* 學(xué)號(hào) */ char name20; char sex4; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime10;/* 最近更新時(shí)間 */ ; typedef struct node struct student data; struct node *next; Node,*Link; void menu() printf(*); printf(t1登記學(xué)生資料ttttt2刪除學(xué)生資料n); printf(t3查詢學(xué)生資料ttttt4修改學(xué)生資料n); printf(t5顯示學(xué)生資料ttttt6統(tǒng)計(jì)學(xué)生資料n); printf(t7排序語(yǔ)文成績(jī)ttttt8排序數(shù)學(xué)成績(jī)n);printf(t9排序英語(yǔ)成績(jī)ttttt10選出分段分?jǐn)?shù)n);printf(t11保存學(xué)生資料ttttt12幫助信息ttn);printf(t0退出系統(tǒng)tttttttn);printf(*n); void printstart() printf(-n); void Wrong() printf(n=提示:輸入錯(cuò)誤!n); void Nofind() printf(n=提示:沒(méi)有找到該學(xué)生!n); void printc() /* 本函數(shù)用于輸出中文 */ printf(學(xué)號(hào)t 姓名t 性別 語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 總分 平均分n); void printe(Node *p)/* 本函數(shù)用于輸出英文 */ printf(%-12s%st%st%dt%dt%dt %dt %dn,p-data.num,p-data.name,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針 */ Node *r; if(strcmp(nameornum,num)=0) /* 按學(xué)號(hào)查詢 */ r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查詢 */ r=l-next; while(r!=NULL) if(strcmp(r-data.name,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加學(xué)生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 將指針置于最末尾 */ while(1) printf(請(qǐng)你輸入學(xué)號(hào)(以0返回上一級(jí)菜單:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0) 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-data.num,num); printf(請(qǐng)你輸入姓名:); scanf(%s,p-data.name); getchar(); printf(請(qǐng)你輸入性別:); scanf(%s,p-data.sex); getchar(); printf(請(qǐng)你輸入語(yǔ)文成績(jī):); scanf(%d,&p-data.cgrade); getchar(); printf(請(qǐng)你輸入數(shù)學(xué)成績(jī):); scanf(%d,&p-data.mgrade); getchar(); printf(請(qǐng)你輸入英語(yǔ)成績(jī):); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle / 3; /* 信息輸入已經(jīng)完成 */ p-next=NULL; r-next=p; r=p; shoudsave=1; void Qur(Link l) /* 查詢學(xué)生 */ int sel; char findmess20; 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(tttt查找結(jié)果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /* 姓名 */ printf(請(qǐng)你輸入要查找的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /* 刪除 */ int sel; Node *p,*r; char findmess20; 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; else Nofind(); else if(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; else Nofind(); else Wrong(); void Modify(Link l) Node *p; char findmess20; 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-data.num); scanf(%s,p-data.num); printf(請(qǐng)你輸入新姓名(原來(lái)是%s):,p-data.name); scanf(%s,p-data.name); getchar(); printf(請(qǐng)你輸入新性別(原來(lái)是%s):,p-data.sex); scanf(%s,p-data.sex); printf(請(qǐng)你輸入新的語(yǔ)文成績(jī)(原來(lái)是%d分):,p-data.cgrade); scanf(%d,&p-data.cgrade); getchar(); printf(請(qǐng)你輸入新的數(shù)學(xué)成績(jī)(原來(lái)是%d分):,p-data.mgrade); scanf(%d,&p-data.mgrade); getchar(); printf(請(qǐng)你輸入新的英語(yǔ)成績(jī)(原來(lái)是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle/3; printf(n=提示:資料修改成功!n); shoudsave=1; else Nofind(); void Disp(Link l) int count=0; Node *p; p=l-next; if(!p) printf(n=提示:沒(méi)有資料可以顯示!n); return; printf(tttt顯示結(jié)果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void Tongji(Link l) 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-data.cgrade=pc-data.cgrade) pc=r; if(r-data.mgrade=pm-data.mgrade) pm=r; if(r-data.egrade=pe-data.egrade) pe=r; if(r-data.totle=pt-data.totle) pt=r; if(r-data.ave=pa-data.ave) pa=r; r=r-next; printf(-統(tǒng)計(jì)結(jié)果-n); printf(總分最高者:t%s %d分n,pt-data.name,pt-data.totle); printf(平均分最高者:t%s %d分n,pa-data.name,pa-data.ave); printf(英語(yǔ)最高者:t%s %d分n,pe-data.name,pe-data.egrade); printf(數(shù)學(xué)最高者:t%s %d分n,pm-data.name,pm-data.mgrade); printf(語(yǔ)文最高者:t%s %d分n,pc-data.name,pc-data.cgrade); printstart(); void Chinese(Link l) Link ll; 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-data.egrade=p-data.egrade) 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); void Maths(Link l) /*對(duì)數(shù)學(xué)排序*/ Link ll; 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-data.mgrade=p-data.mgrade) 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); void English(Link l) /*對(duì)英語(yǔ)排序*/ Link ll; 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-data.cgrade=p-data.cgrade) 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); void select(Link l) int i; int j,k; Node *pc = l; /用于指向分?jǐn)?shù)最高的接點(diǎn) Node *r=l-next; if(!r) printf(n=提示:沒(méi)有資料可以篩選!n); return ; printf(輸入課程名1.語(yǔ)文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é)果-n); printf(學(xué)號(hào)t 姓名t 性別 語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 總分 平均分n); printstart(); while(r!=NULL) if(kdata.egrade)&(r-data.egrade)next; else if(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(kdata.mgrade)&(r-data.mgrade)next; else if(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(kdata.cgrade)&(r-data.cgrade)next; else Wrong(); void Save(Link l) FILE* fp; Node *p; int flag=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) printf(n=提示:文件保存成功.(有%d條記錄已經(jīng)保存.)n,count); shoudsave=0; fclose(fp); void main() Link l;/* 連表 */FILE *fp; /* 文件指針 */int sel; char ch; char jian; int count=0; Node *p,*r; printf(tttt學(xué)生成績(jī)管理系統(tǒng)n ttt 06自動(dòng)化2班 蔡曉慶 3106000849ttttn); 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) case 1:Add(l);goto loop;break; /* 增加學(xué)生 */case 2:Del(l);goto loop;break;/* 刪除學(xué)生 */case 3:Qur(l);goto loop;break;/* 查詢學(xué)生 */case 4:Modify(l);goto loop;break;/* 修改學(xué)生 */case 5:Disp(l);goto loop;break;/*顯示學(xué)生*/case 6:Tongji(l);goto loop;break;/*統(tǒng)計(jì)學(xué)生*/case 7:Chinese(l);goto loop;break;/*語(yǔ)文排序*/case 8:Maths(l);goto loop;break;/*數(shù)學(xué)排序*/case 9:English(l);goto loop;break;/*英語(yǔ)排序*/case 10:select(l);goto loop;break;/* 選擇分段分?jǐn)?shù) */case 11:Save(l);goto loop;break;/* 保存學(xué)生 */case 12:printf(ttt=幫助信息=n);goto loop;break; default: Wrong();getchar();break; 7. 2結(jié)構(gòu)體#include#include#includestruct studentchar class_020;char num 20;char name20;float math;float c_prog;float eng;float polity; float sport;float ave;stu1000;char j,h;/*函數(shù)聲明*/ void luru();void chaxun();void charu();void tongji();void xiugai();void shanchu();void paixu();void tuichu();FILE *fp;/指向?qū)W生信息的文件指針 void main()loop: printf(tt*ttn);printf(tt 歡迎使用學(xué)生信息管理系統(tǒng) ttn);printf(tt ttn);printf(tt 制作人:電力4 史素芬 ttn);printf(tt ttn);printf(tt ttn);printf(tt*ttn);printf(tt1. 錄入學(xué)生成績(jī) n);printf(tt2. 排序?qū)W生成績(jī) n); printf(tt3. 統(tǒng)計(jì)輸出成績(jī) n);printf(tt4. 查詢學(xué)生成績(jī) n); printf(tt5. 插入學(xué)生成績(jī) n);printf(tt6. 修改學(xué)生成績(jī) n); printf(tt7. 刪除學(xué)生成績(jī) n);printf(tt8. 退出管理系統(tǒng) n);int n; printf(請(qǐng)選擇功能nn); scanf(%d,&n);system(cls); switch(n)case 1: printf(tt錄入學(xué)生成績(jī)nn); luru();goto loop; case 2:printf(tt排序?qū)W生成績(jī)nn);paixu();goto loop; case 3: printf(tt統(tǒng)計(jì)輸出學(xué)生成績(jī)nn); tongji(); goto loop; case 4: printf(tt查詢學(xué)生成績(jī)nn);chaxun(); goto loop; case 5: printf(tt插入學(xué)生成績(jī)nn);charu(); goto loop; case 6: printf(tt修改學(xué)生成績(jī)nn); xiugai();goto loop;case 7:printf(tt刪除學(xué)生成績(jī)nn); shanchu();goto loop;case 8: printf(tt程序退出。t謝謝使用!nn);exit(0); default: printf(您的輸入有誤,請(qǐng)重試!nn); fflush(stdin); goto loop; printf(n按任意鍵返回.); void luru()int i,m; FILE*fp;printf(請(qǐng)輸入學(xué)生人數(shù): ); scanf(%d,&m);if(m1000|m0)printf(n錯(cuò)誤nn);return;else for(i=0;im;i+)printf(n請(qǐng)輸入第%d位學(xué)生的成績(jī):n,i+1);printf(班級(jí):);scanf(%s,stui.class_0);printf(學(xué)號(hào):);scanf(%s,stui.num);printf(姓名:);scanf(%s,stui.name);printf(高等數(shù)學(xué)成績(jī):);scanf(%f,&stui.math);printf(C程序設(shè)計(jì)成績(jī):);scanf(%f,&stui.c_prog);printf(大學(xué)英語(yǔ)成績(jī):);scanf(%f,&stui.eng);printf(馬克思主義政治經(jīng)濟(jì)學(xué)成績(jī):);scanf(%f,&stui.polity);printf(大學(xué)體育成績(jī):);scanf(%f,&stui.sport);stui.ave=(stui.c_prog+stui.eng+stui.math+stui.polity+stui.sport)/5;fp=fopen(stud.c,w);for(i=0;im;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(n打開(kāi)文件失敗nnn);fclose(fp);fp=fopen(stud.c,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;im;i+)- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
18 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語(yǔ)言 課程設(shè)計(jì) 成績(jī)管理系統(tǒng)
鏈接地址:http://m.appdesigncorp.com/p-1139999.html