篮球赛事成绩管理系统设计与实现
2018-03-14华泽程伟陆悠张妮
华泽,程伟,陆悠,张妮
(苏州科技大学电子与信息工程学院,苏州215009)
0 引言
互联网的迅猛发展导致各行业都离不开信息化[1-2]。随着各类体育赛事的快速普及及观众对球类赛事关注度的增加,越来越需要专业的管理软件来进行赛事安排、对赛况实时计时计分、记录赛事成绩以及对赛事成绩和结果进行各种统计汇总等管理,以提高赛事管理水平,减少工作者的劳动量,提高管理效率[3-4]。本系统采用B/S结构,以SSM为框架,前台利用EasyUI自行搭建项目样式,利用MySQL作为后台数据库进行开发,以篮球赛事管理系统为例来实现。
1 系统设计
根据篮球系列赛事需求,为做好体育赛事的各项管理工作,在进行大型体育赛事之前,能够将各种活动与工作有效归类,妥当安排。本系统从报名开始,到赛事进行的每一个环节及结果进行信息化统一管理。系统设计实现了以下功能:
(1)信息管理:包括个人、球队、球员的信息等。
(2)篮球赛事报名管理:用于对欲参赛的球队进行报名。
(3)比赛过程管理:用于对组内循环赛、淘汰赛、决赛等过程进行管理。
(4)组内循环赛管理:用于对分组内的球队安排组内循环比赛,并根据比赛结果得到每组的胜利队,即出线队伍。
(5)淘汰赛及决赛管理:根据循环赛及上轮比赛结果取出的出线队伍,进行淘汰赛,并对淘汰赛的各环节进行管理。
(6)实时计时记分管理:实时记录显示赛事比赛过程状况、成绩的产生过程,记录赛事各阶段成绩,实时记录赛事的时间。
(7)名次与晋级情况管理:通过综合信息查询显示各阶段晋级情况,并打印晋级结果。
整个系统由球队信息模块、球队报名模块、分组信息管理模块、实时计时计分模块、球队晋级管理模块、赛事结果管理模块和报表输出管理模块等共12个模块组成。系统的总体功能结构图如图1所示。
2 系统主要功能实现
2.1 球队分组算法模块的实现
此模块主要是对参赛队伍的随机分组,为组内循环赛做好准备。系统首先取得所有球队,根据确定的分组数,随机生成组别与每组对应球队。分组算法的设计中,首先根据前台提供的数据,获得分组数,在数据库中直接获得所有球队,根据分组数生成组别,再随机对参赛球队分入不同的参赛组。
图1 系统功能结构图
2.2 赛事安排模块的实现
此模块主要用于比赛各阶段赛事的安排,分为组内循环赛和淘汰赛两个阶段的赛事安排,故有两种不同的算法。
第一,组内循环赛算法:通过递归算法,随机生成组内任意两两球队比赛,主要代码如下,其中type比赛类型:
第二,循环赛后的淘汰赛与半决赛以及决赛算法。首先是根据循环赛中净胜局多少来安排,如果净胜局一致,则根据总比分来判断。只有上一轮中的优胜队才能进入淘汰赛,主要代码如下:
对于淘汰赛安排比赛的结果,基本与组内循环赛原理相同,区别在于安排。主要实现代码如下:
2.3 晋级队伍的确定
如果是组内循环赛,则首先根据分组,从每组中选出两队优胜队,再选出优胜队的同时,通过一个比较接口直接将优胜队做一个降序排序,以便在下轮比赛时直接进行赛事安排。主要实现代码如下:
上述算法获得对应排名,是根据组内比赛的情况获取的,在淘汰赛的时候,需要将每组选出两组胜队,组合在一起就是下一轮的比赛队伍。但是这样组合的晋级队伍,并没有根据净胜局以及比分进行排序,为方便淘汰赛的赛事安排,所以在这里对这些队伍进行了排序算法,其主要实现代码如下:
根据前台调用的晋级队伍的方法取得所有晋级队伍的结果情况展示效果如图2所示。
图2 晋级队伍结果展示图
2.4 实时计时计分功能的实现
此模块主要实现任何阶段的比赛过程中实时计时计分操作与实时计时计分的结果显示与结果记录,当运动员得分的时候,能为这个队伍加上相应的得分值,当罚球等情况出现时,能够停止倒计时,能够随着倒计时的结束比赛自动结束,能将比赛结果储存且可供以后导出。当比赛开始的时候自动显示倒计时,两个队伍的比分为0:0,随着比赛的实时进行,倒计时的时间和比分将会实时变化。主要代码如下:
正常比赛状况下比赛状态为true,若暂停或罚球,则比赛状态变为false,将停止倒计时。继续开始比赛后,倒计时将开始重新倒计时,实现代码如下:
比赛中赛事情况是实时显示的,当球队得分时系统能自动为其加分,然后继续实时显示比分结果。相关代码如下:
对于页面中的实时显示数据的操作,主要是在页面加载时通过AJAX技术中的语句$("#twoTeam").text(data)直接获得数据并且进行展示。完成加分后,在页面上进行显示实时比赛的结果。其运行效果图如图3所示。
2.5 赛事结果查询实现
此模块主要是用于实现各阶段赛事结果的查询与显示,包括组内循环赛以及淘汰赛等比赛过程结果的显示与查看。首先得到根据组别从赛事安排中得到所有比赛的队伍以及根据比赛ID以及比赛类型获得所有比赛的比分,对这些详细比分进行sum聚合,得到总比分。根据比赛类型去统计每只球队共比赛多少场次,根据总比分的结果进行统计胜利局数。做一个统计,并从页面展示出来。其实现代码如下:
图3 实时计时计分效果图
随着倒计时结束对应场次的比赛结束,显示并记录比赛结果,如图4所示。
图4 比赛结果图
第一步,取得所有的成绩,统计比赛结果
第二步,对上一步取得结果进行统计,以胜负的形式统计
最主要的是在统计的时候where条件需要加上AND a.team_id!=b.team_id
最后,将上两步得到的结果进行聚合,通过胜局与小比分来排序
以上算法通过sql语句根据控制器传来的参数到service进行处理,service再调用sql。
2.6 信息查询及分页功能实现
球队信息的查询,比赛场次的安排查询、成绩信息的记录查询、球队报名信息查询等都可以进行。查询结果显示时可以分页显示,是通过EasyUI往后台传入分页的数据,EasyUI传入的参数为page,rows,后台直接获取就可以,rows就是每页显示的记录的总个数。
2.7 报表导出实现
报表导出主要是用于导出成绩信息等查询到的数据,所有的导出其核心原理都是相同的,主要是通过引用jar实现及HSSFWorkbook来实现的。
2.8 前台页面实现
前台页面用的是EasyUI,页面分为北区,西区,中区以及南区等模块,每个部分放置不同的功能与布局。首先在外围框架中:北区用于放置一些图表,主要是密码修改,退出登录,加入收藏等。西区主要是放置菜单与导航栏。南区主要是用于版权信息的描述等。中区则用于数据的展示,相当于iframe,嵌入一个新的页面。其实现原理是在EasyUI中大部分是以表格的形式显示所有的数据,通过前台的ajax去请求url(基本是控制器)来得到相应的数据,根据固定的样式去显示所有的数据。在页面中利用echarts来完成图表的展示,即可以在页面中显示图表的数据,也能随意切换与导出图片。
3 结语
本文设计实现了篮球单项赛事管理系统,通过12个功能模块的实现,完成了系统的全部功能,经过试用,功能全面,运行效果良好,增加了观众现场观看的舒适度,提高了体育事业管理信息化水平,推动了体育事业的发展。
[1]刘清早.体育赛事运作管理[M].人民体育出版社,2006.
[2]曾锡少.基于树形结构模型足球成绩系统的研究与设计[J].微型机与应用,2016,10.
[3]侯玉洁,王莎莎.北京国际高水平单项体育赛事运营模式研究[J].北京体育大学学报,2012,8.
[4]殷立军.基于组件技术的体育赛事管理信息系统设计与实现[J].软件导刊,2011,11.
[5]宋冰.大型体育赛事管理运营机制研究[J].体育科技文献通报,2016(05):46-47.