C語言課程設(shè)計報告 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng)
《C語言課程設(shè)計報告 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計報告 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng)(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 學(xué)校:東北大學(xué)秦皇島分校 班級:50809班 姓名:石行 學(xué)號:5080906 C語言課程設(shè)計報告 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng) 一.需求分析 1問題描述 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng) 參加運(yùn)動會有n個系,系編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20) 2.基本要求: (1). 運(yùn)動員檢錄; (2).運(yùn)動員檢錄, (3).運(yùn)動員成績排序; (4). 運(yùn)動員評獎
2、 3.測試數(shù)據(jù) 《1》輸入:1進(jìn)入添加系的界面,根據(jù)提示,再輸入:汽車系。再輸入:8,成功添加了一個系。再輸入:2進(jìn)入運(yùn)動項目添加界面,根據(jù)提示,再輸入:跳高;1;0;1;2;3。之后輸入0。再次進(jìn)入系統(tǒng)界面。 《2》輸入:3查看輸出結(jié)果。 《3》:輸入:4查看輸出結(jié)果。 《4》:輸入:5查看輸出結(jié)果。 《5》:輸入:6查看輸出結(jié)果。 《6》:輸入:7根據(jù)提示輸入項目編號:2。查看輸出結(jié)果。 《7》:輸入:8根據(jù)提示輸入系編號:3。查看輸出結(jié)果。 二、概要設(shè)計 1.數(shù)據(jù)結(jié)構(gòu) <1>系:名稱,編號,男子團(tuán)體總分,女子固體總分。 <2>運(yùn)動項目: 項目編號,名稱,男子項目,
3、女子項目,前三名,前五名,第一名系的編號,第二名系的編號,第三名系的編號,第四名系的編號,第五名系的編號。 2.程序模塊及之間的調(diào)用關(guān)系 三、詳細(xì)設(shè)計 1、數(shù)據(jù)類型定義 (1)系的定義: typedef struct Department //系的結(jié)構(gòu) { char name[20]; //系的名稱 int number; //系的編號 int boy; //男子團(tuán)體總分 int girl;
4、 //女子團(tuán)體總分 Department *next; }Department; (2)運(yùn)動項目定義: typedef struct Sport //運(yùn)動項目結(jié)構(gòu) { char name[20]; //運(yùn)動項目名稱 int isboy; //0為女項目,1為男項目 int is3; //0為取前五名,1為取前五名 int number; //項目編號
5、 int first; //第一名系的編號 int second; //第二名系的編號 int third; //第三名系的編號 int fourth; //第四名系的編號 int fifth; //第五名系的編號 Sport *next; }Sport;、 2、函數(shù)之間的調(diào)用關(guān)系 (1) 系調(diào)用圖
6、 department_add department_Order <1>Department department_search department_addmark department_show department_isexist department_output department_read
7、 department_write department_getlong sport_isexist sport_add sport_getlong sport_write <2>Sport sport_read sport_output sport_search 3、算法設(shè)計
8、 主要算法的設(shè)計思想: 本程序主要是使用鏈表來實(shí)現(xiàn)操作。一個運(yùn)動會包括運(yùn)動項目和參加運(yùn)動會的成員。因此構(gòu)造兩個鏈表Department,Sport。為了操作的方便,并且能夠保存輸入數(shù)據(jù),所以通過文件操作來實(shí)現(xiàn)數(shù)據(jù)的寫和讀。每次添加新的數(shù)據(jù)后都要輸入0退出,數(shù)據(jù)才能保存。對于總分的排序使用了冒泡排序。為了使整個程序看起來更加友好,又添加了程序啟動畫面。 四、 調(diào)試分析 本程序相對來說比較容易看明白,其中涉及到的一些函數(shù)相對來說比較容易。通過調(diào)試,運(yùn)行,基本上達(dá)到了要求,但還存在一些缺點(diǎn)。如:不夠人性化等。 五、 測試結(jié)果 <1>多組數(shù)據(jù)
9、輸入與輸出: (1)輸入:3 輸出:系名 編號 男團(tuán)總分 女團(tuán)總分 總分 法律系 6 0 0 0 電子系 5 3 2 5 數(shù)學(xué)系 4 6 0 6 歷史系 3 9 7 16 中文系 2 15 11 26
10、 計算機(jī)系 1 21 11 32 旅游系 7 0 7 7 (2)輸入:4 輸出: 系名 編號 男團(tuán)總分 女團(tuán)總分 總分 法律系 6 0 0 0 電子系 5 3 2 5 數(shù)學(xué)系 4 6 0 6 旅游系 7 0
11、 7 7 歷史系 3 9 7 16 中文系 2 15 11 26 計算機(jī)系 1 21 11 32 (3)輸入:5 輸出:法律系 6 0 0 0 電子系 5 3 2 5 數(shù)學(xué)系 4 6 0
12、 6 旅游系 7 0 7 7 歷史系 3 9 7 16 中文系 2 15 11 26 計算機(jī)系 1 21 11 32 (4)輸入:6 輸出:法律系 6 0 0 0 電子系 5 3 2
13、 5 數(shù)學(xué)系 4 6 0 6 旅游系 7 0 7 7 歷史系 3 9 7 16 中文系 2 15 11 26 計算機(jī)系 1 21 11 32 (5)輸入:7 輸出:請輸入項目編號: 輸入:1回車
14、 輸出: 項目名:100m 項目類型:女子項目 第一名:計算機(jī)系 第二名:中文系 第三名:法律系 第四名:無 第五名:無 (6)輸入:8 輸出:請輸入系的編號: 再輸入2 則輸出: 系名:中文系 男子團(tuán)體總分:3 女子團(tuán)體部分:10 總分:13
15、 (7)輸入:0 退出 六、 用戶手冊 1、運(yùn)行環(huán)境 Windows,VC++6.0 2、用戶界面 4、操作過程 (1)用戶進(jìn)入程序啟動界面,等load完成后進(jìn)入主菜單.主菜單有以下9個選項 1.輸入系別 2.輸入運(yùn)動項目 3.按系別編號輸出總分 4.按總分排序 5.按男團(tuán)體總分排序 6.按女團(tuán)體總分排序 7.按項目編號查詢 8.按系別編號查詢 0.退出 (2)輸入0~8中的一個數(shù) (3)
16、輸入1,進(jìn)行添加系操作,分別輸入系的名稱和編號 (4)輸入2,進(jìn)行添加運(yùn)動項目操作,分別輸入項目名稱,編號,項目類型,名次選 取,排名情況 (5)輸入0,則退出系統(tǒng),并且保存輸入的信息.每次添加完都要輸入0退出系統(tǒng) 才有效 (6)輸入3,輸出按系編號總分排名. (7)輸入4,輸出按總分排名 (8)輸入5,輸出按男團(tuán)體總分排序 (9)輸入6,輸出按女團(tuán)體總分排序 (10)輸入7,進(jìn)入按項目編號查詢界面.輸入要查詢的項目編號 (11)輸入8,進(jìn)入按系別編號查詢界面,輸入要查詢的系的編號 七、
17、 參考文獻(xiàn)
【1】《C++程序設(shè)計》作者:鄭莉,董淵,張瑞豐 出版社:清華大學(xué)出版社 時間:2003/12
【2】《數(shù)據(jù)結(jié)構(gòu)》作者:嚴(yán)蔚敏,吳偉民 出版社:清華大學(xué)出版社 時間:2006/10
【3】《數(shù)據(jù)結(jié)構(gòu)教程上機(jī)實(shí)驗(yàn)指導(dǎo)》作者:嚴(yán)蔚敏,吳偉民,米寧 出版社:清華大學(xué)出版
社 時間:2006/5
【4】 網(wǎng)址:
八、 附錄
1、源程序
#include
18、nclude
19、項目結(jié)構(gòu) { char name[20]; //運(yùn)動項目名稱 int isboy; //0為女項目,1為男項目 int is3; //0為取前五名,1為取前五名 int number; //項目編號 int first; //第一名系的編號 int second; //第二名系的編號 int third; //第三名系的編號 int fourth;
20、 //第四名系的編號 int fifth; //第五名系的編號 Sport *next; }Sport; int getint(int a) //字符轉(zhuǎn)換成數(shù)字 { return (int)(a-'0'); } Department * head1; //-------啟動畫面函數(shù)---------- void Cover() { system("color 1b"); char line[]={"程序讀取中 請耐心等待..."}; char bar[]={"...."}; int i,
21、j,k=0,x=0,y=0;
for(i=0;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j++) //改變行坐標(biāo)
cout<
22、ut<<"○";
if(k==4)
i++;
cout< 23、t< 24、 k=0;
}
}
void department_add() //添加系
{
Department * p;
int mark=0;
p=new Department;
cout<<"請輸入系的名稱:";
cin>>p->name;
char c;
while (mark!=1)
{
cout<<"請輸入系的編號:";
cin>>c;
if (!isdigit(c))//是否為數(shù)字
{
25、 cout<<"數(shù)據(jù)非法"< 26、;
while (first->next!=NULL)
{
i++;
first=first->next;
}
return i;
}
void department_write()//將系數(shù)據(jù)寫入文本
{
Department * p;
p=head1;
p=p->next;
ofstream outfile("Department.txt",ios::out);
outfile< 27、 (p!=NULL)
{
outfile< 28、hile(i>0)
{
Department * p;
p=new Department;
infile>>p->name>>p->number>>p->boy>>p->girl;
p->next=head1->next;
head1->next=p;
i--;
}
cout<<"Department Data Read Success!"< 29、 cout<<" 系名 編號 男團(tuán)總分 女團(tuán)總分 總分\t\n";
while(p)
{
cout< 30、p=p->next;
while(p)
{
if(p->number==a)
{
return 1;
}
p=p->next;
}
return 0;
}
void department_show(int a)//輸出所有系
{
Department *p;
p=head1;
p=p->next;
while(p)
{
if(p->number==a)
{
31、 cout< 32、"男子團(tuán)體總分:"< 33、 {
if(p->number==b)
{
if(c=='1')
{
p->boy=p->boy+a;
}
else
{
p->girl=p->girl+a;
}
}
p=p->next;
}
}
void department_order(Department *temp,int ty 34、pe) //type=0按總分,type=1按男總分,type=2按女總分,
{
Department *p,*q,*small,*temp1;
temp1=new Department;
temp1->next=NULL;
p=temp;
while(p)
{
small=p;
q=p->next;
while(q)
{
switch(type)
{
case 0:
35、 if((q->boy+q->girl)<(small->girl+small->boy))
{
small=q;
}
break;
case 1:
if(q->boy 36、eak;
case 2:
if(q->girl 37、p1->boy=p->boy;
p->boy=small->boy;
small->boy=temp1->boy;
temp1->girl=p->girl;
p->girl=small->girl;
small->girl=temp1->girl;
strcpy(temp1->name,p->name);
strcpy(p->name,small->n 38、ame);
strcpy(small->name,temp1->name);
temp1->number=p->number;
p->number=small->number;
small->number=temp1->number; //將系的名字互換
}
q=q->next;
}
p=p->next;
}
}
Sport * head2;
i 39、nt sport_isexist(int a) //檢查運(yùn)動項目(編號)是否已經(jīng)存在
{
int b=0;
Sport *p;
p=head2;
p=p->next;
while(p)
{
if(p->number==a)
{
return 1;
}
p=p->next;
}
return 0;
}
void sport_add() //添加項目
{
Sport * p;
40、 int mark=0;
p=new Sport;
cout<<"請輸入項目名稱:";
cin>>p->name;
char c;
while (mark!=1)
{
cout<<"請輸入項目編號:";
cin>>c;
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 41、 {
cout<<"該編號已存在"< 42、>isboy=(int)(c-'0');//字符轉(zhuǎn)換成數(shù)字
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 43、 mark=0;
while (mark!=1)
{
cout<<"請輸入項目名次情況(0為取前3名,1為取前5名):";
cin>>c;
p->is3=(int)(c-'0');
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 44、
else
{
mark=1;
p->is3=c;
}
}
mark=0;
while (mark!=1)
{
cout<<"請輸入第一名的系的編號:";
cin>>c;
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 45、!department_isexist(c))
{
cout<<"該系不存在,請先添加";
}
else
{
mark=1;
p->first=c;
if(p->is3=='0')
department_addmark(5,c,p->isboy);
else
46、 department_addmark(7,c,p->isboy);
}
}
}
mark=0;
while (mark!=1)
{
cout<<"請輸入第二名的系的編號:";
cin>>c;
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 47、ent_isexist(c))
{
cout<<"該系不存在,請先添加";
}
else
{
mark=1;
p->second=c;
if(p->is3=='0')
department_addmark(3,c,p->isboy);
else
48、 department_addmark(5,c,p->isboy);
}
}
}
mark=0;
while (mark!=1)
{
cout<<"請輸入第三名的系的編號:";
cin>>c;
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 49、(c))
{
cout<<"該系不存在,請先添加";
}
else
{
mark=1;
p->third=c;
if(p->is3=='0')
department_addmark(2,c,p->isboy);
else
department 50、_addmark(3,c,p->isboy);
}
}
}
mark=0;
if(p->is3=='1')
{
while (mark!=1)
{
cout<<"請輸入第四名的系的編號:";
cin>>c;
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 51、 if(!department_isexist(c))
{
cout<<"該系不存在,請先添加";
}
else
{
mark=1;
p->fourth=c;
department_addmark(2,c,p->isboy);
}
}
}
mark=0;
wh 52、ile (mark!=1)
{
cout<<"請輸入第五名的系的編號:";
cin>>c;
if (!isdigit(c))
{
cout<<"數(shù)據(jù)非法"< 53、 else
{
mark=1;
p->fifth=c;
department_addmark(1,c,p->isboy);
}
}
}
}
else
{
p->fourth='0';
p->fifth='0';
}
p->next=head2->next;
head2->next=p;
cou 54、t<<"成功添加了一個運(yùn)動項目"< 55、;
p=p->next;
ofstream outfile("Sport.txt",ios::out);
outfile< 56、xt;
}
outfile.close();
cout<<"Write Success!"< 57、mber>>p->isboy>>p->is3>>p->first>>p->second>>p->third>>p->fourth>>p->fifth;
p->next=head2->next;
head2->next=p;
i--;
}
cout<<"Sport Data Read Success!"< 58、 "<<"B/G"<<" "<<" 3/5"<<" "<<" first"<<" "<<"second"<<" "<<"third"<<" "<<"fourth"<<" "<<"fifth"<<" "< 59、ent_show(p->first);
department_show(p->second);
department_show(p->third);
department_show(p->fourth);
department_show(p->fifth);
//printf("\n");
p=p->next;
cout<<"\n";
}
cout< 60、搜索項目
{
Sport *p;
p=head2;
p=p->next;
while(p)
{
if(p->number==a)
{
cout<<"項目名:"< 61、 cout<<"女子項目";
}
cout< 62、artment_show(p->fourth);
cout< 63、artment;
head1->next=NULL;
head2=new Sport;
head2->next=NULL;
//school_add();
sport_read();
department_read();
//sport_add();
Department * p1;
Sport * p2;
p1=head1;
p1=p1->next;
p2=head2;
p2=p2->next;
char choose;
char temp;
64、
//string ch=" ";
int a=1;
while(a!=0)
{
cout< 65、 *"< 66、 * *"<
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Storytime (2)
- 【四清導(dǎo)航】秋八年級數(shù)學(xué)上冊 3.3 一元一次不等式(第3課時)課件 (新版)浙教版
- 海淀區(qū)域P4P實(shí)操診斷課件
- 三年級記事作文指導(dǎo)
- 醫(yī)院內(nèi)感染的預(yù)防和控制
- 機(jī)械設(shè)計第十章習(xí)題
- 華泰汽車“全心服務(wù)_貼心關(guān)懷”管理知識分析方案
- Unit 11 Lesson 2 What's the matter 課件 1
- 創(chuàng)業(yè)大賽設(shè)計中財務(wù)分析方法與技巧
- 從現(xiàn)在開始課件 (4)(精品)
- 蛋白質(zhì)促降解與氨基酸代謝
- (精品)電視原理第1章1
- 術(shù)中病情觀察小講課
- 日系汽車研發(fā)質(zhì)量管控
- 6Sigma的管理理論(ppt 30頁)