文档介绍:运动会分数统计系统的实现
09 计科 (2)班 E10914044 杨素传
一、设计要求
1、问题描述
参加运动会有n个学校,学校编码为 1, 2,…,n,比赛分成 m个男子项目和 w个女 子项目。项目编号为男子 1, 2,…,m,女子m+1,m+2,…,m+w。不同的项目取前五名或前
三名积分;取前五名的积分分别为 7, 5, 3, 2 , 1;前三名的积分分别 5, 3, 2 ;哪些取前 五名或前三名由学生自己设定( m<=20,n<=20 ) 。
2、需求分析
( 1)可以输入各个项目的前三名或前五名成绩;
( 2)能统计各学校成绩;
( 3)可以按学校编号、学校总分、男女团体总分排序输出;
( 4)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名 的学校。
二、概要设计
1、主界面设计
为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系
统的各项子程序,方便用户使用本程序。本系统主控菜单运行界面图 1 所示。
图1运动会分数统计系统程序主菜单
2、存储结构设计
本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。运动会分数
统计系统的链表中的结点包括 8个域:项目编号域(objnum)、项目类型(objtype)、运动 员编号 a athnum)、运动员姓名(athname[20])、学校编号(schnum)、校名(schname[30])、 运动员分数(athscore)和指向下一个节点的指针欲( struct LNode *next )。
3、系统功能设计
本系统设置了 8个子功能菜单。8个子功能的设计描述如下:
(1)录入各项目的成绩。由函数 creatLink()实现。当用户选择该功能时,系统会以用 户输入的数据运动会分数统计链表。
(2)统计各学校分数。由函数 schoolScore()实现。当用户选择该功能时,系统会统计 各学校分数。
(3)按学校编号顺序输出。由函数 printfSchoolNumber()实现。当用户选择该功能时, 系统会按学校编号顺序输出数据。
(4)按学校总分顺序输出。由函数 printfSchoolScore()实现。当用户选择该功能时,系 统会按学校总分顺序输出数据。
(5)按男女团体总分顺序输出。由函数 printfManWomanScore()实现。当用户选择该功 能时,系统会按男女团体总分顺序输出数据。
(6)按学校编号查询学校某项目情况。由函数 printfSchoolObject()实现。当用户选择 该功能时,系统会按学校编号输出学校某项目情况。
(7)按项目编号查询取得前三名或前五名的学校。由函数 printfObjectSchool()实现。
当用户选择该功能时,系统会按项目编号查询取得前三名或前五名的学校情况。
(8)退出。由exit(0)函数实现。
三、模块设计
1、模块设计
本程序包含两个模块:主程序模块和工作区选择模块。其调用关系如图 2所示。
主程序模块
►
工作区选择模块
图2 模块调用示意图
2、系统子程序及功能设计
本系统共设置个6子程序,各子程序的函数名及功能说明如下。
〃创建链表(录入各项目的成绩)
〃统计各学校总分
〃按学校编号顺序输出
〃按学校总分顺序输出
L 〃按男女团体总分排序输出
〃按学校编号查询学校某项目情况
L) //按项目编号查询取得前三名或前五
〃主函数
LinkList creatLink()
int schoolScore(LinkList L)
void printfSchoolNumber()
void printfSchoolScore()
void printfManWomanScore(LinkList
void printfSchoolObject(LinkList L)
void printfObjectSchool(LinkList
名的学校
int main()
3、函数主要调用关系图
本系统6个子系统之间的主要调用关系如图
3所示,图中数字是各函数的编号。
8 main()
四、详细设计
1、数据类型定义
(1)本系统采用链式结构存储运动会分数统计的结点。节点定义如下:
typedef struct LNode{〃 链表节点数据结构
int objnum;
char objtype;
int athnum;
char athname[20];
int schnum;
char schname[30];
int athscore;
struct LNode *next;
}LNod