運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)1_第1頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)1_第2頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)1_第3頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)1_第4頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)1_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)用文檔*實(shí)踐教學(xué)*蘭州理工大學(xué)軟件學(xué)院2011年秋季學(xué)期計(jì)算機(jī)應(yīng)用基礎(chǔ) 課程設(shè)計(jì)題 目:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)專業(yè)班級(jí):軟件技術(shù)(2)班姓 名:劉正翔學(xué) 號(hào):11700215指導(dǎo)教師:張墨逸成 績(jī):摘要1運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) 2.1問題描述與分析 2.1.1 課程設(shè)at目的 21.2 系統(tǒng)需求分析 22總體設(shè)計(jì)3.3詳細(xì)設(shè)計(jì)4.3.1 數(shù)據(jù)類型及重要變量的定義 43.2 函數(shù)的設(shè)計(jì)和實(shí)現(xiàn) 54編碼95測(cè)試136課程設(shè)計(jì)總結(jié)186.1 調(diào)試中遇到的較重要問題回顧 186.2 算法的效率及改進(jìn)設(shè)想 19致譚巾20.參考文獻(xiàn)21.附錄22.文案大全C語言通常別稱為高級(jí)語言中的中級(jí)計(jì)算機(jī)語言。C語言由于它

2、的可移植性和高效率,各種C語言編譯程序均可產(chǎn)生非常緊湊、 執(zhí)行快捷的目標(biāo)碼。它比任何一種BASIC語言編譯 程序的目標(biāo)碼都緊湊、快速。這就要求有較高的理論水平,而且還要求有實(shí)際的動(dòng)手能力。 因此掌握C語言程序設(shè)計(jì)是學(xué)好軟件技術(shù)的第一步。本課程設(shè)計(jì)的主要目的是提高實(shí)踐能力,包括提高C語言的編程能力,長(zhǎng)期以來,注重書本知識(shí),輕視實(shí)際動(dòng)手設(shè)計(jì)能力是教學(xué)中普遍存在的現(xiàn)象。 進(jìn)行課程設(shè)計(jì)的目的就是要 改變這種狀況,使學(xué)習(xí)者既具有完備的理論知識(shí),也能夠解決在實(shí)際學(xué)習(xí),生活工作中遇到 的問題。學(xué)生應(yīng)該能夠把學(xué)習(xí)到的理論知識(shí)運(yùn)用到實(shí)際中去,將知識(shí)轉(zhuǎn)變?yōu)閷?shí)際的能力,同 時(shí)通過這些理論知識(shí)和實(shí)際的應(yīng)用推動(dòng)理論和實(shí)

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

4、分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能。1.2系統(tǒng)需求分析問題描述:參加運(yùn)動(dòng)會(huì)有 n個(gè)學(xué)校,學(xué)校編號(hào)為1no比賽分成m個(gè)男子項(xiàng)目,和 w個(gè)女子項(xiàng)目。 項(xiàng)目編號(hào)為男子1 m,女子m+1m+w不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)。功能要求:1)可以輸入各個(gè)學(xué)校各個(gè)項(xiàng)目的前三名或前五名的成績(jī);2)能統(tǒng)計(jì)各學(xué)??偡郑?)可以按學(xué)校編號(hào)或名稱、學(xué)??偡?、男女團(tuán)體總分排序輸出;4)可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校;5)數(shù)據(jù)存入

5、文件并能隨時(shí)查詢;6)規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱。輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形。界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。2總體設(shè)計(jì)2.1 系統(tǒng)功能設(shè)計(jì)根據(jù)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)問題的分析和設(shè)計(jì)要求,可以將該系統(tǒng)可以分為三個(gè)模塊:信息統(tǒng)計(jì)模塊、 信息輸出模塊、信息查詢模塊,其系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。(1)信息統(tǒng)計(jì)模實(shí)現(xiàn)信息的輸入、統(tǒng)計(jì)、存檔。(2)信息輸出模塊,實(shí)現(xiàn)信息的輸出。(3)信息查詢實(shí)現(xiàn)信息的查詢。運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)信息統(tǒng)計(jì)模塊信息輸出模塊信息查詢模塊輸入信息分?jǐn)?shù)統(tǒng)計(jì)信息存檔查詢信息數(shù)據(jù)存儲(chǔ)讀出數(shù)據(jù)系統(tǒng)功能

6、結(jié)構(gòu)圖2.2 函數(shù)構(gòu)造根據(jù)系統(tǒng)功能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的幾個(gè)基本的函數(shù),其方法名和功 能如表1所示。表1函數(shù)功能表函數(shù)功能void inputinformation()輸入和統(tǒng)計(jì)信息函數(shù)void output()輸出信息函數(shù)void inquiry()查詢信息函數(shù)void writedata()數(shù)據(jù)存儲(chǔ)函數(shù)void readdata()讀入數(shù)據(jù)函數(shù)3詳細(xì)設(shè)計(jì)3.1 數(shù)據(jù)類型及重要變量的定義(1)定義運(yùn)動(dòng)項(xiàng)目數(shù)據(jù)類型,用于存放運(yùn)動(dòng)項(xiàng)目,包括項(xiàng)目編號(hào)、項(xiàng)目所取名次數(shù)、名次、分?jǐn)?shù)。定義項(xiàng)目結(jié)點(diǎn)的類型 typedef struct int itemnum; / 項(xiàng)目編號(hào)int top;項(xiàng)目取

7、名次的數(shù)目,由用戶定義3或5int range5; 名次int mark5; 分?jǐn)?shù) itemnode;(2)定義學(xué)校數(shù)據(jù)類型,用來存儲(chǔ)參賽學(xué)校信息,包括學(xué)校編號(hào)、學(xué)??偡?、男團(tuán)總分、女團(tuán)總分、項(xiàng)目數(shù)組。定義學(xué)校結(jié)點(diǎn)類型typedef structint schoolnum;學(xué)校編號(hào)int score;學(xué)??偡謎nt mscore;男團(tuán)體總分int wscore;女團(tuán)體總分itemnode cm+w; 項(xiàng)目數(shù)組schoolnode;(3)定義學(xué)校數(shù)組schoolnode hn。采用數(shù)組結(jié)構(gòu)有利于隨機(jī)的存儲(chǔ)和查詢。定義全局標(biāo)志變量int flagl 、flag2 ,分別用以標(biāo)志是否已經(jīng)向系統(tǒng)輸入了

8、信息和標(biāo)志系統(tǒng)中是否已經(jīng)存在信息。定義文件指針FILE * report ,用來指向存檔的文件。3.2 函數(shù)的設(shè)計(jì)和實(shí)現(xiàn)在概要設(shè)計(jì)中已經(jīng)對(duì)該系統(tǒng)涉及的抽象數(shù)據(jù)類型和函數(shù)及其功能做了說明,這里就不在對(duì)每個(gè)函數(shù)進(jìn)行一一說明,只對(duì)其中比較重要的功能模塊進(jìn)行描述。(1)信息輸入及分?jǐn)?shù)統(tǒng)計(jì)功能void inputinformation()為輸入信息及分?jǐn)?shù)統(tǒng)計(jì)函數(shù)。在輸入信息的同時(shí)進(jìn)行分?jǐn)?shù)的統(tǒng)計(jì)??梢暂斎敫鱾€(gè)學(xué)校各項(xiàng)目前三名或前五名的成績(jī)。在輸入學(xué)校的參賽項(xiàng)目時(shí),結(jié)果取前三名還是前五名自己定,用一個(gè)選擇語句實(shí)現(xiàn)。利用 swith語句前三名的分?jǐn)?shù)賦為5、3、2,前五名的成績(jī)賦為7, 5、3、2、1 ,未取得

9、成績(jī)則賦為0。并統(tǒng)計(jì)團(tuán)體總分,男團(tuán)總分和女團(tuán)總分。其主要功能代碼如下:for(s=0;sk;s+)printf(* 名次:”);scanf(%d,&hi.cj.rangesD;/ 輸入所獲名次信息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;elseswitch(hi.cj.ranges) case 0: hi.cj.marks=0; br

10、eak;實(shí)用文檔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.score=hi.score+hi.cj.marks;(2)信息輸出功能void output()為輸出函數(shù)。列出一個(gè)輸出目錄利用swich語句使函數(shù)按學(xué)校編號(hào)輸出或按學(xué)??偡?、男團(tuán)總分、女團(tuán)總分由高到低排序輸出。利用輔助數(shù)組remember口和冒泡排序的方法使之按分?jǐn)?shù)的由高到低輸出。

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

12、,應(yīng)在main()函數(shù)中調(diào)用其它函數(shù)時(shí)再調(diào)用main()函數(shù),如: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)中沒有任何信息,用戶就不能選擇輸入或查詢操作,此時(shí)會(huì)輸出提示信息,并返回 主菜單。直到用戶輸入了信息或退出系統(tǒng)。其實(shí)現(xiàn)代碼如下doprint

13、f(= 歡迎使用=n);printf(nn*運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*n);printf(nn*1.輸入信息*n);printf(*2.輸出信息*n);printf(*3.查詢信息*n);printf(*4.退出系統(tǒng)*nnn);printf(=nn);printf(*請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào)(請(qǐng)確保已經(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(nn

14、nn系統(tǒng)中無任何信息!nn請(qǐng)先輸入信息!!nnnn);while(flag1 & flag2);4編碼信息輸出功能void output()為輸出函數(shù)。列出一個(gè)輸出目錄利用 swich語句使函數(shù)按學(xué)校編號(hào)輸出或 按學(xué)校總分、男團(tuán)總分、女團(tuán)總分由高到低排序輸出。利用輔助數(shù)組 remember口和冒泡排序 的方法使之按分?jǐn)?shù)的由高到低輸出。利用循環(huán)語句 do while()當(dāng)輸入2時(shí)返回輸出目錄,輸 入0是跳出循環(huán)返回主菜單。其流程圖如圖 2所示。跳出結(jié)束圖2輸出信息模塊流程圖信息輸出模塊,用來輸出信息,可以選擇按不同的方式輸出信息void output。int choice,i,j,k;int r

15、emembern;int sign;do文案大全printf( printf( printf( printf(*1*2”*”*3.*4.按學(xué)校編號(hào)輸出. 按學(xué)??偡州敵? 按男團(tuán)總分輸出. 按女團(tuán)總分輸出.*n);*n);*n);*n);請(qǐng)選擇編號(hào) *nn:);printf(nn* scanf(%d,&choice);switch(choice)case 1: 按編號(hào)順序輸出for(i=0;in;i+)學(xué)校編號(hào):%dn,hi.schoolnum);printf(nn*printf( printf( printf( break;”*”*”*學(xué)校總分:dn ,hi.score);男團(tuán)總分:dn,h

16、i.mscore);女團(tuán)總分:dnnn,hi.wscore);case 2: 按學(xué)??偡州敵鰂or(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;/用冒泡排序方法,用輔助數(shù)組記住學(xué)校結(jié)點(diǎn)下標(biāo)for(i=0;in;i+)printf(nn* 學(xué)校編號(hào):%dn,hrememberi.schoolnum);printf(* 學(xué)??偡?%dn ,hrememberi.score);printf(*

17、男團(tuán)總分:dn,hrememberi.mscore);printf(* 女團(tuán)總分:%dnnn,hrememberi.wscore);按所記下標(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é)校編號(hào):dn,hrememberi.schoolnum);printf(* 學(xué)??偡?%dn ,h

18、rememberi.score);printf(* 男團(tuán)總分:%dn,hrememberi.mscore);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;i = 小口山口袋運(yùn)遼會(huì)分?jǐn)?shù)雷理衰統(tǒng),exeA j sz 一 _XQXSXUrfOXA編思總總

19、君團(tuán)團(tuán)Rx子男女像憤憒安J:i JXJW;!12 3 4! 3 3 3 JJUJfcJ 3m 33771 737, Rl-1*;t- -17 H_1 JhJJJhJJjhJJJhJJjhJihJ-,J;3 3J3UJ,hJ3irr圖6輸入信息模塊界面用戶可以按照自己的喜好,選擇一種方式輸入信息,輸入2返回輸出信息模塊,輸入0返回主菜單。如圖79分別是按照學(xué)校編號(hào)、學(xué)校總分、女團(tuán)總分輸出的情況。文案大全實(shí)用文檔 - 3abug闞會(huì)分?jǐn)?shù)言理至統(tǒng).w施 MMENMEHMEMMNWEK - M 箕舞翼苴St M wt M St M it M #t M it M U M *T有*F .按女團(tuán)總分輸出FT

20、 - i*,1=* m i-r *i-r i_u,i_r xu u 1_1 u -,u t-t uj r_i H u -j j u j U t-a *1!RiPfrHi_iHrR_!H7S_fl7frRrW_fl7frR7frHrW_:HW I cj J L * Jh e_ TTfrRiWMrwlRrMifrTHRTFrKTKrtTPrfrTPrraTHrHHMrHTHr:1口1 .走,:&.總 將就見 I1 1 111筆 EmE.矍見見請(qǐng)選擇2繼續(xù)*酬跳出圖7按學(xué)校編號(hào)輸出K 6 口 cbugXi動(dòng)會(huì)分歌苜理笈統(tǒng).一回 S3C M M X H今Z干戈=健級(jí)*G跳出2 ? ? OM請(qǐng)選擇編號(hào),

21、愜,怩M幗*,幗*幀*$科* M計(jì)M * M苜M(fèi) =匚費(fèi)夯編、tMe.F 后.$中男女DZ爰力編總?cè)?1=10圖8按學(xué)??偡州敵鑫陌复笕?應(yīng)C:mbugit的的雉整物 q出出出 X.rflL.n SI 總總總 校園見 學(xué)男女 庭憤能v 7 y T, wj u r 1 一 r II 1 .S- _ l ”, 7 7 0 1 12 11 1113-p褊目回電 編區(qū)總虬 團(tuán)團(tuán) 團(tuán)團(tuán) 噫:1枝 噫熊西請(qǐng)選擇2建續(xù)小跳出圖9按女團(tuán)總分輸出(3)查詢信息輸入3進(jìn)入信息查詢模塊,該模塊分為兩項(xiàng),如圖10所示圖10信息查詢模塊用戶可以選擇不同菜單進(jìn)行查詢,如圖11和圖12分別是按照學(xué)校編號(hào)和項(xiàng)目編號(hào)查詢 的

22、情況。I C:Dubug怔就會(huì)分?jǐn)?shù)室,貨上箕。沖*1 :按學(xué)校編號(hào)查詢*2 :按項(xiàng)目編號(hào)查詢1 乂千志:亥HT : *- 戶 魴號(hào)號(hào)名 關(guān)舄皋S ?-12 2 2 2校的 的 次 名1早一一蒯:5:1:2:3:4 第次次要次 懿名名名名名(4)退出系統(tǒng)在主菜單下輸入4可以退出系統(tǒng),并有中文提示,如圖所示 c :De bu6運(yùn)前金龕女統(tǒng)計(jì)奈婉后稅11 回S3K*KdNrM#MWeWWK*ME嗦動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) i*自S.J思統(tǒng) 入出詢出 退1火 3丁i請(qǐng)選擇要實(shí)現(xiàn)步噱的編號(hào)(請(qǐng)確保已經(jīng)輸入信息,: 親出系統(tǒng),謝謝使用,Pfcss Any key to continue圖13退出系統(tǒng)6課程設(shè)計(jì)總結(jié)

23、6.1 調(diào)試中遇到的較重要問題回顧(1)提出問題:所有輸入輸出內(nèi)容只能在一屏內(nèi)顯示,學(xué)過 c語言,很知道 n”是換 行,” f”是換屏的,可是在這里就是無法實(shí)現(xiàn)。解決問題:輸入clrscr();(2)提出問題:設(shè)置選項(xiàng),供用戶輸入選擇時(shí),當(dāng)按任意鍵時(shí)都會(huì)跳入下一步操作, 或者直接退出系統(tǒng)。分析問題:在供用戶選擇時(shí),提供了幾個(gè)選項(xiàng),就寫幾個(gè)case語句,但是當(dāng)用戶輸入的 并不是這幾個(gè)數(shù)字時(shí),系統(tǒng)就不能做出正確判斷。解決問題:修改case語句,添加default語句提示出錯(cuò),要求重新輸入。源代碼如下:Default: clrscr();/* 清屏*/printf(輸入錯(cuò)誤,請(qǐng)重新選擇);(3)提出

24、問題:用戶在系統(tǒng)主菜單上進(jìn)行選擇時(shí),若沒有輸入任何初始信息,而選擇 輸出或查詢操作,系統(tǒng)也會(huì)做出相應(yīng)操作。解決問題:增加標(biāo)識(shí)變量作為循環(huán)終止變量,用來判斷系統(tǒng)中是否已經(jīng)輸入了信息。若 沒有就提示用戶先輸入信息。6.2 算法的效率及改進(jìn)設(shè)想算法的效率:總的來講,嚴(yán)重影響執(zhí)行速度的便是查找,查找任意一個(gè)數(shù)據(jù),便要將其 所在的結(jié)構(gòu)從頭至尾遍歷一次,耗費(fèi)大量的時(shí)間。改進(jìn)設(shè)想:因大部分顯示均是以學(xué)校為單位,所以將以由有關(guān)人的各種信息為集合的結(jié) 構(gòu)改為以由有關(guān)學(xué)校的各種信息為集合的結(jié)構(gòu)。致謝這次的程序?qū)嵲O(shè)計(jì)實(shí)驗(yàn)是對(duì)我們進(jìn)入大學(xué)以來學(xué)習(xí)程序設(shè)計(jì)語言結(jié)果的一次大檢驗(yàn)。自己動(dòng)手,自己發(fā)現(xiàn)和解決問題。發(fā)現(xiàn)了自己的

25、許多不足。平時(shí)沒有掌握好的知識(shí)在這次實(shí)驗(yàn) 中徹底暴露出來,經(jīng)過不斷思考,不斷查閱資料和上機(jī)運(yùn)行,解決其中大部分問題,當(dāng)然還 存在一些問題沒有解決。我相信在以后的學(xué)習(xí)能夠解決好它們。通過本課題程序的設(shè)計(jì)、調(diào)試以及論文的編寫,我不僅提高了利用C語言編程及識(shí)錯(cuò)能 力和撰寫論文的能力,而且它使我更加深入的了解到了計(jì)算機(jī)應(yīng)用基礎(chǔ)這門課在現(xiàn)實(shí)生 活中的重要性。在這次課程設(shè)計(jì)過程中遇到過一些問題,但經(jīng)過不懈努力,解決了部分,還有的現(xiàn)在不 能解決,留待日后思考和解決。比如說在運(yùn)用數(shù)據(jù)結(jié)構(gòu)排序的時(shí)候,方法的選擇上,總是想用時(shí)間復(fù)雜度小的算法,但 結(jié)果出了問題,最后還是用了我們熟悉的選擇法排序。在編寫之前,做整體

26、規(guī)劃和詳細(xì)設(shè)計(jì)很重要。只有思路清晰,設(shè)計(jì)合理可行,編碼才有 可能有的放矢,才能更加有效的完成任務(wù)。本次課程設(shè)計(jì),對(duì)我來說可以算是一次挑戰(zhàn),因?yàn)樵诶碚搶W(xué)習(xí)中沒有好好的掌握,現(xiàn)在要獨(dú)立完成一個(gè)較復(fù)雜的程序編寫, 確實(shí)有一點(diǎn)困難。但我對(duì)于難度一向是以積極迎戰(zhàn)的態(tài) 度來面對(duì),認(rèn)真積極努力完成這次課程設(shè)計(jì)的任務(wù)。對(duì)我來說這是一次很好的機(jī)會(huì),同時(shí)我 也很好的把握了這次機(jī)會(huì),認(rèn)真的完成了此次的任務(wù),對(duì)自己今后在程序編寫方面以及文檔 撰寫方面相信會(huì)有很大的幫助,在此也對(duì)學(xué)校安排這樣一次學(xué)習(xí)表示感謝,最后希望自己在數(shù)據(jù)結(jié)構(gòu)以及計(jì)算機(jī)的其他學(xué)習(xí)方面能夠得到很好的提高。參考文獻(xiàn)1王連相,C/C+程序設(shè)計(jì)教程,中國(guó)鐵

27、道出版社,20062譚浩強(qiáng),C語言程序設(shè)計(jì),清華大學(xué)出版社,19993譚浩強(qiáng),C程序設(shè)計(jì)題解與上機(jī)指導(dǎo),清華大學(xué)出版社,19994王連相,C/C+程序設(shè)計(jì)上機(jī)指導(dǎo)與測(cè)試,中國(guó)鐵道出版社,20065 C語言函數(shù)手冊(cè),機(jī)械工業(yè)出版社,19996 C語言的實(shí)際應(yīng)用,安徽科學(xué)技術(shù)出版社,2000附錄程序:#include#include#include #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)識(shí)是否已經(jīng)向系統(tǒng)輸入信息FIL

28、E *report;定義項(xiàng)目結(jié)點(diǎn)的類型typedef structint itemnum; / 項(xiàng)目編號(hào)int top;項(xiàng)目取名次的數(shù)目,由用戶定義 3或5int range5; 名次int mark5; 分?jǐn)?shù)itemnode;定義學(xué)校結(jié)點(diǎn)類型typedef structint schoolnum;學(xué)校編號(hào)int score;學(xué)校總分int mscore;男團(tuán)體總分int wscore;女團(tuán)體總分itemnode cm+w; 項(xiàng)目數(shù)組schoolnode;schoolnode hn;定義一個(gè)學(xué)校結(jié)點(diǎn)數(shù)組/void inputinformation()int i,j,k,s;for(i=0;in

29、;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); doprintf(* 取前 3 名 or 前 5 名:);scanf(%d,&hi.cj.top);while(hi.cj.top!=3 & hi.cj.top!=5);printf(* 獲得幾個(gè)名次:”); scanf(%d,&k); 輸入項(xiàng)目信息for(s=0;s5;s+)hi.cj.ranges=0, hi.cj.marks=0;初始化排名和分?jǐn)?shù)for(s=0;

30、sk;s+) printf(* 名次:);scanf(%d,&hi.cj.rangesD;輸入所獲名次信息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;elseswitch(hi.cj.ranges)case 0: hi.cj.marks=0; break;case 1: hi.cj.marks=7; break;case 2: hi.cj

31、.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;按取前三名還是取前五名分別記分if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;是男子項(xiàng)目則記到男子分?jǐn)?shù)里面去elsehi.wscore=hi.wscore+hi.cj.marks;是女子項(xiàng)目則記到女子項(xiàng)目里面去 printf(n);信息輸出模塊,用來輸出信息,可以選擇按不同的方式輸出信息void

32、output。int choice,i,j,k;int remembern;int sign;doprintf(”*1.printf(”*2.printf(”*3.按學(xué)校編號(hào)輸出按學(xué)??偡州敵霭茨袌F(tuán)總分輸出*n);*n);*n);printf(”*4.按女團(tuán)總分輸出*n);printf(nn*請(qǐng)選擇編號(hào)*nn:);scanf(%d,&choice);switch(choice)case 1: 按編號(hào)順序輸出for(i=0;in;i+)printf(nn* 學(xué)校編號(hào):dn,hi.schoolnum);printf(*學(xué)??偡?%dn ,hi.score);printf(* 男團(tuán)總分:%dn,hi

33、.mscore);printf(*女團(tuán)總分:%dnnn,hi.wscore); break;case 2: 按學(xué)校總分輸出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;/用冒泡排序方法,用輔助數(shù)組記住學(xué)校結(jié)點(diǎn)下標(biāo)for(i=0;in;i+)printf(nn*學(xué)校編號(hào):%dn,hrememberi.schoolnum);printf(* 學(xué)校總分:%dn ,hrememberi.sc

34、ore);printf(* 男團(tuán)總分:dn,hrememberi.mscore);printf(* 女團(tuán)總分:%dnnn,hrememberi.wscore);按所記下標(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é)校編號(hào):dn,hrememberi.schoolnum);printf(

35、* 學(xué)校總分:%dn ,hrememberi.score);printf(* 男團(tuán)總分:%dn,hrememberi.mscore);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(錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!nnn);else

36、printf(要查詢的項(xiàng)目編號(hào):); scanf(%d,&j);if(jm+w|j=0)printf(此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目nnn);學(xué)校編號(hào)超出范圍,則輸出警告elseprintf(這個(gè)項(xiàng)目取前 d名,該學(xué)校的成績(jī)?nèi)缦拢簄, h0.cj-1.top);for(k=0;km+w|s=0)printf(此次運(yùn)動(dòng)會(huì)不包括這個(gè)項(xiàng)目.nnn);項(xiàng)目編號(hào)超出范圍則輸出警告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é)校編號(hào):d,名次:dn,hi.sch

37、oolnum,hi.cs-1.rangej);輸出該項(xiàng)目取得名次學(xué)校的成績(jī)printf(nnn 繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2);break;void writedata()把數(shù)據(jù)存儲(chǔ)在文件中 /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,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論