数据结构课程设计—运动会分数统计系统[1]

2019-09-01 16:06

运动会分数统计系统

一、需求分析

为了简便地对运动会的报名、成绩的录入和统计,本组设计开发了本系统,以解决需求。当然,本系统只是一个较为简单的系统,仍然存在着一些操作上以及显示上的问题,本组将在以后的学习中进行完善。

问题描述:参加运动会有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) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

输出形式:有中文提示,各学校分数为整形

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。 二、概要设计 1. 本系统的流程图如下:

开始---初始化 输入 N Y Case3 Y Y输入学校及男女项目范围 输入某项目各名次成绩 继续输N 成绩查询 Case1 查询各学校成绩 Case2 查询团体总分 Y 继续 输出查询学校成绩 N 继续 N 结束—退出 2. 本系统采用的存储结构为结构化设计理念,这是数据库的最基本的设计要求,主要包括三个数据表: (1) 项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项

目为接下来报名、场地的准备提供依据。本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。这也有利于以后项目情况的查询。

typedef struct {

int itemnum; //项目编号 int top; //取名次的数目

int range[5]; //名次 int mark[5]; //分数

}itemnode; //定义项目结点的类型

(2) 学校数据表:本数据表储存了各个参赛学校的总体情况,包括学校

的编号、名称、男子团体总分、女子团体总分和学校总分。其中学校编号和名称是提前输入的,而其他三项内容将由系统进行自动统计。

typedef struct {

int schoolnum; //学校编号 int score; //学校总分 int mscore; //男团体总分 int wscore; //女团体总分 itemnode c[m+w]; //项目数组 }headnode;//定义头结点类型

(3) 单项数据表:本数据表是对各个学校的报名情况及成绩进行汇总,

为了操作方便,本数据表只包含了学校的编号、项目的编号以及其在比赛中的成绩。

typedef struct /*单项成绩*/ {

int schoolnum; /*学校编号*/

int itemnum; /* 项目编号*/

int xmch; /*项目成绩*/ }danx;

danx dx[Y];

这三个数据表之间由项目编号和学校编号进行相关联接,形成一个整体。

三、详细设计

源代码:

#include #include #include #include #define n 2//学校数目 #define m 1//男子项目数目 #define w 1//女子项目数目 #define null 0

typedef struct {

int itemnum; //项目编号 int top; //取名次的数目 int range[5]; //名次 int mark[5]; //分数

}itemnode; //定义项目结点的类型

typedef struct {

int schoolnum; //学校编号 int score; //学校总分 int mscore; //男团体总分 int wscore; //女团体总分 itemnode c[m+w]; //项目数组 }headnode;//定义头结点类型

headnode h[n];//定义一个头结点数组

void inputinformation() //输入信息,建立系统 {

int i,j,k,s; for(i=0;i

h[i].score=0; h[i].mscore=0; h[i].wscore=0;

} //初始化头结点 for(i=0;i

printf(\学校编号:\

scanf(\输入头结点信息 for(j=0;j

printf(\项目编号:\

scanf(\ printf(\取前3名or前5名:\ scanf(\ printf(\获得几个名次:\

scanf(\输入项目信息 for(s=0;s<5;s++)

h[i].c[j].range[s]=0, h[i].c[j].mark[s]=0; //初始化排名和分数 for(s=0;s

printf(\名次:\

scanf(\输入所获名次信息 if(h[i].c[j].top==3)

switch(h[i].c[j].range[s]) {

case 0: h[i].c[j].mark[s]=0; break; case 1: h[i].c[j].mark[s]=5; break; case 2: h[i].c[j].mark[s]=3; break;

case 3: h[i].c[j].mark[s]=2; break; } else

switch(h[i].c[j].range[s]) {

case 0: h[i].c[j].mark[s]=0; break; case 1: h[i].c[j].mark[s]=7; break; case 2: h[i].c[j].mark[s]=5; break; case 3: h[i].c[j].mark[s]=3; break; case 4: h[i].c[j].mark[s]=2; break; case 5: h[i].c[j].mark[s]=1; break; }

h[i].score=h[i].score+h[i].c[j].mark[s]; //按取前三名还是取前五名分别记分 if(j<=m-1)

h[i].mscore=h[i].mscore+h[i].c[j].mark[s]; //是男子项目则记到男子分数里面去 else

h[i].wscore=h[i].wscore+h[i].c[j].mark[s]; //是女子项目则记到女子项目里面去 }

printf(\ } } }

void output() //输出函数 {

int choice,i,j,k; int remember[n]; int sign; do {

printf(\按学校编号输出.*******************\\n\ printf(\按学校总分输出.*******************\\n\ printf(\按男团总分输出.*******************\\n\ printf(\按女团总分输出.*******************\\n\ printf(\请选择编号*************************\\n\\n:\ scanf(\ switch(choice) {

case 1:


数据结构课程设计—运动会分数统计系统[1].doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:软磁铁氧体

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: