当前位置:文档之家› 运动会分数统计系统

运动会分数统计系统

数据结构课程设计
运 动 会 分 数 统 计
东华大学信息科学与技术学院 班级:电气 0910 班 姓名:周涛涛 学号:090901017
1
一.需求分析
1 问题描述
运动会分数统计
参加运动会有 n 个学校,学校编号为 1……n。比赛分成 m 个男子项目,和 w 个女子项目。项目编号为男子 1~m,女子 m+1~m+w。不同的项目取前五名或 前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、 3、2;哪些项目取前五名或前三名由学生自己设定。(m<=20,n<=20) 2. 基本要求:
*2;
sch[i].total=sch[i].total+b;
if(k<bm)
sch[i].boytotal=sch[i].boytotal+b;
if(k>=bm)
sch[i].girltotal=sch[i].girltotal+b;
}
}
void mulu(){
printf("\n\n
**系统目录**\n"); //目录
#define N 2
3
#define bm 4
#define gm 3
2、数据类型定义 (1)运动项目的定义:
struct match
{
int matchnum;
int rank[3];
}mat[bm+gm];
(2)学校的定义:
struct school
{
int schoolnum;
struct match mat[bm+gm];
1、源程序
#include<stdio.h> #include<process.h>
#define N 2 //学校个数
#define bm 4 //男团体个数
#define gm 3 //女团体个数
void xuanze();
void xunhuan();
struct match
//项目
{
int matchnum;




女询 学 项 出
各 学 校 总 分










团 体 总 分 排
团 体 总 分
学 校 某 个 项
排目


校 编 号 查 询 学 校 某




目 编 号 查 询 取 得 名 次 的 学 校
系 统

用户选择某命令,产生相应的操作 显示结果,用户选择返回主目录或退出
退出程序
三、详细设计 1、宏定义:
示返回总目录); 输入:3 按学校总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表
示返回总目录); 输入:4 按男团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’
表示返回总目录); 输入:5 按女团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’
五、测试结果
<1>数据输入(输入成绩如图)
5
输入:
请输入学校编号:1
项目编号
1
2
3
4
5
6
7
第<1>名:
1
0
0
1
1
0
0
第<2>名:
1
1
1
0
0
1
0
第<3>名:
0
0
0
0
1
1
1
请输入学校编号: 2
项目编号
1
2
3
4
5
6
7
第<1>名:
0
1
1
0
0
1
1
第<2>名:
0
0
0
1
1
0
1
第<3>名:
1
1
1
1
0
0
0
输入成绩后出现总目录(下图);
int rank[3];
}mat[bm+gm];
struct school //学校
{
int schoolnum;
struct match mat[bm+gm];
int total;
int boytotal;
int girltotal;
}sch[N];
void huanyingni() /*开始界面,欢迎使用*/
1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分; 3) 可以按学校编号、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况; 5) 可以按项目编号查询取得前三或前五名的学校。 3.测试数据 1)首先进入成绩录入界面,先输入学校编号 1,再输入学校 1 各个项目成 绩 0 或 1(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次); 然后再输入第二个学校编号 2,再输入成绩;当输入其他的学校编号和成绩会提 示错误输入,重新输入。 2)然后进入总目录,输入 :1 统计各学校总分并输出; 3)输入:2 按学校编号排序输出; 4)输入:3 按学校总分排序输出; 5)输入:4 按男团体总分排序输出; 6)输入: 5 按女团体总分排序输出; 7) 输入:6 按学校编号查询学校某个项目情况; 8)输入:7 按项目编号查询取得名次的学校; 9)输入:0 退出系统; 10)输入其他数据会提示错误输入,重新输入。
printf("\t\t* 4.按男团体总分排序输出
*\t \n");
printf("\t\t* 5.按女团体总分排序输出
*\t \n");
printf("\t\t* 6.按学校编号查询学校某个项目情况 *\t \n");
{
printf("输入错误(只能是 1-%d)请重新输入:",N);
goto loop3;
}
printf("项目编号 ");
for(k=0;k<bm+gm;k++)
printf("%d ",sch[i].mat[k].matchnum);
printf("\n");
for(j=0;j<3;j++)
{
loop: printf("第(%d)名:",j+1);
printf("\t***^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^***\n\n "); } void input() //输入成绩 {
int i,j,k; for(i=0;i<N;i++) //初始化分数
10
{
sch[i].total=0;
printf("\t\t ************************************\n");
printf("\t\t* 1.统计各学校总分
*\t \n");
printf("\t\t* 2.按学校编号排序输出
*\t \n");
printf("\t\t* 3.按学校总分排序输出
*\t \n");
int total;
int boytotal;
int girltotal;
}sch[N];
3、函数之间的调用关系
huanyingni
main
input
system totaljisua n
xunhuan
mulu funct0 funct1 funct2
funct3 funct4 funct5 funct6 funct7
for(k=0;k<bm+gm;k++)
scanf(" %d",&sch[i].mat[k].rank[j]);
for(k=0;k<bm+gm;k++)
if(sch[i].mat[k].rank[j]!=0&&sch[i].mat[k].rank[j]!=1)
{
printf("输入错误,请重新输入,成绩只能是‘0’或‘1’\n");
7
输出:
(8)输入:1,返回总目录;再输入:7,输入项目编号:7 输出:
(9)如果输入提示外的数字,例如输入:4 则输出错误提示:
(10)输入:0 输出:
六、用户手册
1、运行环境 Windຫໍສະໝຸດ ws,VC++6.0
2、用户界面
8
3、操作过程 (1)用户进入运动会分数统计系统程序欢迎界面 (2)录入成绩,先输入要输入的学校编号,1 或 2;再输入对应学校的 1-7 项目的成绩(成
绩用 0 或 1:‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次)
当成绩录入错误时会有错误提示。 (3)进入总目录,按提示,输入 0--7 中的一个数; 输入:0 则推出系统; 输入:1 统计各学校总分并输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’
表示返回总目录); 输入:2 按学校编号排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表
sch[i].boytotal=0;
sch[i].girltotal=0;
for(k=0;k<bm+gm;k++)
相关主题