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

下載本文檔

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

文檔簡介

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

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

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

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

5、項目編號查詢?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ū)ο蟮姆椒ǎ谖臋n中主要采用了用例、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í)施,可以對學(xué)生綜合測評信息更加有效地進(jìn)行管理。系統(tǒng)設(shè)計實(shí)施過程中,力爭做到以下幾點(diǎn):1. 具有較高的可靠性和可用性;2. 系統(tǒng)易于管理維護(hù);3 使用方便,易學(xué)易用;4. 良好的性能

6、價格比;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)管理員,具備基本的電腦操作技能和簡單的系統(tǒng)維護(hù)工作以及學(xué)校用戶具備基礎(chǔ)的計算機(jī)操作技能。2.4功能需求通過前期對運(yùn)動會分?jǐn)?shù)統(tǒng)計領(lǐng)域?qū)嶋H業(yè)務(wù)需求的調(diào)研,經(jīng)分析確定系統(tǒng)功能主要為以下:管理員操作:1、有各個運(yùn)動項目以及各個學(xué)校以及運(yùn)動員信息管理。2、認(rèn)證信息管理、密碼管理、對每個學(xué)校進(jìn)

7、行總分統(tǒng)計、對各個信息(如按學(xué)校名稱或編號查詢某項的情況)進(jìn)行查詢、增加、刪除、修改以及對按不同規(guī)定(學(xué)校編號或名稱、學(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)流程圖及各個步驟中具體內(nèi)容,具體描述如下。(1)系統(tǒng)整體用例圖,系統(tǒng)主要有兩類用戶包括:管理員、學(xué)校用戶。見圖2.1。 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng) 管理員學(xué)校文件輸入學(xué)??偡纸y(tǒng)計排序操作查詢操作增加、刪除、修改操作查詢操作密碼認(rèn)證用戶選擇文本保存 圖2.1 系統(tǒng)整體用例圖2.4.2 系統(tǒng)

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

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

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

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

12、計的目的,采用結(jié)構(gòu)體來存儲每組數(shù)據(jù),定義運(yùn)動會類和調(diào)用庫函數(shù)進(jìn)行相應(yīng)的操作?,F(xiàn)把相應(yīng)的設(shè)計思路及各個函數(shù)解析如下。3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計分析3.1.1 存儲學(xué)校信息的結(jié)構(gòu)體 學(xué)校信息有學(xué)校名稱、學(xué)校編號、學(xué)校總分、男女團(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 存儲項目信息的結(jié)構(gòu)體 項目信息有項目編號、項目取前三或前五、項目類別、項目獲名者。具體結(jié)構(gòu)如下:struct item/項目信息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)動會類 定義一個運(yùn)動會類,定義和調(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;/定義個學(xué)校的map類multimap item;/定義項目的map類;3.2 各個函數(shù)分析3.2.1 主函數(shù) 函數(shù)原型:int main()

15、main()函數(shù)主要是整個系統(tǒng)的控制端,主要功能是控制整個程序的運(yùn)行。從主函數(shù)開始調(diào)用各相關(guān)函數(shù)來達(dá)到相應(yīng)的功能。由于有多個不同的選項,所以用一個while()swithch()語句控制每個函數(shù)調(diào)用,控制起來方便、明了。關(guān)鍵代碼如下:while(1)cout1. 修改項目信息endl;cout2. 添加項目endl;cout3. 刪除項目endl;cout4. 查詢選項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輸入錯誤! sh.school_id)fin1 sh.school_name;school.insert(pair(sh.school_id,sh);fin1.close();ifstream fin2(item_info.txt);/從文件中讀取項目信息數(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)比較的簡單,可以不用菜單函數(shù),要是選用菜單函數(shù),太過于繁雜,因?yàn)槊總€主菜單下還有很多小的菜單,不采用菜單函數(shù),是代碼通俗易懂。雖然沒有菜單函數(shù),但是在各個界面展示整個系統(tǒng)可供用戶選擇的功能選項一步一步的層層遞進(jìn),清晰明了,使用戶對系統(tǒng)的操作更容易掌握。顯示各個選項,把后臺功能顯示在顯示器上,給用戶以提醒。3.2.4 增加函數(shù)函數(shù)原型:void sportmeeting:add()此函數(shù)

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

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

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

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

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

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

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

25、tem = item.find(itm.item_id);if(it_item = item.end()cout沒有此項目endl;return ;cout 該學(xué)校在此項目的男子組中獲獎情況:;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沒有任何獎項;coutendl;return;2) void sportmeeting:se

26、arch_by_item()/根據(jù)項目編號查詢獲前三或前五的學(xué)校情況system(cls);item itm;cout請輸入你要查詢的項目編號 itm.item_id;multimap:iterator it_item = item.find(itm.item_id);if(it_item = item.end()cout 沒有此項目 endl;return ;cout 該項目的獲獎情況: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ù)需要對項目進(jìn)行更新,把不存在的項目,將其刪除。代碼如下:void sportmeeting:del()system(cls);item itm;cout請輸入你要刪除的項目編號: itm.item_id;multimap:iterator it_item = item.find(itm.item_id);if(it_item = item.end()cout 沒有此項目編號!endl;system(pause);return ;item.erase(it_item);update();cout更新項目成功!endl;system(pa

28、use);return ;3.2.9 排序函數(shù)函數(shù)原型:void sportmeeting:sort()進(jìn)入該函數(shù),有一個菜單界面,用戶可以根據(jù)需要,進(jìn)行選擇,對數(shù)據(jù)信息進(jìn)行操作,該排序函數(shù)中還分有子排序函數(shù),層次分明,用switch()語句完成功能設(shè)計。代碼如下:void sportmeeting:sort()system(cls);cout1.按學(xué)校編號排序endl;cout2.按學(xué)??偡峙判騟ndl;cout3.按男子總分排序endl;cout4.按女子總分排序endl;cout0.返回上級菜單 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輸入錯誤!endl;system(pause);return ;system(pause);3.3.0 子排序函數(shù)1)void sportmeeting:sort_by_id()/按學(xué)校編號排序system(cls);multimap:iterator it_school;cout setiosflags(ios:left);coutsetw(2

30、0)學(xué)校編號 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é)校總分排序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.total_score,sch);cout setiosflags(ios:left);coutsetw(20)學(xué)校編號 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é)校編號 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é)校編號 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ǐn)?shù)函數(shù) 函數(shù)原型:void sportmeeting:update() 此函數(shù),對各個學(xué)

37、校、男子團(tuán)體以及女子團(tuán)體總分的一個計算操作函數(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ù),對各個數(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ǒng)用到的算法主要有結(jié)構(gòu)體、調(diào)用庫函數(shù),沒有用到其它比較復(fù)雜的算法,操作起來簡單,并且容易控制;還用到輸入輸出流的一些操作來使顯示的信息對稱,不凌亂;再就是一些文件操作,輸入文件讀取數(shù)據(jù),保存操作后的所有信息。本系統(tǒng)是在microsoft visu

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

溫馨提示

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

評論

0/150

提交評論