C語言課程設計-學生成績管理系統(tǒng)-完整版_第1頁
C語言課程設計-學生成績管理系統(tǒng)-完整版_第2頁
C語言課程設計-學生成績管理系統(tǒng)-完整版_第3頁
C語言課程設計-學生成績管理系統(tǒng)-完整版_第4頁
C語言課程設計-學生成績管理系統(tǒng)-完整版_第5頁
免費預覽已結(jié)束,剩余21頁可下載查看

下載本文檔

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

文檔簡介

1、JtincludeOitincludeO#include<>itincludeO/ strcmp函數(shù)原型包含*/ttdefine N 100/*定義最大學生人數(shù)為100*/struct student/*學生結(jié)構體定義*/char nol 1 ;/*學號.10 位*/char name10:/姓名,3 個漢字*/char grade 10 ;/*班級*/char pro20: /*專業(yè)材float score5: /*儲存5門功課的成績*/float ave;/*儲存平均分*/int year;/*入學年3*/stuN:int num;voidpanduani(int);/*通過i

2、的值,判斷信息要查找的信息是否存在*/voidoutput ();/*輸出學生成績函數(shù)(公共函數(shù))/voidinit ();/*系統(tǒng)初始化函數(shù)*/voidnewf ile();/*建立新的數(shù)據(jù)文件*/voidreadl ();/*從數(shù)據(jù)文件中讀取數(shù)據(jù)*/voidweihuO ;/*維護界面函數(shù)*,/voidnewl ();/*新增一個學生成績函數(shù)*/voidxiugai ();/*修改學生成績*/voidxgcj(int);/*修改成績*/void deletel();void tongji():void tongji1();void tongji2():void paixul();void

3、paino():void paiaveO :void paidkcj():void change(int,int):void outputx(int);void findl();int find(char sno):int findname(char cname) void findyear(int cyear): void save():void stopO :/*刪除學生信息函數(shù)材/*統(tǒng)計界面函數(shù)*/*計算每個學生平均分*/*計算每門課程的平均分*/*排序函數(shù)*/*按學號排序材/*按平均分排序*/*按單科成績排序*/*交換結(jié)構體數(shù)組中的兩個記錄*/*選擇輸出單科成績*/*查找界面函數(shù)*/*

4、按學號查找材;/*按姓名查找*/*按入學年查找*/*保存文件*/void stopO/*停頓函數(shù)(公共函數(shù))/*停頓函數(shù)*/printf("Press Any Key To Continuenu): getchar (); void output() 輸出學生成績函數(shù)(公共函數(shù))*/int i,J;pr 1111 f (n )printf C學號姓名班級專業(yè)入學年C語言高數(shù)大物電路模電十);pr intf ("=n")for(i=0;i<num; i+)printf(n%s%s %s %s %d".stui notstui name,stui gr

5、ade,stui pro,stui year);for (j=0;j<5;j+)printf%. lf",stui scorej);printf("n");StopO ;void init() /*系統(tǒng)初始化函數(shù)*/(i f (access (B".O)/*判斷文件是否存在材newfi le() ;/*若不存在,新建數(shù)據(jù)文件*/elsereadl ():/*若存在,讀取數(shù)據(jù)*/ void newfile() /*建立新的數(shù)據(jù)文件/int i:FILE *fp;if (fp=fopen("", "wb") =N

6、ULL) /*創(chuàng)建二進制文件*/printfC創(chuàng)建文件失敗,請重新運行程序An");/*顯示創(chuàng)建文件失敗,請重新運行程序"*/exit(O);/*終止程序*/printfC初次運行,進行數(shù)據(jù)初始牝.n");/*顯示"初次運行,進行數(shù)據(jù)初始化."*/stopO ;printfC請輸入學生人數(shù):");/*顯示"請輸入學生人數(shù):"*/scanf("%d",&num):for(i=0;i<num;i+)printfC請輸入第d個學生的學號:,i + l); /*顯示請輸入笫i + 1個學生

7、的學號:"*/getchar ():/*吃回車*/gets(stui.no);printfC姓名:”);/*顯示”姓名:"*/gets(stui. name);printfC班級:”);/*顯示"班級:"*/gets(stui. grade);printf (-專業(yè):"):/*顯示"專業(yè):"*/gets(stui. pro);printf (入學年n: ") ;/*顯示"入學年"*/scanf&stui. year);printfCC語言成績:n);/*顯示七語言成績3/scanf(H%

8、fstu i.score 0);printf(-高數(shù)成績:");/*顯示"高數(shù)成績"*/scanf (H%f t&stui. score l);printfC大物成績:”);/*顯示"大物成績"*/scanf C%f"stui. score2);printf (電路成績:");/*顯示"電路成績"*/scanf ("%f ,&stu i. score 3);printf(-模電成績:");/顯示"模電成績"*/scanf C%f"&

9、stui. score4);fwrite(&stui, 1, sizeof (struct student), fp): /*把第 i+1 名學生成績寫入文件*/fclose(fp);printf (" =n);printf(-剛才輸入的%d個數(shù)據(jù)為:n'.nuni);/*顯示"剛才輸入的num個數(shù)據(jù)為:"*/printf (" =nrT);output ();void read 1()/*從數(shù)據(jù)文件中讀取數(shù)據(jù)*/FILE *fp;num=0; /*num為數(shù)據(jù)文件中實際存儲的學生人數(shù)*/fp=fopen("",&qu

10、ot;r"):if(fp二二NULL) /*數(shù)據(jù)文件不存在*/printf(-文件打開失??!重新運行程序十);"顯示'文件打開失?。≈匦逻\行程序3/exit(0);while (! feof (fp) /*文件結(jié)束檢測"*/fread(&stunum.1,sizeof(struct student),fp);num+;num;fclose(fp);printf( ttt=n );printf(" ttt現(xiàn)有%d個學生的成績:n",num): /*顯示現(xiàn)有NUM個學生的成績:"*/ printf("ttt=nn

11、n);output (); void weihu() /*維護界面函數(shù)/char cl;while(l)printf(Hnnnttt*nJ ;printf(Httt*維護*十);printf(wttt*1.新增*n") ; /*新增*/printf(wttt*2.刪除*n"); /*刪除(按學號)printf(Httt*3 修改*n"); /*修改*/printf(wttt*9.返回*n,r): /*返回*/printf (Httt*n11);printf ("ttt 請選擇:nw) ;/*請選擇:*/cl=getchar ();getchar ();i

12、f(cl='9)break;switch(cl)case T :newl ();break;case 2:deletel ();case 3:xiugai ();break;default:printf(”選擇有誤,請重選! n");/*"選擇有誤,請重選!"*/void newl () /*新增一個學生成績函數(shù)/printfC請輸入學號:ff); /*顯示”請輸入學號:3/gets(stunum no);printfC姓名); /*顯示”姓名*/gets(stunum, name);printfC班級:"):/*顯示"班級:"

13、;*/gets(stunum grade);printf C專業(yè):”);/*顯示"專業(yè):"*/gets(stunum pro):printf(-入學年:');/*顯示入學年”*/scanf (”d".&stuninn year);printfCC語言成績:");/顯示"C語言成績"*/scanf (H%f &stuninn scorefO);printf(-高數(shù)成績:");/*顯示”高數(shù)成績"*/scanf("%f&stunum scoreEl);printf (大物成績:

14、");/*顯示"大物成績"*/scanf("%f&stunum score2);printf(-電路成績:");/顯示電路成績"*/scanf (”f&stuninn score3);printf(-模電成績:");/*顯示”模電成績"*/scanf (H%f &stuninn score4);nil m+;printf(" n=nn);printf (現(xiàn)有%d個學生的成績:n,num); /*顯示”現(xiàn)有NUM個學生的成績:"*/printf();output ();vo

15、id xiugai()/*修改學生成績*/char xgl1;int i ;printf ("n請輸入要修改學生的學號:nn");gets(xg);for(i=0;i<num;i+)if (strcmp(stui no. xg)0)break;if(i=num)printf ("n數(shù)據(jù)文件無該生信息!nn請重新輸入學號.nn");StopO ;return;xgcj(i);void xgcj(int x)/*修改成績*/char xueke510=,C 語言","高數(shù)”,"物理”,"電路",&quo

16、t;模電char (*p)10,c;int j,k;p=xueke;for (:)printf("n");printf(nttt成績十);printf(Mttt語言n");/*C語言*/printf(nttt2.高數(shù)n");/*高數(shù)*/printf(nttt3物理n");/*大學物理*/printf (nttt4.電路n");/*電路*/printf(nttt5模電n");/*模電*/printf(nttt9.返回nn");/*返回上級*/printf(nttt*nn");printf(wt請選擇要修改的

17、成績(按1. 2. 3. M); c=getchar(); getchar(); if (c=,9,)break; else if (c>=T'&&c<=°5)k=c-49;printf Cn 請輸入 %s 成績:n",p+k):scanf(w%fM.&stux. scorek):printf Cn 修 息為:n"):printf("學號姓名 班級 專業(yè)入學年C語言高數(shù)大物電路模電n»4 ta*mmmbmb mb mb*«» « «»« mm

18、 «»pi 1 ntl in )ro,stux yenr);for(j=0;j<5;j+)printf C% lfn.stux. scorej):printf ("n");else printf ("Xn 選擇有誤,請重選!nn");StopO ;int find (char sno) /* 按學號查找/(int i;for(i=0;i<num; i+)if (strcmp(stui. no,sno) =0) /*判斷兩個字符串相等*/return i;/*查找成功*/return -1;/*查找失敗*/void dele

19、telO /*刪除學生信息函數(shù)*/char cnol1:int i.j;printf C請輸入要刪除的學生學號:”);/*"請輸入要刪除的學生學號"*/gets (eno);i=find(cno);for(j=i;j<num;j+)stuj=stuj+l;num;printf("現(xiàn)有%d個學生的成績:nnum); /*顯示現(xiàn)有NUM個學生的成績:"*/output () ; else printf ("請輸入正確的學號.n");StopO ; void tongji ()/*統(tǒng)計界面函數(shù)/int i;char c2;while(

20、l)printf(Hnnnttt*n *);printf(wttt*統(tǒng)計printf(wttt*1.學生平均分*n-); /*計算學生平均分*/printf(Httt*2.課程平均分*nB); /*計算每門課程平均分*/printf(wttt*9返回*n"); /*返回*/printf Cttt 請選擇:n") :/請選擇:*/c2=getchar();getchar ();if(c2=,9,) break;switch(c2)case T :tongjil ();printf (Bnn學生平均分為:n"):printf (R=n");printf(-學

21、號 姓名 入學年平均分r/);printf (R=:=:=n");for(i=0;i<num; i+)printf(n%s%s %d%.2fn”,stui no,stui ruime.stui year,stui ave);stopO ;break;case 2:tongji2();break;default:printf C選擇有誤,請重選宀/才選擇有誤,請重選! 5/void tongjil () /*計算每個學生平均分*/int i,Jfor(i=0;i<num;i+)stui ave=O;for(j=0;j<5;j+)stui ave+=stui score

22、j:stui ave=stui ave/5;void tongji2()/*計算每門課程的平均分*/(int i.j;float sum;float avec5; /*儲存每門課的平均分*/for(j=0;j<5;j+)sum二0;for(i=0;i<num;i+)sum+=stui scorej:avecj=sum/num;printfCnn各科平均分:nw);/*"各科平均分:Wpr i n t f (" =nM): printfCC語言 高數(shù) 大物 電路模電n”);pr i n t f (" =nM):for(i=0;i<5;i+)prin

23、tflfH,aveci);printf(*n");stop();void paixul ()/*排序界面*/char c3;for (:)printf (WnrT);printf(XtXtXt*排序* n");printf (XtXtXt*1.按學號排序* n);/*按學號排序*/printf("ttt*2.按平均分排序* n);/*按平均分排序*/printf(XtXtXt*3.按單科成績排序* n"); /*按單科成績排序*/printf("ttt*9.返回* nj; /*返回*/printfCt 請選擇:(按 L2. 3. 9):nn);

24、/*請選擇:/c3-getchar();getchar ();if(c3=,9,) break;switch(c3)case T : painoO ; break;case 2:paiave();break;case 3:paidkcj();break;default:printf (nn選擇有誤,請重選!nnu) ;/*選擇有誤,請重選!*/StopO ;void painoO /*按學號排序*/*按學號從低到高冒泡法排序*/int i,j;for(i=0;i<num;i+)for(j=0;j<num-l-i;j+)if(strcmp(stujl. no.stuj+l. no)&

25、gt;0)change(j,j+l):printf("n排序后為:nB); /*"排序后為:"*/output ();void paiaveO/*按平均分排序/(/*按平均分從高到低冒泡法排序*/int i,j;tongji 1 () ; /*計算平均成績*/for(i=0;i<num; i+)for (j=0;j<num-i-l;j+)if(stuj ave<stuj+l ave)change(j,j+l);printf(ffnt排序后為:rT); /*”排序后為:Wprintf (1=nM);printfCt學號 姓名 入學年 平均分 排名十

26、); printf ( t=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:n ); for(i=0;i<num;i+)printf (nt%s %s %d %. 2f MdXn.stuti. no.stui name, stui year, stui ave, i + 1);stopO ;void paidkcj ()/*按單科成績排序*/(char c;int i,j,k;while(l)printf(Hn*);printf(nttt*nn");printf(nttt單科成績W);printf(uttt語言n");/*C 語言*/printf

27、(nttt2.高數(shù)n");/* 高數(shù)*/printf(Mttt3.物理nB);/*大學物理*/printf(nttt4.電路n");/* 電路*/printf(nttt5.模電n");/* 模電*/printf(nttt9返回nn-); /*返回上級*/printf(”ttt*nn ”);printf("t 請選擇:(按 1.2.3.”);c=getchar(); getchar(); if(c=r9r)break;else if (c>=T&&cU5)k=c-49;for(i=0;i<num;i+)for (j=0; jnu

28、mT-i ; j+)if (stuj. scorekstuj+l scorek) change (jj+l);outputx(k);else printf ("n 選擇有誤,請重選!nn");StopO ;void change(int i, int j)/*交換結(jié)構體數(shù)組中的兩個記錄*/struct student temp;temp=stui;stui=stuj:stuj=temp;void outputx(int k)選擇輸出單科成績*/char xueke510 = wC語言高數(shù)歲物理T電路T模電;char (*p)101;/*定義一個指向包含10個字符型元素的一維

29、數(shù)組的指針變量*/int i ;p=xueke;printf (nnt 排序后為:n"); n t«iM «Z»ZZZ MM Zm«ZZ MM MMmZ mZZm«» «* «* «Z mZ mZZZ ZZoZX Z2X«» «»4HM OMB ) ;printf (Bt學號 姓名入學年 %s 排名n",p+k):for(i=0;i<num; i+)printf("t%TIs% -10s%-lld%-6. lf%5dnu,stui

30、. no,stui name,stui year.stui scorek, i + 1);void findl ()/*查找界面函數(shù)*/char c4;char cnol1,cname10;int i,cyear;while(l)printf(Httt*查找*nn);printf("ttt*1.按學號查找*n");/*按學號查找*/printf(wttt*2.按姓名查找*n");/*按姓名查找*/printf("ttt*3.按入學年查找*n");/*按入學年查找*/printf(wttt*9.返回*n");/*返回*/printf C

31、ttt 請選擇:nM):/*請選擇:*/c4=getchar();getchar ();if(c4=57) break;switch (c4)case T :printf ("輸入學號:n");/*"輸入學號:"*/gets(eno);i=find(cno);panduani (i):break;case 2:printf (-輸入姓名:n"): /*"輸入姓名:"*/gets(cname);i=findname(cname);panduani (i);break:case 3:printf (”輸入入學年:n);/*&qu

32、ot;輸入入學年"*/scanf(*%d".&cyear);findyear(cyear);stopO ;break;default:printf (”選擇有誤,請重選!十);/討選擇有誤,請重選! Tint findname (char cname) /*按姓名查找*/int i;for(i=0;i<num; i+)if (strcmp(stui, name, cname) =0) /水判斷兩個字符串相等*/return i:/*查找成功*/return -1;/*查找失敗*/void findyear(int cyear)int i,j,flag=0;fo

33、r(i=0;i<num;i+)if (stui yeafHcyear) flag=l:break;if(flag=0)printf ("要查找的學生不存在n") ; stopO ; elseprintfC查找到的學生信息為:n');/*"查找到的學生信息為:"*/電路模電=nH)printfC學號姓名班級專業(yè)入學年C語言 高數(shù)大物printf("二for (i=0; inuni; i+)if (stui. yearHcyenr)/*判斷兩個數(shù)值相等*/printf (n%s %s %s %s %d", stui notstui name, stuEi grade,stui pro ,stui year*):for(j=0;j<5;j+)printf (n %. lf'stui. scorej):printf("n"):) void panduani (int i) 通過i的值,判斷信息要查找的信息是否存在

溫馨提示

  • 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

提交評論