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

下載本文檔

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

文檔簡(jiǎn)介

1、真誠(chéng)為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請(qǐng)指正。運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)課 程 設(shè) 計(jì) 報(bào) 告數(shù) 據(jù) 結(jié) 構(gòu)院系: 專(zhuān)業(yè): 班級(jí): 學(xué)號(hào): 姓名: 教師: 時(shí)間: 一、問(wèn)題描述1、功能任務(wù):參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20),按要求實(shí)現(xiàn)相應(yīng)的數(shù)據(jù)輸入、查詢(xún)、計(jì)分等功能。2、數(shù)據(jù)建議輸入學(xué)校的名稱(chēng),運(yùn)動(dòng)項(xiàng)目的名稱(chēng)等,其余信息學(xué)生自行設(shè)計(jì);輸出形式:有合理的提示,

2、各學(xué)校分?jǐn)?shù)為整形;數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)自行設(shè)計(jì)。建議運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。3、操作1)可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);2)能統(tǒng)計(jì)各學(xué)??偡郑?)可以按學(xué)校編號(hào)或名稱(chēng)、學(xué)??偡帧⒛信畧F(tuán)體總分排序輸出;4)可以按學(xué)校編號(hào)查詢(xún)學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢(xún)?nèi)〉们叭蚯拔迕膶W(xué)校。4、要求提供系統(tǒng)菜單,界面友好,提示信息完整。二、系統(tǒng)分析及設(shè)計(jì)1、需求分析根據(jù)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)的問(wèn)題分析及設(shè)計(jì)要求,可以將此系統(tǒng)分為四個(gè)模塊:信息統(tǒng)計(jì)模塊、信息輸出模塊、信息查詢(xún)模塊、信息調(diào)用模塊。其系統(tǒng)功能結(jié)構(gòu)圖如圖所示。(1)、信息統(tǒng)計(jì)模塊實(shí)現(xiàn)信息的輸入、統(tǒng)計(jì)、存檔。(2)、信息輸出模塊實(shí)現(xiàn)信

3、息的輸出。(3)、信息查詢(xún)模塊實(shí)現(xiàn)信息的查詢(xún)。(4)、信息調(diào)用模塊實(shí)現(xiàn)信息的調(diào)用,即從文件中讀出信息并輸出。信息輸入運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)信息統(tǒng)計(jì)模塊信息輸出模塊信息查詢(xún)模塊信息調(diào)用模塊分?jǐn)?shù)統(tǒng)計(jì)信息存檔2、概要設(shè)計(jì)此系統(tǒng)采用順序存儲(chǔ)結(jié)構(gòu)存儲(chǔ),定義了一個(gè)結(jié)構(gòu)體數(shù)組存放參賽學(xué)校的信息。之所以采用順序存儲(chǔ)結(jié)構(gòu),是因?yàn)橛盟鼇?lái)實(shí)現(xiàn)信息的存儲(chǔ)、查詢(xún)比較方便,節(jié)省時(shí)間,效率高,而且也方便把信息寫(xiě)入文件以及讀取文件。(1)、結(jié)構(gòu)體定義如下:、定義運(yùn)動(dòng)項(xiàng)目數(shù)據(jù)類(lèi)型,用于存放運(yùn)動(dòng)項(xiàng)目的信息,包括項(xiàng)目名稱(chēng)、項(xiàng)目編號(hào)、用戶(hù)自己定義的取前3名還是前5名的積分、名次、分?jǐn)?shù)。typedef structchar proname

4、10; /項(xiàng)目名稱(chēng)int pronum; /項(xiàng)目編號(hào)int top;/取前3名或前5名積分,由用戶(hù)自己定義int range5; /名次int mark5; /分?jǐn)?shù)Pronode; /項(xiàng)目結(jié)點(diǎn)類(lèi)型定義、定義學(xué)校數(shù)據(jù)類(lèi)型,用于存放參賽學(xué)校的信息,包括學(xué)校名稱(chēng)、學(xué)校編號(hào)、學(xué)校總分、男子團(tuán)體總分、女子團(tuán)體總分以及項(xiàng)目數(shù)組。typedef struct char schname20; /學(xué)校名稱(chēng)int schnum; /學(xué)校編號(hào)int score; /總分int Mscore; /男子團(tuán)體總分int Wscore; /女子團(tuán)體總分 Pronode aM+W; /項(xiàng)目數(shù)組Schnode; /學(xué)校結(jié)點(diǎn)類(lèi)型

5、定義、定義一個(gè)學(xué)校結(jié)點(diǎn)類(lèi)型的結(jié)構(gòu)體數(shù)組Schnode sN。采用數(shù)組結(jié)構(gòu)有利于隨機(jī)存儲(chǔ)和查詢(xún)。(2)、信息統(tǒng)計(jì)模塊的算法設(shè)計(jì)說(shuō)明輸入?yún)①悓W(xué)校比賽成績(jī)的信息時(shí),采用三重循環(huán),第一重循環(huán)控制參賽學(xué)校的個(gè)數(shù),第二重循環(huán)控制各參賽學(xué)校的參賽項(xiàng)目個(gè)數(shù),第三重循環(huán)控制各參賽學(xué)校的各參賽項(xiàng)目所獲得的名次個(gè)數(shù),并依次輸入相應(yīng)信息,根據(jù)所輸入的名次得出相對(duì)應(yīng)的分?jǐn)?shù)。然后分別統(tǒng)計(jì)出各學(xué)校的總分、男子團(tuán)體總分和女子團(tuán)體總分。調(diào)用文件數(shù)據(jù)塊寫(xiě)函數(shù)fwrite將信息寫(xiě)入文件,方便以后調(diào)用。(3)、信息輸出模塊的算法設(shè)計(jì)說(shuō)明根據(jù)設(shè)計(jì)要求,實(shí)現(xiàn)按學(xué)校名稱(chēng)、學(xué)校總分、男子團(tuán)體總分、女子團(tuán)體總分輸出。因此選用switch語(yǔ)句實(shí)

6、現(xiàn)此功能。case 1按學(xué)校名稱(chēng)輸出時(shí),直接取出數(shù)據(jù)進(jìn)行輸出;case 2按學(xué)??偡州敵鰰r(shí),采用冒泡排序法進(jìn)行排序然后按分?jǐn)?shù)由高到低輸出;case 3和case 4也均采用冒泡排序法進(jìn)行排序最后按分?jǐn)?shù)由高到低輸出。其流程圖如圖所示:開(kāi)始總分顯示菜單界面按學(xué)校名稱(chēng)輸出按學(xué)??偡州敵霭茨袌F(tuán)總分輸出按女團(tuán)總分輸出退出返回主菜單直接退出本系統(tǒng)主菜單結(jié)束輸入功能序號(hào)(4)、信息查詢(xún)模塊的算法設(shè)計(jì)說(shuō)明根據(jù)設(shè)計(jì)要求,提供兩種不同的查詢(xún)方式:按學(xué)校編號(hào)查詢(xún)和按項(xiàng)目編號(hào)查詢(xún)。因此也采用switch語(yǔ)句實(shí)現(xiàn)此功能。case 1按學(xué)校編號(hào)查詢(xún),提示輸入要查詢(xún)的學(xué)校編號(hào)以及要查詢(xún)的項(xiàng)目編號(hào),直接取出該學(xué)校該項(xiàng)目的信息

7、進(jìn)行輸出。case 2按項(xiàng)目編號(hào)查詢(xún),提示輸入要查詢(xún)的項(xiàng)目編號(hào),輸出該項(xiàng)目取得名次的學(xué)校的信息。其流程圖如圖所示:開(kāi)始信息查詢(xún)界面選擇查詢(xún)方式按學(xué)校編號(hào)查詢(xún)按項(xiàng)目編號(hào)查詢(xún)退出返回主菜單直接退出本系統(tǒng)主菜單結(jié)束(5)、信息調(diào)用模塊的算法設(shè)計(jì)說(shuō)明信息調(diào)用,即讀取保存在文件里的信息并輸出。由于采用的是數(shù)組存儲(chǔ),可以很方便的一下把文件里的信息全部讀取出來(lái),再利用三重循環(huán)依次把各學(xué)校各項(xiàng)目所取得的成績(jī)輸出。3、詳細(xì)設(shè)計(jì)(1)、信息輸入及分?jǐn)?shù)統(tǒng)計(jì)功能void InfoInput()是信息輸入及分?jǐn)?shù)統(tǒng)計(jì)的函數(shù),在輸入信息的同時(shí)進(jìn)行分?jǐn)?shù)統(tǒng)計(jì),可以輸入各學(xué)校各項(xiàng)目前3名或前5名的成績(jī)。結(jié)果取前3名還是前5名由用

8、戶(hù)自己定。用switch 語(yǔ)句將前3名的成績(jī)賦值為5、3、2,前5名的成績(jī)賦值為7、5、3、2、1,未取得的成績(jī)則賦為0。并統(tǒng)計(jì)總分、男子團(tuán)體總分和女子團(tuán)體總分。其主要功能代碼如下:for(m=0;mk;m+) /輸入所獲名次信息coutsi.aj.rangem;if(si.aj.top=3) /匹配各名次對(duì)應(yīng)的分?jǐn)?shù)switch(si.aj.rangem)case 0: si.aj.markm=0; break;case 1: si.aj.markm=5; break;case 2: si.aj.markm=3; break;case 3: si.aj.markm=2; break;elses

9、witch(si.aj.rangem)case 0: si.aj.markm=0; break;case 1: si.aj.markm=7; break;case 2: si.aj.markm=5; break;case 3: si.aj.markm=3; break;case 4: si.aj.markm=2; break;case 5: si.aj.markm=1; break;si.score=si.score+si.aj.markm; /統(tǒng)計(jì)學(xué)??偡謎f(j=M-1)si.Mscore=si.Mscore+si.aj.markm; /統(tǒng)計(jì)男團(tuán)總分elsesi.Wscore=si.Wsc

10、ore+si.aj.markm; /統(tǒng)計(jì)女團(tuán)總分(2)、信息輸出功能void InfoOutput()是信息輸出函數(shù)。輸出一個(gè)總分顯示菜單,利用switch語(yǔ)句實(shí)現(xiàn)按學(xué)校名稱(chēng)輸出或按學(xué)??偡?、男子團(tuán)體總分、女子團(tuán)體總分由高到低輸出。采用冒泡排序的方法使之按總分由高到低輸出。利用循環(huán)語(yǔ)句while(1)返回總分顯示菜單,break語(yǔ)句終止循環(huán)。其主要功能代碼如下:for(i=0;iN;i+) /冒泡排序,用輔助數(shù)組b記住學(xué)校結(jié)點(diǎn)的下標(biāo)bi=i;for(i=0;iN;i+)for(j=i+1;jN;j+)if(sbi.score sj.score)k=bi;bi=bj;bj=k;for(i=0;i

11、N;i+) /輸出各學(xué)校運(yùn)動(dòng)會(huì)分?jǐn)?shù)信息cout學(xué)校名稱(chēng):sbi.schnameendl;cout學(xué)校編號(hào):sbi.schnumendl;cout學(xué)校總分:sbi.scoreendl;cout男團(tuán)總分:sbi.Mscoreendl;cout女團(tuán)總分:sbi.Wscoreendl;coutendl;(3)、信息查詢(xún)功能void Inquiry()函數(shù)是信息查詢(xún)函數(shù),顯示一個(gè)查詢(xún)菜單,利用switch語(yǔ)句實(shí)現(xiàn)按學(xué)校編號(hào)查詢(xún)和按項(xiàng)目編號(hào)查詢(xún),并輸出該學(xué)校某個(gè)項(xiàng)目的情況或某個(gè)項(xiàng)目取得前3名或前5名的學(xué)校信息。利用循環(huán)語(yǔ)句while(1)返回查詢(xún)菜單,break語(yǔ)句終止循環(huán)。其主要功能代碼如下:按學(xué)校編號(hào)

12、查詢(xún):couti;if(iN) /學(xué)校編號(hào)超出范圍,輸出提示信息cout這個(gè)學(xué)校沒(méi)有參加此次運(yùn)動(dòng)會(huì)!endl;elsecoutj;if(jM+W | j=0) /項(xiàng)目編號(hào)超出范圍,輸出提示信息cout此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)項(xiàng)目!endl;else /輸出要查詢(xún)學(xué)校項(xiàng)目的成績(jī)cout這個(gè)項(xiàng)目取前s0.aj-1.top名,該學(xué)校的成績(jī)?nèi)缦拢篹ndl;for(k=0;k5;k+)if(si-1.aj-1.rangek!=0)cout名次:si-1.aj-1.rangek;if(si-1.aj-1.markk!=0)cout分?jǐn)?shù):si-1.aj-1.markkendl;按項(xiàng)目編號(hào)查詢(xún):couty;if(y

13、M+W | y=0) /項(xiàng)目編號(hào)超出范圍,輸出提示信息cout此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)項(xiàng)目!endl;else /輸出該項(xiàng)目取得名次的學(xué)校的成績(jī)cout該項(xiàng)目取前s0.ay-1.top名,取得該名次的學(xué)校:endl;for(i=0;jN;i+)for(j=0;j5;j+)if(si.ay-1.rangej!=0)cout學(xué)校名稱(chēng):si.schname學(xué)校編號(hào):si.schnum名次:si.ay-1.rangej; if(si.ay-1.markj!=0)cout分?jǐn)?shù):si.ay-1.markjendl;三、系統(tǒng)實(shí)現(xiàn)1、完整源代碼見(jiàn)附錄。2、調(diào)試分析運(yùn)行程序,進(jìn)入主菜單界面,用戶(hù)可以選擇輸入信息、輸出

14、信息、查詢(xún)信息、調(diào)用信息、關(guān)于或退出系統(tǒng)。測(cè)試數(shù)據(jù):學(xué)校名稱(chēng):武漢理工大學(xué);學(xué)校編號(hào):1;項(xiàng)目名稱(chēng):男子100米;項(xiàng)目編號(hào):1;取前5名;獲得1個(gè)名次,第5名。項(xiàng)目名稱(chēng):女子100米;項(xiàng)目編號(hào):2;取前3名,獲得3個(gè)名次,分別是第1、2、3名。學(xué)校名稱(chēng):湖北經(jīng)濟(jì)學(xué)院;學(xué)校編號(hào):2;項(xiàng)目名稱(chēng):男子跳遠(yuǎn);項(xiàng)目編號(hào):1;取前5名,獲得4個(gè)名次,分別是第1、2、3、4名。項(xiàng)目名稱(chēng):女子跳高;項(xiàng)目編號(hào):2;取前5名,獲得一個(gè)名次,第3名。測(cè)試輸出的結(jié)果:按學(xué)校名稱(chēng)輸出:學(xué)校名稱(chēng):武漢理工大學(xué);學(xué)校編號(hào):1;學(xué)??偡郑?1;男團(tuán)總分:1;女團(tuán)總分:10。學(xué)校名稱(chēng):湖北經(jīng)濟(jì)學(xué)院;學(xué)校編號(hào):2;學(xué)校總分:20

15、;男團(tuán)總分:17;女團(tuán)總分:3。按學(xué)??偡州敵觯簩W(xué)校名稱(chēng):湖北經(jīng)濟(jì)學(xué)院;學(xué)校編號(hào):2;學(xué)??偡郑?0;男團(tuán)總分:17;女團(tuán)總分:3。學(xué)校名稱(chēng):武漢理工大學(xué);學(xué)校編號(hào):1;學(xué)校總分:11;男團(tuán)總分:1;女團(tuán)總分:10。按男團(tuán)總分輸出:學(xué)校名稱(chēng):湖北經(jīng)濟(jì)學(xué)院;學(xué)校編號(hào):2;學(xué)??偡郑?0;男團(tuán)總分:17;女團(tuán)總分:3。學(xué)校名稱(chēng):武漢理工大學(xué);學(xué)校編號(hào):1;學(xué)??偡郑?1;男團(tuán)總分:1;女團(tuán)總分:10。按女團(tuán)總分輸出:學(xué)校名稱(chēng):武漢理工大學(xué);學(xué)校編號(hào):1;學(xué)??偡郑?1;男團(tuán)總分:1;女團(tuán)總分:10。學(xué)校名稱(chēng):湖北經(jīng)濟(jì)學(xué)院;學(xué)校編號(hào):2;學(xué)校總分:20;男團(tuán)總分:17;女團(tuán)總分:3。時(shí)間復(fù)雜度分析:

16、用戶(hù)輸入信息時(shí),采用三重循環(huán)進(jìn)行輸入,因此信息輸入函數(shù)的時(shí)間復(fù)雜度為O(N*(M+W)*k)。利用冒泡排序法進(jìn)行排序,采用二重循環(huán),時(shí)間復(fù)雜度為O(N*N)。采用順序存儲(chǔ)結(jié)構(gòu),信息存放在數(shù)組的相應(yīng)內(nèi)存單元里,因此查詢(xún)函數(shù)的時(shí)間復(fù)雜度為O(1)。寫(xiě)信息時(shí)可以一次全部寫(xiě)進(jìn)去,讀信息時(shí)也可以一次全部讀出來(lái),因此寫(xiě)文件函數(shù)和讀文件函數(shù)的時(shí)間復(fù)雜度都為O(1)。存在問(wèn)題的思考及算法的改進(jìn)設(shè)想:剛開(kāi)始運(yùn)行程序時(shí),就是一句一句的顯示,界面很不好看,于是想把他弄成菜單的形式,但是兩個(gè)子菜單要實(shí)現(xiàn)與主菜單之間的切換,能夠自如返回主菜單。開(kāi)始時(shí)沒(méi)有想到要去直接調(diào)用實(shí)現(xiàn)主菜單操作的函數(shù)Menu(),廢了好大周折,后

17、來(lái)問(wèn)了同學(xué),頓時(shí)茅塞頓開(kāi)。顯示的內(nèi)容堆積在一個(gè)屏幕上,看著很混亂,用C語(yǔ)言里的clrscr()函數(shù)在VC+里似乎不能用,上網(wǎng)查了下資料,找到了一個(gè)頭文件為stdlib.h的清屏函數(shù)system(”cls”)。調(diào)試程序時(shí),遇到了屏幕一閃又回到原來(lái)界面的情況,沒(méi)有輸出想要得到的信息,原來(lái)是信息在屏幕上顯示后,程序執(zhí)行到了清屏函數(shù),所以立馬清屏了,為了看到輸出信息,調(diào)用system(”pause”)函數(shù),使程序暫停,以讓用戶(hù)看到輸出地信息,然后再按任意鍵繼續(xù)執(zhí)行程序。對(duì)此程序結(jié)構(gòu)體的定義比較難,要整體考慮全局設(shè)置出結(jié)構(gòu)體,這次課設(shè)用到結(jié)構(gòu)體的嵌套,由于對(duì)結(jié)構(gòu)體的使用還不是很熟悉,所以做起來(lái)時(shí)花費(fèi)了不

18、少時(shí)間,但一個(gè)課設(shè)做下來(lái),還算是得心應(yīng)手。對(duì)于讀寫(xiě)文件不是很熟悉,fread和fwrite函數(shù)不是很會(huì)用,在讀出文件里的信息并輸出時(shí)花了很長(zhǎng)時(shí)間,不過(guò),最后總算是會(huì)用了。3、輸出界面運(yùn)行程序,進(jìn)入主菜單界面,用戶(hù)可以選擇輸入信息、輸出信息、查詢(xún)信息、調(diào)用信息、關(guān)于或退出系統(tǒng)。注意:第一次運(yùn)行本程序時(shí),請(qǐng)選擇輸入信息。以后再運(yùn)行時(shí),為了避免再次輸入大量信息,可以先選擇調(diào)用信息,將以前輸入的信息重新顯示在屏幕上,再進(jìn)行后續(xù)操作。主菜單界面如圖所示:(1)、輸入信息選擇1號(hào)功能進(jìn)入輸入信息模塊,根據(jù)提示信息將以下信息輸入系統(tǒng)中。學(xué)校名稱(chēng):武漢理工大學(xué);學(xué)校編號(hào):1;項(xiàng)目名稱(chēng):男子100米;項(xiàng)目編號(hào):

19、1;取前5名;獲得1個(gè)名次,第5名。項(xiàng)目名稱(chēng):女子100米;項(xiàng)目編號(hào):2;取前3名,獲得3個(gè)名次,分別是第1、2、3名。學(xué)校名稱(chēng):湖北經(jīng)濟(jì)學(xué)院;學(xué)校編號(hào):2;項(xiàng)目名稱(chēng):男子跳遠(yuǎn);項(xiàng)目編號(hào):1;取前5名,獲得4個(gè)名次,分別是第1、2、3、4名。項(xiàng)目名稱(chēng):女子跳高;項(xiàng)目編號(hào):2;取前5名,獲得一個(gè)名次,第3名。輸入信息后,信息會(huì)自動(dòng)存檔,并自動(dòng)返回到主菜單。輸入信息如圖所示:(2)、輸出信息輸入2進(jìn)入總分顯示菜單界面。用戶(hù)可根據(jù)自己喜好選擇按學(xué)校名稱(chēng)輸出、按學(xué)??偡州敵?、按男團(tuán)總分輸出、按女團(tuán)總分輸出或者退出返回主菜單、直接退出系統(tǒng)。總分顯示菜單界面如圖所示:用戶(hù)可根據(jù)自己喜好選擇按哪種方式輸出,

20、信息輸出后,按任意鍵返回總分顯示菜單界面。輸入5則返回主菜單,輸入6則退出系統(tǒng)。以下是分別按照學(xué)校名稱(chēng)、學(xué)??偡帧⒛袌F(tuán)總分、女團(tuán)總分輸出的情況。按學(xué)校名稱(chēng)輸出:按學(xué)??偡州敵觯喊茨袌F(tuán)總分輸出:按女團(tuán)總分輸出:(3)、查詢(xún)信息輸入3進(jìn)入信息查詢(xún)界面,用戶(hù)可根據(jù)自己喜好選擇按學(xué)校編號(hào)查詢(xún)、按項(xiàng)目編號(hào)查詢(xún)或者退出返回主菜單、直接退出系統(tǒng)。信息查詢(xún)界面如圖所示:用戶(hù)可根據(jù)自己喜好選擇按哪種方式查詢(xún),查詢(xún)結(jié)束后,按任意鍵返回信息查詢(xún)界面。輸入3則返回主菜單,輸入4則退出系統(tǒng)。以下是分別按照學(xué)校編號(hào)、項(xiàng)目編號(hào)查詢(xún)的情況。按學(xué)校編號(hào)查詢(xún):按項(xiàng)目編號(hào)查詢(xún):(4)、調(diào)用信息為了避免每次運(yùn)行程序時(shí)都要輸入大量數(shù)據(jù)

21、,在第一次運(yùn)行程序后,就已經(jīng)將信息自動(dòng)存檔,再次運(yùn)行時(shí),可以先直接調(diào)用信息,按任意鍵返回主菜單,再進(jìn)行后續(xù)操作。調(diào)用的信息如圖所示:(5)關(guān)于界面自行設(shè)計(jì)(6)退出系統(tǒng)輸入6則退出系統(tǒng),并有中文提示。如圖所示:四、設(shè)計(jì)總結(jié)在課程設(shè)計(jì)的過(guò)程中,雖然遇到了很多問(wèn)題,但最終差不多也都一一解決了。有的時(shí)候是一些很小的邏輯錯(cuò)誤,需要的是細(xì)心。同學(xué)之間互相幫助,多個(gè)人思考多個(gè)力量,遇到自己解決不了的問(wèn)題,向同學(xué)求助,能更好的幫我們解決所面臨的難題。由于此次課程設(shè)計(jì)用到數(shù)據(jù)文件的知識(shí),而這些知識(shí)老師都沒(méi)講,自學(xué)起來(lái)稍微有點(diǎn)困難,但也不是完全看不懂,只是對(duì)一些函數(shù)的應(yīng)用不太熟悉,經(jīng)過(guò)此次課程設(shè)計(jì),對(duì)文件的讀寫(xiě)

22、有了更深的了解,也相應(yīng)的培養(yǎng)了我的自學(xué)能力。經(jīng)過(guò)C語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),我發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與C語(yǔ)言有很大的不同,C語(yǔ)言不需要考慮存儲(chǔ)結(jié)構(gòu)之類(lèi)的,只需要定義個(gè)變量或數(shù)組,集中精力于算法之上,而數(shù)據(jù)結(jié)構(gòu)前期的整體規(guī)劃和構(gòu)思非常重要,先確立合理的存儲(chǔ)結(jié)構(gòu),再來(lái)編寫(xiě)算法,實(shí)際上一旦存儲(chǔ)結(jié)構(gòu)確立了,算法的實(shí)現(xiàn)相對(duì)來(lái)說(shuō)簡(jiǎn)單很多,難就難在如何確立合理的存儲(chǔ)結(jié)構(gòu)。能夠把此次課程設(shè)計(jì)做出來(lái),是一個(gè)很大的挑戰(zhàn),但我經(jīng)過(guò)自己的不懈努力,終于完成了,看著自己的作品,心里還是說(shuō)不出的高興,雖然做的過(guò)程很艱難。人生就是要把困難踩在腳下。附錄:源代碼:# include # include # include # define

23、 M 1 /男子項(xiàng)目個(gè)數(shù)# define W 1 /女子項(xiàng)目個(gè)數(shù)# define N 2 /學(xué)校個(gè)數(shù)# define NULL 0void Menu(); /函數(shù)聲明 typedef structchar proname10;/項(xiàng)目名稱(chēng)int pronum; /項(xiàng)目編號(hào)int top;/取前3名或前5名積分,由用戶(hù)自己定義int range5; /名次int mark5; /分?jǐn)?shù)Pronode; /項(xiàng)目結(jié)點(diǎn)類(lèi)型定義typedef struct char schname20; /學(xué)校名稱(chēng)int schnum; /學(xué)校編號(hào)int score; /總分int Mscore; /男團(tuán)體總分int Ws

24、core; /女團(tuán)體總分 Pronode aM+W; /項(xiàng)目數(shù)組Schnode; /學(xué)校結(jié)點(diǎn)類(lèi)型定義 Schnode sN; /定義一個(gè)學(xué)校結(jié)點(diǎn)類(lèi)型的結(jié)構(gòu)體數(shù)組void Head() /頭菜單界面cout*endl;cout* 歡迎使用 *endl;cout* 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) *endl;cout*endl;coutendl;void MainMenu() /主菜單界面cout*endl;cout* 主菜單 *endl;cout*endl;cout* 1.輸入信息 *endl;cout* 2.輸出信息 *endl;cout* 3.查詢(xún)信息 *endl;cout* 4.調(diào)用信息 *endl;

25、cout* 5.關(guān)于 *endl;cout* 6.退出系統(tǒng) *endl;cout*endl;cout* 注:第一次運(yùn)行本程序時(shí)請(qǐng)選擇1號(hào)功能 *endl;cout*endl;void SubMenu() /總分顯示菜單界面cout*endl;cout* 運(yùn)動(dòng)會(huì)總分顯示菜單 *endl;cout*endl;cout* 1.按學(xué)校名稱(chēng)輸出 *endl;cout* 2.按學(xué)??偡州敵?*endl;cout* 3.按男團(tuán)總分輸出 *endl;cout* 4.按女團(tuán)總分輸出 *endl;cout* 5.退出返回主菜單 *endl;cout* 6.直接退出本系統(tǒng) *endl;cout*endl;void

26、InitSch() /初始化信息int i;for(i=0;iN;i+)si.score=0;si.Mscore=0;si.Wscore=0;void InfoInput() /信息輸入模塊int i,j,k,m;InitSch(); /初始化信息for(i=0;iN;i+) /輸入學(xué)校信息coutsi.schname; coutsi.schnum; for(j=0;jM+W;j+) /輸入各學(xué)校內(nèi)項(xiàng)目信息 name;num;coutsi.aj.top;coutk;for(m=0;m5;m+) /初始化排名和分?jǐn)?shù)si.aj.rangem=0;

27、si.aj.markm=0;for(m=0;mk;m+) /輸入所獲名次信息coutsi.aj.rangem;if(si.aj.top=3) /匹配各名次對(duì)應(yīng)的分?jǐn)?shù)switch(si.aj.rangem)case 0: si.aj.markm=0; break;case 1: si.aj.markm=5; break;case 2: si.aj.markm=3; break;case 3: si.aj.markm=2; break;elseswitch(si.aj.rangem)case 0: si.aj.markm=0; break;case 1: si.aj.markm=7; break;

28、case 2: si.aj.markm=5; break;case 3: si.aj.markm=3; break;case 4: si.aj.markm=2; break;case 5: si.aj.markm=1; break;si.score=si.score+si.aj.markm; /統(tǒng)計(jì)學(xué)??偡謎f(j=M-1)si.Mscore=si.Mscore+si.aj.markm; /統(tǒng)計(jì)男團(tuán)總分elsesi.Wscore=si.Wscore+si.aj.markm; /統(tǒng)計(jì)女團(tuán)總分coutendl;void Output(int b) /輸出各學(xué)校運(yùn)動(dòng)會(huì)分?jǐn)?shù)信息int i;for(i=

29、0;iN;i+)cout學(xué)校名稱(chēng):sbi.schnameendl;cout學(xué)校編號(hào):sbi.schnumendl;cout學(xué)??偡郑簊bi.scoreendl;cout男團(tuán)總分:sbi.Mscoreendl;cout女團(tuán)總分:sbi.Wscoreendl;coutendl;system(pause); /程序暫停,以顯示結(jié)果system(cls); /清屏void InfoOutput() /信息輸出模塊FILE *fp;int number,i,j,k,bN;if(fp=fopen(sport.txt,r)=NULL) /以讀方式打開(kāi)文本文件/并判定能否正常打開(kāi)cout文件打不開(kāi)!endl;

30、 /不能正常打開(kāi)文件的處理exit(0); /調(diào)用函數(shù)exit終止程序運(yùn)行while(1)Head(); /頭菜單界面SubMenu(); /總分顯示菜單界面coutnumber;switch(number)case 1: /按學(xué)校名稱(chēng)輸出system(cls);Head(); /頭菜單界面cout運(yùn)動(dòng)會(huì)各學(xué)校信息按學(xué)校名稱(chēng)輸出如下:endl;for(i=0;iN;i+) /輸出各學(xué)校運(yùn)動(dòng)會(huì)分?jǐn)?shù)信息cout學(xué)校名稱(chēng):si.schnameendl;cout學(xué)校編號(hào):si.schnumendl;cout學(xué)??偡郑簊i.scoreendl;cout男團(tuán)總分:si.Mscoreendl;cout女團(tuán)總分:si.Wscoreendl;coutendl;system(pause); /程序暫停,以顯示結(jié)果system(cls); /清屏break;case 2: /按學(xué)??偡州敵鰏ystem(cls); Head();

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論