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

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)任務(wù)書一、課程設(shè)計(jì)的內(nèi)容對(duì)學(xué)生信息(包括學(xué)號(hào)、數(shù)學(xué)、英語、計(jì)算機(jī)、平均分)進(jìn)行管理,包括學(xué)生成績(jī)的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計(jì)、退出.每個(gè)教師都將各自班學(xué)生的成績(jī)信息進(jìn)行記錄,信息內(nèi)容包含:(1)學(xué)生的學(xué)號(hào)(2)學(xué)生的姓名(3)學(xué)生的成績(jī)員。假設(shè),教師現(xiàn)收集到了一個(gè)班學(xué)生的所有成績(jī)信息,要求用c語言編寫一個(gè)簡(jiǎn)單的成績(jī)管理系統(tǒng),可進(jìn)行錄入、查詢、修改和瀏覽等功能。學(xué)習(xí)相關(guān)開發(fā)工具和應(yīng)用軟件,熟悉系統(tǒng)建設(shè)過程。二、課程設(shè)計(jì)的要求與數(shù)據(jù)1、用c語言實(shí)現(xiàn)系統(tǒng);對(duì)學(xué)生信息(包括學(xué)號(hào)、數(shù)學(xué)、英語、c語言、平均分)進(jìn)行管理,包括學(xué)生成績(jī)的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計(jì)、退出.是高等

2、學(xué)校教務(wù)管理的重要組成部分,學(xué)生信息包括:其內(nèi)容較多,為了簡(jiǎn)化討論,要求設(shè)計(jì)的管理系統(tǒng)能夠完成以下功能:(1) 每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3門課成績(jī)(2)、成績(jī)信息錄入功能:(成績(jī)信息用文件保存,可以一次完成若干條記錄的輸入。)(3)、成績(jī)信息顯示瀏覽功能:完成全部學(xué)生記錄的顯示。(4)、查詢功能:完成按姓名查找學(xué)生記錄,并顯示。(5)成績(jī)信息的刪除:按學(xué)號(hào)進(jìn)行刪除某學(xué)生的成績(jī).(6)、排序功能:按學(xué)生平均成績(jī)進(jìn)行排序。(7)、應(yīng)提供一個(gè)界面來調(diào)用各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀!三、課程設(shè)計(jì)應(yīng)完成的工作(1)編寫算法;(2)算法測(cè)試,并有具體的測(cè)試結(jié)果和結(jié)果分

3、析;(3)撰寫課程設(shè)計(jì)報(bào)告。四、課程設(shè)計(jì)(論文)進(jìn)程安排序號(hào)設(shè)計(jì)(論文)各階段內(nèi)容地點(diǎn)起止日期1審題、搜集資料綜合樓6082編寫算法并測(cè)試綜合樓6083撰寫課程設(shè)計(jì)報(bào)告綜合樓608五、應(yīng)收集的資料及主要參考文獻(xiàn)1譚浩強(qiáng). c程序設(shè)計(jì)(第三版) . 北京:清華大學(xué)出版社, 2005 2譚浩強(qiáng). c程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第三版) . 北京:清華大學(xué)出版社, 20053譚浩強(qiáng). c程序設(shè)計(jì)教程 北京:清華大學(xué)出版社, 20074譚浩強(qiáng). c+程序設(shè)計(jì) 北京:清華大學(xué)出版社, 20045李春葆,張植民,肖忠付.c語言設(shè)計(jì)題典m.北京:清華大學(xué)出版社,2002發(fā)出任務(wù)書日期: 2010 年 6 月 9

4、 日 指導(dǎo)教師簽名:計(jì)劃完成日期: 2010 年 7 月 2 日 教學(xué)單位責(zé)任人簽章:目 錄一 總體設(shè)計(jì)(包含幾大功能模塊)1二 詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法流程圖)5三 調(diào)試分析(包含各模塊的測(cè)試用例,及測(cè)試結(jié)果)153.1源程序153.2調(diào)試與測(cè)試15四 總結(jié)15五 參考資料15 一 總體設(shè)計(jì)(包含幾大功能模塊) 1、成績(jī)錄入功能 2、成績(jī)輸出功能 3、成績(jī)查詢功能 4、刪除模塊 5、排序功能 6、統(tǒng)計(jì)功能 7、退出系統(tǒng)二、詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法流程圖)2.1各函數(shù)的功能和實(shí)現(xiàn)1、輸入初始的學(xué)生信息:輸入信息包括學(xué)生的姓名、學(xué)號(hào)以及學(xué)生的成績(jī)等相關(guān)信息;可用函數(shù)void

5、input(student *data, int *len)來實(shí)現(xiàn)此操作。 2、成績(jī)輸出模塊:輸出學(xué)生的信息以及成績(jī)void output(student *data, int len):通過學(xué)生的姓名來查看學(xué)生的相關(guān)成績(jī),同時(shí)也可以分別通過caverage()、maverage()、eaverage()和comaverage()來輸出成績(jī)的平均分?jǐn)?shù)、最高和最低分?jǐn)?shù)。3、成績(jī)查詢模塊:可用void find(student *data, int len)來實(shí)現(xiàn)。找到就輸出此學(xué)生全部信息。4、刪除模塊:用函數(shù)void delete_item(student *data, int *len)來實(shí)現(xiàn)

6、5、排序模塊:用函數(shù)void sort(student *data, int len)來實(shí)現(xiàn)6、統(tǒng)計(jì)功能能:用函數(shù)void stat(student *data, int len) 來實(shí)現(xiàn)7、退出系統(tǒng):可用一個(gè)函數(shù)exit()來實(shí)現(xiàn),首先將信息保存到文件中,釋放動(dòng)態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。 結(jié)束開始輸出菜單根據(jù)菜單輸入n的值選擇程序輸入退出輸出保存查找排序統(tǒng)計(jì)插入刪除三 調(diào)試分析(包含各模塊的測(cè)試用例,及測(cè)試結(jié)果) 3.1源程序#include #include #include #define maxn 35#define max_name 256typedef struct stud

7、ent /學(xué)生信息int no;char namemax_name;double english;double math;double programming;double mark_ave;double mark_tot; student;/*-輸入信息子程序-*/void input(student *data, int *len)int no;putchar(n);printf(%sn, 請(qǐng)輸入新的記錄,如果需要退出當(dāng)前菜單請(qǐng)輸入-1.);printf(%sn, 格式:n學(xué)號(hào)n);printf(%sn, 姓名 英語 數(shù)學(xué) c語言);putchar(n);printf(如:n);print

8、f(5n);printf(黃宏業(yè) 100 100 100n);scanf(%d, &no);while(no != -1) data*len.no = no;scanf(%s %lf %lf %lf, data*, &data*len.english, &data*len.math,&data*len.programming);data*len.mark_ave=(data*len.english+data*len.math+data*len.programming)/3.0;data*len.mark_tot=data*len.english+data*len.math+da

9、ta*len.programming;(*len)+;scanf(%d, &no);/*-輸出信息子程序-*/void output(student *data, int len) int i;system(cls); printf(%8s, 學(xué)號(hào)); printf(%8s, 姓名); printf(%8s, 英語); printf(%8s, 數(shù)學(xué)); printf(%10s, c語言); printf(%12s, 平均分); printf(%10s, 總分); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); for (i =

10、0; i len; i+) printf(%8d, datai.no); printf(%8s, ); printf(%8.1lf, datai.english); printf(%8.1lf, datai.math); printf(%10.1lf, datai.programming); printf(%12.1lf, datai.mark_ave); printf(%10.1lf, datai.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回車鍵繼續(xù).); get

11、char(); getchar();/*-排序子程序-*/void sort(student *data, int len) int i,j,k; student temp; for (i=0; ilen-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j;if (k != i) temp = datai;datai = datak;datak = temp; /*-搜索子程序-*/void find(student *data, int len) int find_no, result ; int i;lab: result=0; printf(%sn

12、, 請(qǐng)輸入需要查找的學(xué)生的學(xué)號(hào),退出當(dāng)前菜單請(qǐng)輸入 -1.); scanf(%d, &find_no); if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no & result = len ) printf(%sn, 未查詢到相關(guān)信息); goto lab; else system(cls); printf(%sn, 查詢信息如下:); for (i =0; i 80; i+) putchar(=); putchar(n); printf(%8s, 學(xué)號(hào)); printf(

13、%8s, 姓名); printf(%8s, 英語); printf(%8s, 數(shù)學(xué)); printf(%10s, c語言); printf(%12s, 平均分); printf(%10s, 總分); putchar(n); printf(%8d, dataresult.no); printf(%8s, ); printf(%8.1lf, dataresult.english); printf(%8.1lf, dataresult.math); printf(%10.1lf, dataresult.programming); printf(%12.1lf, data

14、result.mark_ave); printf(%10.1lf, dataresult.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); goto lab; /*-插入子程序-*/void insert(student *data, int *len) int no, pos;double english, math, programming, mark_ave, mark_tot;int i; char namemax_name;lab: printf(%sn, 輸入新的記錄,退出當(dāng)前菜單請(qǐng)輸入-1.);

15、 printf(%sn, 格式:學(xué)號(hào)); printf(%sn, 姓名 英語 數(shù)學(xué) c語言); scanf(%d, &no); if (no = -1) return; data*len.no = no; scanf(%s %lf %lf %lf, name, &english, &math, &programming); mark_ave=(english+math+programming)/3.0; mark_tot=english+math+programming; pos = 0; while (datapos.mark_ave mark_ave) & (pos = pos; i-)

16、datai+1 = datai; datapos.no = no; strcpy(, name); datapos.english = english; datapos.math = math; datapos.programming = programming; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/*-刪除子程序-*/void delete_item(student *data, int *len) int no, i, pos;lab: pos=0;

17、 printf(%sn, 輸入需要?jiǎng)h除的學(xué)生的學(xué)號(hào),退出當(dāng)前菜單請(qǐng)輸入-1.); scanf(%d, &no); if (no = -1) return; while( (datapos.no != no) & (pos = *len) printf(%sn, 未找到需要?jiǎng)h除的學(xué)生); goto lab; else for (i = pos+1;i *len; i+) datai-1 = datai; *len = *len -1; if (*len = 0) printf(%sn, 沒有任何記錄,請(qǐng)按回車鍵返回.); getchar(); getchar(); return; goto la

18、b; /*-統(tǒng)計(jì)子程序-*/void stat(student *data, int len) int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i; for (i = 0;i len; i+) if (datai.mark_ave =59) no_59+; else if (datai.mark_ave =69) no_69+;else if (datai.mark_ave =79) no_79+;else if (datai.mark_ave = 89) no_89+;else no_100+; system(cls); for (

19、i =0; i 80; i+) putchar(=);putchar(n); printf(%10s, 分?jǐn)?shù)); printf(%10s, 0-59); printf(%10s, 60-69); printf(%10s, 70-79); printf(%10s, 80-89); printf(%10s, 90-100); putchar(n); putchar(n); printf(%10s, 學(xué)生); printf(%10d, no_59); printf(%10d, no_69); printf(%10d, no_79); printf(%10d, no_89); printf(%10d,

20、 no_100); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回車鍵返回); getchar(); getchar();/*-顯示信息子程序-*/void paint() int i;system(cls); printf(%55sn, 學(xué)生管理系統(tǒng)n); printf( 制作者: 09級(jí)01班 n); for (i = 0; i 80; i+) putchar(=); putchar(n); printf( 1 輸入信息 2 輸出信息n); printf( 3 按平均分排序 4 按學(xué)號(hào)查找n); prin

21、tf( 5 插入 6 按學(xué)號(hào)刪除n); printf( 7 按平均分輸出統(tǒng)計(jì)信息 8 保存到文件n); printf( 0 退出n);for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 請(qǐng)輸入各操作對(duì)應(yīng)的序號(hào):);void save(student *data, int len)/將數(shù)據(jù)保存到文件int i;file *fp;fp=fopen(成績(jī)統(tǒng)計(jì)表.txt,w);fprintf(fp,%8s, 學(xué)號(hào)); fprintf(fp,%8s, 姓名); fprintf(fp,%8s, 英語); fprintf(fp,%8s, 數(shù)學(xué)

22、); fprintf(fp,%10s, c語言); fprintf(fp,%12s, 平均分); fprintf(fp,%10sn, 總分); fprintf(fp,=n); putchar(n); for (i = 0; i len; i+) fprintf(fp,%8d, datai.no); fprintf(fp,%8s, ); fprintf(fp,%8.1lf, datai.english); fprintf(fp,%8.1lf, datai.math); fprintf(fp,%10.1lf, datai.programming); fprintf(fp,%12

23、.1lf, datai.mark_ave); fprintf(fp,%10.1lfn, datai.mark_tot); fprintf(fp,=n);fclose(fp);printf(文件已保存到成績(jī)統(tǒng)計(jì)表.txt);getchar();getchar();/*-主程序-*/void main() student datamaxn; int len = 0; char ctrl_ch; paint(); scanf(%c, &ctrl_ch); while (ctrl_ch != 0) switch(ctrl_ch) case 1:input(data, &len);break;case

24、2:output(data, len);break;case 3:sort(data, len);break;case 4:find(data, len);break;case 5:insert(data, &len);break;case 6:delete_item(data, &len);break;case 7:stat(data, len);break;case 8:save(data, len);break;default:if (ctrl_ch != n) printf(%sn, 輸入錯(cuò)誤!);break; if (ctrl_ch != n) paint(); scanf(%c,

25、&ctrl_ch); 3.2調(diào)試與測(cè)試 3.2.1算法調(diào)試過程中出現(xiàn)的問題及解決方法-configuration: 4 - win32 debug-compiling.4.cppf:學(xué)習(xí)c語言ex14.cpp(288) : error c2065: maxn : undeclared identifierf:學(xué)習(xí)c語言ex14.cpp(288) : error c2057: expected constant expressionf:學(xué)習(xí)c語言ex14.cpp(288) : error c2466: cannot allocate an array of constant size 0f:學(xué)習(xí)

26、c語言ex11.cpp(288) : error c2133: data : unknown size執(zhí)行 cl.exe 時(shí)出錯(cuò).1.obj - 1 error(s), 0 warning(s)解決方法:對(duì)maxn進(jìn)行定義,在第三行加入#define maxn 353.2.2主要程序運(yùn)行結(jié)果運(yùn)行開始 選擇1輸入成績(jī)選擇2 輸出成績(jī)選擇3按平均分排序 再按2輸出成績(jī)選擇4查找(輸入學(xué)號(hào)1)選擇5插入新數(shù)據(jù) 選擇6按學(xué)號(hào)刪除(輸入學(xué)號(hào)3)選擇7按平均分輸出統(tǒng)計(jì)信息選擇8保存選擇0退出 總 結(jié)由于本課題中的許多知識(shí)點(diǎn)都沒有學(xué)過都要靠自己到課外的資料中去查找。在用的時(shí)候難免出現(xiàn)這樣那樣的錯(cuò)誤。如開始設(shè)

27、計(jì)出來的菜單不是預(yù)想的那樣,而是總個(gè)窗中出現(xiàn)混亂。解決的這個(gè)問題的辦法是調(diào)整。一個(gè)系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設(shè)計(jì)的這個(gè)系統(tǒng)。在設(shè)計(jì)的調(diào)試過程中也無法順利的完成調(diào)試工作。有了一個(gè)清晰簡(jiǎn)單的菜單和一些提示信息這后,調(diào)試過程完成的非常順利?;仡櫰鸫舜握n程設(shè)計(jì),至今我仍感慨頗多,的確,從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在整整半個(gè)月的日子里,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)本次課程設(shè)計(jì)結(jié)束了,對(duì)于我的影響很大。我通過這次實(shí)踐學(xué)到了許多知識(shí)。學(xué)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論