




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、洛 陽(yáng) 理 工 學(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ù) 班 級(jí) 學(xué) 號(hào) 姓 名 課 程 設(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é)校編號(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)可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);2)能統(tǒng)計(jì)各學(xué)校總分,3)可以按學(xué)校編號(hào)或名稱、學(xué)???/p>
2、分、男女團(tuán)體總分排序輸出;4)可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?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ù)文件中。測(cè)試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。 指導(dǎo)教師: 張新顏 2016 年 12 月 日課 程 設(shè) 計(jì) 評(píng) 語(yǔ) 成績(jī): 指導(dǎo)教師:_ 年 月 日1. 算法思想:本課設(shè)要求輸入信息,統(tǒng)計(jì)分?jǐn)?shù),執(zhí)行排序與查找功能,在要求中沒
3、有在建立數(shù)據(jù)之后進(jìn)行插入和刪除操作,而在排序和查找過(guò)程中有許多的隨機(jī)讀取數(shù)據(jù)操作,因此使用順序結(jié)構(gòu)而不用鏈表。由于各個(gè)要求屬性具有一定的聯(lián)系,在定義數(shù)據(jù)時(shí)使用結(jié)構(gòu)體和結(jié)構(gòu)體數(shù)組來(lái)存儲(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中,在接下來(lái)的函數(shù)中開始都需要讀取文件中的信息,信息的輸出(output)輸出輸入函數(shù)中統(tǒng)計(jì)后的各項(xiàng)信息,在排序
4、輸出(sortput)中使用冒泡排序法進(jìn)行不同關(guān)鍵字的排序,查詢函數(shù)(search)采用順序表的查找來(lái)完成。2.模塊劃分:1、Void menu(int n,int m,int w) 功能是提供界面窗口。2、Void savetofile() 功能是保存輸入的運(yùn)動(dòng)會(huì)信息到file文件開始輸入項(xiàng)目編號(hào)temp是數(shù)字NY0top18NY輸出“”統(tǒng)計(jì)結(jié)果Top存在YNNext schoolNTop是5NY取5名取3名編號(hào)snum1snum15NY學(xué)校、項(xiàng)目號(hào)、名次Y繼續(xù)添加YN結(jié)束3、Void readfromfile() 功能是從file文件中讀取運(yùn)動(dòng)會(huì)信息4、Void input(int n,i
5、nt 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)目號(hào)輸入學(xué)校編號(hào)輸出學(xué)校信息輸出該項(xiàng)目信息結(jié)束6、Void sortput(int n,int m,int w) 功能是按四種方法排序并輸出結(jié)果開始輸入c按學(xué)校編號(hào)排序按學(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):(1)項(xiàng)目數(shù)據(jù)表:運(yùn)動(dòng)會(huì)系統(tǒng)先制定本次運(yùn)動(dòng)會(huì)所需的參賽項(xiàng)目。本數(shù)據(jù)表根據(jù)要求
6、設(shè)計(jì)存儲(chǔ)每個(gè)項(xiàng)目的編號(hào)、要取的名次、各個(gè)名次名稱及各名次對(duì)應(yīng)的分?jǐn)?shù)。用于對(duì)以后項(xiàng)目情況的統(tǒng)計(jì)已及查詢。其中inum,top,range由輸入信息輸入,而mark有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ù)由輸入信息輸入,而其他
7、三項(xiàng)內(nèi)容score,mscore,wscore將由系統(tǒng)進(jìn)行自動(dòng)統(tǒng)計(jì)。typedef struct int snum; /*學(xué)校編號(hào)*/ 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. 測(cè)試:測(cè)試取學(xué)校個(gè)數(shù)為3,男子項(xiàng)目個(gè)數(shù)2.女子項(xiàng)目個(gè)數(shù)1。項(xiàng)目學(xué)校編號(hào)1(男)編號(hào)2(男)編號(hào)3(女)取前3取前5取前5編號(hào)1名次31、43、4編號(hào)2
8、名次22、51、5編號(hào)3名次132 將上述所有學(xué)校的信息輸入,然后計(jì)算出所有學(xué)校的總分,男子項(xiàng)目的總分,女子項(xiàng)目的總分,然后再將自己計(jì)算出的數(shù)值與所做成的系統(tǒng)比較,觀看是否存在誤差和錯(cuò)誤。 1. 主菜單界面2.信息輸入測(cè)試:預(yù)計(jì)輸入三個(gè)學(xué)校的信息。3. 統(tǒng)計(jì)輸出測(cè)試:預(yù)計(jì)輸出三個(gè)學(xué)校信息。4. 排序輸出測(cè)試。實(shí)現(xiàn)學(xué)校總分,男團(tuán)總分,女團(tuán)總分均可排序輸出。5. 信息查詢測(cè)試:預(yù)計(jì)可以用學(xué)校編號(hào)和項(xiàng)目編號(hào)查詢。6. 結(jié)束程序測(cè)試:預(yù)計(jì)直接退出系統(tǒng)。 經(jīng)過(guò)運(yùn)算與測(cè)試結(jié)果比較,發(fā)現(xiàn)預(yù)期結(jié)果與運(yùn)行結(jié)果一致。所以運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)正確無(wú)誤。5. 源程序:#include#include#include #
9、define N 20 /*學(xué)校最大數(shù)目*/ #define M 20 /*男子項(xiàng)目最大數(shù)目*/ #define W 20 /*女子項(xiàng)目最大數(shù)目*/typedef struct int inum; /*項(xiàng)目編號(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 tM+W; /*項(xiàng)
10、目數(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); printf(t* 1.信息輸入 *tn); printf(t* 2.統(tǒng)計(jì)輸出
11、 *tn); printf(t* 3.排序輸出 *tn); printf(t* 4.信息查詢 *tn); printf(t* 0.退出系統(tǒng) *tnn);printf(t* 老師你最好看 *tn); printf(t=nn);printf(請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào)(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: search(n,m,w);break; case 0: printf(謝謝使用,再見
12、!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,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 errorn);return; fclose(fp);void readfromfi
13、le() /*信息從文件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é)校編號(hào):); scanf(%d,&ai.snum); /*輸入學(xué)校信息*/ for(j=0;jm+w;j+) printf
14、(項(xiàng)目編號(hào):); 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); /*輸入所獲名次信息*/ printf(n); for(i=0;in;i
15、+) 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.tj.top=5)switch(ai.tj.ranges) case 0: a
16、i.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.mscore=ai.mscore+ai.tj.marks; /*記男子團(tuán)體總分*/
17、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,s,q=0; for(i=0;in;i+) /*顯示結(jié)果*/printf(學(xué)
18、校編號(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);printf(統(tǒng)計(jì)成功!返回? 1是 0否); /*返回菜單*/scanf(%d,&q);printf(n);if(q!=1) p
19、rintf(統(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é)校編號(hào)輸出*tn); printf(t*2.按學(xué)??偡州敵?tn); printf(t*3.按男團(tuán)總分輸出*tn); printf(t*4.按女團(tuán)總分輸出*tn); printf(t=nn);do printf(請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(1-4):); scanf(%d,&c
20、);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: for(i=0;in;i+)tempi=i; for(i=0;in;i+) fo
21、r(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+) for(j=i+1;jn;j+)if(atempi.mscoreaj.mscore) k=te
22、mpi;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.wscore) k=tempi;tempi=tempj;tempj=k; /* 用冒泡排序方法排序*/for
23、(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; default: printf(輸入錯(cuò)誤,請(qǐng)重試!n);printf(請(qǐng)選擇 1 返回主菜單 0繼續(xù)); /*返回菜單或繼續(xù)排序*/scanf(%d,&q); system(cls);printf(n);while(q=0);printf(n);if(q!=0)menu(n,m,w);void search(int n,int m,int w) /查
24、詢函數(shù)readfromfile();int c,i,j,k,d,l,q=0; printf(t*查詢系統(tǒng)*nn); printf(t* 1.按學(xué)校編號(hào)查詢 *tn); printf(t* 2.按項(xiàng)目編號(hào)查詢 *tn); printf(t=nn);do k=-1;d=-1;l=-1;printf(請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(1-2):); scanf(%d,&c);switch(c)case 1: printf(要查詢的學(xué)校編號(hào):); /*查找學(xué)校編號(hào)下標(biāo)*/scanf(%d,&c);for(i=0;in;i+)if(ai.snum=c)k=i;if(k=-1)printf(錯(cuò)誤:這個(gè)學(xué)校沒有參加此
25、次運(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; case 2:printf(要查詢的項(xiàng)目編號(hào):); /*查找項(xiàng)目編號(hào)下標(biāo)*/scanf(%d,&c);for
26、(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);printf(n);while(q=0);printf(n); if(q!=0)menu(n,m,w);int ma
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 曹瓊與配偶離婚財(cái)產(chǎn)協(xié)議書子女撫養(yǎng)及監(jiān)護(hù)權(quán)保障
- 社保工傷賠償協(xié)議書范本
- 公寓小區(qū)車位產(chǎn)權(quán)變更及租賃管理服務(wù)合同
- 北京互聯(lián)網(wǎng)數(shù)據(jù)中心IDC土地經(jīng)營(yíng)權(quán)抵押貸款合同
- 離婚協(xié)議中車輛權(quán)益界定模板
- 文化創(chuàng)意產(chǎn)業(yè)車間租賃與版權(quán)保護(hù)協(xié)議
- 社區(qū)落戶協(xié)議書范本
- 拆遷工程安全管理承包合同
- 城市綜合體大廳美食攤位租賃及經(jīng)營(yíng)管理合同
- 旅游景區(qū)游客接待中心無(wú)償使用租賃合同
- 托育管理制度
- 2025年河南省洛陽(yáng)市澗西區(qū)九年級(jí)中考招生一模道法試題卷(含答案)
- 2025年高考語(yǔ)文備考之小說(shuō)精讀:凌叔華《搬家》(附習(xí)題+答案)
- 工余安全知識(shí)培訓(xùn)課件
- 地生中考試卷真題及答案
- 浙江國(guó)企招聘2024溫州市交通發(fā)展集團(tuán)有限公司招聘47人筆試參考題庫(kù)附帶答案詳解
- 華能國(guó)際電力江蘇能源開發(fā)有限公司南通電廠100MW-200MWh共享儲(chǔ)能項(xiàng)目(220kV升壓站工程)報(bào)告表
- 消防維保合同樣本
- 高中主題班會(huì) 預(yù)防青少年藥物濫用課件-高中主題班會(huì)
- 股骨粗隆間骨折護(hù)理疑難病例討論
- 電動(dòng)車充電樁設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論