运动会分数统计程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运动会分数统计系统
设计报告
院系:
专业:
班级:
姓名:
学号:
日期:2012年5月27日星期日
运动会分数统计系统
一、实验要求:
某校要召开运动会,现要求开发一个学校运动会成绩统计系统,参加运动会有n个系,比赛分成m个男子项目,和w个女子项目。

系信息(系编号为D01……n,系名称Dname),
运动员信息:(编号,姓名,性别,所属系,成绩(初值为0))
项目信息:(项目编号,项目名称)
功能要求:
(1)生成报名表:
(2)维护报名表:增加、删除、修改,(报名人数3
人以下(含3人)取消该项目的比赛)
(3)登记各项比赛成绩
(4)根据预赛成绩产生预(决)赛名单
(5)计分规则:
报名人数在16人以上(含16人)取取前八名,前八名的积分分别为:8、7、6、5、4、3、2、1;
报名人数在8人以上(含8人)16人以下,取前五名,前五名的积分分别为:7、5、3、2、1;
报名人数在8人以下,取前三名,前三名的积分分别为:5、3、2;
(6)统计
●能统计各系总分,
●按系系总分、男女团体总分排序输出;
按项目编号查询取得前三或前五或前八名的运动员情况。

二、设计过程:
数据结构:名称编号男女团体
运动项目:项目编号,名称,男子项目,女子项目,
前三名,前五名,第一名系编号,第二名系编号,第三名系编号,第四名系编号,第五名系编号。

院系类
class Dname { //院系
private:
char name[20];
int number;
int boy;
int girl;
public:
Dname *next;
void Dname_add();
void Dname_output(Dname *p);
int Dname_isexist(int a);
void Dname_show(int a);
void Dname_search(int a);
void Dname_addmark(int a,int b,int c);
void Dname_order(Dname *temp,int type);
};
运动项目类;
class Sport //运动项目
{
private:
char name[20];
int isboy; //0为女项目?,1为男项目
int is3; //0为取前五名,1为取前五名
int number; //项目编号
int first; //
int second; //
int third; //
int fourth; //
int fifth; //
public:
Sport *next;
int Sport_isexist(int a);
void Sport_add();
void Sport_output(Sport *p);
void Sport_search(int a);
};
三、程序编码:#include<iostream> #include<iomanip>
#include<string>
using namespace std;
class Dname { //院系
private:
char name[20];
int number;
int boy;
int girl;
public:
Dname *next;
void Dname_add();
void Dname_output(Dname *p);
int Dname_isexist(int a);
void Dname_show(int a);
void Dname_search(int a);
void Dname_addmark(int a,int b,int c);
void Dname_order(Dname *temp,int type);
};
class Sport //运?动¡¥项?目?
{
private:
char name[20];
int isboy; //0为女项目1为男项目?
int is3; //为取前五名为取前五名?
int number; //项?目?编À¨¤号?
int first; //
int second; //
int third; //
int fourth; //
int fifth; //
public:
Sport *next;
int Sport_isexist(int a);
void Sport_add();
void Sport_output(Sport *p);
void Sport_search(int a);
};
Dname* head1;
Sport* head2;
void Dname::Dname_add()
{
Dname* p;
int mark=0;
p=new Dname;
cout<<"请输入院系的名称:";
cin>>p->name;
int c;
while(mark!=1)
{
cout<<"请输入院系编号:";
cin>>c;
p->number=c;
mark=1;
p->boy=0;
p->girl=0;
p->next=head1->next;
head1->next=p;
cout<<"成功添加了一个院系"<<endl;
cout<<"是否还要添加院¦ y/n)"<<endl;
char input,y,n;
cin>>input;
switch(input)
{
case'y':
mark=0;
Dname_add();
case'n':
mark=1;
return;
}
}
delete p;
}
void Dname::Dname_output(Dname* p){ //输出系cout<<"当前院系(名称) 编号男团总分女团总分总分t\n";
p=head1;
p=p->next;
while(p){
cout<<p->name<<"\t\t"<<p->number<<"\t"<<p->boy<<"\t"<<p->girl<<" \t "<<(p->girl+p->boy)<<endl;
p=p->next;
}
}
int Dname::Dname_isexist(int a)
{
int b=0;
Dname* p;
p=head1;
p=p->next;
while(p)
{
if(p->number==a)
{
return 1;
}
p=p->next;
}
void Dname::Dname_show(int a)//输出所有院系
{
Dname *p;
p=head1;
p=p->next;
while(p)
{
if(p->number==a)
{
cout<<p->name<<"?"<<endl;
return;
}
p=p->next;
}
cout<<"无T";
}
void Dname::Dname_search(int a)
{
Dname* p;
p=head1;
p=p->next;
while(p)
{
if(p->number==a)
{
cout<<"院系名称:"<<p->name<<" "<<"男子团体总分:"<<p->boy<<" "
<<"女子团体总分:"<<p->girl<<" "<<"总分:"<<(p->boy+p->girl)<<" ";
return;
}
p=p->next;
}
cout<<"无T此ä?编À¨¤号?:"<<endl;
}
void Dname::Dname_addmark(int a,int b,int c)女?
{
Dname* p;
p=head1;
p=p->next;
if(p->number==b)
{
if(c==1)
{
p->boy=p->boy+a;
}
else
{
p->girl=p->girl+a;
}
}
p=p->next;
}
}
void Dname::Dname_order(Dname *temp,int type) {
Dname* q,*small;
Dname* temp1;
temp1=new Dname;
temp1->next=NULL;
while(q&&small)
{
switch(type)
{
case 0: //按总分排序
for(q=head1;q=q->next;q!=NULL)
for(small=head1;small=small->next;small!=NULL) {
if( (q->boy+q->girl)<(small->boy+small->girl) ) {
temp1->girl=q->girl;
q->girl=small->girl;
small->girl=temp1->girl;
temp1->boy=q->boy;
q->boy=small->boy;
small->boy=temp1->boy;
strcpy(temp1->name,q->name);
strcpy(q->name,small->name);
strcpy(small->name,temp1->name);
temp1->number=q->number;
q->number=small->number;
small->number=temp1->number; //
}
}
break;
case 1: //按男团体排序
for(q=head1;q=q->next;q!=NULL)
for(small=head1;small=small->next;small!=NULL) {
if(q->boy<small->boy)
{
temp1->girl=q->girl;
q->girl=small->girl;
small->girl=temp1->girl;
temp1->boy=q->boy;
q->boy=small->boy;
small->boy=temp1->boy;
strcpy(temp1->name,q->name);
strcpy(q->name,small->name);
strcpy(small->name,temp1->name);
temp1->number=q->number;
q->number=small->number;
small->number=temp1->number; //
}
}
break;
case 2:
for(q=head1;q=q->next;q!=NULL)
for(small=head1;small=small->next;small!=NULL) {
if(q->girl<small->girl)
{
temp1->girl=q->girl;
q->girl=small->girl;
small->girl=temp1->girl;
temp1->boy=q->boy;
q->boy=small->boy;
small->boy=temp1->boy;
strcpy(temp1->name,q->name);
strcpy(q->name,small->name);
strcpy(small->name,temp1->name);
temp1->number=q->number;
q->number=small->number;
small->number=temp1->number; //
}
}
break;
case 3:
for(q=head1;q=q->next;q!=NULL)
for(small=head1;small=small->next;small!=NULL) {
if(q->number<small->number)
{
temp1->girl=q->girl;
q->girl=small->girl;
small->girl=temp1->girl;
temp1->boy=q->boy;
q->boy=small->boy;
small->boy=temp1->boy;
strcpy(temp1->name,q->name);
strcpy(q->name,small->name);
strcpy(small->name,temp1->name);
temp1->number=q->number;
q->number=small->number;
small->number=temp1->number; //
}
}
break;
default:
cout<<"error"<<endl;
break;
}
}
}
int Sport::Sport_isexist(int a)
{
int b=0;
Sport* p;
p=head2;
while(p)
{
if(p->number==a)
{
return 1;
}
p=p->next;
}
return 0;
void Sport::Sport_add()
{
// Dname sh;
int mark=0;
p=new Sport;
cout<<"请?输º?入¨?项?目?名?称?:";
cin>>p->name;
int c;
while(mark!=1)
{
cout<<"请?输º?入¨?项?目?编À¨¤号?:";
cin>>c;
if(Sport_isexist(c))
{
cout<<"该?编À¨¤号?已°?存ä?在¨²!";
}
else
{
mark=1;
p->number=c;
}
}
mark=0;
while(mark!=1)
{
cout<<"请?输º?入¨?项?目?类¤¨¤型¨ª(0为a女?子Á¨®项?目?,1为a男D子Á¨®项?目?):"; cin>>c;
// p->isboy=(int)(c-'0');//去¨£¤掉Ì?了¢?字Á?符¤?转Áa换?成¨¦数ºy字Á?
mark=1;
p->isboy=c;
}
mark=0;
while(mark!=1)
{
cout<<"请输入项目名称情况(0为取前3名,1为取前5名):";
cin>>c;
// p->is3=(int)(c-'0');
mark=1;
p->is3=c;
}
mark=0;
Dname sh;
while(mark!=1)
{
cout<<"请输入第一名院系的编号:";
if(!sh.Dname_isexist(c))
{
cout<<"该院系不存在请先添加!"; }
else
{
mark=1;
p->first=c;
if(p->is3=='0')
sh.Dname_addmark(5,c,p->isboy);
else
sh.Dname_addmark(7,c,p->isboy); }
}
mark=0;
while(mark!=1)
{
cout<<"请输入第二名院系的编号?:"; cin>>c;
if(!sh.Dname_isexist(c))
{
cout<<"该院系不存在请先添加!"; }
else
{
mark=1;
p->second=c;
if(p->is3=='0')
sh.Dname_addmark(3,c,p->isboy);
else
sh.Dname_addmark(5,c,p->isboy); }
}
mark=0;
while(mark!=1)
{
cout<<"请输入第三名院系的编号:"; cin>>c;
if(!sh.Dname_isexist(c))
{
cout<<"该院系不存在请先添加";
}
else
{
mark=1;
p->third=c;
if(p->is3=='0')
sh.Dname_addmark(2,c,p->isboy);
else
sh.Dname_addmark(3,c,p->isboy); }
}
mark=0;
if(p->is3=='1')
{
while(mark!=1)
{
cout<<"请输入第四名院系的编号:"; cin>>c;
if(!sh.Dname_isexist(c))
{
cout<<"该院系不存在请先添加"; }
else
{
mark=1;
p->fourth=c;
sh.Dname_addmark(2,c,p->isboy); }
}
mark=0;
while(mark!=1)
{
cout<<"请输入第五名院系的编号:";
if(!sh.Dname_isexist(c))
{
cout<<"该院系不存在请先添加!"; }
else
{
mark=1;
p->fifth=c;
sh.Dname_addmark(1,c,p->isboy); }
}
}
else
{
p->fourth='0';
p->fifth='0';
}
p->next=head2->next;
head2->next=p;
cout<<"成功添加了一个运动项目"<<endl;
}
void Sport::Sport_output(Sport *p) //输º?出?项?目?的Ì?情¨¦况? {
p=head2;
p=p->next;
cout<<"当前项目名称"<<"\t"<<"编号?"<<""<<"B/G"<<""<<"3/5"<<" "<<"第一名"<<"" <<"第二名"<<" "<<"第三名"<<" "<<"第四名"<<" "<<"第五名"<<" "<<endl;
Dname sh;
while(p)
{
cout<<p->name<<"\t"<<" "<<p->number<<" " <<p->isboy<<" "<<p->is3<<" "
<<" ";
sh.Dname_show(p->first);
sh.Dname_show(p->second);
sh.Dname_show(p->third);
sh.Dname_show(p->fourth);
sh.Dname_show(p->fifth);
p=p->next;
cout<<"\n";
}
cout<<endl;
}
void Sport::Sport_search(int a) //搜?索¡Â项?目?
{
Sport *p;
Dname sh;
p=head2;
p=p->next;
while(p)
{
if(p->number==a)
{
cout<<"项目名:"<<p->name<<endl<<"项目类型:";
if(p->isboy==1)
{
cout<<"男子项目";
}
else
{
cout<<"女子项目";
}
cout<<endl<<"第一名:";
sh.Dname_show(p->first);
cout<<endl<<"第二名:";
sh.Dname_show(p->second);
cout<<endl<<"第三名:";
sh.Dname_show(p->third);
cout<<endl<<"第四名:";
sh.Dname_show(p->fourth);
cout<<endl<<"第五?名?:";
sh.Dname_show(p->fifth);
return;
}
p=p->next;
}
cout<<"无此编号";
}
void main(){ //运动会程序主函数
system("color C"); //改变背景前景色
head1=new Dname;
head1->next=NULL;
head2=new Sport;
head2->next=NULL;
//Dname_add();
Dname sh;
Sport sp;
Dname* p1;
Sport* p2;
p1=head1;
p1=p1->next;
p2=head2;
p2=p2->next;
int choose;
char temp;
int a=1;
while(a!=0)
{
cout<<" "<<endl;
cout<<" 欢迎使用运动会分数统计系统"<<endl;
cout<<" ----------------------------------------------------------"<<endl; cout<<" "<<endl;
cout<<" 1.输入院系; 2.输入运动项目 "<<endl; cout<<" 3.按院系编号输出总分; 4.按院系总分排序; "<<endl; cout<<" 5.按男团体总分排序; 6.按女团体总分排序; "<<endl; cout<<" 7.按院系编号查询; 8.按项目编号查询; "<<endl; cout<<" 0.退出 "<<endl; cout<<" 注输入运动项目之前请输入院系 "<<endl;
cout<<" ----------------------------------------------------------"<<endl; cout<<" -------请选择(0-8):------ "<<endl; cin>>choose;
switch(choose)
{
case 1:
sh.Dname_add();
break;
case 2:
sp.Sport_output(p2);
sh.Dname_output(p1);
sp.Sport_add();
break;
case 3:
sh.Dname_order(p1,3);
sh.Dname_output(p1);
break;
case 4:
sh.Dname_order(p1,0);
sh.Dname_output(p1);
break;
case 5:
sh.Dname_order(p1,1);
sh.Dname_output(p1);
break;
case 6:
sh.Dname_order(p1,2);
sh.Dname_output(p1);
break;
case 7:
cout<<"请输入院系编号:";
cin>>temp;
sh.Dname_search(temp);
break;
case 8:
cout<<"请输入项目编号:";
cin>>temp;
sp.Sport_search(temp);
break;
case 0:
a=0;
break;
default:
cout<<"操作非法\n";
}
}
system("exit");
}
四、程序调试与测试:调试:
测试:
五、心得体会:
通过本次课程设计的实践,锻炼程序设计的能力以及用C++解决实际问题的能力,为以后后续课程的学习奠定了基础。

增强了我们编程的能力,让我们熟练了编程的过程。

六、程序功能说明
该程序用于运动会上,涉及到比赛项目成绩的录入,某个院系在某个项目中获得成绩的查询,某个院系在某个运动项目中获得的成绩的修改,某个院系在某个运动项目中获得的成绩的删除,以及某个院系所有获得成绩的得分报表以及团体成绩的得分报表。

其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;。

相关文档
最新文档