華澤,程偉,陸悠,張妮
(蘇州科技大學電子與信息工程學院,蘇州215009)
互聯網的迅猛發展導致各行業都離不開信息化[1-2]。隨著各類體育賽事的快速普及及觀眾對球類賽事關注度的增加,越來越需要專業的管理軟件來進行賽事安排、對賽況實時計時計分、記錄賽事成績以及對賽事成績和結果進行各種統計匯總等管理,以提高賽事管理水平,減少工作者的勞動量,提高管理效率[3-4]。本系統采用B/S結構,以SSM為框架,前臺利用EasyUI自行搭建項目樣式,利用MySQL作為后臺數據庫進行開發,以籃球賽事管理系統為例來實現。
根據籃球系列賽事需求,為做好體育賽事的各項管理工作,在進行大型體育賽事之前,能夠將各種活動與工作有效歸類,妥當安排。本系統從報名開始,到賽事進行的每一個環節及結果進行信息化統一管理。系統設計實現了以下功能:
(1)信息管理:包括個人、球隊、球員的信息等。
(2)籃球賽事報名管理:用于對欲參賽的球隊進行報名。
(3)比賽過程管理:用于對組內循環賽、淘汰賽、決賽等過程進行管理。
(4)組內循環賽管理:用于對分組內的球隊安排組內循環比賽,并根據比賽結果得到每組的勝利隊,即出線隊伍。
(5)淘汰賽及決賽管理:根據循環賽及上輪比賽結果取出的出線隊伍,進行淘汰賽,并對淘汰賽的各環節進行管理。
(6)實時計時記分管理:實時記錄顯示賽事比賽過程狀況、成績的產生過程,記錄賽事各階段成績,實時記錄賽事的時間。
(7)名次與晉級情況管理:通過綜合信息查詢顯示各階段晉級情況,并打印晉級結果。
整個系統由球隊信息模塊、球隊報名模塊、分組信息管理模塊、實時計時計分模塊、球隊晉級管理模塊、賽事結果管理模塊和報表輸出管理模塊等共12個模塊組成。系統的總體功能結構圖如圖1所示。
此模塊主要是對參賽隊伍的隨機分組,為組內循環賽做好準備。系統首先取得所有球隊,根據確定的分組數,隨機生成組別與每組對應球隊。分組算法的設計中,首先根據前臺提供的數據,獲得分組數,在數據庫中直接獲得所有球隊,根據分組數生成組別,再隨機對參賽球隊分入不同的參賽組。

圖1 系統功能結構圖
此模塊主要用于比賽各階段賽事的安排,分為組內循環賽和淘汰賽兩個階段的賽事安排,故有兩種不同的算法。
第一,組內循環賽算法:通過遞歸算法,隨機生成組內任意兩兩球隊比賽,主要代碼如下,其中type比賽類型:

第二,循環賽后的淘汰賽與半決賽以及決賽算法。首先是根據循環賽中凈勝局多少來安排,如果凈勝局一致,則根據總比分來判斷。只有上一輪中的優勝隊才能進入淘汰賽,主要代碼如下:

對于淘汰賽安排比賽的結果,基本與組內循環賽原理相同,區別在于安排。主要實現代碼如下:

如果是組內循環賽,則首先根據分組,從每組中選出兩隊優勝隊,再選出優勝隊的同時,通過一個比較接口直接將優勝隊做一個降序排序,以便在下輪比賽時直接進行賽事安排。主要實現代碼如下:

上述算法獲得對應排名,是根據組內比賽的情況獲取的,在淘汰賽的時候,需要將每組選出兩組勝隊,組合在一起就是下一輪的比賽隊伍。但是這樣組合的晉級隊伍,并沒有根據凈勝局以及比分進行排序,為方便淘汰賽的賽事安排,所以在這里對這些隊伍進行了排序算法,其主要實現代碼如下:

根據前臺調用的晉級隊伍的方法取得所有晉級隊伍的結果情況展示效果如圖2所示。

圖2 晉級隊伍結果展示圖
此模塊主要實現任何階段的比賽過程中實時計時計分操作與實時計時計分的結果顯示與結果記錄,當運動員得分的時候,能為這個隊伍加上相應的得分值,當罰球等情況出現時,能夠停止倒計時,能夠隨著倒計時的結束比賽自動結束,能將比賽結果儲存且可供以后導出。當比賽開始的時候自動顯示倒計時,兩個隊伍的比分為0:0,隨著比賽的實時進行,倒計時的時間和比分將會實時變化。主要代碼如下:

正常比賽狀況下比賽狀態為true,若暫?;蛄P球,則比賽狀態變為false,將停止倒計時。繼續開始比賽后,倒計時將開始重新倒計時,實現代碼如下:

比賽中賽事情況是實時顯示的,當球隊得分時系統能自動為其加分,然后繼續實時顯示比分結果。相關代碼如下:

對于頁面中的實時顯示數據的操作,主要是在頁面加載時通過AJAX技術中的語句$("#twoTeam").text(data)直接獲得數據并且進行展示。完成加分后,在頁面上進行顯示實時比賽的結果。其運行效果圖如圖3所示。
此模塊主要是用于實現各階段賽事結果的查詢與顯示,包括組內循環賽以及淘汰賽等比賽過程結果的顯示與查看。首先得到根據組別從賽事安排中得到所有比賽的隊伍以及根據比賽ID以及比賽類型獲得所有比賽的比分,對這些詳細比分進行sum聚合,得到總比分。根據比賽類型去統計每只球隊共比賽多少場次,根據總比分的結果進行統計勝利局數。做一個統計,并從頁面展示出來。其實現代碼如下:

圖3 實時計時計分效果圖
隨著倒計時結束對應場次的比賽結束,顯示并記錄比賽結果,如圖4所示。

圖4 比賽結果圖
第一步,取得所有的成績,統計比賽結果

第二步,對上一步取得結果進行統計,以勝負的形式統計

最主要的是在統計的時候where條件需要加上AND a.team_id!=b.team_id
最后,將上兩步得到的結果進行聚合,通過勝局與小比分來排序


以上算法通過sql語句根據控制器傳來的參數到service進行處理,service再調用sql。
球隊信息的查詢,比賽場次的安排查詢、成績信息的記錄查詢、球隊報名信息查詢等都可以進行。查詢結果顯示時可以分頁顯示,是通過EasyUI往后臺傳入分頁的數據,EasyUI傳入的參數為page,rows,后臺直接獲取就可以,rows就是每頁顯示的記錄的總個數。
報表導出主要是用于導出成績信息等查詢到的數據,所有的導出其核心原理都是相同的,主要是通過引用jar實現及HSSFWorkbook來實現的。
前臺頁面用的是EasyUI,頁面分為北區,西區,中區以及南區等模塊,每個部分放置不同的功能與布局。首先在外圍框架中:北區用于放置一些圖表,主要是密碼修改,退出登錄,加入收藏等。西區主要是放置菜單與導航欄。南區主要是用于版權信息的描述等。中區則用于數據的展示,相當于iframe,嵌入一個新的頁面。其實現原理是在EasyUI中大部分是以表格的形式顯示所有的數據,通過前臺的ajax去請求url(基本是控制器)來得到相應的數據,根據固定的樣式去顯示所有的數據。在頁面中利用echarts來完成圖表的展示,即可以在頁面中顯示圖表的數據,也能隨意切換與導出圖片。
本文設計實現了籃球單項賽事管理系統,通過12個功能模塊的實現,完成了系統的全部功能,經過試用,功能全面,運行效果良好,增加了觀眾現場觀看的舒適度,提高了體育事業管理信息化水平,推動了體育事業的發展。
[1]劉清早.體育賽事運作管理[M].人民體育出版社,2006.
[2]曾錫少.基于樹形結構模型足球成績系統的研究與設計[J].微型機與應用,2016,10.
[3]侯玉潔,王莎莎.北京國際高水平單項體育賽事運營模式研究[J].北京體育大學學報,2012,8.
[4]殷立軍.基于組件技術的體育賽事管理信息系統設計與實現[J].軟件導刊,2011,11.
[5]宋冰.大型體育賽事管理運營機制研究[J].體育科技文獻通報,2016(05):46-47.