C語言學(xué)生成績(jī)管理系統(tǒng)(數(shù)組實(shí)現(xiàn)附代碼)_第1頁
C語言學(xué)生成績(jī)管理系統(tǒng)(數(shù)組實(shí)現(xiàn)附代碼)_第2頁
C語言學(xué)生成績(jī)管理系統(tǒng)(數(shù)組實(shí)現(xiàn)附代碼)_第3頁
C語言學(xué)生成績(jī)管理系統(tǒng)(數(shù)組實(shí)現(xiàn)附代碼)_第4頁
C語言學(xué)生成績(jī)管理系統(tǒng)(數(shù)組實(shí)現(xiàn)附代碼)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C高級(jí)程序設(shè)計(jì)設(shè)計(jì)說明書班級(jí)成績(jī)管理系統(tǒng)班 級(jí)12計(jì)科組 別第X組組 長(zhǎng) 靜待花開組 員 靜待花開指導(dǎo)教師李伙友、魏龍華計(jì)算機(jī)科學(xué)與技術(shù)系2013年 6月摘 要 學(xué)生管理系統(tǒng)在日常教學(xué)中有著十分重要的作用,它可以幫助老師和學(xué)生快速的查找所需的學(xué)生信息,該系統(tǒng)具有準(zhǔn)確、高效、全面等特點(diǎn)。錄入和輸出是該系統(tǒng)數(shù)據(jù)資源的基礎(chǔ);對(duì)于學(xué)生成績(jī)的相關(guān)運(yùn)算在教學(xué)中顯得必要;學(xué)生成績(jī)等等的排名能夠幫助使用系統(tǒng)的人快速獲得所需的信息,對(duì)于成績(jī)的排名,排序法中的冒泡排序是數(shù)據(jù)處理中經(jīng)常使用的一種重要運(yùn)算。冒泡排序算法的運(yùn)作如下:1.比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。2.對(duì)每一對(duì)相鄰元素作同樣的工

2、作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最 后的元素應(yīng)該會(huì)是最大的數(shù)。3.針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。4.持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較.關(guān)鍵詞:冒泡排序 目 錄1 課題綜述4 1.1課題內(nèi)容4 1.2意義4 1.3預(yù)期目標(biāo)42 系統(tǒng)分析5 2.1相關(guān)基礎(chǔ)知識(shí)5 2.2 總體方案53 系統(tǒng)設(shè)計(jì)6 3.1 輸入模塊6 3.2 輸出模塊7 3.3 平均分模塊8 3.4 統(tǒng)計(jì)、排名模塊9 3.5 查找模塊10 3.6 刪除模塊104 代碼編寫及運(yùn)行12 4.1 總程序12總 結(jié)30致 謝31參考文獻(xiàn)31 1 課題綜述 1.1課題內(nèi)容 每個(gè)學(xué)生

3、的信息為:姓名、學(xué)號(hào)、性別、C語言成績(jī)、高數(shù)成績(jī)、近代史成績(jī);平均成績(jī)。1學(xué)生信息處理(1) 輸入學(xué)生信息、姓名、學(xué)號(hào)、性別,按學(xué)號(hào)以小到大的順序存入文件中。(2) 插入(修改)同學(xué)信息:(3) 刪除同學(xué)信息:(4) 瀏覽學(xué)生信息:2學(xué)生數(shù)據(jù)處理:(1) 按考試科目錄入學(xué)生成績(jī)并且按公式:考試成績(jī)(業(yè)務(wù)成績(jī)總和)/(業(yè)務(wù)課程門數(shù)) 計(jì)算考試成績(jī),并計(jì)算考試名次。(2) 學(xué)生測(cè)評(píng)數(shù)據(jù)輸入并計(jì)算綜合測(cè)評(píng)總分及名次。綜合測(cè)評(píng)總分(考試成績(jī))*0.6+(同學(xué)互評(píng)分)*0.1+品德成績(jī)*0.1+任課老師評(píng)分*0.2。(3) 學(xué)生數(shù)據(jù)管理輸入學(xué)號(hào),讀出并顯示該同學(xué)信息,輸入新數(shù)據(jù),將改后信息寫入文件(4)

4、 學(xué)生數(shù)據(jù)查詢:輸入學(xué)號(hào)或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。3、全體學(xué)生信息輸出1.2 意義 通過該課程設(shè)計(jì)的操作與實(shí)踐,能夠根據(jù)數(shù)據(jù)對(duì)象的特性,學(xué)會(huì)數(shù)據(jù)組織的方法,把現(xiàn)實(shí)世界中的實(shí)際問題在計(jì)算機(jī)內(nèi)部表示出來,并培養(yǎng)基本的、良好的程序設(shè)計(jì)技能,全面提高學(xué)生的程序設(shè)計(jì)、開發(fā)能力。1.3 預(yù)期成果 1、掌握函數(shù)的定義方法和調(diào)用方法。 2、能夠采用模塊化思想調(diào)試程序。 2、系統(tǒng)分析 2.1 相關(guān)基礎(chǔ)知識(shí) 1、學(xué)??己艘粋€(gè)學(xué)生的主要依據(jù)就是學(xué)生的綜合成績(jī),綜合素質(zhì)。這就讓一個(gè)學(xué)生的綜合成績(jī)?cè)u(píng)定系統(tǒng)的建立顯得尤為重要。 2、一個(gè)學(xué)生綜合測(cè)評(píng)系統(tǒng)包括學(xué)生的方方面面信息,這有利于學(xué)校的管理。 3、大

5、家都知道學(xué)生是流動(dòng)的,而且綜合測(cè)評(píng)是每年評(píng)比一次,所以這學(xué)生綜合測(cè)評(píng)系統(tǒng)的更改錄入功能重要性不明而喻。4、開發(fā)本系統(tǒng)在一定的程度上可以減輕教輔老師的期末工作。 2.2 總體方案 學(xué)生數(shù)據(jù)處理模塊學(xué)生信息輸出模塊幫助退出修改學(xué)生信息刪除學(xué)生信息瀏覽學(xué)生信息返回錄入成績(jī)修改學(xué)生數(shù)據(jù)學(xué)生數(shù)據(jù)查詢返回輸出學(xué)生信息無退出本系統(tǒng)學(xué)生信息處理模塊輸入學(xué)生信息12計(jì)科班級(jí)成績(jī)管理系統(tǒng)系統(tǒng)設(shè)計(jì) 3.1 輸入模塊 學(xué)生的輸入模塊主要是采用從鍵盤輸入學(xué)生的基本信息,利用printf和scanf函數(shù)來輸入學(xué)生的信息,在輸完一個(gè)學(xué)生的基本信息后,會(huì)返回上級(jí)菜單,可以繼續(xù)輸入學(xué)生信息或退出。或直接從已有文件讀取。 3.2

6、輸出模塊(1)、通過學(xué)號(hào)或姓名查找,輸出單個(gè)學(xué)生信息。(2)、輸出有效的學(xué)生信息。3.3 平均分模塊。求各個(gè)學(xué)生的成績(jī)平均分。3.4排名模塊。按單科排名、學(xué)號(hào)排名、平均分排名。3.5 查找模塊按照學(xué)號(hào)或姓名查找。3.6 刪除模塊通過學(xué)號(hào)或姓名查找學(xué)生,選擇刪除或恢復(fù)誤刪。(1)、刪除(2)、恢復(fù)4 附件:程序代碼#include#include#include#define N 80struct Studentlong num; /*學(xué)號(hào)*/char name20; /*姓名*/char sex10; /*性別*/int C; /*C語言*/int Math; /*高數(shù)*/int Chines

7、e; /*語文*/int History; /*近代史*/int Moral; /*德育分*/double aver; /*平均分*/aN;int FN=0; /*判定是否輸出0為假1為真*/int t=0,t2=0,M=0; /*t-所有信息數(shù)目,tt-有效信息數(shù)目,M-統(tǒng)計(jì)輸入到第幾個(gè)學(xué)生*/void found(); void input(); void read(); void average();void sort();void output1();void seek();void output2(int i);void cut(int i);void regain(int i);v

8、oid alter(int i);void statistics();void save();void end();int main()int z; while(1)printf( *n); printf( *歡迎使用學(xué)生成績(jī)管理系統(tǒng)*n); printf( *nnnn); printf( *n); printf( *1.創(chuàng)建學(xué)生信息 * 2.查找學(xué)生信息(修改、刪除。) *n); printf( *3.各科平均成績(jī) * 4.按單科成績(jī)進(jìn)行排序 *n); printf( *5.輸出所有學(xué)生信息 * 6.統(tǒng)計(jì) *n);printf( *7.保存 * 0.退出系統(tǒng) *n); printf( *nn

9、); printf(請(qǐng)輸入指令:);scanf(%d,&z); switch(z) case 1:found();break; case 2:seek();break; case 3:average();break; case 4:sort();break; case 5:output1();break; case 6:statistics();break; case 7:save();break; case 0:end();break; default:printf(輸入錯(cuò)誤,請(qǐng)重新輸入n);break;return 0;void found() /*創(chuàng)建數(shù)據(jù)*/int z,n=1; /*z

10、-指令,n-判斷是否執(zhí)行循環(huán)*/while(n)printf(*n);printf(1.手動(dòng)輸入學(xué)生信息n);printf(2.從文件讀取學(xué)生信息n); printf(0.返回上一級(jí)n);printf(*nn);printf(請(qǐng)輸入指令:);scanf(%d,&z);switch(z) case 1:input();break; case 2:read();break;case 0:n=0;break; default:printf(輸入錯(cuò)誤,請(qǐng)重新輸入n);break;system(cls);void input() /*手動(dòng)輸入數(shù)據(jù)*/int n=1,n2=1,i; /*z-指令,n,n2

11、-判斷是否執(zhí)行循環(huán)*/ while(n)printf(請(qǐng)輸入學(xué)生信息:n);while(n2)printf(學(xué)號(hào):);scanf(%ld,&aM.num);for(i=0;it;i+)if(aM.num=ai.num) printf(學(xué)號(hào)重復(fù)請(qǐng)重新輸入n);break; if(i=t) n2=0;printf(姓名:);scanf(%s,&aM.name);printf(性別:);scanf(%s,&aM.sex);printf(C語言成績(jī):);scanf(%d,&aM.C);printf(高數(shù)成績(jī):);scanf(%d,&aM.Math);printf(語文成績(jī):);scanf(%d,&aM

12、.Chinese);printf(近代史成績(jī):);scanf(%d,&aM.History);printf(德育分:);scanf(%d,&aM.Moral);aM.aver=(aM.C+aM.Math+aM.Chinese+aM.History+aM.Moral)/5.0;n=0; FM=1;M+;t+;t2+; void read() /*文件導(dǎo)入*/FILE *fp;int i;t=0;M=0;if(fp=fopen(save,rb)=NULL)printf(無法打開此文件n);return;printf(該生信息為:n);printf(n);printf( 學(xué)號(hào) 姓名 性別C語言高數(shù)語

13、文近代史德育分平均分n);printf( n); for(i=0;fread(&ai,sizeof(struct Student),1,fp)!=0;i+,t+,M+)printf(%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn,ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf(n);Fi=1;fclose(fp);t2=t;system(pause);system(cls);void output1() /*全體學(xué)生信息輸出*/int i;p

14、rintf(該生信息為:n);printf(n);printf( 學(xué)號(hào) 姓名 性別C語言高數(shù)語文近代史德育分平均分n);printf( n);for(i=0;it;i+) if(Fi=1)printf(%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn,ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf(n);system(pause);system(cls);void seek() /*查詢*/ int z,s,n=1,n2=1,i,k; /*z-

15、指令,n,n2-判斷是否執(zhí)行循環(huán),k-數(shù)組下標(biāo)*/long m;char b20;while(n2)printf(請(qǐng)輸入查詢方式:n);printf(1.按學(xué)號(hào)查詢.n);printf(2.按姓名查詢.n);printf(0.返回主菜單.n);scanf(%d,&s);if(s=1) printf(請(qǐng)輸入學(xué)號(hào):n);scanf(%ld,&m);for(i=0;it;i+)if(ai.num=m) k=i;n2=0;break;else if(s=2) printf(請(qǐng)輸入姓名:n);scanf(%s,b);for(i=0;it;i+)if(strcmp(,b)=0) k=i;n2

16、=0;break;else if(s=0) system(cls); return;else printf(輸入錯(cuò)誤,請(qǐng)重新輸入n);if(i=t) printf(查無此人,請(qǐng)重新查詢n);while(n)printf(*n);printf(1.輸出學(xué)生信息n);printf(2.修改學(xué)生信息n);printf(3.刪除學(xué)生信息n);printf(4.恢復(fù)誤刪的學(xué)生信息n);printf(0.返回主菜單n);printf(*nn);printf(請(qǐng)輸入指令:);scanf(%d,&z);switch(z) case 1:output2(k);break; case 2:alter(k);bre

17、ak; case 3:cut(k);break;case 4:regain(k);break;case 0:n=0;break; default:printf(輸入錯(cuò)誤,請(qǐng)重新輸入n);break;system(cls);void output2(int i) /*單個(gè)學(xué)生信息輸出*/int k=0; /*k統(tǒng)計(jì)不及格科目數(shù)*/printf(該生信息為:n);printf(n);printf( 學(xué)號(hào) 姓名 性別C語言高數(shù)語文近代史德育分平均分n);printf( n);printf(%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn,ai.num,

18、,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf(n);if(ai.C60) k+;if(ai.Math60) k+;if(ai.Chinese60) k+;if(ai.History60) k+;if(ai.Moral60) k+;printf(該生共有%d門科目不及格.n,k);system(pause);system(cls);void alter(int i) /*修改學(xué)生信息*/printf(請(qǐng)重新輸入學(xué)生信息:n);printf(學(xué)號(hào):);scanf(%ld,&ai.num);printf(姓名

19、:);scanf(%s,&);printf(性別:);scanf(%s,&ai.sex);printf(C語言成績(jī):);scanf(%d,&ai.C);printf(高數(shù)成績(jī):);scanf(%d,&ai.Math);printf(語文成績(jī):);scanf(%d,&ai.Chinese);printf(近代史成績(jī):);scanf(%d,&ai.History);printf(德育分:);scanf(%d,&ai.Moral);ai.aver=(ai.C+ai.Math+ai.Chinese+ai.History+ai.Moral)/5.0;printf(修改完成n);system

20、(pause);system(cls); void cut(int i) /*刪除學(xué)生信息*/char s;printf(是否刪除y/n?n);getchar();scanf(%c,&s);if(s=Y | s=y)Fi=0;t2-; printf(已刪除);system(pause);else if(s=N | s=n) return; else printf(輸入錯(cuò)誤,請(qǐng)重新輸入nn);system(pause);return; system(cls);void regain(int i)Fi=1;t2+;printf(信息已恢復(fù));system(pause);system(cls); v

21、oid average() /*班級(jí)單科平均分*/int n=1,i; /*n-判斷是否執(zhí)行循環(huán)*/char z20; /*z-查詢科目指令*/long sum=0; /*sum-單科總分*/double aver=0.0; /*aver-單科平均分*/while(n)printf(請(qǐng)輸入需要求班級(jí)平均分的科目:(C / Math / Chinese / History / Moral)n);printf(-);scanf(%s,&z);if(strcmp(z,C)=0) for(i=0;it;i+)if(Fi=1)sum=sum+ai.C;aver=sum*1.0/t2;n=0;else i

22、f(strcmp(z,Math)=0)for(i=0;it;i+)if(Fi=1) sum=sum+ai.Math;aver=sum*1.0/t2;n=0;else if(strcmp(z,Chinese)=0)for(i=0;it;i+)if(Fi=1)sum=sum+ai.Chinese;aver=sum*1.0/t2;n=0;else if(strcmp(z,History)=0)for(i=0;it;i+)if(Fi=1)sum=sum+ai.History;aver=sum*1.0/t2;n=0;else if(strcmp(z,Moral)=0)for(i=0;it;i+)if(F

23、i=1)sum=sum*1.0+ai.Moral;aver=sum*1.0/t2;n=0;else printf(輸入錯(cuò)誤,請(qǐng)重新輸入n);printf(%s科目班級(jí)平均分為:%7.2fn,z,aver);system(pause);system(cls); void sort() /*排序*/ int n=1,i,j,k2; /*k2-交換有效數(shù)據(jù)判定的中間變量*/char z20;struct Student k;while(n) printf(請(qǐng)輸入排序方式(/學(xué)號(hào) /平均分 /C /Math /Chinese /History /Moral /0(返回主菜單)n); printf(-:

24、);scanf(%s,&z);if(strcmp(z,學(xué)號(hào))=0)for(i=0;it;i+)for(j=i+1;jaj.num)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,C)=0) for(i=0;it;i+)for(j=i+1;jt;j+)if(ai.Caj.C)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,Math)=0)for(i=0;it;i+)for(j=i+1;jt;j+)if(ai.Mathaj.Math)k=ai;ai=aj;aj=k;k2=Fi

25、;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,Chinese)=0)for(i=0;it;i+)for(j=i+1;jt;j+)if(ai.Chineseaj.Chinese)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,History)=0)for(i=0;it;i+)for(j=i+1;jt;j+)if(ai.Historyaj.History)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,Moral)=0)for(i=0;it;i+)for

26、(j=i+1;jt;j+)if(ai.Moralaj.Moral)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,平均分)=0)for(i=0;it;i+)for(j=i+1;jt;j+)if(ai.averaj.aver)k=ai;ai=aj;aj=k;k2=Fi;Fi=Fj;Fj=k2;n=0;else if(strcmp(z,0)=0) return;else printf(輸入錯(cuò)誤,請(qǐng)重新輸入n); printf(該生信息為:n);printf(n);printf( 學(xué)號(hào) 姓名 性別C語言高數(shù)語文近代史德育分平均分n);pr

27、intf( n);for(i=0;it;i+) if(Fi=1) printf(%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn,ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf(n);system(pause);system(cls); void statistics() char z20;int FFN=0; /*FFN-判定分?jǐn)?shù)是否在所尋范圍,1為真,0為假*/int n=1,score1,score2,i,k=0; /*k-統(tǒng)計(jì)某分?jǐn)?shù)段學(xué)

28、生數(shù),score1,score2-統(tǒng)計(jì)分?jǐn)?shù)的上、下限*/while(n)printf(請(qǐng)輸入需要統(tǒng)計(jì)的科目:/C /Math /Chinese /History /Moral /0(返回主菜單)n);scanf(%s,z);if(strcmp(z,0)!=0)printf(請(qǐng)輸入需要統(tǒng)計(jì)的分?jǐn)?shù)上、下限(逗號(hào)分隔)n);scanf(%d,%d,&score1,&score2);if(strcmp(z,C)=0) for(i=0;i=score1 & ai.C=score2)k+;FFi=1;n=0;else if(strcmp(z,Math)=0)for(i=0;i=score1 & ai.Ma

29、th=score2)k+;FFi=1;n=0;else if(strcmp(z,Chinese)=0)for(i=0;i=score1 & ai.Chinese=score2)k+;FFi=1;n=0;else if(strcmp(z,History)=0)for(i=0;i=score1 & ai.History=score2)k+;FFi=1;n=0;else if(strcmp(z,Moral)=0)for(i=0;i=score1 & ai.Moral=score2)k+;FFi=1;n=0;else if(strcmp(z,0)=0) system(cls); return;else

30、 printf(輸入錯(cuò)誤,請(qǐng)重新輸入n);printf(%s科目%d-%d段有%d人n,z,score1,score2,k);if(k!=0)printf(分別為:n); printf(n); printf( 學(xué)號(hào) 姓名 性別C語言高數(shù)語文近代史德育分平均分n); printf( n);for(i=0;it;i+)if(Fi=1 & FFi=1)printf(%-10ld%-6s%-4s%-5d%-4d%-4d%-6d%-6d%-6.3fn,ai.num,,ai.sex,ai.C,ai.Math,ai.Chinese,ai.History,ai.Moral,ai.aver); printf(n);system(pause); system(cls); void save() /*存儲(chǔ)到文件*/FILE *fp;int i;if(fp=fopen(save,wb)=NULL)printf(無法打開此文件n);return;for(i=0;it;i+)if(Fi=1)if(fwrite(&ai,sizeof(struct Student),1,fp)!=1)printf(文件寫入錯(cuò)誤n);fclose(fp);printf(保存成功n);system(pause);system(cls); void end() /*結(jié)束*/ char s;printf(

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論