數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)評審表姓 名學(xué) 院學(xué) 號專業(yè)班級題 目運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)評審意見評審成績指導(dǎo)教師簽名職稱評審時間 年 月 日課程設(shè)計(jì)作品驗(yàn)收表題目運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)參與人員姓 名班 級學(xué) 號設(shè)計(jì)任務(wù)與要求: 1)可以輸入各個學(xué)校各個項(xiàng)目的前三名或前五名的成績; 2)能統(tǒng)計(jì)各學(xué)??偡?; 3)可以按學(xué)校編號或名稱、學(xué)??偡?、男女團(tuán)體總分排序輸出; 4)可以按學(xué)校編號查詢學(xué)校某個項(xiàng)目的情況;可以按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校; 5)數(shù)據(jù)存入文件并能隨時查詢。作品完成情況:能按要求實(shí)現(xiàn)信息的輸入、統(tǒng)計(jì),按多種方式輸出、查詢等基本功能。能將輸入的信息存入文檔,可供隨時調(diào)用。能夠正確應(yīng)對部分不合理的輸入。驗(yàn)

2、收情況: 驗(yàn)收教師簽名:_ 年 月 日注:1. 除“驗(yàn)收情況”欄外,其余各欄均由學(xué)生在作品驗(yàn)收前填寫。2. “驗(yàn)收情況”欄由驗(yàn)收小組按實(shí)際驗(yàn)收的情況如實(shí)填寫。目 錄1 問題描述與分析. 11.1 課程設(shè)計(jì)的目的. 11.2 系統(tǒng)需求分析.12 概要設(shè)計(jì). .22.1 系統(tǒng)功能設(shè)計(jì).22.2 函數(shù)構(gòu)造.23 詳細(xì)設(shè)計(jì).3 3.1 數(shù)據(jù)類型及重要變量的定義.3 3.2 函數(shù)的設(shè)計(jì)和實(shí)現(xiàn).44 測試.75 課程設(shè)計(jì)總結(jié).11 5.1 調(diào)試中遇到的較重要問題的回顧.11 5.2 算法的效率及改進(jìn)思想12 5.3 心得體會.12 參考文獻(xiàn).13附錄.13運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)1 問題描述與分析1.1 課程設(shè)

3、計(jì)目的為了鞏固我們數(shù)據(jù)結(jié)構(gòu)知識,加強(qiáng)我們的實(shí)際動手能力和提高我們綜合素質(zhì),提高我們對計(jì)算機(jī)軟件工程的認(rèn)識學(xué)院組織我們進(jìn)行了數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)。此次課程設(shè)計(jì)要達(dá)到以下幾點(diǎn)目的:1.11了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力。1.12提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法的正確性。學(xué)會有效利用基本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改。1.13培養(yǎng)算法分析能力。分析所設(shè)計(jì)算法的時間復(fù)雜度和空間復(fù)雜度,進(jìn)一步提高程序設(shè)計(jì)水平。1.14初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測試等基本方法和技能。1.2系統(tǒng)需求分析問題描述:參加運(yùn)動會有n個

4、學(xué)校,學(xué)校編號為1n。比賽分成m個男子項(xiàng)目,和w個女子項(xiàng)目。項(xiàng)目編號為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)。功能要求:1.21可以輸入各個學(xué)校各個項(xiàng)目的前三名或前五名的成績;1.22能統(tǒng)計(jì)各學(xué)??偡郑?.23可以按學(xué)校編號或名稱、學(xué)??偡?、男女團(tuán)體總分排序輸出;1.24可以按學(xué)校編號查詢學(xué)校某個項(xiàng)目的情況;可以按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校;1.25數(shù)據(jù)存入文件并能隨時查詢;1.26規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動項(xiàng)

5、目的名稱。輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形。界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。2 概要設(shè)計(jì)2.1 系統(tǒng)功能設(shè)計(jì)根據(jù)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)問題的分析和設(shè)計(jì)要求,可以將該系統(tǒng)可以分為三個模塊:信息統(tǒng)計(jì)模塊、信息輸出模塊、信息查詢模塊,其系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。2.11信息統(tǒng)計(jì)模實(shí)現(xiàn)信息的輸入、統(tǒng)計(jì)、存檔。2.12信息輸出模塊,實(shí)現(xiàn)信息的輸出。2.13信息查詢實(shí)現(xiàn)信息的查詢。 圖2-1 系統(tǒng)功能結(jié)構(gòu)圖2.2 函數(shù)構(gòu)造根據(jù)系統(tǒng)功能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的幾個基本的函數(shù),其方法名和功能如表2-1所示。表2-1 函數(shù)功能表函數(shù)功能void inpu

6、tinformation( )輸入和統(tǒng)計(jì)信息函數(shù)void output( )輸出信息函數(shù)void inquiry( )查詢信息函數(shù)void writedata( )數(shù)據(jù)存儲函數(shù)void readdata( )讀入數(shù)據(jù)函數(shù)3 詳細(xì)設(shè)計(jì)3.1 數(shù)據(jù)類型及重要變量的定義3.11定義運(yùn)動項(xiàng)目數(shù)據(jù)類型,用于存放運(yùn)動項(xiàng)目,包括項(xiàng)目編號、項(xiàng)目所取名次數(shù)、名次、分?jǐn)?shù)。/定義項(xiàng)目結(jié)點(diǎn)的類型typedef struct int itemnum; /項(xiàng)目編號 int top; /項(xiàng)目取名次的數(shù)目,由用戶定義3或5 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode;3.12定義學(xué)校數(shù)據(jù)類型

7、,用來存儲參賽學(xué)校信息,包括學(xué)校編號、學(xué)??偡?、男團(tuán)總分、女團(tuán)總分、項(xiàng)目數(shù)組。/定義學(xué)校結(jié)點(diǎn)類型typedef structint schoolnum; /學(xué)校編號 int score; /學(xué)??偡?int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnode cm+w; /項(xiàng)目數(shù)組schoolnode;3.13定義學(xué)校數(shù)組schoolnode hn。采用數(shù)組結(jié)構(gòu)有利于隨機(jī)的存儲和查詢。定義全局標(biāo)志變量int flag1、flag2,分別用以標(biāo)志是否已經(jīng)向系統(tǒng)輸入了信息和標(biāo)志系統(tǒng)中是否已經(jīng)存在信息。定義文件指針file * report,用來指向存檔的文件。3.

8、2 函數(shù)的設(shè)計(jì)和實(shí)現(xiàn)在概要設(shè)計(jì)中已經(jīng)對該系統(tǒng)涉及的抽象數(shù)據(jù)類型和函數(shù)及其功能做了說明,這里就不在對每個函數(shù)進(jìn)行一一說明,只對其中比較重要的功能模塊進(jìn)行描述。3.21信息輸入及分?jǐn)?shù)統(tǒng)計(jì)功能void inputinformation( )為輸入信息及分?jǐn)?shù)統(tǒng)計(jì)函數(shù)。在輸入信息的同時進(jìn)行分?jǐn)?shù)的統(tǒng)計(jì)。可以輸入各個學(xué)校各項(xiàng)目前三名或前五名的成績。在輸入學(xué)校的參賽項(xiàng)目時,結(jié)果取前三名還是前五名自己定,用一個選擇語句實(shí)現(xiàn)。利用swith語句前三名的分?jǐn)?shù)賦為5、3、2,前五名的成績賦為7,5、3、2、1,未取得成績則賦為0。并統(tǒng)計(jì)團(tuán)體總分,男團(tuán)總分和女團(tuán)總分。其主要功能代碼如下:for(s=0;sk;s+) p

9、rintf(*名次:); scanf(%d,&hi.cj.ranges); /輸入所獲名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=5; break; case 2: hi.cj.marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: h

10、i.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks;3.22信息輸出功能void output( )為輸出函數(shù)。列出一個輸出目錄利用swich語句使函數(shù)按學(xué)校編號輸出或按學(xué)??偡?、男團(tuán)總分、女團(tuán)總分由高到低排序輸出。利用輔助數(shù)組remember和冒泡排序的方法使之按分?jǐn)?shù)的由高到低輸出。利用循環(huán)語句do while( )當(dāng)輸入2時返回輸出目錄,輸入0是跳出循環(huán)返回主菜單

11、。其流程圖如圖3-1所示。圖3-1輸出信息模塊流程圖3.23信息查詢功能void inquiry( )為查詢函數(shù)。列車一個查詢目錄利用swich 語句使函數(shù)按學(xué)校編號或項(xiàng)目編號查詢,輸出某學(xué)校的某個項(xiàng)目的得分情況或某個項(xiàng)目的前幾名的學(xué)校。再利用循環(huán)語句do while( )當(dāng)輸入2是返回查詢目錄,輸入0時跳出循環(huán)返回主菜單。其程序流程圖如圖3所示。圖3 查詢信息模塊程序流程圖3.24主函數(shù)void main( )是主函數(shù)。列出主菜單,利用switch語句調(diào)用以上函數(shù)實(shí)現(xiàn)各個菜單的功能。想在每次查詢結(jié)束想返回主菜單進(jìn)行其它項(xiàng)時,應(yīng)在main( )函數(shù)中調(diào)用其它函數(shù)時再調(diào)用main( )函數(shù),如:

12、switch(choice) case 1: printf(輸入信息:n);inputinformation();writedata();printf(信息已存入檔案!);main(); case 2: printf(輸出信息:n);if(flag1)readdata();output();main();在進(jìn)入主菜單后為了確保系統(tǒng)中已經(jīng)輸入了信息,用標(biāo)志標(biāo)量flag1和flag2來控制循環(huán)。如果系統(tǒng)中沒有任何信息,用戶就不能選擇輸入或查詢操作,此時會輸出提示信息,并返回主菜單。直到用戶輸入了信息或退出系統(tǒng)。其實(shí)現(xiàn)代碼如下:do printf(=歡迎使用=n); printf(nn*運(yùn)動會分?jǐn)?shù)統(tǒng)

13、計(jì)系統(tǒng)*n); printf(nn*1.輸入信息*n); printf(*2.輸出信息*n); printf(*3.查詢信息*n); printf(*4.退出系統(tǒng)*nnn); printf(=nn); printf(*請選擇要實(shí)現(xiàn)步驟的編號( 請確保已經(jīng)輸入信息! ):nn); scanf(%d,&choice); if(choice=4)break; else if(choice=1)flag1=0; else if(report=fopen(sportsdata.txt,r)!=null )flag2=0; else system(cls); printf(nnnn系統(tǒng)中無任何信息!nn請

14、先輸入信息!nnnn); while(flag1 & flag2);4 測試運(yùn)行程序,進(jìn)入系統(tǒng)主菜單。用戶可以選擇輸入、輸出、查詢信息或退出系統(tǒng),界面如圖4-1所示。圖4 -1 系統(tǒng)主界面4-11輸入信息輸入1得到進(jìn)入輸入信息模塊。根據(jù)系統(tǒng)提示將以下信息輸入系統(tǒng)中:學(xué)校編號1,項(xiàng)目編號1,取前5名,獲得1個名次,是第5名;項(xiàng)目編號2,取前3名,獲得3個名次,分別是1、2、3名。學(xué)校編號2,項(xiàng)目編號1,取前5名,獲得4個名次,分別是1、2、3、4名;項(xiàng)目編號2,取前5名,獲得0個名次。輸入信息后,會自動存檔,并提示存檔成功,然后自動返還主菜單,如圖4-2所示。圖4-2信息成功輸入系統(tǒng)并存入了文檔

15、 4.12輸出信息輸入2進(jìn)入輸出信息模塊,該模塊分四項(xiàng),分別代表一種輸出方式,如圖4-3所示。圖4-3 輸入信息模塊界面用戶可以按照自己的喜好,選擇一種方式輸入信息,輸入2返回輸出信息模塊,輸入0返回主菜單。如圖79分別是按照學(xué)校編號、學(xué)??偡?、女團(tuán)總分輸出的情況。圖4-4 按學(xué)??偡州敵鰣D4-5 按學(xué)??偡州敵鰣D4-6 按女團(tuán)總分輸出4.13查詢信息輸入3進(jìn)入信息查詢模塊,該模塊分為兩項(xiàng),如圖4-7所示。圖4-7 信息查詢模塊用戶可以選擇不同菜單進(jìn)行查詢,如圖4-8和圖4-9分別是按照學(xué)校編號和項(xiàng)目編號查詢的情況。圖4-8 按學(xué)校編號查詢圖4-9 按項(xiàng)目編號查詢4.14退出系統(tǒng)在主菜單下輸入

16、4可以退出系統(tǒng),并有中文提示,如圖所示。圖4-10 退出系統(tǒng)5 課程設(shè)計(jì)總結(jié)5.1 調(diào)試中遇到的較重要問題回顧5.11提出問題:所有輸入輸出內(nèi)容只能在一屏內(nèi)顯示,學(xué)過c語言,很知道”n”是換行,”f”是換屏的,可是在這里就是無法實(shí)現(xiàn)。解決問題: 輸入clrscr();5.12提出問題:設(shè)置選項(xiàng),供用戶輸入選擇時,當(dāng)按任意鍵時都會跳入下一步操作,或者直接退出系統(tǒng)。分析問題:在供用戶選擇時,提供了幾個選項(xiàng),就寫幾個case語句,但是當(dāng)用戶輸入的并不是這幾個數(shù)字時,系統(tǒng)就不能做出正確判斷。解決問題:修改case語句,添加default語句提示出錯,要求重新輸入。源代碼如下:default:clrsc

17、r(); /*清屏*/printf(輸入錯誤,請重新選擇); 5.13提出問題:用戶在系統(tǒng)主菜單上進(jìn)行選擇時,若沒有輸入任何初始信息,而選擇輸出或查詢操作,系統(tǒng)也會做出相應(yīng)操作。解決問題:增加標(biāo)識變量作為循環(huán)終止變量,用來判斷系統(tǒng)中是否已經(jīng)輸入了信息。若沒有就提示用戶先輸入信息。5.2 算法的效率及改進(jìn)設(shè)想算法的效率:總的來講,嚴(yán)重引響執(zhí)行速度的便是查找,查找任意一個數(shù)據(jù),便要將其所在的結(jié)構(gòu)從頭至尾遍歷一次,耗費(fèi)大量的時間。改進(jìn)設(shè)想:因大部分顯示均是以學(xué)校為單位,所以將以由有關(guān)人的各種信息為集合的結(jié)構(gòu)改為以由有關(guān)學(xué)校的各種信息為集合的結(jié)構(gòu)。5.3 心得體會在這次上機(jī)過程中遇到過一些問題,但經(jīng)過

18、不懈努力,解決了部分,還有的現(xiàn)在不能解決,留待日后思考和解決。比如說在運(yùn)用數(shù)據(jù)結(jié)構(gòu)排序的時候,方法的選擇上,總是想用時間復(fù)雜度小的算法,但結(jié)果出了問題,最后還是用了我們熟悉的選擇法排序。 在編寫之前,做整體規(guī)劃和詳細(xì)設(shè)計(jì)很重要。只有思路清晰,設(shè)計(jì)合理可行,編碼才有可能有的放矢,才能更加有效的完成任務(wù)。本次集中上機(jī)實(shí)驗(yàn),對我來說可以算是一次挑戰(zhàn),因?yàn)樵诶碚搶W(xué)習(xí)中沒有好好的掌握,現(xiàn)在要獨(dú)立完成一個較復(fù)雜的程序編寫,確實(shí)有一點(diǎn)困難。但我對于難度一向是以積極迎戰(zhàn)的態(tài)度來面對,認(rèn)真積極努力完成這次集中上機(jī)的任務(wù)。對我來說這是一次很好的機(jī)會,同時我也很好的把握了這次機(jī)會,認(rèn)真的完成了此次上機(jī)學(xué)習(xí)的任務(wù),對

19、自己今后在程序編寫方面以及文檔撰寫方面相信會有很大的幫助,在此也對學(xué)校安排這樣一次學(xué)習(xí)表示感謝,最后希望自己在數(shù)據(jù)結(jié)構(gòu)以及計(jì)算機(jī)的其他學(xué)習(xí)方面能夠得到很好的提高。參考文獻(xiàn)1李云清、楊慶紅、揭安全.數(shù)據(jù)結(jié)構(gòu)(c語言版)m.人民郵電大學(xué)出版社,2004.62潘彥.算法設(shè)計(jì)與分析基礎(chǔ)m.北京:清華大學(xué)出版社,2007.13肖夢強(qiáng)、曲秀清.軟件工程原理、方法與應(yīng)用m.中國水利水電出版社,2005.104 呂鳳翥.c+語言程序設(shè)計(jì)(第2版).電子工業(yè)出版社,2007.25 嚴(yán)蔚敏、吳偉民.數(shù)據(jù)結(jié)構(gòu)(c語言版)m.清華大學(xué)出版社,2002.9附錄源代碼:#include#include#include #

20、include #define n 2/學(xué)校數(shù)目 #define m 1/男子項(xiàng)目數(shù)目 #define w 1/女子項(xiàng)目數(shù)目#define null 0int flag1=1;int flag2=1;/全局變量,用來標(biāo)識是否已經(jīng)向系統(tǒng)輸入信息file *report;/定義項(xiàng)目結(jié)點(diǎn)的類型typedef struct int itemnum; /項(xiàng)目編號 int top; /項(xiàng)目取名次的數(shù)目,由用戶定義3或5 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode; /定義學(xué)校結(jié)點(diǎn)類型typedef structint schoolnum; /學(xué)校編號 int score;

21、 /學(xué)??偡?int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnode cm+w; /項(xiàng)目數(shù)組schoolnode;schoolnode hn;/定義一個學(xué)校結(jié)點(diǎn)數(shù)組/信息輸入模塊,用來輸入信息,建立系統(tǒng)void inputinformation() int i,j,k,s; for(i=0;in;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /初始化各結(jié)點(diǎn) for(i=0;in | hi.schoolnum=0);/輸入學(xué)校結(jié)點(diǎn)信息 for(j=0;jm+w | hi.cj.itemnum=0); do printf(

22、*取前3名or前5名:); scanf(%d,&hi.cj.top);while(hi.cj.top!=3 & hi.cj.top!=5); printf(*獲得幾個名次:); scanf(%d,&k); /輸入項(xiàng)目信息 for(s=0;s5;s+) hi.cj.ranges=0, hi.cj.marks=0; /初始化排名和分?jǐn)?shù) for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /輸入所獲名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; ca

23、se 1: hi.cj.marks=5; break; case 2: hi.cj.marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.sco

24、re=hi.score+hi.cj.marks;/按取前三名還是取前五名分別記分 if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子項(xiàng)目則記到男子分?jǐn)?shù)里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子項(xiàng)目則記到女子項(xiàng)目里面去 printf(n); /信息輸出模塊,用來輸出信息,可以選擇按不同的方式輸出信息void output() int choice,i,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號輸出.*n); printf(*2.按學(xué)校總分輸出.*n); pri

25、ntf(*3.按男團(tuán)總分輸出.*n); printf(*4.按女團(tuán)總分輸出.*n); printf(nn* 請選擇編號*nn:); scanf(%d,&choice); switch(choice) case 1: /按編號順序輸出for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hi.schoolnum); printf(*學(xué)??偡?%dn ,hi.score); printf(*男團(tuán)總分:%dn,hi.mscore); printf(*女團(tuán)總分: %dnnn,hi.wscore); break; case 2: /按學(xué)??偡州敵?for(i=0;in;i+)remembe

26、ri=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; / 用冒泡排序方法,用輔助數(shù)組記住學(xué)校結(jié)點(diǎn)下標(biāo) for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團(tuán)總分:%dn,hrememberi.mscore); printf(*女團(tuán)總分: %dnnn,hrememberi.ws

27、core);/按所記下標(biāo)順序輸出 break; case 3: /按男團(tuán)總分輸出 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團(tuán)總分:%dn,hrememberi.msc

28、ore); printf(*女團(tuán)總分: %dnnn,hrememberi.wscore); break; case 4: /按女團(tuán)總分輸出 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in)printf(錯誤:這個學(xué)校沒有參加此次運(yùn)動會!nnn); elseprintf(要查詢的項(xiàng)目編號:); scanf(%d,&j); if(jm+w|j=0) prin

29、tf(此次運(yùn)動會沒有這個項(xiàng)目nnn);/學(xué)校編號超出范圍,則輸出警告 else printf(這個項(xiàng)目取前 %d名,該學(xué)校的成績?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次運(yùn)動會不包括這個項(xiàng)目.nnn);/項(xiàng)目編號超出范圍則輸出警告elseprintf(該項(xiàng)目取前 %d名,取得名次的學(xué)校n,h0.cs-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學(xué)校編號:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /輸出該項(xiàng)目取得名次學(xué)校

30、的成績 printf(nnn繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;void writedata() /把數(shù)據(jù)存儲在文件中 /file *report; int i; if(report=fopen(sportsdata.txt,w)=null) printf(文件不存在,不能打開文件!n); exit(1); for(i=0;in;i+)fwrite(&hi,sizeof(schoolnode),1,report); fclose(report); /按頭結(jié)點(diǎn)塊寫入 void readdata() /讀出文件中數(shù)據(jù)的函數(shù) /file *report; int i,j,s; if(report=fopen(sportsdata.txt,r)=null) printf(文件不存在,不能打開文件!n); exit(1); for(i=0;in;i+) /printf(*學(xué)校編號:); fread(&hi.schoolnum,sizeof(int),1,report); /printf(*學(xué)??偡?); fread(&hi.score,sizeof(int),1,report); /printf(%dn,k); /printf(*男團(tuán)總分:); fread(&

溫馨提示

  • 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

提交評論