C語言課程設計報告 運動會分數(shù)統(tǒng)計系統(tǒng)
《C語言課程設計報告 運動會分數(shù)統(tǒng)計系統(tǒng)》由會員分享,可在線閱讀,更多相關《C語言課程設計報告 運動會分數(shù)統(tǒng)計系統(tǒng)(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 學校:東北大學秦皇島分校 班級:50809班 姓名:石行 學號:5080906 C語言課程設計報告 運動會分數(shù)統(tǒng)計系統(tǒng) 一.需求分析 1問題描述 運動會分數(shù)統(tǒng)計系統(tǒng) 參加運動會有n個系,系編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(m<=20,n<=20) 2.基本要求: (1). 運動員檢錄; (2).運動員檢錄, (3).運動員成績排序; (4). 運動員評獎
2、 3.測試數(shù)據(jù) 《1》輸入:1進入添加系的界面,根據(jù)提示,再輸入:汽車系。再輸入:8,成功添加了一個系。再輸入:2進入運動項目添加界面,根據(jù)提示,再輸入:跳高;1;0;1;2;3。之后輸入0。再次進入系統(tǒng)界面。 《2》輸入:3查看輸出結(jié)果。 《3》:輸入:4查看輸出結(jié)果。 《4》:輸入:5查看輸出結(jié)果。 《5》:輸入:6查看輸出結(jié)果。 《6》:輸入:7根據(jù)提示輸入項目編號:2。查看輸出結(jié)果。 《7》:輸入:8根據(jù)提示輸入系編號:3。查看輸出結(jié)果。 二、概要設計 1.數(shù)據(jù)結(jié)構(gòu) <1>系:名稱,編號,男子團體總分,女子固體總分。 <2>運動項目: 項目編號,名稱,男子項目,
3、女子項目,前三名,前五名,第一名系的編號,第二名系的編號,第三名系的編號,第四名系的編號,第五名系的編號。 2.程序模塊及之間的調(diào)用關系 三、詳細設計 1、數(shù)據(jù)類型定義 (1)系的定義: typedef struct Department //系的結(jié)構(gòu) { char name[20]; //系的名稱 int number; //系的編號 int boy; //男子團體總分 int girl;
4、 //女子團體總分 Department *next; }Department; (2)運動項目定義: typedef struct Sport //運動項目結(jié)構(gòu) { char name[20]; //運動項目名稱 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)用關系 (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、算法設計
8、 主要算法的設計思想: 本程序主要是使用鏈表來實現(xiàn)操作。一個運動會包括運動項目和參加運動會的成員。因此構(gòu)造兩個鏈表Department,Sport。為了操作的方便,并且能夠保存輸入數(shù)據(jù),所以通過文件操作來實現(xiàn)數(shù)據(jù)的寫和讀。每次添加新的數(shù)據(jù)后都要輸入0退出,數(shù)據(jù)才能保存。對于總分的排序使用了冒泡排序。為了使整個程序看起來更加友好,又添加了程序啟動畫面。 四、 調(diào)試分析 本程序相對來說比較容易看明白,其中涉及到的一些函數(shù)相對來說比較容易。通過調(diào)試,運行,基本上達到了要求,但還存在一些缺點。如:不夠人性化等。 五、 測試結(jié)果 <1>多組數(shù)據(jù)
9、輸入與輸出: (1)輸入:3 輸出:系名 編號 男團總分 女團總分 總分 法律系 6 0 0 0 電子系 5 3 2 5 數(shù)學系 4 6 0 6 歷史系 3 9 7 16 中文系 2 15 11 26
10、 計算機系 1 21 11 32 旅游系 7 0 7 7 (2)輸入:4 輸出: 系名 編號 男團總分 女團總分 總分 法律系 6 0 0 0 電子系 5 3 2 5 數(shù)學系 4 6 0 6 旅游系 7 0
11、 7 7 歷史系 3 9 7 16 中文系 2 15 11 26 計算機系 1 21 11 32 (3)輸入:5 輸出:法律系 6 0 0 0 電子系 5 3 2 5 數(shù)學系 4 6 0
12、 6 旅游系 7 0 7 7 歷史系 3 9 7 16 中文系 2 15 11 26 計算機系 1 21 11 32 (4)輸入:6 輸出:法律系 6 0 0 0 電子系 5 3 2
13、 5 數(shù)學系 4 6 0 6 旅游系 7 0 7 7 歷史系 3 9 7 16 中文系 2 15 11 26 計算機系 1 21 11 32 (5)輸入:7 輸出:請輸入項目編號: 輸入:1回車
14、 輸出: 項目名:100m 項目類型:女子項目 第一名:計算機系 第二名:中文系 第三名:法律系 第四名:無 第五名:無 (6)輸入:8 輸出:請輸入系的編號: 再輸入2 則輸出: 系名:中文系 男子團體總分:3 女子團體部分:10 總分:13
15、 (7)輸入:0 退出 六、 用戶手冊 1、運行環(huán)境 Windows,VC++6.0 2、用戶界面 4、操作過程 (1)用戶進入程序啟動界面,等load完成后進入主菜單.主菜單有以下9個選項 1.輸入系別 2.輸入運動項目 3.按系別編號輸出總分 4.按總分排序 5.按男團體總分排序 6.按女團體總分排序 7.按項目編號查詢 8.按系別編號查詢 0.退出 (2)輸入0~8中的一個數(shù) (3)
16、輸入1,進行添加系操作,分別輸入系的名稱和編號 (4)輸入2,進行添加運動項目操作,分別輸入項目名稱,編號,項目類型,名次選 取,排名情況 (5)輸入0,則退出系統(tǒng),并且保存輸入的信息.每次添加完都要輸入0退出系統(tǒng) 才有效 (6)輸入3,輸出按系編號總分排名. (7)輸入4,輸出按總分排名 (8)輸入5,輸出按男團體總分排序 (9)輸入6,輸出按女團體總分排序 (10)輸入7,進入按項目編號查詢界面.輸入要查詢的項目編號 (11)輸入8,進入按系別編號查詢界面,輸入要查詢的系的編號 七、
17、 參考文獻
【1】《C++程序設計》作者:鄭莉,董淵,張瑞豐 出版社:清華大學出版社 時間:2003/12
【2】《數(shù)據(jù)結(jié)構(gòu)》作者:嚴蔚敏,吳偉民 出版社:清華大學出版社 時間:2006/10
【3】《數(shù)據(jù)結(jié)構(gòu)教程上機實驗指導》作者:嚴蔚敏,吳偉民,米寧 出版社:清華大學出版
社 時間:2006/5
【4】 網(wǎng)址:
八、 附錄
1、源程序
#include
18、nclude
19、項目結(jié)構(gòu) { char name[20]; //運動項目名稱 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++) //改變行坐標
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<<" 系名 編號 男團總分 女團總分 總分\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、"男子團體總分:"< 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) //檢查運動項目(編號)是否已經(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<<"成功添加了一個運動項目"< 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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。