数据结构与算法课程设计运动会分数统计.docx
- 文档编号:28947447
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:49
- 大小:581.61KB
数据结构与算法课程设计运动会分数统计.docx
《数据结构与算法课程设计运动会分数统计.docx》由会员分享,可在线阅读,更多相关《数据结构与算法课程设计运动会分数统计.docx(49页珍藏版)》请在冰豆网上搜索。
数据结构与算法课程设计运动会分数统计
广东技术师范学院天河学院
数据结构与算法
课程设计报告
题目:
_____
学号:
___________
班级:
___________
小组成员:
______
指导教师:
所属系部:
计算机科学与技术系
目录
题目一:
运动会分数统计
一、问题描述
参加运动会有n个学校,学校编号为1……n.比赛分成m个男子项目和w个女子项目。
项目编号为男子1......m,女子m+1......m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
二、基本要求
1).可以输入各个项目的前三名或前五名的成绩;
2).能统计各学校总分;
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询
6)规定:
输入数据形式和范围:
可以输入学校的名称,运动项目的名称
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明
三、算法思想
本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。
由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。
考虑到程序的要求在设计函数时将学校个数和项目个数设计为可变的数据,为方便使用设计菜单函数(jiemian),而由于要求将信息存储在文件中故设计文件的存储(baocun),信息输入函数(input)在输入基本信息后由系统统计总分的内容并全部存入文件file中,在接下来的函数中开始都需要读取文件中的信息,信息的输出(output)输出输入函数中统计后的各项信息,在排序输出中使用冒泡排序法进行不同关键字的排序,查询函数(search)采用顺序表的查找来完成。
以下是部分程序流程图:
四、数据结构
(1)项目数据表:
运动会系统先制定本次运动会所需的参赛项目。
本数据表根据要求设计存储每个项目的编号、要取的名次、各个名次名称及各名次对应的分数。
用于对以后项目情况的统计已及查询。
其中name,snum[6]由输入信息输入
structpro//表示项目的结构体
{
stringname;//项目名称
intsnum[6];//前5名学校的编号
}p[21];
(2)学校数据表:
本数据表根据要求储存了各个参赛学校的总体情况,包括学校的编号、学校总分、男子团体总分、女子团体总分。
其中name数据由输入信息输入,而其他三项内容score,male,female将由系统进行自动统计。
structschool//表示学校的结构体
{
intnum;
stringname;//学校名称
intscore;//学校总分
intmale;//男子总分
intfemale;//女子总分
}sch[21];
五、模块划分
1、voidbianhao()功能是按学校编号查询成绩
2、voidzongfen()功能是按学校总分排序
3、voidbaocun()功能是保存数据,按学校总分排序
4、voidmalezf()功能是按学校男总分排序
5、voidfemalezf()功能是按学校女总分排序
6、voidcxsch()功能是按学校编号查询学校信息
7、voidcxxxm()功能是按学校名字查询学校信息
六、源程序
#include
#include
#include
#include
usingnamespacestd;
intn;//n个学校
intm;//m个男子项目
intw;//w个女子项目
structpro//表示项目的结构体
{
stringname;//项目名称
intsnum[6];//前5名学校的编号
}p[21];
structschool//表示学校的结构体
{
intnum;
stringname;//学校名称
intscore;//学校总分
intmale;//男子总分
intfemale;//女子总分
}sch[21];
intintegral[5]={7,5,3,2,1};//前五名得分
voidinput()
{
inti,j,y,x,a;
printf("输入学校数目(学校数目不大于20):
");
y=0;
while
(1)
{
scanf("%d",&n);
if(n>=1&&n<=20)
y=1;
if(y)
break;
else
printf("输入数据有误,请重新输入:
");
}
for(i=1;i<=n;i++)
{
printf("输入第%d个学校的名称:
",i);
cin>>sch[i].name;
sch[i].score=0;
sch[i].female=0;
sch[i].male=0;
sch[i].num=i;
for(a=1;a
{
if(sch[a].name==sch[i].name)
{
printf("学校名称已存在,请重新输入.\n");
i--;
}
}
}
printf("输入男子项目数:
");
scanf("%d",&m);
printf("输入女子项目数:
");
scanf("%d",&w);
y=0;
while
(1)
{
if(m<=20&&m>=1&&w<=20&&w>=1)
y=1;
if(y)
break;
else
printf("输入数据有误,请重新输入:
");
}
for(i=1;i<=m+w;i++)
{
if(i<=m)
printf("输入男子组第%d个项目的名称:
\n",i);
else
printf("输入女子组第%d个项目的名称:
\n",i-m);
cin>>p[i].name;
if(i<=m)
printf("输入第%d个项目的前5名的学校编号:
\n",i);
else
printf("输入第%d个项目的前5名的学校编号:
\n",i-m);
for(j=1;j<=5;j++)
{
y=0;
while
(1)
{
scanf("%d",&x);
if(x>=1&&x<=n)
y=1;
if(y)
break;
else
printf("输入数据有误,请重新输入:
\n");
}
p[i].snum[j]=x;
sch[x].score+=integral[j-1];
if(i<=m)
sch[x].male+=integral[j-1];
else
sch[x].female+=integral[j-1];
}
}
}
voidprint(inti)
{
cout< } voidbianhao()//按编号排序 { inti,j; schoolt; for(i=1;i { for(j=i;j<=n;j++) if(sch[i].num>sch[j].num) { t=sch[i]; sch[i]=sch[j]; sch[j]=t; } } printf("\n按编号排列: \n"); printf("======================================\n"); printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++) print(i); cout< printf("======================================\n"); } voidzongfen()//按学校总分排序 { inti,j;schoolt; for(i=1;i { for(j=i;j<=n;j++) if(sch[i].score { t=sch[i]; sch[i]=sch[j]; sch[j]=t; } } printf("\n按学校总分排列: \n"); printf("============================================\n"); printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++) print(i); cout< printf("=============================================\n"); } voidbaocun()//保存数据,按学校总分排序 { inti,j;schoolt; for(i=1;i { for(j=i;j<=n;j++) if(sch[i].score { t=sch[i]; sch[i]=sch[j]; sch[j]=t; } } printf("\n按学校总分排列: \n"); printf("============================================\n"); ofstreamfout; fout.open("运动会分数统计.txt"); fout<<"编号学校名称总分男子总分女子总分"< for(i=1;i<=n;i++) { fout< } fout.close(); printf("\n保存成功! \n\n"); printf("=============================================\n"); } voidmalezf()//按学校男总分排序 { inti,j; schoolt; for(i=1;i { for(j=i;j<=n;j++) if(sch[i].male { t=sch[i]; sch[i]=sch[j]; sch[j]=t; } } printf("\n按学校男子总分排列: \n"); printf("======================================\n"); printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++) print(i); cout< printf("======================================\n"); } voidfemalezf()//按学校女总分排序 { inti,j; schoolt; for(i=1;i { for(j=i;j<=n;j++) if(sch[i].female { t=sch[i];sch[i]=sch[j];sch[j]=t; } } printf("\n按学校女子总分排列: \n"); printf("======================================\n"); printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++) print(i); cout< printf("======================================\n"); } voidcxsch()//查询学校信息 { inti,y,s; printf("输入需要查询的学校编号: "); y=0; while (1) { scanf("%d",&s); if(s>=1&&s<=n) y=1; if(y) break; else printf("输入数据有误,请重新输入: "); } printf("该学校相关信息: \n"); printf("======================================\n"); printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++) { if(sch[i].num==s) { print(i); break; } } cout< printf("======================================\n"); } voidcxxxm()//查询学校信息 { inty,v,s; printf("输入需要查询的学校名称: "); y=0; cin>>sch[0].name; sch[0].score=0; sch[0].female=0; sch[0].male=0; sch[0].num=0; while (1) { for(v=1;v<=n;v++) { if(sch[0].name==sch[v].name) { y=1; s=v; break; } } if(y) break; else { printf("不存在该学校,请重新输入! \n"); cxxxm(); } } printf("该学校相关信息: \n"); printf("======================================\n"); printf("编号学校名称总分男子总分女子总分\n"); print(s); cout< printf("======================================\n"); } voidcxxmbh()//按项目编号查询 { inti,y,s,k; printf("\n输入需要查询的项目项目类型: 1.男子组项目2.女子组项目\n"); scanf("%d",&k); if(k==1) { printf("请输入男子组项目的编号: "); y=0; while (1) { scanf("%d",&s); if(s>=1&&s<=m) y=1; if(y) break; else printf("输入数据有误,请重新输入: "); } cout< "< printf("==========================================\n"); printf("名次编号学校名称\n"); for(i=1;i<=5;i++) cout<<""< printf("==========================================\n"); } if(k==2) { printf("请输入女子组项目的编号: "); y=0; while (1) { scanf("%d",&s); if(s>=1&&s<=w) y=1; if(y) break; else printf("输入数据有误,请重新输入: "); } cout< "< printf("==================================================\n"); printf("名次编号学校名称\n"); for(i=1;i<=5;i++) cout<<""< printf("===================================================\n"); } if(k! =1&&k! =2) { printf("输入数据有误,请重新输入: \n"); cxxmbh(); } } voidcxxmmc()//按项目名称查询 { inti,s,k,b=0; printf("\n输入需要查询的项目项目类型: 1.男子组项目2.女子组项目\n"); scanf("%d",&k); if(k==1) { printf("请输入男子组项目的名称: "); cin>>p[0].name; for(s=1;s<=m;s++) { if(p[0].name==p[s].name) b=s; } if(b==0) { printf("无此项目,请重新输入: "); cxxmmc(); } else { cout< "< printf("==============================================\n"); printf("名次编号学校名称\n"); for(i=1;i<=5;i++) cout<<""< printf("==============================================\n"); } } if(k==2) { printf("请输入女子组项目的名称: "); cin>>p[0].name; for(s=1+m;s<=m+w;s++) { if(p[0].name==p[s].name) b=s; } if(b==0) { printf("无此项目,请重新输入: "); cxxmmc(); } else { cout< "< printf("======================================================\n"); printf("名次编号学校名称\n"); for(i=1;i<=5;i++) cout<<""< printf("======================================================\n"); } } } voidjiemian()//菜单函数 { intz; while (1) { printf("\n========================================\n"); printf("0.按项目名称查询某个项目成绩\n"); printf("选择您需要的操作(选择序号): \n"); printf("1.按学校编号排序输出\n"); printf("2.按学校总分排序输出\n"); printf("3.按学校男总分排序输出\n"); printf("4.按学校女总分排序输出\n"); printf("5.按学校编号查询某个学校成绩\n"); printf("6.查询某个项目成绩\n"); printf("7.按学校名称查询某个学校成绩\n"); printf("8.保存数据.\n"); printf("9.结束\n"); printf("======================================\n\n"); scanf("%d",&z); if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 课程设计 运动会 分数 统计