《C++程序設(shè)計(jì)》課程設(shè)計(jì)說明書比賽參賽選手管理系統(tǒng)
《《C++程序設(shè)計(jì)》課程設(shè)計(jì)說明書比賽參賽選手管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《C++程序設(shè)計(jì)》課程設(shè)計(jì)說明書比賽參賽選手管理系統(tǒng)(22頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、內(nèi)蒙古科技大學(xué)C++課程設(shè)計(jì)說明書 《C++程序設(shè)計(jì)》課程設(shè)計(jì)說明書 題 目:比賽參賽選手管理系統(tǒng) 學(xué)生姓名: 學(xué) 號(hào): 專 業(yè):電子信息工程 班 級(jí):信息09—2 指導(dǎo)老師: 內(nèi)蒙古科技大學(xué)課程設(shè)計(jì)任務(wù)書 課程名稱 C++語(yǔ)言課程設(shè)計(jì) 設(shè)計(jì)題目 比賽參賽選手管理系統(tǒng) 指導(dǎo)教師 時(shí)間 2011.6.13~2011.6.24 一
2、、教學(xué)要求 1. 鞏固和加深學(xué)生對(duì)C++語(yǔ)言課程的基本知識(shí)的理解和掌握 2. 掌握C++語(yǔ)言編程和程序調(diào)試的基本技能 3. 利用C++語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì) 4. 掌握書寫程序設(shè)計(jì)說明文檔的能力 5. 提高運(yùn)用C++語(yǔ)言解決實(shí)際問題的能力 二、設(shè)計(jì)資料及參數(shù) 每個(gè)學(xué)生在教師提供的課程設(shè)計(jì)題目中任意選擇一題,獨(dú)立完成,可根據(jù)設(shè)計(jì)內(nèi)容適當(dāng)修改題目名稱。 **比賽參賽選手管理系統(tǒng) 定義人員基類,包含選手的基本數(shù)據(jù)和基本屬性; 要求至少設(shè)計(jì)以下各功能模塊: v 輸入記錄 v 查詢功能 v 排序 v 顯示信息 三、設(shè)計(jì)要求及成果 1. 分析課程設(shè)計(jì)題目的要求 2. 寫出
3、詳細(xì)設(shè)計(jì)說明 3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行 4. 設(shè)計(jì)完成的軟件要便于操作和使用 4. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告 四、進(jìn)度安排 資料查閱與討論(1天) 系統(tǒng)分析(2天) 系統(tǒng)的開發(fā)與測(cè)試(5天) 編寫課程設(shè)計(jì)說明書和驗(yàn)收(2天) 五、評(píng)分標(biāo)準(zhǔn) 1. 根據(jù)平時(shí)上機(jī)考勤、表現(xiàn)和進(jìn)度,教師將每天點(diǎn)名和檢查 2. 根據(jù)課程設(shè)計(jì)完成情況,必須有可運(yùn)行的軟件。 3. 根據(jù)課程設(shè)計(jì)報(bào)告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格。 六、建議參考資料 1.《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》,吳敏、楊國(guó)林 主編,內(nèi)蒙古大學(xué)出版社 2.《C++語(yǔ)言程序設(shè)計(jì)(第三版)》,
4、鄭莉,清華大學(xué)出版社 比賽參賽選手管理系統(tǒng) 摘要 C++語(yǔ)言是目前公認(rèn)的熱門編程語(yǔ)言之一。C++是在C語(yǔ)言基礎(chǔ)上發(fā)展演變而來的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。它既支持面向過程的程序設(shè)計(jì)方法,也支持面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。當(dāng)今,C++語(yǔ)言在社會(huì)的各個(gè)領(lǐng)域發(fā)揮著越來越重要的作用。 參賽選手系統(tǒng)的設(shè)計(jì)正是C++用于生活中的一項(xiàng)應(yīng)用。參賽選手管理系統(tǒng)能方便用戶快捷處理選手的信息,得到想要的數(shù)據(jù)并能將選手的信息以文檔方式保存。此系統(tǒng)的主要管理的信息有:選手的姓名,編號(hào)和三項(xiàng)賽事的成績(jī)。系統(tǒng)的主要功能有選手信息的添加、修改、顯示,能對(duì)選手成績(jī)按編號(hào)或成績(jī)進(jìn)行排序,可以根據(jù)用戶的要求按姓名,編號(hào)查
5、詢選手的信息,保存信息到文件以及從文件中讀取信息等功能。 目錄 摘要 2 第一章 問題描述 2 第二章 問題分析 2 第三章 數(shù)據(jù)模型 2 第四章 設(shè)計(jì)流程圖 2 第五章 程序代碼 2 第六章 運(yùn)行結(jié)果 2 第七章 設(shè)計(jì)總結(jié) 2 參考文獻(xiàn) 2 第一章 問題描述 建立一套比賽參賽選手管理系統(tǒng)。定義人員基類(competitor),包含選手的基本數(shù)據(jù)和基本屬性,實(shí)現(xiàn)以下各功能: v 輸入記錄:選手信息數(shù)據(jù)
6、要以文件的形式保存,能實(shí)現(xiàn)選手信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加選手信息、修改選手信息。 v 查詢功能:查詢時(shí)可實(shí)現(xiàn)按姓名查詢、按編號(hào)查詢、成績(jī)查詢 v 排序:能對(duì)用戶指定的任意項(xiàng)目名,按成績(jī)由低到高排列選手?jǐn)?shù)據(jù)并顯示排序結(jié)果。 v 顯示信息:顯示選手的編號(hào)、項(xiàng)目、成績(jī)等信息。 設(shè)計(jì)要求及成果 1. 分析課程設(shè)計(jì)題目的要求 2. 寫出詳細(xì)設(shè)計(jì)說明 3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行 4. 設(shè)計(jì)完成的軟件要便于操作和使用 第二章 問題分析 方案說明:參賽選手管理系統(tǒng)是用面向?qū)ο蟮姆椒ㄔO(shè)計(jì),由于數(shù)組的存放是連續(xù)的,
7、而單鏈表是非連續(xù)存放的,是動(dòng)態(tài)分配內(nèi)存空間,因此此系統(tǒng)采用單鏈表來完成。各個(gè)功能模塊的實(shí)現(xiàn)主要轉(zhuǎn)變到對(duì)單鏈表的遍歷,添加和刪除結(jié)點(diǎn)。 系統(tǒng)功能模塊的劃分:在主界面中包括“增加選手 修改選手 查詢選手信息 排序 保存信息 讀取信息 退出”等全部的功能,之所以設(shè)計(jì)這么一個(gè)主界面,一是因?yàn)槟苁褂脩魧?duì)程序操作的流程更加清楚簡(jiǎn)明,二是保證了用戶同時(shí)只能對(duì)一個(gè)文件進(jìn)行操作的系統(tǒng)要求,保證了系統(tǒng)不會(huì)發(fā)生打開文件紊亂或者出現(xiàn)致命錯(cuò)誤。 功能模板的劃分 顯示菜單功能模板 1……增加選手功能 2……修改選手功能 3……查詢選手信息 4……排序功能 5……保存信息 6……讀取信息 7……退出
8、 第三章 數(shù)據(jù)模型 類的設(shè)計(jì) 定義參賽選手competitor類,包含成員變量:姓名name,編號(hào)num,短跑、跳高、跳遠(yuǎn)成績(jī)x,y,z。 class competitor //選手 public: competitor *next; public: string name; //姓名 long num; //編號(hào) int x,y,z; //短跑,跳高,跳遠(yuǎn) 成員函數(shù): void sadd();
9、 //添加 void samend(); //修改 void ssearch(); //查詢 void staxis(); //排序 void ssave(); //保存 void sload(); //讀取 void pxh(); void psx(); void pyw(); void pyy(); 第四章 設(shè)計(jì)流程圖 開始
10、
讀入文件中的數(shù)據(jù)并輸出菜單及提示信息
輸入選擇
選擇操作
子程序
保存并退出
圖4.1 流程圖
第五章 程序代碼
#include
11、d;
class competitor
{
public:
competitor *next;
public:
string name; //姓名
long num; //編號(hào)
float x,y,z; //短跑,跳高,跳遠(yuǎn)
void play(){cout< 12、snum,float sx,float sy,float sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};
class cla
{
public:
cla() //構(gòu)造函數(shù)
{
comp=0;
sload();
}
~cla() //析構(gòu)函數(shù)
{
competitor *p;
p=comp;
while(p)
{
p=p-> 13、next;
delete comp;
comp=p;
}
comp=0;
}
void sadd(); //添加
void samend(); //修改
void ssearch(); //查詢
void staxis(); //排序
void ssave(); //保存
void sload(); 14、 //讀取
void pxh();
void psx();
void pyw();
void pyy();
private:
competitor *comp; //頭接點(diǎn)
};
void cla::sadd() //添加
{
competitor *q;
string name1;
long num1;
float x1,y1,z1;
system("cls");
cout<<"\n **增加的選手* 15、* \n"< 16、 }
while(t->next)
{
if(t->num==num1)
{
cout<<"編號(hào)已存在,請(qǐng)重新輸入"< 17、num1;
cout<<"\n** 修改選手信息 **\n";
cout<<"輸入要修改選手的編號(hào)";
cin>>num1; //查找要修改的結(jié)點(diǎn)
competitor *p1,*p2;
p1=comp;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!=NULL)
{
cout<<"編號(hào)是"<< 18、num1<<"的選手的信息:"< 19、<"未找到!\n";
}
void cla::ssearch() //查詢
{
system("cls");
cout<<"\n** 查詢選手信息 **\n"< 20、long num1;
cout<<"要查詢的編號(hào)"< 21、 22、name1; //查找要查詢的結(jié)點(diǎn)
competitor *p1,*p2;
p1=comp;
while(p1)
{
if(p1->name==name1)
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!=NULL)
{
cout< 23、<" 短跑:"< 24、 *p1,*p2;
int n;
p1=comp;
n=1;
while(p1->next)
{n++; p1=p1->next;}
cout<<"共有"< 25、;
p2->next=p1; //頭結(jié)點(diǎn)交換
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 26、->next->next=p1;
p1=p2->next; //交換
}
}
}
p1=comp;
do
{
p1->play();
p1=p1->next;
}while(p1);
}
void cla::psx() //按短跑成績(jī)排序
{
competitor *p1,*p2;
int n;
p1=comp;
n=1; 27、
while(p1->next)
{n++; p1=p1->next;}
cout<<"共有"< 28、 //頭結(jié)點(diǎn)交換
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; 29、 //交換
}
}
}
p1=comp;
do
{
p1->play();
p1=p1->next;
}while(p1);
}
void cla::pyw() //按跳高成績(jī)排序
{
competitor *p1,*p2;
int n;
p1=comp;
n=1;
while(p1->next)
{n++; p1=p1->next;}
cou 30、t<<"共有"< 31、=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 32、=comp;
do
{
p1->play();
p1=p1->next;
}while(p1);
}
void cla::pyy() //按跳遠(yuǎn)成績(jī)排序
{
competitor *p1,*p2;
int n;
p1=comp;
n=1;
while(p1->next)
{n++; p1=p1->next;}
cout<<"共有"< 33、
for(i=1;i 34、 //中間的交換
{
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;
do
{
p1->play();
p1=p1->ne 35、xt;
}while(p1);
}
void cla::staxis() //排序
{
system("cls");
char c;
cout<<"請(qǐng)選擇以何種方式排序:"< 36、cout<<"請(qǐng)選擇(1-5)"< 37、(將覆蓋原文件),是否繼續(xù)?[Y/N]:"; cin>>c;
if(toupper(c)!=Y) return;
ofstream tfile("date.txt",ios_base::binary);
competitor *p=comp;
while(p) // 寫入文件
{
tfile< 38、next;
}
tfile.close();
cout<<"保存完畢..."< 39、ng num1;
float x1,y1,z1;
tfile>>name1>>num1>>x1>>y1>>z1;
while(tfile.good())
{ //創(chuàng)建選手接點(diǎn)
competitor *s;
s=comp;
s=new competitor(name1,num1,x1,y1,z1);
s->next=0;
if(comp) 40、 //若已經(jīng)存在結(jié)點(diǎn)
{
competitor *p2;
p2=comp;
while(p2->next) //查找尾結(jié)點(diǎn)
{
p2=p2->next;
}
p2->next=s; //連接
}
else //若不存在結(jié)點(diǎn)(表空)
{ comp=s; 41、 //連接 }
tfile>>name1>>num1>>x1>>y1>>z1;
}
tfile.close();
cout<<"\n歡迎使用選手成績(jī)管理系統(tǒng)\n";
}
void main()
{
char c; cla a;
do
{
cout<<"*************************************\n";
cout<<" 1……增加選手 \n";
cout<<" 2……修改選手 \n";
cou 42、t<<" 3……查詢選手信息 \n";
cout<<" 4……排序 \n";
cout<<" 5……保存信息 \n";
cout<<" 6……讀取信息 \n";
cout<<" 7……退出 \n";
cout<<"*************************************\n";
cout<<"請(qǐng)選擇(1-7):";
cin>>c;
switch(c)
{
case 1: a.sadd();break;
case 2: a.samend();break;
case 3: a.sse 43、arch();break;
case 4: a.staxis();break;
case 5: a.ssave();break;
case 6: a.sload();break;
}
}while(c!=7);
}
第六章 運(yùn)行結(jié)果
圖6.1 運(yùn)行結(jié)果主界面
第七章 設(shè)計(jì)總結(jié)
通過一個(gè)學(xué)期的C++學(xué)習(xí),我對(duì)C++語(yǔ)言有了基本認(rèn)識(shí),但是對(duì)有些知識(shí)懂得還不夠透徹。通過這次為期兩周的課程設(shè)計(jì),我學(xué)到了更多關(guān)于《C++面向?qū)ο蟮某绦蛟O(shè)計(jì)》的內(nèi)容。這個(gè)課題用到了C+ 44、+語(yǔ)言程序設(shè)計(jì)的知識(shí),通過這次課程設(shè)計(jì),使我對(duì)C++設(shè)計(jì)有了更深的了解,對(duì)課本上的知識(shí)有了進(jìn)一步的掌握,同時(shí)也使我對(duì)自己的專業(yè)知識(shí)有進(jìn)一步的鞏固加深。在寫程序時(shí),要注意類與對(duì)象、構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)等相結(jié)合,尤其是在學(xué)好程序后,要運(yùn)行,有不足之處及時(shí)完善。把理論知識(shí)與實(shí)踐相結(jié)合,才能將所學(xué)知識(shí)運(yùn)用的恰到好處。
參考文獻(xiàn)
[1]吳敏,楊國(guó)林. C++面向?qū)ο蟪绦蛟O(shè)計(jì)[M].呼和浩特:內(nèi)蒙古大學(xué)出版社.2006.
[2]鄭莉.C++語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社.2003.
[3]劉開軍.C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社.2004.
21
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版五上《小數(shù)乘整數(shù)》ppt課件
- 蘇教版一年級(jí)數(shù)學(xué)上冊(cè)《數(shù)一數(shù)》ppt課件
- 江南1優(yōu)秀課件
- 提高印字質(zhì)量課件
- 服務(wù)分銷策略課件
- 數(shù)學(xué)必修蘇教版互斥事件課件3(共32張PPT)
- 第三章要素費(fèi)用的核算PPT優(yōu)秀資料
- 元素的質(zhì)量分?jǐn)?shù)計(jì)算答案
- 圖形的欣賞與設(shè)計(jì)
- 八年級(jí)下期Uuit10SectionA課件
- 部編七年級(jí)語(yǔ)文下冊(cè)4孫權(quán)勸學(xué)課件
- 部編一年級(jí)語(yǔ)文下冊(cè)端午粽課件
- 超市防損的技能課件
- 表彰班會(huì)教學(xué)課件教學(xué)課件
- 第17講中考數(shù)學(xué)專題復(fù)習(xí) 函數(shù)的綜合應(yīng)用中考數(shù)學(xué)專題復(fù)習(xí)課件課件各版通用