




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上軟 件 學 院課程設計報告書 2010 年 12 月 目錄1 設計時間 2010-12-272 設計目的1. 通過設計、編碼、調試等各環節的訓練,深刻理解、牢固掌握數據結構和算法設計 技術,掌握分析、解決實際問題的能力。2. 綜合運用所學知識,上機解決一些與實際應用結合緊密的、規模較大的問題,逐步 掌握軟件開發的基本思想、方法和實現步驟,提高實際應用水平。3. 初步樹立正確的程序設計思想,培養分析問題、解決問題的能力,提高查詢資料和撰寫書面文件的能力。 3設計任務 參加運動會有n個學校,學校編號為1n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1m,女子m+
2、1m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(m<=20,n<=20)設計程序達到以下要求:(1)產生各院系的成績單,內容包括各院系取得的每項成績的項目號、名次(成績)、姓名和得分;(2)產生團體總分報表,內容包括院系編號、男子團體總分和團體總分。4 設計內容 4.1需求分析 本程序在運行期間,為了避免在運行大量數據時不會出錯,并且能夠在很短的時間內將運行結果穩定輸出,就需要系統達到安全性能好,可靠性高,穩定性強,處理數據迅速等特點。應具備一定的實用性。4.1.1功能實現(1
3、)記錄功能。能記錄一次運動會的所有項目信息,如其編號,名稱,是男子項目還是女子項目,是取前三名還是前五名,以及取得名次的學校編號;能記錄參加本次運動會的學校個數,以及學校的編號。并能添加,修改,刪除其中的信息。(2)查詢功能。能根據項目編號查詢在該項目上獲得名次的學校編號,并按名次先后順序輸出;能根據學校編號和項目編號查詢該學校在該項目上獲得的名次以及得分情況。(3)統計功能。能統計各個學校的總分,男子團體總分,女子團體總分。4.1.2相關規定:輸入數據形式和范圍:20以內的整數,也可以輸入學校的名稱,運動項目的名稱4.1.3輸出形式:有中文提示,各學校分數為整形。4.1.4界面要求:有合理的
4、提示,每個功能可以設立菜單,根據提示,可以完成相關的功能要求。4.2總體設計4.2.1定義程序所用到的抽象變量及結構體int n,m,w; struct Result /* 定義項目比賽結果名次列表元素結構體 */ int scnum; /* 學院編號*/ char name20; /* 姓名 */ int position; /* 名次 */ int score; /* 得分 */;struct Match /* 定義運動項目結構體 */ int matnum; /* 項目編號 */ int num; /* 項目名次個數 */ struct Result list5; /* 名次列表數組 *
5、/; struct SchoolList /* 定義學院成績單元素 */ int matnum; /* 項目編號 */ int position; /* 名次 */ char name20; /* 姓名 */ int score; /* 得分 */; struct School /* 定義學院結構體 */ int scnum; /* 學院校號 */ struct SchoolList list50; /* 成績單列表數組 */ int team; /* 團體總分 */ int mteam; /* 男子團體總分 */ int fteam; /* 女子團體總分 */ int num; /* 累加數
6、 */; struct Match ma50; /* 定義運動項目結構數組 */ struct School sc20; int a,b; /* 項目編號,項目名次個數 */4.2.2定義程序所用函數void Input (int c) /* 輸入比賽數據函數 */void Index ( void ) /* 整理比賽數據函數 */ void Teamsco ( void ) /* 團體成績計算函數 */ void Output ( int a ) /* 輸出學院成績列表函數 */void TeamOutput ( void ) /* 輸出團體報表函數 */void MatchOutput (
7、 int t ) /* 輸出比賽項目名次列表函數 */4.2.3 各程序模塊之間的層次(調用)關系 Input()Index()Teamsco()Output()TeamOutput()Main()圖 4.3.1 模塊層次關系4.3詳細設計主函數主要流程為:1 輸入學院個數n,并輸入男子m和女子項目個數w;2 調用input函數對m+n個項目分別選擇名次類型并錄入學院,姓名和成績;3 在程序后臺調用index函數處理錄入的數據;4 在程序后臺調用teamsco函數將成績匯總,計算團體總分。5 調用TeamOutput函數輸出團體報表;6 調用Output函數按學院查看報表;7 調用MatchO
8、utput函數按項目查看報表;8 選擇繼續錄入、返回按學院查看報表或按項目查看報表;9 結束;輸入學院個數n,并輸入男子m和女子項目個數w;TeamOutput()Teamsco()Index()Input()圖4.3.2 函數調用圖結束繼續錄入、返回查看MatchOutput()Output() )輸入學院數n輸入男子項目數m, 女子項目數w輸入男子項目數m輸出學院數n,比賽項目m+w個,男子項目m個,女子項目w個開始輸入已結束的項目編號c 和輸入名次類型rankInput(c)Index()Teamsco()Teamoutput()輸入學院編號查詢成績列表c輸入項目編號查詢成績列表c如果繼
9、續輸入,輸入1. 返回查看學院比賽結果輸入2,返回查看項目結果輸入3結束圖4.3.3 流程圖4.4測試與分析4.4.1測試1. 輸入參加比賽的學院個數8,男子項目數2,女子項目數2。2. 輸入已結束的項目編號1,并選擇前5名。(輸出:項目1取前5名)。3輸入學院編號、姓名、得分。輸入另一已結束項目編號2(輸出:項目2取前3名)。4輸入另一已結束項目編號3,并選擇前5名。(輸出:項目3取前5名)。5輸入另一已結束項目編號4(輸出:項目4取前3名)。6輸入0,系統輸出報表。7輸入學院編號查詢成績列表(輸入3)。系統產生報表。8. 輸入需要查詢排名的項目編號(輸入2)。系統產生報表。9. 輸入0完成
10、10.輸入0結束4.4.2分析該程序運行時需要逐步按照提示輸入和判斷,做出與系統相悖的輸入或選擇將返回重新與機器互動。程序運行時比較慢,可能是因為有些函數的時間復雜度較高。1. input函數只有一次循環,且循環次數由選擇的名次類型來定。時間復雜度O(n).2. index函數是將運動員得分按學院和性別匯總。最多用到3次循環嵌套。時間復雜度O(n3)。程序運行較慢的原因可能在于此。3. teamsco函數用于計算團體總分。時間復雜度O(n2)。4. Output函數用于輸出報表,循環一次,時間復雜度O(n)。5. TeamOutput 和MatchOutput函數分別用于輸出團體報表和項目報表
11、。時間復雜度均為O(n)。4.5 附錄源程序#include < conio.h > #include < stdlib.h > #include < stdio.h > int n,m,w; /* 定義代表學院、男子項目、女子項目數量的變量 */ struct Result /* 定義項目比賽結果名次列表元素結構體 */ int scnum; /* 學院編號*/ char name20; /* 姓名 */ int position; /* 名次 */ int score; /* 得分 */;struct Match /* 定義運動項目結構體 */ int
12、matnum; /* 項目編號 */ int num; /* 項目名次個數 */ struct Result list5; /* 名次列表數組 */; struct SchoolList /* 定義學院成績單元素 */ int matnum; /* 項目編號 */ int position; /* 名次 */ char name20; /* 姓名 */ int score; /* 得分 */; struct School /* 定義學院結構體 */ int scnum; /* 學院校號 */ struct SchoolList list50; /* 成績單列表數組 */ int team; /
13、* 團體總分 */ int mteam; /* 男子團體總分 */ int fteam; /* 女子團體總分 */ int num; /* 累加數 */; struct Match ma50; /* 定義運動項目結構數組 */ struct School sc20; int a,b; /* 項目編號,項目名次個數 */ void Input (int c) /* 輸入比賽數據函數 */ int i,a,rank; a=c; do printf("選擇名次類型:取前3名輸入3,取前5名輸入5:");/* 判斷名次類型 */ scanf("%d",&
14、rank); if (rank=3) maa-1.num=3; if(rank=5) maa-1.num=5; else if(rank!=3&&rank!=5) printf("輸入錯誤,請重新"); while (rank!=3&&rank!=5); printf("n第%d項:取前%d名",a,maa-1.num); for(i=0;i<maa-1.num;i+) maa-1.listi.position=i+1; do printf("n輸入第%d名所在學院編號(1-%d):",i+1,n
15、); scanf("%d",&maa-1.listi.scnum); if(maa-1.listi.scnum<1 | maa-1.listi.scnum>n) printf("n錯誤!輸入的編號應為1-%d之間!",n); /* 輸出出錯信息 */ while (maa-1.listi.scnum<1 | maa-1.listi.scnum>n); printf("請輸入此項獲獎運動員姓名:"); scanf("%s",&); printf(
16、"請輸入該運動員得分"); scanf("%d",&maa-1.listi.score); printf("該運動員得分為:%d",maa-1.listi.score); return;void Index ( void ) /* 整理比賽數據函數 */ int i,j,k,t; for(i=0;i<n;i+) sci.scnum=i+1; /* 初始化學院編號 */ sci.num=0; /* 初始化累加數 */ for(i=0;i<m+w;i+) /* 項目個數 */ for(j=0;j<mai.num;
17、j+) /* 項目名次 */ for(k=0;k<n;k+) /* 學院編號 */ if(mai.listj.scnum=sck.scnum) /* scnum學院編號 */ sck.listsck.num.matnum=mai.matnum; /*matnum項目編號*/ sck.listsck.num.position=mai.listj.position; for(t=0;t<20;t+) /* 學院編號 */ t=t; sck.listsck.num.score=mai.listj.score; sck.n
18、um+; return;void Teamsco ( void ) /* 團體成績計算函數 */ int i,j; for(i=0;i<n;i+) sci.team=0; sci.mteam=0; sci.fteam=0; /* 初始化 */ for(i=0;i<n;i+) for(j=0;j<sci.num;j+) sci.team=sci.team+sci.listj.score; /* 團體總分成績計算 */ if(sci.listj.matnum<=m) sci.mteam=sci.mteam+sci.listj.score; /* 男子團體成績計算 */ el
19、se sci.fteam=sci.fteam+sci.listj.score; /* 女子團體成績計算 */ return; void Output ( int a ) /* 輸出學院成績列表函數 */ int i; printf("n成績報表 學院編號:%dn",a); printf("比賽項目編號 名次 姓名 得分n"); for(i=0;i<sca-1.num;i+) printf ("%6d%10d%10s%15dn",sca-1.listi.matnum,sca-1.listi.position, sca-1.list
20、,sca-1.listi.score); return; void TeamOutput ( void ) /* 輸出團體報表函數 */ int i; printf("n團體成績報表n"); printf("學院編號 團體總分 男子團體總分 女子團體總分n"); for(i=0;i<n;i+) printf("%5d%10d%11d%13dn",sci.scnum,sci.team,sci.mteam,sci.fteam); return;void MatchOutput ( int t ) /* 輸出比賽項目名次列
21、表函數 */ int i; printf ( "n項目名次列表 項目編號:%dn",t); printf ( "n比賽項目編號 名次 獲獎者姓名 獲獎者所在學院編號 得分n"); for ( i=0;i<mat-1.num;i+ ) printf( "%6d%12d%12s%16d%14dn",mat-1.matnum,mat-1.listi.position, ,mat-1.listi.scnum,mat-1.listi.score); return;void main ( void ) int
22、 i,c,t,k; /* c為項目編號 */ printf("nn*運動會分數統計系統*n"); printf("請根據提示進行操作"); do printf( "n請輸入參加運動會的學院個數:(1-20)" ); scanf("%d",&n); if( n<=0 | n>20 ) /* 輸出出錯信息 */ printf(" n輸入的學院數目不正確!請重新輸入!(1-20)n" ); while ( n<=0 | n>20 ); do printf("n
23、有多少個男子項目:(1-20)"); scanf("%d",&m); if ( m<0 | m>20 ) /* 輸出出錯信息 */ printf("n輸入的男子項目數目不正確!請重新輸入!(1-30)n"); while ( m<0 | m>20 ); do printf("n有多少個女子項目:(1-20)"); scanf("%d",&w); if ( w<0 | w>20 ) /* 輸出出錯信息 */ printf ( "n輸入的女子項目數
24、目不正確!請重新輸入!(1-20)n" ); while ( w<0 | w>20 ); printf ("n本次有%d個學院參加,共%d個比賽項目,男子項目%d個,女子項目%d個。n",n,m+w,m,w); SCANFDATA: /* 比賽數據輸入定位點 */ printf("請輸入比賽結果資料n"); for(i=0;i<m+w;i+) mai.matnum=i+1; /* 初始化項目編號 */ c=1; /* 初始化a */ do printf("n請輸入已結束的比賽項目編號(1-%d)('0'
25、;=完成):",m+w); scanf("%d",&c); if(c>0)&&(c<=m+w) Input(c); /* 調用輸入函數 */ else if(c=0) break; /* 輸出出錯信息 */ else printf("n!error:輸入的數應為1-%d之間的整數!n",m+w); while(c!=0); printf("n正在進行整理數據,請稍候.n"); /* 稍候 */ Index(); /* 調用整理函數 */ Teamsco(); /* 調用團體成績計算函數 *
26、/ TeamOutput(); /* 調用輸出團體報表函數 */ SEESCHOOL: /* 查看學院數據定位點 */ c=1; /*初始化c*/ while ( c!=0 ) printf("nn請輸入學院編號查詢成績列表(1-%d)(0=完成):",n); scanf("%d",&c); if(c=0) break; else if(c>0)&&(c<=n) Output(c); /* 調用輸出學院成績列表函數 */ else printf("n!錯誤!輸入的數應為1-%d之間的整數!n",n)
27、; /*輸出出錯信息 */ SEEMATCH: /* 查看項目結果數據定位點 */t=1; while ( t!=0 ) printf ( "nn請輸入需要查詢排名的項目編號(1-%d)(0=完成):",m+w ); scanf ( "%d",&t); if ( t=0 ) break; else if ( (t>0)&&(t<=m+w) MatchOutput(t); /* 調用輸出項目排名列表函數 */ else printf ( "nn!錯誤!輸入的數應為1-%d之間的整數!n",m+w ); /*輸出錯誤信息 */ do printf ( "繼續輸入數據輸入1,返回查看學院比賽結果輸入2,返回查看項目比賽結果輸入3.n"); printf("退出請按0."); scanf ( "%d",&k); if ( k=0 ) break; /* 跳出程序 *
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業設計在現代制造中的作用和價值
- 工業遺產保護與再利用的環境設計策略
- 工業藝術區規劃設計及其產業融合案例分享
- 工業設計創新與技術美學探討
- 工作效率提升的實踐案例分享
- 工作場所的安全規范培訓
- 工廠企業防火培訓教材
- 工作報告編制技巧與實戰分享
- 工程設計中的數學模型構建
- 市場分析與目標用戶畫像的技巧
- 2024制冷系統管路結構設計指導書
- 國際檔案日介紹主題班會
- 足外傷個案護理
- 慢性非傳染性疾病綜合防控示范區申報考評細則培訓課件
- 浙江省城鎮生活垃圾分類標準
- 語言學綱要期末復習考點(完整)
- 2024年廣西中考道德與法治試卷真題(含答案解析)
- DL-T+796-2012風力發電場安全規程
- 2024中考地理一輪復習專題1地球和地球儀(講義)(原卷版)
- DL-T-1642-2016環形混凝土電桿用腳扣
- SF-36生活質量調查表(SF-36-含評分細則)
評論
0/150
提交評論