运动会分数统计系统课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运动会分数统计系统

课程设计报告

数据结构

院系:

专业:

班级:

学号:

姓名:

教师:

时间:

一、问题描述

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、数据

建议输入学校的名称,运动项目的名称等,其余信息学生自行设计;

输出形式:有合理的提示,各学校分数为整形;

数据的存储结构自行设计。

建议运动会的相关数据要存储在数据文件中。

3、操作

1)可以输入各个项目的前三名或前五名的成绩;

2)能统计各学校总分,

3)可以按学校编号或名称、学校总分、男女团体总分排序输出;

4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学

校。

4、要求

提供系统菜单,界面友好,提示信息完整。

二、系统分析及设计

1、需求分析

根据运动会分数统计系统的问题分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息输出模块、信息查询模块、信息调用模块。其系统功能结构图如图所示。

(1)、信息统计模块实现信息的输入、统计、存档。

(2)、信息输出模块实现信息的输出。

(3)、信息查询模块实现信息的查询。

(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出。

运动会分数统计系统

信息统计模块信息输出模块信息查询模块信息调用模块信分信

息数息

输统存

入计档

2、概要设计

此系统采用顺序存储结构存储,定义了一个结构体数组存放参赛学校的信息。之所以采用顺

序存储结构,是因为用它来实现信息的存储、查询比较方便,节省时间,效率高,而且也方便把信息

写入文件以及读取文件。

(1)、结构体定义如下:①、定义运动项目数据类型,用于存放运动项目的信息,包括项目名称、项目编号、用

户自己定义的取前 3 名还是前 5 名的积分、名次、分数。

typedef struct

{

char proname[10];//项目名称

int pronum;// 项目编号

int top;//取前 3 名或前 5 名积分,由用户自己定义

int range[5];// 名次

int mark[5];// 分数

}Pronode;//项目结点类型定义

②、定义学校数据类型,用于存放参赛学校的信息,包括学校名称、学校编号、学校总

分、男子团体总分、女子团体总分以及项目数组。

typedef struct

{

char schname[20];//学校名称

int schnum;// 学校编号

int score;// 总分

int Mscore;//男子团体总分

int Wscore;// 女子团体总分

Pronode a[M+W];//项目数组

}Schnode;// 学校结点类型定义

③、定义一个学校结点类型的结构体数组Schnode s[N] 。采用数组结构有利于随机存储

和查询。

(2 )、信息统计模块的算法设计说明

输入参赛学校比赛成绩的信息时,采用三重循环,第一重循环控制参赛学校的个数,第二重循环控制各参赛学校的参赛项目个数,第三重循环控制各参赛学校的各参赛项目所获得

的名次个数,并依次输入相应信息,根据所输入的名次得出相对应的分数。然后分别统计出各学校的总分、男子团体总分和女子团体总分。调用文件数据块写函数 fwrite 将信息写入文件,

方便以后调用。

(3)、信息输出模块的算法设计说明

根据设计要求,实现按学校名称、学校总分、男子团体总分、女子团体总分输出。因此

选用 switch 语句实现此功能。case 1 按学校名称输出时,直接取出数据进行输出;case 2 按学校总分输出时,采用冒泡排序法进行排序然后按分数由高到低输出;case 3 和 case 4 也均采用冒泡排序法进行排序最后按分数由高到低输出。

其流程图如图所示:

开始

总分显示菜单界面

输入功能序号

按按按按退直

学学男女出接

校校团团返退

名总总总回出

称分分分主本

输输输输菜系

出出出出单统

主菜单结束

(4 )、信息查询模块的算法设计说明

根据设计要求,提供两种不同的查询方式:按学校编号查询和按项目编号查询。因此也采用 switch 语句实现此功能。case 1 按学校编号查询,提示输入要查询的学校编号以及要查

询的项目编号,直接取出该学校该项目的信息进行输出。case 2 按项目编号查询,提示输入

要查询的项目编号,输出该项目取得名次的学校的信息。

其流程图如图所示:

开始

信息查询界面

选择查询方式

按按退直

学项出接

校目返退

编编回出

号号主本

查查菜系

询询单统

主菜单结束

(5 )、信息调用模块的算法设计说明

信息调用,即读取保存在文件里的信息并输出。由于采用的是数组存储,可以很方便的一下把文件里的信息全部读取出来,再利用三重循环依次把各学校各项目所取得的成绩输出。

3、详细设计

(1)、信息输入及分数统计功能

void InfoInput() 是信息输入及分数统计的函数,在输入信息的同时进行分数统计,可以

输入各学校各项目前 3 名或前 5 名的成绩。结果取前 3 名还是前 5 名由用户自己定。用 switch 语句将前 3 名的成绩赋值为 5、 3、2,前 5 名的成绩赋值为 7、 5、3、 2、 1,未取得的成绩则赋为 0。并统计总分、男子团体总分和女子团体总分。其主要功能代码如下:

for(m=0;m

{

cout<<"名次: ";

cin>>s[i].a[j].range[m];

if(s[i].a[j].top==3)//匹配各名次对应的分数

相关文档
最新文档