果有森,劉 沖
(中國電子技術(shù)標(biāo)準(zhǔn)化研究院,北京 100176)
儀器設(shè)備是實(shí)驗(yàn)室從事相關(guān)科研開發(fā)、產(chǎn)品檢測的必備條件,也是實(shí)驗(yàn)室得以迅速發(fā)展的物質(zhì)基礎(chǔ)。近年來,伴隨著研究院的迅速發(fā)展,儀器設(shè)備迅速增多。目前實(shí)驗(yàn)室擁有具備國際先進(jìn)水平的各類儀器設(shè)備3 600余臺(tái)套,種類繁多,其中既包括常規(guī)的無線電設(shè)備,也包括高端電磁兼容設(shè)備;既包括常規(guī)的長熱力設(shè)備,也包括高端的計(jì)量標(biāo)準(zhǔn)設(shè)備。儀器設(shè)備種類繁多,信息量龐大,傳統(tǒng)的紙質(zhì)設(shè)備管理方案耗時(shí)耗力,信息管理不能做到及時(shí)、科學(xué),已經(jīng)不能夠滿足本單位發(fā)展的需要,科學(xué)有效的設(shè)備管理系統(tǒng)的開發(fā)迫在眉睫。合理的設(shè)備管理系統(tǒng)的引入,能夠提高儀器設(shè)備的信息管理工作效率,減少該方面的工作量。
本設(shè)計(jì)所選用的開發(fā)平臺(tái)為Visual C++6.0,是由Microsoft公司推出的目前應(yīng)用極為廣泛的可視化開發(fā)工具,利用Visual C++6.0可以開發(fā)基于Windows平臺(tái)的32位應(yīng)用程序,依靠強(qiáng)大的編譯器以及網(wǎng)絡(luò)與數(shù)據(jù)庫的開發(fā)能力,用Visual C++6.0可以開發(fā)與數(shù)據(jù)庫結(jié)合緊密的軟件系統(tǒng)。通過該軟件平臺(tái)開發(fā)的設(shè)備管理系統(tǒng),能夠提高設(shè)備管理效率,為實(shí)現(xiàn)設(shè)備管理的自動(dòng)化,提供了便利條件。
設(shè)備管理系統(tǒng)的總體任務(wù),是實(shí)現(xiàn)實(shí)驗(yàn)室設(shè)備信息管理的系統(tǒng)化、規(guī)范化和自動(dòng)化。從功能模塊角度來說,該設(shè)備管理系統(tǒng)主要由以下5個(gè)部分組成:設(shè)備管理登陸部分,系統(tǒng)操作部分,設(shè)備瀏覽部分,自定義查找部分和失效查詢部分。
設(shè)備管理登陸部分,主要用于設(shè)備管理系統(tǒng)的登錄;系統(tǒng)操作部分,主要完成設(shè)備管理系統(tǒng)登錄用戶操作;設(shè)備瀏覽部分,完成所有設(shè)備的瀏覽;自定義查找部分,可以按照不同設(shè)備的共有屬性,完成各個(gè)項(xiàng)目的自定義查找;失效查詢部分,提供設(shè)備的過期報(bào)警。
數(shù)據(jù)庫的選擇,是設(shè)備管理系統(tǒng)開發(fā)中非常重要的環(huán)節(jié)。數(shù)據(jù)欄目和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),是數(shù)據(jù)庫的重要流程。數(shù)據(jù)欄目、數(shù)據(jù)結(jié)構(gòu)合理,對于軟件的開發(fā)有推進(jìn)作用。從本單位實(shí)際情況出發(fā),在對儀器設(shè)備的信息進(jìn)行詳細(xì)分析的基礎(chǔ)上,可以將儀器設(shè)備的屬性,按照其特點(diǎn),可以分為4類:身份信息,使用維護(hù)信息,管理信息,功能信息。
其中,身份信息包括:儀器序號(hào),儀器名稱,型號(hào)規(guī)格,生產(chǎn)廠家,出廠編號(hào)(SN),出廠日期,購買日期,價(jià)格,固定資產(chǎn)編號(hào),所屬專業(yè)實(shí)驗(yàn)室等;使用維護(hù)信息包括:設(shè)備狀態(tài),使用頻次,檢定(校準(zhǔn))日期,檢定(校準(zhǔn))單位,檢定(校準(zhǔn))結(jié)果等;管理信息包括:儀器類別,所屬部門,保管人,聯(lián)系電話等;功能信息包括:主要參數(shù)以及范圍等。
數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)領(lǐng)域中的一門很重要的技術(shù)。由于數(shù)據(jù)庫信息容量大,分類、統(tǒng)計(jì)和檢索方便,使用靈活且便于維護(hù),因而得到了廣泛的應(yīng)用。近年來,數(shù)據(jù)庫技術(shù)發(fā)展迅速,使用較多的數(shù)據(jù)庫管理系統(tǒng),包括 Microsoft SQL Server、Oracle、Sybase、dBASE、Microsoft FoxPro以及Microsoft Access等。在這些數(shù)據(jù)庫管理系統(tǒng)中,有的適用于大型數(shù)據(jù)庫應(yīng)用系統(tǒng),有的適用于中小型數(shù)據(jù)庫應(yīng)用系統(tǒng),根據(jù)數(shù)據(jù)庫適用的規(guī)模以及功能特點(diǎn)等因素,我們選擇了Microsoft Access數(shù)據(jù)庫應(yīng)用系統(tǒng)。
Visual C++擁有強(qiáng)大的數(shù)據(jù)庫開發(fā)程序和集成的開發(fā)環(huán)境,具備多種數(shù)據(jù)庫訪問接口。ODBC(開放數(shù)據(jù)庫互聯(lián))、DAO(數(shù)據(jù)訪問接口)、OLE DB(對象連接與嵌入數(shù)據(jù)庫)和ADO(基于組件的數(shù)據(jù)庫編程接口),都為用戶通過Visual C++應(yīng)用程序訪問數(shù)據(jù)庫提供了便利條件。ODBC屬于應(yīng)用程序編程接口,通過它可以編寫不依賴于DBMS(數(shù)據(jù)庫管理信息系統(tǒng))的數(shù)據(jù)庫應(yīng)用平臺(tái)。ODBC提供各種DBMS相對應(yīng)的ODBC驅(qū)動(dòng)程序。Visual C++開發(fā)的應(yīng)用程序,通過這些驅(qū)動(dòng)程序,實(shí)現(xiàn)對不同數(shù)據(jù)庫的操作。Visual C++6.0使用ODBC的層次結(jié)構(gòu)如圖1。
圖1 ODBC層次結(jié)構(gòu)圖
MFC的ODBC類主要包括以下幾方面:
(1)CDatabase類。表示應(yīng)用程序連接到數(shù)據(jù)源,通過它可以對數(shù)據(jù)源進(jìn)行操作,數(shù)據(jù)源是某個(gè)數(shù)據(jù)庫管理系統(tǒng)(DBMS)的數(shù)據(jù)實(shí)例。
(2)CRecordset類。表示一個(gè)記錄集,該類是ODBC中重要且功能最強(qiáng)大的類。記錄集可以分為快照(Snapshot)和動(dòng)態(tài)集(Dynaset)兩種。應(yīng)用程序可以選擇數(shù)據(jù)源中某表作為一個(gè)記錄集,通過對該類的操作,可以實(shí)現(xiàn)記錄的修改、增加、刷新和刪除等操作。
(3)CRecordView類。CRecord View類是CView類的一個(gè)子類,內(nèi)置對CRecordSet的支持,支持記錄的瀏覽、更新等操作。。該類可以通過表單視圖與記錄集直接相連,利用對話框數(shù)據(jù)交換機(jī)制(DDX)實(shí)現(xiàn)記錄集與表單視圖的控件的數(shù)據(jù)傳輸。
總之,CDatabase類負(fù)責(zé)數(shù)據(jù)庫負(fù)責(zé)連接到數(shù)據(jù)源,CRecordset實(shí)現(xiàn)數(shù)據(jù)源中記錄的操作,CRecord-View類實(shí)現(xiàn)界面的開發(fā),通過CFieldExchange實(shí)現(xiàn)CRecordset與數(shù)據(jù)源的數(shù)據(jù)傳輸。
數(shù)據(jù)庫應(yīng)用程序的操作對象是數(shù)據(jù)源,因此必須首先建立數(shù)據(jù)源,通過創(chuàng)建Access數(shù)據(jù)庫,在Windows開始菜單中選擇開始-設(shè)置-控制面板,當(dāng)控制面板出現(xiàn)后,用鼠標(biāo)雙擊ODBC Data Source(32bit)圖標(biāo),如圖2所示的數(shù)據(jù)源管理器。通過選擇添加,選擇數(shù)據(jù)源等操作,完成數(shù)據(jù)庫的注冊。
圖2 數(shù)據(jù)源管理器
實(shí)驗(yàn)室設(shè)備管理系統(tǒng)訪問用戶名以及密碼儲(chǔ)存在Microsoft Access數(shù)據(jù)庫文件中,由于ODBC定義了一組規(guī)范,提供了一組對數(shù)據(jù)庫訪問的一組標(biāo)準(zhǔn)API,這些API是建立在標(biāo)準(zhǔn)化版本SQL(Strutted Query Language,結(jié)構(gòu)化查詢語言)基礎(chǔ)上的。ODBC位于應(yīng)用程序與DBMS之間,便于對數(shù)據(jù)庫的訪問。通過ODBC API編寫代碼,實(shí)現(xiàn)數(shù)據(jù)庫的連接與控制。其主要操作流程為:通過程序?qū)崿F(xiàn)數(shù)據(jù)庫中查找,如果用戶輸入的姓名和密碼與數(shù)據(jù)庫中存儲(chǔ)的信息匹配,則可以進(jìn)入設(shè)備管理系統(tǒng)主界面;系統(tǒng)用戶操作部分,主要實(shí)現(xiàn)設(shè)備管理系統(tǒng)的用戶操作,可以進(jìn)行用戶的刪除,用戶增加,用戶信息更改等。
設(shè)備瀏覽部分界面如圖3所示,該部分主要實(shí)現(xiàn)實(shí)驗(yàn)室全部設(shè)備一覽表,實(shí)驗(yàn)室設(shè)備信息(儀器序號(hào)、儀器名稱、型號(hào)規(guī)格等等)儲(chǔ)存在Microsoft Access數(shù)據(jù)庫文件中,與系統(tǒng)用戶操作部分編制原理類似,通過ODBC API實(shí)現(xiàn)設(shè)備信息的查詢、增加、刪除,還可以實(shí)現(xiàn)選定設(shè)備的信息修改并更新。
圖3 設(shè)備瀏覽
設(shè)備管理系統(tǒng)自定義查找與失效查詢部分,主要實(shí)現(xiàn)原理是通過SQL語言使用ODBC API接口,實(shí)現(xiàn)Microsoft Access數(shù)據(jù)庫的訪問。SQL(結(jié)構(gòu)化查詢語言)是一種數(shù)據(jù)庫查詢語言,主要實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢、添加、刪除等操作。SQL語言主要由以下幾部分組成:
(1)數(shù)據(jù)查詢語言(DQL)。數(shù)據(jù)查詢語言DQL基本結(jié)構(gòu)包括SELECT子句和FROM子句;
(2)數(shù)據(jù)定義語言(DDL)。包括創(chuàng)建/刪除數(shù)據(jù)庫、創(chuàng)建/刪除表、定義約束等語句,包括CREATE、ALTER、DROP等語句;
(3)數(shù)據(jù)操作語言(DML)用于操作數(shù)據(jù)表,如增加、查詢、修改、刪除等操作。常用操作包括:Insert(插入數(shù)據(jù))、Delete(刪除數(shù)據(jù))、Select(查詢數(shù)據(jù))和Updata(修改數(shù)據(jù));
(4)數(shù)據(jù)控制語言DCL用于授予或回收訪問數(shù)據(jù)庫特權(quán),控制數(shù)據(jù)庫操縱事務(wù)的時(shí)間及效果,對數(shù)據(jù)庫進(jìn)行監(jiān)視等。包括:GRANT、COMMIT、REVOKE、ROLLBACK等語句。
這里查詢部分為例,進(jìn)行簡要說明,查詢部分代碼如下所示:
本文采用Visual C++6.0作為開發(fā)平臺(tái),開發(fā)了設(shè)備管理系統(tǒng),解決了目前本單位設(shè)備日益增多、設(shè)備信息管理復(fù)雜的局面,大大提高設(shè)備管理效率,為實(shí)現(xiàn)設(shè)備信息管理自動(dòng)化提供了便利條件,得到了設(shè)備管理人員的好評,對從事設(shè)備管理的同行,具備一定的參考借鑒價(jià)值。
[1]魏 朗,陳 濤.Visual C++程序設(shè)計(jì)攻略教程[M].西安:西安電子科技大學(xué)出版社,2004.
[2]岳 亮.在VC中利用WORD生成圖文報(bào)告[R].北京:電腦編程技巧與維護(hù),2002,(5)43-44.
[3]朱 敏,沈同圣,等.VC++與VBA結(jié)合實(shí)現(xiàn)復(fù)雜報(bào)表[J],計(jì)算機(jī)應(yīng)用與軟件,2005,(2):42-43.