陳 莉 張耀斌
VB平臺(tái)下籃球比賽工作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
陳 莉 張耀斌
我校體育館安裝了一塊5.12 m(長(zhǎng))×2.88 m(寬)P5全彩LED顯示屏,我們希望這塊大屏能在學(xué)校的體育傳統(tǒng)項(xiàng)目——籃球比賽中充分發(fā)揮其顯示的作用??紤]到專業(yè)的比賽系統(tǒng)價(jià)格昂貴,筆者嘗試著編寫了一個(gè)單機(jī)版的程序?qū)崿F(xiàn)這一功能,接下來(lái)就談?wù)勱P(guān)于這個(gè)籃球比賽工作系統(tǒng)的開發(fā)過(guò)程。
筆者選擇了VB作為該系統(tǒng)的開發(fā)平臺(tái),主要從以下幾方面考慮。
(1)從客戶的需要角度來(lái)看,最終只需在大屏上顯示比賽的基本信息以及比賽中的比分、犯規(guī)記錄以及計(jì)時(shí)等數(shù)據(jù),VB的常用控件都能實(shí)現(xiàn)。
(2)從開發(fā)的技術(shù)角度來(lái)看,VB是基本的高級(jí)程序語(yǔ)言,可讀性好,對(duì)于開發(fā)者的技術(shù)要求不高。
(3)從系統(tǒng)的操控性來(lái)看,所有的顯示信息只需一個(gè)工作人員在單機(jī)上記錄控制,再將比賽信息輸出到大屏上,那么一臺(tái)計(jì)算機(jī)就可以完成所有的工作。
考慮到這只是一個(gè)單機(jī)版的程序,沒有多用戶登錄,無(wú)須在互聯(lián)網(wǎng)上發(fā)布,因此對(duì)于數(shù)據(jù)安全的要求不高,再?gòu)某绦虻墓δ苌峡瓷婕暗年P(guān)系表和字段都不多,因此選用Access實(shí)現(xiàn)。
整個(gè)數(shù)據(jù)庫(kù)中設(shè)計(jì)了:球隊(duì)信息表、隊(duì)員信息表、比賽對(duì)陣表、比賽信息表、比賽記錄表、時(shí)間記錄表這6張表。其中,球隊(duì)信息表和隊(duì)員信息表分別用于記錄球隊(duì)信息和隊(duì)員信息;比賽對(duì)陣表中記錄了場(chǎng)次和對(duì)陣信息;比賽信息表中記錄了比賽名稱、當(dāng)前比賽場(chǎng)次和小節(jié);比賽記錄表中記錄了比賽進(jìn)行中的所有情況,如投球得分、罰球命中、罰球未中、犯規(guī)、暫停等信息;另外為了防止工作人員的誤操作,程序中還設(shè)計(jì)了撤銷功能,所以筆者用時(shí)間記錄表記錄下撤銷或關(guān)閉窗體時(shí)的時(shí)間,待恢復(fù)時(shí)能繼續(xù)接著計(jì)時(shí)。
1.系統(tǒng)結(jié)構(gòu)圖(如圖1所示)

圖1
2.主要功能實(shí)現(xiàn)及開發(fā)思路
(1)賽前準(zhǔn)備
賽前準(zhǔn)備主要是清空數(shù)據(jù)庫(kù)里原有的所有記錄信息,并導(dǎo)入本次比賽的相關(guān)數(shù)據(jù)。這里主要提供了批量導(dǎo)入和逐個(gè)修改相結(jié)合的功能。
根據(jù)通常用戶的習(xí)慣,對(duì)于一次比賽所有參賽球隊(duì)的信息可以用Excel文件一次性批量導(dǎo)入到team(球隊(duì)信息表)中。這里主要使用了CommonDialog控件來(lái)獲取Excel文件的路徑,再通過(guò)ADODB連接Access數(shù)據(jù)庫(kù)實(shí)現(xiàn)信息的逐條導(dǎo)入,在導(dǎo)入的過(guò)程中還要考慮到導(dǎo)入數(shù)據(jù)是否重復(fù)等問(wèn)題。成功導(dǎo)入后還將導(dǎo)入信息顯示在ListBox控件中,以便用戶及時(shí)檢查信息是否有誤。
導(dǎo)入隊(duì)員信息的方法跟導(dǎo)入球隊(duì)是類似的,但這里筆者采用了逐隊(duì)導(dǎo)入,也就是讓各球隊(duì)按要求提供自己的隊(duì)員名單,再在球隊(duì)信息已導(dǎo)入的前提下,通過(guò)ComboBox控件列出表team中所有的球隊(duì)信息,再逐一選擇來(lái)導(dǎo)入相應(yīng)的隊(duì)員信息。
對(duì)于球隊(duì)和隊(duì)員信息提供批量導(dǎo)入的功能外,查詢、添加、修改、刪除的功能也是必不可少的。
(2)比賽設(shè)置
這里主要設(shè)置兩類信息:一是本次比賽的相關(guān)信息,如比賽名稱、場(chǎng)次選擇、賽制設(shè)置等,主要影響的是比賽中大屏顯示的信息以及倒計(jì)時(shí)問(wèn)題;二是對(duì)陣信息(如圖2所示)。

圖2
對(duì)陣信息一般是在比賽前通過(guò)抽簽臨時(shí)產(chǎn)生的,所以這里主要使用逐條添加設(shè)置的方法。
(3)比賽開始
這是比賽過(guò)程中操作的部分,設(shè)計(jì)了“比賽控制”和“比賽顯示”兩個(gè)界面(如圖3、圖4所示),通過(guò)分屏顯示的辦法讓控制界面留在工作計(jì)算機(jī)上,而讓顯示界面顯示在比賽大屏上,這里需要精確地算好顯示界面的位置,在控制界面加載的同時(shí)用代碼:game_ show.Show game_show.Left = …… game_show.Top = 0加以控制(game_show為“比賽顯示”界面的名稱)。這兩個(gè)界面大小可以一樣也可以不一樣,但“比賽顯示”界面的尺寸必須考慮與大屏的分辨率相匹配。

圖3 比賽控制界面

圖4 比賽顯示界面
從內(nèi)容上看這兩個(gè)界面基本一致,只是顯示界面上沒有控制按鈕,而控制界面上省略了犯規(guī)標(biāo)記燈。但在控制界面里的每一個(gè)操作都會(huì)在兩個(gè)界面上同時(shí)反饋,例如某個(gè)隊(duì)員得分后,通過(guò)代碼:lab_MemScoreA(Index) = MemScore和 game_show. lab_MemScoreA(Index) = MemScore把算好的得 分(MemScor)同時(shí)顯示在當(dāng)前控制界面的lab_MemScoreA和顯示界面(game_show)的lab_MemScoreA標(biāo)簽中,以此實(shí)現(xiàn)控制界面和顯示界面的同步。
(4)賽后統(tǒng)計(jì)
比賽中產(chǎn)生的所有信息都記錄在了表detail(比賽記錄表)中(如圖5所示),要實(shí)現(xiàn)賽后的技術(shù)統(tǒng)計(jì)也就不難了。在這個(gè)界面里使用了MSFlexGrid控件來(lái)顯示查詢結(jié)果,并設(shè)計(jì)了導(dǎo)出成Excel文件和打印輸出的功能。

圖5
經(jīng)過(guò)比賽的應(yīng)用實(shí)踐,發(fā)現(xiàn)這個(gè)系統(tǒng)在后續(xù)開發(fā)中可以從以下幾方面進(jìn)一步深入完善。
1.與24秒計(jì)時(shí)器連接
目前該程序的開始或暫停的控制是靠操作人員聽裁判的哨音執(zhí)行的,而賽場(chǎng)另有一套計(jì)時(shí)系統(tǒng),尤其是籃球比賽中有“24秒”的進(jìn)攻規(guī)則,場(chǎng)上專門有24秒計(jì)時(shí)器,一旦球被控制在某一方24秒內(nèi)沒有完成投籃,哨音就會(huì)響起,比賽就會(huì)暫停,則發(fā)球權(quán)判給對(duì)方。
因此考慮系統(tǒng)最好能與24秒計(jì)時(shí)器相連,需要在24秒計(jì)時(shí)器安裝前完成計(jì)算機(jī)與計(jì)時(shí)器的通訊連接,并將其計(jì)時(shí)的數(shù)據(jù)導(dǎo)入程序系統(tǒng),這樣就不用再靠聽裁判的哨音暫停比賽從而發(fā)生計(jì)時(shí)上的誤差。
2.用.net實(shí)現(xiàn)網(wǎng)絡(luò)發(fā)布
目前該系統(tǒng)是用VB平臺(tái)開發(fā)的,單機(jī)操作與對(duì)外顯示沒有問(wèn)題,但如果換成.net架構(gòu),不僅可以便于多用戶操作,還可以實(shí)現(xiàn)在互聯(lián)網(wǎng)上發(fā)布比賽的實(shí)時(shí)動(dòng)態(tài)。
陳莉,本科,中教一級(jí)。張耀斌,本科,中教高級(jí)。江蘇省南京市人民中學(xué),210005