版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)班級(jí):軟件1013班姓名:楊虹學(xué)號(hào):20102033隨著社會(huì)的進(jìn)步,體育事業(yè)發(fā)展,為了提高運(yùn)動(dòng)會(huì)成績(jī)統(tǒng)計(jì)準(zhǔn)確,減少設(shè)計(jì)者們的工作量,開發(fā)了本系統(tǒng)。根據(jù)課程設(shè)計(jì)任務(wù)書要求,本系統(tǒng)開發(fā)主要完成以下功能和性能。任務(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,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)功能要求:.可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);.能統(tǒng)計(jì)各學(xué)校總分;.可以按學(xué)校編號(hào)、學(xué)校總分、男女團(tuán)體總分排序輸出;.可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。規(guī)定:輸入數(shù)據(jù)形式和范圍:20以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱)輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。2需求分析2.1功能需求本系統(tǒng)主要是運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)方案設(shè)計(jì)。運(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é)果。2.2數(shù)據(jù)需求需要輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次。2.3性能需求本程序在運(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)。3總體設(shè)計(jì)3.1系統(tǒng)設(shè)計(jì)方案本方案要求準(zhǔn)備結(jié)構(gòu)體數(shù)組、讀寫文件。還能把信息直接輸入存儲(chǔ)到文件中,讀取文件中信息,從而得到結(jié)果。(1)菜單設(shè)計(jì)分為主函數(shù)菜單、比賽成績(jī)輸出菜單、查詢分?jǐn)?shù)統(tǒng)計(jì)結(jié)果菜單、查詢方式子菜單。數(shù)據(jù)保存方式建立文件,數(shù)據(jù)保存在文件中。運(yùn)動(dòng)運(yùn)分?jǐn)?shù)統(tǒng)計(jì)程序數(shù)據(jù)類型采用結(jié)構(gòu)體類型。存儲(chǔ)結(jié)構(gòu)采用結(jié)構(gòu)體類型數(shù)組存儲(chǔ)結(jié)構(gòu)存儲(chǔ)。算法設(shè)計(jì)輸入比賽結(jié)果模塊中運(yùn)用了冒泡算法將輸入的數(shù)據(jù)排序。3.2功能模塊設(shè)計(jì)根據(jù)分析整個(gè)系統(tǒng)主要?jiǎng)澐譃?個(gè)功能模塊,分別執(zhí)行要求中的功能。該系統(tǒng)分為比賽成績(jī)輸入、比賽成績(jī)輸出、查詢比賽成績(jī)和調(diào)用統(tǒng)計(jì)結(jié)果。比賽成績(jī)輸出模塊有四個(gè)子模塊,分別是:按學(xué)校編號(hào)輸出模塊、按學(xué)??偡州敵瞿K、安南員總分輸出模塊和按女團(tuán)總分輸出模塊;查詢比賽成績(jī)模塊分為按學(xué)校編號(hào)查詢模塊河岸項(xiàng)目編號(hào)查詢兩個(gè)子模塊。功能模塊圖如圖1所示。運(yùn)動(dòng)運(yùn)分?jǐn)?shù)統(tǒng)計(jì)程序按項(xiàng)目編號(hào)查詢模塊按學(xué)校編號(hào)查詢模塊按女團(tuán)總分輸出模塊按男團(tuán)總分輸出模塊按學(xué)??偡州敵瞿K按學(xué)校編號(hào)輸出模塊按項(xiàng)目編號(hào)查詢模塊按學(xué)校編號(hào)查詢模塊按女團(tuán)總分輸出模塊按男團(tuán)總分輸出模塊按學(xué)校總分輸出模塊按學(xué)校編號(hào)輸出模塊圖1功能模塊圖比賽成績(jī)輸入模塊比賽成績(jī)輸入模塊分為:創(chuàng)建信息部分,該部分需輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次;算法部分,得到排序結(jié)果。比賽成績(jī)輸出模塊將以輸入的數(shù)據(jù)按照輸出比賽菜單的選擇輸出相應(yīng)的數(shù)據(jù)。查詢比賽成績(jī)模塊按照查詢比賽結(jié)果菜單和其查詢方式子菜單查詢需要的數(shù)據(jù)。調(diào)用統(tǒng)計(jì)結(jié)果將輸入的各學(xué)校運(yùn)動(dòng)會(huì)成績(jī)排序輸出。4詳細(xì)設(shè)計(jì)4.1數(shù)據(jù)結(jié)構(gòu)定義建立結(jié)構(gòu)體如下:typedefstruct{intitemnum;//項(xiàng)目編號(hào)inttop;〃取名次的數(shù)目intrange[5];//名次intmark[5];〃分?jǐn)?shù)}itemnode;〃定義項(xiàng)目結(jié)點(diǎn)的類型typedefstruct{intschoolnum;〃學(xué)校編號(hào)intscore;〃學(xué)??偡謎ntmscore;〃男團(tuán)體總分intwscore;〃女團(tuán)體總分itemnodec[m+w];〃項(xiàng)目數(shù)組}headnode;//定義頭結(jié)點(diǎn)類型4.2比賽成績(jī)輸入模塊比賽成績(jī)輸入模塊需要輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次。算法模塊流程圖如圖2所示.學(xué)校編號(hào)偵出ihM^學(xué)校編號(hào)偵出ihM^蟲結(jié)束圖2比賽成績(jī)輸入模塊流程圖信息的輸入,包括學(xué)校編號(hào)、項(xiàng)目編號(hào)、取前3名or前5名、獲得幾個(gè)名次,使用switch語(yǔ)句實(shí)現(xiàn)對(duì)輸入的各個(gè)名次賦予對(duì)應(yīng)的分?jǐn)?shù)。4.3比賽成績(jī)輸出比賽成績(jī)輸出模塊實(shí)現(xiàn)按要求輸出相應(yīng)的數(shù)據(jù)。有以下輸出選項(xiàng):按學(xué)校編號(hào)輸出、按學(xué)校總分輸出、按男團(tuán)總分輸出、按女團(tuán)總分輸出。
intchoice,i,j,k;".case1:Vi±+scanf("%d",&choice);printf("\n\n\n繼續(xù)2,跳出o\n輸入學(xué)校乙七口編號(hào)*h[remember[i-n-、]].intchoice,i,j,k;".case1:Vi±+scanf("%d",&choice);printf("\n\n\n繼續(xù)2,跳出o\n輸入學(xué)校乙七口編號(hào)*h[remember[i-n-、]].wscore<h[j/pwscore/k=remember[i];remember[i]=remember[j],rememberj=k~/h[remember[i]].mscore<h[jT4個(gè)菜單欄選項(xiàng)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語(yǔ)句,選擇輸出按學(xué)校編號(hào)輸出、按學(xué)校總分輸出、按男團(tuán)總分輸出、按女團(tuán)總分輸出相應(yīng)的數(shù)據(jù)。for循環(huán)實(shí)現(xiàn)輸出各個(gè)方式輸出的每個(gè)數(shù)據(jù)。4.4查詢比賽成績(jī)模塊查詢比賽成績(jī)模塊包括:按學(xué)校編號(hào)查詢,按項(xiàng)目編號(hào)查詢。其算法原理相同,例舉按學(xué)校項(xiàng)目編號(hào)查詢模塊。如圖4所示。printf("要查詢的學(xué)校編號(hào):");;Tscanf("%d",&i);錯(cuò)誤:這個(gè)學(xué)校沒有參加N要查詢的項(xiàng)目編號(hào)N運(yùn)動(dòng)會(huì)無這個(gè)項(xiàng)目printf("要查詢的學(xué)校編號(hào):");;Tscanf("%d",&i);錯(cuò)誤:這個(gè)學(xué)校沒有參加N要查詢的項(xiàng)目編號(hào)N運(yùn)動(dòng)會(huì)無這個(gè)項(xiàng)目取前幾名NN跳出scanf("%d此模塊定義了intchoice;inti,j,k,s;switch(choice)實(shí)現(xiàn)查詢的兩種方式的選擇,當(dāng)i>n時(shí)輸出錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!否則,輸入項(xiàng)目編號(hào),如果j>m+wlj=0,輸出此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目。否則,使用for循環(huán)輸出相關(guān)數(shù)據(jù),從而實(shí)現(xiàn)查詢功能。4.5調(diào)用統(tǒng)計(jì)結(jié)果模塊調(diào)用統(tǒng)計(jì)模塊從文件中讀取數(shù)據(jù)輸出,流程圖如圖5所示。N'■-(report=fopen("sportsdata.txt","r"))==nullfread(&k,sizeof(pnntf("校編號(hào)fread(&k,sizeof(~int),1,repo呻printf("%d\n",k);printf(??偡帧宽?xiàng)目編fread(&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)計(jì)結(jié)果模塊流程圖此模塊定義了FILE*report;inti,j,k,s;for循環(huán)中套用for循環(huán),for循環(huán)分別對(duì)學(xué)校編號(hào)、學(xué)??偡帧⒛袌F(tuán)總分、女團(tuán)總分進(jìn)行輸出,在使用for循環(huán)對(duì)各學(xué)校的項(xiàng)目編號(hào)、所取名次數(shù)量、各個(gè)名次輸出,實(shí)現(xiàn)對(duì)文件中的數(shù)據(jù)的調(diào)用。5調(diào)試與測(cè)試5.1調(diào)試調(diào)試過程主要是運(yùn)行編制好的程序,然后遇到錯(cuò)誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到的主要問題、原因和解決方法如下面介紹。調(diào)試過程中出現(xiàn)的問題和處理方式:程序出現(xiàn)語(yǔ)法錯(cuò)誤發(fā)現(xiàn)是輸入名次信息的地方忘帶地址符&。添加取地址符。printf("*****名次:");scanf("%d”,&h[i].c[j].range[s]);在輸出模塊不能將全部的學(xué)校信息輸出,屬于算法編寫錯(cuò)誤,正確的程序應(yīng)該為:if(h[remember[i]].mscore<h[j].mscore)k=remember[i];remember[i]=remember[j];remember[j]=k;5.2測(cè)試軟件測(cè)試是軟件生存期中的一個(gè)重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,所以軟件測(cè)試應(yīng)該是“為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程”?;蛘哒f,軟件測(cè)試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤或缺陷。過度測(cè)試則會(huì)浪費(fèi)許多寶貴的資源。到測(cè)試后期,即使找到了錯(cuò)誤,然而付出了過高的代價(jià)。測(cè)試數(shù)據(jù)過程如下。(1)輸入功能測(cè)試輸入數(shù)據(jù)1:11133123213213233123預(yù)期結(jié)果:學(xué)校編號(hào):1學(xué)??偡郑?5男團(tuán)總分:10女團(tuán)總分:5項(xiàng)目編號(hào):1所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2項(xiàng)目編號(hào):2所取名次數(shù):3名次:2名次:3分?jǐn)?shù):3分?jǐn)?shù):2學(xué)校編號(hào):2學(xué)??偡郑?7男團(tuán)總分:7女團(tuán)總分:10項(xiàng)目編號(hào):1所取名次數(shù):3名次:1名次:3分?jǐn)?shù):5分?jǐn)?shù):2項(xiàng)目編號(hào):2所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2運(yùn)行結(jié)果:學(xué)校編號(hào):1學(xué)校總分:15男團(tuán)總分:10女團(tuán)總分:5項(xiàng)目編號(hào):1所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2項(xiàng)目編號(hào):2所取名次數(shù):3名次:2名次:3分?jǐn)?shù):3分?jǐn)?shù):2學(xué)校編號(hào):2學(xué)??偡郑?7男團(tuán)總分:7女團(tuán)總分:10項(xiàng)目編號(hào):1所取名次數(shù):3名次:1名次:3分?jǐn)?shù):5分?jǐn)?shù):2項(xiàng)目編號(hào):2所取名次數(shù):3名次:1名次:2名次:3分?jǐn)?shù):5分?jǐn)?shù):3分?jǐn)?shù):2按照要求輸入的數(shù)據(jù)能夠顯示正確的結(jié)果。6結(jié)論課程設(shè)計(jì)順利完成,任務(wù)書中所提出的要求全部實(shí)現(xiàn)不過這個(gè)程序還有些不夠完善,例如:輸入學(xué)校各舒適與現(xiàn)在宏定義中確定的,不能改變,有待進(jìn)一步完善口。結(jié)束語(yǔ)因?yàn)樵诶碚搶W(xué)習(xí)中沒有好好的掌握,現(xiàn)在要獨(dú)立完成一個(gè)較復(fù)雜的程序編寫,確實(shí)有困難。今后我必需扎實(shí)基礎(chǔ)理論、認(rèn)真思考,而且要踐行我的承諾,一步一個(gè)腳印的走下去,才可以達(dá)到我們預(yù)期的彼岸!仔細(xì)回顧數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)過程,發(fā)現(xiàn)其實(shí)他也并不是想象中的那么難。只要肯去攀登!參考文獻(xiàn)譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第三版).清華大學(xué)出版社,2007姜靈芝,余健.C語(yǔ)言課程設(shè)計(jì)案例精編.清華大學(xué)出版社,2008吳偉民,嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社,2008李廉治,姜文清,郭福順.數(shù)據(jù)結(jié)構(gòu).大連理工大學(xué)出版社,1989年網(wǎng)上相關(guān)資料附錄1一用戶手冊(cè)(1)首先運(yùn)行文件運(yùn)動(dòng)會(huì)統(tǒng)計(jì)分?jǐn)?shù)7.exe:如圖6所示:或我的文檔謀面潮建文件夾施動(dòng)會(huì)統(tǒng)計(jì)分?jǐn)?shù)入出詢雨調(diào)退'會(huì),分參爛充j才系主充:KNGXGXGXGXGXGXGXGXXX======================歡迎使用=========================JCXXXXXXXXXXXXXXXJCXJCJcl;JCXXXXXXXXXXX入出詢雨調(diào)退'會(huì),分參爛充j才系主充:KNGXGXGXGXGXGXGXGXXXJ<XXXXXXXXXXXXXXXXXJ<J<4J<XXXXXXXXXXXXXXXXXJ<J<5圖6運(yùn)行運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)界面(2)輸入信息:程序首先賦初值,定義學(xué)校的個(gè)數(shù)為2,男生項(xiàng)目為1,女生項(xiàng)目為1。輸入1得到進(jìn)入輸入信息模塊。如圖7所示:心心心心餡選擇要實(shí)現(xiàn)步驟的編虧:1510^d.2-00fs>=贏個(gè)扁扁」..-..-■£」23占.ITE^3I-I■■校目4崔次次學(xué)項(xiàng)名*****項(xiàng)旦編萬二些2?****里苗3名DI'前S名:5*****棗得幾個(gè)名次:1ji_rji_rj_WnP.OEEEEE?~^~|"JE?學(xué)校編首=02E?頂?shù)┚幪?hào)=001*****取前3茗口1*前5名:3*****帝得幾個(gè)名次:2*****名次司*****名次二3*****項(xiàng)且編號(hào)二些2前3名g前S名:禪幾個(gè)名次3vww^■□vww^■vww^■□vww^■匚rrrrr-~|^~~|-f.O按回車鍵可得到學(xué)校的得分信息和按編號(hào)獲得的所以信息。⑶輸出信息輸入2進(jìn)入輸出信息模塊,該模塊分四項(xiàng):如圖8所示:********請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào):2xxxxxxhxhxhxhhhhhhhZ.XX2xxxxxxhxhxhxhhhhhhhZ.XXXXXXMIMZMIMZMIMZMIJCKJCKJCKq.口X刃分分
編總總總
登團(tuán)團(tuán)
WBR女出出出出NKNKNN:MN:MN:MN)()()()()()(XXXXXJCJCJCJCJCIMJCKKKKKM:i育i也蝙函*WM;圖8輸出運(yùn)動(dòng)會(huì)分?jǐn)?shù)界面
:1xxxxx工枚心刀■?勇團(tuán)總分:5女團(tuán)總分:*****女團(tuán)總分:9請(qǐng)選擇編號(hào)請(qǐng)選擇2繼續(xù),日跳出:1xxxxx工枚心刀■?勇團(tuán)總分:5女團(tuán)總分:*****女團(tuán)總分:9請(qǐng)選擇編號(hào)按學(xué)??偡州敵觯喝鐖D10所示:請(qǐng)選擇編號(hào)口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請(qǐng)選擇2繼續(xù)』跳出圖11按學(xué)校編號(hào)男團(tuán)總分輸出分?jǐn)?shù)界面按女團(tuán)總分輸出:如圖12所示:,■心,■心,■心,■心心,請(qǐng)j也3=褊:4女團(tuán)總分:9口2刀分分
編總總總
蓋雷女:1:口2刀分分
編總總總
蓋雷女:1:8⑤輸入2返回輸出信息模塊,輸入0返回主菜單。(4)查詢信息:如圖13所示:輸入3進(jìn)入信息查詢模塊:
*****1:技學(xué)校編與查詢*****心按項(xiàng)目編號(hào)查詢*****請(qǐng)選擇查詢方式:圖13查詢界面①按學(xué)校編號(hào)查詢:如圖14所示:[名-該學(xué)校的成績(jī)?nèi)缦?,?跳出--2z10J001臂續(xù)<il繼■詢項(xiàng)『擇m查查個(gè)次選一套蔓這名請(qǐng)圖14按學(xué)校編號(hào)查詢界面按項(xiàng)目編號(hào)查詢:如圖15所示:校學(xué)的次名式施得%力:3235盈^如如如如杳054校學(xué)的次名式施得%力:3235盈^如如如如杳054名名名名封項(xiàng)」冽:1:2:2:2喻詢目編編編編一一查項(xiàng)WW~著A章摩葉"“按學(xué)校編號(hào)查詢*****小按項(xiàng)目編號(hào)查詢方式T——^:003普誤:這個(gè)學(xué)校沒有暴加此次運(yùn)動(dòng)會(huì)1
****?!=按學(xué)校編號(hào)查詢*****"按項(xiàng)目編號(hào)查詢此次運(yùn)動(dòng)會(huì)不包括這個(gè)項(xiàng)目.圖17錯(cuò)誤提示界面輸入2繼續(xù)查詢,輸入0返回主菜單(5)調(diào)用信息輸入4時(shí)顯示出所有的信息:如圖18、19所示:1853
口霽分分
編總總總
蕓團(tuán)團(tuán)
羞虞女一暨名分分項(xiàng)里分二二1853
口霽分分
編總總總
蕓團(tuán)團(tuán)
羞虞女一暨名分分項(xiàng)里分二二二二二二二二二二二二源次數(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//男子項(xiàng)目數(shù)目#definew1//女子項(xiàng)目數(shù)目#definenull0typedefstruct{intitemnum;//項(xiàng)目編號(hào)inttop;//取名次的數(shù)目intrange[5];//名次intmark[5];//分?jǐn)?shù)}itemnode;〃定義項(xiàng)目結(jié)點(diǎn)的類型typedefstruct{intschoolnum;//學(xué)校編號(hào)intscore;〃學(xué)??偡謎ntmscore;〃男團(tuán)體總分intwscore;〃女團(tuán)體總分itemnodec[m+w];〃項(xiàng)目數(shù)組}headnode;//定義頭結(jié)點(diǎn)類型headnodeh[n];//定義一個(gè)頭結(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é)校編號(hào):,scanf("%d”,&h[i].schoolnum);〃輸入頭結(jié)點(diǎn)信息for(j=0;j<m+w;j++)printf("*****項(xiàng)目編號(hào):,scanf("%d”,&h[i].c[j].itemnum);printf("*****取前3名or前5名:,scanf("%d”,&h[i].c[j].top);printf("*****獲得幾個(gè)名次:”);scanf("%d”,&k);〃輸入項(xiàng)目信息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];〃是男子項(xiàng)目則記到男子分?jǐn)?shù)里面去elseh[i].wscore=h[i].wscore+h[i].c[j].mark[s];〃是女子項(xiàng)目則記到女子項(xiàng)目里面去}printf("\n");〃輸出函數(shù)voidoutput(){〃輸出函數(shù)intchoice,i,j,k;intremember[n];intsign;do{printf("*******************1.按學(xué)校編號(hào)輸出.*******************\n");printf("*******************2.按學(xué)??偡州敵?*******************\n");printf("*******************3.按男團(tuán)總分輸出.*******************\n");printf("*******************4.按女團(tuán)總分輸出.*******************\n");printf("\n\n*******************請(qǐng)選擇編號(hào)*************************\n\n:");scanf("%d”,&choice);switch(choice){case1:for(i=0;i<n;i++){printf("\n\n*****學(xué)校編號(hào):%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);}〃按編號(hào)順序輸出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é)校編號(hào):%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é)校編號(hào):%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é)校編號(hào):%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('請(qǐng)選擇2繼續(xù),0跳出\n");scanf("%d”,&sign);
〃循環(huán)執(zhí)行輸出語(yǔ)句〃查詢函數(shù)〃提供兩種查詢方式}while(sign==2);}voidinquiry(){〃循環(huán)執(zhí)行輸出語(yǔ)句〃查詢函數(shù)〃提供兩種查詢方式intchoice;inti,j,k,s;printf("\n*****1:按學(xué)校編號(hào)查詢\n");printf("\n*****2:按項(xiàng)目編號(hào)查詢\n");printf("\n\n*****請(qǐng)選擇查詢方式:");scanf("%d”,&choice);switch(choice){case1:do{printf("要查詢的學(xué)校編號(hào):,scanf("%d”,&i);if(i>n)printf("錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!\n\n\n");else{printf(”要查詢的項(xiàng)目編號(hào):,scanf("%d”,&j);if(j>m+w||j==0)printf("此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目\n\n\n");〃學(xué)校編號(hào)超出范圍,則輸出警告else{printf("這個(gè)項(xiàng)目取前%d名,該學(xué)校的成績(jī)?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é)校項(xiàng)目的成績(jī)}}printf("請(qǐng)選擇2繼續(xù),0跳出\n");scanf("%d”,&s);〃循環(huán)執(zhí)行輸出語(yǔ)句printf("\n\n\n");}while(s==2);break;〃循環(huán)執(zhí)行輸出語(yǔ)句case2:doprintf(”要查詢的項(xiàng)目編號(hào):,scanf("%d”,&s);if(s>m+wlls==0)printf("此次運(yùn)動(dòng)會(huì)不包括這個(gè)項(xiàng)目.\n\n\n");〃項(xiàng)目編號(hào)超出范圍則輸出警告else{printf("該項(xiàng)目取前%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é)校編號(hào):%d,名次:%d\n”,h[i].schoolnum,h[i].c[s-1].range[j]);}〃輸出該項(xiàng)目取得名次學(xué)校的成績(jī)printf("\n\n\n繼續(xù)2,跳出0\n");scanf("%d”,&i);printf("\n\n\n");}while(i==2);break;}}voidwritedata()〃把數(shù)據(jù)存儲(chǔ)在文件中{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é)校編號(hào):,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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年受歡迎人事代理合同
- 2025年生態(tài)環(huán)保技術(shù)推廣合同
- 二零二五年度木材行業(yè)信息化建設(shè)與數(shù)據(jù)服務(wù)合同2篇
- 鍍錫平板軋材項(xiàng)目可行性研究報(bào)告建議書申請(qǐng)備案
- 2020-2025年中國(guó)半導(dǎo)體激光治療機(jī)行業(yè)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資戰(zhàn)略咨詢報(bào)告
- 貴陽(yáng)2025年租賃合同含租賃雙方權(quán)利義務(wù)及爭(zhēng)議解決機(jī)制2篇
- 2025年度文化創(chuàng)意產(chǎn)業(yè)知識(shí)產(chǎn)權(quán)運(yùn)營(yíng)框架協(xié)議
- 二零二五年度道路工程施工合同糾紛處理協(xié)議
- 二零二五年度綠色食品連鎖店進(jìn)貨合同電子版
- 二零二五年度2025年度生物制藥行業(yè)研究員聘用協(xié)議
- 人教版物理八年級(jí)下冊(cè) 專項(xiàng)訓(xùn)練卷 (一)力、運(yùn)動(dòng)和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫(kù)-中(多選題)
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2024年中考語(yǔ)文滿分作文6篇(含題目)
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問題“拓展型”專項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語(yǔ)五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
評(píng)論
0/150
提交評(píng)論