




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 c+程序設計課程設計說明書題 目:比賽參賽選手管理系統 學生姓名: 學 號: 專 業:電子信息工程 班 級:信息092 指導老師: 內蒙古科技大學課程設計任務書課程名稱c+語言課程設計設計題目比賽參賽選手管理系統指導教師時間2011.6.132011.6.24一、教學要求1. 鞏固和加深學生對c+語言課程的基本知識的理解和掌握2. 掌握c+語言編程和程序調試的基本技能3. 利用c+語言進行基本的軟件設計4. 掌握書寫程序設計說明文檔的能力5. 提高運用c+語言解決實際問題的能力二、設計資料及參數每個學生在教師提供的課程設計題目中任意選擇一題,獨立完成,可根據設計內容適當修改題目名稱。*比賽參
2、賽選手管理系統定義人員基類,包含選手的基本數據和基本屬性;要求至少設計以下各功能模塊:v 輸入記錄v 查詢功能v 排序v 顯示信息三、設計要求及成果1. 分析課程設計題目的要求2. 寫出詳細設計說明3. 編寫程序代碼,調試程序使其能正確運行4. 設計完成的軟件要便于操作和使用4. 設計完成后提交課程設計報告四、進度安排資料查閱與討論(1天)系統分析(2天)系統的開發與測試(5天)編寫課程設計說明書和驗收(2天)五、評分標準1. 根據平時上機考勤、表現和進度,教師將每天點名和檢查2. 根據課程設計完成情況,必須有可運行的軟件。3. 根據課程設計報告的質量,如有雷同,則所有雷同的所有人均判為不及格
3、。六、建議參考資料1c+面向對象程序設計,吳敏、楊國林 主編,內蒙古大學出版社2c+語言程序設計(第三版),鄭莉,清華大學出版社比賽參賽選手管理系統摘要c+語言是目前公認的熱門編程語言之一。c+是在c語言基礎上發展演變而來的一種面向對象程序設計語言。它既支持面向過程的程序設計方法,也支持面向對象的程序設計方法。當今,c+語言在社會的各個領域發揮著越來越重要的作用。參賽選手系統的設計正是c+用于生活中的一項應用。參賽選手管理系統能方便用戶快捷處理選手的信息,得到想要的數據并能將選手的信息以文檔方式保存。此系統的主要管理的信息有:選手的姓名,編號和三項賽事的成績。系統的主要功能有選手信息的添加、修
4、改、顯示,能對選手成績按編號或成績進行排序,可以根據用戶的要求按姓名,編號查詢選手的信息,保存信息到文件以及從文件中讀取信息等功能。目錄摘要2第一章 問題描述2第二章 問題分析2第三章 數據模型2第四章 設計流程圖2第五章 程序代碼2第六章 運行結果2第七章 設計總結2參考文獻2第一章 問題描述建立一套比賽參賽選手管理系統。定義人員基類(competitor),包含選手的基本數據和基本屬性,實現以下各功能:v 輸入記錄:選手信息數據要以文件的形式保存,能實現選手信息數據的維護。此模塊包括子模塊有:增加選手信息、修改選手信息。v 查詢功能:查詢時可實現按姓名查詢、按編號查詢、成績查詢v 排序:能
5、對用戶指定的任意項目名,按成績由低到高排列選手數據并顯示排序結果。v顯示信息:顯示選手的編號、項目、成績等信息。設計要求及成果1. 分析課程設計題目的要求2. 寫出詳細設計說明3. 編寫程序代碼,調試程序使其能正確運行4. 設計完成的軟件要便于操作和使用第二章 問題分析方案說明:參賽選手管理系統是用面向對象的方法設計,由于數組的存放是連續的,而單鏈表是非連續存放的,是動態分配內存空間,因此此系統采用單鏈表來完成。各個功能模塊的實現主要轉變到對單鏈表的遍歷,添加和刪除結點。系統功能模塊的劃分:在主界面中包括“增加選手 修改選手 查詢選手信息 排序 保存信息 讀取信息 退出”等全部的功能,之所以設
6、計這么一個主界面,一是因為能使用戶對程序操作的流程更加清楚簡明,二是保證了用戶同時只能對一個文件進行操作的系統要求,保證了系統不會發生打開文件紊亂或者出現致命錯誤。功能模板的劃分顯示菜單功能模板1增加選手功能2修改選手功能3查詢選手信息4排序功能5保存信息6讀取信息7退出第三章 數據模型類的設計定義參賽選手competitor類,包含成員變量:姓名name,編號num,短跑、跳高、跳遠成績x,y,z。class competitor /選手public: competitor *next; public: string name; /姓名 long num; /編號 int x,y,z; /短
7、跑,跳高,跳遠 成員函數:void sadd(); /添加void samend(); /修改void ssearch(); /查詢void staxis(); /排序void ssave(); /保存void sload(); /讀取void pxh();void psx();void pyw();void pyy();第四章 設計流程圖開始讀入文件中的數據并輸出菜單及提示信息輸入選擇選擇操作子程序保存并退出 圖4.1 流程圖 第五章 程序代碼#include<iostream> #include<fstream > #include<iomanip >
8、#include<string > using namespace std; class competitor public: competitor *next; public: string name; /姓名 long num; /編號 float x,y,z; /短跑,跳高,跳遠 void play()cout<<name<<"選手的編號是"<<num<<",短跑:"<<x<<",跳高:"<<y<<",跳遠:&q
9、uot;<<z <<endl; competitor(string sname,long snum,float sx,float sy,float sz) name=sname; num=snum; x=sx; y=sy; z=sz; ; class cla public: cla() /構造函數 comp=0; sload(); cla() /析構函數 competitor *p; p=comp; while(p) p=p->next; delete comp; comp=p; comp=0; void sadd(); /添加 void samend(); /修
10、改 void ssearch(); /查詢 void staxis(); /排序 void ssave(); /保存 void sload(); /讀取 void pxh(); void psx(); void pyw(); void pyy(); private: competitor *comp; /頭接點 ; void cla:sadd() /添加 competitor *q; string name1; long num1; float x1,y1,z1; system("cls"); cout<<"n *增加的選手* n"<&
11、lt;endl; cout<<"請輸入選手的(中間用空格間隔) "<<endl; cout<<"姓名 編號 短跑成績 跳高成績 跳遠成績"<<endl; cin>>name1>>num1>>x1>>y1>>z1; q=new competitor(name1,num1,x1,y1,z1); q->next=0; if(comp) competitor *t; t=comp; if(t->num=num1) cout<<&qu
12、ot;編號已存在,請重新輸入"<<endl; return; while(t->next) if(t->num=num1) cout<<"編號已存在,請重新輸入"<<endl; return; t=t->next; t->next=q; else comp=q; cout<<"輸入完畢"<<endl; void cla:samend() /修改 system("cls"); long num1; cout<<"n* 修改
13、選手信息 *n" cout<<"輸入要修改選手的編號" cin>>num1; /查找要修改的結點 competitor *p1,*p2; p1=comp; while(p1) if(p1->num=num1) break; else p2=p1; p1=p1->next; if(p1!=null) cout<<"編號是"<<num1<<"的選手的信息:"<<endl; cout<<"姓名 "<<p1
14、->name<<" 短跑"<<p1->x<<" 跳高"<<p1->y<<" 跳遠"<<p1->z<<endl; cout<<"請輸入修改后的信息:姓名 短跑成績 跳高" ;cout<<"成績 跳遠成績"<<endl; cin>>p1->name>>p1->x>>p1->y>>p1->
15、z; cout<<"修改成功"<<endl; else /未找到接點 cout<<"未找到!n" void cla:ssearch() /查詢 system("cls"); cout<<"n* 查詢選手信息 *n"<<endl; cout<<"請輸入查詢方式:"<<endl; cout<<"1.按編號查詢"<<endl; cout<<"2.按姓名查
16、詢"<<endl; cout<<"3.返回"<<endl; char c; cin>>c; switch (c) case '1': long num1; cout<<"要查詢的編號"<<endl; cin>>num1; /查找要查詢的結點 competitor *p1,*p2; p1=comp; while(p1) if(p1->num=num1) break; else p2=p1; p1=p1->next; if(p1!=nul
17、l) cout<<"編號是"<<num1<<"的選手的信息"<<endl; cout<<"姓名:"<<p1->name<<" 短跑:"<<p1->x<<" 跳高:"<<p1->y<<" 跳遠:"<<p1->z<<endl; cout<<"查詢完畢." else /未找
18、到接點 cout<<"未找到!n" break; case '2': string name1; cout<<"要查詢的選手姓名"<<endl; cin>>name1; /查找要查詢的結點 competitor *p1,*p2; p1=comp; while(p1) if(p1->name=name1) break; else p2=p1; p1=p1->next; if(p1!=null) cout<<name1<<"的選手的信息"&
19、lt;<endl; cout<<"編號:"<<p1->num<<" 短跑:"<<p1->x<<" c+:"<<p1->y<<" 跳遠:"<<p1->z<<endl; cout<<"查詢完畢." else /未找到接點 cout<<"未找到!n" break; case '3': return; voi
20、d cla:pxh() /按編號排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1->next) n+; p1=p1->next; cout<<"共有"<<n<<"條信息."<<endl; int i; p1=comp; for(i=1;i<n;i+) p1=comp; if (p1->num>p1->next->num) / 如果頭結點大于第二個的 p2=p1->next; p1->next=p1-
21、>next->next; p2->next=p1; /頭結點交換 comp=p2; p1=comp; while(p1->next->next) /中間的交換 p2=p1; p1=p1->next; if(p1->num>p1->next->num) p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; /交換 p1=comp; do p1->play(); p1=p1->nex
22、t; while(p1); void cla:psx() /按短跑成績排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1->next) n+; p1=p1->next; cout<<"共有"<<n<<"條信息."<<endl; int i; p1=comp; for(i=1;i<n;i+) p1=comp; if (p1->x>p1->next->x) / 如果頭結點大于第二個的 p2=p1->next;
23、p1->next=p1->next->next; p2->next=p1; /頭結點交換 comp=p2; p1=comp; while(p1->next->next) /中間的交換 p2=p1; p1=p1->next; if(p1->x>p1->next->x) p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; /交換 p1=comp; do p1->play(); p1
24、=p1->next; while(p1); void cla:pyw() /按跳高成績排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1->next) n+; p1=p1->next; cout<<"共有"<<n<<"條信息."<<endl; int i; p1=comp; for(i=1;i<n;i+) p1=comp; if (p1->y>p1->next->y) /如果頭結點大于第二個的 p2=p1-
25、>next; p1->next=p1->next->next; p2->next=p1; /頭結點交換 comp=p2; p1=comp; while(p1->next->next) /中間的交換 p2=p1; p1=p1->next; if(p1->y>p1->next->y) p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; /交換 p1=comp; do p1->
26、play(); p1=p1->next; while(p1); void cla:pyy() /按跳遠成績排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1->next) n+; p1=p1->next; cout<<"共有"<<n<<"條信息."<<endl; int i; p1=comp; for(i=1;i<n;i+) p1=comp; if ( p1->z>p1->next->z) / 如果頭結點大
27、于第二個的 p2=p1->next; p1->next=p1->next->next; p2->next=p1; /頭結點交換 comp=p2; p1=comp; while(p1->next->next) /中間的交換 p2=p1; p1=p1->next; if(p1->z>p1->next->z) p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; /交換 p1=comp
28、; do p1->play(); p1=p1->next; while(p1); void cla:staxis() /排序 system("cls"); char c; cout<<"請選擇以何種方式排序:"<<endl; cout<<"1以編號排序"<<endl; cout<<"2以短跑成績排序"<<endl; cout<<"3以跳高成績排序"<<endl; cout<<&
29、quot;4以跳遠成績排序"<<endl; cout<<"5返回"<<endl; cout<<"請選擇(1-5)"<<endl; cin>>c; switch (c) case '1':pxh(); break; case '2':psx(); break; case '3':pyw(); break; case '4':pyy(); break; case '5':return; void c
30、la:ssave() /保存到文件 system("cls"); char c; cout<<"n保存選手信息(將覆蓋原文件),是否繼續?y/n:" cin>>c; if(toupper(c)!='y') return; ofstream tfile("date.txt",ios_base:binary); competitor *p=comp; while(p) / 寫入文件 tfile<<p->name<<"t"<<p->n
31、um<<"t"<<p->x<<"t"<<p->y<<"t"<<p->z; tfile<<endl; p=p->next; tfile.close(); cout<<"保存完畢."<<endl; void cla:sload() /讀取 competitor *p; p=comp; while(p) comp=p->next; delete p; p=comp; if stream
32、 tfile("date.txt",ios_base:binary); string name1; long num1; float x1,y1,z1; tfile>>name1>>num1>>x1>>y1>>z1; while(tfile.good() /創建選手接點 competitor *s; s=comp; s=new competitor(name1,num1,x1,y1,z1); s->next=0; if(comp) /若已經存在結點 competitor *p2; p2=comp;while(p2->next) /查找尾結點 p2=p2->next; p2->next=s; /連接 else /若不存在結點(表空) comp=s; /連接 tfile>>name1&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產品特性分析培訓
- 中小學生心理健康教育整體方案
- 代駕安全責任協議書
- 鏟車銷售、維修與保養服務合同
- 燒烤連鎖品牌加盟管理合同
- 房地產開發企業財務代理記賬及土地增值稅合同
- 礦山安全標志牌設計制作及銷售合同
- 車輛保養與道路救援服務合作協議
- 離婚時遺產繼承與財產分割協議書
- 茶葉拍賣會組織與委托合同
- 音箱結構優化與音質提升-洞察分析
- 大學生應急救護知到智慧樹章節測試課后答案2024年秋西安歐亞學院
- 2024年瑜伽館瑜伽課程收費標準及退費規則合同3篇
- 互聯網營銷師技能競賽理論考試題庫及答案(濃縮300題)
- 土木工程力學(本)-001-國開機考復習資料
- 機械原理課程設計 半自動鉆床說明書(完全)
- 2024-2025年江蘇專轉本英語歷年真題(含答案)
- 遼寧大學《材料力學》2021-2022學年第一學期期末試卷
- 工業5G專網構筑新質生產力發展新優勢
- 電線電纜生產常見質量問題改善與提升
- 《瀝青基鉀離子電池碳負極材料的構筑及性能研究》
評論
0/150
提交評論