数据结构运动会分数统计课程设计Word文件下载.docx
- 文档编号:14666553
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:27
- 大小:859.93KB
数据结构运动会分数统计课程设计Word文件下载.docx
《数据结构运动会分数统计课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构运动会分数统计课程设计Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
5.3按项目查学校成绩---------------------------------------------------11
5.4按学校编号查参加项目-----------------------------------------------14
6.用户使用说明--------------------------------------------------15
7.参考文献------------------------------------------------------15
8.对软件自我评价------------------------------------------------15
9.程序设计源代码------------------------------------------------16
10.心得体会-----------------------------------------------------22
一.需求分析
1.1问题描述
1.课程设计题目:
运动会分数统计。
2.任务:
加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;
取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;
哪些取前五名或前三名由学生自己设定。
(m<
=20,n<
=20)
3.问题分析:
1)、每个学校有运动员要参加运动项目,故存储结构要有三个,项目结构体,学生信息结构体和学校链表。
每个结点存储一个学校,每个学校可以有多名运动员参加运动项目。
由此,存储结构就建立了。
2)、要求不同的项目根据具体情况取去前五名或前三名积分,则可以设定标准,即当参加某项目的运动员数等于或多于五人时,就取该项目的前五名进行积分,取前五名的积分分别为:
7,5,3,2,1。
当参加某一项目的人数少于五人时,则去该项目的前三名进行积分,去取前三名的积分分别为:
5,3,2。
3)、要求能统计学校的总分,并可以按学校编号输出每个学校的参赛信息及每个学校每个运动员的信息和所有运动项目清单。
以上这些功能可以通过遍历学校链表来实现。
4)、要求可以学校编号查询学校某个项目的情况,用户输入学校编号和项目编号,通过遍历学校链表即可实现。
5)、要求可以按编号查询取得前三或前五名的学校,用户输入要查询的项目的编号,通过遍历学校链表即可实现。
6)、设置菜单函数menu(),产生用户界面。
规定:
输入数据形式和范围:
可以输入学校的名称,运动项目的名称
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
测试数据:
要求使用1、全部合法数据;
2、整体非法数据;
3、局部非法数据。
进行程序测试,以保证程序的稳定。
1.2基本任务
通过用户调查分析及实际需求,系统需要实现如下基本任务:
1).输入各个项目的前三名或前五名的成绩;
2).统计各学校总分;
3).按学校编号或名称、男女团体总分排序输出;
4).按学校编号查询学校某个项目的情况;
可以按项目编号查询取得前三或前五名的学校。
数据存入文件并能随时查询。
二.概要设计
为了完成需求分析的基本任务,主要从以下3个方面进行设计:
2.1主界面设计
为了实现运动会分数统计的各项功能,设计了一个含有多个菜单项的主控菜单模块以链接系统的各项功能,以方便用户使用系统。
系统主控菜单运行界面如图1所示:
图1运动会分数统计主菜单
2.2数据结构设计
系统采用数据的存储结构定义:
运动项目结构体、运动员信息结构体、学校链表
此外,还定义了一些全局变量:
学校总数SchoolCount、男生项目总数BoyProject、女生项目总数GirlProject、项目总数TotalProject、项目表Project_T[41]。
2.3系统功能设计
⑴.创建学校的链表:
voidCreatSchoolLink(School&
head);
⑵.添加获奖学生:
voidAddStudentLink(School&
⑶.按项目编号查询取得前三或前五名的学校。
voidFind_Project_ID(School&
head,intProject_ID);
⑷.按学校编号查询学校某个项目。
voidFind_School_Project(School&
head,intSchool_ID,intProject_ID);
⑸.成绩统计:
voidScoreCount(School&
⑹.输出参赛结果:
voidOutPut_Link(Schoolhead);
(7).添加学生数据:
voidAddStudent(School&
(8).菜单函数:
intmenu();
(9).主函数:
intmain();
三.模块设计
3.1模块设计
系统主要包含主程序模块和其它链表操作模块。
其调用关系如图2所示。
图2模块调用示意图
3.2系统子模块及其功能设计
系统设计了8个子功能模块,8个子功能模块的描述如下:
(8).添加学生数据:
3.3系统模块之间的调用关系
系统的10个子模块之间的主要调用关系如图3所示:
图3系统函数调用关系图
四.详细设计
4.1数据结构设计
系统采用线性表的链式存储结构存储学校信息。
结点定义如下:
typedefstructSchoolNode
{intnumber;
//学校编号
charname[10];
intcount;
//运动员人数
intboyscore;
//男子团体总分
intgirlscore;
//女子团体总分
inttotalscore;
//团体总分
intjifen;
//积分
Studentstudents[20];
//参赛学生
structSchoolNode*next;
}SchoolNode,*School;
4.2系统主要模块设计
(1)创建学校链表算法思想及程序代码:
voidCreatSchoolLink(School&
head)
{//创建学校的链表
Schoolp;
inti;
head=p=(School)malloc(sizeof(SchoolNode));
for(i=1;
i<
=SchoolCount;
i++)
{p=p->
next=(School)malloc(sizeof(SchoolNode));
printf("
请输入编号为%d的学校的名称:
\n"
i);
scanf("
%s"
p->
name);
p->
number=i;
count=0;
boyscore=0;
girlscore=0;
totalscore=0;
jifen=0;
}
next=NULL;
//使指针指向空
head=head->
next;
//头指针后移
}
(2)添加获奖学生函数程序代码:
voidAddStudentLink(School&
{//添加获奖学生
SchoolL,p;
intSchool_ID;
//学校编号
charStudentName[20];
//学生姓名
intsex;
//性别
intProject_ID;
//项目编号
intscore;
//成绩
intranking;
//名次
请输入学生的姓名:
);
StudentName);
请输入该学生所在学校的编号:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 运动会 分数 统计 课程设计