班級成績管理系統(tǒng)_第1頁
班級成績管理系統(tǒng)_第2頁
班級成績管理系統(tǒng)_第3頁
班級成績管理系統(tǒng)_第4頁
班級成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設(shè) 計 報 告課程名稱 C語言程序設(shè)計 課題名稱 班級成績管理系統(tǒng) 專 業(yè) 電子信息 班 級 0802班 學(xué) 號 32 姓 名 董霄宇 指導(dǎo)教師 肖偉平 羅敬 肖彬 2009年 6 月 19 日湖南工程學(xué)院課 程 設(shè) 計 任 務(wù) 書課程名稱 C語言程序設(shè)計 課 題 班級成績管理系統(tǒng) 專業(yè)班級 電子信息0802班 學(xué)生姓名 董霄宇 學(xué) 號 32 指導(dǎo)老師 肖偉平 羅敬 肖彬 審 批 任務(wù)書下達日期 2009 年 6 月 19 日任務(wù)完成日期 2009年 6 月 30日一、設(shè)計內(nèi)容與設(shè)計要求1 設(shè)計內(nèi)容:班級成績管理系統(tǒng)設(shè)計涉及的知識點:掌握并熟練運用C語言的基本數(shù)據(jù)類型與各種表達式,程序

2、的流程控制語句; 掌握數(shù)組的基本概念。熟練掌握一維數(shù)組、二維數(shù)組的應(yīng)用、掌握字符數(shù)組與字符串的關(guān)系以及字符串的簡單處理。掌握函數(shù)的定義,函數(shù)的返回值,函數(shù)的調(diào)用,函數(shù)的形式參數(shù)和實際參數(shù)之間的關(guān)系;掌握變量的作用域與生存期,了解函數(shù)的作用域。掌握結(jié)構(gòu)的概念,結(jié)構(gòu)類型的定義,結(jié)構(gòu)變量的定義和初始化,結(jié)構(gòu)成員的表示,結(jié)構(gòu)的賦值含義,結(jié)構(gòu)與指針、函數(shù)的關(guān)系。掌握文件、文件類型指針的基本概念,熟練掌握文件的打開與關(guān)閉以及文件的建立、讀寫等有關(guān)操作。2 設(shè)計要求:1) 用C語言實現(xiàn)系統(tǒng);利用結(jié)構(gòu)體數(shù)組實現(xiàn)班級成績的數(shù)據(jù)結(jié)構(gòu)設(shè)計;系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);應(yīng)提供一個界面來調(diào)用各個功能,調(diào)用界

3、面和各個功能的操作界面應(yīng)盡可能清晰美觀。2) 建立一個班級學(xué)生成績數(shù)據(jù)庫,文件名為bjcjk.txt,并從該文件中讀取數(shù)據(jù);3) 班級成績管理系統(tǒng)應(yīng)能提供以下功能:(1)主菜單界面設(shè)計。通過提示用戶輸入一個數(shù)字選項,調(diào)用相應(yīng)的功能函數(shù)。(2)成績顯示:完成班級全部學(xué)生成績的顯示;(3)成績錄入:完成新增一個學(xué)生的成績記錄,并重新計算學(xué)生的平均成績;(4)成績修改:按學(xué)號修改一個學(xué)生的學(xué)習(xí)成績,并重新計算學(xué)生的平均成績;(5)成績排序:按學(xué)生平均成績進行排序;(6)成績統(tǒng)計: 統(tǒng)計并顯示每門課程的平均成績; 統(tǒng)計并顯示超過某門課程平均分的人數(shù)以及學(xué)生記錄;4) 說明:(1) 要求將修改后的數(shù)據(jù)寫

4、入到一個新的數(shù)據(jù)文件nwejck.txt中。(2) 對系統(tǒng)有興趣的同學(xué)可以在實現(xiàn)基本要求的基礎(chǔ)上,完善系統(tǒng)的其它功能。5) 班級成績管理系統(tǒng)采用一個結(jié)構(gòu)體數(shù)組,學(xué)生成績數(shù)據(jù)庫結(jié)構(gòu)如下:int xh /*學(xué)號*/char name10 /*姓名*/int yy /*英語*/int mat /*數(shù)學(xué)*/int jsj /*計算機*/int wl /*物理*/int zf /*總分*/ 注意:學(xué)號不重復(fù),且數(shù)據(jù)庫應(yīng)有10條或以上的記錄。6) 要求:1 要求每個學(xué)生必須獨立思考,認(rèn)真并按時完成本課程設(shè)計所包含的所有內(nèi)容;2 要求學(xué)生必須按照課程設(shè)計報告的完整格式說明設(shè)計內(nèi)容,設(shè)計任務(wù)分析過程和算法,給

5、出程序流程圖和全部源程序;3 設(shè)計報告的完整格式應(yīng)包括以下部分的內(nèi)容: 設(shè)計總體思路; 程序及各個模塊說明; 總體模塊框圖; 各個程序模塊說明; 程序流程圖; 程序清單; 課程設(shè)計總結(jié)與體會(不少于400字)。4 上機時要求必到,設(shè)計完成,必須演示程序,答辯并提交設(shè)計報告。二、進度安排第 18 周 星期五 8:0012:00 星期日 15:0018:00第 19 周 星期一 19:00 22:00星期三 8:0012:00 星期四 14:30 17:30附:課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、評分、附件(A4大小的圖紙及程序清單)。 正文的格式:一級標(biāo)題用3號黑體,二級標(biāo)題用四號宋

6、體加粗,正文用小四號宋體;行距為22。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(xiàn)(至少要有一個主要模塊的流程圖);四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對程序?qū)懗霰匾淖⑨專?。正文總字?jǐn)?shù)要求在5000字以上(不含程序原代碼)。 目錄一.需求分析-7(1)程序功能-7(2)輸入輸出要求-7二.總體設(shè)計-7三.模塊功能詳細設(shè)計分析-8四.調(diào)試分析及體會-9五.部分運行界面截取圖-11六流程圖-17七心得體會-18八.附件-201源程序-202參考書目-27九.評分表-28一.需要分析: (1)程序功能 該程序是一個實現(xiàn)對班級成績

7、管理的系統(tǒng)。包括顯示,添加,刪除,修改,排序,查找,統(tǒng)計及退出等功能。輸入學(xué)生的學(xué)號、姓名及成績對其進行存儲,在存儲后可以對學(xué)生的成績按學(xué)號和姓名進行查尋。該系統(tǒng)具有存貯學(xué)生數(shù)據(jù),按學(xué)號、姓名查詢,列出學(xué)生成績和統(tǒng)計功能。系統(tǒng)輸入數(shù)據(jù)后,將在當(dāng)前目錄中建立一個名為stu.dat文件,用于保存輸入的數(shù)據(jù)。(2)輸入輸出要求學(xué)號輸入只能用數(shù)字輸入,姓名輸入只能用字符,且最長為10個字符。此程序在BC2.0下運行通過。二.總體設(shè)計:(1) 抽象數(shù)據(jù)類型定義 學(xué)生成績數(shù)據(jù)庫結(jié)構(gòu): 數(shù)據(jù)庫學(xué)號: int( ) 姓名: char(10) 英語: int() 數(shù)學(xué): int() 計算機: int() 物理:

8、 int() 總分: int() 平均分:flaot() 名次:int()(2)程序的模塊及其功能和關(guān)系 該程序由9個模塊組成,由主函數(shù)調(diào)用計算,顯示,添加,刪除,修改,排序,查找,統(tǒng)計及其退出等模塊.下面將介紹每個模塊的功能及與他們之間的關(guān)系. 模塊圖如下: 主菜單模塊Main()添加模塊刪除模塊查詢模塊 退出模塊修改模塊 成 績 統(tǒng) 計 (3)主函數(shù)分析主函數(shù)主要由一個switch()開關(guān)語句構(gòu)成,開關(guān)語句在一個無限循環(huán)體里,開關(guān)語句里的開關(guān)是調(diào)用主菜單顯示函數(shù)的返回值。除最后一個語句是強制結(jié)束整個程序的語句外,其它case都是調(diào)用相應(yīng)的函數(shù),完成相應(yīng)的功能。各調(diào)用情況如下: case1:

9、調(diào)用顯示函數(shù) case 2:調(diào)用追加函數(shù)、case 3:調(diào)用修改函數(shù)、case 4:調(diào)用刪除函數(shù)、 case 5:調(diào)用查詢函數(shù) 、 case 6:調(diào)用排序函數(shù)、 case 7:調(diào)用退出函數(shù),主函數(shù)將保證每調(diào)用完一個函數(shù)之后又調(diào)用顯示函數(shù),然后按任意鍵又重新回到主菜單,以便用戶進行下一次的操作。三模塊功能詳細設(shè)計分析 班級成績顯示模塊:Void Disp( ) 這個模塊的主要功能是用來計算每個人的平均分并顯示班級中所有人各科相對應(yīng)的成績,平均分,總分及名次。在主菜單中選擇“1”就可以進入這個模塊界面。這個功能的實現(xiàn)是用了一個for循環(huán)來完成的。通過這個循環(huán)printf()函數(shù)依次輸出每一個人的學(xué)

10、號,姓名,各科成績,平均分,總分,名次。最后在界面上顯示所有人的信息因此我們可以瀏覽所有人的信息。2班級成績追加模塊:Void Appe()本模塊的主要功能是添加一個人的記錄。在主菜單中鍵入“2”,就進入次模塊。由多個for 循環(huán)控制。在for循環(huán)中包括printf和scanf函數(shù),依照提示依次輸入:學(xué)號,姓名,各科成績。再調(diào)用顯示函數(shù)Disp( )。班級成績修改模塊:void Modi( )本模塊的主要功能是按學(xué)號查找相應(yīng)的記錄,然后系統(tǒng)判斷學(xué)號是否存在,如果不存在將提示用戶,如果存在再根據(jù)提示語句,用戶可以按要求修改記錄中除學(xué)號,姓名以外的指定內(nèi)容,可按照用戶要求修改對應(yīng)成績,可由用戶自行

11、控制修改人數(shù),并重新顯示。在主菜單中鍵入“3”就可以進入這個模塊。此模塊是通過for循環(huán)語句控制實現(xiàn)的。如果輸入的信息不存在系統(tǒng)就提示信息提醒。班級成績刪除模塊:Void Dele( )此模塊的主要功能是用來刪除班級成績管理中的信息??砂粗付▽W(xué)號,姓名刪除記錄并重新顯示。在主菜單中選擇輸入“4”,就可以進入這個模塊的界面。這個模塊的設(shè)計是通過if和for循環(huán)語句控制實現(xiàn)的。如果輸入的信息不存在系統(tǒng)就提示信息提醒。.班級成績查詢模塊:void Query()這個模塊可以按學(xué)號查詢;然后系統(tǒng)判斷所輸入信息是否存在,如果存在將顯示該人的各科成績,平均分,總分及名次。這個模塊是通過if和for循環(huán)語句

12、控制實現(xiàn)的。如果輸入的信息不存在系統(tǒng)就提示信息提醒。 班級成績排序模塊:Void Sort( )該模塊先由計算模塊算出每個人的平均分及名次,再通過對名次的排序。運用雙重for循環(huán)嵌套及if語句進行排序。班級成績退出模塊:void Quit()任意鍵退出程序.四程序調(diào)試分析 1在顯示函數(shù)里應(yīng)該含有計算函數(shù),否則顯示的信息中平均分,總分及名次都為零。2在輸入函數(shù)中設(shè)了一個無限循環(huán),可以輸入無數(shù)個學(xué)生的成績信息,但是不方便退出,后來用了一個輸入函數(shù)輸入要輸入的學(xué)生信息的個數(shù),在用循環(huán)控制,這樣就方便多了。3輸入太多個學(xué)生的成績時,屏幕顯示不能控制為一頁一頁顯示,所以為了方便起見,不要輸入太多記錄。4

13、在程序調(diào)試的時候,出現(xiàn)函數(shù)名變成未定義字符,經(jīng)過分析后發(fā)現(xiàn)是沒有在程序的 前面些程序包含的語句,加上前面的頭文件包含后就沒有這個錯誤了.5在程序中需要輸入的項太多,故在每個輸入項前應(yīng)加一個提示輸入項,提示用戶輸入正確的信息。五.部分運行界面截取圖1 、顯示模塊運行截面圖運行程序菜單框圖中選則1,按回車。運行結(jié)果如下圖: 2、追加模塊運行截面圖運行程序菜單框圖中選則2,按回車.按照提示輸入信息,運行結(jié)果如下圖:3、修改模塊運行截面圖運行程序菜單框圖中選則3,按回車.按照提示輸入信息,結(jié)果如圖:4、刪除模塊運行截面圖運行程序菜單框圖中選則4,按回車.按照提示輸入信息,運行結(jié)果如下圖:5、查詢模塊運

14、行截面圖運行程序菜單框圖中選則5,按回車.按照提示輸入信息,運行結(jié)果如下圖6、排序模塊運行截面圖運行程序菜單框圖中選則6,按回車.按照提示輸入信息,運行結(jié)果如下圖六、流程圖1、總體設(shè)計流程圖主函數(shù)流程圖:讀 入 數(shù) 據(jù) 菜單界面 輸入選擇值 menu-selcet() 執(zhí)行退出函數(shù)執(zhí)行排序函數(shù)執(zhí)行追加函數(shù)執(zhí)行刪除函數(shù)執(zhí)行修改函數(shù)執(zhí)行顯示函數(shù)執(zhí)行查詢函數(shù) 創(chuàng)建新數(shù)據(jù)庫結(jié)束七心得體會課程設(shè)計這一周感受頗深。我想說實踐是檢驗真理的唯一標(biāo)準(zhǔn)。尤其對于C語言這門對動手能力要求很高的學(xué)科。有很多程序你編了也檢查了但也許就是發(fā)現(xiàn)不了錯誤,但只要一上機操作隱含的問題就全面暴露出來了。C語言課程設(shè)計是一門細致的

15、活。正如熟話所說的:一招不慎,滿盤皆輸。一個錯誤的存在整個程序就運行不出結(jié)果。對于基礎(chǔ)不太牢固的我來真是一個考驗,同時有時一個挑戰(zhàn)。它需要耐心、仔細和堅持。說句老實話正如肖老師預(yù)言的在課程設(shè)計的前兩天我是在失望、痛苦、焦慮和茫然中度過。一開始我編的程序存在很多問題,這些問題使我頭都大了。就拿建立數(shù)據(jù)庫來說我就建了不下十個。真的是無從下手也不知所措!怎么做怎么錯,失敗全面打擊著我。萬事開頭難,課程設(shè)計是前所未有的難。痛定思痛,我強迫自己冷靜下來:先弄懂設(shè)計思路從整體上對課程設(shè)計有一個清晰的了解,接下來就開始著手模塊的設(shè)計。由于之前受了太多打擊,接下來顯示模塊的成功出世給了我極大的安慰。再接下來的

16、追加、刪除、修改和查詢模塊就順手多了,因為我找到了一點自信。C語言程序設(shè)計既是一個整體,同是各個模塊之間相互獨立又緊密聯(lián)系。因為有規(guī)律可循,后四個模塊基本上就是switch、if-else和for語句的嵌套使用,當(dāng)然還有基本輸入輸出函數(shù)的大量使用。找到正確的方法才能得出結(jié)果。在課程設(shè)計的過程中我遇到了很多問題,有過很多茫然,我覺得這是一個既艱辛又快樂的過程。在這個過程中我學(xué)到了很多。關(guān)于C語言關(guān)于人生。碰壁,碰壁,碰多了就會學(xué)會。也許真的就是那最后的堅持鑄就了程序的結(jié)果。更重要的是,這次課程設(shè)計雖然花了我不少時間,但正是這些時間,讓我見識到了C語言的重要性。這個學(xué)生成績管理系統(tǒng)都是在自己知識范

17、圍內(nèi)完成的,所以界面清晰簡單,可能不是很好看,但絕對實用!從這里我也得到一個體會,做一個程序,或者開發(fā)一個軟件,應(yīng)該著重從它的后臺制作入手,不能做出一個中看不中用的程序或者軟件。通過對數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計,我了解并發(fā)現(xiàn)了很多調(diào)試程序的方法,而且懂得了如何處理錯誤的方法。對C語言的使用得到了進一步的提高。針對數(shù)據(jù)結(jié)構(gòu)的書本知識得到了進一步的鞏固,具體化就是加深了我對線性表的結(jié)構(gòu)的理解查找的方法,數(shù)的排序等。對程序的深層理解,清楚程序中每一步的功能,在程序的運行中是十分重要的,一個好的結(jié)構(gòu)在運行中能夠充分的發(fā)揮程序的功能。結(jié)構(gòu)設(shè)計的合理性決定了這個程序的價值。在今后的學(xué)習(xí)中我要注意這方面,使得我的編

18、程能力能有進一步的提高。經(jīng)歷了這次課程設(shè)計,不僅對我的學(xué)習(xí)提供了幫助,而且在意志力方面也得到了鍛煉。經(jīng)過上機實踐學(xué)習(xí),使我對C語言有了更進一步的認(rèn)識和了解,要想學(xué)好它要重在實踐,要通過不斷的上機操作才能更好地學(xué)習(xí)它,通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學(xué)習(xí)也有所改進;再有對C語言的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認(rèn)識有所提高。通過實踐的學(xué)習(xí),我認(rèn)到學(xué)好計算機要重視實踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學(xué)習(xí)

19、過程中,我會更加注視實踐操作,使自己便好地學(xué)好計算機沒有足夠的耐力和信心就很難堅持對課程設(shè)計每一步的順利進行。相信這次的課程設(shè)計為我以后使用計算機打了一個小小的開頭,這次設(shè)計,讓我重新掌握了C語言,而且還得到了用C語言解決實際問題的寶貴經(jīng)驗!。我發(fā)現(xiàn)現(xiàn)在對于C語言我很感興趣。課程設(shè)計這一周我花了不少時間,流了不少汗水。這說明了一個道理:沒有付出就沒有收獲!八.附錄 1源程序#include stdio.h#include string.h#include conio.hint N=0;struct stu int num; /*學(xué)號*/ char name10; /*姓名*/ int eng;

20、 /*英語*/ int mat; /*數(shù)學(xué)*/ int com; /*計算機*/ int phy; /*物理*/ int sum; /*總分*/ s20;void Re_file() FILE *fp; fp=fopen(G:bjcjk.txt,r); while( fscanf(fp,%dn%sn%dn%dn%dn%dn%dn,&sN.num,sN.name,&sN.eng,&sN.mat,&sN.com,&sN.phy,&sN.sum)!=EOF) N+; fclose(fp); void Wr_file()int i; FILE *fp; fp=fopen(G:nwejck.txt,w)

21、; for(i=0;iN;i+) fprintf(fp,%dn%sn%dn%dn%dn%dn%dn,si.num,,si.eng,si.mat,,si.phy,si.sum); fclose(fp);void Disp() /*顯示模塊*/int i;float ave20;printf(n);printf(學(xué)號 姓名 英語 數(shù)學(xué) 計算機 物理 總分 平均分n);for(i=0;iN;i+)avei=(float)si.sum/4;printf(%-7d%-15s%-6d%-6d%-8d%-6d%-8d%-8f%,si.num,,si.eng,si.ma

22、t,,si.phy,si.sum,avei);printf(n);printf(n);void Appe() /*追加模塊*/ int i,num,j=0;printf(Input the number of the student:n);scanf(%d,&num);for(i=0;iN;i+)if(num=si.num)j=1;break;if(j=1)printf(Error!n);if(j=0)i=N;si.num=num;printf(Input the name of the student:n);scanf(%s,);printf(Input the E

23、nglish score of the student:n);scanf(%d,&si.eng);printf(Input the math score of the student:n);scanf(%d,&si.mat);printf(Input the computer score of the student:n);scanf(%d,&);printf(Input the physics score of the student:n);scanf(%d,&si.phy);si.sum=si.eng+si.mat++si.phy;N=N+1;void Modi()

24、 /*修改模塊*/ int number,i,neng,nmat,ncom,nphy,t,j=0;printf(Input the error number of the student:n);scanf(%d,&number);for(i=0;iN;i+)if(si.num=number)j=1;break;if(j=1)printf(Input the new English score of the student:n);scanf(%d,&neng);t=si.eng;si.eng=neng;neng=t;printf(Input the new math score of the s

25、tudent:n);scanf(%d,&nmat);t=si.mat;si.mat=nmat;nmat=t;printf(Input the new computer score of the student:n);scanf(%d,&ncom);t=;=ncom;ncom=t;printf(Input the new physics score of the student:n);scanf(%d,&nphy);t=si.phy;si.phy=nphy;nphy=t;si.sum=si.eng+si.mat++si.phy;if(j=0)printf(Er

26、ror!n);void Dele() /*刪除模塊*/ int number,i,j=0;struct stu t;printf(Input the number of the student:n);scanf(%d,&number);for(i=0;iN;i+)if(si.num=number)j=1;break;if(j=1)for(;iN;i+)t=si+1;si+1=si;si=t;N=N-1;if(j=0)printf(Error!n);void Query() /*查詢模塊*/ int number,i,j=0;float ave;printf(Input the number o

27、f the student:n);scanf(%d,&number);for(i=0;iN;i+)if(si.num=number)j=1;break;if(j=1)printf(學(xué)號 姓名 英語 數(shù)學(xué) 計算機 物理 總分 平均分n);ave=(float)si.sum/4;printf(%-7d%-15s%-6d%-6d%-8d%-6d%-8d%-8f%,si.num,,si.eng,si.mat,,si.phy,si.sum,ave);if(j=0)printf(Error!n);void Sort() /*排序*/ int i,j;struct stu t2;float ave20,t1;for(i=0;iN;i+)avei=(float)si.sum/4;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(aveiavei+1)t2=si+1;si+1=si;si=t2;t1=avei

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論