C語言大作業(yè)學生成績管理系統(tǒng)_第1頁
C語言大作業(yè)學生成績管理系統(tǒng)_第2頁
C語言大作業(yè)學生成績管理系統(tǒng)_第3頁
C語言大作業(yè)學生成績管理系統(tǒng)_第4頁
C語言大作業(yè)學生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、#include <stdio.h>#include <math.h>#include <string.h>#define NUM 4struct Ihb/定義結(jié)構體變量,為Ihb/int num;char namefl()1;int score4;float average;stu4,s;void saveQ/定義save函數(shù),把錄入的學生數(shù)據(jù)輸出到磁盤list文件H4/FILE *fp;int i;if(fp=fopen(,list,;,wb,)=NULL)printf(f,can not open this filenu);return;for(i=0

2、;i<4;i+)if(fwrite(&stui,sizeof(struct Ihb), 1 ,fp)!= 1) /用 fwrile 函數(shù)將數(shù)據(jù)送到printf(nfile write errorNn,1);list 文件中/fclose(fp);)void file 1()/建立菜單1,錄入4個學生的4科成績,并算其平均分/ int i,j;/定義變量/float s=0;printf(MInput the student's number name and 4 score:nM);priitf(Mnum name suorcO score 1 scorc2 scorc3

3、iiM);for(i=0;i<4;i+)scanf(n%d%s%d%d%d%d,&stuil.num,&,&stui.score()l,&stui.scorcl, &stui.score ,&stufi.score3);for(i=0;i<4;i+)/用for循環(huán)算出每個學生的平均成績/for(j=O;j<4;j-H-)s+=stui.scorej;/各科成績累加后賦給Vstui.average=s/4.0;/計算出平均成績/s=0;save(); /調(diào)用save函數(shù),保存數(shù)據(jù)/return;void file

4、2()/建立菜單2,打印全班學生的數(shù)據(jù)輸出到屏幕上/FILE *fp;/尋找并調(diào)用list文件數(shù)據(jù)/inti; flp=fdpenClist,;trbH);for(i*0;i<4;i+)fread(&stuiLsizeof(stmct Ihb), 1 ,fp);fclose(fp);printf(MAll the students* message:n,r);score3 averagen ”);printf(Hnum name scoreOscore 1score2for(i=0;i<4;i+)/循環(huán)輸出所有學生數(shù)據(jù)/printff'%d %s %d %d%d %

5、d %5.2fn,9stui.score09stui.scorel ,stuil.score2, stui.score3,stuil.average); return;void file3()/建立菜單3,插入一個學生數(shù)據(jù)/FILE *fp;/尋找并調(diào)用list文件數(shù)據(jù)/int fp=fopenC,listM; rbM); for(i=0;i<4;i+)fread(&stufil,sizeof(struct Ihb), 1 ,fp); fclose(fp);)printffTlcsac input a new students massagcn

6、n);scanf(M%d%s%d%d%d%dr,&s.num,&s,name,&s.score0h&s.scorell,&s.score2,&s.score31);s.average=(s.score01+s.scorc 1 l+s.score21+s.score31)/4.0;if(fp=fopen("listM,"r")=NULL ) /從 list 文件中讀數(shù)據(jù)/printf(Mcant not open the file.1');exit(O);)printf(" old students&

7、#39; original data:n");/讀取已經(jīng)存在的數(shù)據(jù)/for(i=0;fread(&stui,sizeof(struct lhb),Lfp)!=O;i+)printf(Mn%4s%4sM,stuil.num,);for(j=0;j<4;j+)printf(M%4dH,stui.scorej);prinlf(M%5.2rstui.avcragc);)fclose(fp);n=i;/將i的值賦給變量n/for(t=();stut.average>s.averagc&&t<n;t+);printf(Mn add ne

8、w student massage:nn); /In list 文件寫數(shù)據(jù)/fjp=fbpen(,listw;,w,1);for(i=0;i<t;i+)/先輸出平均分高于學生S的學生的成績/fwrile(&stui,sizeof(struct lhb),l ,fp);printf(Mn%4s%4s',stui.num,);for(j=0;j<4;j-H-)printf(',%4d",stui.scorejl);printf(H%5.2rr,stuil.average);)fwrite(&s,sizeof(struct Ih

9、b), 1 ,fp);printf(Mn%4s%4s%4d%4d%4d%4d%5.2f,s.num,,s.score()Ks.scorel ,s.score2,s.score3,s.average);/輸出學生 s 的成績/for(i=t;i<n;i+)/輸出平均分低于學生S的學生的成績/fwrite(&stuil,sizcof(struct lhb),l ,fp);printf(Mn%4s%4sM,stui.num,); for(j=0;j<4;j-H-) printf(n%4dH,stui.scorejl); printf(,%5.2f,s

10、tui.average); ) fclose(fp);/關閉文件/printf(Hnn); )void file4()/建立菜單4,按平均成績的高低輸出學生成績一覽表/int ij;/定義變量/FILE *fp;/尋找并調(diào)用list義件數(shù)據(jù)/struct Ihb t; fp=fopen(nlistH;,rbH); for(i=0;i<4;i+) frcad(&stuiLsizcof(struct lhb),l ,fp); fclose(fp); ) for(j=0;j<4;j+)/ 用冒泡排序 /for(i=3;i>j;i-)if(stuU.average<st

11、ufi.average)/比較學生的平均成績/l=stujl;stuj=stuil; Stuil=t;/比較后交換/printf(MThe average from top to buttom:nM); printf(Hnum name scoreO score 1score2 score3averagenH); for(i=0;i<4;i+)/再次循環(huán)輸出排序后的情況/printff%d %s %d%d %d%d %5.2fn,.stui.score09stui.score l,stui.score2, stui.score3,stui.averag

12、e);)void file5()/建立菜單5,統(tǒng)計平均分底于60的學生,輸出其數(shù)據(jù)/(FILE *fp;/尋找并調(diào)用list文件數(shù)據(jù)/inti; fp=fopen(,listn,HrbH);for(i=0;i<4;i+)fread(&stuil,sizeof(struct Ihb), 1 ,fp);fclose(fp);)for(i=0;i<4;i+) /用 for 循環(huán)一次/if(stui.average<60)/如果條件為真,貝J進行下列程序/printf(Mwho's average below 60 is/are:nu);printff'num

13、 name scoreO score 1 score2 score3 averagenn);printfC%d %s %d%d %d %d %5.2fnM,>stui.score09stui.scoie l,stui.score2,stuil.score3,stui.average);|return;void file6()/建立菜單6,輸出全班總平均成績,和全班各科平均成績/float v,v1=0,v2=0,v3=0,v4=0; /定義變量,并賦初始值為 0/int i,j,s=O;FILE *fp;/尋找并調(diào)用list文件數(shù)據(jù)/ fp=fope

14、n(nlisfHrbM);for(i=0;i<4;i+)fread(&stuil,sizeof(struct Ihb), 1 ,fp); fclose(fp);/各科成績循環(huán)后累加后賦給“/將S賦給V/將v的值除于4,在賦給Wfor(i=0;i<4;i+) s4-=stui.average; v=s;v=v/4.0;for(i=0;i<4;i+) vl+=stufi.score01; vl=vl/4.0;for(i=0;i<4;i+) v2+=stuil.scorel; v2=v2/4.0;for(i=0;i<4;i+) v3+=stu(il.score2

15、1; v3=v3/4.0;for(i=0;i<4;i+) v4+=stu|i.score3; v4=v4/4.0;printff' all students1 average is %5,2fn",v); /打印出全班平均成績/printf(naverage scorcfO is %5.2fn*vl);/打印出全班各科平均成績/printff'average scorcfl is %5.2fn*v2);printf(naverage scorc2 is %5.2fnM,v3);printf(Maverage score3 is %5.2fn,f,v4);)voi

16、d file7() /建立菜單7,查找學生成績情況/ int i,c,e;char ch20;FILE *巾;/尋找并調(diào)用list文件數(shù)據(jù)/fp=fopen(,list,HrbH);for(i=0;i<4;i+)fread(<festui,sizeof(struct lhb),l,fp); fclose(fp);printf(nInput the students name to find please press lnn);printff'Input the students number to find please press 2nM);scanf(M%d"

17、,&e);/ 輸入變量/if(e=l)/判斷輸入變量e=l,如果為真,則進行下而程序/printf(nInput the student's namenH);getchar();/輸入字符型數(shù)據(jù)/scanf(M%s,&ch);for(i=0;i<4;i+)if(strcmp(ch,stu()=O) /比較判斷,如果為真,則打印出相對應成績/printf(Mnum name scoreO score 1 score2 score3 averagenH);printf(M%d%s%d%d%d%d %5.2fnlstui.num,stu(9st

18、ui.scoie09stui.scorel9stui.score2Istui.score31,stui.average);)if(e=2)/判斷輸入變量e=2,如果為真,則進行下面程序/printf(nInput the students numbcrnM);scanf(M%dn,&c);/輸入學生號數(shù)/for(i=0;i<4;i+)if(c=stui.num)/判斷,如果為真,則打印出相對應成績/printf("num name scoreO score 1 score2 score3 averageXn11);printf(H%d %s %d %d %d %d%5.

19、2fnn,stui.num9stui.naine9stui.score09stui.scorel9stui.score29stuil.score3,stui.average); )if(c!=l&&c!=2) printfCYour enter is not correct!n,f);return:)main()/定義主函數(shù)/int m;loop:/goto語句返回時的起始處/printfCn) /在屏幕上輸出菜單表/printf(n*MUNE *11,.printfCPress 1input student's massage and save them to a l

20、ist.nH);printfCPress 2print all of the students' massage on the screen.nM);printff,press 3input add a new sludent's massage.nn);printff1Press 4print student's average from top to buttom on the screen.5");printfCPress 5print who's average below 60 on the screen.nM);printff*Press

21、6print all and each course's average of class on the screen.5");printfCPress 7enter naine/number find out one of the students* massage.nM);printfC Press 0 Exit this system.nn);printff* Please Input Your Choice First *nr1);scanf('%d",&m);/輸入所選菜單/if(m=l) /判斷條件,如果為真,則調(diào)用菜單I函數(shù)/ file 1();printfCDo you want to continue this servise Y/N?n");getchar(); /輸入字符型數(shù)據(jù)/ if(getchar()=y)/判斷輸入數(shù)據(jù)是否為真,如果為真,則執(zhí)行goto語句

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論