




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機學(xué)院信管專業(yè)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題 目: 運動會分?jǐn)?shù)統(tǒng)計 班 級: 姓 名: 學(xué) 號: 同組人姓名: 起 迄 日 期: 課程設(shè)計地點: 指導(dǎo)教師: 評閱意見:成績評定:評閱人: 日期:完成日期:2013年12月目錄1、需求分析022、概要設(shè)計033、詳細(xì)設(shè)計044、調(diào)試分析和測試結(jié)果055、總結(jié)136、參考文獻(xiàn)147、致謝148、附錄141、需求分析(1)任務(wù):參加運動會有n個學(xué)校,學(xué)校編號為1n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1m,女子m+1m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或
2、前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)(2)功能要求:a).可以輸入各個項目的前三名或前五名的成績;b).能統(tǒng)計各學(xué)??偡郑琧).可以按學(xué)校編號、學(xué)校總分、男女團體總分排序輸出;d).可以按學(xué)校編號查詢學(xué)校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。(3)規(guī)定:輸入數(shù)據(jù)形式和范圍:20以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運動項目的名稱)(4)輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形(5)界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。(6)存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求運動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文
3、件中。(7)測試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進行程序測試,以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請在上交的資料中寫明;2、概要設(shè)計(1)文字分析本課設(shè)要求輸入信息,統(tǒng)計分?jǐn)?shù),執(zhí)行排序與查找功能,在要求中沒有在建立數(shù)據(jù)之后進行插入和刪除操作,而在排序和查找過程中有許多的隨機讀取數(shù)據(jù)操作,因此使用順序結(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è)計文件的存儲(savetofil
4、e)與讀取函數(shù)(readfromfile),信息輸入函數(shù)(input)在輸入基本信息后由系統(tǒng)統(tǒng)計總分的內(nèi)容并全部存入文件file中,在接下來的函數(shù)中開始都需要讀取文件中的信息,信息的輸出(output)輸出輸入函數(shù)中統(tǒng)計后的各項信息,在排序輸出(sortput)中使用冒泡排序法進行不同關(guān)鍵字的排序,查詢函數(shù)(search)采用順序表的查找來完成。開始進入主菜單菜單選項(04)1.信息輸入2.統(tǒng)計輸出3.排序輸出4.信息查詢5.退出結(jié)束3、詳細(xì)設(shè)計(1)項目數(shù)據(jù)表:運動會系統(tǒng)先制定本次運動會所需的參賽項目。本數(shù)據(jù)表根據(jù)要求設(shè)計存儲每個項目的編號、要取的名次、各個名次名稱及各名次對應(yīng)的分?jǐn)?shù)。用于對
5、以后項目情況的統(tǒng)計已及查詢。其中inum,top,range由輸入信息輸入,而mark有range和top決定。typedef struct int inum; /*項目編號*/ int top; /*取名次的數(shù)目*/ int range5; /*名次*/ int mark5; /*分?jǐn)?shù)*/itemnode; /*存放項目信息*/(2)學(xué)校數(shù)據(jù)表:本數(shù)據(jù)表根據(jù)要求儲存了各個參賽學(xué)校的總體情況,包括學(xué)校的編號、學(xué)??偡?、男子團體總分、女子團體總分,并且包括項目數(shù)據(jù)數(shù)組tn。其中snum和tn中部分?jǐn)?shù)據(jù)由輸入信息輸入,而其他三項內(nèi)容score,mscore,wscore將由系統(tǒng)進行自動統(tǒng)計。typ
6、edef struct int snum; /*學(xué)校編號*/ int score; /*學(xué)校總分*/ int mscore; /*男團體總分*/ int wscore; /*女團體總分*/ itemnode tM+W; /*項目數(shù)組*/snode; /*存放學(xué)校信息*/snode aN; /* 定義一個學(xué)校數(shù)組*/ 這二個數(shù)據(jù)表相關(guān)聯(lián)接,an中包括tn,形成一個整體。(3)模塊劃分1、Void menu(int n,int m,int w) 功能是提供界面窗口2、Void savetofile() 功能是保存輸入的運動會信息到file文件3、Void readfromfile() 功能是從fi
7、le文件中讀取運動會信息4、Void input(int n,int m,int w) 功能是輸入信息并統(tǒng)計5、Void output(int n,int m,int w) 功能是按學(xué)校、項目輸出統(tǒng)計信息6、Void sortput(int n,int m,int w) 功能是按四種方法排序并輸出結(jié)果7、Void search(int n,int m,int w) 功能是按兩種方法查詢并輸出結(jié)果4、調(diào)試分析與測試結(jié)果(1)測試數(shù)據(jù)測試取學(xué)校個數(shù)為3,男子項目個數(shù)2.女子項目個數(shù)1項目學(xué)校編號1(男)編號2(男)編號3(女)取前3取前5取前5編號1名次31、43、4編號2名次22、51、5編號3
8、名次132(2)測試結(jié)果1、主菜單界面2、信息輸入運行測試a).信息輸入b).輸入完成3、統(tǒng)計輸出運行測試a).統(tǒng)計輸出b).統(tǒng)計輸出完畢4、排序輸出運行測試a).選擇排序輸出形式b).按學(xué)校編號輸出c).按學(xué)??偡州敵鰀).按男團總分輸出d).按女團總分輸出5、信息查詢運行測試a).選擇信息查詢方式b).按學(xué)校編號查詢c).按項目編號查詢6、退出系統(tǒng)運行測試5、總結(jié)通過為期四天的課程設(shè)計,我對數(shù)據(jù)結(jié)構(gòu)這門課程有了更深一步的了解,使我對數(shù)據(jù)結(jié)構(gòu)這門課程掌握以及運用更加靈活。雖然是應(yīng)用C語言來編寫程序,但卻深刻的體現(xiàn)了數(shù)據(jù)結(jié)構(gòu)對編程的重要性。這次課程設(shè)計運用C語言與數(shù)據(jù)結(jié)構(gòu)知識,編寫一個運動會分
9、數(shù)統(tǒng)計系統(tǒng)。其中遇到了不少問題,因為對數(shù)據(jù)結(jié)構(gòu)這一門課程掌握不夠熟練以及平時自己在編寫一些普通常見的程序時只是運用單一的知識而課程設(shè)計卻需要將各個方面的內(nèi)容聯(lián)系結(jié)合,例如文件與程序的結(jié)合,輸入、輸出、統(tǒng)計、查找的綜合應(yīng)用等,因此真正的程序設(shè)計必須先有一個正確的算法思想,運用正確的數(shù)據(jù)結(jié)構(gòu)和編程語言,靈活的運用并聯(lián)系幾個方面的內(nèi)容。通過課程設(shè)計也使我認(rèn)識到,要學(xué)好編程,僅學(xué)習(xí)書本上的知識是不夠的,還要有較強的實踐能力。因為我們學(xué)習(xí)知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西6、參考文獻(xiàn)1 嚴(yán)蔚敏,吳偉民;數(shù)據(jù)結(jié)構(gòu)(C語言版),清華大學(xué)出版社,2007年2 王裕明;
10、數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計,清華大學(xué)出版社,2010年3 譚浩強;C語言程序設(shè)計(第三版),北京航空航天大學(xué)出版社,2005年4 李建學(xué);數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編(用C/C+描述),清華大學(xué)出版社,2007年5 催俊凱;計算機軟件基礎(chǔ),機械工業(yè)出版社,2007年6 7、致謝本次試驗?zāi)軌蛉缙谕瓿?,主要是要感謝席老師課堂上的講解以及指導(dǎo),才能使我對數(shù)據(jù)結(jié)構(gòu)這門課程有較為深入的理解與掌握,才能在本次課程設(shè)計中得以運用。再加上課程設(shè)計過程中的程序設(shè)計建議,才使得這次課程設(shè)計中所遇到的問題能夠較快的解決其次,我還要感謝和我一組的趙詠荔同學(xué),通過兩個人的共同協(xié)作,才使得本次課程設(shè)計能夠較好的完成。同時,還要感謝平
11、時課堂上以及課堂外給我?guī)椭耐瑢W(xué)們,能夠熱心的為我解答我所存在的疑問,并為我的程序提出一些建議。8、附錄源代碼:#include<stdio.h>#include<math.h>#include <process.h>#define N 20 /*學(xué)校最大數(shù)目*/ #define M 20 /*男子項目最大數(shù)目*/ #define W 20 /*女子項目最大數(shù)目*/typedef struct int inum; /*項目編號*/ int top; /*取名次的數(shù)目*/ int range5; /*名次*/ int mark5; /*分?jǐn)?shù)*/itemnode
12、; /*存放項目信息*/typedef struct int snum; /*學(xué)校編號*/ int score; /*學(xué)??偡?/ int mscore; /*男團體總分*/ int wscore; /*女團體總分*/ itemnode tM+W; /*項目數(shù)組*/snode; /*存放學(xué)校信息*/snode aN; /* 定義一個學(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,in
13、t m,int w);void search(int n,int m,int w);printf("ttt歡迎使用ttttnn"); printf("t*運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)*nn"); printf("tt*1.信息輸入*n"); printf("tt*2.統(tǒng)計輸出*n"); printf("tt*3.排序輸出*n"); printf("tt*4.信息查詢*n"); printf("tt*0.退出系統(tǒng)*nn"); printf("=nn"
14、;);printf("請選擇要實現(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: search(n,m,w);break; case 0:printf("謝謝使用,再見!n"); exit(0); default: printf("輸入錯誤,請重試!n");menu(n,m,w); voi
15、d savetofile() /*信息存入文件file*/FILE *fp; int i; if(fp=fopen("file.txt","w")=NULL) printf("cannot open the filen");return; for(i=0;i<N;i+) if(ai.snum!='0')if(fwrite(&ai,sizeof(snode),1,fp)!=1)printf("file write errorn");return; fclose(fp);void read
16、fromfile() /*信息從文件file中取出*/ int i;FILE *fp; if(fp=fopen("file.txt","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 n,int m,int w) /*1.信息輸入*/int i,j,s,k,q=0; for(i=0;i<n;i+) printf(&quo
17、t;學(xué)校編號:"); scanf("%d",&ai.snum); /*輸入學(xué)校信息*/ for(j=0;j<m+w;j+) printf("項目編號:"); scanf("%d",&ai.tj.inum);printf("項目取前3名或前5名(3或者5):"); scanf("%d",&ai.tj.top);if(ai.tj.top=3)printf("獲得名次個數(shù)(1-3):");elseprintf("獲得名次個數(shù)(1-5
18、):"); scanf("%d",&k); /*輸入項目信息*/ for(s=0;s<k;s+) if(ai.tj.top=3)printf("所獲名次(1-3):");elseprintf("所獲名次(1-5):"); scanf("%d",&ai.tj.ranges); /*輸入所獲名次信息*/ printf("n"); for(i=0;i<n;i+) ai.score=0; ai.mscore=0; ai.wscore=0; /*初始化分?jǐn)?shù)*/for(
19、i=0;i<n;i+)for(j=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
20、; 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; /*記男子團體總分*/elseai.wscore=
21、ai.wscore+ai.tj.marks; /*記女子團體總分*/printf("輸入完畢!返回? 1是 2否n"); /*返回菜單*/scanf("%d",&q);printf("n");if(q!=1)printf("不能再添加信息!");printf("n");savetofile(); /*將信息存入文件file*/menu(n,m,w);void output(int n,int m,int w) /*2.統(tǒng)計輸出*/ readfromfile();int i,j,s,q=0
22、; for(i=0;i<n;i+) /*顯示結(jié)果*/printf("學(xué)校編號:%d 學(xué)??偡?%d 男團總分:%d 女團總分:%dn",ai.snum,ai.score,ai.mscore,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);prin
23、tf("n");printf("n");printf("統(tǒng)計完畢!返回? 1是 2否"); /*返回菜單*/scanf("%d",&q);printf("n");if(q!=1)printf("統(tǒng)計已經(jīng)結(jié)束!");printf("n"); menu(n,m,w);void sortput(int n,int m,int w) /*3.排序輸出*/ readfromfile();int c,i,j,k,q=0;int tempN; printf(&q
24、uot;t*排序輸出系統(tǒng)*nn"); printf("tt*1.按學(xué)校編號輸出*n"); printf("tt*2.按學(xué)??偡州敵?n"); printf("tt*3.按男團總分輸出*n"); printf("tt*4.按女團總分輸出*n"); printf("=nn");do printf("請選擇要實現(xiàn)功能的編號(1-4):"); scanf("%d",&c);switch(c)case 1: for(i=0;i<n;i+)te
25、mpi=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é)??偡?%d 男團總分:%d 女團總分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按學(xué)校編號輸出*/ break; case 2: for(i=0;i<n;i+)tempi=i; f
26、or(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 男團總分:%d 女團總分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按學(xué)??偡州敵?/break;case 3: for(i=0;i<n;i+)tempi=i;for(i=0;i<n
27、;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 男團總分:%d 女團總分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按男團總分輸出*/break; case 4: for(i=0;i<n;i+)tempi=i;for(i=0;i<n;i+) for(j
28、=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 男團總分:%d 女團總分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按女團總分輸出*/break; default: printf("輸入錯誤,請重試!n");printf("請選擇 1 返回主菜單 0繼續(xù)
29、"); /*返回菜單或繼續(xù)排序*/scanf("%d",&q);printf("n");while(q=0);printf("n");if(q!=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é)校編號查詢*n"); printf("tt*2.按項目編號查詢*n&quo
30、t;); printf("=nn");do k=-1;d=-1;l=-1;printf("請選擇要實現(xiàn)功能的編號(1-2):"); scanf("%d",&c);switch(c)case 1: printf("要查詢的學(xué)校編號:"); /*查找學(xué)校編號下標(biāo)*/scanf("%d",&c);for(i=0;i<n;i+)if(ai.snum=c)k=i;if(k=-1)printf("錯誤:這個學(xué)校沒有參加此次運動會!n");elseprintf("要查詢的項目編號:"); /*查找項目編號下標(biāo)*/ scanf("%d",&c);for(j=0;j<m+w;j+)if(ak.tj.inum=c)d=j;if(d=-1)printf("此次運動會沒有這個項目n");else /*顯示結(jié)果*/ printf("這個項
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拉丁美洲智能家居市場拓展代理權(quán)補充合同
- 英國留學(xué)生接送專車租賃合同范本
- 防火材料采購合同范本
- 投資回報合同
- 電氣安裝勞務(wù)合同樣本
- 短期房產(chǎn)銷售員合同
- 高峰季節(jié)臨時工合同
- 建筑工程前期介入服務(wù)合同協(xié)議書范文
- 2025年信息系統(tǒng)項目管理師考試高級項目合同管理模擬試題詳解
- t飯店餐廳加盟合同7篇
- 2017年高考數(shù)學(xué)試卷(文)(北京)(空白卷)
- 酒店用電安全知識培訓(xùn)
- 數(shù)字化管理師復(fù)習(xí)測試卷附答案
- 2025年軟件資格考試電子商務(wù)設(shè)計師(中級)(基礎(chǔ)知識、應(yīng)用技術(shù))合卷試卷與參考答案
- 【MOOC】大學(xué)生健康教育與自衛(wèi)防身-山東大學(xué) 中國大學(xué)慕課MOOC答案
- 新能源高效節(jié)能家電開發(fā)
- 地鐵與輕軌復(fù)習(xí)提綱
- 學(xué)校食堂用餐信息公開制度
- 《人格權(quán)法》課程教學(xué)大綱
- 【語文課件】徐霞客徐霞客和《徐霞客游記》課件
- 奇異的仿生學(xué)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論