白維維,王 萍,蘭 帆,時 進
(河海大學物聯網工程學院,江蘇 常州 213022)
在國內外大型綜合性體育賽事中競賽信息系統已經成為與賽事密不可分的組成部分,而競賽成績處理系統是聯系競賽信息系統各個環節的紐帶和核心。跳水競賽成績處理系統主要任務有:完成各種基礎數據的錄入工作;競賽日程編排,出場序編排,按照競賽規則對競賽數據進行處理;生成,打印,分發報表。基于運動會比賽的不可重復性、內容多變性、嚴格的實時性要求等特點,該系統根據跳水特點,基于軟件設計中面向對象思想,綜合應用三層軟件體系架構設計整個成績處理系統。采用三層體系結構,將系統的顯示、業務邏輯和存儲分層處理,降低層與層間的依賴性,使之具有分布性強、維護方便、開發簡單且共享性強、總體成本低等特點。本系統已通過了中華人民共和國第十二屆全運會符合性測試,滿足競賽需求。
為滿足競賽需求,配合比賽,競賽成績系統主要包括以下幾個功能:基礎信息管理,對賽會信息,場館信息,競賽項目等信息進行管理;裁判信息管理,對裁判基礎信息,裁判分工任務,裁判抽簽情況等進行管理;報名報項管理,對代表團、運動員及其報項信息進行管理;賽事編排,對運動員的出場順序等信息進行抽簽編排;成績綜合處理,對從數據采集端發送過來的成績數據進行處理,并能手動或自動排名,晉級等,遇到同名情況還可以進行相關處理,如加賽。
跳水競賽成績處理系統軟件功能結構如圖1所示。

圖1 跳水競賽成績處理系統軟件功能結構圖
根據競賽需求,跳水業務流程如下:
在比賽開始前,需要先從中央成績處理系統接受運動員報名報項系統的運動員報名報項數據,并對這些報名報項數據進行管理,根據競賽規則、參賽代表團、參賽與報項人數進行賽事編排。
在比賽進行時,采集并接收前端數據采集系統的成績數據,或手工錄入現場比賽成績數據,進行排名,晉級等成績處理以及特殊情況的處理。并且能實時提供現場競賽成績信息給電視字幕、現場顯示系統等。
在比賽結束后,及時發布現場競賽信息與報表至數據中心,通過Internet發布到官方網站上。
跳水競賽成績處理系統功能模塊如圖2所示。

圖2 跳水競賽成績處理系統功能模塊圖
跳水競賽成績處理系統是整個競賽信息系統數據信息綜合處理的中樞,它不僅需要為現場成績處理和現場競賽提供組織與管理服務,還要通過現場顯示服務系統為現場觀眾服務。除此之外還要為電視轉播以及其他更為廣泛的信息發布系統提供數據接口服務。
跳水競賽成績處理系統涉及到大量的數據處理操作,包括對內部擁有的數據進行維護,對從計時記分系統獲取的數據進行解析,對產生的晉級、名次和獎牌數據等進行上傳,以及對以上數據的存儲等。這些業務十分復雜,各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,哪一部分都是不可替換的。但業務邏輯依賴于競賽規程,常常會改變,一旦改變,則要改變多個業務邏輯的設計,如果設計不好,會影響到系統的功能擴展、維護和系統重用。
為解決這些問題,考慮采用三層體系結構,將系統顯示,業務邏輯和存儲分層處理,降低層與層間的依賴性,既可以保證未來良好的可擴展性,在復用性上也是優勢明顯。每個功能模塊一旦定義好統一的接口,就可以被各個模塊所調用,而不是為相同的功能進行重復開發。
在業務邏輯的設計上,考慮到由于大量的重復性操作,設計專門的數據訪問服務件來簡化同意類型的操作,減少相同或相似業務邏輯對數據庫訪問的重復代碼編寫;競賽成績處理系統的業務邏輯也不復雜,包括維護、解析、下發和存儲。但由于涉及到的數據量大,因此針對這些業務邏輯在設計業務類時需要竟可能設計小而簡單的類,避免類中包含過多的屬性,并簡化各業務類之間的關系,即遵循“高內聚低耦合”的設計準則[1]。競賽成績處理系統的功能模塊較多,業務量也比較大,在軟件界面設計時需要針對各功能模塊設計形式簡潔、層次清晰的窗體,以減少成績處理操作員的誤操作。
跳水競賽成績處理系統軟件設計采用三層體系架構,即針對跳水競賽成績處理系統實現進行數據訪問層、業務邏輯層和表示層的設計。
數據訪問層設計使用.NET平臺下Ado.Net數據庫訪問技術完成數據訪問服務組件TAPP[2]。該組件提供給應用程序用于數據庫連接,執行查詢語句或執行過程,檢索結果等數據庫操作所需要的類和接口。業務邏輯層通過調用這些類和接口可以直接實現對數據庫的讀寫操作。后臺數據是競賽系統的寶貴財產,安全性是一個非常重要的問題。三層結構將業務邏輯數據通過中間層和客戶分離,保障了業務數據的安全性[3]。
業務邏輯層主要設計實現對比賽基礎數據、,報名報項數據等的維護,對排名獎牌數據等的現實,以及比賽安排數據,賽時數據等的對外交換等。其中對數據維護的實現是建立在數據庫訪問的基礎上,完成數據的添加,刪除,修改等操作;對數據顯示的實現也是建立在數據庫訪問的基礎上,通過預定義的控制操作完成;對外數據交換的實現則通過數據的接口在雙方約定接口協議下完成。
表示層的設計目標是針對各業務功能在系統主窗口下進行對應的義務功能窗口人機交互界面設計。在窗體形式、操作命令層次等細節上進行詳細的設計,以富有觀賞性和操作性的人機交互界面滿足系統的設計需求。
采用三層體系結構,將跳水競賽業務邏輯和數據的存儲顯示等訪問操作分離,極大地提高了系統靈活性,實現低耦合[4],所有的業務模塊都將獨立,遇到不同的比賽、競賽需求的改變,不必對系統結構進行改動,只需對所影響的業務邏輯進行改變,不會對其他功能模塊產生影響,便于項目的二次開發。
本設計中使用的三層體系架構如圖3所示。

圖3 三層體系架構
基于以上研究,跳水競賽成績處理系統的軟件設計在三層體系架構下,各功能模塊的應用包括:
(1)數據訪問層應用
首先,根據業務需求,編寫具體的數據訪問公共服務類,包括數據庫增、刪、改、查等功能的TDB類。TDB類中提供了一種根據業務需求從數據井里面一層層提取所需數據、減少業務邏輯層重復數據篩選工作。接著,創建一個組件類,在組件類里,創建應用程序對象,這樣在表示層進行具體操作時,可以通過這個對象來實現這些數據訪問公共服務類所完成的功能。
(2)業務邏輯層應用
根據跳水項目的業務邏輯,編寫具體的跳水業務邏輯類,如報名報項類 TRegcomp、成績處理類TRegCompResult,TJumpResult,TRoundResult。TJumpResult類里面包含了跳水運動員每一跳成績的計算和排名方法及其相關操作,而TRoundResult類里面則包含了每一輪成績所相關的業務邏輯處理方法。在基礎數據方面,則根據業務邏輯創建TAthlete,TDelegation,TRound,TSportItem 類。這些類都對應了數據庫中一張具體的數據表,所以,在編寫類時,首先根據數據表中的字段定義類成員變量,然后根據數據訪問層返回的信息,構造類對象,并且把新構造的類添加到一個全局List對象中,方便程序的數據操作。
(3)表示層應用
首先,由基類Office2007Form創建軟件主窗體MainForm,設置窗口標題等信息,加載各功能模塊界面和功能按鈕。接著,由TInfo基類創建各功能模塊業務類,包括由基類創建基礎數據模塊業務類、報名報項業務類、賽事計劃業務類、賽事成績管理業務類和報表管理模塊業務類,編寫構造函數和一次性初始化函數 Override Doinit()。然后,針對各功能模塊創建業務主窗口,即賽事計劃主窗體、運動員信息主窗體、代表團信息主窗體、報名報項主窗體、賽事管理主窗體、賽事報表主窗體,并設置各自窗體的控件。在各功能模塊業務主窗體代碼中重載主窗體初始化函數。在主窗體Load事件中加載各功能模塊業務類對象,在各對象按鈕中激活業務對象主窗體。然后在各功能模塊業務類中編寫各功能模塊的業務函數。業務函數與界面對象無關,數據依靠參數進行傳遞與交換,通常是數據庫讀寫、排名、排序、判罰等操作。完成數據讀寫后,通常要進行業務數據集的刷新操作。完成業務數據函數編寫后,在各業務功能模塊窗口中創建業務處理窗口,設置好所需的窗口控件。編寫業務處理窗口代碼。業務窗口的驅動代碼在業務類中完成,主要包括創建業務窗口對象實例,設置業務窗口模式,設置業務處理窗口的DataView對象,調用業務處理窗體的DoReFresh()方法等。在業務主窗體中通過調用業務窗體驅動函數或編寫業務處理代碼實現各功能模塊的業務功能。
跳水競賽成績處理系統軟件設計流程如圖4所示。

圖4 跳水競賽成績處理系統軟件流程
跳水競賽成績處理系統軟件主界面如圖5所示。

圖5 跳水競賽成績處理系統軟件主界面
根據目前體育競賽信息系統現狀,針對跳水比賽需要,提出了跳水競賽成績處理信息系統的設計方案。該方案在軟件體系設計上采用三層體系架構,將跳水競賽業務邏輯和數據存儲顯示等訪問操作分離,極大地提高了系統的靈活性。根據系統實際需要,進行了數據庫設計,并根據業務分類,方便了操作及賽事實時成績的存取,完全滿足競賽需求。
[1]殷泰暉.C#編程從基礎到實踐[J].北京:電子工業出版社,2007,6.
[2]李紅芹.基于三層架構的.NET數據庫業務系統開發[J].計算機與現代化,2009(10):120 -125.
[3]趙明亮.淺談三層架構[J].科學與財富,2011(7):224-224.
[4]湯永華.基于三層體系架構的圖紙分發管理系統的開發[J].梅山科技,2009(6):18-23.