

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