福建省公安消防總隊信息通信處 章瑞斌
用ACCESS設(shè)計消防運動會記分統(tǒng)計系統(tǒng)
福建省公安消防總隊信息通信處 章瑞斌
本文通過對近年來消防運動會項目設(shè)置規(guī)律的研究,利用微軟OFFICE組件之一的ACCESS數(shù)據(jù)庫軟件,從數(shù)據(jù)庫、成績錄入、名次統(tǒng)計等主要方面進行設(shè)計,以期快速建設(shè)一個適應(yīng)消防部隊需要的、較為完善的記分統(tǒng)計系統(tǒng)。
運動會;記分;消防;ACCESS
近年來,隨著我國經(jīng)濟體制改革的深入,人民群眾生活水平得到有效提高,但與此同時各類火災(zāi)等安全隱患也呈上升趨勢。為應(yīng)對這一變化,消防部隊推行了實戰(zhàn)化訓(xùn)練,并依此開展了消防運動會等比武、競賽活動,以激勵部隊訓(xùn)練熱情、檢驗部隊訓(xùn)練成果。
由于參加人員、比賽場地、裝備本性斬差異,消防運動會在項目設(shè)置、計分方式等方面差異較大,每次比武、比賽都需定制開發(fā)記分統(tǒng)計系統(tǒng)。能否研制一款適應(yīng)消防部隊比武、競賽需要的記分統(tǒng)計系統(tǒng),實現(xiàn)快速成績統(tǒng)計和成績發(fā)布,成為當前消防部隊的現(xiàn)實需要。
近年來,為適應(yīng)實戰(zhàn)化訓(xùn)練的要求,消防部隊開展了多種多樣的比武競賽活動。僅就福建省而言,全省消防部隊每年舉辦各類拉動演練或比武競賽活動過百場。分析這些比武競賽有如下特點:
1.1 參賽隊伍不確定。依據(jù)人員構(gòu)成不同,參賽隊伍可分為:有現(xiàn)役隊、專職隊、義務(wù)隊。專職隊又分為:政府專職隊、鄉(xiāng)鎮(zhèn)專職隊、企業(yè)專職隊?,F(xiàn)役隊又分為:特勤隊、普通隊。
1.2 比賽項目不確定。比賽項目分為:個人項目、兩人項目、多人項目、整建制項目、集體項目、團體項目等。項目設(shè)置依據(jù)比賽場地和當前業(yè)務(wù)發(fā)展需要設(shè)置,具有較大的隨機性和不確定性。
1.3 計分方式不確定。由于參賽隊伍多樣性、比賽項目多樣性,導(dǎo)致計分方式也存在許多不確定性。有的采取百分制記取分數(shù)、有的采取時間記取分數(shù);以時間為記分方式的,又可分為:記取單人成績的、記取雙人成績的、記取整體成績的、分段記取成績的等,其中還存在違規(guī)加秒和不計取成績等多種情況。
Microsoft Office Access是由微軟發(fā)布的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它結(jié)合了Microsoft Jet Database Engine和圖形用戶界面兩項特點,是Microsoft Office的系統(tǒng)程序之一。
Microsoft Office Access提供了一個豐富的開發(fā)環(huán)境,可以讓開發(fā)人員減少代碼工作量,快速搭建設(shè)應(yīng)用程序。
通過對消防比賽項目的分析,我們可以將比賽項目按記分方式進行分類:
3.1.1 計分制項目。指直接計取比賽項目的整數(shù)或小數(shù)成績的項目。此類項目成績越高,其排名越靠前。如:總分為100分制的項目等。
3.1.2 計時制項目。指計取比賽用時的項目。此類項目用時越短,其排名越靠前。采用全程計時或分段累積計時的復(fù)合計時項目中的子項目都列入此類項目。
3.1.3 復(fù)合計時項目。該項目成績由各子項目分段計時累加而成,其關(guān)聯(lián)項目填寫在子項目ID字段中。其子項目可以獨立排名計分,也可以只記取復(fù)合計時項目的排名。
3.1.4 團體集體項目。指不直接由計時或計分方式產(chǎn)生成績的項目,其成績由與其關(guān)聯(lián)的子項目的排名或得分情況確定,如:團體項目、集體項目、隊別項目等。
具體項目表結(jié)構(gòu)如下:
字段名稱 類別 長度 說明ID 數(shù)字 2 自動編號項目名稱 文本 255項目類別 文本 2 10、計分制項目20、計時制項目80、復(fù)合計時項目90、團體集體項目子項目ID 文本 255 項目ID中間以半角“,”分隔項目分值 數(shù)字 2 長整型
成績表用于記錄各類比賽成績,不同的類別項目其記取成績的方式也就不同。
3.2.1 計時制項目、復(fù)合計時項目。
在實際的比賽過程中,記取比賽成績往往需要精確到小數(shù)字后3位,而ACCESS時間字段只能記取整數(shù)秒信息,無法滿足統(tǒng)計精度的需要。故我們采用文本形式記取計時制項目成績,記錄在比賽計時字段中,以滿足日常顯示和打印的需要。同時我們也將比賽計時以雙精度數(shù)字形式存放在比賽成績字段中,以利于計算和排序。
3.2.2 計分制的項目。
由于其成績本來就是數(shù)字,可以直接記錄在比賽成績字段中。
3.2.3 團體集體項目。
根據(jù)各單項項目的排名和項目分值(權(quán)重)記錄比賽排名和積分。
具體成績表結(jié)構(gòu)如下:
字段名稱 類別 長度 說明ID 數(shù)字 2 自動編號項目ID 文本 2參賽隊伍 文本 255參賽人員 文本 255 人員姓名中間以全角“、”分隔比賽計時 文本 50 文本格式為:“XX時XX分XX秒XXX”比賽成績 數(shù)字 16 雙精度比賽排名 數(shù)字 2 整型項目分值 數(shù)字 2 整型比賽積分 數(shù)字 2 整型
為方便操作人員錄入,我們規(guī)定錄入時以半角“:”作為時、分、秒間的間隔符。那么:當我們輸入“5:6:7.009”時,程序?qū)⒆詣愚D(zhuǎn)換為“05時06分07秒009”;當我們輸入“3:2.1”時,程序?qū)⒆詣愚D(zhuǎn)換為“03分02秒100”;當我們輸入“05.08”時,程序?qū)⒆詣愚D(zhuǎn)換為“05秒080”。
由于輸入的時間格式為字符型,必須進行適當?shù)霓D(zhuǎn)換。
4.1.1 確定字符“:”數(shù)量及位置。
A、當數(shù)量為0時,判斷輸入時間字符串為僅存在秒。
B、當數(shù)量為1時,判斷輸入時間字符串有分和秒。字符“:”前的數(shù)值為“分”,字符“:”后的數(shù)值為“秒”。
C、當數(shù)量為2時,判斷輸入時間字符串有時、分和秒。第1個“:”前的數(shù)值為“時”,第1個“:”與第2個“:”間的數(shù)值為“分”,第2個“:”后的數(shù)值為“秒”。
其實現(xiàn)框圖如下:
4.1.2 確定字符“.”數(shù)量及位置。
小數(shù)點前數(shù)字為整數(shù)秒,小數(shù)點后數(shù)字為千分秒。
其實現(xiàn)框圖如下:
研究ACCESS中控件,控件在獲得焦點時觸發(fā)的事件順序為:Enter、GotFocus,在數(shù)據(jù)錄入時觸發(fā)的事件順序為:KeyDown、KeyPress、Change、KeyUp,在失去焦點時觸發(fā)的事件順序為:BeforeUpdate、AfterUpdate、Exit、LostFocus。
從以上分析,我們得知:
(1)在Enter、GotFocus事件時,由于數(shù)據(jù)還未錄入,不合適觸發(fā)時間轉(zhuǎn)換過程;
(2)由于每按一次鍵盤都將觸發(fā)一輪:KeyDown、Key-Press、Change、KeyUp事件,此時觸發(fā)時間轉(zhuǎn)換過程,將導(dǎo)致轉(zhuǎn)換過程被頻繁觸發(fā),且容易因輸入錯誤或不完整導(dǎo)致轉(zhuǎn)換過程崩潰;
(3)比較合適的觸發(fā)時機應(yīng)為:BeforeUpdate、AfterUpdate、Exit、LostFocus。
進一步研究,我們僅按“左”、“右”、“HOME”、“END”等按鍵,未更改控件輸入內(nèi)容時,控件不會觸發(fā)Key-Press、Change事件,而在失去焦點時也不會觸發(fā)BeforeUpdate、AfterUpdate事件。
(1)在控件內(nèi)容未發(fā)生改變時也將觸發(fā)Exit、LostFocus事件,程序不夠優(yōu)化;
(2)AfterUpdate事件觸發(fā)后,控件中的OldValue屬性已發(fā)生改變,不利于數(shù)據(jù)的保留;
(3)綜上,最佳觸發(fā)時間轉(zhuǎn)換過程時機為控件觸發(fā)BeforeUpdate事件時。
根據(jù)項目的類別不同,排名與積分的計算方法也不同。我們可以利用ACCESS提供的數(shù)據(jù)庫特性,快速實現(xiàn)對項目的排序,從而獲得相應(yīng)的排名與積分。
5.1 計分制項目。由于計分制項目,成績越高,其排名越靠前??梢罁?jù)比賽成績字段對比賽記錄進行降序排列,其排序順序即為比賽名次,并可以依據(jù)規(guī)定計算出積分。
5.2 計時制項目。由于計時制項目,用時越短,其排名越靠前。由于我們已將比賽用時記錄在比賽成績字段中,可依據(jù)比賽成績字段對比賽記錄進行降升排列,其排序順序即為比賽名次,并可以依據(jù)規(guī)定計算出積分。
5.3 復(fù)合計時項目。與計時制項目相同,排序前應(yīng)將各子項目成績進行累加。
5.4 團體集體項目。與計分制項目相同,排序依據(jù)為各項目積分,排序前應(yīng)將各項目積分進行累加。
其實現(xiàn)框圖如下:
隨著消防部隊改革的深入,消防運動會項目設(shè)置將越來越貼近實戰(zhàn)化,其記分統(tǒng)計系統(tǒng)將越來越復(fù)雜。本系統(tǒng)充分考慮到將來業(yè)務(wù)發(fā)展的需要,可利用ACCESS方便地擴展系統(tǒng)功能。
在實際的比賽過程中,計時員往往不只一名,需從多個記錄中選取符合規(guī)定的記錄進行計算;各比賽項目還存在,犯規(guī)加秒、取消比賽成績、取消比賽資格等情況;以上情況還需進一步進行優(yōu)化。