运动会分数统计
1.问题描述
参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。
2.设计要求
(1)可以输入各个项目的前三名或前五名的成绩;
(2)能统计各学校总分;
(3)可以按学校编号或名称、学校总分、男女团体总分排序输出;
(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;
(5)数据存入文件并能随时查询;
(6)输入:输入学校的名称,运动项目的名称。
(7)输出:要求有中文提示,各学校分数为整型。
(8)界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
- 测试数据
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据进行程序测试,以保证程序的稳定。
例如,对于n=4,m=3,w =2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。
分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tiAh127y-1591407091819)(…/images/aa.jpg)]
完整代码
#include<stdio.h>
#include<math.h>
#include <process.h>
#define N 20 /*学校最大数目*/
#define M 20 /*男子项目最大数目*/
#define W 20 /*女子项目最大数目*/
typedef struct
{
int inum; /*项目编号*/
int top; /*取名次的数目*/
int range[5]; /*名次*/
int mark[5]; /*分数*/
}itemnode; /*存放项目信息*/
typedef struct
{
int snum; /*学校编号*/
int score; /*学校总分*/
int mscore; /*男团体总分*/
int wscore; /*女团体总分*/
itemnode t[M+W]; /*项目数组*/
}snode; /*存放学校信息*/
snode a[N]; /* 定义一个学校数组*/
void menu(int n,int m,int w) /*菜单函数*/
{
int c;
void input(int n,int m,int w);
void output(int n,int m,int w);
void sortput(int n,int m,int w);
void search(int n,int m,int w);
printf("\t\t\t欢迎使用\t\t\t\t\n\n");
printf("\t***********运动会分数统计系统***********\n\n");
printf("\t\t*******1.信息输入*******\n");
printf("\t\t*******2.统计输出*******\n");
printf("\t\t*******3.排序输出*******\n");
printf("\t\t*******4.信息查询*******\n");
printf("\t\t*******0.退出系统*******\n\n");
printf("=======================================================\n\n");
printf("请选择要实现步骤的编号(0--4):");
scanf("%d&#