534556071《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
534556071《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
534556071《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
534556071《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
534556071《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 懷 化 學(xué) 院 計(jì) 算 機(jī) 系數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告書運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名: 學(xué) 號(hào): 年級(jí)專業(yè)及班級(jí):09級(jí)計(jì)算機(jī)科學(xué)與技術(shù)一班 指導(dǎo)老師及職稱: 副教授 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) 湖南懷化 提交日期:2011年6月 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 生: 指導(dǎo)老師: (懷化學(xué)院計(jì)算機(jī)系,懷化 418008) 摘 要:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)通過運(yùn)用結(jié)構(gòu)體、文件讀取以及數(shù)據(jù)保存、定義運(yùn)動(dòng)會(huì)類、以及調(diào)用函數(shù)、運(yùn)用庫函數(shù)實(shí)現(xiàn)了指定的輸入文本讀取數(shù)據(jù);根據(jù)輸入文件得到各學(xué)校的總分;按學(xué)校編號(hào)、學(xué)??偡?、男女團(tuán)體總分排序;查詢功能按學(xué)校編號(hào)查詢某個(gè)項(xiàng)目的情況、按項(xiàng)目編號(hào)查詢?nèi)〉们叭?/p>

2、或前五名的學(xué)校;實(shí)現(xiàn)了數(shù)據(jù)的增加、刪除、修改以及對(duì)數(shù)據(jù)的保存的功能。該系統(tǒng)的用戶主要是提供給管理、學(xué)校的。對(duì)于管理用戶提供了所有的操作,而對(duì)學(xué)校擁護(hù)只提供查詢和查看操作,這樣安全性能比較高,該系統(tǒng)是通過輸入文本讀取來獲取數(shù)據(jù),較少了輸入數(shù)據(jù)的繁雜通過運(yùn)用定義運(yùn)動(dòng)會(huì)類,進(jìn)行對(duì)函數(shù)的定義,使整個(gè)代碼看起來清晰整潔,通過調(diào)用庫函數(shù),使代碼更簡(jiǎn)潔。該系統(tǒng)為用戶提供了總分計(jì)算,排序方便,為學(xué)校用戶提供了查詢和查看的方便。 關(guān)鍵詞:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng);結(jié)構(gòu)體;排序;查詢1 前言 該系統(tǒng)實(shí)現(xiàn)了簡(jiǎn)單的運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì),是一個(gè)面向?qū)ο蟮脑O(shè)計(jì),使用了結(jié)構(gòu)體,輸入文本讀取數(shù)據(jù)以及庫函數(shù)的調(diào)用來完成整個(gè)系統(tǒng)的設(shè)計(jì),是繁

3、多的數(shù)據(jù)操作變得簡(jiǎn)單。該系統(tǒng)為聯(lián)合運(yùn)動(dòng)會(huì)提供服務(wù)減少了不必要的人力物力的浪費(fèi),通過寫一段程序?qū)崿F(xiàn)簡(jiǎn)單運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)來實(shí)現(xiàn)幾個(gè)功能。該系統(tǒng)實(shí)現(xiàn)了以下幾個(gè)功能:1)根據(jù)指定的輸入文件讀取數(shù)據(jù);2)輸入文件數(shù)據(jù)格式和文件數(shù)目由學(xué)生自行設(shè)計(jì),主體體現(xiàn)學(xué)校名稱、項(xiàng)目編號(hào)、項(xiàng)目名稱、男子女子項(xiàng)目類別、前三或前五名積分;3)根據(jù)輸入文件得到各學(xué)??偡郑?)可以按學(xué)校編號(hào)或名稱、學(xué)??偡?、男女團(tuán)體總分排序;5)可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。6)實(shí)現(xiàn)數(shù)據(jù)的增加、刪除、修改,并將相關(guān)數(shù)據(jù)進(jìn)行保存;7)各操作結(jié)果能保存到文件,以便查詢。通過這次的課程設(shè)計(jì),

4、可以加深對(duì)庫函數(shù),以及結(jié)構(gòu)體的了解,以及各個(gè)函數(shù)的功能以及實(shí)現(xiàn),更進(jìn)一步了解其原理。2 需求分析2.1 范圍2.1.1 標(biāo)識(shí)文件狀態(tài):【 】草稿【】正式發(fā)布【 】正在修改文件標(biāo)識(shí):需求分析報(bào)告當(dāng)前版本:1.0作 者:吳紅林完成日期:2011-05-252.1.2 系統(tǒng)概述1軟件名稱:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)2軟件功能:1)根據(jù)指定的輸入文件讀取數(shù)據(jù);2)輸入文件數(shù)據(jù)格式和文件數(shù)目由學(xué)生自行設(shè)計(jì),主體體現(xiàn)學(xué)校名稱、項(xiàng)目編號(hào)、項(xiàng)目名稱、男子女子項(xiàng)目類別、前三或前五名積分;3)根據(jù)輸入文件得到各學(xué)??偡郑?)可以按學(xué)校編號(hào)或名稱、學(xué)??偡帧⒛信畧F(tuán)體總分排序;5)可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按

5、項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。6)實(shí)現(xiàn)數(shù)據(jù)的增加、刪除、修改,并將相關(guān)數(shù)據(jù)進(jìn)行保存;7)各操作結(jié)果能保存到文件,以便查詢。3用戶:管理員、學(xué)校4開發(fā)者:吳紅林2.1.3 文檔概述需求分析采用面向?qū)ο蟮姆椒?,在文檔中主要采用了用例、e-r圖、數(shù)據(jù)字典等表示方法來描述需求,用這些方法來表達(dá)需求分析便于理解,將自己的系統(tǒng)推薦給用戶.2.2 引用文件無2.3 需求概述2.3.1 系統(tǒng)目標(biāo)本系統(tǒng)的總體目標(biāo)是通過該系統(tǒng)的實(shí)施,可以對(duì)學(xué)生綜合測(cè)評(píng)信息更加有效地進(jìn)行管理。系統(tǒng)設(shè)計(jì)實(shí)施過程中,力爭(zhēng)做到以下幾點(diǎn):1. 具有較高的可靠性和可用性;2. 系統(tǒng)易于管理維護(hù);3 使用方便,易學(xué)易用;4. 良好的性能

6、價(jià)格比;2.3.2 運(yùn)行環(huán)境1. 系統(tǒng)硬件需求pentium4 800mhz或更高主頻cpu 512mb以上內(nèi)存。2. 系統(tǒng)軟件需求iis5.0以上的web服務(wù)、安裝有 myeclipse8.5與mysql5.1數(shù)據(jù)庫等、windows xp 以及更高版本的操作系統(tǒng)、ie5.0以上的版本瀏覽器。2.3.3 用戶的特點(diǎn)管理員,具備基本的電腦操作技能和簡(jiǎn)單的系統(tǒng)維護(hù)工作以及學(xué)校用戶具備基礎(chǔ)的計(jì)算機(jī)操作技能。2.4功能需求通過前期對(duì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)領(lǐng)域?qū)嶋H業(yè)務(wù)需求的調(diào)研,經(jīng)分析確定系統(tǒng)功能主要為以下:管理員操作:1、有各個(gè)運(yùn)動(dòng)項(xiàng)目以及各個(gè)學(xué)校以及運(yùn)動(dòng)員信息管理。2、認(rèn)證信息管理、密碼管理、對(duì)每個(gè)學(xué)校進(jìn)

7、行總分統(tǒng)計(jì)、對(duì)各個(gè)信息(如按學(xué)校名稱或編號(hào)查詢某項(xiàng)的情況)進(jìn)行查詢、增加、刪除、修改以及對(duì)按不同規(guī)定(學(xué)校編號(hào)或名稱、學(xué)校總分、男女團(tuán)體總分)進(jìn)行排序。3、實(shí)現(xiàn)文件讀取數(shù)據(jù)以及文件保存數(shù)據(jù)操作。 學(xué)校用戶操作:用戶信息完善、認(rèn)證信息的查看。2.4.1 系統(tǒng)用例圖根據(jù)需求分析,分析出系統(tǒng)的具體操作步驟及功能,從而確定系統(tǒng)流程圖及各個(gè)步驟中具體內(nèi)容,具體描述如下。(1)系統(tǒng)整體用例圖,系統(tǒng)主要有兩類用戶包括:管理員、學(xué)校用戶。見圖2.1。 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) 管理員學(xué)校文件輸入學(xué)校總分統(tǒng)計(jì)排序操作查詢操作增加、刪除、修改操作查詢操作密碼認(rèn)證用戶選擇文本保存 圖2.1 系統(tǒng)整體用例圖2.4.2 系統(tǒng)

8、各項(xiàng)功能描述 1、【應(yīng)該以用例為單位進(jìn)行功能描述】1) 用例1用例名:文件輸入行為者:管理員目的:實(shí)現(xiàn)數(shù)據(jù)的讀入,輸入相關(guān)的學(xué)校信息,相關(guān)的項(xiàng)目信息級(jí)別:一級(jí)過程描述:a) 歡迎進(jìn)入運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)b) 選擇菜單,選擇錄入數(shù)據(jù)文件c) 文件錄入學(xué)校名稱、項(xiàng)目編號(hào)、項(xiàng)目名稱、男子女子項(xiàng)目類別、前三或前五名d) 錄入成功,退出到菜單選項(xiàng)。與其它用例的關(guān)聯(lián):本用例是后面的操作的基礎(chǔ)。異常處理:無2) 用例3用例名:學(xué)??偡纸y(tǒng)計(jì)行為者:管理員目的:根據(jù)輸入文件得到各學(xué)??偡旨?jí)別:一級(jí)過程描述:a) 根據(jù)輸入的文件統(tǒng)計(jì)各學(xué)校的總分b) 利用直接插入函數(shù)對(duì)個(gè)學(xué)校的總分進(jìn)行排序c) 輸出各

9、學(xué)校的總分,記錄入文件item_info.txt中d) 退出菜單選項(xiàng)異常處理:無3) 用例4用例名:排序操作行為者:管理員目的:可以按學(xué)校編號(hào)或名稱、學(xué)??偡帧⒛信畧F(tuán)體總分排序;級(jí)別:一級(jí)過程描述:a) 利用算法分別實(shí)現(xiàn)按學(xué)校編號(hào)排序b) 按學(xué)校編號(hào)或名稱排序c) 按學(xué)校總分排序d) 按男女團(tuán)體總分排序e) 利用一個(gè)選擇的菜單實(shí)現(xiàn)這些排序f) 后臺(tái)顯示,用戶選擇g) 顯示結(jié)果h) 退出系統(tǒng)異常處理:無4) 用例5用例名:查詢操作行為者:管理員、學(xué)校目的:可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。級(jí)別:一級(jí)過程描述:a)輸入學(xué)校編號(hào)以及要查詢的項(xiàng)目進(jìn)行查詢b

10、)輸入項(xiàng)目編號(hào)查詢獲獎(jiǎng)情況f) 退出系統(tǒng)。異常處理:無5) 用例6用例名:數(shù)據(jù)的增加、刪除、修改,并將相關(guān)數(shù)據(jù)進(jìn)行保存行為者:管理員目的:實(shí)現(xiàn)數(shù)據(jù)的增加、刪除、修改,并將相關(guān)數(shù)據(jù)進(jìn)行保存;級(jí)別:一級(jí)過程描述:a) 對(duì)文件進(jìn)行數(shù)據(jù)的增加,刪除,修改等操作b) 查看是否操作成功,輸出修改后的數(shù)據(jù)c) 退出系統(tǒng)異常處理:無6) 用例7用例名:各個(gè)操作數(shù)據(jù)的文件保存行為者:管理員目的:各操作結(jié)果能保存到文件,以便查詢級(jí)別:一級(jí)2.5數(shù)據(jù)下面僅列出主要實(shí)體。(1)學(xué)校實(shí)體學(xué)校實(shí)體包括學(xué)校名稱、學(xué)校編號(hào)、學(xué)??偡?、女團(tuán)體總分、男團(tuán)體總分,如圖學(xué)生實(shí)體e-r圖2.5所示。 學(xué)校學(xué)??偡峙畧F(tuán)體總分男團(tuán)體總分學(xué)

11、校名稱學(xué)校編號(hào)圖2.5 學(xué)校實(shí)體e-r圖(2)活動(dòng)項(xiàng)目實(shí)體項(xiàng)目實(shí)體包括項(xiàng)目編號(hào)、取前三或前五、項(xiàng)目類別、項(xiàng)目獲名者。如圖項(xiàng)目實(shí)體e-r圖2.6所示?;顒?dòng)項(xiàng)目項(xiàng)目編號(hào)項(xiàng)目類別取前三或前五項(xiàng)目獲名者圖2.6 活動(dòng)項(xiàng)目實(shí)體e-r圖2.6擬采用的技術(shù)實(shí)現(xiàn)本系統(tǒng)用到了c/c+基礎(chǔ)程序設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)。本系統(tǒng)將采用文件存儲(chǔ)、結(jié)構(gòu)存儲(chǔ)、鏈表方法以及調(diào)用不同函數(shù)來實(shí)現(xiàn)系統(tǒng)功能,算法中主要采用是鏈表操作如:查詢、增加、刪除、修改以及鏈表的插入排序等,輸入與讀取都是以文件的形式進(jìn)行。在系統(tǒng)設(shè)計(jì)的過程中,才會(huì)知道哪一種技術(shù)比較好用,但是具體的用到的技術(shù)應(yīng)該不會(huì)太偏離我以上講的技術(shù)。3 詳細(xì)設(shè)計(jì)根據(jù)題目要求及本次課程設(shè)

12、計(jì)的目的,采用結(jié)構(gòu)體來存儲(chǔ)每組數(shù)據(jù),定義運(yùn)動(dòng)會(huì)類和調(diào)用庫函數(shù)進(jìn)行相應(yīng)的操作?,F(xiàn)把相應(yīng)的設(shè)計(jì)思路及各個(gè)函數(shù)解析如下。3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)分析3.1.1 存儲(chǔ)學(xué)校信息的結(jié)構(gòu)體 學(xué)校信息有學(xué)校名稱、學(xué)校編號(hào)、學(xué)??偡帧⒛信畧F(tuán)體總分。具體結(jié)構(gòu)如下:struct school/學(xué)校信息string school_name;string school_id;int total_score;int women_score;int man_score;school()/初始化school_name = ;school_id = ;total_score = women_score = man_score =

13、0;3.1.2 存儲(chǔ)項(xiàng)目信息的結(jié)構(gòu)體 項(xiàng)目信息有項(xiàng)目編號(hào)、項(xiàng)目取前三或前五、項(xiàng)目類別、項(xiàng)目獲名者。具體結(jié)構(gòu)如下:struct item/項(xiàng)目信息string item_id;int range_num;char sex;string winner_id6;item()/初始化item_id = ;sex = 0;range_num = 0;memset(winner_id,0,sizeof(winner_id);3.13運(yùn)動(dòng)會(huì)類 定義一個(gè)運(yùn)動(dòng)會(huì)類,定義和調(diào)用起成員函數(shù),成員變量,完成系統(tǒng)的功能。代碼如下:class sportmeetingpublic:void load();void sav

14、e();void sort();void search();void add();void del();void modify();private:void update();void sort_by_id();void sort_by_total();void sort_by_man();void sort_by_women();void search_by_school();void search_by_item();multimap school;/定義個(gè)學(xué)校的map類multimap item;/定義項(xiàng)目的map類;3.2 各個(gè)函數(shù)分析3.2.1 主函數(shù) 函數(shù)原型:int main()

15、main()函數(shù)主要是整個(gè)系統(tǒng)的控制端,主要功能是控制整個(gè)程序的運(yùn)行。從主函數(shù)開始調(diào)用各相關(guān)函數(shù)來達(dá)到相應(yīng)的功能。由于有多個(gè)不同的選項(xiàng),所以用一個(gè)while()swithch()語句控制每個(gè)函數(shù)調(diào)用,控制起來方便、明了。關(guān)鍵代碼如下:while(1)cout1. 修改項(xiàng)目信息endl;cout2. 添加項(xiàng)目endl;cout3. 刪除項(xiàng)目endl;cout4. 查詢選項(xiàng)endl;cout5. 查看排名endl;cout0. 退出系統(tǒng)endl;cout select;switch(select)case 1:meet.modify();break;case 2:meet.add();break;

16、case 3:meet.del();break;case 4:meet.search();break;case 5:meet.sort();break;case 0:break;default:cout輸入錯(cuò)誤! sh.school_id)fin1 sh.school_name;school.insert(pair(sh.school_id,sh);fin1.close();ifstream fin2(item_info.txt);/從文件中讀取項(xiàng)目信息數(shù)據(jù)item it;while(fin2 it.item_id)fin2 it.sex;fin2 it.range_num;int i;for

17、(i = 1; i it.winner_idi;item.insert(pair(it.item_id,it);fin2.close();update();3.2.3 菜單函數(shù)本系統(tǒng)沒有單純的菜單函數(shù),因?yàn)楸鞠到y(tǒng)比較的簡(jiǎn)單,可以不用菜單函數(shù),要是選用菜單函數(shù),太過于繁雜,因?yàn)槊總€(gè)主菜單下還有很多小的菜單,不采用菜單函數(shù),是代碼通俗易懂。雖然沒有菜單函數(shù),但是在各個(gè)界面展示整個(gè)系統(tǒng)可供用戶選擇的功能選項(xiàng)一步一步的層層遞進(jìn),清晰明了,使用戶對(duì)系統(tǒng)的操作更容易掌握。顯示各個(gè)選項(xiàng),把后臺(tái)功能顯示在顯示器上,給用戶以提醒。3.2.4 增加函數(shù)函數(shù)原型:void sportmeeting:add()此函數(shù)

18、用來增加項(xiàng)目,調(diào)用該函數(shù)可以使管理員對(duì)項(xiàng)目進(jìn)行增加操作。代碼如下:void sportmeeting:add()system(cls);item it;cout it.item_id;if(item.find(it.item_id) != item.end()cout該項(xiàng)目已經(jīng)存在!endl;system(pause);return ;cout it.sex;cout 請(qǐng)輸入該項(xiàng)目是取前三名還是取前五名?(輸入3或者5) it.range_num;if(it.range_num = 3)cout請(qǐng)依次輸入獲得該項(xiàng)目1-3名的學(xué)校編號(hào): it.winner_id1 it.winner_id2 i

19、t.winner_id3;else if(it.range_num = 5)cout請(qǐng)依次輸入獲得該項(xiàng)目1-5名的學(xué)校編號(hào): it.winner_id1 it.winner_id2 it.winner_id3 it.winner_id4 it.winner_id5;elsecout輸入錯(cuò)誤!endl;system(pause);return ;item.insert(pair(it.item_id,it);update();cout添加項(xiàng)目成功!endl;system(pause);3.2.5 修改函數(shù)函數(shù)原型:void sportmeeting:modify()通過調(diào)用此函數(shù),可以修改項(xiàng)目信

20、息,按照函數(shù)中的每項(xiàng)提示輸入新的項(xiàng)目信息,以減少錯(cuò)誤信息的錄入。代碼如下:void sportmeeting:modify()system(cls);item itm;cout請(qǐng)輸入你要修改的項(xiàng)目編號(hào): itm.item_id;multimap:iterator it = item.find(itm.item_id);if( it = item.end()cout該項(xiàng)目不存在!endl;system(pause);return ;cout (it-second).sex;cout 請(qǐng)輸入該項(xiàng)目是取前三名還是取前五名?(輸入3或者5) (it-second).range_num;if(it-se

21、cond).range_num = 3)cout請(qǐng)依次輸入獲得該項(xiàng)目男子組1-3名的學(xué)校編號(hào): (it-second).winner_id1 (it-second).winner_id2 (it-second).winner_id3;else if(it-second).range_num = 5) cout請(qǐng)依次輸入獲得該項(xiàng)目男子組1-5名的學(xué)校編號(hào): (it-second).winner_id1 (it-second).winner_id2 (it-second).winner_id3 (it-second).winner_id4 (it-second).winner_id5;elseco

22、ut輸入錯(cuò)誤!endl;system(pause);return ;update();cout修改項(xiàng)目成功!endl;system(pause);3.2.6 查詢函數(shù)函數(shù)原型:void sportmeeting:search()進(jìn)入此函數(shù)后,有菜單的選擇,可以查看學(xué)校獲獎(jiǎng)的情況、查看項(xiàng)目獲獎(jiǎng)的情況,分別是根據(jù)學(xué)校編號(hào)查詢某個(gè)項(xiàng)目的情況、根據(jù)項(xiàng)目編號(hào)查詢獲前三或前五的學(xué)校情況。編寫了以下查詢函數(shù)。void sportmeeting:search()system(cls);cout1. 查看學(xué)校獲獎(jiǎng)情況endl;cout2. 查看項(xiàng)目獲獎(jiǎng)情況endl;cout0. 返回上級(jí)菜單endl; cout

23、 select;switch(select)case 1:search_by_school();/根據(jù)學(xué)校編號(hào)查詢某個(gè)項(xiàng)目的情況break;case 2:search_by_item();/根據(jù)項(xiàng)目編號(hào)查詢獲前三或前五的學(xué)校情況break;case 0:break;default:cout輸入錯(cuò)誤!endl;break;system(pause);3.2.7 子查詢函數(shù)函數(shù)原型:void sportmeeting:search_by_school()、void sportmeeting:search_by_item()在這兩個(gè)子查詢函數(shù)中,用戶可以根據(jù)學(xué)校編號(hào)查詢某個(gè)項(xiàng)目的情況、根據(jù)項(xiàng)目編號(hào)查

24、詢獲前三或前五的學(xué)校情況,完善了查詢函數(shù)。代碼如下:1)void sportmeeting:search_by_school()/根據(jù)學(xué)校編號(hào)查詢某個(gè)項(xiàng)目的情況system(cls);school sch;cout 請(qǐng)輸入你要查看的學(xué)校編號(hào) sch.school_id;multimap:iterator it_school = school.find(sch.school_id);if(it_school = school.end()cout沒有此學(xué)校endl;return ;cout請(qǐng)輸入你要查看該學(xué)校的那個(gè)項(xiàng)目的獲獎(jiǎng)情況 itm.item_id;multimap:iterator it_i

25、tem = item.find(itm.item_id);if(it_item = item.end()cout沒有此項(xiàng)目endl;return ;cout 該學(xué)校在此項(xiàng)目的男子組中獲獎(jiǎng)情況:;bool is_award = false;int i;for(i = 1; i second).range_num ;i+)if(it_item-second).winner_idi = sch.school_id)cout i ;is_award = true;if(is_award = false)cout沒有任何獎(jiǎng)項(xiàng);coutendl;return;2) void sportmeeting:se

26、arch_by_item()/根據(jù)項(xiàng)目編號(hào)查詢獲前三或前五的學(xué)校情況system(cls);item itm;cout請(qǐng)輸入你要查詢的項(xiàng)目編號(hào) itm.item_id;multimap:iterator it_item = item.find(itm.item_id);if(it_item = item.end()cout 沒有此項(xiàng)目 endl;return ;cout 該項(xiàng)目的獲獎(jiǎng)情況:endl;int i;for(i = 1; i second).range_num ;i+)cout第 i 名:second).winner_idi endl;return;3.2.8 刪除函數(shù)函數(shù)原型:vo

27、id sportmeeting:del()此函數(shù)用戶可以根據(jù)需要對(duì)項(xiàng)目進(jìn)行更新,把不存在的項(xiàng)目,將其刪除。代碼如下:void sportmeeting:del()system(cls);item itm;cout請(qǐng)輸入你要?jiǎng)h除的項(xiàng)目編號(hào): itm.item_id;multimap:iterator it_item = item.find(itm.item_id);if(it_item = item.end()cout 沒有此項(xiàng)目編號(hào)!endl;system(pause);return ;item.erase(it_item);update();cout更新項(xiàng)目成功!endl;system(pa

28、use);return ;3.2.9 排序函數(shù)函數(shù)原型:void sportmeeting:sort()進(jìn)入該函數(shù),有一個(gè)菜單界面,用戶可以根據(jù)需要,進(jìn)行選擇,對(duì)數(shù)據(jù)信息進(jìn)行操作,該排序函數(shù)中還分有子排序函數(shù),層次分明,用switch()語句完成功能設(shè)計(jì)。代碼如下:void sportmeeting:sort()system(cls);cout1.按學(xué)校編號(hào)排序endl;cout2.按學(xué)??偡峙判騟ndl;cout3.按男子總分排序endl;cout4.按女子總分排序endl;cout0.返回上級(jí)菜單 select;switch(select)case 1:sort_by_id();break

29、;case 2:sort_by_total();break;case 3:sort_by_man();break;case 4:sort_by_women();break;case 0:system(pause);return;default:cout輸入錯(cuò)誤!endl;system(pause);return ;system(pause);3.3.0 子排序函數(shù)1)void sportmeeting:sort_by_id()/按學(xué)校編號(hào)排序system(cls);multimap:iterator it_school;cout setiosflags(ios:left);coutsetw(2

30、0)學(xué)校編號(hào) setw(20)學(xué)校名稱setw(10)總分setw(10)男子總分setw(20)女子總分endl;for(it_school = school.begin() ; it_school != school.end() ; it_school+)coutsetw(20)second).school_idsetw(20)second).school_namesetw(10)second).total_scoresetw(10)second).man_scoresetw(20)second).women_scoreend;2)void sportmeeting:sort_by_tot

31、al()/按學(xué)??偡峙判騭ystem(cls);multimap:iterator it_school;multimap school_temp;school sch;for(it_school = school.begin() ; it_school != school.end() ; it_school+)sch = it_school-second;school_temp.insert(pair(sch.total_score,sch);cout setiosflags(ios:left);coutsetw(20)學(xué)校編號(hào) setw(20)學(xué)校名稱setw(10)總分setw(10)男子

32、總分setw(20)女子總分endl;multimap:iterator it_temp;for(it_temp = school_temp.begin() ; it_temp != school_temp.end() ; it_temp+)coutsetw(20)second).school_idsetw(20)second).school_namesetw(10)second).total_scoresetw(10)second).man_scoresetw(20)second).women_scoreendl;3)void sportmeeting:sort_by_man()/按男子團(tuán)體

33、總分排序system(cls);multimap:iterator it_school;multimap school_temp;school sch;for(it_school = school.begin() ; it_school != school.end() ; it_school+)sch = it_school-second;school_temp.insert(pair(sch.man_score,sch);cout setiosflags(ios:left);coutsetw(20)學(xué)校編號(hào) setw(20)學(xué)校名稱setw(10)總分setw(10)男子總分setw(20)

34、女子總分endl;multimap:iterator it_temp;for(it_temp = school_temp.begin() ; it_temp != school_temp.end() ; it_temp+)coutsetw(20)second).school_idsetw(20)second).school_namesetw(10)second).total_scoresetw(10)second).man_scoresetw(20)second).women_scoreendl;4)void sportmeeting:sort_by_women()/按女子團(tuán)體總分排序syst

35、em(cls);multimap:iterator it_school;multimap school_temp;school sch;for(it_school = school.begin() ; it_school != school.end() ; it_school+)sch = it_school-second;school_temp.insert(pair(sch.women_score,sch);cout setiosflags(ios:left);coutsetw(20)學(xué)校編號(hào) setw(20)學(xué)校名稱setw(10)總分setw(10)男子總分setw(20)女子總分en

36、dl;multimap:iterator it_temp;for(it_temp = school_temp.begin() ; it_temp != school_temp.end() ; it_temp+)coutsetw(20)second).school_idsetw(20)second).school_namesetw(10)second).total_scoresetw(10)second).man_scoresetw(20)second).women_scoreendl;3.3.1 更新計(jì)算分?jǐn)?shù)函數(shù) 函數(shù)原型:void sportmeeting:update() 此函數(shù),對(duì)各個(gè)學(xué)

37、校、男子團(tuán)體以及女子團(tuán)體總分的一個(gè)計(jì)算操作函數(shù),具體代碼如下: void sportmeeting:update()multimap:iterator it_school = school.begin();for(it_school;it_school != school.end() ; it_school+)(it_school-second).total_score = 0;(it_school-second).women_score = (it_school-second).man_score = 0;multimap:iterator it_item = item.begin();fo

38、r(it_item; it_item != item.end(); it_item +)int *score;if(it_item-second).range_num = 3)score = score_three;elsescore = score_five;if(it_item-second).sex = m)for(int i = 1; i second).range_num ; i+)it_school = school.find(it_item-second).winner_idi);(it_school-second).total_score += scorei;(it_schoo

39、l-second).man_score += scorei;elsefor(int i = 1; i second).range_num ; i+)it_school = school.find(it_item-second).winner_idi);(it_school-second).total_score += scorei;(it_school-second).women_score += scorei;3.3.2 數(shù)據(jù)操作保存函數(shù) 函數(shù)原型:void sportmeeting:save() 此函數(shù),對(duì)各個(gè)數(shù)據(jù)操作的結(jié)果保存在文本里,以便查詢,具體代碼如下:void sportmeet

40、ing:save()ofstream fout(school_info.txt);multimap:iterator it_school;foutsetiosflags(ios:left);for(it_school = school.begin(); it_school != school.end() ;it_school+)fout setw(20)second).school_id setw(20)second).school_nameendl;fout.close();fout.open(item_info.txt);multimap:iterator it_item;foutseco

41、nd;foutsetw(15) second).item_id setw(3)second).sex setw(3) second).range_num;for(i = 1; i second).range_num;i+)foutsetw(8)second).winner_idi;foutendl;fout.close();3.3 算法及平臺(tái)分析 本系統(tǒng)用到的算法主要有結(jié)構(gòu)體、調(diào)用庫函數(shù),沒有用到其它比較復(fù)雜的算法,操作起來簡(jiǎn)單,并且容易控制;還用到輸入輸出流的一些操作來使顯示的信息對(duì)稱,不凌亂;再就是一些文件操作,輸入文件讀取數(shù)據(jù),保存操作后的所有信息。本系統(tǒng)是在microsoft visu

42、al c+ 6.0上設(shè)計(jì)及運(yùn)行的,所有的信息顯示均是在dos界面中顯示出來,并且在每一步操作后,都利用system(cls)對(duì)dos界面進(jìn)行清屏,使顯示器顯示的信息清晰、整齊。4 實(shí)現(xiàn)方法 通過對(duì)設(shè)計(jì)題目的深入分析,及題目的要求,在設(shè)計(jì)時(shí),主要實(shí)現(xiàn)六大功能模塊,大致滿足一個(gè)聯(lián)合運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)的需要,主要的流程及實(shí)現(xiàn)方法請(qǐng)看下面的報(bào)告。4.1 聯(lián)合運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)框架圖管理員學(xué)校修改項(xiàng)目信息添加項(xiàng)目刪除項(xiàng)目查詢選項(xiàng)查看排名查詢操作密碼認(rèn)證用戶選擇文本保存文本輸入查看排名操作 4.2 聯(lián)合運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)主函數(shù)流程圖 int main()int select,choice,i;sportmeeting meet;meet.load();coutendlendlendlendlendl;cout*用戶選擇*endl;cout*1、管理用戶*endl;cout*2、學(xué)校用戶*endl;cout請(qǐng)輸入你要選擇的用戶:choice;if(choice=1)system(cls);couti;if(i=12345)system(cls);while(1)cout1. 修改項(xiàng)目信息endl;cout2. 添加項(xiàng)目endl;cout3. 刪除項(xiàng)目endl;cout4. 查詢選項(xiàng)endl;cout5. 查看排名endl;cout0. 退出系統(tǒng)endl;cout select

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論