运动会成绩统计__实验报告

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

实验说明

题目:运动会分数统计

一.需求分析:

1.在该程序中,参赛学校编号为1~n(n<=20)。比赛分成m(m<=30)个

男子项目和w(w<=20)个女子项目,分别编号为1~m和m+1~m+w,

姓名长度不超过20个字符;

2.输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名

次。

3.对于项目编号为奇数的取前五名,得分顺序为7,5,3,2,1;为偶数

的取前三名,得分顺序为5,3,2。

4.程序执行的命令包括:

1)构造线性表的存储结构。

2)根据每个学生的名次确定相应的得分。

3)输出各个学校的成绩单和男子团体总分,女子团体总分和团体总分。二.概要设计

1.该程序包含两个结构体分别为:

结构体(1)运动员信息

结构体(2)学校信息

2.本程序包括4个模块:

1>初始化学校信息。

2>依次输入每个运动员的信息。

3>根据每个学生的成绩计算对应的得分,及个学校的总得分、男团总分、

女团总分。

4>生成个学校的成绩单,并输出。三.详细设计

1.数据结构的定义:

○1描述运动员的线性表

typedef struct

{

int item[MAXSIZE]; //参赛项目号

char thletename[MAXSIZE][20];//姓名

char sex[MAXSIZE];//性别

int schoolnum[MAXSIZE];//所在学校编号

int num[MAXSIZE];//名次

int point[MAXSIZE];//得分

int last;

}Thlete;

○2描述学校的线性表

typedef struct

{

int schoolnum[MAXSIZE];//学校编号

int Tgirl[MAXSIZE];//女生团体总分

int Tboy[MAXSIZE];//男生团体总分

int Tall[MAXSIZE];//学校总成绩

int last;

}School;

○3.控制输入的函数

int input(Thlete *S1,int n,int m,int w)

{

cout<<"项目号"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"学校号"<<'\t' <<"名次"<< '\t' <

int i=0,j=1,k=0;

if(S1->last==MAXSIZE-1)

{

cout<<"运动员人数已满,无法继续输入!"<

return RIGHT;

}

while(cin>>S1->item[i]&&S1->item[i]!=0)

{

cin>>S1->thletename[i]

>>S1->sex[i]

>>S1->schoolnum[i]

>>S1->num[i];

i++;

if(i==100-1)

{

cout<<"运动员人数已满,无法继续输入!"<

return RIGHT;

}

}

S1->last=i;

for(i=0;ilast;i++)

{

if(S1->schoolnum[i]>n)

{

cout<<"您的输入有误,输入学校个数不能超过"<

入!"<

input(S1,n,m,w);

return ERROR;

}

if(S1->sex[i]!='g'&&S1->sex[i]!='b')

{

cout<<"您的输入有误,输入运动员性别只能用'g'(女)或'b'(男)表示请重新输入!"<

input(S1,n,m,w);

return ERROR;

}

if(S1->item[i]>=0&&S1->item[i]<=m&&S1->sex[i]!='b')

{

cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<

input(S1,n,m,w);

return ERROR;

}

if(S1->item[i]>=m+1&&S1->item[i]<=m+w&&S1->sex[i]!='g')

{

cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<

input(S1,n,m,w);

return ERROR;

}

}

return RIGHT;

}

○3.用于计算学校各项成绩的函数

void mark(Thlete *L1,School *L2,int n,int m,int w)

{

int i,j;

for(i=0;ilast+1;i++)

{

if(L1->item[i]%2==1)//项目编号为奇数的按第一种评分方法计算得分

{

if(L1->num[i]==1)

L1->point[i]=7;

if(L1->num[i]==2)

L1->point[i]=5;

if(L1->num[i]==3)

L1->point[i]=3;

if(L1->num[i]==4)

L1->point[i]=2;

if(L1->num[i]==5)

L1->point[i]=1;

if(L1->num[i]>5)

L1->point[i]=0;

}

if(L1->item[i]%2==0)//项目编号为偶数的按第二种评分方法计算得分

{

if(L1->num[i]==1)

L1->point[i]=5;

相关文档
最新文档