版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)</b></p><p> 根據(jù)課程設(shè)計(jì)任務(wù)書(shū)要求,本系統(tǒng)開(kāi)發(fā)主要完成以下功能和性能。</p><p> 任務(wù):參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1……n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1……m,女子m+1……m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積
2、分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)</p><p><b> 功能要求:</b></p><p> (1).可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);</p><p> (2).能統(tǒng)計(jì)各學(xué)??偡?;</p><p> (3).可以按學(xué)校編號(hào)、學(xué)??偡帧⒛信?/p>
3、團(tuán)體總分排序輸出;</p><p> (4).可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p> 規(guī)定:輸入數(shù)據(jù)形式和范圍:20以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱)</p><p> 輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形</p><p> 界面要求:有合理的提示
4、,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。</p><p> 存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。</p><p><b> 2需求分析</b></p><p><b> 2.1 功能需求</b></p><p> 本系統(tǒng)主
5、要是運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)方案設(shè)計(jì)。</p><p> 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)方案適合采用結(jié)構(gòu)體數(shù)組,為了實(shí)現(xiàn)系統(tǒng)功能,主要應(yīng)實(shí)現(xiàn)以下幾部分:比賽成績(jī)輸入、比賽成績(jī)輸出、查詢比賽成績(jī)和調(diào)用統(tǒng)計(jì)結(jié)果。 </p><p><b> 2.2數(shù)據(jù)需求</b></p><p> 需要輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次。</p><
6、p><b> 2.3 性能需求</b></p><p> 本程序在運(yùn)行期間,為了避免在運(yùn)行大量數(shù)據(jù)時(shí)不會(huì)出錯(cuò),并且能夠在很短的時(shí)間內(nèi)將運(yùn)行結(jié)果穩(wěn)定輸出,就需要系統(tǒng)達(dá)到安全性能好,可靠性高,穩(wěn)定性強(qiáng),處理數(shù)據(jù)迅速等特點(diǎn)。</p><p><b> 3總體設(shè)計(jì)</b></p><p><b> 3.1系
7、統(tǒng)設(shè)計(jì)方案</b></p><p> 本方案要求準(zhǔn)備結(jié)構(gòu)體數(shù)組、讀寫(xiě)文件。還能把信息直接輸入存儲(chǔ)到文件中,讀取文件中信息,從而得到結(jié)果。</p><p><b> (1) 菜單設(shè)計(jì)</b></p><p> 分為主函數(shù)菜單、比賽成績(jī)輸出菜單、查詢分?jǐn)?shù)統(tǒng)計(jì)結(jié)果菜單、查詢方式子菜單。</p><p> (
8、2) 數(shù)據(jù)保存方式</p><p> 建立文件,數(shù)據(jù)保存在文件中。運(yùn)動(dòng)運(yùn)分?jǐn)?shù)統(tǒng)計(jì)程序</p><p><b> (3) 數(shù)據(jù)類型</b></p><p><b> 采用結(jié)構(gòu)體類型。</b></p><p><b> (4) 存儲(chǔ)結(jié)構(gòu)</b></p><
9、;p> 采用結(jié)構(gòu)體類型數(shù)組存儲(chǔ)結(jié)構(gòu)存儲(chǔ)。</p><p><b> (5) 算法設(shè)計(jì)</b></p><p> 輸入比賽結(jié)果模塊中運(yùn)用了冒泡算法將輸入的數(shù)據(jù)排序。</p><p><b> 3.2功能模塊設(shè)計(jì)</b></p><p> 根據(jù)分析整個(gè)系統(tǒng)主要?jiǎng)澐譃?個(gè)功能模塊,分別執(zhí)行
10、要求中的功能。該系統(tǒng)分為比賽成績(jī)輸入、比賽成績(jī)輸出、查詢比賽成績(jī)和調(diào)用統(tǒng)計(jì)結(jié)果。比賽成績(jī)輸出模塊有四個(gè)子模塊,分別是:按學(xué)校編號(hào)輸出模塊、按學(xué)校總分輸出模塊、安南員總分輸出模塊和按女團(tuán)總分輸出模塊;查詢比賽成績(jī)模塊分為按學(xué)校編號(hào)查詢模塊河岸項(xiàng)目編號(hào)查詢兩個(gè)子模塊。</p><p> 功能模塊圖如圖1所示。 </p><p><b> 圖1功能模塊圖</b>&
11、lt;/p><p><b> 比賽成績(jī)輸入模塊</b></p><p> 比賽成績(jī)輸入模塊分為:創(chuàng)建信息部分,該部分需輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次;算法部分,得到排序結(jié)果。 </p><p><b> 比賽成績(jī)輸出模塊</b></p><p> 將以輸入的數(shù)據(jù)按照輸出比賽菜單
12、的選擇輸出相應(yīng)的數(shù)據(jù)。</p><p><b> 查詢比賽成績(jī)模塊</b></p><p> 按照查詢比賽結(jié)果菜單和其查詢方式子菜單查詢需要的數(shù)據(jù)。</p><p><b> 調(diào)用統(tǒng)計(jì)結(jié)果</b></p><p> 將輸入的各學(xué)校運(yùn)動(dòng)會(huì)成績(jī)排序輸出。</p><p>
13、<b> 4詳細(xì)</b></p><p><b> 設(shè)計(jì)</b></p><p> 4.1 數(shù)據(jù)結(jié)構(gòu)定義</p><p><b> 建立結(jié)構(gòu)體如下:</b></p><p> typedef struct</p><p><b>
14、 { </b></p><p> int itemnum; //項(xiàng)目編號(hào)</p><p> int top; //取名次的數(shù)目</p><p> int range[5]; //名次</p><p> int mark[5]; //分?jǐn)?shù)</p><p> }itemnode; //定義
15、項(xiàng)目結(jié)點(diǎn)的類型</p><p> typedef struct</p><p><b> {</b></p><p> int schoolnum; //學(xué)校編號(hào)</p><p> int score; //學(xué)??偡?lt;/p><p> int mscore; //男團(tuán)體總分
16、</p><p> int wscore; //女團(tuán)體總分</p><p> itemnode c[m+w]; //項(xiàng)目數(shù)組</p><p> }headnode;//定義頭結(jié)點(diǎn)類型</p><p> 4.2比賽成績(jī)輸入模塊</p><p> 比賽成績(jī)輸入模塊需要輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以
17、及哪些名次。算法模塊流程圖如圖2所示.</p><p> 圖2比賽成績(jī)輸入模塊流程圖 </p><p> 此模塊定義變量i,j,k,s;先初始化儲(chǔ)存分?jǐn)?shù)的數(shù)組各元素,for循環(huán)實(shí)現(xiàn)各學(xué)校信息的輸入,包括學(xué)校編號(hào)、項(xiàng)目編號(hào)、取前3名or前5名、獲得幾個(gè)名次,使用switch語(yǔ)句實(shí)現(xiàn)對(duì)輸入的各個(gè)名次賦予對(duì)應(yīng)的分?jǐn)?shù)。</p><p>
18、;<b> 4.3比賽成績(jī)輸出</b></p><p> 比賽成績(jī)輸出模塊實(shí)現(xiàn)按要求輸出相應(yīng)的數(shù)據(jù)。有以下輸出選項(xiàng):按學(xué)校編號(hào)輸出、按學(xué)??偡州敵?、按男團(tuán)總分輸出、按女團(tuán)總分輸出。</p><p> 圖3比賽成績(jī)輸出模塊流程圖</p><p> 模塊定義了int choice,i,j,k;int remember[n];int sign
19、變量,do…while包括switch語(yǔ)句,選擇輸出按學(xué)校編號(hào)輸出、按學(xué)校總分輸出、按男團(tuán)總分輸出、按女團(tuán)總分輸出相應(yīng)的數(shù)據(jù)。for循環(huán)實(shí)現(xiàn)輸出各個(gè)方式輸出的每個(gè)數(shù)據(jù)。</p><p> 4.4查詢比賽成績(jī)模塊</p><p> 查詢比賽成績(jī)模塊包括:按學(xué)校編號(hào)查詢,按項(xiàng)目編號(hào)查詢。其算法原理相同,例舉按學(xué)校項(xiàng)目編號(hào)查詢模塊。如圖4所示。</p><p> 圖
20、4按項(xiàng)目編號(hào)查詢模塊流程圖</p><p> 此模塊定義了int choice; int i,j,k,s; switch(choice)實(shí)現(xiàn)查詢的兩種方式的選擇,當(dāng)i>n時(shí)輸出錯(cuò)誤:這個(gè)學(xué)校沒(méi)有參加此次運(yùn)動(dòng)會(huì)! 否則,輸入項(xiàng)目編號(hào),如果j>m+w||j==0,輸出此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)項(xiàng)目。否則,使用for循環(huán)輸出相關(guān)數(shù)據(jù),從而實(shí)現(xiàn)查詢功能。</p><p> 4.5調(diào)用統(tǒng)
21、計(jì)結(jié)果模塊</p><p> 調(diào)用統(tǒng)計(jì)模塊從文件中讀取數(shù)據(jù)輸出,流程圖如圖5所示。</p><p> 圖5調(diào)用統(tǒng)計(jì)結(jié)果模塊流程圖</p><p> 此模塊定義了FILE *report; int i,j,k,s; for循環(huán)中套用for循環(huán),for循環(huán)分別對(duì)學(xué)校編號(hào)、學(xué)??偡?、男團(tuán)總分、女團(tuán)總分進(jìn)行輸出,在使用for循環(huán)對(duì)各學(xué)校的項(xiàng)目編號(hào)、所取名次數(shù)量、各個(gè)名
22、次輸出,實(shí)現(xiàn)對(duì)文件中的數(shù)據(jù)的調(diào)用。</p><p><b> 5調(diào)試與測(cè)試</b></p><p><b> 5.1 調(diào)試</b></p><p> 調(diào)試過(guò)程主要是運(yùn)行編制好的程序,然后遇到錯(cuò)誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問(wèn)題所在。本系統(tǒng)調(diào)試過(guò)程中遇到的主要問(wèn)題、原因和解決方法如下面介紹。</p>&l
23、t;p> 調(diào)試過(guò)程中出現(xiàn)的問(wèn)題和處理方式:</p><p><b> 程序出現(xiàn)語(yǔ)法錯(cuò)誤</b></p><p> 發(fā)現(xiàn)是輸入名次信息的地方忘帶地址符&。 添加取地址符。</p><p> printf("*****名次:");</p><p> scanf("%d&q
24、uot;,&h[i].c[j].range[s]);</p><p> (2)在輸出模塊不能將全部的學(xué)校信息輸出,屬于算法編寫(xiě)錯(cuò)誤,正確的程序應(yīng)該為:if(h[remember[i]].mscore<h[j].mscore)</p><p> k=remember[i];remember[i]=remember[j];remember[j]=k;</p>&
25、lt;p><b> 5.2 測(cè)試</b></p><p> 軟件測(cè)試是軟件生存期中的一個(gè)重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來(lái)看,普遍希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,所以軟件測(cè)試應(yīng)該是“為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程”?;蛘哒f(shuō),軟件測(cè)試應(yīng)該根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行
26、程序,以發(fā)現(xiàn)程序錯(cuò)誤或缺陷。過(guò)度測(cè)試則會(huì)浪費(fèi)許多寶貴的資源。到測(cè)試后期,即使找到了錯(cuò)誤,然而付出了過(guò)高的代價(jià)。</p><p><b> 測(cè)試數(shù)據(jù)過(guò)程如下。</b></p><p> (1) 輸入功能測(cè)試</p><p> 輸入數(shù)據(jù)1:1 1 1 3 3 1 2 3</p><p><b> 2 3 2
27、 2 3</b></p><p> 2 1 3 2 1 3</p><p> 2 3 3 1 2 3</p><p><b> 預(yù)期結(jié)果:</b></p><p><b> 學(xué)校編號(hào):1</b></p><p><b> 學(xué)校總分:15<
28、/b></p><p><b> 男團(tuán)總分:10</b></p><p><b> 女團(tuán)總分:5</b></p><p><b> 項(xiàng)目編號(hào):1</b></p><p><b> 所取名次數(shù):3</b></p><p>
29、;<b> 名次:1</b></p><p><b> 名次:2</b></p><p><b> 名次:3</b></p><p><b> 分?jǐn)?shù):5</b></p><p><b> 分?jǐn)?shù):3</b></p>
30、<p><b> 分?jǐn)?shù):2</b></p><p><b> 項(xiàng)目編號(hào):2</b></p><p><b> 所取名次數(shù):3</b></p><p><b> 名次:2</b></p><p><b> 名次:3</
31、b></p><p><b> 分?jǐn)?shù):3</b></p><p><b> 分?jǐn)?shù):2</b></p><p><b> 學(xué)校編號(hào):2</b></p><p><b> 學(xué)??偡郑?7</b></p><p><b
32、> 男團(tuán)總分:7</b></p><p><b> 女團(tuán)總分:10</b></p><p><b> 項(xiàng)目編號(hào):1</b></p><p><b> 所取名次數(shù):3</b></p><p><b> 名次:1</b></p
33、><p><b> 名次:3</b></p><p><b> 分?jǐn)?shù):5</b></p><p><b> 分?jǐn)?shù):2</b></p><p><b> 項(xiàng)目編號(hào):2</b></p><p><b> 所取名次數(shù):3&
34、lt;/b></p><p><b> 名次:1</b></p><p><b> 名次:2</b></p><p><b> 名次:3</b></p><p><b> 分?jǐn)?shù):5</b></p><p><b&
35、gt; 分?jǐn)?shù):3</b></p><p><b> 分?jǐn)?shù):2</b></p><p><b> 運(yùn)行結(jié)果:</b></p><p><b> 學(xué)校編號(hào):1</b></p><p><b> 學(xué)??偡郑?5</b></p>
36、<p><b> 男團(tuán)總分:10</b></p><p><b> 女團(tuán)總分:5</b></p><p><b> 項(xiàng)目編號(hào):1</b></p><p><b> 所取名次數(shù):3</b></p><p><b> 名次:1&
37、lt;/b></p><p><b> 名次:2</b></p><p><b> 名次:3</b></p><p><b> 分?jǐn)?shù):5</b></p><p><b> 分?jǐn)?shù):3</b></p><p><b&
38、gt; 分?jǐn)?shù):2</b></p><p><b> 項(xiàng)目編號(hào):2</b></p><p><b> 所取名次數(shù):3</b></p><p><b> 名次:2</b></p><p><b> 名次:3</b></p>
39、<p><b> 分?jǐn)?shù):3</b></p><p><b> 分?jǐn)?shù):2</b></p><p><b> 學(xué)校編號(hào):2</b></p><p><b> 學(xué)??偡郑?7</b></p><p><b> 男團(tuán)總分:7</
40、b></p><p><b> 女團(tuán)總分:10</b></p><p><b> 項(xiàng)目編號(hào):1</b></p><p><b> 所取名次數(shù):3</b></p><p><b> 名次:1</b></p><p>&l
41、t;b> 名次:3</b></p><p><b> 分?jǐn)?shù):5</b></p><p><b> 分?jǐn)?shù):2</b></p><p><b> 項(xiàng)目編號(hào):2</b></p><p><b> 所取名次數(shù):3</b></p&g
42、t;<p><b> 名次:1</b></p><p><b> 名次:2</b></p><p><b> 名次:3</b></p><p><b> 分?jǐn)?shù):5</b></p><p><b> 分?jǐn)?shù):3</b&g
43、t;</p><p><b> 分?jǐn)?shù):2</b></p><p> 按照要求輸入的數(shù)據(jù)能夠顯示正確的結(jié)果。</p><p><b> 6結(jié)論</b></p><p> 課程設(shè)計(jì)順利完成,任務(wù)書(shū)中所提出的要求全部實(shí)現(xiàn)不過(guò)這個(gè)程序還有些不夠完善,例如:輸入學(xué)校各舒適與現(xiàn)在宏定義中確定的,不能改變
44、,有待進(jìn)一步完善。</p><p><b> 結(jié)束語(yǔ)</b></p><p> 因?yàn)樵诶碚搶W(xué)習(xí)中沒(méi)有好好的掌握,現(xiàn)在要獨(dú)立完成一個(gè)較復(fù)雜的程序編寫(xiě),確實(shí)有困難。</p><p> 今后我必需扎實(shí)基礎(chǔ)理論、認(rèn)真思考,而且要踐行我的承諾,一步一個(gè)腳印的走下去,才可以達(dá)到我們預(yù)期的彼岸!仔細(xì)回顧數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)過(guò)程,發(fā)現(xiàn)其實(shí)他也并不是想象中的那么
45、難。只要肯去攀登!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第三版).清華大學(xué)出版社,2007</p><p> [2] 姜靈芝,余健.C語(yǔ)言課程設(shè)計(jì)案例精編.清華大學(xué)出版社,2008</p><p> [3] 吳偉民,嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社,200
46、8</p><p> [4] 李廉治,姜文清,郭福順.數(shù)據(jù)結(jié)構(gòu).大連理工大學(xué)出版社,1989年</p><p> [5] 網(wǎng)上相關(guān)資料</p><p><b> 附錄1-用戶手冊(cè)</b></p><p> (1)首先運(yùn)行文件運(yùn)動(dòng)會(huì)統(tǒng)計(jì)分?jǐn)?shù)7.exe:如圖6所示:</p><p> 圖6運(yùn)
47、行運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)界面</p><p><b> (2) 輸入信息:</b></p><p> 程序首先賦初值,定義學(xué)校的個(gè)數(shù)為2,男生項(xiàng)目為1,女生項(xiàng)目為1。輸入1得到進(jìn)入輸入信息模塊。如圖7所示:</p><p> 圖7輸入學(xué)校運(yùn)動(dòng)會(huì)分?jǐn)?shù)界面</p><p> 按回車(chē)鍵可得到學(xué)校的得分信息和按編號(hào)獲得的所以信息
48、。</p><p><b> (3)輸出信息</b></p><p> 輸入2進(jìn)入輸出信息模塊,該模塊分四項(xiàng): 如圖8所示:</p><p> 圖8輸出運(yùn)動(dòng)會(huì)分?jǐn)?shù)界面</p><p> 按學(xué)校編號(hào)輸出: 如圖9所示: </p><p> 圖9按學(xué)校編號(hào)輸出分
49、數(shù)界面</p><p> 按學(xué)??偡州敵觯喝鐖D10所示:</p><p> 圖9按學(xué)校總分輸出分?jǐn)?shù)界面</p><p> 按男團(tuán)總分輸出:如圖11所示:</p><p> 圖11按學(xué)校編號(hào)男團(tuán)總分輸出分?jǐn)?shù)界面</p><p> 按女團(tuán)總分輸出:如圖12所示:</p><p> 圖12
50、按女團(tuán)總分輸出分?jǐn)?shù)界面</p><p> 輸入2返回輸出信息模塊,輸入0返回主菜單。</p><p> (4)查詢信息:如圖13所示:</p><p> 輸入3進(jìn)入信息查詢模塊: </p><p><b> 圖13查詢界面</b></p><p> 按學(xué)校編號(hào)查詢:
51、如圖14所示:</p><p> 圖14按學(xué)校編號(hào)查詢界面</p><p> 按項(xiàng)目編號(hào)查詢:如圖15所示:</p><p> 圖15按項(xiàng)目編號(hào)查詢界面</p><p> 輸入錯(cuò)誤信息時(shí)給出提示:如圖16、17所示:</p><p><b> 圖16錯(cuò)誤提示界面</b></p>
52、;<p><b> 圖17錯(cuò)誤提示界面</b></p><p> 輸入2繼續(xù)查詢,輸入0返回主菜單</p><p><b> (5) 調(diào)用信息</b></p><p> 輸入4時(shí)顯示出所有的信息:如圖18、19所示:</p><p><b> 圖18調(diào)用信息界面&l
53、t;/b></p><p><b> 圖19調(diào)用信息界面</b></p><p><b> 附錄2-源程序</b></p><p> #include<stdio.h></p><p> #include<math.h></p><p>
54、 #include <conio.h></p><p> #include <process.h></p><p> #define n 2//學(xué)校數(shù)目 </p><p> #define m 1//男子項(xiàng)目數(shù)目 </p><p> #define w 1//女子項(xiàng)目數(shù)目</p><p&
55、gt; #define null 0</p><p> typedef struct</p><p><b> { </b></p><p> int itemnum; //項(xiàng)目編號(hào)</p><p> int top; //取名次的數(shù)目</p><p> int range[5]
56、; //名次</p><p> int mark[5]; //分?jǐn)?shù)</p><p> }itemnode; //定義項(xiàng)目結(jié)點(diǎn)的類型</p><p> typedef struct</p><p><b> {</b></p><p> int schoolnum; //學(xué)校編號(hào)
57、</p><p> int score; //學(xué)??偡?lt;/p><p> int mscore; //男團(tuán)體總分</p><p> int wscore; //女團(tuán)體總分</p><p> itemnode c[m+w]; //項(xiàng)目數(shù)組</p><p> }headnode;//定義頭結(jié)點(diǎn)類
58、型</p><p> headnode h[n];//定義一個(gè)頭結(jié)點(diǎn)數(shù)組</p><p> void inputinformation() //輸入信息,建立系統(tǒng)</p><p><b> {</b></p><p> int i,j,k,s;</p><p> for(i=0;i&l
59、t;n;i++)</p><p><b> { </b></p><p> h[i].score=0;</p><p> h[i].mscore=0;</p><p> h[i].wscore=0;</p><p> }
60、 //初始化頭結(jié)點(diǎn)</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p> printf("*****學(xué)校編號(hào):");</p><p> scanf("%d",&h[i].schoolnu
61、m); //輸入頭結(jié)點(diǎn)信息</p><p> for(j=0;j<m+w;j++)</p><p><b> { </b></p><p> printf("*****項(xiàng)目編號(hào):");</p><p> scanf("%d",&h
62、[i].c[j].itemnum);</p><p> printf("*****取前3名or前5名:");</p><p> scanf("%d",&h[i].c[j].top);</p><p> printf("*****獲得幾個(gè)名次:");</p><p>
63、scanf("%d",&k); //輸入項(xiàng)目信息</p><p> for(s=0;s<5;s++)</p><p> h[i].c[j].range[s]=0, h[i].c[j].mark[s]=0; //初始化排名和分?jǐn)?shù)</p><p> for(s=0;s<k;s++)
64、</p><p><b> { </b></p><p> printf("*****名次:");</p><p> scanf("%d",&h[i].c[j].range[s]); //輸入所獲名次信息</p><p> if(h[i].c[j
65、].top==3)</p><p> switch(h[i].c[j].range[s])</p><p><b> {</b></p><p> case 0: h[i].c[j].mark[s]=0; break;</p><p> case 1: h[i].c[j].mark[s]=5; break;<
66、;/p><p> case 2: h[i].c[j].mark[s]=3; break;</p><p> case 3: h[i].c[j].mark[s]=2; break;</p><p><b> }</b></p><p><b> else</b></p><p&
67、gt; switch(h[i].c[j].range[s])</p><p><b> {</b></p><p> case 0: h[i].c[j].mark[s]=0; break;</p><p> case 1: h[i].c[j].mark[s]=7; break;</p><p> case 2:
68、 h[i].c[j].mark[s]=5; break;</p><p> case 3: h[i].c[j].mark[s]=3; break;</p><p> case 4: h[i].c[j].mark[s]=2; break;</p><p> case 5: h[i].c[j].mark[s]=1; break;</p><p&
69、gt;<b> }</b></p><p> h[i].score=h[i].score+h[i].c[j].mark[s];</p><p> //按取前三名還是取前五名分別記分</p><p> if(j<=m-1)</p><p> h[i].mscore=h[i].mscore+h[i].c[j]
70、.mark[s];</p><p> //是男子項(xiàng)目則記到男子分?jǐn)?shù)里面去</p><p><b> else</b></p><p> h[i].wscore=h[i].wscore+h[i].c[j].mark[s];</p><p> //是女子項(xiàng)目則記到女子項(xiàng)目里面去</p><p>
71、;<b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
72、 void output() //輸出函數(shù)</p><p><b> { </b></p><p> int choice,i,j,k;</p><p> int remember[n];</p><p><b> int sign;</b></p><p>
73、<b> do</b></p><p><b> {</b></p><p> printf("*******************1.按學(xué)校編號(hào)輸出.*******************\n");</p><p> printf("*******************2.按學(xué)校
74、總分輸出.*******************\n");</p><p> printf("*******************3.按男團(tuán)總分輸出.*******************\n");</p><p> printf("*******************4.按女團(tuán)總分輸出.*******************\n"
75、);</p><p> printf("\n\n******************* 請(qǐng)選擇編號(hào)*************************\n\n:");</p><p> scanf("%d",&choice);</p><p> switch(choice)</p><p>
76、<b> { </b></p><p><b> case 1:</b></p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p> printf("\n\n*****學(xué)校編號(hào):%d\n",h
77、[i].schoolnum);</p><p> printf("*****學(xué)??偡?%d\n" ,h[i].score);</p><p> printf("*****男團(tuán)總分:%d\n",h[i].mscore);</p><p> printf("*****女團(tuán)總分: %d\n\n\n",h[i
78、].wscore);</p><p> } //按編號(hào)順序輸出</p><p><b> break;</b></p><p> case 2: </p><p> for(i=0;i<n;i++)</p>
79、<p> remember[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p> for(j=i+1;j<n;j++)</p><p> if(h[remember[i]].score<h[j].score)<
80、/p><p> k=remember[i];</p><p> remember[i]=remember[j],remember[j]=k;</p><p> } // 用冒泡排序方法,用輔助數(shù)組記住頭結(jié)點(diǎn)下標(biāo)</p><p> for(i=0;i<n;i++)</p><p>&l
81、t;b> {</b></p><p> Printf(“\n\n*****學(xué)校編號(hào):%d\n”,h[remember[i]].schoolnum); </p><p> printf("*****學(xué)校總分:%d\n" ,h[remember[i]].score);
82、</p><p> printf("*****男團(tuán)總分:%d\n",h[remember[i]].mscore);</p><p> printf("*****女團(tuán)總分: %d\n\n\n",h[remember[i]].wscore);</p><p> //按所記下標(biāo)順序輸出</p><p>
83、 } //按學(xué)??偡州敵?lt;/p><p> break; </p><p> case 3: </p><p> for(i=0;i<n;i++)</p><p> remember[i]=i;</p><
84、;p> for(i=0;i<n;i++)</p><p><b> { </b></p><p> for(j=i+1;j<n;j++)</p><p> if(h[remember[i]].mscore<h[j].mscore)</p><p> k=remember[i];remem
85、ber[i]=remember[j];remember[j]=k;</p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> printf("\n\n*****學(xué)校編號(hào):%d\n"
86、;,h[remember[i]].schoolnum);</p><p> printf("*****學(xué)??偡?%d\n" ,h[remember[i]].score);</p><p> printf("*****男團(tuán)總分:%d\n",h[remember[i]].mscore);</p><p> printf(&q
87、uot;*****女團(tuán)總分: %d\n\n\n",h[remember[i]].wscore);</p><p> } //按男團(tuán)總分輸出</p><p><b> break;</b></p><p> case 4: </p>
88、<p> for(i=0;i<n;i++)</p><p> remember[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p> for(j=i+1;j<n;j++)</p><p>
89、 if(h[remember[i]].wscore<h[j].wscore)</p><p> k=remember[i];</p><p> remember[i]=remember[j];remember[j]=k;</p><p><b> }</b></p><p> for(i=0;i<n;
90、i++)</p><p><b> {</b></p><p> printf("\n\n*****學(xué)校編號(hào):%d\n",h[remember[i]].schoolnum);</p><p> printf("*****學(xué)??偡?%d\n" ,h[remember[i]].score);</p
91、><p> printf("*****男團(tuán)總分:%d\n",h[remember[i]].mscore);</p><p> printf("*****女團(tuán)總分: %d\n\n\n",h[remember[i]].wscore);</p><p><b> }</b></p><p&
92、gt; break; //按女團(tuán)總分輸出</p><p><b> }</b></p><p> printf("請(qǐng)選擇 2 繼續(xù),0 跳出\n");</p><p> scanf("%d",&sign);</p&g
93、t;<p> }while(sign==2); //循環(huán)執(zhí)行輸出語(yǔ)句</p><p><b> }</b></p><p> void inquiry() //查詢函數(shù)</p><p&g
94、t;<b> {</b></p><p> int choice;</p><p> int i,j,k,s;</p><p> printf("\n*****1:按學(xué)校編號(hào)查詢\n");</p><p> printf("\n*****2:按項(xiàng)目編號(hào)查詢\n");&
95、lt;/p><p> printf("\n\n*****請(qǐng)選擇查詢方式:"); //提供兩種查詢方式</p><p> scanf("%d",&choice);</p><p> switch(choice)</p><p><b> { </
96、b></p><p><b> case 1:</b></p><p><b> do</b></p><p><b> { </b></p><p> printf("要查詢的學(xué)校編號(hào):");</p><p> sc
97、anf("%d",&i);</p><p><b> if(i>n)</b></p><p> printf("錯(cuò)誤:這個(gè)學(xué)校沒(méi)有參加此次運(yùn)動(dòng)會(huì)!\n\n\n");</p><p><b> else</b></p><p><b&g
98、t; {</b></p><p> printf("要查詢的項(xiàng)目編號(hào):");</p><p> scanf("%d",&j);</p><p> if(j>m+w||j==0)</p><p> printf("此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)項(xiàng)目\n\n\n"
99、);</p><p> //學(xué)校編號(hào)超出范圍,則輸出警告</p><p><b> else</b></p><p><b> { </b></p><p> printf("這個(gè)項(xiàng)目取前 %d名,該學(xué)校的成績(jī)?nèi)缦?\n", h[0].c[j-1].top);</
100、p><p> for(k=0;k<5;k++)</p><p> if(h[i-1].c[j-1].range[k]!=0)</p><p> printf("名次:%d\n",h[i-1].c[j-1].range[k]);</p><p> //輸出要查詢學(xué)校項(xiàng)目的成績(jī)</p><p>
101、;<b> }</b></p><p><b> }</b></p><p> printf("請(qǐng)選擇 2 繼續(xù) , 0 跳出\n");</p><p> scanf("%d",&s);</p><p> printf("\n\n\
102、n");</p><p> }while(s==2); //循環(huán)執(zhí)行輸出語(yǔ)句</p><p> break; </p><p><b> case 2:</b></p><p><b> do</b>
103、;</p><p><b> { </b></p><p> printf("要查詢的項(xiàng)目編號(hào):");</p><p> scanf("%d",&s);</p><p> if(s>m+w||s==0)</p><p> printf
104、("此次運(yùn)動(dòng)會(huì)不包括這個(gè)項(xiàng)目.\n\n\n");</p><p> //項(xiàng)目編號(hào)超出范圍則輸出警告</p><p><b> else</b></p><p><b> {</b></p><p> printf("該項(xiàng)目取前 %d名,取得名次的學(xué)校\n&quo
105、t;,h[0].c[s-1].top);</p><p> for(i=0; i<n;i++)</p><p> for(j=0;j<5;j++)</p><p> if(h[i].c[s-1].range[j]!=0)</p><p> printf("學(xué)校編號(hào):%d,名次:%d\n",h[i].sc
106、hoolnum,</p><p> h[i].c[s-1].range[j]);</p><p> } //輸出該項(xiàng)目取得名次學(xué)校的成績(jī)</p><p> printf("\n\n\n繼續(xù) 2,跳出 0\n");</p><p> scanf("%d&quo
107、t;,&i);</p><p> printf("\n\n\n");</p><p> }while(i==2);</p><p><b> break;</b></p><p><b> }</b></p><p><b>
108、}</b></p><p> void writedata() //把數(shù)據(jù)存儲(chǔ)在文件中</p><p><b> { </b></p><p> FILE *report;</p><p><b> int i; </
109、b></p><p> if((report=fopen("sportsdata.txt","w"))==null)</p><p><b> {</b></p><p> printf("不能打開(kāi)文件\n");</p><p><b>
110、 exit(1);</b></p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p> fwrite(&h[i],sizeof(headnode),1,report);</p><p> fclose(report);</p>
111、<p> } //按頭結(jié)點(diǎn)塊寫(xiě)入 </p><p> void readdata() //讀出文件中數(shù)據(jù)的函數(shù)</p><p><b> { </b></p><p&
112、gt; FILE *report;</p><p> int i,j,k,s;</p><p> if((report=fopen("sportsdata.txt","r"))==null)</p><p><b> {</b></p><p> printf("
113、;file can not be opened\n");</p><p><b> exit(1);</b></p><p><b> }</b></p><p> for(i=0;i<n;i++)</p><p><b> { </b></p
114、><p> printf("******學(xué)校編號(hào):");</p><p> fread(&k,sizeof(int),1,report);</p><p> printf("%d\n",k);</p><p> printf("******學(xué)校總分:");</p&g
115、t;<p> fread(&k,sizeof(int),1,report);</p><p> printf("%d\n",k);</p><p> printf("******男團(tuán)總分:");</p><p> fread(&k,sizeof(int),1,report);</p&
116、gt;<p> printf("%d\n",k);</p><p> printf("******女團(tuán)總分:");</p><p> fread(&k,sizeof(int),1,report);</p><p> printf("%d\n",k);</p>&l
117、t;p> printf("\n\n\n");</p><p><b> getch();</b></p><p> for(j=0;j<m+w;j++)</p><p><b> {</b></p><p> printf("******項(xiàng)目編號(hào):
118、");</p><p> fread(&k,sizeof(int),1,report);</p><p> printf("%d\n",k);</p><p> printf("******所取名次數(shù)量:");</p><p> fread(&k,sizeof(int)
119、,1,report);</p><p> printf("%d\n",k);</p><p> for(s=0;s<5;s++)</p><p><b> { </b></p><p> fread(&k,sizeof(int),1,report);</p><
120、;p><b> if(k!=0)</b></p><p> printf("******名次:"),</p><p> printf("%d\n",k);</p><p><b> }</b></p><p> for(s=0;s<5;s
121、++)</p><p><b> { </b></p><p> fread(&k,sizeof(int),1,report);</p><p> if(k!=0) printf("******分?jǐn)?shù):"),</p><p> printf("%d\n",k);<
122、;/p><p><b> }</b></p><p><b> }</b></p><p> printf("\n\n\n");</p><p><b> getch();</b></p><p><b> } <
123、;/b></p><p> fclose(report); //關(guān)閉文件</p><p> } //按照讀一個(gè)數(shù)據(jù)就輸出一個(gè)數(shù)據(jù)的方式顯示數(shù)據(jù)內(nèi)容</p><p> void main()</p><p><b
124、> { </b></p><p> int choice;</p><p> printf("======================歡迎使用======================\n"); printf("\n\n*****************運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)********************\n"
125、;);</p><p> printf("\n\n********************1.輸入信息*************************\n");</p><p> printf("********************2.輸出信息*************************\n");</p><p&g
126、t; printf("********************3.查詢信息*************************\n");</p><p> printf("********************4.調(diào)用信息*************************\n");</p><p> printf("*********
127、***********5.退出系統(tǒng)*************************\n\n\n");</p><p> printf("================================================\n\n");</p><p> printf("********請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào):\n\n");
128、</p><p> scanf("%d",&choice);</p><p> switch(choice)</p><p><b> { </b></p><p><b> case 1: </b></p><p> inputinfo
129、rmation();writedata();readdata();main();</p><p><b> case 2: </b></p><p> output();main();</p><p><b> case 3: </b></p><p> inquiry();main();&
130、lt;/p><p><b> case 4: </b></p><p> readdata();main();</p><p><b> case 5: </b></p><p><b> exit(0);</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)(c語(yǔ)言版)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)報(bào)告
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(含源代碼)
評(píng)論
0/150
提交評(píng)論