运动会分数统计系统实验报告.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运动会分数统计系统的实现
9计科 (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 )、运动员编号( 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 子程序,各子程序的函数名及功能说明如下。
( 1)LinkList creatLink() // 创建链表(录入各项目的成绩)
( 2)int schoolScore(LinkList L) //统计各学校总分
( 3)void printfSchoolNumber() //按学校编号顺序输出
( 4)void printfSchoolScore() //按学校总分顺序输出
( 5)void printfManWomanScore(LinkList L //按男女团体总分排序输出
( 6)void printfSchoolObject(LinkList L) // 按学校编号查询学校某项目情况
( 7)void printfObjectSchool(LinkList L) //按项目编号查询取得前三名或前五名的学校
( 8)int main() //主函数
3、函数主要调用关系图
本系统 6 个子系统之间的主要调用关系如图 3 所示,图中数字是各函数的编号。
8 main()
1 2 3 4 5 6 7
图 3 系统函数调用关系图
四、详细设计
1、数据类型定义
( 1)本系统采用链式结构存储运动会分数统计的结点。节点定义如下:
typedef struct LNode{//链表节点数据结构
int objnum;
char objtype;
int athnum;
char athname[20];
int schnum;
char schname[30];
int athscore;
struct LNode *next;
}LNode,*LinkList;
( 2)各学校情况数据结构的结构定义成结构体数组形式。定义如下:
struct School{
int schoolnumber;
char schoolname[30];
int schoolscore;
}school[30];
2、系统主要子程序详细设计
( 1)创建链表(录入各项目的成绩)子程序设计
LinkList creatLink(){
LinkList L=(LinkList)malloc(LEN);
LinkList p,q;
int num,objnum,n;
char objtype;
L->next=NULL;
p=L;
printf(" 请输入男女项目总个数:");
scanf("%d",&num);
while(num--){
printf(" 请输入项目编号:");
scanf("%d",&objnum);
printf(" 请输入项目类型:");