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

下載本文檔

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

文檔簡介

淮海工學院計算機工程學院課程設計報告設計名稱:數(shù)據(jù)結(jié)構(gòu)課程設計選題名稱:運動會分數(shù)統(tǒng)計姓名:學號:專業(yè)班級:系院):設計時間:設計地點:成績:指導教師評語:成績:簽名:年月日

1.課程設計目的1、訓練學生靈活應用所學數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,編寫程序求解指定問題。2.初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;3.提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;4.訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),鞏固、深化學生的理論知識,提高編程水平,并在此過程中培養(yǎng)他們嚴謹?shù)目茖W態(tài)度和良好的工作作風。2.課程設計任務及要求:課程設計題目運動會分數(shù)統(tǒng)計任務參加運動會有n個學校,學校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(m<=20,n<=20)要求:(1)可以輸入各個項目的前三名或前五名的成績;(2)能統(tǒng)計各學??偡?;(3)可以按學校編號、學??偡?、男女團體總分排序輸出;(4)可以按學校編號查詢學校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W校;(5)各學校分數(shù)為整型,學校名稱、運動項目的名稱為字符型;(6)界面友好,有中文提示。

3.課程設計說明書一需求分析生命在于運動,為了讓我們的生活更加精彩,國家、社會、學校開辦了許多運動會,身為學生的我們也參加了學校開辦的運動會,然而運動會中那么多項目,得分不同,參加人員也不同,只靠人統(tǒng)計分數(shù)是很麻煩的,因此就需要設計一個程序來幫我們更好、更快、更精確的統(tǒng)計分數(shù)。該程序主要用于統(tǒng)計運動會中各個學校所得總分以及各校在男子和女子項目中所得分數(shù),并提供查詢功能。該程序需要具備以下功能:1.創(chuàng)建信息:創(chuàng)建學校名稱、運動項目(字符型);輸入運動會中各個項目前三名或前五名的成績(成績?yōu)檎麛?shù)型)。2.信息處理:統(tǒng)計各個學校在運動會中取得的總分;3.信息輸出:能夠按學校編號、學??偡帧⒛信畧F體總分排序輸出;4.信息查詢:可以按學校編號查詢學校某個項目的情況也可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W校;5.此程序要求界面友好并且有中文提示。二概要設計1.邏輯結(jié)構(gòu):采用線性結(jié)構(gòu)——結(jié)構(gòu)中的數(shù)據(jù)元素之間存在著一對一的線性關系;主要采用線性表。2.存儲結(jié)構(gòu):主要采用線性表的順序存儲;輸入操作:輸入各個學校的名稱、運動項目;輸入運動會上前三或前五名成績。結(jié)構(gòu)體定義查找操作:1.按學校編號2.按運動項目編號3.主要核心算法:Createinformation(),//創(chuàng)建學校、運動會項目,輸入運動會中前三名或前五名的成績。OutputSchnum(),//按學校編號排序輸出總分。OutputSchscore(),//按學??偡峙判蜉敵隹偡?。OutputBoyscore(),//按男子團體總分排序輸出總分。OutputGirlscore(),//按女子團體總分排序輸出總分。SearchSchname(),//按學校編號各個學校情況。SearchPronum(),//按運動項目查詢各個學校情況。輸入學校名稱、運動項目4.各算法之間的關系:輸入學校名稱、運動項目創(chuàng)建信息創(chuàng)建信息輸入前三名或前五名的成績輸入前三名或前五名的成績按學校編號排序輸出總分按學校編號排序輸出總分按學??偡峙判蜉敵霭磳W校總分排序輸出總分運動會分數(shù)統(tǒng)計運動會分數(shù)統(tǒng)計信息處理信息處理按男按男子團體總分排序輸出總分按女子團體按女子團體總分排序輸出總分按學校編號各個學校情況按學校編號各個學校情況信息查詢信息查詢按運動項目各個學校情況按運動項目各個學校情況三詳細設計創(chuàng)建信息:voidCreateInformation()//創(chuàng)建信息//{ inti,a,b; cout<<"請輸入學校個數(shù):"; while(1) { cin>>n;//輸入學校個數(shù)n//if(n>=1&&n<=20)//判斷學校個數(shù)是否在1~20之間,不在則重新輸入// break;else cout<<"輸入數(shù)據(jù)有誤,請重新輸入:"; } for(i=1;i<=n;i++) { cout<<"請輸入第"<<i<<"個學校名稱:"; cin>>sch[i].name;//輸入學校名稱(字符型)// sch[i].score=0;//將學??偡?、男女團體總分初始化為0// sch[i].boyscore=0; sch[i].girlscore=0; sch[i].num=i;//學校的編號// } cout<<"請輸入男子團體項目個數(shù)和女子團體項目個數(shù):";A: cin>>m>>w;//輸入男女團體項目數(shù)目// if(m<=20&&m>=1&&w<=20&&w>=1)//判斷男女團體項目數(shù)目是否符合標準// { for(i=1;i<=m+w;i++) { cout<<"請輸入第"<<i<<"個項目的名稱:"; cin>>pro[i].name;//輸入項目名稱// cout<<"請輸入第"<<i<<"個項目有前三名還是有前五名(輸入3或5):"; while(1) { cin>>c; pro[i].rank=c; if(c==3||c==5) break; else cout<<"輸入有誤,請重新輸入:"; }cout<<"請輸入第"<<i<<"個項目的前"<<c<<"名學校編號:"<<endl; for(a=1;a<=c;a++) {B: cout<<"第"<<a<<"名學校編號:"; cin>>b;//輸入第a名學校編號// if(b>=1&&b<=n) { if(c==5)//判斷項目有前三名還是有前五名// { pro[i].num[a]=b;//第i個項目的第a名編號// sch[b].score=sch[b].score+result5[a-1];//統(tǒng)計學??偡?/ if(i<=m)//判斷此項目是男團體還是女團體// { sch[b].boyscore=sch[b].boyscore+result5[a-1];//統(tǒng)計男團體的總分// } else sch[b].girlscore=sch[b].girlscore+result5[a-1];//統(tǒng)計女團體總分// } else { pro[i].num[a]=b;//第i個項目的第a名編號// sch[b].score=sch[b].score+result3[a-1];//統(tǒng)計學??偡?/ if(i<=m)//判斷此項目是男團體還是女團體// { sch[b].boyscore=sch[b].boyscore+result3[a-1];//統(tǒng)計男團體的總分// } else sch[b].girlscore=sch[b].girlscore+result3[a-1];//統(tǒng)計女團體總分// } } else { cout<<"你輸入有誤,請重新輸入:"; gotoB; } } cout<<endl; } } else { cout<<"你輸入有誤,請重新輸入:"; gotoA; }}信息處理:voidOutputschnum()//按學校編號排序,選用簡單選擇排序//{ inti,j,k; schooll; for(i=1;i<=n-1;++i) { k=i;//在i開始的n-i+1個記錄中選關鍵碼最小的記錄// for(j=i+1;j<=n;++j) if(sch[j].num<sch[k].num)k=j;//k中存放關鍵碼最小記錄的下標// if(k!=i)//關鍵碼最小的記錄及第i個記錄交換// { l=sch[i]; sch[i]=sch[k]; sch[k]=l; } } cout<<"按學校編號排列:"<<endl; cout<<"學校編號名稱總分男子總分女子總分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}voidOutputschscore()//按學??偡峙判?,選擇直接插入排序//{ inti,j; for(i=2;i<=n;i++) { sch[0]=sch[i];//將待插入記錄存放到監(jiān)視哨r[0]中// j=i-1;//從前一個數(shù)開始比較// while(sch[0].score<sch[j].score)//尋找插入位置// { sch[j+1]=sch[j]; j=j-1; } sch[j+1]=sch[0];//將待插入記錄插入到已排序的序列中// } cout<<"按學??偡峙帕校?<<endl; cout<<"學校編號名稱總分男子總分女子總分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}voidOutputBoyscore()//按男子團體總分排序輸出,采用冒泡排序//{ intchange,i,j; schoolk; change=TRUE; for(i=1;i<=n-1&&change;++i) { change=FALSE; for(j=1;j<=n-i;++j) if(sch[j].boyscore>sch[j+1].boyscore)//如果sch[j]比前面asch[j-1]的小,則交換向上浮// {//交換數(shù)組sch[j]和sch[j-1]// k=sch[j]; sch[j]=sch[j+1]; sch[j+1]=k; change=TRUE; } } cout<<"按男子團體總分排列:"<<endl; cout<<"學校編號名稱總分男子總分女子總分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}voidOutputGirlscore()//按女子團體總分排列輸出,簡單選擇排序//{ inti,j,k; schooll; for(i=1;i<=n-1;++i) { k=i; for(j=i+1;j<=n;++j) if(sch[j].girlscore<sch[k].girlscore)k=j; if(k!=i) { l=sch[i]; sch[i]=sch[k]; sch[k]=l; } } cout<<"按女子團體總分排列:"<<endl; cout<<"學校編號名稱總分男子總分女子總分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}信息查詢:voidSearchschnum()//按學校編號查詢//{ intx,i; cout<<"請輸入你要查詢的學校編號:"; while(1) { cin>>x;//輸入要查詢的學校編號// if(x>=1&&x<=n)//判斷輸入的學校編號是否存在// break; else cout<<"你輸入有誤,請重新輸入:"; } cout<<"你要查詢的學校有關信息如下:"<<endl; cout<<"學校編號名稱總分男子總分女子總分"<<endl; for(i=1;i<=n;i++) { if(sch[i].num==x) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; break; } } cout<<endl;}voidSearchpronum()//按項目編號查詢//{ intx,i; cout<<"請輸入你要查詢的項目編號:"; while(1) { cin>>x;//輸入要查詢的項目編號// if(x>=1&&x<=w+m)//判斷要查詢的項目編號是否存在// break; else cout<<"你輸入有誤,請重新輸入:"; } cout<<pro[x].name<<"前3或前5名學校的情況如下:"<<endl; cout<<"名次"<<"學校編號"<<"名稱"<<"學校總分"<<endl;for(i=1;i<=pro[x].rank;i++) { cout<<""<<i<<""<<pro[x].num[i]<<""<<sch[pro[x].num[i]].name<<""<<sch[pro[x].num[i]].score<<endl; } cout<<endl;}四設計及調(diào)試分析一開始定義結(jié)構(gòu)體時,定義的不夠全面,到后面編碼時發(fā)現(xiàn)不夠用,就要再次定義,這部分比較簡單。整個代碼在編寫過程中,主要在創(chuàng)建信息的時候出現(xiàn)很多問題,一開始構(gòu)思的時候總是不夠全面,不是無法計算男女總分成績,就是排名得分不知道怎么弄,于是就在網(wǎng)上搜了一些有關信息,找到了一個較好的方式,就是比較麻煩一些,不注意的話就會很容易繞進去,必須一步一步的看清楚。信息輸出就比較簡單一些,其中按不同方式輸出,我就從書上找了幾種排序方法,這些書上都有,基本沒動。信息查詢頁比較簡單,一開始創(chuàng)建信息的時候就把一些信息存儲好了,查詢時只需要把那些信息輸出來就行了。調(diào)試時,有的輸入老是循環(huán),查看代碼發(fā)現(xiàn)時if語句缺少括號,還有就是缺分號、變量沒定義

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論