




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選文檔軟 件 學 院 綜合訓練項目報告書課程名稱 數據結構 項目名稱 運動會分數統計 專業班級 軟件14屆1班 組 別 3 成 員 李業宏揚 張孝瀚 張巖 任課教師 孫寧 目 錄1設計時間.12設計任務.13設計內容.13.1問題分析.13.2程序設計.23.2.1數據類型的定義.23.2.2主程序的流程.33.2.3函數與類調用關系說明.33.2.4主要函數偽代碼.43.3測試與分析.43.3.1測試.43.3.2分析.63.4代碼.64 總結與展望.13參考文獻.14成績評定.151 設計時間2015年10月20日至2015年11月14日2 設計任務參加運動會有n個院系,編號為1n。比賽
2、分成m個男子項目,和w個女子項目。項目編號為男子1m,女子m+1m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些項目取前五名或前三名由學生自己設定。(m<=20,n<=20)3 設計內容根據設計任務編寫程序,要求:假設姓名長度不超過20個字符。每個項目結束時,將其編號、類型符(區分取前五名還是取前三名)輸入,并按名次順序輸入運動員姓名、院系編號和成績。產生各院系的成績單,內容包括各院系取得的每項成績的項目號、名次(成績)、姓名和得分; 產生團體總分報表,內容包括院系編號、男子團體總分、女子團體總分和團體總分。程序
3、運行后有相應功能的選擇菜單界面。3.1問題分析根據設計內容要求,分析如下:創建菜單,內容如下:菜單1.錄入成績: 輸入項目號,輸入取前幾名 循環取名次數次,輸入: 姓名、院系編號、排名 三項信息。菜單2.院系成績單 輸出所有院系的院系編號及其對應的 項目號、名次、姓名、得分 四項信息。團體總分報表 輸入男子項目總數 輸出所有院系的院系編號及其對應的 男團總分 女團總分 總分 三項信息根據菜單框架,需要以下存儲函數:用于存儲學生記錄的節點用于存儲節點的結構以上兩個結構用函數對其操作,具體如圖所示:節點2節點1next鏈式結構head外部函數圖3.1.1 數據結構其中插入記錄就是新建一個節點,獲取
4、院系成績單就是輸出全部符合某條件的節點數據。即:這個項目是一個鏈表的實例。3.2程序設計3.2.1數據類型的定義1. typedef struct Studentint xmid;/項目idint headnum;/選取前幾名,3或者5char *name;/指向選手名字的指針int yuanid;/院系idint paiming;/排名struct Student *next;/指向下一個節點的指針student;節點結構體的定義如上。2.class Cj對節點記錄進行操作的類,具體解釋請看3.2.3及3.2.4具體節點間關系采用鏈表操作,結構請看圖3.1.13.2.2主程序流程 1.實例化
5、Cj類并初始化 2.主函數選擇菜單: 錄入成績、 獲取所有院系成績單、獲取所有院系團體總分、退出 3.具體調用關系請看3.2.33.2.3函數與類調用關系說明 主函數圖3.2.1 程序流程錄入成績in()獲取成績cj()團體總分zf()退出return 0class Cjsetdata實例化struct Student調用函數3.2.4主要函數偽代碼Cj類的insert函數:傳入數據為節點分配內存為節點賦值數據節點的next域指向上一個before指針指向的節點,若為頭節點則指向nullCj類的outdata函數傳入條件遍歷鏈表 如果滿足條件,輸出改行Cj類的nantuan、nvtuan函數計
6、數變量sum=0傳入院系條件遍歷鏈表 如果滿足院系相等,sum=sum+節點分數(其中節點分數為調用getscore函數實現)3.3測試與分析3.3.1測試院系數目測試可為5-10個中任意一個,本測試以6個為例選項選1項目號選1選擇的名次數為3輸入測試數據: 張三 1 1 李四 2 2 王五 1 3輸出為: 再次錄入數據,選1項目號選2前名次數選5輸入 張三 1 1 李四 2 2 王五 1 3 趙六 1 4 侯七 3 5再次輸入2輸出如下:輸入3男子總項目輸入為1輸出如下:即測試成功(以上王五李四張三為同名男女)3.3.2分析1.調試過程中發現最后一個節點沒有數據,因此查看代碼發現最后一個節點
7、被跳過了。2.算法的空間復雜度相對較大,構思是否能夠用更簡便的方法。3.4 代碼#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Student/student節點int xmid;int headnum;char *name;int yuanid;int paiming;struct Student *next;student;class Cj/cj類,用于處理成績的類public:student *head,*before;int yuannum;void ini
8、t(int yuan)/初始化類head=before=NULL;yuannum=yuan;void insert(int xmid,int headnum,char *name,int yuanid,int paiming)/壓入節點head=(student *)malloc(sizeof(student);head->xmid=xmid;head->headnum=headnum;head->name=(char *)malloc(sizeof(char)*(strlen(name)+2);strcpy(head->name,name);head->yuan
9、id=yuanid;head->paiming=paiming;head->next=before;before=head;int getscore(int headnum,int pai)/根據兩個數據獲取分數switch(headnum)case 3:switch(pai)case 1:return 5;case 2:return 3;case 3:return 2;case 5:switch(pai)case 1:return 7;case 2:return 5;case 3:return 3;case 4:return 2;case 5:return 1;return 0;
10、void outdata(int yuanid)/輸出數據記錄student *stu=head;while(stu->next)if(stu->yuanid=yuanid)printf(" %4d %4d %10s %4dn",stu->xmid,stu->paiming,stu->name,getscore(stu->headnum,stu->paiming);stu=stu->next;if(stu->yuanid=yuanid)printf(" %4d %4d %10s %4dn",stu-&
11、gt;xmid,stu->paiming,stu->name,getscore(stu->headnum,stu->paiming);int nantuan(int nan,int yuan)/計算男子團體總分student *stu=head;int sum=0;while(stu->next)if(stu->xmid<=nan && stu->yuanid=yuan)sum+=getscore(stu->headnum,stu->paiming);stu=stu->next;if(stu->xmid&l
12、t;=nan && stu->yuanid=yuan)sum+=getscore(stu->headnum,stu->paiming);return sum;int nvtuan(int nan,int yuan)/計算女子團體總分student *stu=head;int sum=0;while(stu->next)if(stu->xmid>nan && stu->yuanid=yuan)sum+=getscore(stu->headnum,stu->paiming);stu=stu->next;if
13、(stu->xmid>nan && stu->yuanid=yuan)sum+=getscore(stu->headnum,stu->paiming);return sum;void in(Cj *setdata)/錄入成績int temp,temp2,yuan,pai,i;char name20;puts("請輸入項目號");scanf("%d",&temp);puts("請輸入要取的前名次數");scanf("%d",&temp2);puts(&qu
14、ot;請輸入各學生成績,順序為:姓名 院系編號 排名");for(i=0;i<temp2;i+)scanf("%s%d%d",&name,&yuan,&pai);setdata->insert(temp,temp2,name,yuan,pai);void cj(Cj *setdata)/獲取所有院系成績單int i;for(i=1;i<=setdata->yuannum;i+)printf("院系id:%dn",i);printf("%6s%6s%10s%6sn","
15、項目id","排名","姓名","得分");setdata->outdata(i);void zf(Cj *setdata)/獲取所有院系團體總分int i,nan;puts("請輸入男子項目總數");scanf("%d",&nan);for(i=1;i<=setdata->yuannum;i+)printf("院系id:%dn",i);printf(" 男子團體總分:%dn",setdata->nantuan(n
16、an,i);printf(" 女子團體總分:%dn",setdata->nvtuan(nan,i);printf(" 團體總分:%dn",setdata->nantuan(nan,i)+setdata->nvtuan(nan,i);int main()int data;Cj setdata;printf("請輸入院系總數目");scanf("%d",&data);setdata.init(data);while(1)puts("1.錄入成績");puts("2
17、.獲取所有院系成績單");puts("3.獲取所有院系團體總分");puts("4.退出");puts("請輸入選項");scanf("%d",&data);switch(data)case 1:in(&setdata);break;case 2:cj(&setdata);break;case 3:zf(&setdata);break;case 4:return 0;default:system("cls");puts("輸入錯誤,請重新輸入");system("pause");return 0;4 總結與展望從項目設計過程中,我們深切地體會到了鏈表的重要性、操作的易用性。本次我們小組在做項目時遇到了很多問題,比如在調試過程中發現了很多錯誤,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華中師范大學《基因工程及實驗》2023-2024學年第二學期期末試卷
- 平頂山職業技術學院《實驗力學》2023-2024學年第一學期期末試卷
- 2025年保健品銷售合同范本
- 魔術車托班課件
- 2025至2031年中國多協議網絡控制器行業投資前景及策略咨詢研究報告
- 2025至2030年中國門鈴界面模塊數據監測研究報告
- 2025至2030年中國聚酯桶罐裝線數據監測研究報告
- 2025年度寧波商鋪租賃合同模板
- 2025至2030年中國特效除苦劑數據監測研究報告
- 油水井壓力測試施工方案
- 年產萬噸酒精發酵車間設計
- 三種水封井及標準圖集
- 生物化學與分子生物學人衛版教材全集
- 照片里的故事
- 管道陰極保護
- 土木工程畢業設計框架結構教學樓計算書
- 整理【越南】環境保護法
- 河北工業大學碩士生指導教師(含新申請者)簡況表.
- TAIYE370-DTH-IV液壓鉆機操作維護說明書
- 最新小微企業有限責任公司章程范本
- 吉林大學第一臨床醫學院進修人員申請表
評論
0/150
提交評論