版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué)生成績管理系統(tǒng)設(shè)計(jì)第一章 本課程設(shè)計(jì)的題目及要求1.1課程設(shè)計(jì)題目要求1. 要求利用c語言面向過程的編程思想來完成系統(tǒng)的設(shè)計(jì); 2. 突出c語言的函數(shù)特征,以多個(gè)函數(shù)實(shí)現(xiàn)每一個(gè)子功能; 3. 畫出功能模塊圖; 4. 進(jìn)行簡單界面設(shè)計(jì),能夠?qū)崿F(xiàn)友好的交互; 5. 具有清晰的程序流程圖和數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義; 6. 熟練掌握c語言對文件的各種操作。1.2設(shè)計(jì)思想程序運(yùn)用結(jié)構(gòu)體數(shù)組和循環(huán)進(jìn)行程序的編寫.第二章 系統(tǒng)完成功能及功能框圖2.1系統(tǒng)功能1每條記錄包括一個(gè)學(xué)生學(xué)號、姓名、四科成績。2輸入功能:可以一次完成無數(shù)條記錄的輸入。3顯示功能:完成全部學(xué)生記錄的顯示。4查找功能:完成按學(xué)號查找學(xué)生記錄
2、,并顯示。5修改功能:通過查找學(xué)生學(xué)號,修改學(xué)生記錄。6保存功能:將學(xué)生記錄保存到任何自定義的文件中。7讀取功能:將保存到文件中的學(xué)生記錄讀取出來。8應(yīng)提供一個(gè)界面來調(diào)用各個(gè)功能,調(diào)用界面和功能的操作界面應(yīng)盡可能清晰美觀。2.2系統(tǒng)框圖主要功能 輸出編輯刪除查詢錄入第三章 系統(tǒng)使用介紹 3.1主菜單輸入字符后以獲得相應(yīng)的功能,按照菜單提示即可。3.2輸入信息和瀏覽信息3.3查詢、修改和刪除第四章 工作分工我的主要任務(wù)是完成對該程序的設(shè)計(jì)工作,運(yùn)用所學(xué)的知識來對該程序進(jìn)行整體的設(shè)計(jì),在這幾天的編程時(shí)間里我會去圖書館查閱資料,以便對整個(gè)小組的工作提供最大的便利,最后我還將對檢測過程進(jìn)行幫助,用最快
3、的速度幫助調(diào)試工作盡快的完成。我首先設(shè)計(jì)了整個(gè)系統(tǒng)的主函數(shù),這個(gè)函數(shù)可以最有效的將所有函數(shù)運(yùn)用起來,并且減小程序的大小void main()/主函數(shù)int fun; read_data(); menu(); while(1) system(color f0);/編輯菜單及字體顏色 printf(請輸入功能號0-6:,&fun); scanf(%d,&fun); switch(fun) case 0:/ 退 出 break; case 1: /按班級輸出學(xué)生成績 view_data(); break; case 2: /輸入學(xué)生記錄 add(); break; case 3: /刪除學(xué)生記錄 d
4、elete_data(); break; case 4: /編輯學(xué)生記錄 edit_data(); break; case 5: /查詢學(xué)生記錄 query_data_no(); break; case 6: /統(tǒng)計(jì)系統(tǒng) query_data_tongji(); break; if(fun=0) break; to_menu(); 然后我將系統(tǒng)設(shè)計(jì)完整后運(yùn)用了起泡法將瀏覽函數(shù)中加入了排序的函數(shù),這樣做可以使得輸出的函數(shù)的結(jié)果更加的清晰,讓使用者方便查找到要查找的對象strcpy(tmp.xueqi,dd.stui.xueqi); strcpy(tmp.no,dd.stui.no); strcp
5、y(,); tmp.clas=dd.stui.clas; tmp.chi=dd.stui.chi; tmp.math=dd.stui.math; tmp.eng=dd.stui.eng; =; tmp.sum=dd.stui.sum; tmp.aver=dd.stui.aver; strcpy(dd.stui.xueqi,dd.stuj.xueqi); strcpy(dd.stui.no,dd.stuj.no);strcpy(,); dd.stui.clas=dd.stuj.clas;
6、 dd.stui.chi=dd.stuj.chi; dd.stui.math=dd.stuj.math; dd.stui.eng=dd.stuj.eng; =; dd.stui.sum=dd.stuj.sum; dd.stui.aver=dd.stuj.aver; strcpy(dd.stuj.xueqi,tmp.xueqi); strcpy(dd.stuj.no,tmp.no); strcpy(,); dd.stuj.clas=tmp.clas; dd.stuj.chi=tmp.chi; dd.stuj.ma
7、th=tmp.math; dd.stuj.eng=tmp.eng; =; dd.stuj.sum=tmp.sum; dd.stuj.aver=tmp.aver;在系統(tǒng)中我將添加的函數(shù)設(shè)計(jì)為下次使用可以記錄內(nèi)容的,里面主要運(yùn)用到了結(jié)構(gòu)體中的count變量,并且加入了保存項(xiàng)目中,這樣做使得下次使用時(shí)添加數(shù)據(jù)更加便利,僅僅運(yùn)用添加就可以滿足使用者的需求。最后經(jīng)過了接受建議后,我將我設(shè)計(jì)的系統(tǒng)的結(jié)構(gòu)優(yōu)化為兩個(gè),函數(shù)的名字也將次級菜單中的更改為tongji1、tongji2,這樣使得在修改時(shí)更為簡便快捷。第五章 總結(jié)經(jīng)過了這幾天對程序的設(shè)計(jì),使我更加了解程序的設(shè)計(jì)過程,以及設(shè)計(jì)的思
8、路,我將會在以后的日子里,運(yùn)用上本次設(shè)計(jì)的經(jīng)驗(yàn),為以后的學(xué)習(xí)工作打下基礎(chǔ),唯一夠的工作創(chuàng)造更好的條件。參考文獻(xiàn)c語言設(shè)計(jì)第三版 清華大學(xué)出版社出版附錄程序源代碼#include #include #include #include #include #define max 200/宏定義,修改數(shù)值可以改變程序所包含的最大文件個(gè)數(shù)struct student char xueqi20;/學(xué)期 char no20; /學(xué)號 int clas;/班級 char name50; /姓名 int chi;/語文成績int math;/數(shù)學(xué)成績int eng;/英語成績int com;/計(jì)算機(jī)成績int
9、sum;int aver;struct data int count; /* 當(dāng)前學(xué)生數(shù)組中學(xué)生的個(gè)數(shù) */ struct student stumax; /* 學(xué)生數(shù)組 */ dd;void menu() /輸出主菜單函數(shù) system(cls); /清空屏幕函數(shù) printf(n); printf(ttt*n); printf(ttt* *n); printf(ttt* 學(xué)生成績管理系統(tǒng) *n); printf(ttt* *n); printf(ttt* 0 退出 *n); printf(ttt* 1 按學(xué)號輸出學(xué)生成績 *n); printf(ttt* 2 輸入學(xué)生記錄 *n); pri
10、ntf(ttt* 3 刪除學(xué)生記錄 *n); printf(ttt* 4 編輯學(xué)生記錄 *n); printf(ttt* 5 查詢學(xué)生記錄 *n); printf(ttt* 6 統(tǒng)計(jì)學(xué)生記錄 *n); printf(ttt* *n); printf(ttt*n);void menu2()/輸出統(tǒng)計(jì)系統(tǒng)菜單system(cls);/清空屏幕函數(shù)printf(n); printf(ttt*n); printf(ttt* *n); printf(ttt* 統(tǒng)計(jì)系統(tǒng) *n); printf(ttt* *n); printf(ttt* 0 退出 *n); printf(ttt* 1 輸出班級學(xué)生成績 *
11、n); printf(ttt* 2 班級各科成績平均數(shù) *n); printf(ttt* 3 班級各科成績總分 *n); printf(ttt* 4 不及格名單 *n); printf(ttt* *n); printf(ttt*n);void to_menu()/to_menu函數(shù) char c1,c2; printf(nnn按回車鍵返回主菜單.); scanf(%c%c,&c1,&c2); menu();/調(diào)用menu函數(shù)void to_menu2()/to_menu函數(shù) char c1,c2; printf(nnn按回車鍵返回上一菜單.); scanf(%c%c,&c1,&c2); men
12、u2();/調(diào)用menu函數(shù)void save_data() /保存數(shù)據(jù)函數(shù) file *fp; int i,k; k=dd.count; fp=fopen(c:/dada.txt,w);/打開函數(shù),打開記錄文件 fwrite(&k,sizeof(int),1,fp);/寫入函數(shù),寫入文件數(shù)據(jù) for(i=0;ik;i+) fwrite(&dd.stui,sizeof(struct student),1,fp); fclose(fp);/關(guān)閉函數(shù),關(guān)閉記錄文件void read_data()/讀取數(shù)據(jù)信息 file *fp; int i,k; struct student st; struct
13、 data gf; k=0; if(access(c:/dada.txt,0)=-1) /如果文件不存在 fp=fopen(c:/dada.txt,w);/打開函數(shù),打開記錄文件 fwrite(&k,sizeof(int),1,fp);/寫入函數(shù),寫入文件數(shù)據(jù) fclose(fp); fp=fopen(c:/dada.txt,r); fread(&k,sizeof(int),1,fp); dd.count=k; for(i=0;ik;i+) fread(&st,sizeof(struct student),1,fp); strcpy(dd.stui.xueqi,st.xueqi); strcp
14、y(dd.stui.no,st.no); strcpy(,); dd.stui.clas=st.clas; dd.stui.chi=st.chi; dd.stui.math=st.math; dd.stui.eng=st.eng; =; dd.stui.sum=st.sum; dd.stui.aver=st.aver; fclose(fp);/關(guān)閉函數(shù),關(guān)閉記錄的文件void view_data()/查看所有學(xué)生信息 int i,j,k; struct student tmp;k=dd.count; for(i=0;ik;i+)/該部
15、分實(shí)現(xiàn)為所有數(shù)據(jù)以學(xué)號進(jìn)行排序,“起泡法” for(j=(i+1);j0) strcpy(tmp.xueqi,dd.stui.xueqi); strcpy(tmp.no,dd.stui.no); strcpy(,); tmp.clas=dd.stui.clas; tmp.chi=dd.stui.chi; tmp.math=dd.stui.math; tmp.eng=dd.stui.eng; =; tmp.sum=dd.stui.sum; tmp.aver=dd.stui.aver; strcpy(dd.stui.xueqi,dd.s
16、tuj.xueqi); strcpy(dd.stui.no,dd.stuj.no);strcpy(,); dd.stui.clas=dd.stuj.clas; dd.stui.chi=dd.stuj.chi; dd.stui.math=dd.stuj.math; dd.stui.eng=dd.stuj.eng; =; dd.stui.sum=dd.stuj.sum; dd.stui.aver=dd.stuj.aver; strcpy(dd.stuj.xueqi,tmp.xueqi); strcpy(dd
17、.stuj.no,tmp.no); strcpy(,); dd.stuj.clas=tmp.clas; dd.stuj.chi=tmp.chi; dd.stuj.math=tmp.math; dd.stuj.eng=tmp.eng; =; dd.stuj.sum=tmp.sum; dd.stuj.aver=tmp.aver; printf(學(xué)期t學(xué)號t班級t姓名tt語文t數(shù)學(xué)t英語t計(jì)算機(jī)t總分t平均分); printf(n-n); for(i=0;ik;i+) printf(%st%st%-8d%stt%-8d%-8d%-8d%-
18、12d%-8d%-8dn,dd.stui.xueqi,dd.stui.no,dd.stui.clas,,dd.stui.chi,dd.stui.math,dd.stui.eng,,dd.stui.sum,dd.stui.aver);void add()/添加學(xué)生信息 struct student st; int b,k; while(1) k=dd.count; printf(n請輸入學(xué)生信息:); printf(n學(xué)期); printf(n-n); getchar(); gets(dd.stuk.xueqi); printf(n學(xué)號); prin
19、tf(n-n);gets(dd.stuk.no);printf(n班級); printf(n-n);scanf(%d,&dd.stuk.clas);printf(n姓名); printf(n-n); getchar();gets();printf(n語文); printf(n-n); scanf(%d,&dd.stuk.chi); printf(n數(shù)學(xué)); printf(n-n); scanf(%d,&dd.stuk.math); printf(n英語); printf(n-n); scanf(%d,&dd.stuk.eng); printf(n計(jì)算機(jī)); printf
20、(n-n); scanf(%d,&); dd.stuk.sum=dd.stuk.chi+dd.stuk.math+dd.stuk.eng+; dd.stuk.aver=dd.stuk.sum/4;dd.count+;printf(nn繼續(xù)添加學(xué)生信息1-yes 0-no:); scanf(%d,&b); if(b=0) break; save_data();void delete_data()/刪除學(xué)生記錄 int i,j; char no20; j=dd.count-1; view_data(); printf(n請輸入要刪除學(xué)生的學(xué)號:); sc
21、anf(%s,&no); for(i=0;idd.count;i+) if(strcmp(dd.stui.no,no)=0) strcpy(dd.stui.xueqi,dd.stuj.xueqi); strcpy(dd.stui.no,dd.stuj.no); dd.stui.clas=dd.stuj.clas;strcpy(,); dd.stui.chi=dd.stuj.chi;dd.stui.math=dd.stuj.math;dd.stui.eng=dd.stuj.eng;=;dd.stui.su
22、m=dd.stuj.sum;dd.stui.aver=dd.stuj.aver;dd.count-;save_data();printf(nn刪除(學(xué)號-%s)成功!,no); break; if(i=(dd.count-1) printf(nn沒有找到該學(xué)生(學(xué)號-%s)!,no);save_data();void edit_data()/編輯學(xué)生記錄 int i,k; char no10,name50; printf(n請輸入要編輯學(xué)生的學(xué)號:); scanf(%s,no); k=-1; for(i=0;idd.count;i+) if(strcmp(dd.stui.no,no)=0) k
23、=i; break; if(k=-1) printf(nn沒有找到該學(xué)生(學(xué)號-%s)!,no); else printf(n請輸入學(xué)生信息:); printf(n學(xué)期); printf(n-n); getchar(); gets(dd.stuk.xueqi); printf(n學(xué)號); printf(n-n); gets(dd.stuk.no);printf(n班級); printf(n-n);scanf(%d,&dd.stuk.clas);printf(n姓名); printf(n-n); getchar();gets();printf(n語文); printf(n
24、-n); scanf(%d,&dd.stuk.chi); printf(n數(shù)學(xué)); printf(n-n); scanf(%d,&dd.stuk.math); printf(n英語); printf(n-n); scanf(%d,&dd.stuk.eng); printf(n計(jì)算機(jī)); printf(n-n); scanf(%d,&); dd.stuk.sum=dd.stuk.chi+dd.stuk.math+dd.stuk.eng+; dd.stuk.aver=dd.stuk.sum/4; save_data();void query_data_n
25、o()/查詢學(xué)生記錄 int i; char no20; printf(n請輸入要查詢學(xué)生學(xué)號:); scanf(%s,&no); printf(nn學(xué)期t學(xué)號t班級t姓名t語文t數(shù)學(xué)t英語t計(jì)算機(jī)t總分t平均分); printf(n-n); for(i=0;(idd.count);i+) if(strcmp(dd.stui.no,no)=0) printf(%st%st%-8d%st%-8d%-8d%-8d%-12d%-8d%-8dn,dd.stui.xueqi,dd.stui.no,dd.stui.clas,,dd.stui.chi,dd.stui.math,dd.
26、stui.eng,,dd.stui.sum,dd.stui.aver); break; if(i=dd.count) printf(nnnn沒有找到該學(xué)生(姓名-%s)!); void tongji1()/輸出某班所有學(xué)生的成績int i;int clas;printf(請輸入要查詢的班級:);scanf(%d,&clas);printf(nn學(xué)期t學(xué)號t班級t姓名tt語文t數(shù)學(xué)t英語t計(jì)算機(jī)t總分t平均分); printf(n-n); for(i=0;idd.count;i+)if(dd.stui.clas)=clas) printf(%st%st%-8d%stt%-8
27、d%-8d%-8d%-12d%-8d%-8dn,dd.stui.xueqi,dd.stui.no,dd.stui.clas,,dd.stui.chi,dd.stui.math,dd.stui.eng,,dd.stui.sum,dd.stui.aver);void tongji2()/輸出某班各科成績平均值的函數(shù)int i,j;int k=0;float chi=0,math=0,eng=0,com=0;printf(nnn請輸入要查詢的班級:);scanf(%d,&k);for(i=0,j=0;idd.count;i+)if(k=dd.stui.c
28、las)chi=dd.stui.chi+chi;math=dd.stui.math+math;eng=dd.stui.eng+eng;com=+com;j+;if(j!=0)printf(n%d班n語文成績平均分為%fn數(shù)學(xué)成績平均分為%fn英語成績平均分為%fn計(jì)算機(jī)成績平均分為%fnn,k,(chi/j),(math/j),(eng/j),(com/j);elseprintf(沒有該班信息);void tongji3()/輸出各科總成績的函數(shù)int i;int k,j;float chi=0,math=0,eng=0,com=0;printf(nnn請輸入要查詢的班級
29、:);scanf(%d,&k);for(i=0,j=0;idd.count;i+)if(k=dd.stui.clas)chi+=dd.stui.chi;math+=dd.stui.math;eng+=dd.stui.eng;com+=;if(k!=0)printf(n%d班n語文成績總分為%fn數(shù)學(xué)成績總分為%fn英語成績總分為%fn計(jì)算機(jī)成績總分為%fnn,k,chi,math,eng,com);elseprintf(沒有該班信息);void tongji4()/輸出不及格名單的函數(shù)int i; read_data();/調(diào)用read_data()函數(shù) printf(不
30、及格名單:n); printf(班級t學(xué)期t學(xué)號t姓名t不及格科目); printf(n-n);for(i=0;idd.count;i+) if(dd.stui.chi)60) system(color fc);/變換菜單顏色 printf( %dt%st%st%st%d(語文)n,dd.stui.clas,dd.stui.xueqi,dd.stui.no,,dd.stui.chi); if(dd.stui.math)60) printf( %dt%st%st%st%d(數(shù)學(xué))n,dd.stui.clas,dd.stui.xueqi,dd.stui.no,dd.stui
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《Web應(yīng)用開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州鐵路職業(yè)技術(shù)學(xué)院《車輛電器與電子技術(shù)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年陜西省安全員C證考試(專職安全員)題庫及答案
- 2025甘肅省安全員《A證》考試題庫
- 2025安徽省安全員《A證》考試題庫及答案
- 揚(yáng)州慢公開課課件2
- 《菱形的判定方法》課件
- 安全風(fēng)險(xiǎn)管控課件
- 《管理學(xué)院簡介》課件
- 棉鞋里的陽光課件
- 修井作業(yè)冬季和雨季技術(shù)服務(wù)方案
- 三相電能表測量誤差不確定分析報(bào)
- 色彩基礎(chǔ)知識ppt
- Q∕GDW 12082-2021 輸變電設(shè)備物聯(lián)網(wǎng)無線傳感器通用技術(shù)規(guī)范
- 加油站冬季安全教育
- 皮爾遜Ⅲ型曲線模比系數(shù)計(jì)算(共享版).xls
- 腹膜透析并發(fā)腹膜炎臨床路徑
- (完整版)市政工程施工工期定額(定稿).docx
- 商業(yè)發(fā)票INVOICE模板
- 超聲波焊接作業(yè)指導(dǎo)書(共8頁)
- 《你的生命有什么可能》PPT
評論
0/150
提交評論