C語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)-完整版_第1頁
C語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)-完整版_第2頁
C語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)-完整版_第3頁
C語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)-完整版_第4頁
C語言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)-完整版_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上#include<stdio.h>#include<stdlib.h>#include<io.h>#include<string.h>/* strcmp函數(shù)原型包含*/#define N 100/*定義最大學(xué)生人數(shù)為100*/struct student /*學(xué)生結(jié)構(gòu)體定義*/ char no11; /*學(xué)號(hào),10位*/ char name10;/*姓名,3個(gè)漢字*/ char grade10;/*班級(jí)*/ char pro20;/*專業(yè)*/ float score5;/*儲(chǔ)存5門功課的成績(jī)*/ float ave;/*

2、儲(chǔ)存平均分*/ int year;/*入學(xué)年*/stuN;int num;void panduani(int); /*通過i的值,判斷信息要查找的信息是否存在*/void output(); /*輸出學(xué)生成績(jī)函數(shù)(公共函數(shù))*/void init(); /*系統(tǒng)初始化函數(shù)*/void newfile(); /*建立新的數(shù)據(jù)文件*/void read1(); /*從數(shù)據(jù)文件中讀取數(shù)據(jù)*/void weihu(); /*維護(hù)界面函數(shù)*/void new1(); /*新增一個(gè)學(xué)生成績(jī)函數(shù)*/void xiugai(); /*修改學(xué)生成績(jī)*/void xgcj(int); /*修改成績(jī)*/void d

3、elete1(); /*刪除學(xué)生信息函數(shù)*/void tongji(); /*統(tǒng)計(jì)界面函數(shù)*/void tongji1(); /*計(jì)算每個(gè)學(xué)生平均分*/void tongji2(); /*計(jì)算每門課程的平均分*/void paixu1(); /*排序函數(shù)*/void paino(); /*按學(xué)號(hào)排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按單科成績(jī)排序*/void change(int,int); /*交換結(jié)構(gòu)體數(shù)組中的兩個(gè)記錄*/void outputx(int); /*選擇輸出單科成績(jī)*/void find1(); /*查找界面函數(shù)*/in

4、t find(char sno); /*按學(xué)號(hào)查找*/int findname(char cname);/*按姓名查找*/void findyear(int cyear); /*按入學(xué)年查找*/void save(); /*保存文件*/void stop(); /*停頓函數(shù)*/void stop() /*停頓函數(shù) (公共函數(shù))*/ printf("Press Any Key To Continue.n"); getchar();void output() /*輸出學(xué)生成績(jī)函數(shù)(公共函數(shù))*/ int i,j; printf("=n"); printf(&

5、quot;學(xué)號(hào) 姓名 班級(jí) 專業(yè) 入學(xué)年 C語言 高數(shù) 大物 電路 模電n"); printf("=n"); for(i=0;i<num;i+) printf("%s %s %s %s %d",stui.no,,stui.grade,,stui.year); for(j=0;j<5;j+) printf(" %.1f",stui.scorej); printf("n"); stop();void init() /*系統(tǒng)初始化函數(shù) */ if(access(&q

6、uot;stu.dat",0) /*判斷文件是否存在*/ newfile(); /*若不存在,新建數(shù)據(jù)文件*/ else read1(); /*若存在,讀取數(shù)據(jù)*/void newfile() /*建立新的數(shù)據(jù)文件 */ int i; FILE *fp; if(fp=fopen("stu.dat","wb")=NULL) /*創(chuàng)建二進(jìn)制文件*/ printf("創(chuàng)建文件失敗,請(qǐng)重新運(yùn)行程序.n"); /*顯示"創(chuàng)建文件失敗,請(qǐng)重新運(yùn)行程序"*/ exit(0); /*終止程序*/ printf("

7、;初次運(yùn)行,進(jìn)行數(shù)據(jù)初始化.n");/*顯示"初次運(yùn)行,進(jìn)行數(shù)據(jù)初始化."*/ stop(); printf("請(qǐng)輸入學(xué)生人數(shù):");/*顯示"請(qǐng)輸入學(xué)生人數(shù):"*/ scanf("%d",&num); for(i=0;i<num;i+) printf("請(qǐng)輸入第 %d個(gè)學(xué)生的學(xué)號(hào):",i+1); /*顯示"請(qǐng)輸入第i+1個(gè)學(xué)生的學(xué)號(hào):"*/ getchar(); /*吃回車*/ gets(stui.no); printf("姓名:"

8、;); /*顯示"姓名:"*/ gets(); printf("班級(jí):"); /*顯示"班級(jí):"*/ gets(stui.grade); printf("專業(yè):"); /*顯示"專業(yè):"*/ gets(); printf("入學(xué)年n:");/*顯示"入學(xué)年"*/ scanf("%d",&stui.year); printf("C語言成績(jī):");/*顯示"C語言成績(jī)&

9、quot;*/ scanf("%f",&stui.score0); printf("高數(shù)成績(jī):");/*顯示"高數(shù)成績(jī)"*/ scanf("%f",&stui.score1); printf("大物成績(jī):");/*顯示"大物成績(jī)"*/ scanf("%f",&stui.score2); printf("電路成績(jī):");/*顯示"電路成績(jī)"*/ scanf("%f",&

10、;stui.score3); printf("模電成績(jī):");/*顯示"模電成績(jī)"*/ scanf("%f",&stui.score4); fwrite(&stui,1,sizeof(struct student),fp); /*把第i+1名學(xué)生成績(jī)寫入文件*/ fclose(fp); printf("=n"); printf(" 剛才輸入的 %d 個(gè)數(shù)據(jù)為:n",num); /*顯示"剛才輸入的 num 個(gè)數(shù)據(jù)為:"*/ printf("=nn&q

11、uot;); output();void read1() /*從數(shù)據(jù)文件中讀取數(shù)據(jù) */ FILE *fp; num=0; /*num為數(shù)據(jù)文件中實(shí)際存儲(chǔ)的學(xué)生人數(shù)*/ fp=fopen("stu.dat","r"); if(fp=NULL) /*數(shù)據(jù)文件不存在*/ printf("文件打開失??!重新運(yùn)行程序n"); /*顯示"文件打開失?。≈匦逻\(yùn)行程序"*/ exit(0); while(!feof(fp) /*文件結(jié)束檢測(cè)"*/ fread(&stunum,1,sizeof(struct st

12、udent),fp); num+; num-; fclose(fp); printf("ttt=n"); printf(" ttt現(xiàn)有 %d 個(gè)學(xué)生的成績(jī):n",num); /*顯示"現(xiàn)有 NUM個(gè)學(xué)生的成績(jī):"*/ printf("ttt=nn"); output();void weihu() /*維護(hù)界面函數(shù) */ char c1; while(1) printf("nnnttt*n"); printf("ttt* 維護(hù) *n"); printf("ttt* 1

13、. 新增 *n"); /*新增*/ printf("ttt* 2. 刪除 *n"); /*刪除(按學(xué)號(hào))*/ printf("ttt* 3. 修改 *n"); /*修改*/ printf("ttt* 9. 返回 *n"); /*返回*/ printf("ttt*n"); printf("ttt 請(qǐng)選擇:n");/*請(qǐng)選擇:*/ c1=getchar(); getchar(); if(c1='9') break; switch(c1) case '1':

14、new1(); break; case '2': delete1(); case '3': xiugai(); break; default: printf("選擇有誤,請(qǐng)重選!n");/*"選擇有誤,請(qǐng)重選!"*/ void new1() /*新增一個(gè)學(xué)生成績(jī)函數(shù) */ printf("請(qǐng)輸入學(xué)號(hào):"); /*顯示"請(qǐng)輸入學(xué)號(hào):"*/ gets(stunum.no); printf("姓名:"); /*顯示"姓名:"*/ gets(stunu

15、); printf("班級(jí):"); /*顯示"班級(jí):"*/ gets(stunum.grade); printf("專業(yè):"); /*顯示"專業(yè):"*/ gets(); printf("入學(xué)年:");/*顯示"入學(xué)年"*/ scanf("%d",&stunum.year); printf("C語言成績(jī):");/*顯示"C語言成績(jī)"*/ scanf("%f",

16、&stunum.score0); printf("高數(shù)成績(jī):");/*顯示"高數(shù)成績(jī)"*/ scanf("%f",&stunum.score1); printf("大物成績(jī):");/*顯示"大物成績(jī)"*/ scanf("%f",&stunum.score2); printf("電路成績(jī):");/*顯示"電路成績(jī)"*/ scanf("%f",&stunum.score3); printf

17、("模電成績(jī):");/*顯示"模電成績(jī)"*/ scanf("%f",&stunum.score4); num+; printf("n=n"); printf("現(xiàn)有 %d個(gè)學(xué)生的成績(jī):n",num); /*顯示"現(xiàn)有 NUM個(gè)學(xué)生的成績(jī):"*/ printf("=nn"); output();void xiugai() /*修改學(xué)生成績(jī)*/ char xg11; int i; printf("n請(qǐng)輸入要修改學(xué)生的學(xué)號(hào):nn");

18、 gets(xg); for(i=0;i<num;i+) if(strcmp(stui.no,xg)=0)break; if(i=num) printf("n數(shù)據(jù)文件無該生信息!nn請(qǐng)重新輸入學(xué)號(hào).nn"); stop(); return; xgcj(i);void xgcj(int x) /*修改成績(jī)*/ char xueke510="C語言","高數(shù)","物理","電路","模電" char (*p)10,c; int j,k; p=xueke; for(;) pr

19、intf("n"); printf("ttt*nn"); printf("ttt 成績(jī) n"); printf("ttt 1.C 語言 n"); /*C語言*/ printf("ttt 2.高數(shù) n"); /*高數(shù)*/ printf("ttt 3.物理 n"); /*大學(xué)物理*/ printf("ttt 4.電路 n"); /*電路*/ printf("ttt 5.模電 n"); /*模電*/ printf("ttt 9.返回

20、 nn"); /*返回上級(jí)*/ printf("ttt*nn"); printf("t請(qǐng)選擇要修改的成績(jī)(按 .5.9):n"); c=getchar(); getchar(); if(c='9')break; else if (c>='1'&&c<='5') k=c-49; printf("n請(qǐng)輸入 %s 成績(jī):n",p+k); scanf("%f",&stux.scorek); printf("

21、n修 息為:n"); printf("學(xué)號(hào) 姓名 班級(jí) 專業(yè) 入學(xué)年 C語言 高數(shù) 大物 電路 模電n"); printf("=n"); printf("%s %s %s %s %d",stux.no,,stux.grade,,stux.year); for(j=0;j<5;j+) printf(" %.1f",stux.scorej); printf("n"); else printf("n選擇有誤,請(qǐng)重選!nn"); st

22、op(); int find(char sno) /*按學(xué)號(hào)查找 */ int i; for(i=0;i<num;i+) if(strcmp(stui.no,sno)=0) /*判斷兩個(gè)字符串相等*/ return i;/*查找成功*/ return -1;/*查找失敗*/void delete1() /*刪除學(xué)生信息函數(shù)*/ char cno11; int i,j; printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):"); /*"請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)"*/ gets(cno); i=find(cno); if(i!=-1) for(j=i;j<nu

23、m;j+) stuj=stuj+1; num-; printf("現(xiàn)有%d 個(gè)學(xué)生的成績(jī):n",num); /*顯示"現(xiàn)有 NUM個(gè)學(xué)生的成績(jī):"*/ output(); else printf("請(qǐng)輸入正確的學(xué)號(hào). n"); stop();void tongji() /*統(tǒng)計(jì)界面函數(shù) */ int i; char c2; while(1) printf("nnnttt*n"); printf("ttt* 統(tǒng)計(jì) *n"); printf("ttt* 1. 學(xué)生平均分 *n")

24、; /*計(jì)算學(xué)生平均分*/ printf("ttt* 2. 課程平均分 *n"); /*計(jì)算每門課程平均分*/ printf("ttt* 9. 返回 *n"); /*返回*/ printf("ttt*n"); printf("ttt請(qǐng)選擇:n");/*請(qǐng)選擇:*/ c2=getchar(); getchar(); if(c2='9') break; switch(c2) case '1': tongji1(); printf("nn學(xué)生平均分為:n"); prin

25、tf("=n"); printf("學(xué)號(hào) 姓名 入學(xué)年 平均分n"); printf("=n"); for(i=0;i<num;i+) printf("%s %s %d %.2fn",stui.no,,stui.year,stui.ave); stop(); break; case '2': tongji2(); break; default: printf("選擇有誤,請(qǐng)重選n");/*"選擇有誤,請(qǐng)重選!"*/ void tongj

26、i1() /*計(jì)算每個(gè)學(xué)生平均分*/ int i,j; for(i=0;i<num;i+) stui.ave=0; for(j=0;j<5;j+) stui.ave+=stui.scorej; stui.ave=stui.ave/5; void tongji2() /*計(jì)算每門課程的平均分*/ int i,j; float sum; float avec5; /*儲(chǔ)存每門課的平均分*/ for(j=0;j<5;j+) sum=0; for(i=0;i<num;i+) sum+=stui.scorej; avecj=sum/num; printf("nn各科平均

27、分:n");/*"各科平均分:"*/ printf("=n"); printf("C語言 高數(shù) 大物 電路 模電n"); printf("=n"); for(i=0;i<5;i+) printf("%-7.1f",aveci); printf("n"); stop();void paixu1() /*排序界面*/ char c3; for(;) printf("nnn"); printf("ttt*n"); printf

28、("ttt* 排序 * n"); printf("ttt* 1. 按學(xué)號(hào)排序 * n"); /*按學(xué)號(hào)排序*/ printf("ttt* 2. 按平均分排序 * n"); /*按平均分排序*/ printf("ttt* 3. 按單科成績(jī)排序 * n"); /*按單科成績(jī)排序*/ printf("ttt* 9. 返回 * n"); /*返回*/ printf("ttt*nn"); printf("t請(qǐng)選擇:(按):n");/*請(qǐng)選擇:*/ c3

29、=getchar(); getchar(); if(c3='9') break; switch(c3) case '1':paino();break; case '2':paiave();break; case '3':paidkcj();break; default: printf("n選擇有誤,請(qǐng)重選!nn");/*選擇有誤,請(qǐng)重選!*/ stop(); void paino() /*按學(xué)號(hào)排序*/ /*按學(xué)號(hào)從低到高冒泡法排序*/ int i,j; for(i=0;i<num;i+) for(j=0

30、;j<num-1-i;j+) if(strcmp(stuj.no,stuj+1.no)>0) change(j,j+1); printf("n排序后為:n"); /*"排序后為:"*/ output();void paiave() /*按平均分排序 */ /*按平均分從高到低冒泡法排序*/ int i,j; tongji1(); /*計(jì)算平均成績(jī)*/ for(i=0;i<num;i+) for(j=0;j<num-i-1;j+) if(stuj.ave<stuj+1.ave) change(j,j+1); printf(&q

31、uot;nt排序后為:n"); /*"排序后為:"*/ printf("t=n"); printf("t學(xué)號(hào) 姓名 入學(xué)年 平均分 排名n"); printf("t=n"); for(i=0;i<num;i+) printf("t%s %s %d %.2f %4dn",stui.no, ,stui.year,stui.ave,i+1); stop();void paidkcj() /*按單科成績(jī)排序*/ char c; int i,j,k; while(1) p

32、rintf("n"); printf("ttt*nn"); printf("ttt 單科成績(jī) n"); printf("ttt 1.C 語言 n"); /*C語言*/ printf("ttt 2.高數(shù) n"); /*高數(shù)*/ printf("ttt 3.物理 n"); /*大學(xué)物理*/ printf("ttt 4.電路 n"); /*電路*/ printf("ttt 5.模電 n"); /*模電*/ printf("ttt 9

33、.返回 nn"); /*返回上級(jí)*/ printf("ttt*nn"); printf("t請(qǐng)選擇:(按.5.9):n"); c=getchar(); getchar(); if(c='9')break; else if (c>='1'&&c<='5') k=c-49; for(i=0;i<num;i+) for(j=0;j<num-1-i;j+) if(stuj.scorek<stuj+1.scorek) change(j,j+1);

34、outputx(k); else printf("n選擇有誤,請(qǐng)重選!nn"); stop(); void change(int i,int j) /*交換結(jié)構(gòu)體數(shù)組中的兩個(gè)記錄*/ struct student temp; temp=stui; stui=stuj; stuj=temp;void outputx(int k) /*選擇輸出單科成績(jī)*/ char xueke510="C語言","高數(shù)","物理","電路","模電" char (*p)10; /*定義一個(gè)指向包

35、含10個(gè)字符型元素的一維數(shù)組的指針變量*/ int i; p=xueke; printf("nt排序后為:n"); printf("t=n"); printf("t學(xué)號(hào) 姓名 入學(xué)年 %s 排名n",p+k); printf("t=n"); for(i=0;i<num;i+) printf("t%-11s% -10s%-11d%-6.1f%5dn",stui.no, ,stui.year,stui.scorek,i+1);void find1() /*查找界面函數(shù)*/ c

36、har c4; char cno11,cname10; int i,cyear; while(1) printf("ttt*n"); printf("ttt* 查找 *n"); printf("ttt* 1. 按學(xué)號(hào)查找 *n"); /*按學(xué)號(hào)查找*/ printf("ttt* 2. 按姓名查找 *n"); /*按姓名查找*/ printf("ttt* 3. 按入學(xué)年查找 *n"); /*按入學(xué)年查找*/ printf("ttt* 9. 返回 *n"); /*返回*/ pri

37、ntf("ttt*n"); printf("ttt請(qǐng)選擇:n");/*請(qǐng)選擇:*/ c4=getchar(); getchar(); if(c4=57) break; switch(c4) case '1': printf("輸入學(xué)號(hào):n");/*"輸入學(xué)號(hào):"*/ gets(cno); i=find(cno); panduani(i); break; case '2': printf("輸入姓名:n");/*"輸入姓名:"*/ gets(cn

38、ame); i=findname(cname); panduani(i); break; case '3': printf("輸入入學(xué)年:n");/*"輸入入學(xué)年"*/ scanf("%d",&cyear); findyear(cyear); stop(); break; default: printf("選擇有誤,請(qǐng)重選!n");/*"選擇有誤,請(qǐng)重選!"*/ int findname(char cname) /*按姓名查找*/ int i; for(i=0;i<

39、num;i+) if(strcmp(,cname)=0) /*判斷兩個(gè)字符串相等*/ return i; /*查找成功*/ return -1; /*查找失敗*/void findyear(int cyear) int i,j,flag=0; for(i=0;i<num;i+) if(stui.year=cyear) flag=1;break; if(flag=0) printf("要查找的學(xué)生不存在n");stop(); else printf("查找到的學(xué)生信息為:n");/*"查找到的學(xué)生信息為:"*/

40、printf("學(xué)號(hào) 姓名 班級(jí) 專業(yè) 入學(xué)年 C語言 高數(shù) 大物 電路 模電n"); printf("=n"); for(i=0;i<num;i+) if(stui.year=cyear) /*判斷兩個(gè)數(shù)值相等*/ printf("%s %s %s %s %d",stui.no,,stui.grade,,stui.year); for(j=0;j<5;j+) printf(" %.1f",stui.scorej); printf("n"); void panduani(int i) /*通過i的值,判斷信息要查找的信息是否存在*/ int j; if(i=-1) printf("要查找的學(xué)生不存在n");/*要查找的學(xué)生不存在*/ stop(); else 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)論