C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章 本課程設(shè)計(jì)的題目及要求1.1課程設(shè)計(jì)題目要求1. 要求利用c語(yǔ)言面向過程的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì); 2. 突出c語(yǔ)言的函數(shù)特征,以多個(gè)函數(shù)實(shí)現(xiàn)每一個(gè)子功能; 3. 畫出功能模塊圖; 4. 進(jìn)行簡(jiǎn)單界面設(shè)計(jì),能夠?qū)崿F(xiàn)友好的交互; 5. 具有清晰的程序流程圖和數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義; 6. 熟練掌握c語(yǔ)言對(duì)文件的各種操作。1.2設(shè)計(jì)思想程序運(yùn)用結(jié)構(gòu)體數(shù)組和循環(huán)進(jìn)行程序的編寫.第二章 系統(tǒng)完成功能及功能框圖2.1系統(tǒng)功能1每條記錄包括一個(gè)學(xué)生學(xué)號(hào)、姓名、四科成績(jī)。2輸入功能:可以一次完成無(wú)數(shù)條記錄的輸入。3顯示功能:完成全部學(xué)生記錄的顯示。4查找功能:完成按學(xué)號(hào)查找學(xué)生記錄,并顯示。5修改功能

2、:通過查找學(xué)生學(xué)號(hào),修改學(xué)生記錄。6保存功能:將學(xué)生記錄保存到任何自定義的文件中。7讀取功能:將保存到文件中的學(xué)生記錄讀取出來(lái)。8應(yīng)提供一個(gè)界面來(lái)調(diào)用各個(gè)功能,調(diào)用界面和功能的操作界面應(yīng)盡可能清晰美觀。2.2系統(tǒng)框圖主要功能 輸出編輯刪除查詢錄入第三章 系統(tǒng)使用介紹 3.1主菜單輸入字符后以獲得相應(yīng)的功能,按照菜單提示即可。3.2輸入信息和瀏覽信息3.3查詢、修改和刪除第四章 工作分工我的主要任務(wù)是完成對(duì)該程序的設(shè)計(jì)工作,運(yùn)用所學(xué)的知識(shí)來(lái)對(duì)該程序進(jìn)行整體的設(shè)計(jì),在這幾天的編程時(shí)間里我會(huì)去圖書館查閱資料,以便對(duì)整個(gè)小組的工作提供最大的便利,最后我還將對(duì)檢測(cè)過程進(jìn)行幫助,用最快的速度幫助調(diào)試工作盡

3、快的完成。我首先設(shè)計(jì)了整個(gè)系統(tǒng)的主函數(shù),這個(gè)函數(shù)可以最有效的將所有函數(shù)運(yùn)用起來(lái),并且減小程序的大小void main()/主函數(shù)int fun; read_data(); menu(); while(1) system(color f0);/編輯菜單及字體顏色 printf(請(qǐng)輸入功能號(hào)0-6:,&fun); scanf(%d,&fun); switch(fun) case 0:/ 退 出 break; case 1: /按班級(jí)輸出學(xué)生成績(jī) view_data(); break; case 2: /輸入學(xué)生記錄 add(); break; case 3: /刪除學(xué)生記錄 delete_data

4、(); 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é)果更加的清晰,讓使用者方便查找到要查找的對(duì)象strcpy(tmp.xueqi,dd.stui.xueqi); strcpy(tmp.no,dd.stui.no); strcpy(

5、,); 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; dd.stui.c

6、hi=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.math=tmp.mat

7、h; 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ù)的名字也將次級(jí)菜單中的更改為tongji1、tongji2,這樣使得在修改時(shí)更為簡(jiǎn)便快捷。第五章 總結(jié)經(jīng)過了這幾天對(duì)程序的設(shè)計(jì),使我更加了解程序的設(shè)計(jì)過程,以及設(shè)計(jì)的思路,我將會(huì)在以后的日

8、子里,運(yùn)用上本次設(shè)計(jì)的經(jīng)驗(yàn),為以后的學(xué)習(xí)工作打下基礎(chǔ),唯一夠的工作創(chuàng)造更好的條件。參考文獻(xiàn)c語(yǔ)言設(shè)計(jì)第三版 清華大學(xué)出版社出版附錄程序源代碼#include #include #include #include #include #define max 200/宏定義,修改數(shù)值可以改變程序所包含的最大文件個(gè)數(shù)struct student char xueqi20;/學(xué)期 char no20; /學(xué)號(hào) int clas;/班級(jí) char name50; /姓名 int chi;/語(yǔ)文成績(jī)int math;/數(shù)學(xué)成績(jī)int eng;/英語(yǔ)成績(jī)int com;/計(jì)算機(jī)成績(jī)int sum;int av

9、er;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é)生成績(jī)管理系統(tǒng) *n); printf(ttt* *n); printf(ttt* 0 退出 *n); printf(ttt* 1 按學(xué)號(hào)輸出學(xué)生成績(jī) *n); printf(ttt* 2 輸入學(xué)生記錄 *n); printf(ttt* 3

10、 刪除學(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 輸出班級(jí)學(xué)生成績(jī) *n); printf

11、(ttt* 2 班級(jí)各科成績(jī)平均數(shù) *n); printf(ttt* 3 班級(jí)各科成績(jī)總分 *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); menu2();/調(diào)用me

12、nu函數(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 data gf;

13、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); strcpy(dd.stui.

14、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+)/該部分實(shí)現(xiàn)為所有數(shù)據(jù)以學(xué)

15、號(hào)進(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.stuj.xueqi)

16、; 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.stuj.no,t

17、mp.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é)號(hào)t班級(jí)t姓名tt語(yǔ)文t數(shù)學(xué)t英語(yǔ)t計(jì)算機(jī)t總分t平均分); printf(n-n); for(i=0;ik;i+) printf(%st%st%-8d%stt%-8d%-8d%-8d%-12d%-8d%-8

18、dn,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請(qǐng)輸入學(xué)生信息:); printf(n學(xué)期); printf(n-n); getchar(); gets(dd.stuk.xueqi); printf(n學(xué)號(hào)); printf(n-n);ge

19、ts(dd.stuk.no);printf(n班級(jí)); printf(n-n);scanf(%d,&dd.stuk.clas);printf(n姓名); printf(n-n); getchar();gets();printf(n語(yǔ)文); printf(n-n); scanf(%d,&dd.stuk.chi); printf(n數(shù)學(xué)); printf(n-n); scanf(%d,&dd.stuk.math); printf(n英語(yǔ)); printf(n-n); scanf(%d,&dd.stuk.eng); printf(n計(jì)算機(jī)); printf(n-n); sca

20、nf(%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請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):); scanf(%s,&no

21、); 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.sum=dd.stuj.

22、sum;dd.stui.aver=dd.stuj.aver;dd.count-;save_data();printf(nn刪除(學(xué)號(hào)-%s)成功!,no); break; if(i=(dd.count-1) printf(nn沒有找到該學(xué)生(學(xué)號(hào)-%s)!,no);save_data();void edit_data()/編輯學(xué)生記錄 int i,k; char no10,name50; printf(n請(qǐng)輸入要編輯學(xué)生的學(xué)號(hào):); scanf(%s,no); k=-1; for(i=0;idd.count;i+) if(strcmp(dd.stui.no,no)=0) k=i; break;

23、 if(k=-1) printf(nn沒有找到該學(xué)生(學(xué)號(hào)-%s)!,no); else printf(n請(qǐng)輸入學(xué)生信息:); printf(n學(xué)期); printf(n-n); getchar(); gets(dd.stuk.xueqi); printf(n學(xué)號(hào)); printf(n-n); gets(dd.stuk.no);printf(n班級(jí)); printf(n-n);scanf(%d,&dd.stuk.clas);printf(n姓名); printf(n-n); getchar();gets();printf(n語(yǔ)文); printf(n-n); scanf

24、(%d,&dd.stuk.chi); printf(n數(shù)學(xué)); printf(n-n); scanf(%d,&dd.stuk.math); printf(n英語(yǔ)); 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_no()/查詢學(xué)生記錄

25、 int i; char no20; printf(n請(qǐng)輸入要查詢學(xué)生學(xué)號(hào):); scanf(%s,&no); printf(nn學(xué)期t學(xué)號(hào)t班級(jí)t姓名t語(yǔ)文t數(shù)學(xué)t英語(yǔ)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.stui.eng,d

26、,dd.stui.sum,dd.stui.aver); break; if(i=dd.count) printf(nnnn沒有找到該學(xué)生(姓名-%s)!); void tongji1()/輸出某班所有學(xué)生的成績(jī)int i;int clas;printf(請(qǐng)輸入要查詢的班級(jí):);scanf(%d,&clas);printf(nn學(xué)期t學(xué)號(hào)t班級(jí)t姓名tt語(yǔ)文t數(shù)學(xué)t英語(yǔ)t計(jì)算機(jī)t總分t平均分); printf(n-n); for(i=0;idd.count;i+)if(dd.stui.clas)=clas) printf(%st%st%-8d%stt%-8d%-8d%-8d%

27、-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()/輸出某班各科成績(jī)平均值的函數(shù)int i,j;int k=0;float chi=0,math=0,eng=0,com=0;printf(nnn請(qǐng)輸入要查詢的班級(jí):);scanf(%d,&k);for(i=0,j=0;idd.count;i+)if(k=dd.stui.clas)chi=dd

28、.stui.chi+chi;math=dd.stui.math+math;eng=dd.stui.eng+eng;com=+com;j+;if(j!=0)printf(n%d班n語(yǔ)文成績(jī)平均分為%fn數(shù)學(xué)成績(jī)平均分為%fn英語(yǔ)成績(jī)平均分為%fn計(jì)算機(jī)成績(jī)平均分為%fnn,k,(chi/j),(math/j),(eng/j),(com/j);elseprintf(沒有該班信息);void tongji3()/輸出各科總成績(jī)的函數(shù)int i;int k,j;float chi=0,math=0,eng=0,com=0;printf(nnn請(qǐng)輸入要查詢的班級(jí):);scanf(%

29、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語(yǔ)文成績(jī)總分為%fn數(shù)學(xué)成績(jī)總分為%fn英語(yǔ)成績(jī)總分為%fn計(jì)算機(jī)成績(jī)總分為%fnn,k,chi,math,eng,com);elseprintf(沒有該班信息);void tongji4()/輸出不及格名單的函數(shù)int i; read_data();/調(diào)用read_data()函數(shù) printf(不及格名單:n); printf(班級(jí)t學(xué)期t學(xué)號(hào)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(語(yǔ)文)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.stu

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論