版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一 設(shè)計(jì)內(nèi)容1. 需求分析1.1項(xiàng)目需求概述 通過(guò)此系統(tǒng)可以實(shí)現(xiàn)如下功能:1) 數(shù)據(jù)信息的錄入2) 學(xué)生、課程及成績(jī)?nèi)匡@示3) 查詢功能4) 成績(jī)修改及刪除5) 成績(jī)統(tǒng)計(jì)6) 退出系統(tǒng)功能要求及說(shuō)明 1、數(shù)據(jù)信息的錄入1)學(xué)生基本信息錄入:學(xué)號(hào)不允許重復(fù) 錄入信息保存在student文件中 2)課程信息的錄入:錄入信息保存在course文件中3)學(xué)生成績(jī)錄入:成績(jī)信息保存在score文件中錄入學(xué)生成績(jī)信息時(shí),綜合成績(jī)根據(jù)條件自動(dòng)運(yùn)算。運(yùn)算方法:如果錄入課程為公共課,則 綜合成績(jī)=平時(shí)成績(jī)*30%+卷面成績(jī)*70%如果錄入課程為專業(yè)課,則 綜合成績(jī)=平時(shí)成績(jī)*40%+卷面成績(jī)*70%.說(shuō)明:課
2、號(hào)S開(kāi)頭表示專業(yè)課,P開(kāi)頭表示公共基礎(chǔ)課。2、學(xué)生、課程及成績(jī)顯示:輸出所有的學(xué)生信息及成績(jī)信息3、查詢功能1)學(xué)生信息查詢輸入一個(gè)學(xué)號(hào)或姓名(可實(shí)現(xiàn)選擇),查出此學(xué)生的基本信息并顯示輸出。輸入性別、所在系名,可查詢所有男生(女生)、本系所有的學(xué)生的基本信息并顯示輸出。 2)成績(jī)查詢:輸入一個(gè)學(xué)號(hào)時(shí),查詢出此學(xué)生的所有課程成績(jī)信息并以列表顯示,顯示內(nèi)容包括:學(xué)號(hào)、課程名、平時(shí)成績(jī)、卷面成績(jī)、綜合成績(jī)輸入一個(gè)學(xué)生的姓名時(shí),查詢出此學(xué)生的所有課程成績(jī)信息并以列表顯示,顯示內(nèi)容包括:學(xué)號(hào)、姓名、性別、所在系、課程名、綜合成績(jī)輸入一門課程名稱,可查詢出所有選修這門課程的學(xué)生成績(jī)。 4、成績(jī)修改(要求先
3、輸入密碼)在修改成績(jī)之前必須輸入正確的用戶密碼才能進(jìn)入成績(jī)修改菜單進(jìn)行操作。5、刪除功能當(dāng)在student.txt中刪除一個(gè)學(xué)生時(shí),自動(dòng)地在score.txt中刪除此人所有信息。6、成績(jī)統(tǒng)計(jì)顯示每門課程成績(jī)最高的學(xué)生的基本信息顯示每門課程的平均成績(jī)顯示每門課程不及格(綜合成績(jī)小于60分)的學(xué)生信息,并統(tǒng)計(jì)出人數(shù)。7、退出系統(tǒng)2. 概要設(shè)計(jì)功能模塊圖: 3. 詳細(xì)設(shè)計(jì) 2.1 系統(tǒng)流程描述 2.2 主要數(shù)據(jù)變量結(jié)構(gòu)定義 本系統(tǒng)主要定義了三個(gè)結(jié)構(gòu)體,分別用于存儲(chǔ)學(xué)生基本信息(struct student),課程信息(struct course),學(xué)生成績(jī)(struct score) 其中,學(xué)生基本
4、信息和學(xué)生成績(jī)分別定義了兩個(gè)結(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é)號(hào) 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;/課程編號(hào) char sname10;/課程名稱 char teacher10;/教課教師;struct course infc;struct score/定義結(jié)構(gòu)體名為score的結(jié)構(gòu)變量infs char num10;/學(xué)生學(xué)號(hào) char snum10;/課程編號(hào) float pscore;/平時(shí)成績(jī) float lscore;/卷面成績(jī) float sscore;/綜合成績(jī);struct score infs;struct score infs230; 2.3 系統(tǒng)所有主要功能的主要函數(shù)的設(shè)計(jì)流程圖和代碼 1)主菜
6、單 int a;printf(-歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)-n);printf( n);printf( 1.教學(xué)信息登入(請(qǐng)輸入1) n);printf( 2.查詢學(xué)生信息(請(qǐng)輸入2) n);printf( 3.修改學(xué)生信息(請(qǐng)輸入3) n); printf( 4.學(xué)生信息統(tǒng)計(jì)(請(qǐng)輸入4) n);printf( 5.顯示全部學(xué)生信息(請(qǐng)輸入5) n);printf( 6.刪除學(xué)生信息(請(qǐng)輸入6) n);printf( n);printf(-退出本系統(tǒng)(請(qǐ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(您輸入有誤,請(qǐng)重新輸入n);MM();break; 2)信息登入函數(shù)(以登入學(xué)生基本信息為例) char x;FILE *fp; fp=fopen(student.txt,a); x=y;/fprintf(fp,學(xué)號(hào) 姓名 性別 年齡 所在系)while(x=y|x=Y)/判斷是否繼續(xù)循環(huán)輸入printf(請(qǐng)輸入學(xué)生學(xué)號(hào)n);scanf(%s,&inf.num);p
8、rintf(請(qǐng)輸入學(xué)生姓名n);scanf(%s,&);printf(請(qǐng)輸入學(xué)生性別n);scanf(%s,&inf.sex);printf(請(qǐng)輸入學(xué)生年齡n);scanf(%s,&inf.age);printf(請(qǐng)輸入學(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(返回上一級(jí)菜單嗎?是(y/Y),不(n/N
9、)n); char y;scanf(%s,&y); if(y=y|y=Y)EI();elseexit(); 3)信息查詢函數(shù)(以根據(jù)學(xué)號(hào)或姓名進(jìn)行查詢的函數(shù)為例)printf(選擇根據(jù)學(xué)號(hào)查詢請(qǐng)輸入1,選擇根據(jù)姓名查詢請(qǐng)輸入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(請(qǐng)輸入學(xué)號(hào)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é)號(hào) 姓名 性別 年齡 所在系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 文件中無(wú)記錄!n);elseif (flag=0)printf(
11、 文件中無(wú)此人,請(qǐng)重新輸入n);SFIa();printf(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n);char y;scanf(%s,&y);if(y=y|y=Y)SFI();elseexit();break;case 2:char m10;printf(請(qǐng)輸入姓名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é)號(hào) 姓名 性別 年齡 所在系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 文件中無(wú)記錄!n);elseif (flag=0)printf( 文件中無(wú)此人,請(qǐng)重新輸入n);SFIa();printf(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n);char x;scanf(%s,&x);if(x=y|x=Y)SFI();e
13、lseexit();break;default:printf(您輸入錯(cuò)誤,請(qǐng)重新輸入n);SFIa();break; 4)登陸界面函數(shù)(輸入用戶名和密碼,修改成績(jī)前需使用)printf(-學(xué)生成績(jī)修改界面-n);printf( n);printf( 輸入用戶名及密碼(請(qǐng)輸入1) n);printf( n);printf(-返回主菜單(請(qǐng)輸入2)-n);int a;char username10;char password10;char b10=admin; char c10=730;scanf(%d,&a);switch(a)case 1:printf(請(qǐng)輸入用戶名n);scanf(%s,us
14、ername);printf(請(qǐng)輸入密碼n);scanf(%s,password);if (strcmp(b,username)=0&strcmp(c,password)=0)/printf(輸入正確n);sr();/else if(strcmp(b,username)!=0)printf(用戶名錯(cuò)誤,請(qǐng)重新輸入n);SR();else if(strcmp(c,password)!=0)printf(密碼錯(cuò)誤,請(qǐng)重新輸入n);SR();break;case 2:MM();break;default:printf(輸入錯(cuò)誤,請(qǐng)您重新輸入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(請(qǐng)輸入您所要修改學(xué)生的學(xué)號(hào)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(請(qǐng)輸入您所要修改的課程編號(hào)n); scanf(%s,snum); if(strcmp(snum,infs.snum)=0) flag2=1; printf(請(qǐng)輸入修改后的平時(shí)成績(jī)n); scanf(%f,&ps); printf(請(qǐng)輸入修改后的卷面成績(jī)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(您輸入錯(cuò)誤請(qǐng)重新輸入n); SCI(); fclose(op);fclose(fp);if(flag1=0)printf(您輸入的學(xué)號(hào)錯(cuò)誤,請(qǐng)重新輸入n);sr();if(flag2=0)printf(您輸入的課程編號(hào)錯(cuò)誤,請(qǐng)重新輸入n);sr();printf(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n);char p;scanf(%s,&p);if(p=y|p=Y)SR();elseexi
19、t(); 6)統(tǒng)計(jì)課程的平均成績(jī)printf(請(qǐng)輸入想要統(tǒng)計(jì)平均分的課程的課程編號(hào)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(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n); char p; scanf(%s,&p); if(p=y|p=Y) MM(); else exit();else if(flag=0)printf(您輸入錯(cuò)誤,請(qǐng)重新輸入n);SC();fclose(op); 7)統(tǒng)計(jì)不及格的人數(shù)及分?jǐn)?shù)printf(請(qǐng)輸入想要統(tǒng)計(jì)不及格人數(shù)的課程的課程編號(hào)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é)號(hào) 課號(hào) 平時(shí)成績(jī) 卷面成績(jī) 綜合成績(jī)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(該課程未通過(guò)的人數(shù)如下:n); printf(%dn,i);printf(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n); char q; scanf(%s,&q); if(q=y|q=Y) MM(); else exit();else if(flag2=0)printf(您所選擇的課程無(wú)未通過(guò)的人n);printf(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n); char r; scanf(%s,&r); if(r=y|r=Y) MM(); else exit();if(flag=0)printf(您輸入的課程編號(hào)錯(cuò)誤,請(qǐng)重新輸入n);SC();fclose(
23、op); 8)統(tǒng)計(jì)最高分printf(請(qǐ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)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(返回上一級(jí)菜單嗎?是(y/Y),不(n/N)n); char v; scanf(%s,&v); if(v=y|v=Y) EI(); else exit(); 9)輸出全部信息(包括學(xué)生基本信息,課程信息,學(xué)生成績(jī))printf(下面開(kāi)始輸出全部學(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(下面開(kāi)始輸出全部課程信息n);FILE *
26、fp;fp=fopen(course.txt,r);printf(課號(hào) 課名 任課教師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(下面開(kāi)始輸出全部學(xué)生成績(jī)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é)號(hào) 課號(hào) 平時(shí)成績(jī) 卷面成績(jī) 綜合成績(jī)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(請(qǐng)輸入學(xué)號(hào)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 文件中無(wú)記錄!n);else if(flag=0)printf( 文件中無(wú)此人,請(qǐng)重新輸入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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)強(qiáng)制旋轉(zhuǎn)流體多相渦運(yùn)動(dòng)理論模型研究
- 基于深度學(xué)習(xí)的文本到SQL生成算法研究
- 2025年度企業(yè)研發(fā)貸款用途合同
- 侗族文化元素在農(nóng)產(chǎn)品包裝中的應(yīng)用設(shè)計(jì)
- 2025年度貸款中介業(yè)務(wù)信用評(píng)級(jí)合作協(xié)議
- 2025年度銷售版保險(xiǎn)代理服務(wù)協(xié)議
- 二零二五年度股東分紅協(xié)議書(shū)(文化娛樂(lè)產(chǎn)業(yè)投資)
- 2025年度藝術(shù)工作室合伙人合作協(xié)議書(shū)
- 社區(qū)防災(zāi)空間布置方案
- 2025年度消防演練場(chǎng)地維修與消防器材更新合同
- 2024年高純氮化鋁粉體項(xiàng)目可行性分析報(bào)告
- 安檢人員培訓(xùn)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語(yǔ)試題
- 危險(xiǎn)性較大分部分項(xiàng)工程及施工現(xiàn)場(chǎng)易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會(huì)四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識(shí)》備考題庫(kù)(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測(cè)卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營(yíng)銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國(guó)蛋糕行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
評(píng)論
0/150
提交評(píng)論