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

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

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

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

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

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