《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第1頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第2頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第3頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第4頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(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ù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì) 題目:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)一、 問題描述參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n.比賽分成m個(gè)男子項(xiàng)目和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1.m,女子m+1.m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)二、 基本要求1). 可以輸入各個(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).

2、界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。6). 存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。三、算法思想 本課設(shè)要求輸入信息,統(tǒng)計(jì)分?jǐn)?shù),執(zhí)行排序與查找功能,在要求中沒有在建立數(shù)據(jù)之后進(jìn)行插入和刪除操作,而在排序和查找過程中有許多的隨機(jī)讀取數(shù)據(jù)操作,因此使用順序結(jié)構(gòu)而不用鏈表。由于各個(gè)要求屬性具有一定的聯(lián)系,在定義數(shù)據(jù)時(shí)使用結(jié)構(gòu)體和結(jié)構(gòu)體數(shù)組來存儲(chǔ)信息數(shù)據(jù)??紤]到程序的要求在設(shè)計(jì)函數(shù)時(shí)將學(xué)校個(gè)數(shù)和項(xiàng)目個(gè)數(shù)設(shè)計(jì)為可變的數(shù)據(jù),為方便使用設(shè)計(jì)菜單函數(shù)(menu),而由于要求將信息存儲(chǔ)在文件中故設(shè)計(jì)文件的存儲(chǔ)(savet

3、ofile)與讀取函數(shù)(readfromfile),信息輸入函數(shù)(input)在輸入基本信息后由系統(tǒng)統(tǒng)計(jì)總分的內(nèi)容并全部存入文件file中,在接下來的函數(shù)中開始都需要讀取文件中的信息,信息的輸出(output)輸出輸入函數(shù)中統(tǒng)計(jì)后的各項(xiàng)信息,在排序輸出(sortput)中使用冒泡排序法進(jìn)行不同關(guān)鍵字的排序,查詢函數(shù)(search)采用順序表的查找來完成。四、數(shù)據(jù)結(jié)構(gòu)(1) 項(xiàng)目數(shù)據(jù)表:運(yùn)動(dòng)會(huì)系統(tǒng)先制定本次運(yùn)動(dòng)會(huì)所需的參賽項(xiàng)目。本數(shù)據(jù)表根據(jù)要求設(shè)計(jì)存儲(chǔ)每個(gè)項(xiàng)目的編號(hào)、要取的名次、各個(gè)名次名稱及各名次對(duì)應(yīng)的分?jǐn)?shù)。用于對(duì)以后項(xiàng)目情況的統(tǒng)計(jì)已及查詢。其中inum,top,range由輸入信息輸入,而m

4、ark有range和top決定。typedef struct int inum; /*項(xiàng)目編號(hào)*/ int top; /*取名次的數(shù)目*/ int range5; /*名次*/ int mark5; /*分?jǐn)?shù)*/itemnode; /*存放項(xiàng)目信息*/(2) 學(xué)校數(shù)據(jù)表:本數(shù)據(jù)表根據(jù)要求儲(chǔ)存了各個(gè)參賽學(xué)校的總體情況,包括學(xué)校的編號(hào)、學(xué)校總分、男子團(tuán)體總分、女子團(tuán)體總分,并且包括項(xiàng)目數(shù)據(jù)數(shù)組tn。其中snum和tn中部分?jǐn)?shù)據(jù)由輸入信息輸入,而其他三項(xiàng)內(nèi)容score,mscore,wscore將由系統(tǒng)進(jìn)行自動(dòng)統(tǒng)計(jì)。typedef struct int snum; /*學(xué)校編號(hào)*/ int scor

5、e; /*學(xué)校總分*/ int mscore; /*男團(tuán)體總分*/ int wscore; /*女團(tuán)體總分*/ itemnode tm0+w0; /*項(xiàng)目數(shù)組*/snode; /*存放學(xué)校信息*/snode an0; /* 定義一個(gè)學(xué)校數(shù)組*/ 這二個(gè)數(shù)據(jù)表相關(guān)聯(lián)接,an中包括tn,形成一個(gè)整體。五、模塊劃分1、void menu(int n,int m,int w) 功能是提供界面窗口2、void savetofile() 功能是保存輸入的運(yùn)動(dòng)會(huì)信息到file文件3、void readfromfile() 功能是從file文件中讀取運(yùn)動(dòng)會(huì)信息4、void input(int n,int m,

6、int w) 功能是輸入信息并統(tǒng)計(jì)5、void output(int n,int m,int w) 功能是按學(xué)校、項(xiàng)目輸出統(tǒng)計(jì)信息6、void sortput(int n,int m,int w) 功能是按四種方法排序并輸出結(jié)果7、void search(int n,int m,int w) 功能是按兩種方法查詢并輸出結(jié)果六、源程序#include#include#include #define n0 20 /*學(xué)校最大數(shù)目*/ #define m0 20 /*男子項(xiàng)目最大數(shù)目*/ #define w0 20 /*女子項(xiàng)目最大數(shù)目*/typedef struct int inum; /*項(xiàng)目編

7、號(hào)*/ int top; /*取名次的數(shù)目*/ int range5; /*名次*/ int mark5; /*分?jǐn)?shù)*/itemnode; /*存放項(xiàng)目信息*/typedef struct int snum; /*學(xué)校編號(hào)*/ int score; /*學(xué)??偡?/ int mscore; /*男團(tuán)體總分*/ int wscore; /*女團(tuán)體總分*/ itemnode tm0+w0; /*項(xiàng)目數(shù)組*/snode; /*存放學(xué)校信息*/snode an0; /* 定義一個(gè)學(xué)校數(shù)組*/void menu(int n,int m,int w) /*菜單函數(shù)*/ int c; void input(

8、int n,int m,int w);void output(int n,int m,int w);void sortput(int n,int m,int w);void search(int n,int m,int w);printf(ttt歡迎使用ttttnn); printf(t*運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*nn); printf(tt*1.信息輸入*n); printf(tt*2.統(tǒng)計(jì)輸出*n); printf(tt*3.排序輸出*n); printf(tt*4.信息查詢*n); printf(tt*0.退出系統(tǒng)*nn); printf(=nn);printf(請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào)(04)

9、:); scanf(%d,&c);switch(c) case 1: input(n,m,w);break; case 2: output(n,m,w);break; case 3: sortput(n,m,w);break; case 4: search(n,m,w);break; case 0:printf(謝謝使用,再見!n); exit(0); default: printf(輸入錯(cuò)誤,請(qǐng)重試!n);menu(n,m,w); void savetofile() /*信息存入文件file*/file *fp; int i; if(fp=fopen(file.txt,w)=null) pr

10、intf(cannot open the filen); return; for(i=0;in0;i+) if(ai.snum!=0) if(fwrite(&ai,sizeof(snode),1,fp)!=1) printf(file write errorn); return; fclose(fp);void readfromfile() /*信息從文件file中取出*/ int i;file *fp; if(fp=fopen(file.txt,rb)=null) printf(cannot open the filen); return; for(i=0;in0;i+) fread(&ai

11、,sizeof(snode),1,fp); fclose(fp);void input(int n,int m,int w) /*信息輸入*/int i,j,s,k,q=0; for(i=0;in;i+) printf(學(xué)校編號(hào):); scanf(%d,&ai.snum); /*輸入學(xué)校信息*/ for(j=0;jm+w;j+) printf(項(xiàng)目編號(hào):); scanf(%d,&ai.tj.inum); printf(取名次個(gè)數(shù)(3或者5):); scanf(%d,&ai.tj.top); printf(獲得名次個(gè)數(shù)(15):); scanf(%d,&k); /*輸入項(xiàng)目信息*/ for(s=

12、0;sk;s+) printf(所獲名次(15):); scanf(%d,&ai.tj.ranges); /*輸入所獲名次信息*/ printf(n); for(i=0;in;i+) ai.score=0; ai.mscore=0; ai.wscore=0; /*初始化分?jǐn)?shù)*/for(i=0;in;i+) for(j=0;jm+w;j+) for(s=0;s5;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.mar

13、ks=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.marks=5; break; case 3: ai.tj.marks=3; break; case 4: ai.tj.marks=2; break; case 5: ai.tj.marks=1; break; else printf(信息有誤!);printf(n);exit(0

14、); ai.score=ai.score+ai.tj.marks; /*記學(xué)??偡?/ if(j=m-1) ai.mscore=ai.mscore+ai.tj.marks; /*記男子團(tuán)體總分*/ else ai.wscore=ai.wscore+ai.tj.marks; /*記女子團(tuán)體總分*/while(q!=1)printf(輸入完畢!返回? 1是 2否); /*返回菜單*/ scanf(%d,&q); printf(n);printf(n);savetofile(); menu(n,m,w);void output(int n,int m,int w) /*統(tǒng)計(jì)輸出*/ readfrom

15、file();int i,j,s,q=0; for(i=0;in;i+) /*顯示結(jié)果*/printf(學(xué)校編號(hào):%d 學(xué)校總分:%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,ai.snum,ai.score,ai.mscore,ai.wscore); for(j=0;jm+w;j+) printf(項(xiàng)目編號(hào):%d 所取名次數(shù)量:%dn,ai.tj.inum,ai.tj.top); for(s=0;s5;s+) if(ai.tj.ranges!=0) printf(名次:%d 分?jǐn)?shù):%dn,ai.tj.ranges,ai.tj.marks);printf(n);printf(n);while(q!=

16、1)printf(統(tǒng)計(jì)完畢!返回? 1是 2否); /*返回菜單*/ scanf(%d,&q); printf(n);printf(n); menu(n,m,w);void sortput(int n,int m,int w) /*排序輸出函數(shù)*/ readfromfile();int c,i,j,k,q=0;int tempn0; printf(t*排序輸出系統(tǒng)*nn); printf(tt*1.按學(xué)校編號(hào)輸出*n); printf(tt*2.按學(xué)??偡州敵?n); printf(tt*3.按男團(tuán)總分輸出*n); printf(tt*4.按女團(tuán)總分輸出*n); printf(=nn);do

17、printf(請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(14):); scanf(%d,&c);switch(c) case 1: for(i=0;in;i+) tempi=i; for(i=0;in;i+) for(j=i+1;jaj.snum) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;in;i+) printf(學(xué)校編號(hào):%d 學(xué)校總分:%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按學(xué)校編號(hào)輸出*/ break; case 2: f

18、or(i=0;in;i+)tempi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(atempi.scoreaj.score) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;in;i+) printf(學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按學(xué)校總分輸出*/ break; case 3: for(i=0;in;i+)tempi=i; for(i=0;in;i+) f

19、or(j=i+1;jn;j+) if(atempi.mscoreaj.mscore) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;in;i+) printf(學(xué)校編號(hào):%d 學(xué)校總分:%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按男團(tuán)總分輸出*/ break; case 4: for(i=0;in;i+) tempi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(atempi.wscoreaj

20、.wscore) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;in;i+) printf(學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按女圖總分輸出*/ break; default: printf(輸入錯(cuò)誤,請(qǐng)重試!n);printf(請(qǐng)選擇 1 返回主菜單 0繼續(xù)); /*返回菜單或繼續(xù)排序*/scanf(%d,&q);printf(n);while(q=0);printf(n);if(q!=

21、0)menu(n,m,w);void search(int n,int m,int w) /*查詢函數(shù)*/ readfromfile();int c,i,j,k,d,l,q=0; printf(t*查詢系統(tǒng)*nn); printf(tt*1.按學(xué)校編號(hào)查詢*n); printf(tt*2.按項(xiàng)目編號(hào)查詢*n); printf(=nn);do k=-1;d=-1;l=-1;printf(請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(12):); scanf(%d,&c); switch(c) case 1: printf(要查詢的學(xué)校編號(hào):); /*查找學(xué)校編號(hào)下標(biāo)*/scanf(%d,&c);for(i=0;in;

22、i+)if(ai.snum=c) k=i;if(k=-1)printf(錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!n); elseprintf(要查詢的項(xiàng)目編號(hào):); /*查找項(xiàng)目編號(hào)下標(biāo)*/ scanf(%d,&c);for(j=0;jm+w;j+)if(ak.tj.inum=c) d=j;if(d=-1) printf(此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目n); else /*顯示結(jié)果*/ printf(這個(gè)項(xiàng)目取前 %d名,該學(xué)校的成績(jī)?nèi)缦?n, ak.td.top); for(i=0;i5;i+) if(ak.td.rangei!=0) printf(名次:%dn,ak.td.rangei); break;

23、 case 2: printf(要查詢的項(xiàng)目編號(hào):); /*查找項(xiàng)目編號(hào)下標(biāo)*/ scanf(%d,&c); for(i=0;in;i+)for(j=0;jm+w;j+) if(ai.tj.inum=c)l=j; if(l=-1) printf(此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目n); else /*顯示結(jié)果*/ printf(該項(xiàng)目取前 %d名,取得名次的學(xué)校n,a0.tl.top);for(i=0; in;i+) for(j=0;j5;j+) if(ai.tl.rangej!=0) printf(學(xué)校編號(hào):%d,名次:%dn,ai.snum,ai.tl.rangej); break; default: printf(輸入錯(cuò)誤,請(qǐng)重試!n);printf(請(qǐng)選擇 1 返回主菜單 0繼續(xù)); /*返回菜單或繼續(xù)查詢*/ scanf(%d,&q)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論