吳玉川+胡德鳳
摘 要 現(xiàn)用氣象資料查詢系統(tǒng)功能強(qiáng)大,但使用步驟復(fù)雜,對于常用氣象資料的查詢并不實(shí)用,所以需要一種簡單、快捷的查詢軟件作為補(bǔ)充,以提高工作效率。我們通過對氣象數(shù)據(jù)庫文件格式和查詢需求的分析,采用VB設(shè)計(jì)了對常用5種氣象資料的查詢和統(tǒng)計(jì)的軟件,較好地解決了以上問題。
關(guān)鍵詞 氣象;資料;查詢
中圖分類號 TP3 文獻(xiàn)標(biāo)識碼 A 文章編號 1674-6708(2016)172-0129-01
1 研究背景
氣象資料的種類和文件格式有很多種,對應(yīng)的查詢系統(tǒng)也五花八門,而且大多功能強(qiáng)大,但使用步驟復(fù)雜。我們在實(shí)際工作中經(jīng)常查詢的資料有氣溫、相對濕度、氣壓、風(fēng)速和降水量,為了減輕查詢工作量和提高工作效率,很有必要開發(fā)一套簡單、快捷的常用氣象資料查詢軟件作為補(bǔ)充。
2 數(shù)據(jù)文件和編程平臺
2.1 氣象數(shù)據(jù)庫文件
常用的氣象資料保存在B文件中,采用Access數(shù)
據(jù)庫格式,它有以下特點(diǎn)[ 1 ]:
1)文件名格式為B56188MM.YYY。其中:B為B文件代號;56188為都江堰的代號;MM為月份;YYY為年份的后3位。
2)它有4個(gè)表,常用的氣象資料位于tabPrimObservData1表。該表每小時(shí)一條記錄,從北京時(shí)上月末的第二日21時(shí)至本月末日24時(shí)。每一條記錄有59個(gè)字段,我們只用到日期時(shí)間、氣溫、相對濕度、氣壓、風(fēng)速和降水量這6個(gè)字段。
2.2 編程語言的選擇
對于小型數(shù)據(jù)庫系統(tǒng)的開發(fā),VB是非常理想的選擇,它利用數(shù)據(jù)控件可以直接建立與Access格式的數(shù)據(jù)庫連接,并提供數(shù)據(jù)存儲和查詢功能[ 2 ],所以我們選擇用VB 來編寫查詢軟件。
3 程序設(shè)計(jì)
3.1 程序的流程
查詢軟件的流程比較簡單,先讓用戶提出查詢?nèi)掌诘囊螅儆密浖B接數(shù)據(jù)庫,找到數(shù)據(jù)庫對應(yīng)表中的每一條記錄,提取對應(yīng)字段的氣象資料并進(jìn)行解碼得到具體的數(shù)據(jù),把這些數(shù)據(jù)求和、求平均、挑選最大值和最小值,最后把它們以表格的方式顯示出來。
3.2 控件選擇
用戶通過軟件窗口界面與軟件進(jìn)行交流,界面上使用合適的控件也是很重要的。對于時(shí)間的選擇應(yīng)該靈活多變,怎樣實(shí)現(xiàn)?表格可以一目了然和匯總,但是有好幾種控件,如何選擇?下面分別就這兩個(gè)問題進(jìn)行分析。
1)時(shí)間控件的選擇。時(shí)間控件的選擇方式有:日歷控件,文本框,下拉列表框等。
自動氣象站現(xiàn)用查詢系統(tǒng)采用一個(gè)專用日期控件選擇日期,需要對年月日這三項(xiàng)逐個(gè)修改數(shù)字才能得到自己需要的日期,使用很不方便。如果采用3個(gè)文本框分別表示年月日,則和它沒有區(qū)別,故不采用。用3個(gè)下拉列表框也是一種方案,但經(jīng)過試驗(yàn)效果也不理想。通過多次實(shí)踐,為了方便使用,我們選擇了日歷控件和兩個(gè)命令按鈕的組合方式。日歷控件可以隨意地用鼠標(biāo)選擇某一天,兩個(gè)命令按鈕可以選擇“前一天”和“后一天”,對于逐日查詢的資料是個(gè)很好的選擇,這樣日期的選擇靈活多變,十分方便快捷。
2)表格控件的選擇。方式有:表格控件,文本框陣列,嵌入Excel對象。
文本框陣列:它的優(yōu)點(diǎn)是可以隨意組合,每一個(gè)都能單獨(dú)控制,但操作起來很復(fù)雜,占用內(nèi)存多,代碼也復(fù)雜,而且運(yùn)行速度太慢,故不采用。
嵌入Excel對象:它的優(yōu)點(diǎn)是方便操作,修改數(shù)據(jù)也很方便,但氣象原始資料是重要檔案,只能查詢,不允許修改,故也不采用。
表格控件:外觀整潔、表達(dá)形式規(guī)范,缺點(diǎn)是每一個(gè)單元格不便單獨(dú)控制其格式。由于需要顯示的數(shù)據(jù)簡單,故采用。而且VB的表格控件有3種,綜合比較后選定MSFlexGrid控件。
3.3 編程
根據(jù)VB控件的事件驅(qū)動的特點(diǎn),將程序編碼分成窗體和模塊2個(gè)部分,窗體負(fù)責(zé)與用戶的互動,模塊為各種驅(qū)動事件提供內(nèi)部數(shù)據(jù)的處理。
1)驅(qū)動事件。由時(shí)間控件的變化引起事件驅(qū)動,有以下兩種方式:(1)啟動程序顯示窗體,默認(rèn)時(shí)間為2016年1月1日,并立即調(diào)用表格數(shù)據(jù)處理模塊,連接數(shù)據(jù)庫,進(jìn)行讀取數(shù)據(jù)、解碼和統(tǒng)計(jì),顯示該日數(shù)據(jù)。(2)點(diǎn)擊“前一天”“后一天”和“日歷控件”,先改變到指定日期,再調(diào)用表格數(shù)據(jù)處理模塊,連接數(shù)據(jù)庫,進(jìn)行讀取數(shù)據(jù)、解碼和統(tǒng)計(jì),顯示該日數(shù)據(jù)。
2)數(shù)據(jù)庫連接。主要難點(diǎn)是根據(jù)日期的改變查找正確的B文件以及數(shù)據(jù)庫的對應(yīng)記錄,字符格式的正確至關(guān)重要,因此可以用格式和字符函數(shù)來解決問題,例如以下代碼:
(1)數(shù)據(jù)庫定義和連接語句。
(3)取得每小時(shí)氣溫語句(取得另外4種氣象數(shù)據(jù)的方法類似)。
T = Form2.Data1.Recordset.Fields(8).Value
4 測試結(jié)果
軟件編程完成后,對其進(jìn)行測試是必不可少的一步,測試的目的是盡可能多的發(fā)現(xiàn)軟件編寫過程中的問題,通過測試使軟件的錯(cuò)誤減少,使其可靠性進(jìn)一步提高。對都江堰國家基本氣象站2016年1月至6月的氣象資料進(jìn)行測試,軟件運(yùn)行快捷,日期選擇方便,統(tǒng)計(jì)的數(shù)據(jù)完整準(zhǔn)確。但也發(fā)現(xiàn)了一些錯(cuò)誤,例如,降水量的格式錯(cuò)誤和軟件執(zhí)行出錯(cuò)時(shí)不能正確提示等問題,將這些錯(cuò)誤改正后未再發(fā)現(xiàn)其它問題。
測試結(jié)果表明軟件的功能均能達(dá)到設(shè)計(jì)要求,軟件的運(yùn)行速度和穩(wěn)定性較好,安全性方面也未發(fā)現(xiàn)異常,對數(shù)據(jù)庫無影響。
5 結(jié)論
通過對氣象數(shù)據(jù)庫文件格式和查詢需求的分析,采用VB設(shè)計(jì)了對常用的5種氣象資料的查詢和統(tǒng)計(jì)的軟件,較好地解決了現(xiàn)用查詢系統(tǒng)步驟復(fù)雜的問題(特別是能方便地選擇日期的功能),軟件滿足了用戶使用方便和快捷的需求,作為現(xiàn)用查詢系統(tǒng)的補(bǔ)充,達(dá)到了設(shè)計(jì)目的。
參考文獻(xiàn)
[1]中國氣象局監(jiān)測網(wǎng)絡(luò)司編.地面氣象測報(bào)業(yè)務(wù)系統(tǒng)軟件操作手冊[M].北京:氣象出版社,2005,1.
[2]劉韜,駱娟,何旭洪.Visual Basic數(shù)據(jù)庫系統(tǒng)開發(fā)實(shí)例導(dǎo)航[M].2版.北京:人民郵電出版社,2003,8.