數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

運(yùn)動會分?jǐn)?shù)統(tǒng)計班級:軟件1013班姓名:楊虹學(xué)號:20102033隨著社會的進(jìn)步,體育事業(yè)發(fā)展,為了提高運(yùn)動會成績統(tǒng)計準(zhǔn)確,減少設(shè)計者們的工作量,開發(fā)了本系統(tǒng)。根據(jù)課程設(shè)計任務(wù)書要求,本系統(tǒng)開發(fā)主要完成以下功能和性能。任務(wù):參加運(yùn)動會有n個學(xué)校,學(xué)校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)功能要求:.可以輸入各個項目的前三名或前五名的成績;.能統(tǒng)計各學(xué)??偡?;.可以按學(xué)校編號、學(xué)??偡?、男女團(tuán)體總分排序輸出;.可以按學(xué)校編號查詢學(xué)校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。規(guī)定:輸入數(shù)據(jù)形式和范圍:20以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運(yùn)動項目的名稱)輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求運(yùn)動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。2需求分析2.1功能需求本系統(tǒng)主要是運(yùn)動會分?jǐn)?shù)統(tǒng)計方案設(shè)計。運(yùn)動會分?jǐn)?shù)統(tǒng)計方案適合采用結(jié)構(gòu)體數(shù)組,為了實(shí)現(xiàn)系統(tǒng)功能,主要應(yīng)實(shí)現(xiàn)以下幾部分:比賽成績輸入、比賽成績輸出、查詢比賽成績和調(diào)用統(tǒng)計結(jié)果。2.2數(shù)據(jù)需求需要輸入學(xué)校編號,項目編號,取得的名次,以及哪些名次。2.3性能需求本程序在運(yùn)行期間,為了避免在運(yùn)行大量數(shù)據(jù)時不會出錯,并且能夠在很短的時間內(nèi)將運(yùn)行結(jié)果穩(wěn)定輸出,就需要系統(tǒng)達(dá)到安全性能好,可靠性高,穩(wěn)定性強(qiáng),處理數(shù)據(jù)迅速等特點(diǎn)。3總體設(shè)計3.1系統(tǒng)設(shè)計方案本方案要求準(zhǔn)備結(jié)構(gòu)體數(shù)組、讀寫文件。還能把信息直接輸入存儲到文件中,讀取文件中信息,從而得到結(jié)果。(1)菜單設(shè)計分為主函數(shù)菜單、比賽成績輸出菜單、查詢分?jǐn)?shù)統(tǒng)計結(jié)果菜單、查詢方式子菜單。數(shù)據(jù)保存方式建立文件,數(shù)據(jù)保存在文件中。運(yùn)動運(yùn)分?jǐn)?shù)統(tǒng)計程序數(shù)據(jù)類型采用結(jié)構(gòu)體類型。存儲結(jié)構(gòu)采用結(jié)構(gòu)體類型數(shù)組存儲結(jié)構(gòu)存儲。算法設(shè)計輸入比賽結(jié)果模塊中運(yùn)用了冒泡算法將輸入的數(shù)據(jù)排序。3.2功能模塊設(shè)計根據(jù)分析整個系統(tǒng)主要劃分為4個功能模塊,分別執(zhí)行要求中的功能。該系統(tǒng)分為比賽成績輸入、比賽成績輸出、查詢比賽成績和調(diào)用統(tǒng)計結(jié)果。比賽成績輸出模塊有四個子模塊,分別是:按學(xué)校編號輸出模塊、按學(xué)??偡州敵瞿K、安南員總分輸出模塊和按女團(tuán)總分輸出模塊;查詢比賽成績模塊分為按學(xué)校編號查詢模塊河岸項目編號查詢兩個子模塊。功能模塊圖如圖1所示。運(yùn)動運(yùn)分?jǐn)?shù)統(tǒng)計程序按項目編號查詢模塊按學(xué)校編號查詢模塊按女團(tuán)總分輸出模塊按男團(tuán)總分輸出模塊按學(xué)校總分輸出模塊按學(xué)校編號輸出模塊按項目編號查詢模塊按學(xué)校編號查詢模塊按女團(tuán)總分輸出模塊按男團(tuán)總分輸出模塊按學(xué)??偡州敵瞿K按學(xué)校編號輸出模塊圖1功能模塊圖比賽成績輸入模塊比賽成績輸入模塊分為:創(chuàng)建信息部分,該部分需輸入學(xué)校編號,項目編號,取得的名次,以及哪些名次;算法部分,得到排序結(jié)果。比賽成績輸出模塊將以輸入的數(shù)據(jù)按照輸出比賽菜單的選擇輸出相應(yīng)的數(shù)據(jù)。查詢比賽成績模塊按照查詢比賽結(jié)果菜單和其查詢方式子菜單查詢需要的數(shù)據(jù)。調(diào)用統(tǒng)計結(jié)果將輸入的各學(xué)校運(yùn)動會成績排序輸出。4詳細(xì)設(shè)計4.1數(shù)據(jù)結(jié)構(gòu)定義建立結(jié)構(gòu)體如下:typedefstruct{intitemnum;//項目編號inttop;〃取名次的數(shù)目intrange[5];//名次intmark[5];〃分?jǐn)?shù)}itemnode;〃定義項目結(jié)點(diǎn)的類型typedefstruct{intschoolnum;〃學(xué)校編號intscore;〃學(xué)??偡謎ntmscore;〃男團(tuán)體總分intwscore;〃女團(tuán)體總分itemnodec[m+w];〃項目數(shù)組}headnode;//定義頭結(jié)點(diǎn)類型4.2比賽成績輸入模塊比賽成績輸入模塊需要輸入學(xué)校編號,項目編號,取得的名次,以及哪些名次。算法模塊流程圖如圖2所示.學(xué)校編號偵出ihM^學(xué)校編號偵出ihM^蟲結(jié)束圖2比賽成績輸入模塊流程圖信息的輸入,包括學(xué)校編號、項目編號、取前3名or前5名、獲得幾個名次,使用switch語句實(shí)現(xiàn)對輸入的各個名次賦予對應(yīng)的分?jǐn)?shù)。4.3比賽成績輸出比賽成績輸出模塊實(shí)現(xiàn)按要求輸出相應(yīng)的數(shù)據(jù)。有以下輸出選項:按學(xué)校編號輸出、按學(xué)??偡州敵?、按男團(tuán)總分輸出、按女團(tuán)總分輸出。

intchoice,i,j,k;".case1:Vi±+scanf("%d",&choice);printf("\n\n\n繼續(xù)2,跳出o\n輸入學(xué)校乙七口編號*h[remember[i-n-、]].intchoice,i,j,k;".case1:Vi±+scanf("%d",&choice);printf("\n\n\n繼續(xù)2,跳出o\n輸入學(xué)校乙七口編號*h[remember[i-n-、]].wscore<h[j/pwscore/k=remember[i];remember[i]=remember[j],rememberj=k~/h[remember[i]].mscore<h[jT4個菜單欄選項i<nremember[i]=i;i<n^^」.h[remember[i]].Score<h[j].score"j<n_.-Y,k=remember[i];r

emember[i]=re

member[j];remeYk=remember[i];remember[i]=remem

ber[j];remember[j]=kT;scanf("%d模塊定義了intchoice,i,j,k;intremember[n];intsign變量,do^while包括switch語句,選擇輸出按學(xué)校編號輸出、按學(xué)??偡州敵觥茨袌F(tuán)總分輸出、按女團(tuán)總分輸出相應(yīng)的數(shù)據(jù)。for循環(huán)實(shí)現(xiàn)輸出各個方式輸出的每個數(shù)據(jù)。4.4查詢比賽成績模塊查詢比賽成績模塊包括:按學(xué)校編號查詢,按項目編號查詢。其算法原理相同,例舉按學(xué)校項目編號查詢模塊。如圖4所示。printf("要查詢的學(xué)校編號:");;Tscanf("%d",&i);錯誤:這個學(xué)校沒有參加N要查詢的項目編號N運(yùn)動會無這個項目printf("要查詢的學(xué)校編號:");;Tscanf("%d",&i);錯誤:這個學(xué)校沒有參加N要查詢的項目編號N運(yùn)動會無這個項目取前幾名NN跳出scanf("%d此模塊定義了intchoice;inti,j,k,s;switch(choice)實(shí)現(xiàn)查詢的兩種方式的選擇,當(dāng)i>n時輸出錯誤:這個學(xué)校沒有參加此次運(yùn)動會!否則,輸入項目編號,如果j>m+wlj=0,輸出此次運(yùn)動會沒有這個項目。否則,使用for循環(huán)輸出相關(guān)數(shù)據(jù),從而實(shí)現(xiàn)查詢功能。4.5調(diào)用統(tǒng)計結(jié)果模塊調(diào)用統(tǒng)計模塊從文件中讀取數(shù)據(jù)輸出,流程圖如圖5所示。N'■-(report=fopen("sportsdata.txt","r"))==nullfread(&k,sizeof(pnntf("校編號fread(&k,sizeof(~int),1,repo呻printf("%d\n",k);printf(??偡帧宽椖烤巉read(&k,sizeof(int),1,repor^printf("%d所取名次

數(shù)量Iint),1,repor^fread(&k,sizeof(int),1,report);fread(&k,sizeof(int),1,report);getch(*fclose(repor^c。結(jié)束filecan

notbe

openedexit(圖5調(diào)用統(tǒng)計結(jié)果模塊流程圖此模塊定義了FILE*report;inti,j,k,s;for循環(huán)中套用for循環(huán),for循環(huán)分別對學(xué)校編號、學(xué)??偡帧⒛袌F(tuán)總分、女團(tuán)總分進(jìn)行輸出,在使用for循環(huán)對各學(xué)校的項目編號、所取名次數(shù)量、各個名次輸出,實(shí)現(xiàn)對文件中的數(shù)據(jù)的調(diào)用。5調(diào)試與測試5.1調(diào)試調(diào)試過程主要是運(yùn)行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到的主要問題、原因和解決方法如下面介紹。調(diào)試過程中出現(xiàn)的問題和處理方式:程序出現(xiàn)語法錯誤發(fā)現(xiàn)是輸入名次信息的地方忘帶地址符&。添加取地址符。printf("*****名次:");scanf("%d”,&h[i].c[j].range[s]);在輸出模塊不能將全部的學(xué)校信息輸出,屬于算法編寫錯誤,正確的程序應(yīng)該為:if(h[remember[i]].mscore<h[j].mscore)k=remember[i];remember[i]=remember[j];remember[j]=k;5.2測試軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”?;蛘哒f,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯誤或缺陷。過度測試則會浪費(fèi)許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。測試數(shù)據(jù)過程如下。(1)輸入功能測試輸入數(shù)據(jù)1:11133123213213233123預(yù)期結(jié)果:學(xué)校編號:1學(xué)校總分:15男團(tuán)總分:10女團(tuán)總分:5項目編號:1所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2項目編號:2所取名次數(shù):3名次:2名次:3分?jǐn)?shù):3分?jǐn)?shù):2學(xué)校編號:2學(xué)??偡郑?7男團(tuán)總分:7女團(tuán)總分:10項目編號:1所取名次數(shù):3名次:1名次:3分?jǐn)?shù):5分?jǐn)?shù):2項目編號:2所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2運(yùn)行結(jié)果:學(xué)校編號:1學(xué)??偡郑?5男團(tuán)總分:10女團(tuán)總分:5項目編號:1所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2項目編號:2所取名次數(shù):3名次:2名次:3分?jǐn)?shù):3分?jǐn)?shù):2學(xué)校編號:2學(xué)校總分:17男團(tuán)總分:7女團(tuán)總分:10項目編號:1所取名次數(shù):3名次:1名次:3分?jǐn)?shù):5分?jǐn)?shù):2項目編號:2所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2按照要求輸入的數(shù)據(jù)能夠顯示正確的結(jié)果。6結(jié)論課程設(shè)計順利完成,任務(wù)書中所提出的要求全部實(shí)現(xiàn)不過這個程序還有些不夠完善,例如:輸入學(xué)校各舒適與現(xiàn)在宏定義中確定的,不能改變,有待進(jìn)一步完善口。結(jié)束語因為在理論學(xué)習(xí)中沒有好好的掌握,現(xiàn)在要獨(dú)立完成一個較復(fù)雜的程序編寫,確實(shí)有困難。今后我必需扎實(shí)基礎(chǔ)理論、認(rèn)真思考,而且要踐行我的承諾,一步一個腳印的走下去,才可以達(dá)到我們預(yù)期的彼岸!仔細(xì)回顧數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)過程,發(fā)現(xiàn)其實(shí)他也并不是想象中的那么難。只要肯去攀登!參考文獻(xiàn)譚浩強(qiáng).C語言程序設(shè)計(第三版).清華大學(xué)出版社,2007姜靈芝,余健.C語言課程設(shè)計案例精編.清華大學(xué)出版社,2008吳偉民,嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社,2008李廉治,姜文清,郭福順.數(shù)據(jù)結(jié)構(gòu).大連理工大學(xué)出版社,1989年網(wǎng)上相關(guān)資料附錄1一用戶手冊(1)首先運(yùn)行文件運(yùn)動會統(tǒng)計分?jǐn)?shù)7.exe:如圖6所示:或我的文檔謀面潮建文件夾施動會統(tǒng)計分?jǐn)?shù)入出詢雨調(diào)退'會,分參爛充j才系主充:KNGXGXGXGXGXGXGXGXXX======================歡迎使用=========================JCXXXXXXXXXXXXXXXJCXJCJcl;JCXXXXXXXXXXX入出詢雨調(diào)退'會,分參爛充j才系主充:KNGXGXGXGXGXGXGXGXXXJ<XXXXXXXXXXXXXXXXXJ<J<4J<XXXXXXXXXXXXXXXXXJ<J<5圖6運(yùn)行運(yùn)動會分?jǐn)?shù)統(tǒng)計界面(2)輸入信息:程序首先賦初值,定義學(xué)校的個數(shù)為2,男生項目為1,女生項目為1。輸入1得到進(jìn)入輸入信息模塊。如圖7所示:心心心心餡選擇要實(shí)現(xiàn)步驟的編虧:1510^d.2-00fs>=贏個扁扁」..-..-■£」23占.ITE^3I-I■■校目4崔次次學(xué)項名*****項旦編萬二些2?****里苗3名DI'前S名:5*****棗得幾個名次:1ji_rji_rj_WnP.OEEEEE?~^~|"JE?學(xué)校編首=02E?頂?shù)┚幪?001*****取前3茗口1*前5名:3*****帝得幾個名次:2*****名次司*****名次二3*****項且編號二些2前3名g前S名:禪幾個名次3vww^■□vww^■vww^■□vww^■匚rrrrr-~|^~~|-f.O按回車鍵可得到學(xué)校的得分信息和按編號獲得的所以信息。⑶輸出信息輸入2進(jìn)入輸出信息模塊,該模塊分四項:如圖8所示:********請選擇要實(shí)現(xiàn)步驟的編號:2xxxxxxhxhxhxhhhhhhhZ.XX2xxxxxxhxhxhxhhhhhhhZ.XXXXXXMIMZMIMZMIMZMIJCKJCKJCKq.口X刃分分

編總總總

登團(tuán)團(tuán)

WBR女出出出出NKNKNN:MN:MN:MN)()()()()()(XXXXXJCJCJCJCJCIMJCKKKKKM:i育i也蝙函*WM;圖8輸出運(yùn)動會分?jǐn)?shù)界面

:1xxxxx工枚心刀■?勇團(tuán)總分:5女團(tuán)總分:*****女團(tuán)總分:9請選擇編號請選擇2繼續(xù),日跳出:1xxxxx工枚心刀■?勇團(tuán)總分:5女團(tuán)總分:*****女團(tuán)總分:9請選擇編號按學(xué)??偡州敵觯喝鐖D10所示:請選擇編號口Z,分分編總總總您團(tuán)團(tuán)蓋雷女口5,分分編總總總督團(tuán)團(tuán)女:口Z,分分編總總總您團(tuán)團(tuán)蓋雷女口5,分分編總總總督團(tuán)團(tuán)女按男團(tuán)總分輸出:如圖11所示:JCJOCJOCJOCJOCXMHMHMHMHM編KJIKJIKJIKJIKJIKJIK】__:1&*****芳團(tuán)總分:7*****女團(tuán)總分:?*****貧宜編mme學(xué)彳交總*****勇團(tuán)總分浴*****安團(tuán)總分,3請選擇2繼續(xù)』跳出圖11按學(xué)校編號男團(tuán)總分輸出分?jǐn)?shù)界面按女團(tuán)總分輸出:如圖12所示:,■心,■心,■心,■心心,請j也3=褊:4女團(tuán)總分:9口2刀分分

編總總總

蓋雷女:1:口2刀分分

編總總總

蓋雷女:1:8⑤輸入2返回輸出信息模塊,輸入0返回主菜單。(4)查詢信息:如圖13所示:輸入3進(jìn)入信息查詢模塊:

*****1:技學(xué)校編與查詢*****心按項目編號查詢*****請選擇查詢方式:圖13查詢界面①按學(xué)校編號查詢:如圖14所示:[名-該學(xué)校的成績?nèi)缦?,?跳出--2z10J001臂續(xù)<il繼■詢項『擇m查查個次選一套蔓這名請圖14按學(xué)校編號查詢界面按項目編號查詢:如圖15所示:校學(xué)的次名式施得%力:3235盈^如如如如杳054校學(xué)的次名式施得%力:3235盈^如如如如杳054名名名名封項」冽:1:2:2:2喻詢目編編編編一一查項WW~著A章摩葉"“按學(xué)校編號查詢*****小按項目編號查詢方式T——^:003普誤:這個學(xué)校沒有暴加此次運(yùn)動會1

****?!=按學(xué)校編號查詢*****"按項目編號查詢此次運(yùn)動會不包括這個項目.圖17錯誤提示界面輸入2繼續(xù)查詢,輸入0返回主菜單(5)調(diào)用信息輸入4時顯示出所有的信息:如圖18、19所示:1853

口霽分分

編總總總

蕓團(tuán)團(tuán)

羞虞女一暨名分分項里分二二1853

口霽分分

編總總總

蕓團(tuán)團(tuán)

羞虞女一暨名分分項里分二二二二二二二二二二二二源次數(shù)數(shù)目源數(shù):2編名:3:3圖18調(diào)用信息界面圖19調(diào)用信息界面#include<stdio.h>#include<math.h>#include<conio.h>#include<process.h>#definen2//學(xué)校數(shù)目#definem1//男子項目數(shù)目#definew1//女子項目數(shù)目#definenull0typedefstruct{intitemnum;//項目編號inttop;//取名次的數(shù)目intrange[5];//名次intmark[5];//分?jǐn)?shù)}itemnode;〃定義項目結(jié)點(diǎn)的類型typedefstruct{intschoolnum;//學(xué)校編號intscore;〃學(xué)校總分intmscore;〃男團(tuán)體總分intwscore;〃女團(tuán)體總分itemnodec[m+w];〃項目數(shù)組}headnode;//定義頭結(jié)點(diǎn)類型headnodeh[n];//定義一個頭結(jié)點(diǎn)數(shù)組voidinputinformation()〃輸入信息,建立系統(tǒng){inti,j,k,s;for(i=0;i<n;i++){h[i].score=0;h[i].mscore=0;h[i].wscore=0;}〃初始化頭結(jié)點(diǎn)for(i=0;i<n;i++){printf("*****學(xué)校編號:,scanf("%d”,&h[i].schoolnum);〃輸入頭結(jié)點(diǎn)信息for(j=0;j<m+w;j++)printf("*****項目編號:,scanf("%d”,&h[i].c[j].itemnum);printf("*****取前3名or前5名:,scanf("%d”,&h[i].c[j].top);printf("*****獲得幾個名次:”);scanf("%d”,&k);〃輸入項目信息for(s=0;s<5;s++)h[i].c[j].range[s]=0,h[i].c[j].mark[s]=0;//初始化排名和分?jǐn)?shù)for(s=0;s<k;s++){printf("*****名次:,scanf("%d”,&h[i].c[j].range[s]);〃輸入所獲名次信息if(h[i].c[j].top==3)switch(h[i].c[j].range[s]){case0:h[i].c[j].mark[s]=0;break;case1:h[i].c[j].mark[s]=5;break;case2:h[i].c[j].mark[s]=3;break;case3:h[i].c[j].mark[s]=2;break;}elseswitch(h[i].c[j].range[s]){case0:h[i].c[j].mark[s]=0;break;case1:h[i].c[j].mark[s]=7;break;case2:h[i].c[j].mark[s]=5;break;case3:h[i].c[j].mark[s]=3;break;case4:h[i].c[j].mark[s]=2;break;case5:h[i].c[j].mark[s]=1;break;}h[i].score=h[i].score+h[i].c[j].mark[s];//按取前三名還是取前五名分別記分if(j<=m-1)h[i].mscore=h[i].mscore+h[i].c[j].mark[s];〃是男子項目則記到男子分?jǐn)?shù)里面去elseh[i].wscore=h[i].wscore+h[i].c[j].mark[s];〃是女子項目則記到女子項目里面去}printf("\n");〃輸出函數(shù)voidoutput(){〃輸出函數(shù)intchoice,i,j,k;intremember[n];intsign;do{printf("*******************1.按學(xué)校編號輸出.*******************\n");printf("*******************2.按學(xué)校總分輸出.*******************\n");printf("*******************3.按男團(tuán)總分輸出.*******************\n");printf("*******************4.按女團(tuán)總分輸出.*******************\n");printf("\n\n*******************請選擇編號*************************\n\n:");scanf("%d”,&choice);switch(choice){case1:for(i=0;i<n;i++){printf("\n\n*****學(xué)校編號:%d\n",h[i].schoolnum);printf("*****學(xué)??偡?%d\n",h[i].score);printf("*****男團(tuán)總分:%d\n”,h[i].mscore);printf("*****女團(tuán)總分:%d\n\n\n",h[i].wscore);}〃按編號順序輸出break;case2:for(i=0;i<n;i++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].score<h[j].score)k=remember[i];remember[i]=remember[j],remember[j]=k;}//用冒泡排序方法,用輔助數(shù)組記住頭結(jié)點(diǎn)下標(biāo)for(i=0;i<n;i++){Printf(“\n\n*****學(xué)校編號:%d\n”,h[remember[i]].schoolnum);printf("*****學(xué)??偡?%d\n”,h[remember[i]].score);printf("*****男團(tuán)總分:%d\n",h[remember[i]].mscore);printf("*****女團(tuán)總分:%d\n\n\n",h[remember[i]].wscore);//按所記下標(biāo)順序輸出

}break;〃按學(xué)??偡州敵鯿ase3:〃按學(xué)??偡州敵鰂or(i=0;i<n;i++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].mscore<h[j].mscore)k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;i<n;i++){printf("\n\n*****學(xué)校編號:%d\n",h[remember[i]].schoolnum);printf("*****學(xué)??偡?%d\n”,h[remember[i]].score);printf("*****男團(tuán)總分:%d\n”,h[remember[i]].mscore);printf("*****女團(tuán)總分:%d\n\n\n",h[remember[i]].wscore);}〃按男團(tuán)總分輸出break;case4:for(i=0;i<n;i++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].wscore<h[j].wscore)k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;i<n;i++){printf("\n\n*****學(xué)校編號:%d\n”,h[remember[i]].schoolnum);printf("*****學(xué)校總分:%d\n”,h[remember[i]].score);printf("*****男團(tuán)總分:%d\n”,h[remember[i]].mscore);printf("*****女團(tuán)總分:%d\n\n\n",h[remember[i]].wscore);}break;〃按女團(tuán)總分輸出}printf('請選擇2繼續(xù),0跳出\n");scanf("%d”,&sign);

〃循環(huán)執(zhí)行輸出語句〃查詢函數(shù)〃提供兩種查詢方式}while(sign==2);}voidinquiry(){〃循環(huán)執(zhí)行輸出語句〃查詢函數(shù)〃提供兩種查詢方式intchoice;inti,j,k,s;printf("\n*****1:按學(xué)校編號查詢\n");printf("\n*****2:按項目編號查詢\n");printf("\n\n*****請選擇查詢方式:");scanf("%d”,&choice);switch(choice){case1:do{printf("要查詢的學(xué)校編號:,scanf("%d”,&i);if(i>n)printf("錯誤:這個學(xué)校沒有參加此次運(yùn)動會!\n\n\n");else{printf(”要查詢的項目編號:,scanf("%d”,&j);if(j>m+w||j==0)printf("此次運(yùn)動會沒有這個項目\n\n\n");〃學(xué)校編號超出范圍,則輸出警告else{printf("這個項目取前%d名,該學(xué)校的成績?nèi)缦?\n",h[0].c[j-1].top);for(k=0;k<5;k++)if(h[i-1].c[j-1].range[k]!=0)printf("名次:%d\n”,h[i-1].c[j-1].range[k]);〃輸出要查詢學(xué)校項目的成績}}printf("請選擇2繼續(xù),0跳出\n");scanf("%d”,&s);〃循環(huán)執(zhí)行輸出語句printf("\n\n\n");}while(s==2);break;〃循環(huán)執(zhí)行輸出語句case2:doprintf(”要查詢的項目編號:,scanf("%d”,&s);if(s>m+wlls==0)printf("此次運(yùn)動會不包括這個項目.\n\n\n");〃項目編號超出范圍則輸出警告else{printf("該項目取前%d名,取得名次的學(xué)校\n",h[0].c[s-1].top);for(i=0;i<n;i++)for(j=0;j<5;j++)if(h[i].c[s-1].range[j]!=0)printf("學(xué)校編號:%d,名次:%d\n”,h[i].schoolnum,h[i].c[s-1].range[j]);}〃輸出該項目取得名次學(xué)校的成績printf("\n\n\n繼續(xù)2,跳出0\n");scanf("%d”,&i);printf("\n\n\n");}while(i==2);break;}}voidwritedata()〃把數(shù)據(jù)存儲在文件中{FILE*report;inti;if((report=fopen("sportsdata.txt”,"w"))==null){printf("不能打開文件\n");exit(1);}for(i=0;i<n;i++)fwrite(&h[i],sizeof(headnode),1,report);fclose(report);}〃按頭結(jié)點(diǎn)塊寫入voidreaddata()〃讀出文件中數(shù)據(jù)的函數(shù){FILE*report;inti,j,k,s;if((report=fopen("sportsdata.txt","r"))==null){printf("filecannotbeopened\n");for(i=0;i<n;i++){printf("******學(xué)校編號:,fread(&k,sizeof(int),1,report);printf("%d\n”,k);printf("******學(xué)??偡?,fread(&k,sizeof(int),1,report);printf("%d\n”,k);printf("******男團(tuán)總分:");fread(&k,sizeof(int),1,report);printf("%d\n”,k);printf("******女團(tuán)總分:,f

溫馨提示

  • 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

提交評論