C++編程課程設計:運動會成績查詢系統_第1頁
C++編程課程設計:運動會成績查詢系統_第2頁
C++編程課程設計:運動會成績查詢系統_第3頁
C++編程課程設計:運動會成績查詢系統_第4頁
C++編程課程設計:運動會成績查詢系統_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 課程設計報告書專 業:計算機科學與技術 課程設計名稱:數據結構課程設計題 目:xxx班 級:xxx學號:xxx姓名:xxx同 組 人 員: xxx指 導 老 師: 完 成 時 間:2012年2月17日摘要運動會成績查詢系統是運動會管理中的一個重要內容,隨著時代的進步,參加運動會的運動員數量也不斷增加、項目也越來越多、運動會舉辦也越來越頻繁,對成績的管理要求也越來越高。如何管理好各單位、運動員的成績的信息,對運動會成績管理系統的要求也越來越高,所以必須要不斷地更新運動會成績管理系統,才能滿足社會日益發展的需要。本文是采用vc+6.0作為前臺開發工具,旨在實現對現有的運動會成績數據庫存儲的基礎上

2、,提供信息咨詢,信息檢索,信息存取等服務,在此論文中主要實現對存儲在數據庫中的數據表進行這些簡單的操作,為提高運動會成績查詢系統的效率提供了便利。關鍵詞:vc+6.0;運動會成績查詢;目錄目錄1第一章開發環境和開發工具11.1c/c+語言簡介11.2 開發背景11.3 開發環境1第二章 算法思想22.1 系統需求分析22.2 系統總體設計22.2.1 系統設計目標22.2.2 開發設計思想32.2.3 系統功能模塊設計42.3 算法思想描述4第三章算法實現63.1 數據結構63.2 程序模塊63.3 各模塊之間的調用關系63.4 源程序代碼6第四章測試與分析144.1 測試數據選擇144.2

3、測試結果分析15總 結20心得體會21參考文獻22 第一章 開發環境和開發工具1.1 c/ c +語言簡介c語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的d.m.ritchie于1972年推出。1978后,c語言已先后被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到c語言,適于編寫系統軟件,三維,二維圖形和動畫。1.2 開發背景 隨著科學技術的不斷發展,計算機科學日漸成熟,

4、其強大的功能已為人們所深刻認識,它己進入人類社會的各個領域并發揮著越來越重要的作用。采用計算機進行信息化管理已成為衡量企業管理科學化和現代化的重要標志,而人事管理的全面自動化、信息化則是其中重要的組成部分。人事管理的好壞對于企業的決策者和管理者來說都至關重要,在很大程度上影響著企業的經濟效益和社會效益。因此,本文所研究的人事管理信息系統具有一定的使用價值和現實意義。1.3 開發環境本文所采用的開發環境主要是基于c語言在microsoft visual c+平臺上開發的系統,界面友好,功能強大,調試也很方便。這是微軟出的一個c語言集成開發環境(ide),主要有:vc+6.0等,分為企業版和學生版

5、等。對于初學者vc+6.0是比較容易上手的,但其對標準支持的不好可能使人養成不良的編程習慣。 第二章 算法思想 2.1 系統需求分析數據結構不僅是一般程序設計(特別是非數值性程序設計)的基礎,而且是設計和實現編譯程序、操作系統、數據庫系統及其他系統程序的重要基。本實驗中,對不同的對象采取不同的存儲結構,對參賽學校采取鏈式結構,而對于參賽運動員采取一個結構就可以了。本程序中主要用到線性表的一些基本操作,將各學校信息,運動員信息,項目信息都構造成線性表。具體功能通過主函數分別調用各函數實現。參考本實驗的功能要求,本程序分為七個模塊:主函數、信息錄入函數、信息統計函數、信息查詢函數,信息排序函數、存

6、盤函數、讀盤函數。信息錄入函數有包括學校信息錄入函數(包括學校總數、學校名稱等),競賽項目錄入函數(男子競賽項目總數、女子競賽項目總數、競賽項目名稱、取名次方法和各名次對應的分值)、比賽結果錄入函數(各名次的學生信息等)。信息統計不再結果中顯示出來,為了信息查詢和排序輸出。信息查詢函數包括按學校編號查詢、按學校名稱查詢、按項目編號查詢三個子函數。信息排序函數包括按男子總分排序函數、按女子總分排序函數、按團體總分排序函數。2.2 系統總體設計2.2.1 系統設計目標 本文研究開發的運動會管理系統用于支持用于查詢各個學校在運動會中的成績。有幾種目標: 支持輸入各個項目的前三名或前五名的成績;能統計

7、各學校總分;可以按學校編號或名稱、學校總分、男女團體總分排序輸出。可以按學校編號查詢學校某個項目的情況;可以按項目編號查詢取得前三或前五名的學校。數據存入文件并能隨時查詢 輸入數據形式和范圍:可以輸入學校的名稱,運動項目的名稱;輸出形式有提示,各學校分數為整形;界面要求有合理的提示,每個功能可以設立菜單,根 據提示,可以完成相關的功能要求。存儲結構:學生自己根據系統功能要求自己設計,但是要求運動會的相關數據要存儲在數據文件中。測試數據:要求使用全部合法數據、整體非法數據、局部非法數據。進行程序 測試,以保證程序的穩定。2.2.2 開發設計思想 基于以上系統設計目標,本文在開發運動會管理系統時遵

8、循了以下開發設計思想: 采用現有的軟硬件環境及先進的管理系統開發方案,從而達到充分利用現有資源,提高系統開發水平和應用效果的目的。盡量達到操作過程中的直觀、方便、實用、安全等要求。系統采用模塊化程序設計方法,既便于系統功能的各種組合和修改,又便于未參與開發的技術維護人員補充、維護。系統應具備數據庫維護功能,及時根據用戶需求進行數據的添加、刪除、修改、備份等操作。2.2.3 系統功能模塊設計 本系統分為四個模塊:輸入成績模塊、計算成績模塊、分析排名模塊、查詢模塊。得到如圖2-1所示的系統功能模塊圖。輸入學校信息運動會查詢系統輸入成績計算成績分析排名查詢輸入項目信息計算男女團成績計算學校總成績學校

9、排名男女團排名得分查詢項目查詢圖2-1系統功能模塊圖2.3 算法思想描述本實驗中,對不同的對象采取不同的存儲結構,對參賽學校采取鏈式結構,而對于參賽運動員采取一個結構就可以了。本程序中主要用到線性表的一些基本操作,將各學校信息,運動員信息,項目信息都構造成線性表。具體功能通過主函數分別調用各函數實現。參考本實驗的功能要求,本程序分為七個模塊:主函數、信息錄入函數、信息統計函數、信息查詢函數,信息排序函數、存盤函數、讀盤函數。信息錄入函數有包括學校信息錄入函數(包括學校總數、學校名稱等),競賽項目錄入函數(男子競賽項目總數、女子競賽項目總數、競賽項目名稱、取名次方法和各名次對應的分值)、比賽結果

10、錄入函數(各名次的學生信息等)。信息統計不再結果中顯示出來,為了信息查詢和排序輸出。信息查詢函數包括按學校編號查詢、按學校名稱查詢、按項目編號查詢三個子函數。信息排序函數包括按男子總分排序函數、按女子總分排序函數、按團體總分排序函數。第三章 算法實現3.1 數據結構運動會管理系統是一個數據庫應用系統,各個學校的所有信息都保存在數據庫中。 3.2 程序模塊程序分為四個模塊:輸入成績模塊、計算成績模塊、分析排名模塊、查詢模塊。3.3 各模塊之間的調用關系l 輸入成績模塊:讓用戶輸入學校信息,比賽項目信息,比賽成績信息。l 計算成績模塊:計算用戶輸入的比賽成績,計算男團分數、男團分數、總分。l 分析

11、排名模塊:對學校的男團分、女團分和總分進行排名。l 查詢模塊:讓用戶查詢各學校成績,男團排名,女團排名,總排名和各項目的前幾名。l 模塊調用關系:計算成績模塊調用輸入成績模塊,分析排名模塊調用計算成績模塊,查詢模塊調用計算成績模塊、分析排名模塊。函數 函數功能 時間復雜度 void information 輸入信息建立系統 o(n*n)void output 輸出信息 o(n*n)void inquiry 查詢信息 o(n*n)void main 輸入主界面 ,調用各個函數 o(n*n)3.4 源程序代碼#include#include#include #include #define n 3

12、/學校數目 #define m 2/男子項目數目 #define w 1/女子項目數目#define null 0typedef struct int itemnum; /項目編號 int top; /取名次的數目 int range5; /名次 int mark5; /分數itemnode; /定義項目結點的類型typedef structint dai;int schoolname;int schoolnum; /學校編號 int score; /學校總分 int mscore; /男團體總分 int wscore; /女團體總分 itemnode cm+w; /項目數組headnode;

13、/定義頭結點類型headnode hn;/定義一個頭結點數組void inputinformation() /輸入信息,建立系統int i,j,k,s; for(i=0;in;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /初始化頭結點 for(i=0;in;i+) printf(*學校名稱:); scanf(%s,&hi.schoolname);printf(*學校編號:); scanf(%d,&hi.schoolnum); /輸入頭結點信息 for(j=0;jm+w;j+) printf(*項目編號:); scanf(%d,&hi.cj.itemnum

14、); printf(*取前3名or前5名:); scanf(%d,&hi.cj.top); printf(*獲得幾個名次:); scanf(%d,&k); /輸入項目信息 for(s=0;s5;s+) hi.cj.ranges=0, hi.cj.marks=0; /初始化排名和分數 for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /輸入所獲名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=5; brea

15、k; case 2: hi.cj.marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks;/

16、按取前三名還是取前五名分別記分 if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子項目則記到男子分數里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子項目則記到女子項目里面去 printf(n); void output() /輸出函數 int choice,i,j,k; int sign; do printf(*1.按學校編號輸出.*n); printf(*2.按學校名稱輸出.*n); printf(*3.按學校總分輸出.*n); printf(*4.按男團總分輸出.*n); printf(*5.按女團總分輸出.

17、*n); printf(nn* 請選擇編號*nn:); scanf(%d,&choice); switch(choice) case 1: printf(學校編號 學校名稱 學校總分 男團總分 女團總分n); for(i=0;in;i+) printf(%8d %8s %8d %8d %8dn,hi.schoolnum,hi.schoolname,hi.score,hi.mscore,hi.wscore); /按編號順序輸出 break; case 2: printf(學校名稱 學校編號 學校總分 男團總分 女團總分n); for(i=0;in;i+) printf(%8s %8d %8d %

18、8d %8dn,hi.schoolname,hi.schoolnum,hi.score,hi.mscore,hi.wscore); /按學校名稱輸出 break; case 3: printf(學校名次 學校總分 學校名稱 學校編號 男團總分 女團總分n); for(i=0;in;i+) hi.dai=hi.score; for(i=0;in;i+) for(j=0;jn-i;j+) if(hj.daihj+1.dai) k=hj.dai;hj.dai=hj+1.dai;hj+1.dai=k; for(i=0;in;i+) for(j=0;jn;j+) if(hj.score=hi.dai)

19、printf(第%d名 %12d %8s %8d %8d %8d n,i+1,hj.score,hj.schoolname,hj.schoolnum,hj.mscore,hj.wscore); /按學校總分輸出 break; case 4: printf(學校名次 男團總分 學校名稱 學校編號 學校總分 女團總分n); for(i=0;in;i+) hi.dai=hi.mscore; for(i=0;in;i+) for(j=0;jn-i;j+) if(hj.daihj+1.dai) k=hj.dai;hj.dai=hj+1.dai;hj+1.dai=k; for(i=0;in;i+) for

20、(j=0;jn;j+) if(hj.mscore=hi.dai) printf(第%d名 %12d %8s %8d %8d %8d n,i+1,hj.mscore,hj.schoolname,hj.schoolnum,hj.score,hj.wscore); /按男團總分輸出 break; case 5: printf(學校名次 女團總分 學校名稱 學校編號 學校總分 男團總分n); for(i=0;in;i+) hi.dai=hi.wscore; for(i=0;in;i+) for(j=0;jn-i;j+) if(hj.daihj+1.dai) k=hj.dai;hj.dai=hj+1.d

21、ai;hj+1.dai=k; for(i=0;in;i+) for(j=0;jn)printf(錯誤:這個學校沒有參加此次運動會!nnn); elseprintf(要查詢的項目編號:); scanf(%d,&j); if(jm+w|j=0) printf(此次運動會沒有這個項目nnn);/學校編號超出范圍,則輸出警告 else printf(這個項目取前 %d名,該學校的成績如下:n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次運動會不包括這個項目.nnn);/項目編號超出范圍則輸出警告elseprintf(該項目取前 %d名,取得名次的學校n,h0.cs

22、-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學校編號:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /輸出該項目取得名次學校的成績 printf(nnn繼續 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;void main() int choice;printf(=歡迎使用=n); printf(nn*運動會分數統計系統*n); printf(nn*1.輸入信息*n);printf(*2.輸出信息*n);prin

23、tf(*3.查詢信息*n); printf(*4.退出系統*nnn);printf(=nn);printf(*請選擇要實現步驟的編號:nn);scanf(%d,&choice);switch(choice) case 1: inputinformation();main(); case 2: output();main(); case 3: inquiry();main(); case 4: exit(0); default: printf(輸入錯誤請重新輸入!); 第四章 分析和測試4.1:測試數據選擇學校:11代號:1項目 名次1 12 13 1學校:22代號:2項目 名次1 2 2 23

24、 2學校:33代號:3項目 名次1 32 33 3其中項目1、2為男子項目 項目3為女之項目。4.2 測試結果分析 圖1 界面 圖 2 輸入信息 圖 3 按學校編號輸出 圖 4 按學校名稱輸出 圖 5 按學校總分輸出 圖 6 按男團總分輸出 圖 7 按女團總分輸出 圖 9 查詢系統總 結在今后的工作、學習中我將認真總結經驗教訓,努力使自己成為一名技術過硬、工作嚴謹、思維活躍的工程人員,為提高人們的生活質量做出更大的貢獻。本文所述運動會查詢系統特色在于能輸入各個項目的前三名或前五名的成績,能統計各學校總分,可以按學校編號或名稱、學校總分、男女團體總分排序輸出,可以按學校編號查詢學校某個項目的情況;可以按項目編號查詢取得前三或前五名的學校,數據存入文件并能隨時查詢。當然,這個運動會查詢系統也有很多不足之處,例如不能具體到個體,不能查詢各個學生的成績,存儲結構不太完美,算法也不能說是最完美的。運動會

溫馨提示

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

評論

0/150

提交評論