运动会分数统计.docx
《运动会分数统计.docx》由会员分享,可在线阅读,更多相关《运动会分数统计.docx(23页珍藏版)》请在冰豆网上搜索。
![运动会分数统计.docx](https://file1.bdocx.com/fileroot1/2022-10/9/cb78c4eb-d09a-4a77-93fa-09117653d61e/cb78c4eb-d09a-4a77-93fa-09117653d61e1.gif)
运动会分数统计
运动会分数统计
成绩:
__________
院、系计算机与软件学院专业软件工程
姓名不爱拉面学号
指导教师
二零一五年十二月二十五日
运动会分数统计
摘要:
运动会分数统计
关键词:
数据结构、文件存储、排序、查找
前言:
很多同学学到数据结构这门课时,可能老师会要求我们写个系统,如果你刚好是这个系统,欢迎来参考我的代码。
在网上找了很多代码,不是这里有问题就是那里有问题,各种错误。
调试起来有很多问题,于是我自己花了一些时间来写了这段代码。
在使用这个代码的时候,只有一点需要注意,输入的时候必须先输入总体数据。
以上。
1.设计要求
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
任务:
参加运动会有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)(可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
2.数据结构
typedefstruct
{
charitem_name[NAME_LEN];//项目名字
intrank_num;//3or5
intm,w;
}ItemNode;
typedefstructSchoolNode
{
chars_name[NAME_LEN];//学校名字
intscore;//项目成绩
intm_score;//男团体总分
1
intw_score;//女团体总分
intn;
}SchoolNode;
typedefstruct
{
intrank[6];//是否获得名次,0或者1}DataNode;
学校和项目分别构成一个结构体数组,再以学校为横坐标,项目为纵坐标,建立Data结构体二维数组,
Data中存放某学校某项目获将情况,获奖记为1。
3.模块功能
3.1详细设计
1(主cpp中只放intmain(),由switch分支语句组成,用于在功能间的跳转。
2(除main()外,分别设有sort()排序,consult()查询,input()输入,output()输出,
save()保存,menu()菜单等头文件,各司其职。
3(保存的时候,分别将三个结构体数组存储到不同的文件中。
4.sort.h中,重新定义schoolNode,利用冒泡排序进行排序。
5.output.h中,注意输出时候格式的整齐。
3.2样例结果预览
男子总分排序:
查询某项目的前3或5名:
2
3.3关键代码
intmain()
{
greet();
while
(1)
{
switch(Menu_Select_One())
{
case1:
//输入信息
input_two();break;
case2:
//显示各学校总分
output_total_score();break;
case3:
//排序
while
(1)
{
switch(Menu_Select_Tow())
{
case1:
//按学校编号排序
output_total_score();break;
case2:
//按学校总分排序
sort_one();break;
case3:
//按男团体总分排序
sort_two();break;
case4:
//按女团体总分排序
sort_three();break;
case0:
//返回主菜单
break;
}
break;
}
break;
case4:
while
(1)
{
switch(Menu_Select_Three())
{
case1:
//按学校编号查询学校某个项目情况
3
consult_one();break;
case2:
//按项目编号查询取得名次的学校
consult_two();break;
case0:
break;
}
break;
}
break;
case5:
//保存信息
saveInfo();break;
case6:
//从文件读取信息
readInfo();break;
case7:
input_one();break;
case0:
//退出系统
printf("\t谢谢使用~\n\t再见\n~");
exit(0);
default:
printf("\t选择操作错误~\n");break;
}
}
}
4.设计总结
刚接到这个题目,实在是无法入手。
在网上找了很多代码,试着运行了,但都存在或这或那的问题。
在和一个好朋友讨论之后,我才最终确定了这样的数据结构。
时限之前,我通宵了一个晚上把代码码好,
完善。
在存储的时候遇到很多问题,但也一一解决了,结构体数组存储形式方便了很多。
本次实验中,我
打破了以往写代码的常规,把不同的模块写在了不同的头文件中,使程序的结构清晰明了。
最后,深深地
体会到,作业一定要规划出时间来完成,要不然就要通宵赶代码啦。
参考文献:
【1】黄同成,黄俊民,董建寅,《数据结构》,北京,中国电力出版社,2008
【2】严蔚敏,吴伟民.《数据结构,C语言版,》.北京,清华大学出版社,2002
【3】刘振鹏,张晓莉,郝杰,《数据结构》,北京,中国铁道出版社,2003
4
源码,
#include
#include
#defineNAME_LEN10#defineSCHOOL_NUM20#defineITEM_NUM20
typedefstruct
{
charitem_name[NAME_LEN];//项目名字
intrank_num;//3or5
intm,w;
}ItemNode;
typedefstructSchoolNode{
chars_name[NAME_LEN];//学校名字
intscore;//项目成绩
intm_score;//男团体总分
5
intw_score;
intn;
}SchoolNode;
typedefstruct
{
intrank[6];
}DataNode;
SchoolNodeschool[SCHOOL_NUM];ItemNodeitem[ITEM_NUM];DataNodedata[SCHOOL_NUM][ITEM_NUM];intn,m,w;
/*-----------------------menu---------------------------------------*/
intMenu_Select_One()//菜单界面1
{intselect;
do
6
{system("color0a");system("cls");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----以下是菜单选项,请选择,-------(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----1.输入各个项目成绩及信息----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----2.显示各学校总分----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----3.信息排序----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----4.信息查询----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----5.保存信息到文件----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----6.从文件中读入信息----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----7.输入总信息------------------(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t\t(^o^)----0.退出系统----(^o^)\n");
printf("\t\t(^o^)--------------------------------------(^o^)\n");
printf("\t请输入要选择的操作(0-7),");
scanf("%d",&select);
7
}while(select>7||select<0);
returnselect;
}
intMenu_Select_Tow()//菜单界面2
{intselect;
do
{system("colore0");system("cls");
printf("\t\t(^o^)------------------------------------(^o^)\n");
printf("\t\t(^o^)----以下是菜单选项,请选择,----(^o^)\n");
printf("\t\t(^o^)------------------------------------(^o^)\n");
printf("\t\t(^o^)----1.按学校编号