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

下載本文檔

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

文檔簡(jiǎn)介

1、通達(dá)學(xué)院專業(yè)課程設(shè)計(jì)II題 目: 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì) 專 業(yè) 計(jì)算機(jī)通信 學(xué) 生 姓 名 班 級(jí) 學(xué) 號(hào) 09002829 指 導(dǎo) 教 師 沙超 指 導(dǎo) 單 位 計(jì)算機(jī)學(xué)院 日 期 2012年6月13日 教師評(píng)語(yǔ)同學(xué)出勤率(滿勤、較高、一般,較低),學(xué)習(xí)態(tài)度(端正、較端正、一般、較差),程序設(shè)計(jì)基礎(chǔ)(好、較好、一般、較差),演示程序(已經(jīng)、沒有)達(dá)到了基本要求,算法設(shè)計(jì)(好、較好、一般),界面友好程度(好、較好、一般),答辯過(guò)程中回答問題(準(zhǔn)確、較準(zhǔn)確、錯(cuò)誤率較高),撰寫報(bào)告格式(規(guī)范、一般)、內(nèi)容(豐滿、簡(jiǎn)單)、表述(清晰、一般、不清楚),(圓滿、較好、基本)完成了課題任務(wù)。 教師簽名: 年 月

2、 日成績(jī)?cè)u(píng)定備 注運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)一、 課題內(nèi)容和要求題目描述:參加運(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)目取前五名或者前三名。對(duì)于取前五名的項(xiàng)目,其積分分別為:7、5、3、2、1,對(duì)于取前三名的項(xiàng)目,其積分分別為:5、3、2。哪些成績(jī)?nèi)∏叭?,哪些取前五名,由編程者自己設(shè)定。(m<=20,n<=20)基本要求:1)后臺(tái)管理者可以輸入各個(gè)項(xiàng)目的前三名或者前五名的成績(jī)2)系統(tǒng)可以統(tǒng)計(jì)各個(gè)學(xué)校的總分3)可以按照學(xué)校編號(hào)或名稱、學(xué)??偡帧⒛信畧F(tuán)體總分排序輸出4)可以按照學(xué)校編號(hào)查詢學(xué)校的某個(gè)項(xiàng)目的情況,并

3、可以按照項(xiàng)目編號(hào)查詢?nèi)〉们叭蛘咔拔迕膶W(xué)校5)有完善的出錯(cuò)處理機(jī)制,最終的運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)一為整數(shù)提高要求:1)有圖形界面、功能菜單2)能夠?qū)⑺蟹e分信息保存為文件二、概要設(shè)計(jì) 1. 本系統(tǒng)的流程圖如下:(流程圖較大,在下頁(yè)顯示)YNNNYCase1Case3NYYY開始-初始化輸入輸入某項(xiàng)目各名次成績(jī)輸入學(xué)校及男女項(xiàng)目范圍繼續(xù)輸入查詢各學(xué)校成績(jī)Case2查詢團(tuán)體總分成績(jī)查詢輸出查詢學(xué)校成績(jī)繼續(xù)結(jié)束退出繼續(xù)2. 本系統(tǒng)采用的存儲(chǔ)結(jié)構(gòu)為結(jié)構(gòu)化設(shè)計(jì)理念,這是數(shù)據(jù)庫(kù)的最基本的設(shè)計(jì)要求,主要包括三個(gè)數(shù)據(jù)表:(1) 項(xiàng)目數(shù)據(jù)表:運(yùn)動(dòng)會(huì)開始前必須詳細(xì)制定本次運(yùn)動(dòng)會(huì)所需的參賽項(xiàng)目為接下來(lái)報(bào)名、場(chǎng)地的準(zhǔn)備提供

4、依據(jù)。本數(shù)據(jù)表根據(jù)要求設(shè)計(jì)存儲(chǔ)每個(gè)項(xiàng)目的編號(hào)、取得前幾名名次的數(shù)目、要取的名次以及各個(gè)名次對(duì)應(yīng)的分?jǐn)?shù)。在初始輸入時(shí)僅輸入項(xiàng)目編號(hào)、名稱及要取的名次,而各名次對(duì)應(yīng)的分?jǐn)?shù)將由系統(tǒng)自動(dòng)統(tǒng)計(jì)。這也有利于以后項(xiàng)目情況的查詢。typedef structint itemnum; /項(xiàng)目編號(hào) int top; /取名次的數(shù)目int range5; /名次int mark5; /分?jǐn)?shù) itemnode; /定義項(xiàng)目結(jié)點(diǎn)的類型(2) 學(xué)校數(shù)據(jù)表:本數(shù)據(jù)表儲(chǔ)存了各個(gè)參賽學(xué)校的總體情況,包括學(xué)校的編號(hào)、男子團(tuán)體總分、女子團(tuán)體總分和學(xué)??偡?。其中學(xué)校編號(hào)是提前輸入的,而其他三項(xiàng)內(nèi)容將由系統(tǒng)進(jìn)行自動(dòng)統(tǒng)計(jì)。 typede

5、f structint schoolnum; /學(xué)校編號(hào)int score; /學(xué)校總分int mscore; /男團(tuán)體總分int wscore; /女團(tuán)體總分itemnode cm+w; /項(xiàng)目數(shù)組headnode;/定義頭結(jié)點(diǎn)類型 這兩個(gè)數(shù)據(jù)表之間由項(xiàng)目編號(hào)和學(xué)校編號(hào)進(jìn)行相關(guān)聯(lián)接,形成一個(gè)整體。三、詳細(xì)設(shè)計(jì) 源程序代碼:#include<stdio.h>#include<iostream.h>#include <conio.h>#include <process.h>#define n 4 /學(xué)校數(shù)目 #define m 2 /男子項(xiàng)目數(shù)目

6、#define w 2 /女子項(xiàng)目數(shù)目#define null 0typedef struct int itemnum; /項(xiàng)目編號(hào) int top; /取名次的數(shù)目 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode; /定義項(xiàng)目結(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ù)組headnode; /定義頭結(jié)點(diǎn)類型headnode hn; /定義一個(gè)頭結(jié)點(diǎn)數(shù)組void input() /輸

7、入信息,建立系統(tǒng)int i,j,k,s;/*初始化頭結(jié)點(diǎn)* for(i=0;i<n;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /*輸入頭結(jié)點(diǎn)信息* for(i=0;i<n;i+) cout<<"*學(xué)校編號(hào):" cin>>hi.schoolnum; /*輸入項(xiàng)目信息* for(j=0;j<m+w;j+) cout<<"*項(xiàng)目編號(hào):" cin>>hi.cj.itemnum; cout<<"*取前3名or前5名:" cin

8、>>hi.cj.top; cout<<"*獲得幾個(gè)名次:" cin>>k; for(s=0;s<5;s+) hi.cj.ranges=0, hi.cj.marks=0; for(s=0;s<k;s+) cout<<"*名次:" cin>>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.

9、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.score=hi.score+hi.cj.marks; /按取前三名還是取前五名分別記分

10、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)目里面去 cout<<endl; cout<<endl; /*輸出函數(shù)*void output() int choice,i,j,k;int sign; do cout<<"* 1.按學(xué)校編號(hào)輸出 *"<<endl; cout<<"* 2.按學(xué)??偡州敵?*"<&l

11、t;endl; cout<<"* 3.按男團(tuán)總分輸出 *"<<endl; cout<<"* 4.按女團(tuán)總分輸出 *"<<endl;cout<<endl; cout<<"* 請(qǐng)選擇編號(hào):" cin>>choice;cout<<endl; switch(choice) case 1:/*按編號(hào)順序輸出for(i=0;i<n;i+) cout<<"*學(xué)校編號(hào):"<<hi.schoolnum<

12、<endl; cout<<"*學(xué)??偡?"<<hi.score<<endl; cout<<"*男團(tuán)總分:"<<hi.mscore<<endl; cout<<"*女團(tuán)總分:"<<hi.wscore<<endl;cout<<endl; break; case 2:/*按學(xué)??偡州敵?for(i=0;i<n;i+) for(j=i+1;j<n;j+)if(hi.score<hj.score)k=i;

13、 i=j; j=k; for(i=0;i<n;i+) cout<<"*學(xué)校編號(hào):"<<hi.schoolnum<<endl; cout<<"*學(xué)??偡?"<<hi.score<<endl; cout<<"*男團(tuán)總分:"<<hi.mscore<<endl; cout<<"*女團(tuán)總分:"<<hi.wscore<<endl; cout<<endl; break;

14、 case 3:/*按男團(tuán)總分輸出 for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(hi.mscore<hj.mscore)k=i; i=j; j=k; for(i=0;i<n;i+) cout<<"*學(xué)校編號(hào):"<<hi.schoolnum<<endl; cout<<"*學(xué)??偡?"<<hi.score<<endl; cout<<"*男團(tuán)總分:"<<hi.mscore<<end

15、l; cout<<"*女團(tuán)總分:"<<hi.wscore<<endl;cout<<endl; break; case 4:/*按女團(tuán)總分輸出 for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(hi.wscore<hj.wscore) k=i; i=j; j=k; for(i=0;i<n;i+) cout<<"*學(xué)校編號(hào):"<<hi.schoolnum<<endl; cout<<"*學(xué)??偡?"

16、<<hi.score<<endl; cout<<"*男團(tuán)總分:"<<hi.mscore<<endl; cout<<"*女團(tuán)總分:"<<hi.wscore<<endl; cout<<endl; break; cout<<"請(qǐng)選擇 2-繼續(xù),0-跳出"<<endl; cin>>sign;while(sign=2); /* 查詢函數(shù):提供兩種查詢方式*void inquiry()int choice

17、;int i,j,k,s;cout<<"*1:按學(xué)校編號(hào)查詢"<<endl;cout<<"*2:按項(xiàng)目編號(hào)查詢"<<endl;cout<<"*請(qǐng)選擇查詢方式:" cin>>choice;cout<<endl; switch(choice) case 1: do cout<<"要查詢的學(xué)校編號(hào):"cin>>i;cout<<endl;if(i>n)cout<<"錯(cuò)誤:這個(gè)學(xué)

18、校沒有參加此次運(yùn)動(dòng)會(huì)!"<<endl; elsecout<<"要查詢的項(xiàng)目編號(hào):" cin>>j; if(j>m+w|j=0) cout<<"此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目"<<endl; else cout<<"這個(gè)項(xiàng)目取前"<<h0.cj-1.top<<"名,該學(xué)校的成績(jī)?nèi)缦?"<<endl; for(k=0;k<5;k+) if(hi-1.cj-1.rangek!=0) cout<&

19、lt;"名次:"<<hi-1.cj-1.rangek<<endl; cout<<"請(qǐng)選擇 2-繼續(xù), 0-跳出"<<endl;cin>>s;cout<<endl;while(s=2); break; case 2: do cout<<"要查詢的項(xiàng)目編號(hào):"cin>>s;cout<<endl;if(s>m+w|s=0)cout<<"此次運(yùn)動(dòng)會(huì)不包括這個(gè)項(xiàng)目."<<endl;else

20、cout<<"該項(xiàng)目取前"<<h0.cs-1.top<<"名,取得名次的學(xué)校"<<endl;for(i=0; i<n;i+) for(j=0;j<5;j+) if(hi.cs-1.rangej!=0) cout<<"學(xué)校編號(hào):"<<hi.schoolnum<<"名次:"<<hi.cs-1.rangej<<endl; cout<<"2-繼續(xù),0-跳出"<<

21、endl;cin>>i;cout<<endl;while(i=2); break;/*把數(shù)據(jù)存儲(chǔ)在文件中*void writedata() FILE *report; int i; if(report=fopen("sportsdata.txt","w")=null) cout<<"不能打開文件!"<<endl; exit(1); for(i=0;i<n;i+)fwrite(&hi,sizeof(headnode),1,report); fclose(report); /*

22、讀出文件中數(shù)據(jù)的函數(shù)*void readdata() FILE *report; int i,j,k,s; if(report=fopen("sportsdata.txt","r")=null) cout<<"不能打開文件!"<<endl; exit(1); /*按照讀一個(gè)數(shù)據(jù)就輸出一個(gè)數(shù)據(jù)的方式顯示數(shù)據(jù)內(nèi)容* for(i=0;i<n;i+) cout<<"*學(xué)校編號(hào):" fread(&k,sizeof(int),1,report); cout<<k&l

23、t;<endl; cout<<"*學(xué)校總分:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout<<"*男團(tuán)總分:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout<<"*女團(tuán)總分:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout&l

24、t;<endl; getch(); for(j=0;j<m+w;j+) cout<<"*項(xiàng)目編號(hào):" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout<<"*所取名次數(shù)量:" fread(&k,sizeof(int),1,report); cout<<k<<endl; for(s=0;s<5;s+) fread(&k,sizeof(int),1,report); if(k!=0) cout

25、<<"*名次:"<<k<<endl; for(s=0;s<5;s+) fread(&k,sizeof(int),1,report); if(k!=0) cout<<"*分?jǐn)?shù):"<<k<<endl; cout<<endl; getch(); fclose(report); /*主函數(shù)*void main() int choice;cout<<endl;cout<<"=歡迎使用運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)="<<en

26、dl; cout<<" -BY:09002829 "<<endl;cout<<endl;cout<<endl; cout<<"* 1.輸入信息 *"<<endl; cout<<"* 2.輸出信息 *"<<endl; cout<<"* 3.查詢信息 *"<<endl; cout<<"* 4.調(diào)用信息 *"<<endl; cout<<"

27、* 5.退出系統(tǒng) *"<<endl; cout<<endl; cout<<"="<<endl;cout<<endl;cout<<"*請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào):"cin>>choice;cout<<endl;switch(choice) case 1: input();writedata();readdata();main(); case 2: output();main(); case 3: inquiry();main(); case 4: read

28、data();main(); case 5: exit(0); default: exit(0); 四、測(cè)試數(shù)據(jù)及其結(jié)果分析1進(jìn)入主界面選擇信息錄入2.設(shè)定4個(gè)學(xué)校編號(hào)為1、2、3、4,男生項(xiàng)目編號(hào)為1、2,女生項(xiàng)目為3、4。依次錄入各學(xué)校信息3.錄入后系統(tǒng)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行處理,得出總分。4.信息錄入完畢,自動(dòng)保存到TXT文檔5.選擇返回主界面6.按照學(xué)校編號(hào)排序輸出7. 按照學(xué)校總分排序輸出8.按照男團(tuán)總分排序輸出9按照女團(tuán)總分排序輸出10.學(xué)校編號(hào)查詢11.無(wú)學(xué)校編號(hào)情況下報(bào)錯(cuò)提示12.項(xiàng)目查詢13項(xiàng)目查詢無(wú)此項(xiàng)目報(bào)錯(cuò)提示14.調(diào)用之前保存文檔中的信息15.無(wú)文本文檔,提示調(diào)用出錯(cuò)五、課程設(shè)計(jì)總結(jié)(1).調(diào)試中所遇到的較重要問題的回顧:1) 提出問題:在輸出時(shí),調(diào)用冒泡排序法時(shí),輸出總是報(bào)錯(cuò),無(wú)法執(zhí)行。 分析問題:在分析的時(shí)候檢查到,自己調(diào)用了一個(gè)第三參數(shù)當(dāng)做下標(biāo),直接使用下標(biāo)進(jìn)行數(shù)組的交換。然后經(jīng)過(guò)檢查發(fā)現(xiàn),此下標(biāo)是多余的,沒有必要引入,依靠當(dāng)前的元素完全可以滿足功能需求。解決問題:去掉引入的第三方下標(biāo)。2) 提出問題:設(shè)置選項(xiàng),供用戶輸入選擇時(shí),當(dāng)按任意鍵時(shí)都會(huì)跳入下一步操作,或者直接退出系統(tǒng)。分析問題:在供用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論