數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng).doc
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng).doc(37頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
目 錄 一、問題描述..........................................2 二、基本要求..........................................3 三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)......................................4 四、軟件模塊結(jié)構(gòu)圖....................................5 五、程序設(shè)計(jì)思想......................................7 六、程序流程圖.......................................11 7、 源程序...........................................16 八、調(diào)試分析.........................................30 九、測(cè)試數(shù)據(jù).........................................31 十、用戶使用手冊(cè).....................................34 十一、心得體會(huì).......................................35 一、問題描述 在學(xué)生成績(jī)管理中,經(jīng)常會(huì)遇到求平均成績(jī),統(tǒng)計(jì)不及格學(xué)生成績(jī),統(tǒng)計(jì)優(yōu)秀學(xué)生人數(shù),以及按成績(jī)對(duì)學(xué)生進(jìn)行排名等?,F(xiàn)假設(shè)有某個(gè)班級(jí)的若干名學(xué)生,每個(gè)學(xué)生都考試完成了4門課程,試對(duì)所有學(xué)生的成績(jī)完成以下工作: (1)求每門課程的平均成績(jī)。 (2)輸出所有有不及格課程的學(xué)生的學(xué)號(hào)、姓名、全部課程的成績(jī)、平均成績(jī)。 (3)輸出所有平均分在90分以上(含90分)的學(xué)生學(xué)號(hào)、姓名。 (4)對(duì)4門課程中的任何一門,可隨意抽取1門按學(xué)生成績(jī)進(jìn)行排序。 二、基本要求 對(duì)學(xué)生信息的輸入完成后,實(shí)現(xiàn)如下功能:1、對(duì)學(xué)生信息的查找、插入、刪除、修改。2、分別輸出優(yōu)秀學(xué)生和不及格學(xué)生的信息。3、顯示每們課程的平均成績(jī)。4、任意抽取一門課程后,可以按該課程學(xué)生成績(jī)對(duì)學(xué)生信息進(jìn)行排序。 三、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 為了對(duì)學(xué)生信息進(jìn)行統(tǒng)一操作,使用了結(jié)構(gòu)體這一數(shù)據(jù)結(jié)構(gòu),學(xué)生的各項(xiàng)數(shù)據(jù)信息都能用結(jié)構(gòu)體來表示,具體如下: struct stu {int num;/*學(xué)號(hào),整型變量*/ char name[50];/*姓名,長(zhǎng)度為50的字符串?dāng)?shù)組*/ char classes[50]/*班級(jí)名稱,長(zhǎng)度為50的字符串?dāng)?shù)組*/; double gsps_score;/*高等數(shù)學(xué)平時(shí)成績(jī),雙精度實(shí)型變量*/ double gsks_score;/*高等數(shù)學(xué)考試成績(jī),雙精度實(shí)型變量*/ double gszh_score;/*高等數(shù)學(xué)綜合成績(jī),雙精度實(shí)型變量*/ double dlps_score;/*電路理論平時(shí)成績(jī),雙精度實(shí)型變量*/ double dlks_score;/*電路理論考試成績(jī),雙精度實(shí)型變量*/ double dlzh_score;/*電路理論綜合成績(jī),雙精度實(shí)型變量*/ double yyps_score;/*英語平時(shí)成績(jī),雙精度實(shí)型變量*/ double yyks_score;/*英語考試成績(jī),雙精度實(shí)型變量*/ double yyzh_score;/*英語綜合成績(jī),雙精度實(shí)型變量*/ double wlps_score;/*物理平時(shí)成績(jī),雙精度實(shí)型變量*/ double wlks_score;/*物理考試成績(jī),雙精度實(shí)型變量*/ double wlzh_score;/*物理綜合成績(jī),雙精度實(shí)型變量*/ double pj_score;/*平均成績(jī),雙精度實(shí)型變量*/ }student[1000];/*最多存儲(chǔ)1000個(gè)學(xué)生數(shù)據(jù)*/ 該結(jié)構(gòu)體數(shù)據(jù)定義為全局變量。 四、軟件模塊結(jié)構(gòu)圖 每門課程的平均成績(jī) 主菜單控制模塊 學(xué)生信息錄入模塊 學(xué)生信息查詢模塊 學(xué)生信息修改模塊 學(xué)生信息刪除模塊 學(xué)生信息插入模塊 學(xué)生信息輸出模塊 按學(xué)號(hào)查詢學(xué)生信息 按姓名查詢學(xué)生信息 輸出優(yōu)秀學(xué)生相關(guān)信息 輸出不及格學(xué)生信息 課程成績(jī)統(tǒng)計(jì)模塊 按單科成績(jī)排名次 模塊功能描述: a.主菜單控制模塊:主菜單直接控制七個(gè)模塊(學(xué)生信息輸出模塊的兩個(gè)子模塊直接歸主菜單控制),在各模塊間起到紐帶的作用。在主菜單,可以通過選擇進(jìn)入其他模塊,其他模塊運(yùn)行結(jié)束后也可回到主菜單繼續(xù)選擇。 b.學(xué)生信息錄入模塊:循環(huán)輸入學(xué)生信息,建立臨時(shí)的學(xué)生信息數(shù)據(jù)庫。 c.學(xué)生信息查詢模塊:可選擇按學(xué)號(hào)或者按姓名查詢學(xué)生信息,如學(xué)生信息不存在則給出提示。 d.學(xué)生信息修改模塊:查找到要修改的學(xué)生信息后,可對(duì)該學(xué)生的信息進(jìn)行逐項(xiàng)修改。 e.學(xué)生信息刪除模塊:查找到要?jiǎng)h除的學(xué)生信息后,可對(duì)其進(jìn)行刪除操作。 f.學(xué)生信息插入模塊:在數(shù)據(jù)庫末尾插入學(xué)生信息,逐項(xiàng)輸入要插入的學(xué)生信息即可。 g.學(xué)生信息輸出模塊:輸出優(yōu)秀學(xué)生信息模塊能夠輸出優(yōu)秀學(xué)生(平均成績(jī)大于等90分)的學(xué)號(hào)和姓名;輸出不及格學(xué)生信息模塊能夠輸出不及格學(xué)生的相關(guān)信息。 h.課程成績(jī)統(tǒng)計(jì)模塊:可以得到每門課程的平均成績(jī),還可以任意抽取一門課按單科成績(jī)排定學(xué)生名次。 五、程序設(shè)計(jì)思想 結(jié)構(gòu)化的程序設(shè)計(jì)主要靠設(shè)計(jì)和調(diào)用各模塊的函數(shù)來實(shí)現(xiàn)。本程序設(shè)計(jì)了多個(gè)函數(shù),每個(gè)函數(shù)自身能完成一個(gè)任務(wù),有的函數(shù)和別的函數(shù)結(jié)合能完成更大的任務(wù)。每一個(gè)模塊功能的實(shí)現(xiàn)其實(shí)就是對(duì)函數(shù)的調(diào)用,本說明首先介紹本程序所涉及的子函數(shù),再介紹主函數(shù),最后介紹程序整體的實(shí)現(xiàn)過程。 1.void Inputfun() 此函數(shù)較特別,它只進(jìn)行輸入操作,但由于此函數(shù)所包含的語句較長(zhǎng)且需要被其他三個(gè)函數(shù)使用,為方便調(diào)用單寫了一個(gè)函數(shù)。此函數(shù)在源程序中放在最前,所以在此先作說明。此函數(shù)可細(xì)分為11個(gè)小塊,用來輸入學(xué)生的基本數(shù)據(jù)。每小塊的結(jié)構(gòu)基本相同即for(;;){基本語句 +一個(gè)continue語句+基本語句+一個(gè)break語句}之所以用這個(gè)結(jié)構(gòu)為了使輸入的數(shù)據(jù)更加正規(guī)。比如在分?jǐn)?shù)的輸入中就限定了只能輸入0至100之間的數(shù)值,這也符合分?jǐn)?shù)錄入規(guī)則。需要特別注意的是,這個(gè)函數(shù)完成了本程序中要做的兩個(gè)計(jì)算。其一是在每門課的考試試成績(jī)輸入后完成了對(duì)這門課的綜合成績(jī)的加權(quán)計(jì)算(考試成績(jī)*0.7+平時(shí)成績(jī)*0.3);其二是在最后一門課程的綜合成績(jī)算出后,計(jì)算了該學(xué)生四門課的平均成績(jī)。 2.void Getinformation() 此函數(shù)用來錄入學(xué)生信息。它調(diào)用了void Inputfun()函數(shù),其實(shí)它的主體部分就是void Inputfun()函數(shù)。這函數(shù)還用了一個(gè)for循環(huán)以達(dá)到循環(huán)輸入的目的。 3.int Searchbynum (int no)\int Searchbyname (char na[50]) 這是兩個(gè)“兄弟函數(shù)”,是按學(xué)號(hào)查找和按姓名查詢模塊中的兩個(gè)重要函數(shù)。主要功能是根據(jù)用戶輸入的學(xué)號(hào)\姓名返回改學(xué)生所在的的數(shù)組下標(biāo)。利用for循環(huán)嵌套一個(gè)if語句實(shí)現(xiàn),若找到學(xué)生該學(xué)生信息就返回?cái)?shù)組下標(biāo),若找不到就返回-1。 4.void Seekinformation()\void Printinformation(int x) 這兩個(gè)函數(shù)關(guān)系緊密,所以一起介紹。void Seekinformation()函數(shù)利用for循環(huán)和if語句使查找中能夠使用學(xué)號(hào)和姓名兩種方式。如源程序所示,在用if語句確定了查找方式后先后調(diào)用了int Searchbynum (int no)\int Searchbyname (char na[50])和void Printinformation(int x)兩個(gè)函數(shù),根據(jù)int Searchbynum (int no)\int Searchbyname (char na[50])返回的數(shù)組下標(biāo),運(yùn)用void Printinformation(int x)輸出所查詢的內(nèi)容。所以 int Searchbynum (int no)\int Searchbyname (char na[50])\void Seekinformation()\void Printinformation(int x)這四個(gè)函數(shù)是查詢模塊的四個(gè)聯(lián)系緊密的重要函數(shù),在它們的共同作用下查詢模塊的功能得以實(shí)現(xiàn)。 5.void Modifyinformation() 此函數(shù)用于修改學(xué)生信息?;驹砭褪怯幂斎氲男聰?shù)據(jù)覆蓋原來的老數(shù)據(jù),達(dá)到修改的目的。本函數(shù)還調(diào)用了查找模塊的函數(shù),使修改前能按學(xué)號(hào)或姓名找到要修改的學(xué)生信息。修改過程中調(diào)用了Inputfun()函數(shù) 6.void Deleteinformation() 此函數(shù)用于刪除學(xué)生信息。同樣調(diào)用了查找模塊的函數(shù)。刪除模塊的關(guān)鍵語句是for (i=x;i<999;i++) student[i]=student[i+1];從要?jiǎng)h除的那一個(gè)數(shù)據(jù)開始,用后一個(gè)數(shù)據(jù)覆蓋它,一直循環(huán)到最后,相當(dāng)于把開始的第一個(gè)數(shù)據(jù)刪除了。 7.void Insertinformaton() 此函數(shù)用于插入學(xué)生數(shù)據(jù)。由于沒有用鏈表,所以選擇插入在最后一個(gè)有效數(shù)據(jù)之后。本函數(shù)運(yùn)用if(student[j].num==0)這個(gè)語句找到了最后一個(gè)有效數(shù)據(jù)之后的數(shù)組下標(biāo)j,然后將數(shù)據(jù)輸入到student[j]中,便完成的了插入。插入過程中,調(diào)用了Inputfun()函數(shù)。 8.void Showthefail() 此函數(shù)用于顯示不及格學(xué)生的信息。能夠按要求輸出不及格學(xué)生的學(xué)號(hào)、姓名、各科成績(jī)以及平均成績(jī)。首先用這條if語句搜索該學(xué)生是否有成績(jī)不及格,當(dāng)四門課中至少有一門不及格時(shí)會(huì)輸出該學(xué)生的相關(guān)信息。 9.void Stu_p() 此函數(shù)用于輸出優(yōu)秀學(xué)生(平均成績(jī)大于90分)的信息,利用for循環(huán)和條件判斷句輸出找出相應(yīng)的學(xué)生輸出相關(guān)信息。 10.void Chengjitongji()此函數(shù)用于按要求統(tǒng)計(jì)成績(jī)。有分別統(tǒng)計(jì)每門課的平均成績(jī)的功能;還能夠按每門課程的成績(jī)對(duì)學(xué)生進(jìn)行排序,使學(xué)生在該門課的表現(xiàn)一目了然。排序中用到了冒泡排序的方法。 9. void main() 下面對(duì)主函數(shù)作簡(jiǎn)要說明。Switch語句是函數(shù)的主體: switch(c)/*利用switch語句集成各個(gè)功能函數(shù)*/ { case 1 : Getinformation();break;/*獲得學(xué)生信息*/ case 2 : Seekinformation();break;/*查找學(xué)生信息*/ case 3 : Modifyinformation();break;/*修改學(xué)生信息*/ case 4 : Deleteinformation();break;/*刪除學(xué)生信息*/ case 5 : Insertinformaton();break;/*插入學(xué)生信息*/ case 6 : Stu_p();break;/*顯示優(yōu)秀學(xué)生信息*/ case 7 : Showthefail();break;/*顯示不及格學(xué)生信息*/ case 8 : Chengjitongji();break;/*課程成績(jī)的統(tǒng)計(jì)*/ case 0 : exit(0);/*退出*/ default: break; } default: break;} 通過一個(gè)數(shù)值輸入函數(shù),使用戶在簡(jiǎn)單的數(shù)值輸入后就可輕松調(diào)用各模塊。 還使用了for (;;)使各模塊能夠循環(huán)調(diào)用。 11.最后對(duì)程序的整體實(shí)現(xiàn)過程作個(gè)簡(jiǎn)要說明。源程序中多處運(yùn)用continue和break語句,同時(shí)配合scanf函數(shù)和if條件判斷語句,使用戶能夠根據(jù)提示通過簡(jiǎn)單的數(shù)值輸入來選擇下一步該做什么。中文界面,用戶很容易根據(jù)提示上手,簡(jiǎn)單易用。 六、程序流程圖 開始 系統(tǒng)啟動(dòng)口令輸入a=? a=1? N 口令錯(cuò)誤,系統(tǒng)即將關(guān)閉! Y 進(jìn)入選擇菜單 N c=1? Y 錄入學(xué)生信息 c=2? N Y 查找學(xué)生信息 c=3? N Y 修改學(xué)生信息 N c=4? 刪除學(xué)生信息 c=5? Y N c=6? N Y 插入學(xué)生信息 c=7? Y 優(yōu)秀學(xué)生信息 N 不及格學(xué)生信息 c=8? N Y Y N 課程成績(jī)統(tǒng)計(jì) N 結(jié)束 以上為主函數(shù)流程圖,主函數(shù)下八個(gè)供選擇的模塊只是簡(jiǎn)單的用一個(gè)執(zhí)行框表示。現(xiàn)分別畫出八個(gè)模塊的流程圖: 1、 錄入學(xué)生成績(jī): 開始 輸入學(xué)生信息及成績(jī) 是否繼續(xù)?繼續(xù)按1,結(jié)束按0 1 0 結(jié)束 開始 2、查找學(xué)生信息: 按學(xué)號(hào)查找請(qǐng)按1, 按姓名查找請(qǐng)按2 2 1 輸出相應(yīng)姓名所對(duì)應(yīng)的信息 輸出相應(yīng)學(xué)號(hào)所對(duì)應(yīng)的信息 是否繼續(xù)?繼續(xù)按1,結(jié)束按0 1 0 結(jié)束 0 3、修改學(xué)生信息: 開始 調(diào)用查找函數(shù)找到要修改的信息 輸入修改后的信息 是否繼續(xù)?繼續(xù)按1,結(jié)束按0 1 0 結(jié)束 4、刪除學(xué)生信息: 開始 調(diào)用查找函數(shù)找到要?jiǎng)h除的信息 是否刪除?是按1,否按0 1 刪除成功 是否繼續(xù)?繼續(xù)按1,結(jié)束按0 1 結(jié)束 0 開始 5、插入學(xué)生信息: 輸入要插入的信息 是否繼續(xù)?繼續(xù)按1,結(jié)束按0 1 0 結(jié)束 6、優(yōu)秀學(xué)生信息: 開始 學(xué)生平均成績(jī)是否大于等于90? N Y 輸出該生學(xué)號(hào)和姓名 Y 檢索完畢? N 結(jié)束 Y 7、 不及格學(xué)生信息: 開始 判斷該生是否有不及格科目 N Y 輸出該該生學(xué)信息 檢索完畢? N Y 結(jié)束 8、 成績(jī)統(tǒng)計(jì)模塊: 開始 每門課程平均成績(jī)請(qǐng)按1,單科成績(jī)排名請(qǐng)按2 1 2 輸出每門課程平均成績(jī) 選擇要排名的科目 輸出該科成績(jī)排名 結(jié)束 七、源程序 #include- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì) 報(bào)告 學(xué)生 成績(jī)管理系統(tǒng)
鏈接地址:http://appdesigncorp.com/p-6526172.html