更新時間:2023-10-25 07:07:56作者:佚名
廣州民航航天學(xué)院金城大學(xué)《C++程序設(shè)計》課程設(shè)計實驗報告題目:中學(xué)生成績管理系統(tǒng)班級:學(xué)號:姓名:成績:指導(dǎo)班主任:**日期:2013年課程設(shè)計題目與要求1.1題目中學(xué)生成績管理系統(tǒng)1.2系統(tǒng)功能要求1).設(shè)計四個類;中學(xué)生類(描述中學(xué)生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,課目名稱(如高等物理,學(xué)院俄語等);中學(xué)生成績及課程信息用文件保存,每位類一個文件,程序執(zhí)行時從文件讀入;2).能按學(xué)期,按班級完成對中學(xué)生成績的錄入,更改,能按班級統(tǒng)計中學(xué)生的成績;求中學(xué)生的總分及平均分;并能按照中學(xué)生的平均成績進(jìn)行排序,能查詢中學(xué)生成績,不及格課目及中學(xué)生名單;能按班級輸出中學(xué)生的成績單。3).設(shè)置中學(xué)生的成績信息:中學(xué)生學(xué)號、姓名**選課程名稱、平時成績、期末成績、平時成績所占比率4).估算中學(xué)生總評成績:總評成績=平常成績*平常成績所占比率+期終成績*(1-平常成績所占比率)5).顯示中學(xué)生的姓名**選課程名稱以及平常成績、期末成績和總評成績信息。分雙人顯示和以班輸出(班成績單格式輸出到文件)注意,起碼一個班,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)計h能進(jìn)行總分查詢排行。2.2系統(tǒng)性能要求:a.系統(tǒng)安全、可靠;b.功能齊全;c.操作便捷、界面友好;d便于維護(hù)和擴展。2.3系統(tǒng)的功能剖析:資料維護(hù):系統(tǒng)維護(hù)包括對中學(xué)生信息的錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)查詢:可以對中學(xué)生的信息進(jìn)行查詢??傮w設(shè)計3.1系統(tǒng)功能模塊中學(xué)生成績查詢系統(tǒng)有:成績錄入、增加、刪除、修改,數(shù)據(jù)查詢,排序顯示構(gòu)成。3.2模塊框架圖詳盡設(shè)計主要功能模塊的算法設(shè)計思路:4.1用戶輸入模塊設(shè)計提示用戶輸入一個0~11的值,并儲存在一個整型變量m中。4.2中學(xué)生信息錄入模塊設(shè)計通過應(yīng)用list中的instu()函數(shù),來新建一個數(shù)組中的節(jié)點,即一個新的中學(xué)生信息,來進(jìn)行成績的錄入功能。成績更改功能,可以按照姓名或?qū)W號進(jìn)行查詢并更改相應(yīng)的課程的成績,使用了voidsearch(chars[10],int)和voidsearch1(chars[20],int)函數(shù)進(jìn)行操作。search函數(shù)依據(jù)姓名查找**earch1函數(shù)依據(jù)學(xué)號進(jìn)行查找。

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

先用input.eof()判定文件中是否有數(shù)據(jù),若有數(shù)據(jù),則進(jìn)行數(shù)據(jù)的讀入,直至文件結(jié)束。5.查詢功能模塊可以依據(jù)姓名或?qū)W**行查找,搜索技巧和前幾個模塊相同。通過outstu1(char*n)和outstu(char*n)來進(jìn)行輸出。總成績和平均成績的查詢通過函數(shù)voidoutsum(char*)和voidoutsum1(char*)來完成。通過函數(shù)scanall()來瀏覽所有中學(xué)生的信息。通過函數(shù)think()來進(jìn)行成績的統(tǒng)計剖析。6.報表輸出功能模塊通過構(gòu)建一個新的類classstucopy用于拷貝student的數(shù)據(jù),并實現(xiàn)排序功能。創(chuàng)建一個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é)果剖析每一個case都能執(zhí)行,并且有好多的地方都不夠健全,譬如:在總成績排序中,只能輸出總成績,不能單獨的輸出中學(xué)生的相應(yīng)的信息;每次進(jìn)行別的操作之前都要在進(jìn)行一次數(shù)據(jù)的錄入,不能直接對原有的文件進(jìn)行讀取??偨Y(jié)這次c++課程設(shè)計,在指導(dǎo)班主任的悉心教導(dǎo)下,我們學(xué)會了怎么用C++編撰一個簡單的應(yīng)用程序。

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