[C語言]學(xué)生成績管理系統(tǒng)_第1頁
[C語言]學(xué)生成績管理系統(tǒng)_第2頁
[C語言]學(xué)生成績管理系統(tǒng)_第3頁
[C語言]學(xué)生成績管理系統(tǒng)_第4頁
[C語言]學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一 設(shè)計內(nèi)容1. 需求分析1.1項目需求概述 通過此系統(tǒng)可以實現(xiàn)如下功能:1) 數(shù)據(jù)信息的錄入2) 學(xué)生、課程及成績?nèi)匡@示3) 查詢功能4) 成績修改及刪除5) 成績統(tǒng)計6) 退出系統(tǒng)功能要求及說明 1、數(shù)據(jù)信息的錄入1)學(xué)生基本信息錄入:學(xué)號不允許重復(fù) 錄入信息保存在student文件中 2)課程信息的錄入:錄入信息保存在course文件中3)學(xué)生成績錄入:成績信息保存在score文件中錄入學(xué)生成績信息時,綜合成績根據(jù)條件自動運(yùn)算。運(yùn)算方法:如果錄入課程為公共課,則 綜合成績=平時成績*30%+卷面成績*70%如果錄入課程為專業(yè)課,則 綜合成績=平時成績*40%+卷面成績*70%.說明:課

2、號S開頭表示專業(yè)課,P開頭表示公共基礎(chǔ)課。2、學(xué)生、課程及成績顯示:輸出所有的學(xué)生信息及成績信息3、查詢功能1)學(xué)生信息查詢輸入一個學(xué)號或姓名(可實現(xiàn)選擇),查出此學(xué)生的基本信息并顯示輸出。輸入性別、所在系名,可查詢所有男生(女生)、本系所有的學(xué)生的基本信息并顯示輸出。 2)成績查詢:輸入一個學(xué)號時,查詢出此學(xué)生的所有課程成績信息并以列表顯示,顯示內(nèi)容包括:學(xué)號、課程名、平時成績、卷面成績、綜合成績輸入一個學(xué)生的姓名時,查詢出此學(xué)生的所有課程成績信息并以列表顯示,顯示內(nèi)容包括:學(xué)號、姓名、性別、所在系、課程名、綜合成績輸入一門課程名稱,可查詢出所有選修這門課程的學(xué)生成績。 4、成績修改(要求先

3、輸入密碼)在修改成績之前必須輸入正確的用戶密碼才能進(jìn)入成績修改菜單進(jìn)行操作。5、刪除功能當(dāng)在student.txt中刪除一個學(xué)生時,自動地在score.txt中刪除此人所有信息。6、成績統(tǒng)計顯示每門課程成績最高的學(xué)生的基本信息顯示每門課程的平均成績顯示每門課程不及格(綜合成績小于60分)的學(xué)生信息,并統(tǒng)計出人數(shù)。7、退出系統(tǒng)2. 概要設(shè)計功能模塊圖: 3. 詳細(xì)設(shè)計 2.1 系統(tǒng)流程描述 2.2 主要數(shù)據(jù)變量結(jié)構(gòu)定義 本系統(tǒng)主要定義了三個結(jié)構(gòu)體,分別用于存儲學(xué)生基本信息(struct student),課程信息(struct course),學(xué)生成績(struct score) 其中,學(xué)生基本

4、信息和學(xué)生成績分別定義了兩個結(jié)構(gòu)體變量(struct student inf,struct student inf230和struct score infs,struct score infs230) 具體的結(jié)構(gòu)體定義如下: struct student/定義結(jié)構(gòu)體名為student的結(jié)構(gòu)變量inf char num10;/學(xué)生學(xué)號 char name10;/學(xué)生姓名 char sex10;/學(xué)生性別 char age10;/學(xué)生年齡 char dep10;/department,所在系;struct student inf;struct student inf230;struct cours

5、e/定義結(jié)構(gòu)體名為course的結(jié)構(gòu)變量infc char snum10;/課程編號 char sname10;/課程名稱 char teacher10;/教課教師;struct course infc;struct score/定義結(jié)構(gòu)體名為score的結(jié)構(gòu)變量infs char num10;/學(xué)生學(xué)號 char snum10;/課程編號 float pscore;/平時成績 float lscore;/卷面成績 float sscore;/綜合成績;struct score infs;struct score infs230; 2.3 系統(tǒng)所有主要功能的主要函數(shù)的設(shè)計流程圖和代碼 1)主菜

6、單 int a;printf(-歡迎進(jìn)入學(xué)生成績管理系統(tǒng)-n);printf( n);printf( 1.教學(xué)信息登入(請輸入1) n);printf( 2.查詢學(xué)生信息(請輸入2) n);printf( 3.修改學(xué)生信息(請輸入3) n); printf( 4.學(xué)生信息統(tǒng)計(請輸入4) n);printf( 5.顯示全部學(xué)生信息(請輸入5) n);printf( 6.刪除學(xué)生信息(請輸入6) n);printf( n);printf(-退出本系統(tǒng)(請輸入7)-n);scanf(%d,&a);switch(a)/選擇函數(shù)進(jìn)行調(diào)用case 1:EI(); break; case 2:SF();b

7、reak;case 3: SR();break; case 4:SC();break; case 5:SS();break;case 6:SD();break;case 7:exit();break; default:printf(您輸入有誤,請重新輸入n);MM();break; 2)信息登入函數(shù)(以登入學(xué)生基本信息為例) char x;FILE *fp; fp=fopen(student.txt,a); x=y;/fprintf(fp,學(xué)號 姓名 性別 年齡 所在系)while(x=y|x=Y)/判斷是否繼續(xù)循環(huán)輸入printf(請輸入學(xué)生學(xué)號n);scanf(%s,&inf.num);p

8、rintf(請輸入學(xué)生姓名n);scanf(%s,&);printf(請輸入學(xué)生性別n);scanf(%s,&inf.sex);printf(請輸入學(xué)生年齡n);scanf(%s,&inf.age);printf(請輸入學(xué)生所在系n);scanf(%s,&inf.dep);fprintf(fp,%-6s%-7s%-6s%-6s%-6sn,inf.num,,inf.sex,inf.age,inf.dep);printf(繼續(xù)輸入嗎?是(y/Y)否(n/N)n);scanf(%S,&x);fclose(fp);printf(返回上一級菜單嗎?是(y/Y),不(n/N

9、)n); char y;scanf(%s,&y); if(y=y|y=Y)EI();elseexit(); 3)信息查詢函數(shù)(以根據(jù)學(xué)號或姓名進(jìn)行查詢的函數(shù)為例)printf(選擇根據(jù)學(xué)號查詢請輸入1,選擇根據(jù)姓名查詢請輸入2n); int a;int flag=0;FILE *op;FILE *o; scanf(%d,&a);int i=0; int j=0;switch(a)case 1:char n10;n2=0;op=fopen(student.txt,r);printf(請輸入學(xué)號n); scanf(%s,&n);while (!feof(op)fscanf(op,%s,&inf.n

10、um);fscanf(op,%s,&);fscanf(op,%s,&inf.sex);fscanf(op,%s,&inf.age);fscanf(op,%s,&inf.dep);if (strcmp(n,inf.num)=0) if (flag=0)printf(學(xué)號 姓名 性別 年齡 所在系n);printf(%-6s%-7s%-6s%-6s%-6sn,inf.num,,inf.sex,inf.age,inf.dep);flag=1;i+; fclose(op);if (i=0)printf(n 文件中無記錄!n);elseif (flag=0)printf(

11、 文件中無此人,請重新輸入n);SFIa();printf(返回上一級菜單嗎?是(y/Y),不(n/N)n);char y;scanf(%s,&y);if(y=y|y=Y)SFI();elseexit();break;case 2:char m10;printf(請輸入姓名n); scanf(%s,&m);o=fopen(student.txt,r);while (!feof(o)fscanf(o,%s,&inf.num);fscanf(o,%s,&);fscanf(o,%s,&inf.sex);fscanf(o,%s,&inf.age);fscanf(o,%s,&inf.de

12、p);if (strcmp(m,)=0) if (flag=0)printf(學(xué)號 姓名 性別 年齡 所在系n);printf(%-6s%-7s%-6s%-6s%-6sn,inf.num,,inf.sex,inf.age,inf.dep);flag=1; j+; fclose(o);if (j=0)printf(n 文件中無記錄!n);elseif (flag=0)printf( 文件中無此人,請重新輸入n);SFIa();printf(返回上一級菜單嗎?是(y/Y),不(n/N)n);char x;scanf(%s,&x);if(x=y|x=Y)SFI();e

13、lseexit();break;default:printf(您輸入錯誤,請重新輸入n);SFIa();break; 4)登陸界面函數(shù)(輸入用戶名和密碼,修改成績前需使用)printf(-學(xué)生成績修改界面-n);printf( n);printf( 輸入用戶名及密碼(請輸入1) n);printf( n);printf(-返回主菜單(請輸入2)-n);int a;char username10;char password10;char b10=admin; char c10=730;scanf(%d,&a);switch(a)case 1:printf(請輸入用戶名n);scanf(%s,us

14、ername);printf(請輸入密碼n);scanf(%s,password);if (strcmp(b,username)=0&strcmp(c,password)=0)/printf(輸入正確n);sr();/else if(strcmp(b,username)!=0)printf(用戶名錯誤,請重新輸入n);SR();else if(strcmp(c,password)!=0)printf(密碼錯誤,請重新輸入n);SR();break;case 2:MM();break;default:printf(輸入錯誤,請您重新輸入n);SR();break; 5)信息修改函數(shù)char nu

15、m10;num2=0;char snum10;int flag1=0;int flag2=0;float ps;float ls;float ss;printf(請輸入您所要修改學(xué)生的學(xué)號n);scanf(%s,num);FILE *op;FILE *fp;op=fopen(score.txt,r);fp=fopen(score.txt,r+);for(;) fscanf(op,%s,&infs.num); fscanf(op,%s,&infs.snum); fscanf(op,%s,&infs.pscore); fscanf(op,%s,&infs.lscore); fscanf(op,%s

16、,&infs.sscore); if (feof(op) break; if (strcmp(num,infs.num)=0) flag1=1; printf(請輸入您所要修改的課程編號n); scanf(%s,snum); if(strcmp(snum,infs.snum)=0) flag2=1; printf(請輸入修改后的平時成績n); scanf(%f,&ps); printf(請輸入修改后的卷面成績n); scanf(%f,&ls); infs.pscore=ps; infs.lscore=ls; if(snum0=P) ss=0.7*ls+0.3*ps;/infs.sscore=0

17、.7*infs.lscore+0.3*infs.pscore; infs.sscore=ss;fp=fopen(score.txt,r+); fprintf(fp,%-6s%-7s%-10.2f%-10.2f%-10.2fn,infs.num,infs.snum,infs.pscore,infs.lscore,infs.sscore); else if(snum0=S) ss=0.6*ls+0.4*ps;/infs.sscore=0.6*infs.lscore+0.4*infs.pscore; infs.sscore=ss;fp=fopen(score.txt,r+); fprintf(fp,

18、%-6s%-7s%-10.2f%-10.2f%-10.2fn,infs.num,infs.snum,infs.pscore,infs.lscore,infs.sscore); else printf(您輸入錯誤請重新輸入n); SCI(); fclose(op);fclose(fp);if(flag1=0)printf(您輸入的學(xué)號錯誤,請重新輸入n);sr();if(flag2=0)printf(您輸入的課程編號錯誤,請重新輸入n);sr();printf(返回上一級菜單嗎?是(y/Y),不(n/N)n);char p;scanf(%s,&p);if(p=y|p=Y)SR();elseexi

19、t(); 6)統(tǒng)計課程的平均成績printf(請輸入想要統(tǒng)計平均分的課程的課程編號n);scanf(%s,snum);for(;)fscanf(op,%s,&infs.num); fscanf(op,%s,&infs.snum); fscanf(op,%f,&infs.pscore); fscanf(op,%f,&infs.lscore); fscanf(op,%f,&infs.sscore);if (feof(op) break;if (strcmp(snum,infs.snum)=0)i+;score=score+infs.sscore;flag=1;if(flag=1)score=sco

20、re/i; printf(該課程的平均分如下:n); printf(%0.2fn,score);printf(返回上一級菜單嗎?是(y/Y),不(n/N)n); char p; scanf(%s,&p); if(p=y|p=Y) MM(); else exit();else if(flag=0)printf(您輸入錯誤,請重新輸入n);SC();fclose(op); 7)統(tǒng)計不及格的人數(shù)及分?jǐn)?shù)printf(請輸入想要統(tǒng)計不及格人數(shù)的課程的課程編號n);scanf(%s,snum);for(;)fscanf(op,%s,&infs.num); fscanf(op,%s,&infs.snum);

21、 fscanf(op,%f,&infs.pscore); fscanf(op,%f,&infs.lscore); fscanf(op,%f,&infs.sscore);if (feof(op) break;if (strcmp(snum,infs.snum)=0)if(infs.sscore60) i+; printf(學(xué)號 課號 平時成績 卷面成績 綜合成績n);printf(%-6s%-7s%-10.2f%-10.2f%-10.2fn,infs.num,infs.snum,infs.pscore,infs.lscore,infs.sscore); flag2=1;flag=1;if(fla

22、g2=1) printf(該課程未通過的人數(shù)如下:n); printf(%dn,i);printf(返回上一級菜單嗎?是(y/Y),不(n/N)n); char q; scanf(%s,&q); if(q=y|q=Y) MM(); else exit();else if(flag2=0)printf(您所選擇的課程無未通過的人n);printf(返回上一級菜單嗎?是(y/Y),不(n/N)n); char r; scanf(%s,&r); if(r=y|r=Y) MM(); else exit();if(flag=0)printf(您輸入的課程編號錯誤,請重新輸入n);SC();fclose(

23、op); 8)統(tǒng)計最高分printf(請輸入所要查找最高分的科目n); scanf(%s,snum);for(;)fscanf(op,%s,&infs.num); fscanf(op,%s,&infs.snum); fscanf(op,%f,&infs.pscore); fscanf(op,%f,&infs.lscore); fscanf(op,%f,&infs.sscore);if (feof(op) break;if (strcmp(snum,infs.snum)=0)strcpy(infs2l.num,infs.num); strcpy(infs2l.snum,infs.snum); i

24、nfs2l.pscore=infs.pscore; infs2l.lscore=infs.lscore; infs2l.sscore=infs.sscore;for(j=0;)if(kinfs2j.sscore)k=infs2j.sscore;if(feof(op) break;j+;printf(%.2fn,k);printf(返回上一級菜單嗎?是(y/Y),不(n/N)n); char v; scanf(%s,&v); if(v=y|v=Y) EI(); else exit(); 9)輸出全部信息(包括學(xué)生基本信息,課程信息,學(xué)生成績)printf(下面開始輸出全部學(xué)生信息n);FILE

25、*op;op=fopen(student.txt,r);int x=0;for(x=0;x1;) fscanf(op,%s,&inf.num); fscanf(op,%s,&); fscanf(op,%s,&inf.sex); fscanf(op,%s,&inf.age); fscanf(op,%s,&inf.dep); if (feof(op) break; printf(%-6s%-7s%-6s%-6s%-6sn,inf.num,,inf.sex,inf.age,inf.dep);fclose(op);printf(下面開始輸出全部課程信息n);FILE *

26、fp;fp=fopen(course.txt,r);printf(課號 課名 任課教師n);for(x=0;x1;) fscanf(fp,%s,&infc.snum); fscanf(fp,%s,&infc.sname); fscanf(fp,%s,&infc.teacher); if (feof(fp) break; printf(%-6s%-14s%-8s%n,infc.snum,infc.sname,infc.teacher);fclose(fp);printf(下面開始輸出全部學(xué)生成績n);FILE *o;o=fopen(score.txt,r);for(x=0;x1;) fscanf

27、(o,%s,&infs.num); fscanf(o,%s,&infs.snum); fscanf(o,%f,&infs.pscore);fscanf(o,%f,&infs.lscore);fscanf(o,%f,&infs.sscore); if (feof(o) break;printf(學(xué)號 課號 平時成績 卷面成績 綜合成績n); printf(%-6s%-7s%-10.2f%-10.2f%-10.2fn,infs.num,infs.snum,infs.pscore,infs.lscore,infs.sscore);fclose(o);printf(返回主菜單嗎?是(y/Y),不(n/

28、N)n); char y;scanf(%s,&y); if(y=y|y=Y)MM();elseexit(); 10)刪除函數(shù)int flag=0;FILE *op;FILE *fp;FILE *o;FILE *f;int i=0; int j=0;int l;int m;/int x;int k=0;int k1=0;int q=0;char n10; n2=0;op=fopen(student.txt,r);printf(請輸入學(xué)號n); scanf(%s,&n);for(;)fscanf(op,%s,&inf.num);fscanf(op,%s,&);fscanf(op,%

29、s,&inf.sex);fscanf(op,%s,&inf.age);fscanf(op,%s,&inf.dep);if(strcmp(n,inf.num) strcpy(inf2k.num,inf.num);strcpy(,);strcpy(inf2k.sex,inf.sex);strcpy(inf2k.age,inf.age);strcpy(inf2k.dep,inf.dep);k+;/else/flag=1;i+;if (feof(op) break;fclose(op);fp=fopen(student.txt,w+);if (i=0)printf(

30、n 文件中無記錄!n);else if(flag=0)printf( 文件中無此人,請重新輸入n);SD();else if(flag=1)for(l=0;l!=k;l+)fprintf(fp,%-6s%-7s%-6s%-6s%-6sn,inf2l.num,,inf2l.sex,inf2l.age,inf2l.dep);if(feof(fp) break;fclose(fp);o=fopen(score.txt,r);for(;)fscanf(o,%s,&infs.num);/fscanf(op,%c,&infs.s);fscanf(o,%s,&infs.snum);fsc

31、anf(o,%f,&infs.pscore);fscanf(o,%f,&infs.lscore);fscanf(o,%f,&infs.sscore);if (feof(o)break;if (strcmp(n,infs.num)strcpy(infs2k1.num,infs.num);/infs2k.s=infs.s;strcpy(infs2k1.snum,infs.snum);infs2k1.pscore=infs.pscore;infs2k1.lscore=infs.lscore;infs2k1.sscore=infs.sscore;k1+;fclose(o);f=fopen(score.txt,w+);for(m=0;m!=k1;m+)fprintf(f,%-6s%-7s%-10.2f%-10.2f%-10.2fn,infs2m.num,infs2m.snum,infs2m.pscore,infs2m.lscore,infs2m.sscore); if(feof(f) break;fclose(f);printf(返回主菜單嗎?是(y/Y),不(n/N)n); char y;scanf(%s,&y); if(y

溫馨提示

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

評論

0/150

提交評論