更新時(shí)間:2023-10-25 07:07:56作者:佚名
廣州民航航天學(xué)院金城大學(xué)《C++程序設(shè)計(jì)》課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:中學(xué)生成績管理系統(tǒng)班級(jí):學(xué)號(hào):姓名:成績:指導(dǎo)班主任:**日期:2013年課程設(shè)計(jì)題目與要求1.1題目中學(xué)生成績管理系統(tǒng)1.2系統(tǒng)功能要求1).設(shè)計(jì)四個(gè)類;中學(xué)生類(描述中學(xué)生基本信息);成績類:班級(jí)類;課程類(描述課程信息:課程編號(hào),課目名稱(如高等物理,學(xué)院俄語等);中學(xué)生成績及課程信息用文件保存,每位類一個(gè)文件,程序執(zhí)行時(shí)從文件讀入;2).能按學(xué)期,按班級(jí)完成對中學(xué)生成績的錄入,更改,能按班級(jí)統(tǒng)計(jì)中學(xué)生的成績;求中學(xué)生的總分及平均分;并能按照中學(xué)生的平均成績進(jìn)行排序,能查詢中學(xué)生成績,不及格課目及中學(xué)生名單;能按班級(jí)輸出中學(xué)生的成績單。3).設(shè)置中學(xué)生的成績信息:中學(xué)生學(xué)號(hào)、姓名**選課程名稱、平時(shí)成績、期末成績、平時(shí)成績所占比率4).估算中學(xué)生總評成績:總評成績=平常成績*平常成績所占比率+期終成績*(1-平常成績所占比率)5).顯示中學(xué)生的姓名**選課程名稱以及平常成績、期末成績和總評成績信息。分雙人顯示和以班輸出(班成績單格式輸出到文件)注意,起碼一個(gè)班,30人三門課系統(tǒng)需求剖析2.1需求剖析:a.能對中學(xué)生各科成績進(jìn)行錄入:。b.能對中學(xué)生的成績進(jìn)行降低。

c.能對中學(xué)生的成績進(jìn)行刪掉。d.能對中學(xué)生的成績進(jìn)行更改。e.能對中學(xué)生的成績按總成績,姓名,**查詢。f.能輸出中學(xué)生的所有數(shù)據(jù)。g.能進(jìn)行成績統(tǒng)計(jì)h能進(jìn)行總分查詢排行。2.2系統(tǒng)性能要求:a.系統(tǒng)安全、可靠;b.功能齊全;c.操作便捷、界面友好;d便于維護(hù)和擴(kuò)展。2.3系統(tǒng)的功能剖析:資料維護(hù):系統(tǒng)維護(hù)包括對中學(xué)生信息的錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)查詢:可以對中學(xué)生的信息進(jìn)行查詢。總體設(shè)計(jì)3.1系統(tǒng)功能模塊中學(xué)生成績查詢系統(tǒng)有:成績錄入、增加、刪除、修改,數(shù)據(jù)查詢,排序顯示構(gòu)成。3.2模塊框架圖詳盡設(shè)計(jì)主要功能模塊的算法設(shè)計(jì)思路:4.1用戶輸入模塊設(shè)計(jì)提示用戶輸入一個(gè)0~11的值,并儲(chǔ)存在一個(gè)整型變量m中。4.2中學(xué)生信息錄入模塊設(shè)計(jì)通過應(yīng)用list中的instu()函數(shù),來新建一個(gè)數(shù)組中的節(jié)點(diǎn),即一個(gè)新的中學(xué)生信息,來進(jìn)行成績的錄入功能。成績更改功能,可以按照姓名或?qū)W號(hào)進(jìn)行查詢并更改相應(yīng)的課程的成績,使用了voidsearch(chars[10],int)和voidsearch1(chars[20],int)函數(shù)進(jìn)行操作。search函數(shù)依據(jù)姓名查找**earch1函數(shù)依據(jù)學(xué)號(hào)進(jìn)行查找。

由于學(xué)號(hào)和姓名,都**儲(chǔ)在字符鏈表中的,所以都是通過字符串的比較進(jìn)行查找的。之后按照整形參數(shù)進(jìn)行對應(yīng)的課程成績的更改。成績刪掉功能,也是可以依據(jù)姓名或?qū)W**行刪掉,查詢的算法和成績更改功能的查詢方式是一樣的,當(dāng)找到要?jiǎng)h掉的節(jié)點(diǎn)時(shí),由于節(jié)點(diǎn)都是在堆顯存中保存的,所以可以直接delete掉,并將前一個(gè)節(jié)點(diǎn)的next表針指向被刪除的節(jié)點(diǎn)的next表針?biāo)赶虻墓?jié)點(diǎn)。3.文件保存功能模塊先提示用戶輸入保存文件的文件名及班級(jí)名稱。文件的前兩行分別是班級(jí)名稱和成績單的開頭,之后通過ofstream變量output來進(jìn)行中學(xué)生信息的輸出,一項(xiàng)一項(xiàng)的輸出,并設(shè)定格式,直至輸出節(jié)點(diǎn)為NULL為止,然后關(guān)掉output。4.文件打開功能模塊先提示用戶輸入要打開的數(shù)據(jù)文件的名稱,之后通過一個(gè)ifstream變量input來進(jìn)行文件操作。首先判定文件是否存在,倘若不存在則輸出"Filedoesnotexist",并跳出switch句子。文件存在的話,則可以進(jìn)行數(shù)據(jù)的存入了。由于數(shù)據(jù)文件具有固定的格式,即開頭兩行是班級(jí)名稱和表頭,則可以先用兩次input.getline(temp,80);句子來將input設(shè)置到第三行,此時(shí)可以將數(shù)據(jù)通過input讀入數(shù)組中。

先用input.eof()判定文件中是否有數(shù)據(jù),若有數(shù)據(jù),則進(jìn)行數(shù)據(jù)的讀入,直至文件結(jié)束。5.查詢功能模塊可以依據(jù)姓名或?qū)W**行查找,搜索技巧和前幾個(gè)模塊相同。通過outstu1(char*n)和outstu(char*n)來進(jìn)行輸出。總成績和平均成績的查詢通過函數(shù)voidoutsum(char*)和voidoutsum1(char*)來完成。通過函數(shù)scanall()來瀏覽所有中學(xué)生的信息。通過函數(shù)think()來進(jìn)行成績的統(tǒng)計(jì)剖析。6.報(bào)表輸出功能模塊通過構(gòu)建一個(gè)新的類classstucopy用于拷貝student的數(shù)據(jù),并實(shí)現(xiàn)排序功能。創(chuàng)建一個(gè)stucopystu[M]鏈表,將原數(shù)組的數(shù)據(jù)拷貝與鏈表中,之后用選擇排序方式將鏈表排序,之后用output根據(jù)標(biāo)準(zhǔn)的格式輸出或保存為數(shù)據(jù)文件。系統(tǒng)調(diào)試5.1主界面5.2數(shù)據(jù)錄入5.3降低數(shù)據(jù)5.4刪掉數(shù)據(jù)5.5成績查詢結(jié)果剖析每一個(gè)case都能執(zhí)行,并且有好多的地方都不夠健全,譬如:在總成績排序中,只能輸出總成績,不能單獨(dú)的輸出中學(xué)生的相應(yīng)的信息;每次進(jìn)行別的操作之前都要在進(jìn)行一次數(shù)據(jù)的錄入,不能直接對原有的文件進(jìn)行讀取。總結(jié)這次c++課程設(shè)計(jì),在指導(dǎo)班主任的悉心教導(dǎo)下,我們學(xué)會(huì)了怎么用C++編撰一個(gè)簡單的應(yīng)用程序。

首先要對程序的設(shè)計(jì)要求有一個(gè)比較明晰的認(rèn)識(shí)查期末成績的軟件,之后系統(tǒng)剖析與系統(tǒng)設(shè)計(jì),最后是代碼設(shè)計(jì)與調(diào)試。程序?qū)崿F(xiàn)上,設(shè)計(jì)了簡單的查詢界面,將各個(gè)功能集中下來根據(jù)程序編撰原則,以便查詢。心得感受按照C++課程所學(xué)的概念、理論和技巧,根據(jù)C++程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序;進(jìn)一步加深對C++語言的理解和把握。理論聯(lián)系實(shí)際,加深和鞏固所學(xué)的理論知識(shí),提升實(shí)踐能力和計(jì)算機(jī)的綜合運(yùn)用能力。我們編撰程序的過程是辛苦與快樂的查期末成績的軟件,程序的編撰原則很重要,只要我們在編程,就必須不斷改進(jìn),就能更好提升編程能力。C++語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
