数据结构实验运动会分数统计实验报告.docx
- 文档编号:3831817
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:22
- 大小:296.29KB
数据结构实验运动会分数统计实验报告.docx
《数据结构实验运动会分数统计实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构实验运动会分数统计实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
数据结构实验运动会分数统计实验报告
‘
实验报告
题目:
运动会分数统计
班级:
14电子商务平台建设班完成日期:
2015.10.10
学号:
:
少辉
学号:
:
德龙
学号:
:
柴益新
一:
需求分析
参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。
【基本要求】
产生各学校的成绩单,容包括各校所取得的每项成绩的项目号、名次(成绩)、和得分;产生团体总分报表,容包括校号、男子团体总分、女子团体总分和团体总分。
结于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为公里数的项目取前三名,设计一组实例数据。
【项目约束】
可以假设n≤20,m≤30,w≤20,长度不超过20个字符。
每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员、校名(和成绩)。
二:
概要设计
采用结构体二维数组存储方式产生各学校的成绩单,容包括各校所取得的每项成绩的项目号、名次(成绩)、和得分;产生团体总分报表,容包括校号、男子团体总分、女子团体总分和团体总分。
三:
详细设计
1:
数据结构的定义
元素类型、变量、指针类型
(1)项目数据表:
运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。
本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。
这也有利于以后项目情况的查询。
3.1结构体
结构体名
数据类型
数据名
备注
School
char
name[20]
学校名称
int
schoolnum
学校编号
char
projectmane[50][20]
项目编号及名称
int
projectscouer[50]
项目得分
char
projectstudentmane[50][20]
获奖学生
int
sum
团体总分
int
menscouer
男子总分
int
womenscouer
女子总分
3.2子函数
函数名
入口参数
出口参数
功能介绍
main()
实现学校输入
项目输入
welcome()
调用主页面
选择各类操作以转至其他页面
input()
输入项目编号及名称
choose()
intj,chars[20]
intg;
1.判断所输项目是取前三或前五
2.返回经判断后的项目的编号与名称
three()
intj,chars[20]
j
1.按名次判断得分,按项目编号判断男女得分
2.返回经判断后的项目的编号
five()
intj,chars[20]
j
1.按名次判断得分,按项目编号判断男女得分
2.返回经判断后的项目的编号
output()
按规定顺序查询n个学校中某一学校的得分信息
sumput()
按规定顺序产生团体总分报表
goodbye()
弹出退出界面并退出程序
3:
函数调用关系
四:
调试分析
在调试的过程中,我们发现了在查询成绩功能是只能按照各个学校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。
五:
用户使用说明
(1)首先运行文件运动会统计分数系统
(2)输入信息:
1.输入学校数量→2.输入各个学校名称→3.男子运动项目数量→4.女子运动项目数量。
敲下回车后进入welcome界面中
进入1数据输入→输入运动会项目名称→输入该项目的打分规则→依次录入学校的排名情况
(2)输出信息:
输入3进行总体输出查询。
(3)查询信息:
按任意键返回主页面,输入2进行信息查询
查询结束后按任意键返回主界面输入4退出系统如下图所示
源代码
/**
***项目名称:
运动会统计系统
***设计者:
德龙,柴益新,少辉
***时间:
2015.10.16
***实现目标:
1.产生各学校的成绩单,容包括各校所取得的每项成绩的项目号、名次(成绩)、和得分;
2.产生团体总分报表,容包括校号、男子团体总分、女子团体总分和团体总分。
***
***
***
***/
#include
#include
#include
#include
/*
*n个学校编号为1~n
*m个男子项目,编号为1~m
*w个女子项目,编号为m+1~m+w
*/
intn,m,w;
/*
*学校信息结构体
*目的:
1.按此结构体存贮数据
*2.产生各学校的成绩单,容包括各校所取得的每项成绩的项目号、名次(成绩)、和得分;
*/
structschool
{
charname[20];//学校名称
intschoolnum;//学校编号
charprojectmane[50][20];//项目编号及名称
intprojectscouer[50];//项目得分
charprojectstudentmane[50][20];//获奖学生
intsum;//团体总分
intmenscouer;//男子总分
intwomenscouer;//女子总分
}num[20];
/*
*主函数
*目的:
1.实现学校输入
*2.项目输入
*/
intmain()
{
inti,j;
voidwelcome();//调用主界面
printf("请输入学校数量\n");
scanf("%d",&n);
//输入学校名称,并初始化数据
for(i=1;i<=n;i++)
{
printf("请输入第%d学校的名称:
",i);
scanf("%s",num[i].name);
num[i].schoolnum=i;//学校编号初始
num[i].menscouer=0;//男子团体分初始
num[i].womenscouer=0;//女子团体分初始
num[i].sum=0;//团体总分初始
for(j=1;j<=50;j++)//各项目得分初始
num[i].projectscouer[j]=0;
}
printf("请输入男子项目个数:
");
scanf("%d",&m);
printf("请输入女子项目个数:
");
scanf("%d",&w);
welcome();
return0;
}
/*
*主界面函数:
*目的:
选择各类操作以转至其他页面
*/
voidwelcome()
{
system("cls");
intn;
voidinput();
voidoutput();
voidsumput();
voidgoodbye();
//读取这个welcome界面并显示
FILE*welcome;
welcome=fopen("c:
//新建文件夹//welcome.txt","r");
chars[60];
while(fgets(s,60,welcome))
printf("%s",s);
printf("\n");
//选择进入子页面
while(scanf("%d",&n)!
=EOF)
{
if(n==1)
input();//调用输入函数
elseif(n==2)
output();//调用输出函数
elseif(n==3)
sumput();//调用求和函数
elseif(n==4)
goodbye();//调用退出函数
else
printf("输入有误,请重新输入:
\n");//输入错误提示
}
}
/*
*数据输入函数:
*目的:
选择各类操作以转至其他页面
*/
voidinput()
{
voidwelcome();
intj,k;
intchoose(intj,chars[20]);
chars[20];
for(j=1;j<=w+m;j++)
{
printf("请输入第%d个项目名称:
",j);
scanf("%s",s);
for(k=1;k<=n;k++)
strcpy(num[k].projectmane[j],s);//输入项目名称(将所输入的数组拷贝至项目组中)
j=choose(j,s);//调用项目类型选择函数
}
welcome();
}
/*
*项目类型选择函数(3或5名)
*目的:
1.判断所输项目是取前三或前五
2.返回经判断后的项目的编号与名称
*/
intchoose(intj,chars[20])
{
intl;
intg;
intthree(intj,chars[20]);
intfive(intj,chars[20]);
//输入3,5分别调用不同的函数来判断
printf("请选择此项目取前五还是前三(3或5):
");
while(scanf("%d",&l)!
=EOF)
{
if(l==3)
{
g=three(j,s);
returng;
}
elseif(l==5)
{
g=five(j,s);
returng;
}
else
printf("输入错误,请重新输入:
");
}
}
/*
*取前3的项目函数
*目的:
1.按名次判断得分,按项目编号判断男女得分
2.返回经判断后的项目的编号
*/
intthree(intj,chars[20])
{
//输入前三名获奖者信息,输入次序为学校编号加获奖者
intp,b;
for(p=1;p<=3;p++)
{
printf("请输入第%d名的校编号:
",p);
scanf("%d",&b);
printf("请输入获奖者:
");
scanf("%s",num[b].projectstudentmane[j]);
//第一名得分为5
if(p==1)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+5;
num[b].sum=num[b].sum+5;
if(j>m)
num[b].womenscouer=num[b].womenscouer+5;//从第m个开始为女子项目得分
else
num[b].menscouer=num[b].menscouer+5;//前m个为男子项目得分
}
//第二名得分为3
elseif(p==2)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+3;
num[b].sum=num[b].sum+3;
if(j>m)
num[b].womenscouer=num[b].womenscouer+3;
else
num[b].menscouer=num[b].menscouer+3;
}
//第三名得分为2
elseif(p==3)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+2;
num[b].sum=num[b].sum+2;
if(j>m)
num[b].womenscouer=num[b].womenscouer+2;
else
num[b].menscouer=num[b].menscouer+2;
}
}
returnj;
}
/*
*取前5的项目函数
*目的:
1.按名次判断得分,按项目编号判断男女得分
2.返回经判断后的项目的编号
*/
intfive(intj,chars[20])
{
intp,b;
//输入前五名获奖者信息,输入次序为学校编号加获奖者
for(p=1;p<=5;p++)
{
printf("请输入第%d名的校编号:
",p);
scanf("%d",&b);
printf("请输入获奖者:
");
scanf("%s",num[b].projectstudentmane[j]);
//第一名得分为7
if(p==1)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+7;
num[b].sum=num[b].sum+7;
if(j>m)
num[b].womenscouer=num[b].womenscouer+7;
else
num[b].menscouer=num[b].menscouer+7;
}
//第二名得分为5
elseif(p==2)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+5;
num[b].sum=num[b].sum+5;
if(j>m)
num[b].womenscouer=num[b].womenscouer+5;
else
num[b].menscouer=num[b].menscouer+5;
}
//第三名得分为3
elseif(p==3)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+3;
num[b].sum=num[b].sum+3;
if(j>m)
num[b].womenscouer=num[b].womenscouer+3;
else
num[b].menscouer=num[b].menscouer+3;
}
//第四名得分为2
elseif(p==4)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+2;
num[b].sum=num[b].sum+2;
if(j>m)
num[b].womenscouer=num[b].womenscouer+2;
else
num[b].menscouer=num[b].menscouer+2;
}
//第四名得分为1
elseif(p==5)
{
num[b].projectscouer[j]=num[b].projectscouer[j]+1;
num[b].sum=num[b].sum+1;
if(j>m)
num[b].womenscouer=num[b].womenscouer+1;
else
num[b].menscouer=num[b].menscouer+1;
}
}
returnj;
}
/*
*选择输出函数:
*目的:
按规定顺序查询n个学校中某一学校的得分信息
*/
voidoutput()
{
system("cls");
intt,i;
voidwelcome();
printf("请输入要查询的学校编号:
");
while(scanf("%d",&t)!
=EOF)
{
//保证所输序号为0~n
if(t>0&&t<=n)
{
for(i=1;i<=w+m;i++)
printf("学校编号:
%d学校名称:
%s项目编号:
%d项目名称:
%s项目得分:
%d获奖者:
%s\n",num[t].schoolnum,
num[t].name,i,num[t].projectmane[i],num[t].projectscouer[i],num[t].projectstudentmane[i]);
system("pause");
welcome();
}
else
printf("输入错误,请重新输入:
");
}
}
/*
*总体输出函数
*目的:
按规定顺序产生团体总分报表
*/
voidsumput()
{
system("cls");
voidwelcome();
inti;
for(i=1;i<=n;i++)
{
printf("学校编号:
%d学校名称:
%s团体总分:
%d男子总分:
%d女子总分:
%d\n",i,num[i].name,num[i].sum,num[i].menscouer,num[i].womenscouer);
}
system("pause");
welcome();
}
/*
*退出页面
*目的:
弹出退出界面并退出程序
*/
voidgoodbye()
{
system("cls");
printf("使用!
!
\n");
printf("祝你生活愉快!
!
\n");
exit(0);//结束
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 运动会 分数 统计 报告