版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)學(xué)號(hào)102128121武漢理工大學(xué)華夏學(xué)院課 程設(shè)計(jì) 報(bào)告書課程名稱:數(shù)據(jù)結(jié)構(gòu)題 目:用C語言實(shí)現(xiàn)成績(jī)統(tǒng)計(jì)程序的設(shè)計(jì)系 名:信息工程系專業(yè)班級(jí):軟件工程1121姓 名:指導(dǎo)教師:黃啟荃2013年6月28日課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:用C語言實(shí)現(xiàn)成績(jī)統(tǒng)計(jì)程序的設(shè)計(jì)設(shè)計(jì)目的1 .鞏固和加深課堂所學(xué)知識(shí)、學(xué)會(huì)分析研 究數(shù)據(jù)對(duì)象的特性及數(shù)據(jù)的組織方法;2 .選擇合適的數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu) 以及相應(yīng)操作,實(shí)現(xiàn)一個(gè)班的成績(jī)統(tǒng)計(jì)3 .提高程序設(shè)計(jì)能力、加強(qiáng)查閱、運(yùn)用資 料的能力、算法分析與程序設(shè)計(jì)素質(zhì)培養(yǎng) ; 設(shè)計(jì)任務(wù)(在規(guī)定的時(shí)間內(nèi)完成下列任務(wù))問題描述給出n個(gè)學(xué)生的m門課程的考
2、試 成績(jī)信息,每條信息由姓名、課程代號(hào)與分?jǐn)?shù)組 成,要求設(shè)計(jì)算法:(1)輸入每個(gè)人的各門課程的成績(jī),計(jì)算每人 的平均成績(jī);(2)按平均成績(jī)的高低次序,打印出出個(gè)人的 名次,平均成績(jī)相同的為同一名次;(3)按名次列出每個(gè)學(xué)生的姓名和各科成績(jī);基本要求學(xué)生的考試成績(jī)必須通過鍵盤輸 入,且需對(duì)輸出進(jìn)行格式控制;算法提示可以用選擇排序、冒泡排序等多種 排序算法求解;具體要完成的任務(wù)是:A.編制完成上述問題的 C語言程序、進(jìn)行 程序調(diào)試并能得出正確的運(yùn)行結(jié)果。B.寫出規(guī)范的課程設(shè)計(jì)報(bào)告書;時(shí)間安排:6月24日-28日第f布置題目,確定任務(wù)、查找相 關(guān)資料第二天第 四天功能分析,編寫程序,調(diào)試程 序、運(yùn)行
3、系統(tǒng);第五天程序驗(yàn)收、答辯;撰寫設(shè)計(jì)報(bào) 告。具體要求1 .課程設(shè)計(jì)報(bào)告按統(tǒng)一通用格式書寫,具體內(nèi)容如下:設(shè)計(jì)任務(wù)與要求總體方案與說明 軟件主要模塊的流程圖源程序清單與注釋問題分析與解決方案 (包括調(diào)式報(bào)告,即在調(diào)式過程中遇到的 主要問題、解決方法及改進(jìn)設(shè)想);小結(jié)與體會(huì)附錄: 源程序(必須有簡(jiǎn)單注釋)使用說明參考資料2 .每位學(xué)生應(yīng)獨(dú)立完成各自的任務(wù)且每 天至少在設(shè)計(jì)室工作半天;指 導(dǎo) 教 師 簽 名: 甘心優(yōu) 2013年6月22日 教研室主任(或責(zé)任教師)簽名:2013年6月24日1 .設(shè)計(jì)題目及要求1.1 設(shè)計(jì)題目用C語言實(shí)現(xiàn)成績(jī)統(tǒng)計(jì)程序的設(shè)計(jì)。1.2 具體任務(wù)對(duì)學(xué)生信息(包括學(xué)號(hào)、語文、
4、數(shù)學(xué)、英語、 平均分)進(jìn)行管理,包括學(xué)生成績(jī)的信息輸入、輸 出、查詢、刪除、排序、統(tǒng)計(jì)、退出.將學(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è)過程。2 .系統(tǒng)設(shè)計(jì)思想2.1 系統(tǒng)設(shè)計(jì)思想在編寫成績(jī)統(tǒng)計(jì)管理系統(tǒng)程序的過程中運(yùn) 用結(jié)構(gòu)體,把問題中所涉及的變量定義在結(jié)構(gòu)體 中,利用函數(shù)來管理學(xué)生成績(jī),循環(huán)語句控制所 選擇的選擇界面,case語句進(jìn)行選擇。然后利 用相關(guān)變量函數(shù)把學(xué)生成績(jī)記錄下
5、來,利用循環(huán) 語句再回到選擇界面,利用查找函數(shù),統(tǒng)計(jì)函數(shù) 來查找統(tǒng)計(jì)學(xué)生成績(jī),利用冒泡排序法來對(duì)學(xué)生 平均成績(jī)進(jìn)行排序。然后按成績(jī)高低對(duì)學(xué)生進(jìn)行 排名。2.2 系統(tǒng)算法設(shè)計(jì)2.2.1 系統(tǒng)模塊結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)如圖2-1所示2.2.2主函數(shù)流程圖圖2-1系統(tǒng)結(jié)構(gòu)圖主函數(shù)如圖2-2所示73.系統(tǒng)調(diào)試與運(yùn)行3.1 開發(fā)環(huán)境Visual C+6.0)Microsoft Windows XP3.2 程序調(diào)試3.2.1 主界面調(diào)試選擇界面如圖3-1所示武漢理工大學(xué)學(xué)生藤管理系疏制作者:武漢理工大學(xué)大學(xué)軟件1121班鐘偉息分分Jjlp夕.小列人刊出輸按插按退請(qǐng)輸入各操作對(duì)應(yīng)的序號(hào):2輸出信息4孑痔號(hào)查找6按學(xué)
6、號(hào)刪除8保存到文件圖3-1選擇界面截圖3.2.2 成績(jī)錄入模塊成績(jī)錄入界面 錄入界面如圖3-2所示清諭八各操小時(shí)內(nèi)的序片; 1請(qǐng)輸入新的記錄,如果需要退胃當(dāng)前菜單請(qǐng)輸入-L 珞五 學(xué)考姓名但文期學(xué)英造如 1卜明現(xiàn)DE 3D 張三SE 70 55 2李四7S照67 3王五兆63四4手3月9E E7合4 5.%裁 57 88 03圖3-2 成績(jī)錄入模塊3.2.3成績(jī)查詢模塊成績(jī)查詢界面如圖3-3所示-E;Cia inexe73. Q219.067.72Q3,O76-0225.079-7239.081. 3244.0o o o o O 6.7.見4.9.5 6 9 GU 6000008,8*8,7.
7、8.7 5 6 8 8o o O 0 O59巳8.邑工8 7 5 9 8三四五明散張李王李蘇12 3 4 5圖3-3 成績(jī)查詢模塊3.2.4成績(jī)統(tǒng)計(jì)模塊成績(jī)統(tǒng)計(jì)界面如圖3-4所示姓名一語文577205.073.0219.075.0225.0T9. 7239.06k 3244.0o o o o O 7.6sS-4.9. 6 5 9 5 6 o o o o O st8.8.,8+ 5 7 6 8 8 o o o G o 陶甌弭密87. 四三五明散 李張王李蘇 2 1-345按回車錐繼續(xù).圖3-4 成績(jī)統(tǒng)計(jì)模塊4 .設(shè)計(jì)評(píng)價(jià)與修改在數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)過程中,許多知識(shí)點(diǎn)都 沒有學(xué)過,都要靠自己到課外的資
8、料中去查找。 在用的時(shí)候難免出現(xiàn)這樣那樣的錯(cuò)誤。 如開始設(shè)計(jì)出來的菜單不是預(yù)想的那樣,而是窗中出現(xiàn)混 亂,要經(jīng)過自己一遍遍的調(diào)試與修改,和老師同學(xué)的幫助下逐漸改進(jìn)完善,最后才漸漸的成型。 運(yùn)行的也基本達(dá)到所需要的運(yùn)算要求。5 .心得與體會(huì)回顧起此次課程設(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ì)服
9、務(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é)束了,我們通過這 次實(shí)踐學(xué)到了許多知識(shí)。學(xué)到了設(shè)計(jì)一個(gè)簡(jiǎn)單的系統(tǒng)。要注意哪些方面。也使 我們知道自己哪些方面做得還不夠。這不僅是程序設(shè)計(jì) ,更是鍛煉我們處理問題 的能力,同時(shí)也使我們了解到團(tuán)隊(duì)合作的可貴.編寫程序是件細(xì)心活,稍不留神 就會(huì)出錯(cuò),這就必須要求我們對(duì)待事情要認(rèn)真!在編寫程
10、序的過程中,錯(cuò)誤不斷 出現(xiàn),不同的類型(如少寫了一個(gè)符號(hào),寫錯(cuò)了字母,用錯(cuò)了函數(shù)等等)層出不窮, 這考驗(yàn)我們待事細(xì)心,耐心,能不能堅(jiān)持到底,不能半途而廢。每一次的課程設(shè)計(jì)都是一次對(duì)自己曾經(jīng)學(xué)習(xí)知識(shí)的檢驗(yàn),通過每次的實(shí) 踐,使自己認(rèn)識(shí)之前的不足與缺點(diǎn),利于以后的改正與今后學(xué)習(xí)的發(fā)展方向, 希望每一次的課程設(shè)計(jì)都能有一個(gè)很好的提高參考文獻(xiàn)1詹春華李小艷黃啟荃?計(jì)算機(jī)應(yīng)用基礎(chǔ)? 科學(xué)出版社2011.52詹春華 楊沙?(C語言程序設(shè)計(jì)?科學(xué)出版社 2011.83譚浩強(qiáng) C語言程序設(shè)計(jì)北京清華大學(xué)出版 社,2000年1月。4徐孝凱魏榮?數(shù)據(jù)結(jié)構(gòu)?機(jī)械工業(yè)出版社? 1996 年5徐孝凱?數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)明教程?
11、清華大學(xué)出版 社? 1995年6陳文博朱青衣數(shù)據(jù)結(jié)本與算法?機(jī)械工業(yè)出 版社? 1996年附錄:程序代碼#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXN 35#define MAX_NAME 256typedef struct student /學(xué)生信息 int no;char nameMAX_NAME;double Chinese;double math;double English;double mark_ave;double mark_tot; STUDENT;/*
12、輸入信息子程序*/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é)英語)putchar('n');printf("如:n");printf("1n");printf("小明 93
13、 95 89n");scanf("%d", &no);while(no != -1) data*len.no = no;scanf("%s %lf %lf %lf", data*, &data*len.Chinese, &data*len.math,&data*len.English);data*len.mark_ave=(data*len.Chinese+data*len.math+data*len.Engli sh)/3.0;data*len.mark_tot=data*len.Chinese
14、+data*len.math+data*len.Englis h;(*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",
15、" 英語)printf("%12s",”平均分)printf("%10s"," 總分)putchar('n');for (i =0; i < 80; i+)putchar('=');putchar('n');for (i = 0; i< len; i+)printf("%8d", datai.no);printf("%8s", );printf("%8.1lf", datai.Chinese);p
16、rintf("%8.1lf", datai.math);printf("%10.1lf", datai.English);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ù).");getchar();getch
17、ar();/*排序子程序*/void sort(STUDENT *data, int len)int i,j,k;STUDENT temp;for (i=0; i<len-1; i+) for (k=i, j=i+1; j<len; j+)if (datak.mark_ave > 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: resu
18、lt=0;printf("%sn","請(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) result +;if (result >= len ) printf("%sn","未查詢到相關(guān)信息)goto lab;else s
19、ystem("cls");printf("%sn","查詢信息如下:");for (i =0; i < 80; i+)putchar('=');putchar('n');printf("%8s","學(xué)號(hào))printf("%8s","姓名)printf("%8s","語文)printf("%8s","數(shù)學(xué))printf("%10s"," 英語)prin
20、tf("%12s",”平均分)printf("%10s"," 總分)putchar('n');printf("%8d", dataresult.no);printf("%8s", );printf("%8.1lf", dataresult.Chinese);printf("%8.1lf", dataresult.math);printf("%10.1lf", dataresult.English);p
21、rintf("%12.1lf", dataresult.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 Chinese, math, English, mark_ave, mark_to
22、t;int i;char nameMAX_NAME;lab: printf("%sn","輸入新的記錄,退出當(dāng)前菜單請(qǐng)輸入 -1.");printf("%sn"," 格式:學(xué)號(hào))printf("%sn","姓名語文數(shù)學(xué)英語)scanf("%d", &no);if (no = -1) return;data*len.no = no;scanf("%s %lf %lf %lf", name, &Chinese, &math, &
23、English); mark_ave=(Chinese+math+English)/3.0;mark_tot=Chinese+math+English;pos = 0;while (datapos.mark_ave < mark_ave) && (pos < *len)pos +;for (i = *len-1; i >= pos; i-) datai+1 = datai;datapos.no = no;strcpy(, name);datapos.Chinese = Chinese;datapos.math = math;datapo
24、s.English = English;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;printf("%sn","輸入需要?jiǎng)h除的學(xué)生的學(xué)號(hào),退出當(dāng)前菜單請(qǐng)輸入-1.");scanf("%d", &no);if (no = -1) return;while( (datapos.n
25、o != no) && (pos < *len) ) pos = pos +1;if (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 lab;/*
26、統(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(&
27、quot;cls");for (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(&
28、quot;%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", no_100);putchar('n');for (
29、i =0; i < 80; i+)putchar('=');putchar('n');printf("接回車鍵返回");getchar();getchar();/*顯示信息子程序*/void paint()int i;system("cls");printf("%55sn","武漢理工大學(xué)華夏學(xué)院學(xué)生成績(jī)管理系統(tǒng)n");printf("制作者:武漢理工大學(xué)華夏學(xué)院軟件1121班鐘偉n");for (i = 0; i < 80; i+) putchar(
30、'=');putchar('n');printf("1輸入信息2輸出信息n");printf(-3按平均分排序4按學(xué)號(hào)查找n");printf("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):&qu
31、ot;);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é))fprintf(fp,"%10s","英語)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.Chinese);fprintf(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年物業(yè)市場(chǎng)推廣合作合同
- 2024年格力空調(diào)質(zhì)保與安裝服務(wù)協(xié)議
- 2025幼兒園園長(zhǎng)聘用合同
- 渠道溝通機(jī)制建設(shè)增強(qiáng)協(xié)作效率
- 瑜伽館廣告牌建設(shè)合同
- 福建省福州市部分學(xué)校教學(xué)聯(lián)盟2023-2024學(xué)年高一上學(xué)期期末考試歷史試題(解析版)
- 北京市延慶區(qū)2023-2024學(xué)年高二上學(xué)期期末考試歷史試題(解析版)
- 三違行為預(yù)防與干預(yù)體系
- 河南省洛陽市2023-2024學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試題(解析版)
- 河北省邢臺(tái)市質(zhì)檢聯(lián)盟2025屆高三上學(xué)期11月期中考試數(shù)學(xué)試題(解析版)
- 甲醇-水精餾填料塔的設(shè)計(jì)
- 吹風(fēng)機(jī)成品過程質(zhì)量控制檢查指引
- 中介人合作協(xié)議(模版)
- 財(cái)務(wù)管理制度-家電行業(yè)
- 班主任工作滿意度測(cè)評(píng)表
- 德國WMF壓力鍋使用手冊(cè)
- 瀝青路面施工監(jiān)理工作細(xì)則
- 《尋找消失的爸爸》(圖形)
- 《孤獨(dú)癥兒童-行為管理策略及行為治療課程》讀后總結(jié)
- 人教版八年級(jí)上冊(cè)英語單詞表默寫版(直接打印)
- PDCA循環(huán)在傳染病管理工作中的應(yīng)用
評(píng)論
0/150
提交評(píng)論