版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 c+程序設(shè)計課程設(shè)計說明書題 目:比賽參賽選手管理系統(tǒng) 學生姓名: 學 號: 專 業(yè):電子信息工程 班 級:信息092 指導老師: 內(nèi)蒙古科技大學課程設(shè)計任務書課程名稱c+語言課程設(shè)計設(shè)計題目比賽參賽選手管理系統(tǒng)指導教師時間2011.6.132011.6.24一、教學要求1. 鞏固和加深學生對c+語言課程的基本知識的理解和掌握2. 掌握c+語言編程和程序調(diào)試的基本技能3. 利用c+語言進行基本的軟件設(shè)計4. 掌握書寫程序設(shè)計說明文檔的能力5. 提高運用c+語言解決實際問題的能力二、設(shè)計資料及參數(shù)每個學生在教師提供的課程設(shè)計題目中任意選擇一題,獨立完成,可根據(jù)設(shè)計內(nèi)容適當修改題目名稱。*比賽參
2、賽選手管理系統(tǒng)定義人員基類,包含選手的基本數(shù)據(jù)和基本屬性;要求至少設(shè)計以下各功能模塊:v 輸入記錄v 查詢功能v 排序v 顯示信息三、設(shè)計要求及成果1. 分析課程設(shè)計題目的要求2. 寫出詳細設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用4. 設(shè)計完成后提交課程設(shè)計報告四、進度安排資料查閱與討論(1天)系統(tǒng)分析(2天)系統(tǒng)的開發(fā)與測試(5天)編寫課程設(shè)計說明書和驗收(2天)五、評分標準1. 根據(jù)平時上機考勤、表現(xiàn)和進度,教師將每天點名和檢查2. 根據(jù)課程設(shè)計完成情況,必須有可運行的軟件。3. 根據(jù)課程設(shè)計報告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格
3、。六、建議參考資料1c+面向?qū)ο蟪绦蛟O(shè)計,吳敏、楊國林 主編,內(nèi)蒙古大學出版社2c+語言程序設(shè)計(第三版),鄭莉,清華大學出版社比賽參賽選手管理系統(tǒng)摘要c+語言是目前公認的熱門編程語言之一。c+是在c語言基礎(chǔ)上發(fā)展演變而來的一種面向?qū)ο蟪绦蛟O(shè)計語言。它既支持面向過程的程序設(shè)計方法,也支持面向?qū)ο蟮某绦蛟O(shè)計方法。當今,c+語言在社會的各個領(lǐng)域發(fā)揮著越來越重要的作用。參賽選手系統(tǒng)的設(shè)計正是c+用于生活中的一項應用。參賽選手管理系統(tǒng)能方便用戶快捷處理選手的信息,得到想要的數(shù)據(jù)并能將選手的信息以文檔方式保存。此系統(tǒng)的主要管理的信息有:選手的姓名,編號和三項賽事的成績。系統(tǒng)的主要功能有選手信息的添加、修
4、改、顯示,能對選手成績按編號或成績進行排序,可以根據(jù)用戶的要求按姓名,編號查詢選手的信息,保存信息到文件以及從文件中讀取信息等功能。目錄摘要2第一章 問題描述2第二章 問題分析2第三章 數(shù)據(jù)模型2第四章 設(shè)計流程圖2第五章 程序代碼2第六章 運行結(jié)果2第七章 設(shè)計總結(jié)2參考文獻2第一章 問題描述建立一套比賽參賽選手管理系統(tǒng)。定義人員基類(competitor),包含選手的基本數(shù)據(jù)和基本屬性,實現(xiàn)以下各功能:v 輸入記錄:選手信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)選手信息數(shù)據(jù)的維護。此模塊包括子模塊有:增加選手信息、修改選手信息。v 查詢功能:查詢時可實現(xiàn)按姓名查詢、按編號查詢、成績查詢v 排序:能
5、對用戶指定的任意項目名,按成績由低到高排列選手數(shù)據(jù)并顯示排序結(jié)果。v顯示信息:顯示選手的編號、項目、成績等信息。設(shè)計要求及成果1. 分析課程設(shè)計題目的要求2. 寫出詳細設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用第二章 問題分析方案說明:參賽選手管理系統(tǒng)是用面向?qū)ο蟮姆椒ㄔO(shè)計,由于數(shù)組的存放是連續(xù)的,而單鏈表是非連續(xù)存放的,是動態(tài)分配內(nèi)存空間,因此此系統(tǒng)采用單鏈表來完成。各個功能模塊的實現(xiàn)主要轉(zhuǎn)變到對單鏈表的遍歷,添加和刪除結(jié)點。系統(tǒng)功能模塊的劃分:在主界面中包括“增加選手 修改選手 查詢選手信息 排序 保存信息 讀取信息 退出”等全部的功能,之所以設(shè)
6、計這么一個主界面,一是因為能使用戶對程序操作的流程更加清楚簡明,二是保證了用戶同時只能對一個文件進行操作的系統(tǒng)要求,保證了系統(tǒng)不會發(fā)生打開文件紊亂或者出現(xiàn)致命錯誤。功能模板的劃分顯示菜單功能模板1增加選手功能2修改選手功能3查詢選手信息4排序功能5保存信息6讀取信息7退出第三章 數(shù)據(jù)模型類的設(shè)計定義參賽選手competitor類,包含成員變量:姓名name,編號num,短跑、跳高、跳遠成績x,y,z。class competitor /選手public: competitor *next; public: string name; /姓名 long num; /編號 int x,y,z; /短
7、跑,跳高,跳遠 成員函數(shù):void sadd(); /添加void samend(); /修改void ssearch(); /查詢void staxis(); /排序void ssave(); /保存void sload(); /讀取void pxh();void psx();void pyw();void pyy();第四章 設(shè)計流程圖開始讀入文件中的數(shù)據(jù)并輸出菜單及提示信息輸入選擇選擇操作子程序保存并退出 圖4.1 流程圖 第五章 程序代碼#include #include #include #include using namespace std; class competitor p
8、ublic: competitor *next; public: string name; /姓名 long num; /編號 float x,y,z; /短跑,跳高,跳遠 void play()coutname選手的編號是num,短跑:x,跳高:y,跳遠:z next; delete comp; comp=p; comp=0; void sadd(); /添加 void samend(); /修改 void ssearch(); /查詢 void staxis(); /排序 void ssave(); /保存 void sload(); /讀取 void pxh(); void psx();
9、 void pyw(); void pyy(); private: competitor *comp; /頭接點 ; void cla:sadd() /添加 competitor *q; string name1; long num1; float x1,y1,z1; system(cls); coutn *增加的選手* nendl; cout請輸入選手的(中間用空格間隔) endl; cout姓名 編號 短跑成績 跳高成績 跳遠成績name1num1x1y1z1; q=new competitor(name1,num1,x1,y1,z1); q-next=0; if(comp) compet
10、itor *t; t=comp; if(t-num=num1) cout編號已存在,請重新輸入next) if(t-num=num1) cout編號已存在,請重新輸入next; t-next=q; else comp=q; cout輸入完畢endl; void cla:samend() /修改 system(cls); long num1; coutn* 修改選手信息 *n; coutnum1; /查找要修改的結(jié)點 competitor *p1,*p2; p1=comp; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p
11、1!=null) cout編號是num1的選手的信息:endl; cout姓名 name 短跑x 跳高y 跳遠zendl; cout請輸入修改后的信息:姓名 短跑成績 跳高 ;cout成績 跳遠成績p1-namep1-xp1-yp1-z; cout修改成功endl; else /未找到接點 cout未找到!n; void cla:ssearch() /查詢 system(cls); coutn* 查詢選手信息 *nendl; cout請輸入查詢方式:endl; cout1.按編號查詢endl; cout2.按姓名查詢endl; cout3.返回c; switch (c) case 1: lon
12、g num1; cout要查詢的編號num1; /查找要查詢的結(jié)點 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姓名:name 短跑:x 跳高:y 跳遠:zendl; cout查詢完畢.; else /未找到接點 cout未找到!n; break; case 2: string name1; cout要查詢的選手姓名name1; /查找要查詢的結(jié)點 competitor *p1,*p2;
13、p1=comp; while(p1) if(p1-name=name1) break; else p2=p1; p1=p1-next; if(p1!=null) coutname1的選手的信息endl; cout編號:num 短跑:x c+:y 跳遠:zendl; cout查詢完畢.; else /未找到接點 coutnext) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=comp; for(i=1;inump1-next-num) / 如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1;
14、/頭結(jié)點交換 comp=p2; p1=comp; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-nump1-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-next; while(p1); void cla:psx() /按短跑成績排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1-next) n+; p1=p1
15、-next; cout共有n條信息.endl; int i; p1=comp; for(i=1;ixp1-next-x) / 如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 comp=p2; p1=comp; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-xp1-next-x) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=comp; do p1-pla
16、y(); p1=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;iyp1-next-y) /如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 comp=p2; p1=comp; while(p1-next-next) /中間的交換 p2=p1; p1=p
17、1-next; if(p1-yp1-next-y) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=comp; do p1-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;izp1-next-z) / 如果頭結(jié)
18、點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 comp=p2; p1=comp; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-zp1-next-z) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=comp; do p1-play(); p1=p1-next; while(p1); void cla:staxis() /排序 system(cls); char
19、 c; cout請選擇以何種方式排序:endl; cout1以編號排序endl; cout2以短跑成績排序endl; cout3以跳高成績排序endl; cout4以跳遠成績排序endl; cout5返回endl; cout請選擇(1-5)c; switch (c) case 1:pxh(); break; case 2:psx(); break; case 3:pyw(); break; case 4:pyy(); break; case 5:return; void cla:ssave() /保存到文件 system(cls); char c; coutc; if(toupper(c)!=
20、y) return; ofstream tfile(date.txt,ios_base:binary); competitor *p=comp; while(p) / 寫入文件 tfilenametnumtxtytz; tfilenext; tfile.close(); cout保存完畢.next; delete p; p=comp; if stream tfile(date.txt,ios_base:binary); string name1; long num1; float x1,y1,z1; tfilename1num1x1y1z1; while(tfile.good() /創(chuàng)建選手接點 competitor *s; s=comp; s=new competitor(name1,num1,x1,y1,z1); s-next=0; if(comp) /若已經(jīng)存在結(jié)點 competitor *p2; p2=comp;while(p2-next) /查找尾結(jié)點 p2=p2-next; p2-next=s; /連接 else /若不存在結(jié)點(表空) comp=s; /連接 tfilename1num1x1y1z1; tfile.close(); coutn歡迎使用選手成績管理系統(tǒng)n; void
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年二手車買賣合同協(xié)議
- 房產(chǎn)證購房合同格式
- 新式勞務合同范例模板
- 2024裝修工程結(jié)算協(xié)議
- 出租車公司車輛轉(zhuǎn)讓合同樣本
- 股權(quán)激勵合同范本
- 技術(shù)開發(fā)保密合同樣本
- 小區(qū)環(huán)境整治施工合同
- 就業(yè)安置協(xié)議書撰寫心得
- 合伙協(xié)議退出機制詳解
- 綿陽市高中2022級(2025屆)高三第一次診斷性考試(一診)化學試卷(含標準答案)
- 北京聯(lián)合大學《影視作品欣賞》2023-2024學年第一學期期末試卷
- 《心理健康教育主題班會》主題
- 8 冀中的地道戰(zhàn)(教學設(shè)計)2023-2024學年統(tǒng)編版語文五年級上冊
- 疲勞試驗機市場需求與消費特點分析
- 2024中國石化校園招聘3500人高頻500題難、易錯點模擬試題附帶答案詳解
- 2024年人教版七年級上冊英語期中綜合檢測試卷及答案 (一)
- 組織管理體系-
- 山西省太原市2022-2023學年八年級上學期期中歷史試題(解析版)
- 園藝用品采購合同范本
- 路基土石方數(shù)量計算表
評論
0/150
提交評論