數(shù)據(jù)結(jié)構(gòu)運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、洛陽理工學(xué)院課程設(shè)計報Ab告課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計設(shè)計題目運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)計算機科學(xué)與技術(shù)課 程設(shè)計 任務(wù)書設(shè)計題目:運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)設(shè)計內(nèi)容與要求:參加運動會有n個學(xué)校,學(xué)校編號為1n。比賽分成m個男子項目,和w個女子項目。項目編號為男子 1m女子m+1m+w不同的項目取前五名或前5、三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(mv=20,*=20 ?可以輸入各個項目的前三名或前五名的成績; 2)?能統(tǒng)計各學(xué)??偡郑?)?可以按學(xué)校編號或名 稱、學(xué)校總分、男女團體總分排序輸出; 4)?可以按學(xué)校編號查詢學(xué)校某個項

2、目的 情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。輸出形式:有中文提示, 各學(xué)校分?jǐn)?shù)為整形界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提 示,可以完成相關(guān)的功能要求。存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)1、全計,但是要求運動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。測試數(shù)據(jù):要求使用 部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進行程序測試,以保證程序的穩(wěn)定。指導(dǎo)教師:張新顏2016年12月成績:課程設(shè)計評語扌旨導(dǎo)教師:年 月 日1. 算法思想 :本課設(shè)要求輸入信息,統(tǒng)計分?jǐn)?shù),執(zhí)行排序與查找功能,在要求中沒有在建 立數(shù)據(jù)之后進行插入和刪除操作,而在排序和查找過程中有許多的隨機讀取數(shù)據(jù)

3、操作,因此使用順序結(jié)構(gòu)而不用鏈表。由于各個要求屬性具有一定的聯(lián)系,在定 義數(shù)據(jù)時使用結(jié)構(gòu)體和結(jié)構(gòu)體數(shù)組來存儲信息數(shù)據(jù)??紤]到程序的要求在設(shè)計函 數(shù)時將學(xué)校個數(shù)和項目個數(shù)設(shè)計為可變的數(shù)據(jù),為方便使用設(shè)計菜單函數(shù)(menU,而由于要求將信息存儲在文件中故設(shè)計文件的存儲(savetofile )與 讀取函數(shù)( readfromfile ),信息輸入函數(shù)( input )在輸入基本信息后由系統(tǒng)統(tǒng) 計總分的 內(nèi)容并全部存入文件 file 中,在接下來的函數(shù)中開始都需要讀取文件 中的信息,信息的輸出( output )輸出輸入函數(shù)中統(tǒng)計后的各項信息,在排序輸 出(sort put )中使用冒泡排序法進行不

4、同關(guān)鍵字的排序,查詢函數(shù)(search )采 用順序表的查找來完成。1、Void menu(int n,int m,int w)2、Void savetofile()2. 模塊劃分 :功能是提供界面窗口。功能是保存輸入的運動會信息到 file 文3、Void readfromfileO4、Void input(int n,int m,int w)5、Void output(int n,int m,int w)功能是從file文件中讀取運動會信息 功能是輸入信息并統(tǒng)計 功能是按學(xué)校、項目輸出統(tǒng)計信息輸岀學(xué)校信息結(jié)束輸岀該項目信息6、Void sortput(int n,int m,int w)功

5、能是按四種方法排序并輸出結(jié)果f開始結(jié)束輸入c按女生項目排序按男生項目排序按學(xué)校總分排序按學(xué)校編號排序/開始k1 1輸入學(xué)校編號輸入1或者0輸入項目號7、 Void search(int n,int m,int w)功能是按兩種方法查詢并輸出結(jié)果8、 void main()主函數(shù)2.數(shù)據(jù)結(jié)構(gòu):(1)項目數(shù)據(jù)表:運動會系統(tǒng)先制定本次運動會所需的參賽項目。本數(shù)據(jù)表根據(jù)要求設(shè)計存儲 每個項目的編號、要取的名次、各個名次名稱及各名次對應(yīng)的分?jǐn)?shù)。用于對以后 項目情況的統(tǒng)計已及查詢。其中inum,top,range由輸入信息輸入,而 mark有 range 和top 決定。typ edef struct項目

6、學(xué)校編號1 (男)編號2 (男)編號3 (女)取前31取前5取前5int inum;/*項目編號*/int top;/*取名次的數(shù)目*/int ran ge5;/*名次*/int mark5;/*分?jǐn)?shù)*/ite mnode;/*存放項目信息*/(2)學(xué)校數(shù)據(jù)表:本數(shù)據(jù)表根據(jù)要求儲存了各個參賽學(xué)校的總體情況,包括學(xué)校的編號、學(xué)??偡帧⒛凶訄F體總分、女子團體總分,并且包括項目數(shù)據(jù)數(shù)組tn。其中snum和tn中部分?jǐn)?shù)據(jù)由輸入信息輸入,而其他三項內(nèi)容score,mscore,wscore將由系統(tǒng)進行自動統(tǒng)計。typ edef structint snum;/*學(xué)校編號*/int score;/*學(xué)校總

7、分*/int mscore;/*男團體總分*/int wscore;/*女團體總分*/item node tM+W; /*項目數(shù)組*/snode;/*存放學(xué)校信息*/snode aN;/*定義一個學(xué)校數(shù)組*/這二個數(shù)據(jù)表相關(guān)聯(lián)接,an中包括tn,形成一個整體。3.測試:測試取學(xué)校個數(shù)為3,男子項目個數(shù)2.女子項目個數(shù)1。編號1編號2名次名次321、42、53、41、5編號3名次132將上述所有學(xué)校 的信息輸入,然后計 算出所有學(xué)校的總分, 男子項目的總分,女 子項目的總分,然后 再將自己計算出的數(shù) 值與所做成的系統(tǒng)比較,觀看是否存在誤差和錯誤。1. 主菜單界面2. 信息輸入測試:預(yù)計輸入三個學(xué)

8、校的信息。3. 統(tǒng)計輸出測試:4. 排序輸出測試。5. 信息查詢測試:6. 結(jié)束程序測試:預(yù)計輸出三個學(xué)校信息。實現(xiàn)學(xué)??偡?,男團總分,女團總分均可排序輸出。 預(yù)計可以用學(xué)校編號和項目編號查詢。預(yù)計直接退出系統(tǒng)。經(jīng)過運算與測試結(jié)果比較,發(fā)現(xiàn)預(yù)期結(jié)果與運行結(jié)果一致。所以運動會分?jǐn)?shù) 統(tǒng)計系統(tǒng)正確無誤。5.源程序:#in clude<>#in clude<>#in elude <>#defi ne N 20/*#defi ne M 20/*#defi ne W 20/*學(xué)校最大數(shù)目*/男子項目最大數(shù)目*/女子項目最大數(shù)目*/typ edef struct int

9、inum;int top;int ran ge5;int mark5; ite mno de; typ edef struct int snum;/*/*/*/*/*/*int score;int mscore;int wscore;/*/*/*item node tM+W; /*sno de;/*snode aN;/*項目編號*/取名次的數(shù)目*/名次*/分?jǐn)?shù)*/存放項目信息*/void men u(i nt n ,i nt m,i nt w) /* int c;學(xué)校編號*/學(xué)校總分*/男團體總分*/女團體總分*/項目數(shù)組*/存放學(xué)校信息*/定義一個學(xué)校數(shù)組*/菜單函數(shù)*/void input

10、(int n,int m,int w);void output(int n,int m,int w); void sortput(int n,int m,int w);printf("ttt歡迎使用 ttttnn");printf("t*運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)*printf("t*1.信息輸入*tn");printf("t*2.統(tǒng)計輸出*tn");printf("t*3.排序輸出*tn");printf("t*4.信息查詢*tn");printf("t*0.退出系統(tǒng)*tnn&qu

11、ot;)printf("t*老師你最好看*tn")void search(int n,int m,int w);Hprintf("t=printf(" 請選擇要實現(xiàn)步驟的編號 (0-4):"); scanf("%d",&c);switch(c)case 1:nn");case 2:case 3:case 4:case 0:default:input(n,m,w);break; output(n,m,w);break; sortput(n,m,w);break; search(n,m,w);break;pri

12、ntf("謝謝使用 , 再見 !n"); exit(0);printf(" 輸入錯誤 , 請重試 !n"); menu(n,m,w);信息存入文件 file*/*void savetofile()FILE *fp;int i;if(fp=fopen("","wb")=NULL)printf("cannot open the filen"); return;for(i=0;i<N;i+)if(ai.snum!='0') if(fwrite(&ai,sizeof(sno

13、de),1,fp)!=1) printf("file write errorn"); return; fclose(fp);信息從文件 file 中取出 */void readfromfile() /*int i;FILE *fp;if(fp=fopen("","rb")=NULL) printf("cannot open the filen"); return;for(i=0;i<N;i+)fread(&ai,sizeof(snode),1,fp);fclose(fp);void input(int

14、 n,int m,int w) num); /*for(j=0;j<m+w;j+)printf(" 項目編號 :"); scanf("%d",&ai.tj.inum);printf(" 項目取前 3 名或前scanf("%d",&ai.tj.top);if(ai.tj.top=3)printf("else輸入學(xué)校信息 */5 名 (3 或者 5):");獲得名次個數(shù)(1-3):");printf(" scanf("%d",&k); /*

15、 for(s=0;s<k;s+)if(ai.tj.top=3) printf(" 所獲名次 (1-3):"); else獲得名次個數(shù)(1-5) 輸入項目信息:");*/輸入所獲名次信息 */printf(" 所獲名次 (1-5):");scanf("%d",&ai.tj.ranges); /*printf("n");for(i=0;i<n;i+)ai.score=0;初始化分?jǐn)?shù) */ai.mscore=0; ai.wscore=0; /* for(i=0;i<n;i+)for(j

16、=0;j<m+w;j+) for(s=0;s<5;s+)if(ai.tj.top=3) switch(ai.tj.ranges)case 0: ai.tj.marks=0; break;case 1: ai.tj.marks=5; break;case 2: ai.tj.marks=3; break;case 3: ai.tj.marks=2; break;else if(ai.tj.top=5) switch(ai.tj.ranges)case 0: ai.tj.marks=0; break;case 1: ai.tj.marks=7; break;case 2: ai.tj.m

17、arks=5; break;case 3: ai.tj.marks=3; break;case 4: ai.tj.marks=2; break;case 5: ai.tj.marks=1; break;elseprintf(" 信息有誤 !"); printf("n");exit(0);記學(xué)校總分 */記男子團體總分 */ai.score=ai.score+ai.tj.marks; /* if(j<=m-1) ai.mscore=ai.mscore+ai.tj.marks; /* elseai.wscore=ai.wscore+ai.tj.mark

18、s; /*printf("輸入完畢!返回? 1是0否n"); /*scanf("%d",&q);printf("n");if(q!=1)printf(" 不能再添加信息 !"); printf("n"); savetofile(); getchar(); system("cls"); menu(n,m,w);記女子團體總分 */返回菜單 */*將信息存入文件 file*/void output(int n,int m,int w) num,ai.score,ai.ms

19、core,ai.wscore); for(j=0;j<m+w;j+)printf(" 項目編號 :%d 所取名次數(shù)量 :%dn",ai.tj.inum,ai.tj.top); for(s=0;s<5;s+) if(ai.tj.ranges!=0)printf(" 名次 :%d 分?jǐn)?shù) :%dn",ai.tj.ranges,ai.tj.marks); printf("n");printf("n");printf(" 統(tǒng)計成功 ! 返回 ? 1 是 0 否"); /* 返回菜單 */ sc

20、anf("%d",&q);printf("n");if(q!=1)printf(" 統(tǒng)計已經(jīng)結(jié)束 !");printf("n");printf("tdosystem("cls"); menu(n,m,w);void sortput(int n,int m,int w)學(xué)校編號輸出 *tn");printf("t*2.按學(xué)??偡州敵?*tn");printf("t*3.按男團總分輸出 *tn");printf("t*4.

21、按女團總分輸出 *tn");nn");printf(" 請選擇要實現(xiàn)功能的編號 (1-4):"); scanf("%d",&c);switch(c)case 1:for(i=0;i<n;i+) tempi=i; for(i=0;i<n;i+) for(j=i+1;j<n;j+)if(atempi.snum>aj.snum) k=tempi;tempi=tempj;tempj=k; for(i=0;i<n;i+)/*用冒泡排序方法排序 */printf(" 學(xué)校編號 :%d 學(xué)??偡?:%

22、d 男團總分 :%d分:dn",ate mp i.s num,ate mp i.score,ate mp i.mscore,ate mp i.wscore); /* 按學(xué)校編號輸出break;女團總*/case 2:for(i=0;i<n;i+)tempi=i;for(i=0;i<n;i+)for(j=i+1;j<n;j+)if(atempi.score<aj.score)k=tempi; tempi=tempj; tempj=k;/*for(i=0;i<n;i+)printf("用冒泡排序方法排序 */學(xué)校編號 :%d 學(xué)??偡?:%d 男團

23、總分 :%d分:%dn",ate mp i.s num,ate mp i.score,ate mp i.mscore,ate mp i.wscore);/*按學(xué)??偡州敵鯾reak;case 3:女團總*/for(i=0;i<n;i+) tempi=i;for(i=0;i<n;i+)for(j=i+1;j<n;j+)if(atempi.mscore<aj.mscore)k=tempi; tempi=tempj;tempj=k;/*for(i=0;i<n;i+)printf("用冒泡排序方法排序 */學(xué)校編號 :%d 學(xué)??偡?:%d 男團總分

24、:%d分:%dn",ate mp i.s num,ate mp i.score,ate mp i.mscore,ate mp i.wscore);女團總/*按男團總分輸出 */break; case 4:for(i=0;i<n;i+) tempi=i;for(i=0;i<n;i+)for(j=i+1;j<n;j+)if(atempi.wscore<aj.wscore) k=tempi; tempi=tempj; tempj=k;/* for(i=0;i<n;i+)printf("用冒泡排序方法排序 */學(xué)校編號 :%d 學(xué)校總分 :%d 男團總

25、分 :%d 女團總分:dn",ate mp i.s num,ate mp i.score,ate mp i.mscore,ate mp i.wscore);/*按女團總分輸出 */break;default:printf(" 輸入錯誤 , 請重試 !n");printf(" 請選擇 1 返回主菜單 0 繼續(xù) ");/*scanf("%d",&q); system("cls");printf("n");while(q=0);printf("n");if(q!=

26、0)menu(n,m,w);返回菜單或繼續(xù)排序 */void search(int n,int m,int w) printf("t* 2. printf("t= do學(xué)校編號查詢按項目編號查詢*tn");*tn");=nn"); k=-1;d=-1;l=-1;printf(" 請選擇要實現(xiàn)功能的編號 (1-2):"); scanf("%d",&c);switch(c)case 1:/*查找學(xué)校編號下標(biāo) */printf("要查詢的學(xué)校編號 :");scanf("%d

27、",&c); for(i=0;i<n;i+)if(ai.snum=c)k=i;if(k=-1)printf(" 錯誤:這個學(xué)校沒有參加此次運動會 else!n");printf(" 要查詢的項目編號 :"); scanf("%d",&c);for(j=0;j<m+w;j+)if(ak.tj.inum=c)d=j;/*查找項目編號下標(biāo) */break;case 2:if(d=-1)printf(" 此次運動會沒有這個項目 n");else/*顯示結(jié)果 */printf("

28、; 這個項目取前 %d 名 , 該學(xué)校的成績?nèi)缦?:n", ak.td.top); for(i=0;i<5;i+)if(ak.td.rangei!=0)printf(" 名次 :%dn",ak.td.rangei);printf(" scanf("%d",&c); for(i=0;i<n;i+)for(j=0;j<m+w;j+)if(ai.tj.inum=c)l=j;if(l=-1)printf(" 此次運動會沒有這個項目 n");else要查詢的項目編號 :");/*/*查找項

29、目編號下標(biāo) */顯示結(jié)果 */printf("該項目取前 %d名,取得名次的學(xué)校n",a0.tl.top);for(i=0; i<n;i+)for(j=0;j<5;j+)if(ai.tl.rangej!=0)printf(" 學(xué)校編號 :%d, 名次 :%dn",ai.snum,ai.tl.rangej); break;default: printf("printf(" 請選擇 :1. 返回主菜單 0. 繼續(xù) "); scanf("%d",&q); printf("n");while(q=0); printf("n");if(q!=0)menu(n,m,w);輸入錯誤 , 請重試 !n");/*返回菜單或繼續(xù)查詢 */主函數(shù) int main() /int n,m,w;printf(&qu

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論