




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、洛 陽 理 工 學(xué) 院課 程 設(shè) 計(jì) 報(bào) 告 課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 設(shè)計(jì)題目 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級 學(xué) 號 姓 名 完成日期 2016.12.30課 程 設(shè) 計(jì) 任 務(wù) 書設(shè)計(jì)題目: 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)內(nèi)容與要求: 參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號為1n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績;2)能統(tǒng)計(jì)各學(xué)??偡?,3
2、)可以按學(xué)校編號或名稱、學(xué)校總分、男女團(tuán)體總分排序輸出;4)可以按學(xué)校編號查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。測試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測試,以保證程序的穩(wěn)定。 指導(dǎo)教師: 張新顏 2016 年 12 月 日課 程 設(shè) 計(jì) 評 語 成績: 指導(dǎo)教師:_ 年 月 日洛 陽 理 工 學(xué) 院 課 程 設(shè) 計(jì) 報(bào) 告
3、1. 算法思想:本課設(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ǔ)(savetofile)與讀取函數(shù)(readfromfile),信息輸入函數(shù)(input)在輸入基本信息后由系統(tǒng)統(tǒng)計(jì)總分的 內(nèi)容并全部存入文件file中,在接下來的函數(shù)中開始都需要讀取文
4、件中的信息,信息的輸出(output)輸出輸入函數(shù)中統(tǒng)計(jì)后的各項(xiàng)信息,在排序輸出(sortput)中使用冒泡排序法進(jìn)行不同關(guān)鍵字的排序,查詢函數(shù)(search)采用順序表的查找來完成。2.模塊劃分:1、Void menu(int n,int m,int w) 功能是提供界面窗口。2、Void savetofile() 功能是保存輸入的運(yùn)動(dòng)會(huì)信息到file文件開始輸入項(xiàng)目編號temp是數(shù)字NY0top18NY輸出“”統(tǒng)計(jì)結(jié)果Top存在YNNext schoolNTop是5NY取5名取3名編號snum1snum15NY學(xué)校、項(xiàng)目號、名次Y繼續(xù)添加YN結(jié)束3、Void readfromfile()
5、功能是從file文件中讀取運(yùn)動(dòng)會(huì)信息4、Void input(int n,int m,int w) 功能是輸入信息并統(tǒng)計(jì)5、Void output(int n,int m,int w) 功能是按學(xué)校、項(xiàng)目輸出統(tǒng)計(jì)信息開始輸入1或者0 輸入項(xiàng)目號輸入學(xué)校編號輸出學(xué)校信息輸出該項(xiàng)目信息結(jié)束6、Void sortput(int n,int m,int w) 功能是按四種方法排序并輸出結(jié)果開始輸入c按學(xué)校編號排序按學(xué)??偡峙判虬茨猩?xiàng)目排序按女生項(xiàng)目排序結(jié)束7、Void search(int n,int m,int w) 功能是按兩種方法查詢并輸出結(jié)果8、void main() 主函數(shù)2. 數(shù)據(jù)結(jié)構(gòu):
6、(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)目的編號、要取的名次、各個(gè)名次名稱及各名次對應(yīng)的分?jǐn)?shù)。用于對以后項(xiàng)目情況的統(tǒng)計(jì)已及查詢。其中inum,top,range由輸入信息輸入,而mark有range和top決定。typedef struct int inum; /*項(xiàng)目編號*/ int top; /*取名次的數(shù)目*/ int range5; /*名次*/ int mark5; /*分?jǐn)?shù)*/itemnode; /*存放項(xiàng)目信息*/(2)學(xué)校數(shù)據(jù)表:本數(shù)據(jù)表根據(jù)要求儲(chǔ)存了各個(gè)參賽學(xué)校的總體情況,包括學(xué)校的編號、學(xué)??偡帧⒛凶訄F(tuán)體總分、女子團(tuán)體總分,
7、并且包括項(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é)校編號*/ int score; /*學(xué)??偡?/ int mscore; /*男團(tuán)體總分*/ int wscore; /*女團(tuán)體總分*/ itemnode tM+W; /*項(xiàng)目數(shù)組*/snode; /*存放學(xué)校信息*/snode aN; /* 定義一個(gè)學(xué)校數(shù)組*/ 這二個(gè)數(shù)據(jù)表相關(guān)聯(lián)接,an中包括tn,形成一個(gè)整體。3. 測試:測試取學(xué)校個(gè)數(shù)為3,男子項(xiàng)目個(gè)數(shù)2.女子項(xiàng)目個(gè)數(shù)1。項(xiàng)目學(xué)校編號1(
8、男)編號2(男)編號3(女)取前3取前5取前5編號1名次31、43、4編號2名次22、51、5編號3名次132 將上述所有學(xué)校的信息輸入,然后計(jì)算出所有學(xué)校的總分,男子項(xiàng)目的總分,女子項(xiàng)目的總分,然后再將自己計(jì)算出的數(shù)值與所做成的系統(tǒng)比較,觀看是否存在誤差和錯(cuò)誤。 1. 主菜單界面2.信息輸入測試:預(yù)計(jì)輸入三個(gè)學(xué)校的信息。3. 統(tǒng)計(jì)輸出測試:預(yù)計(jì)輸出三個(gè)學(xué)校信息。4. 排序輸出測試。實(shí)現(xiàn)學(xué)??偡?,男團(tuán)總分,女團(tuán)總分均可排序輸出。5. 信息查詢測試:預(yù)計(jì)可以用學(xué)校編號和項(xiàng)目編號查詢。6. 結(jié)束程序測試:預(yù)計(jì)直接退出系統(tǒng)。 經(jīng)過運(yùn)算與測試結(jié)果比較,發(fā)現(xiàn)預(yù)期結(jié)果與運(yùn)行結(jié)果一致。所以運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
9、正確無誤。5. 源程序:#include#include#include #define N 20 /*學(xué)校最大數(shù)目*/ #define M 20 /*男子項(xiàng)目最大數(shù)目*/ #define W 20 /*女子項(xiàng)目最大數(shù)目*/typedef struct int inum; /*項(xiàng)目編號*/ int top; /*取名次的數(shù)目*/ int range5; /*名次*/ int mark5; /*分?jǐn)?shù)*/itemnode; /*存放項(xiàng)目信息*/typedef struct int snum; /*學(xué)校編號*/ int score; /*學(xué)??偡?/ int mscore; /*男團(tuán)體總分*/ in
10、t wscore; /*女團(tuán)體總分*/ itemnode tM+W; /*項(xiàng)目數(shù)組*/snode; /*存放學(xué)校信息*/snode aN; /* 定義一個(gè)學(xué)校數(shù)組*/void menu(int n,int m,int w) /*菜單函數(shù)*/ int c; void input(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); p
11、rintf(t* 1.信息輸入 *tn); printf(t* 2.統(tǒng)計(jì)輸出 *tn); printf(t* 3.排序輸出 *tn); printf(t* 4.信息查詢 *tn); printf(t* 0.退出系統(tǒng) *tnn);printf(t* 老師你最好看 *tn); printf(t=nn);printf(請選擇要實(shí)現(xiàn)步驟的編號(0-4):); 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: searc
12、h(n,m,w);break; case 0: printf(謝謝使用,再見!n); exit(0); default: printf(輸入錯(cuò)誤,請重試!n); menu(n,m,w); void savetofile() /*信息存入文件file*/FILE *fp; int i; if(fp=fopen(file.txt,wb)=NULL) printf(cannot open the filen);return; for(i=0;iN;i+) if(ai.snum!=0)if(fwrite(&ai,sizeof(snode),1,fp)!=1)printf(file write erro
13、rn);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;iN;i+)fread(&ai,sizeof(snode),1,fp); fclose(fp);void input(int n,int m,int w) /輸入函數(shù) int i,j,s,k,q=0; for(i=0;in;i+) printf(學(xué)校編號:); scanf(%d,&ai.snu
14、m); /*輸入學(xué)校信息*/ for(j=0;jm+w;j+) printf(項(xiàng)目編號:); scanf(%d,&ai.tj.inum);printf(項(xiàng)目取前3名或前5名(3或者5):); scanf(%d,&ai.tj.top);if(ai.tj.top=3)printf(獲得名次個(gè)數(shù)(1-3):);elseprintf(獲得名次個(gè)數(shù)(1-5):); scanf(%d,&k); /*輸入項(xiàng)目信息*/ for(s=0;sk;s+) if(ai.tj.top=3)printf(所獲名次(1-3):);elseprintf(所獲名次(1-5):); scanf(%d,&ai.tj.ranges)
15、; /*輸入所獲名次信息*/ 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.marks=3; break; case 3: ai.tj.marks=2; break;else if(ai.t
16、j.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);ai.score=ai.score+ai.tj.marks; /*記學(xué)??偡?/if(j=m-1)ai.msc
17、ore=ai.mscore+ai.tj.marks; /*記男子團(tuán)體總分*/elseai.wscore=ai.wscore+ai.tj.marks; /*記女子團(tuán)體總分*/printf(輸入完畢!返回? 1是 0否n); /*返回菜單*/scanf(%d,&q);printf(n);if(q!=1)printf(不能再添加信息!);printf(n);savetofile(); /*將信息存入文件file*/getchar();system(cls);menu(n,m,w);void output(int n,int m,int w) /輸出函數(shù) readfromfile();int i,j,
18、s,q=0; for(i=0;in;i+) /*顯示結(jié)果*/printf(學(xué)校編號:%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)目編號:%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);printf(統(tǒng)計(jì)成功!返回? 1是 0否); /*返
19、回菜單*/scanf(%d,&q);printf(n);if(q!=1) printf(統(tǒng)計(jì)已經(jīng)結(jié)束!);printf(n);system(cls); menu(n,m,w);void sortput(int n,int m,int w) /順序輸出readfromfile();int c,i,j,k,q=0;int tempN; printf(t*排序輸出系統(tǒng)*nn); printf(t*1.按學(xué)校編號輸出*tn); printf(t*2.按學(xué)??偡州敵?tn); printf(t*3.按男團(tuán)總分輸出*tn); printf(t*4.按女團(tuán)總分輸出*tn); printf(t=nn);do
20、printf(請選擇要實(shí)現(xiàn)功能的編號(1-4):); 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é)校編號:%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按學(xué)校編號輸出*/ break; case 2: fo
21、r(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é)校編號:%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+) for(j=i+1
22、;jn;j+)if(atempi.mscoreaj.mscore) k=tempi;tempi=tempj;tempj=k; /* 用冒泡排序方法排序*/for(i=0;in;i+)printf(學(xué)校編號:%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.wscore) k=tempi;
23、tempi=tempj;tempj=k; /* 用冒泡排序方法排序*/for(i=0;in;i+)printf(學(xué)校編號:%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%dn,atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按女團(tuán)總分輸出*/break; default: printf(輸入錯(cuò)誤,請重試!n);printf(請選擇 1 返回主菜單 0繼續(xù)); /*返回菜單或繼續(xù)排序*/scanf(%d,&q); system(cls);printf(n);while(q=0);printf(n);if(q!=0)menu(n,
24、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(t* 1.按學(xué)校編號查詢 *tn); printf(t* 2.按項(xiàng)目編號查詢 *tn); printf(t=nn);do k=-1;d=-1;l=-1;printf(請選擇要實(shí)現(xiàn)功能的編號(1-2):); scanf(%d,&c);switch(c)case 1: printf(要查詢的學(xué)校編號:); /*查找學(xué)校編號下標(biāo)*/scanf(%d,&c);for(i=0;in;i+)if(ai.
25、snum=c)k=i;if(k=-1)printf(錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!n);elseprintf(要查詢的項(xiàng)目編號:); /*查找項(xiàng)目編號下標(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é)校的成績?nèi)缦?n, ak.td.top);for(i=0;i5;i+)if(ak.td.rangei!=0)printf(名次:%dn,ak.td.rangei); break; case 2:printf(要查
26、詢的項(xiàng)目編號:); /*查找項(xiàng)目編號下標(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é)校編號:%d,名次:%dn,ai.snum,ai.tl.rangej); break;default: printf(輸入錯(cuò)誤,請重試!n);printf(請選擇:1.返回主菜單 0.繼續(xù)); /*返回菜單或繼續(xù)查詢*/scanf(%d,&q);printf(n);while(q=0);printf(n); if(q!=0)menu(n,m,w);int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省樂山市第七中學(xué)重點(diǎn)名校2024-2025學(xué)年初三寒假模擬(一)數(shù)學(xué)試題試卷含解析
- 宿舍洗澡測試題及答案
- 皮膚病性病試題及答案
- 湖北書法試題真題及答案
- 深信服歷年筆試題及答案
- 銅川市耀州區(qū)2024-2025學(xué)年數(shù)學(xué)四下期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 四川省內(nèi)江市隆昌三中學(xué)2025年初三3月第一次質(zhì)量檢查化學(xué)試題含解析
- 文學(xué)概論大二試題及答案
- 江蘇省淮安市等四市2025年高三元月聯(lián)考?xì)v史試題含解析
- 內(nèi)蒙古科技職業(yè)學(xué)院《水處理設(shè)備基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北省2025年普通高中學(xué)業(yè)水平選擇性考試·調(diào)研卷I語文+答案
- 泰語高級測試題及答案
- 聚焦財(cái)稅場景的AIBM生態(tài)服務(wù)行業(yè)白皮書
- 2024年綿陽市商業(yè)銀行招聘考試真題
- GB/T 35267.4-2025清洗消毒器第4部分:內(nèi)鏡清洗消毒器
- 規(guī)范佩戴紅領(lǐng)巾
- TCAWAORG 032-2024 家庭醫(yī)生遠(yuǎn)程與互聯(lián)網(wǎng)健康服務(wù)規(guī)范
- 2025年春季學(xué)期 形勢與政策講稿第五講-從教育大國邁向教育強(qiáng)國
- 腦小血管病共識-課件
- 大華單元門口機(jī)使用說明書
- 新疆烏魯木齊市米東區(qū)2024-2025學(xué)年九年級上學(xué)期期中數(shù)學(xué)試卷(含答案)
評論
0/150
提交評論