版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. z. . - .可修編 .*實(shí)踐教學(xué)*理工大學(xué)軟件學(xué)院2011年秋季學(xué)期計(jì)算機(jī)應(yīng)用根底課程設(shè)計(jì)題目: 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) 專業(yè)班級(jí): 軟件技術(shù)(2)班 *: *正翔 *: 11700215 指導(dǎo)教師: *墨逸成績(jī):-. z.目 錄TOC o 1-3 h z uHYPERLINK l _Toc314151991摘要 PAGEREF _Toc314151991 h 1HYPERLINK l _Toc314151992運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) PAGEREF _Toc314151992 h 2HYPERLINK l _Toc3141519931 問題描述與分析 PAGEREF _Toc31415199
2、3 h 2HYPERLINK l _Toc3141519941.1 課程設(shè)計(jì)目的 PAGEREF _Toc314151994 h 2HYPERLINK l _Toc3141519951.2 系統(tǒng)需求分析 PAGEREF _Toc314151995 h 2HYPERLINK l _Toc3141519962總體設(shè)計(jì) PAGEREF _Toc314151996 h 3HYPERLINK l _Toc3141519973 詳細(xì)設(shè)計(jì) PAGEREF _Toc314151997 h 4HYPERLINK l _Toc3141519983.1 數(shù)據(jù)類型及重要變量的定義 PAGEREF _Toc314151
3、998 h 4HYPERLINK l _Toc3141519993.2 函數(shù)的設(shè)計(jì)和實(shí)現(xiàn) PAGEREF _Toc314151999 h 5HYPERLINK l _Toc3141520004 編碼 PAGEREF _Toc314152000 h 9HYPERLINK l _Toc3141520015 測(cè)試 PAGEREF _Toc314152001 h 13HYPERLINK l _Toc3141520026 課程設(shè)計(jì)總結(jié) PAGEREF _Toc314152002 h 18HYPERLINK l _Toc3141520036.1 調(diào)試中遇到的較重要問題回憶 PAGEREF _Toc3141
4、52003 h 18HYPERLINK l _Toc3141520046.2 算法的效率及改良設(shè)想 PAGEREF _Toc314152004 h 19HYPERLINK l _Toc314152005致謝 PAGEREF _Toc314152005 h 20HYPERLINK l _Toc314152006參考文獻(xiàn) PAGEREF _Toc314152006 h 21HYPERLINK l _Toc314152007附錄 PAGEREF _Toc314152007 h 22-. z.摘 要C語(yǔ)言通常別稱為高級(jí)語(yǔ)言中的中級(jí)計(jì)算機(jī)語(yǔ)言。C語(yǔ)言由于它的可移植性和高效率,各種C語(yǔ)言編譯程序均可產(chǎn)生非
5、常緊湊、執(zhí)行快捷的目標(biāo)碼。它比任何一種BASIC語(yǔ)言編譯程序的目標(biāo)碼都緊湊、快速。這就要求有較高的理論水平,而且還要求有實(shí)際的動(dòng)手能力。因此掌握C語(yǔ)言程序設(shè)計(jì)是學(xué)好軟件技術(shù)的第一步。本課程設(shè)計(jì)的主要目的是提高實(shí)踐能力,包括提高C語(yǔ)言的編程能力,長(zhǎng)期以來(lái),注重書本知識(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í)踐的開展。關(guān)鍵字:函數(shù),定義,子程序,文本編輯運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系
6、統(tǒng)1 問題描述與分析1.1 課程設(shè)計(jì)目的為了穩(wěn)固我們數(shù)據(jù)構(gòu)造知識(shí),加強(qiáng)我們的實(shí)際動(dòng)手能力和提高我們綜合素質(zhì),提高我們對(duì)計(jì)算機(jī)軟件工程的認(rèn)識(shí)學(xué)院組織我們進(jìn)展了數(shù)據(jù)構(gòu)造課程設(shè)計(jì)。此次課程設(shè)計(jì)要到達(dá)以下幾點(diǎn)目的:1了解并掌握數(shù)據(jù)構(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ā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等根本方法和技能。1.2 系統(tǒng)需求分析問題描述:參加
7、運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n。比賽分成m個(gè)男子工程,和w個(gè)女子工程。工程編號(hào)為男子1m,女子m+1m+w。不同的工程取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。m=20,n=20。功能要求:1)可以輸入各個(gè)學(xué)校各個(gè)工程的前三名或前五名的成績(jī);2)能統(tǒng)計(jì)各學(xué)校總分;3)可以按學(xué)校編號(hào)或名稱、學(xué)??偡?、男女團(tuán)體總分排序輸出;4)可以按學(xué)校編號(hào)查詢學(xué)校*個(gè)工程的情況;可以按工程編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校;5)數(shù)據(jù)存入文件并能隨時(shí)查詢;6)規(guī)定:輸入數(shù)據(jù)形式和*圍:可以輸入學(xué)校的名稱,運(yùn)動(dòng)工程的名稱。輸出形
8、式:有中文提示,各學(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)功能構(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)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)信息查詢模塊信息輸出模塊信息查詢模塊信息輸出模塊 信息統(tǒng)計(jì)模塊 輸入信息分?jǐn)?shù)統(tǒng)計(jì)信息存檔讀出數(shù)據(jù)數(shù)據(jù)存儲(chǔ)查詢信息輸入信息分?jǐn)?shù)統(tǒng)計(jì)信息存檔讀出數(shù)據(jù)數(shù)據(jù)存儲(chǔ)查詢信息 圖1 . 系統(tǒng)功
9、能構(gòu)造圖2.2 函數(shù)構(gòu)造根據(jù)系統(tǒng)功能構(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)工程數(shù)據(jù)類型,用于存放運(yùn)動(dòng)工程,包括工程編號(hào)、工程所取名次數(shù)、名次、分?jǐn)?shù)。/定義工程結(jié)點(diǎn)的類型typedef struct int itemnum; /工程編號(hào) int to
10、p; /工程取名次的數(shù)目,由用戶定義3或5 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode;2定義學(xué)校數(shù)據(jù)類型,用來(lái)存儲(chǔ)參賽學(xué)校信息,包括學(xué)校編號(hào)、學(xué)??偡帧⒛袌F(tuán)總分、女團(tuán)總分、工程數(shù)組。/定義學(xué)校結(jié)點(diǎn)類型typedef structint schoolnum; /學(xué)校編號(hào) int score; /學(xué)校總分 int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnode cm+w; /工程數(shù)組schoolnode;3定義學(xué)校數(shù)組schoolnode hn。采用數(shù)組構(gòu)造有利于隨機(jī)的存儲(chǔ)和查詢。定義全局標(biāo)志變量int flag1、flag
11、2,分別用以標(biāo)志是否已經(jīng)向系統(tǒng)輸入了信息和標(biāo)志系統(tǒng)中是否已經(jīng)存在信息。定義文件指針FILE * report,用來(lái)指向存檔的文件。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é)校各工程前三名或前五名的成績(jī)。在輸入學(xué)校的參賽工程時(shí),結(jié)果取前三名還是前五名自己定,用一個(gè)選擇語(yǔ)句實(shí)現(xiàn)。利用swith語(yǔ)句前三名的分?jǐn)?shù)賦為5、3、2,前五名的成績(jī)賦為7
12、,5、3、2、1,未取得成績(jī)則賦為0。并統(tǒng)計(jì)團(tuán)體總分,男團(tuán)總分和女團(tuán)總分。其主要功能代碼如下: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;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
13、.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.score=hi.score+hi.cj.marks;2信息輸出功能void output( )為輸出函數(shù)。列出一個(gè)輸出目錄利用swich語(yǔ)句使函數(shù)按學(xué)校編號(hào)輸出或按學(xué)??偡?、男團(tuán)總分、女團(tuán)總分由高到低排序輸出。利用輔助數(shù)組remember和冒泡排序的方法使
14、之按分?jǐn)?shù)的由高到低輸出。利用循環(huán)語(yǔ)句do while( )當(dāng)輸入2時(shí)返回輸出目錄,輸入0是跳出循環(huán)返回主菜單。其流程圖如圖2所示。否開場(chǎng)顯示選擇菜單否開場(chǎng)顯示選擇菜單輸入選項(xiàng)輸入選項(xiàng)按學(xué)??偡州敵霭磳W(xué)校總分輸出按女子團(tuán)體總分輸出按學(xué)校編號(hào)輸出按男子團(tuán)體總分輸出按女子團(tuán)體總分輸出按學(xué)校編號(hào)輸出按男子團(tuán)體總分輸出是否跳出是否跳出是是跳出 完畢跳出 完畢圖2 輸出信息模塊流程圖3信息查詢功能void inquiry( )為查詢函數(shù)。列車一個(gè)查詢目錄利用swich 語(yǔ)句使函數(shù)按學(xué)校編號(hào)或工程編號(hào)查詢,輸出*學(xué)校的*個(gè)工程的得分情況或*個(gè)工程的前幾名的學(xué)校。再利用循環(huán)語(yǔ)句do while( )當(dāng)輸入2是
15、返回查詢目錄,輸入0時(shí)跳出循環(huán)返回主菜單。其程序流程圖如圖3所示。否開場(chǎng)跳出完畢是是否跳出按工程編號(hào)查詢按學(xué)校編號(hào)查詢輸入選項(xiàng)顯示選擇菜單否開場(chǎng)跳出完畢是是否跳出按工程編號(hào)查詢按學(xué)校編號(hào)查詢輸入選項(xiàng)顯示選擇菜單圖3 查詢信息模塊程序流程圖4主函數(shù)void main( )是主函數(shù)。列出主菜單,利用switch語(yǔ)句調(diào)用以上函數(shù)實(shí)現(xiàn)各個(gè)菜單的功能。想在每次查詢完畢想返回主菜單進(jìn)展其它項(xiàng)時(shí),應(yīng)在main( )函數(shù)中調(diào)用其它函數(shù)時(shí)再調(diào)用main( )函數(shù),如:switch(choice) case 1: printf(輸入信息:n);inputinformation();writedata();prin
16、tf(信息已存入檔案!);main(); case 2: printf(輸出信息:n);if(flag1)readdata();output();main();在進(jìn)入主菜單后為了確保系統(tǒng)中已經(jīng)輸入了信息,用標(biāo)志標(biāo)量flag1和flag2來(lái)控制循環(huán)。如果系統(tǒng)中沒有任何信息,用戶就不能選擇輸入或查詢操作,此時(shí)會(huì)輸出提示信息,并返回主菜單。直到用戶輸入了信息或退出系統(tǒng)。其實(shí)現(xiàn)代碼如下:doprintf(=歡送使用=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(
17、*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.t*t,r)!=null )flag2=0;else system(cls);printf(nnnn系統(tǒng)中無(wú)任何信息!nn請(qǐng)先輸入信息!nnnn); while(flag1 & flag2);4 編碼信息輸出功能void output( )為輸出函數(shù)。列出一個(gè)輸出目錄利用swich語(yǔ)句
18、使函數(shù)按學(xué)校編號(hào)輸出或按學(xué)校總分、男團(tuán)總分、女團(tuán)總分由高到低排序輸出。利用輔助數(shù)組remember和冒泡排序的方法使之按分?jǐn)?shù)的由高到低輸出。利用循環(huán)語(yǔ)句do while( )當(dāng)輸入2時(shí)返回輸出目錄,輸入0是跳出循環(huán)返回主菜單。其流程圖如圖2所示。否開場(chǎng)顯示選擇菜單否開場(chǎng)顯示選擇菜單輸入選項(xiàng)輸入選項(xiàng)按學(xué)??偡州敵霭磳W(xué)??偡州敵霭磁訄F(tuán)體總分輸出按學(xué)校編號(hào)輸出按男子團(tuán)體總分輸出按女子團(tuán)體總分輸出按學(xué)校編號(hào)輸出按男子團(tuán)體總分輸出是否跳出是否跳出是是跳出 完畢跳出 完畢圖2 輸出信息模塊流程圖/信息輸出模塊,用來(lái)輸出信息,可以選擇按不同的方式輸出信息void output() int choice,i
19、,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號(hào)輸出.*n); printf(*2.按學(xué)校總分輸出.*n); printf(*3.按男團(tuá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.mscor
20、e); 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 ,hremembe
21、ri.score); 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
22、.schoolnum); printf(*學(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;i+)
23、 printf(nn*學(xué)校編號(hào):%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團(tuán)總分:%dn,hrememberi.mscore); printf(*女團(tuán)總分: %dnnn,hrememberi.wscore); break; printf(請(qǐng)選擇 2 繼續(xù),0 跳出n); scanf(%d,&sign);while(sign=2); /循環(huán)執(zhí)行輸出語(yǔ)句5 測(cè)試運(yùn)行程序,進(jìn)入系統(tǒng)主菜單。用戶可以選擇輸入、輸出、查詢信息或退出系統(tǒng),界面如圖4所示。圖4 系統(tǒng)主界面1輸入信息輸入1得到進(jìn)入輸入信息模
24、塊。根據(jù)系統(tǒng)提示將以下信息輸入系統(tǒng)中:學(xué)校編號(hào)1,工程編號(hào)1,取前5名,獲得1個(gè)名次,是第5名;工程編號(hào)2,取前3名,獲得3個(gè)名次,分別是1、2、3名。學(xué)校編號(hào)2,工程編號(hào)1,取前5名,獲得4個(gè)名次,分別是1、2、3、4名;工程編號(hào)2,取前5名,獲得0個(gè)名次。輸入信息后,會(huì)自動(dòng)存檔,并提示存檔成功,然后自動(dòng)返還主菜單,如圖5所示。圖5 信息成功輸入系統(tǒng)并存入了文檔 2輸出信息輸入2進(jìn)入輸出信息模塊,該模塊分四項(xiàng),分別代表一種輸出方式,如圖6所示。圖6 輸入信息模塊界面用戶可以按照自己的喜好,選擇一種方式輸入信息,輸入2返回輸出信息模塊,輸入0返回主菜單。如圖79分別是按照學(xué)校編號(hào)、學(xué)校總分、女
25、團(tuán)總分輸出的情況。圖7 按學(xué)校編號(hào)輸出圖8 按學(xué)??偡州敵鰣D9 按女團(tuán)總分輸出3查詢信息輸入3進(jìn)入信息查詢模塊,該模塊分為兩項(xiàng),如圖10所示。圖10 信息查詢模塊用戶可以選擇不同菜單進(jìn)展查詢,如圖11和圖12分別是按照學(xué)校編號(hào)和工程編號(hào)查詢的情況。圖11 按學(xué)校編號(hào)查詢圖12 按工程編號(hào)查詢4退出系統(tǒng)在主菜單下輸入4可以退出系統(tǒng),并有中文提示,如下圖。圖13 退出系統(tǒng)6課程設(shè)計(jì)總結(jié)6.1 調(diào)試中遇到的較重要問題回憶1提出問題:所有輸入輸出內(nèi)容只能在一屏內(nèi)顯示,學(xué)過c語(yǔ)言,很知道n是換行,f是換屏的,可是在這里就是無(wú)法實(shí)現(xiàn)。解決問題: 輸入clrscr();2提出問題:設(shè)置選項(xiàng),供用戶輸入選擇時(shí)
26、,當(dāng)按任意鍵時(shí)都會(huì)跳入下一步操作,或者直接退出系統(tǒng)。分析問題:在供用戶選擇時(shí),提供了幾個(gè)選項(xiàng),就寫幾個(gè)case語(yǔ)句,但是當(dāng)用戶輸入的并不是這幾個(gè)數(shù)字時(shí),系統(tǒng)就不能做出正確判斷。解決問題:修改case語(yǔ)句,添加default語(yǔ)句提示出錯(cuò),要求重新輸入。源代碼如下:Default:clrscr(); /*清屏*/printf(輸入錯(cuò)誤,請(qǐng)重新選擇);3提出問題:用戶在系統(tǒng)主菜單上進(jìn)展選擇時(shí),假設(shè)沒有輸入任何初始信息,而選擇輸出或查詢操作,系統(tǒng)也會(huì)做出相應(yīng)操作。解決問題:增加標(biāo)識(shí)變量作為循環(huán)終止變量,用來(lái)判斷系統(tǒng)中是否已經(jīng)輸入了信息。假設(shè)沒有就提示用戶先輸入信息。6.2算法的效率及改良設(shè)想算法的效率
27、:總的來(lái)講,嚴(yán)重影響執(zhí)行速度的便是查找,查找任意一個(gè)數(shù)據(jù),便要將其所在的構(gòu)造從頭至尾遍歷一次,消耗大量的時(shí)間。改良設(shè)想:因大局部顯示均是以學(xué)校為單位,所以將以由有關(guān)人的各種信息為集合的構(gòu)造改為以由有關(guān)學(xué)校的各種信息為集合的構(gòu)造。致 謝這次的程序?qū)嵲O(shè)計(jì)實(shí)驗(yàn)是對(duì)我們進(jìn)入大學(xué)以來(lái)學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言結(jié)果的一次大檢驗(yàn)。自己動(dòng)手,自己發(fā)現(xiàn)和解決問題。發(fā)現(xiàn)了自己的許多缺乏。平時(shí)沒有掌握好的知識(shí)在這次實(shí)驗(yàn)中徹底暴露出來(lái),經(jīng)過不斷思考,不斷查閱資料和上機(jī)運(yùn)行,解決其中大局部問題,當(dāng)然還存在一些問題沒有解決。我相信在以后的學(xué)習(xí)能夠解決好它們。通過本課題程序的設(shè)計(jì)、調(diào)試以及論文的編寫,我不僅提高了利用C語(yǔ)言編程及識(shí)錯(cuò)
28、能力和撰寫論文的能力,而且它使我更加深入的了解到了計(jì)算機(jī)應(yīng)用根底這門課在現(xiàn)實(shí)生活中的重要性。在這次課程設(shè)計(jì)過程中遇到過一些問題,但經(jīng)過不懈努力,解決了局部,還有的現(xiàn)在不能解決,留待日后思考和解決。比方說在運(yùn)用數(shù)據(jù)構(gòu)造排序的時(shí)候,方法的選擇上,總是想用時(shí)間復(fù)雜度小的算法,但結(jié)果出了問題,最后還是用了我們熟悉的選擇法排序。 在編寫之前,做整體規(guī)劃和詳細(xì)設(shè)計(jì)很重要。只有思路清晰,設(shè)計(jì)合理可行,編碼才有可能有的放矢,才能更加有效的完成任務(wù)。本次課程設(shè)計(jì),對(duì)我來(lái)說可以算是一次挑戰(zhàn),因?yàn)樵诶碚搶W(xué)習(xí)中沒有好好的掌握,現(xiàn)在要獨(dú)立完成一個(gè)較復(fù)雜的程序編寫,確實(shí)有一點(diǎn)困難。但我對(duì)于難度一向是以積極迎戰(zhàn)的態(tài)度來(lái)面對(duì)
29、,認(rèn)真積極努力完成這次課程設(shè)計(jì)的任務(wù)。對(duì)我來(lái)說這是一次很好的時(shí)機(jī),同時(shí)我也很好的把握了這次時(shí)機(jī),認(rèn)真的完成了此次的任務(wù),對(duì)自己今后在程序編寫方面以及文檔撰寫方面相信會(huì)有很大的幫助,在此也對(duì)學(xué)校安排這樣一次學(xué)習(xí)表示感謝,最后希望自己在數(shù)據(jù)構(gòu)造以及計(jì)算機(jī)的其他學(xué)習(xí)方面能夠得到很好的提高。參考文獻(xiàn)1王連相,C/C+程序設(shè)計(jì)教程,中國(guó)鐵道,20062譚浩強(qiáng),C語(yǔ)言程序設(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語(yǔ)言函數(shù)手冊(cè),機(jī)械工業(yè),19996 C語(yǔ)言的實(shí)際應(yīng)用,*科學(xué)技術(shù),2000附錄程序:#incl
30、ude#include#include #include #define n 2/學(xué)校數(shù)目 #define m 1/男子工程數(shù)目 #define w 1/女子工程數(shù)目#define null 0int flag1=1;int flag2=1;/全局變量,用來(lái)標(biāo)識(shí)是否已經(jīng)向系統(tǒng)輸入信息FILE *report;/定義工程結(jié)點(diǎn)的類型typedef struct int itemnum; /工程編號(hào) int top; /工程取名次的數(shù)目,由用戶定義3或5 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode; /定義學(xué)校結(jié)點(diǎn)類型typedef structint school
31、num; /學(xué)校編號(hào) int score; /學(xué)??偡?int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnode cm+w; /工程數(shù)組schoolnode;schoolnode hn;/定義一個(gè)學(xué)校結(jié)點(diǎn)數(shù)組/信息輸入模塊,用來(lái)輸入信息,建立系統(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.it
32、emnum=0); do printf(*取前3名or前5名:); scanf(%d,&hi.cj.top);while(hi.cj.top!=3 & hi.cj.top!=5); printf(*獲得幾個(gè)名次:); scanf(%d,&k); /輸入工程信息 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.c
33、j.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: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.ma
34、rks=1; break; hi.score=hi.score+hi.cj.marks;/按取前三名還是取前五名分別記分 if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子工程則記到男子分?jǐn)?shù)里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子工程則記到女子工程里面去 printf(n); /信息輸出模塊,用來(lái)輸出信息,可以選擇按不同的方式輸出信息void output() int choice,i,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號(hào)輸出.*n); printf
35、(*2.按學(xué)??偡州敵?*n); printf(*3.按男團(tuá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.mscore); printf(*女團(tuán)總分: %dnnn,hi.wscore); break; case 2: /按學(xué)??偡州敵?f
36、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(*男團(tuán)總分:%dn,hrememberi.mscore); printf(*女團(tuán)總分:
37、 %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 ,hrememberi.score); printf(*男團(tuán)總
38、分:%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); elseprintf(要查詢的工程編號(hào):); scanf(%d,&j
39、); if(jm+w|j=0) printf(此次運(yùn)動(dòng)會(huì)沒有這個(gè)工程nnn);/學(xué)校編號(hào)超出*圍,則輸出警告 else printf(這個(gè)工程取前 %d名,該學(xué)校的成績(jī)?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次運(yùn)動(dòng)會(huì)不包括這個(gè)工程.nnn);/工程編號(hào)超出*圍則輸出警告elseprintf(該工程取前 %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.schoolnum,hi.cs-1.rangej); /輸出該工程取得名次學(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.t*t,w)=null) printf(文件不存在,不能翻開文件!n); e*it(1); for(i=0;in;i+)fwrite(&hi,sizeof(schoolnode),1,report); fclose(report);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼陽(yáng)職業(yè)技術(shù)學(xué)院《化工CAD制圖》2023-2024學(xué)年第一學(xué)期期末試卷
- 五年級(jí)數(shù)學(xué)下冊(cè)應(yīng)用題-分?jǐn)?shù)應(yīng)用題
- 廊坊燕京職業(yè)技術(shù)學(xué)院《信息系統(tǒng)審計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西師范高等專科學(xué)?!缎旅襟w網(wǎng)絡(luò)營(yíng)銷劃寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 嘉應(yīng)學(xué)院《奧爾夫音樂教學(xué)法》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖州學(xué)院《傳感器技術(shù)與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院《電子學(xué)二》2023-2024學(xué)年第一學(xué)期期末試卷
- 紅河衛(wèi)生職業(yè)學(xué)院《傳播學(xué)原理與技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 淄博師范高等??茖W(xué)校《現(xiàn)代數(shù)值仿真技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 周口理工職業(yè)學(xué)院《熱工材料基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 保險(xiǎn)公估作業(yè)指導(dǎo)書x
- 新人教版八年級(jí)數(shù)學(xué)下冊(cè) 第18章平行四邊形 導(dǎo)學(xué)案
- 《生理心理學(xué)實(shí)驗(yàn)實(shí)訓(xùn)》指導(dǎo)書-
- 教練技術(shù)三階段講義
- GB/T 23799-2021車用甲醇汽油(M85)
- 車工工藝課件(緒論、一章)
- 催收服務(wù)工作手冊(cè)方案
- 信息化系統(tǒng)數(shù)據(jù)恢復(fù)應(yīng)急演練方案
- 常用有機(jī)溶劑性質(zhì)
- 公司沒有出審計(jì)報(bào)告情況說明解釋
- (完整word版)高考英語(yǔ)作文練習(xí)紙(標(biāo)準(zhǔn)答題卡)
評(píng)論
0/150
提交評(píng)論