版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年智能溫室大棚租賃及技術(shù)支持協(xié)議3篇
- 2024年版產(chǎn)品銷售中介服務(wù)協(xié)議模板版B版
- 2024年科研用地租賃合同
- 汽車銷售商務(wù)談判技巧考核試卷
- 2024年葡萄種植與農(nóng)產(chǎn)品質(zhì)量安全檢測合作合同3篇
- 2024年版多用途廠房租賃樣本3篇
- 語法填空16篇(上海二模真題)-2024年高考英語語法填空熱點(diǎn)話題終極押題
- 電子電路設(shè)計與制作考核試卷
- 橡膠合成技術(shù)的培訓(xùn)與教育考核試卷
- 2024年綠色拆除技術(shù)集成與應(yīng)用服務(wù)合同3篇
- 國家安全教育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 變壓器巡視課件
- 中國重癥患者腸外營養(yǎng)治療臨床實踐專家共識(2024)解讀
- 精益生產(chǎn)篇(培訓(xùn)資料)
- 河南省鄭州市鄭東新區(qū)2023-2024學(xué)年六年級上學(xué)期期末學(xué)情調(diào)研數(shù)學(xué)試題
- 產(chǎn)品檢驗合格證模板
- 2024年全國職業(yè)院校技能大賽中職組(安全保衛(wèi)賽項)考試題庫(含答案)
- 浙江省建筑防水工程技術(shù)規(guī)程
- 非學(xué)歷繼續(xù)教育信息化平臺建設(shè)需求
- 《冷戰(zhàn)史專題》筆記
- DL∕T 1692-2017 安全工器具柜技術(shù)條件
評論
0/150
提交評論