C語言實現(xiàn)學(xué)生成績管理系統(tǒng)_第1頁
C語言實現(xiàn)學(xué)生成績管理系統(tǒng)_第2頁
C語言實現(xiàn)學(xué)生成績管理系統(tǒng)_第3頁
C語言實現(xiàn)學(xué)生成績管理系統(tǒng)_第4頁
C語言實現(xiàn)學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)號102128121 武漢理工大學(xué)華夏學(xué)院課程設(shè)計報告書課程名稱: 數(shù)據(jù)結(jié)構(gòu) 題 目:用C語言實現(xiàn)成績統(tǒng)計程序的設(shè)計 系 名: 信息工程系 專業(yè)班級: 軟件工程1121 姓 名: 指導(dǎo)教師: 黃啟荃 2013 年 6月 28日課程設(shè)計任務(wù)書設(shè)計題目:用C語言實現(xiàn)成績統(tǒng)計程序的設(shè)計設(shè)計目的1.鞏固和加深課堂所學(xué)知識、學(xué)會分析研究數(shù)據(jù)對象的特性及數(shù)據(jù)的組織方法;2.選擇合適的數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)以及相應(yīng)操作,實現(xiàn)一個班的成績統(tǒng)計3. 提高程序設(shè)計能力、加強(qiáng)查閱、運(yùn)用資料的能力、算法分析與程序設(shè)計素質(zhì)培養(yǎng) ;設(shè)計任務(wù) (在規(guī)定的時間內(nèi)完成下列任務(wù))問題描述給出n個學(xué)生的m門課程的考試成績信息,

2、每條信息由姓名、課程代號與分?jǐn)?shù)組成,要求設(shè)計算法:(1)輸入每個人的各門課程的成績,計算每人的平均成績;(2)按平均成績的高低次序,打印出出個人的名次,平均成績相同的為同一名次;(3)按名次列出每個學(xué)生的姓名和各科成績;基本要求 學(xué)生的考試成績必須通過鍵盤輸入,且需對輸出進(jìn)行格式控制;算法提示可以用選擇排序、冒泡排序等多種排序算法求解; 具體要完成的任務(wù)是: A. 編制完成上述問題的C語言程序、進(jìn)行程序調(diào)試并能得出正確的運(yùn)行結(jié)果。 B. 寫出規(guī)范的課程設(shè)計報告書;時間安排:6月24日-28日第一天布置題目,確定任務(wù)、查找相關(guān)資料第二天第四天功能分析,編寫程序,調(diào)試程序、運(yùn)行系統(tǒng);第五天程序驗收

3、、答辯;撰寫設(shè)計報告。具體要求1. 課程設(shè)計報告按統(tǒng)一通用格式書寫,具體內(nèi)容如下: 設(shè)計任務(wù)與要求 總體方案與說明 軟件主要模塊的流程圖 源程序清單與注釋 問題分析與解決方案(包括調(diào)式報告,即在調(diào)式過程中遇到的主要問題、解決方法及改進(jìn)設(shè)想); 小結(jié)與體會附錄: 源程序(必須有簡單注釋) 使用說明 參考資料2每位學(xué)生應(yīng)獨立完成各自的任務(wù)且每天至少在設(shè)計室工作半天;指 導(dǎo) 教 師 簽 名: 2013 年 6月 22日 教研室主任(或責(zé)任教師)簽名: 2013年 6月 24日1.設(shè)計題目及要求1.1設(shè)計題目用C語言實現(xiàn)成績統(tǒng)計程序的設(shè)計。1.2具體任務(wù)對學(xué)生信息(包括學(xué)號、語文、數(shù)學(xué)、英語、平均分)

4、進(jìn)行管理,包括學(xué)生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計、退出.將學(xué)生的成績信息進(jìn)行記錄,信息內(nèi)容包含:(1)學(xué)生的學(xué)號(2)學(xué)生的姓名(3)學(xué)生的成績。假設(shè),現(xiàn)收集到了一個班學(xué)生的所有成績信息,要求用C語言編寫一個簡單的成績管理系統(tǒng),可進(jìn)行錄入、查詢、修改和瀏覽等功能。學(xué)習(xí)相關(guān)開發(fā)工具和應(yīng)用軟件,熟悉系統(tǒng)建設(shè)過程。2.系統(tǒng)設(shè)計思想2.1 系統(tǒng)設(shè)計思想在編寫成績統(tǒng)計管理系統(tǒng)程序的過程中運(yùn)用結(jié)構(gòu)體,把問題中所涉及的變量定義在結(jié)構(gòu)體中,利用函數(shù)來管理學(xué)生成績,循環(huán)語句控制所選擇的選擇界面,case語句進(jìn)行選擇。然后利用相關(guān)變量函數(shù)把學(xué)生成績記錄下來,利用循環(huán)語句再回到選擇界面,利用查找函數(shù),

5、統(tǒng)計函數(shù)來查找統(tǒng)計學(xué)生成績,利用冒泡排序法來對學(xué)生平均成績進(jìn)行排序。然后按成績高低對學(xué)生進(jìn)行排名。2.2 系統(tǒng)算法設(shè)計2.2.1系統(tǒng)模塊結(jié)構(gòu)圖 系統(tǒng)結(jié)構(gòu)如圖2-1所示圖2-1 系統(tǒng)結(jié)構(gòu)圖結(jié)束開始 菜單顯示菜單選擇輸入退出輸出保存查找排序統(tǒng)計插入刪除2.2.2主函數(shù)流程圖 主函數(shù)如圖2-2所示結(jié)束判斷輸入數(shù) int num; char name20;int score3;float average;開始 輸入選擇操作t=4t=2t=1插入數(shù)據(jù)查找t=3輸出信息輸入信息選擇排序法排序平均數(shù)保存文件按學(xué)號刪除輸出平均分成績記載相應(yīng)模塊并進(jìn)行處理圖2-2 主函數(shù)流程圖3.系統(tǒng)調(diào)試與運(yùn)行3.1開發(fā)環(huán)境V

6、isual C+6.0,Microsoft Windows XP3.2程序調(diào)試 3.2.1主界面調(diào)試 選擇界面如圖3-1所示圖3-1 選擇界面截圖3.2.2成績錄入模塊成績錄入界面 錄入界面如圖3-2所示 圖3-2 成績錄入模塊3.2.3成績查詢模塊成績查詢界面如圖3-3所示 圖3-3 成績查詢模塊3.2.4成績統(tǒng)計模塊成績統(tǒng)計界面如圖3-4所示圖3-4 成績統(tǒng)計模塊4.設(shè)計評價與修改在數(shù)據(jù)結(jié)構(gòu)課程設(shè)計過程中,許多知識點都沒有學(xué)過,都要靠自己到課外的資料中去查找。在用的時候難免出現(xiàn)這樣那樣的錯誤。如開始設(shè)計出來的菜單不是預(yù)想的那樣,而是窗中出現(xiàn)混亂,要經(jīng)過自己一遍遍的調(diào)試與修改,和老師同學(xué)的幫

7、助下逐漸改進(jìn)完善,最后才漸漸的成型。運(yùn)行的也基本達(dá)到所需要的運(yùn)算要求。5.心得與體會回顧起此次課程設(shè)計,我感慨頗多,從拿到題目到完成整個編程,從理論到實踐,在整整一個禮拜的日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自

8、己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體。通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識熟悉了,本次課程設(shè)計結(jié)束了,我們通過這次實踐學(xué)到了許多知識。學(xué)到了設(shè)計一個簡單的系統(tǒng)。要注意哪些方面。也使我們知道自己哪些方面做得還不夠。這不僅是程序設(shè)計,更是鍛煉我們處理問題的能力,同時也使我們了解到團(tuán)隊合作的可貴.編寫程序是件細(xì)心活,稍不留神就會出錯,這就必須要求我們對待事情要認(rèn)真!在編寫程序的過程中,錯誤不斷出現(xiàn),不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數(shù)等等)層出不窮,這考驗我們待事細(xì)心,耐心,能不能堅持到底,不能半途而廢。每一次的課程設(shè)計都是一次對自己曾

9、經(jīng)學(xué)習(xí)知識的檢驗,通過每次的實踐,使自己認(rèn)識之前的不足與缺點,利于以后的改正與今后學(xué)習(xí)的發(fā)展方向,希望每一次的課程設(shè)計都能有一個很好的提高參考文獻(xiàn)1詹春華 李小艷 黃啟荃計算機(jī)應(yīng)用基礎(chǔ)科學(xué)出版社 2011.52詹春華 楊沙C語言程序設(shè)計科學(xué)出版社2011.83譚浩強(qiáng)·C語言程序設(shè)計·北京·清華大學(xué)出版社,2000年1月。4徐孝凱 魏榮數(shù)據(jù)結(jié)構(gòu)機(jī)械工業(yè)出版社1996年5徐孝凱數(shù)據(jù)結(jié)構(gòu)簡明教程清華大學(xué)出版社1995年6陳文博 朱青數(shù)據(jù)結(jié)構(gòu)與算法機(jī)械工業(yè)出版社1996年附錄:程序代碼#include <stdlib.h>#include <stdio.

10、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;/*-輸入信息子程序-*/void input(STUDENT *data, int *len)int no;putchar('n');printf("%sn",

11、 "請輸入新的記錄,如果需要退出當(dāng)前菜單請輸入-1.");printf("%sn", "格式:n學(xué)號n");printf("%sn", "姓名 語文 數(shù)學(xué) 英語");putchar('n');printf("如:n");printf("1n");printf("小明 93 95 89n");scanf("%d", &no);while(no != -1) data*len.no = no;sc

12、anf("%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.English)/3.0;data*len.mark_tot=data*len.Chinese+data*len.math+data*len.English;(*len)+;scanf("%d", &no);/*-輸出信息子程序-

13、*/void output(STUDENT *data, int len) int i;system("cls"); printf("%8s", "學(xué)號"); printf("%8s", "姓名"); printf("%8s", "語文"); printf("%8s", "數(shù)學(xué)"); printf("%10s", "英語"); printf("%12s",

14、"平均分"); 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); printf

15、("%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();

16、getchar();/*-排序子程序-*/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 ;

17、 int i;lab: result=0; printf("%sn", "請輸入需要查找的學(xué)生的學(xué)號,退出當(dā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", &q

18、uot;未查詢到相關(guān)信息"); goto lab; else system("cls"); printf("%sn", "查詢信息如下:"); for (i =0; i < 80; i+) putchar('='); putchar('n'); printf("%8s", "學(xué)號"); printf("%8s", "姓名"); printf("%8s", "語文");

19、printf("%8s", "數(shù)學(xué)"); printf("%10s", "英語"); printf("%12s", "平均分"); printf("%10s", "總分"); putchar('n'); printf("%8d", dataresult.no); printf("%8s", ); printf("%8.1lf", d

20、ataresult.Chinese); printf("%8.1lf", dataresult.math); printf("%10.1lf", dataresult.English); printf("%12.1lf", dataresult.mark_ave); printf("%10.1lf", dataresult.mark_tot); putchar('n'); for (i =0; i < 80; i+) putchar('='); putchar('n&#

21、39;); goto lab; /*-插入子程序-*/void insert(STUDENT *data, int *len) int no, pos;double Chinese, math, English, mark_ave, mark_tot;int i; char nameMAX_NAME;lab: printf("%sn", "輸入新的記錄,退出當(dāng)前菜單請輸入-1."); printf("%sn", "格式:學(xué)號"); printf("%sn", " 姓名 語文 數(shù)學(xué) 英語

22、"); scanf("%d", &no); if (no = -1) return; data*len.no = no; scanf("%s %lf %lf %lf", name, &Chinese, &math, &English); mark_ave=(Chinese+math+English)/3.0; mark_tot=Chinese+math+English; pos = 0; while (datapos.mark_ave < mark_ave) && (pos < *le

23、n) ) pos +; for (i = *len-1; i >= pos; i-) datai+1 = datai; datapos.no = no; strcpy(, name); datapos.Chinese = Chinese; datapos.math = math; datapos.English = English; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/*-刪除子程序-*/void delete_item(STUDENT *data

24、, int *len) int no, i, pos;lab: pos=0; printf("%sn", "輸入需要刪除的學(xué)生的學(xué)號,退出當(dāng)前菜單請輸入-1."); scanf("%d", &no); if (no = -1) return; while( (datapos.no != no) && (pos < *len) ) pos = pos +1; if (pos >= *len) printf("%sn", "未找到需要刪除的學(xué)生"); goto l

25、ab; else for (i = pos+1;i < *len; i+) datai-1 = datai; *len = *len -1; if (*len = 0) printf("%sn", "沒有任何記錄,請按回車鍵返回."); getchar(); getchar(); return; goto lab; /*-統(tǒng)計子程序-*/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 <

26、; 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 (i =0; i < 80; i+) putchar('=');putchar('n'); printf("%10s",

27、 "分?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("

28、%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 (i =0; i < 80; i+) putchar('='); putchar('n'); printf("

29、按回車鍵返回"); getchar(); getchar();/*-顯示信息子程序-*/void paint() int i;system("cls"); printf("%55sn", "武漢理工大學(xué)華夏學(xué)院學(xué)生成績管理系統(tǒng)n"); printf(" 制作者:武漢理工大學(xué)華夏學(xué)院軟件1121班鐘偉 n"); for (i = 0; i < 80; i+) putchar('='); putchar('n'); printf(" 1 輸入信息 2 輸出信息n

30、"); printf(" 3 按平均分排序 4 按學(xué)號查找n"); printf(" 5 插入 6 按學(xué)號刪除n"); printf(" 7 按平均分輸出統(tǒng)計信息 8 保存到文件n"); printf(" 0 退出n");for (i = 0; i<= 79; i+) putchar('='); putchar('n'); printf("%sn", "請輸入各操作對應(yīng)的序號:");void save(STUDENT *data

31、, int len)/將數(shù)據(jù)保存到文件int i;FILE *fp;fp=fopen("成績統(tǒng)計表.txt","w");fprintf(fp,"%8s", "學(xué)號"); fprintf(fp,"%8s", "姓名"); fprintf(fp,"%8s", "語文"); fprintf(fp,"%8s", "數(shù)學(xué)"); fprintf(fp,"%10s", "英語&qu

32、ot;); 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(fp,"%8.1lf&qu

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論