孫欽蕾 李愛華 范江瑋 韓小剛
軍械工程學院 河北石家莊 050003
實驗室作為理論聯(lián)系實際的教學平臺在教育教學中發(fā)揮著至關重要的作用。信息化時代的到來,催生了海量、龐雜的實驗數(shù)據(jù),沖擊著傳統(tǒng)的人工錄入、人工整理、人工存儲等實驗室工作,人工操作已顯得力不從心。如何運用科學管理的原理,選擇正確的管理方法,采取先進的管理手段逐步實現(xiàn)實驗室管理的規(guī)范化、現(xiàn)代化和科學化,以最大功效實現(xiàn)實驗室在學校教育教學中的目標,是擺在我們面前的一個重要的科研課題。因此,我們需要一個專門的數(shù)據(jù)集軟件管理數(shù)據(jù),它能對數(shù)據(jù)進行加密管理,保障數(shù)據(jù)的安全性,能對其進行有序存儲,以便隨時調(diào)用、處理,如此方可事半功倍,大大提高工作效率。為了實現(xiàn)這一目標和進一步加強計算機管理手段在實驗室管理過程中的應用,我們開發(fā)了一款基于Matlab GUI/SQL Server的集實驗數(shù)據(jù)的錄入、整理及保存為一體的實驗室數(shù)據(jù)集管理軟件, 它充分利用Matlab強大的數(shù)據(jù)處理能力[1-4]和SQL Server數(shù)據(jù)庫的海量數(shù)據(jù)管理能力[5-9],將項目的實驗信息整理入庫,數(shù)據(jù)庫中所有實驗數(shù)據(jù)都可以隨時調(diào)出,并可以“原始數(shù)據(jù)”“時域波形”或“頻域波譜”的形式進行查看,在實際應用中起到了良好的作用和效果。
在一個具體的項目實驗中,實驗人員需要將實驗名稱、實驗目的、實驗原理、實驗數(shù)據(jù)、實驗結果等記錄下來,對于有圖形分析的實驗還需畫圖分析。這就要求開發(fā)的軟件內(nèi)容簡單明了、操作簡便快捷,本文開發(fā)的實驗室數(shù)據(jù)集管理軟件,它具有友好的實驗記錄輸入界面,很方便實驗室管理人員及實驗人員操作。
對于雜亂無章的數(shù)據(jù),手工存儲不但工作量大,而且容易混淆、丟失數(shù)據(jù)。做一個實驗花費了許多財力與精力,要是在實驗數(shù)據(jù)的處理、分析等管理工作上出現(xiàn)錯誤,就會前功盡棄,一切等于零。因此用戶需要一個友好、高效、安全的實驗數(shù)據(jù)管理機制,在保證實驗數(shù)據(jù)完備的同時提高工作效率。
根據(jù)用戶需求,使用Matlab GUI環(huán)境編寫實驗數(shù)據(jù)集軟件主框架,在友好的人機界面的基礎上,充分利用Matlab強大的數(shù)值計算能力和豐富的繪圖功能,對數(shù)據(jù)進行處理、分析以及展示[4];同時用Matlab自帶的數(shù)據(jù)庫工具箱,使Matlab與Microsoft SQL Sever 2000創(chuàng)建的數(shù)據(jù)庫進行數(shù)據(jù)交流,將實驗數(shù)據(jù)安全的存儲在數(shù)據(jù)庫中,并通過調(diào)用、查詢、修改等方式管理實驗數(shù)據(jù),這樣可以滿足用戶記錄、管理海量實驗數(shù)據(jù)的需求。[2]
為了設計出合理的實驗室管理軟件,需要了解實驗管理員、實驗教師以及實驗學員不同人群的需求,通過對上述人員的調(diào)查分析,筆者了解到實驗室管理軟件需要具備三大模塊(如圖1所示)。第一,實驗項目的管理。能夠實現(xiàn)便捷的選擇、編輯、實驗項目,通過智能選擇,無須實驗教師講解,學員能便捷清楚了解實驗的目的。第二,實驗客觀條件選擇。為便于實驗室管理員的實驗室管理,對實驗信息統(tǒng)計、存儲,需要設計本環(huán)節(jié),主要記錄時間、地點、人物以及設備信息,當出現(xiàn)問題時便于追查。第三,實驗內(nèi)容記錄。學員通過實驗,記錄相應的實驗過程、實驗結果、實驗結論及實驗數(shù)據(jù),并能夠隨時調(diào)用數(shù)據(jù)觀察數(shù)據(jù)波形,最后生成實驗報告。
圖1 軟件三大模塊
根據(jù)需求分析,設計者基本上掌握了軟件要素,形成了總體方案、需求分析、模塊化設計、代碼編寫、軟件測試、軟件試用、推廣應用六部分的設計思想。管理軟件開發(fā)流程如圖2所示。
圖2 實驗室數(shù)據(jù)集管理軟件開發(fā)流程
3.1.1 實驗項目模塊設計
實驗項目包括實驗列表編輯及實驗項目生成兩部分,模塊情況如圖3所示。實驗列表編輯中有列表框1個,按鈕4個;實驗項目生成中有文本編輯框2個。實驗項目模塊主要借助Matlab語言利用GUI界面編程實現(xiàn)實驗基本文字信息的處理,包括實驗項目的調(diào)入、顯示、選擇、保存、新建、刪除等功能。
圖3 實驗項目設計
3.1.2 客觀條件模塊設計
客觀條件模塊包含時間、地點、人物、設備幾大要素,模塊情況如圖4所示。
圖4 客觀條件模塊設計
在編程過程中主要關注以下幾點。
第一,實驗日期。實驗日期包括開始日期和結束日期,每個時間點設置年、月、日3個下拉框,編程方法類似,在CALLBACK函數(shù)程序代碼中主要調(diào)用set(handles.popupmenu_××,'Value',get(hObject,'Value'))命令完成(“××”分別用年、月、日替代)。注意實驗結束時間一定要大于等于開始時間,因此需要在程序中附加條件語句。
第二,實驗地點、責任人。需要手工輸入,因此調(diào)用靜態(tài)文本編輯框。
第三,實驗人員、實驗設備。在學期內(nèi)實驗學員基本不變,因此便于操作學期初將實驗人員信息錄入,本軟件設計成可選擇形式。具體方法是:在GUI界面設置兩個“l(fā)istbox”,其中左側“l(fā)istbox”包含所有學員姓名,當實驗人員記錄本實驗小組姓名時,只需要調(diào)用相應班級中的學員名單,通過程序控制選擇班級學員中本組名單到右側“l(fā)istbox”,此時左側“l(fā)istbox”剔除此名單。為防止出現(xiàn)誤操作或者臨時實驗小組成員調(diào)整情況,需要將選擇設置成雙向,即可以將學員從左側移除到右側,也可以將右側實驗名單移除到左側,此操作通過編程設計點擊中間的移動箭頭實現(xiàn),實驗人員GUI界面如圖5所示。實驗設備在一定的時期內(nèi)也存在固定性,因此采取了和實驗人員類似的程序處理方法,實驗設備GUI界面如圖6所示。
圖5 實驗人員GUI界面
圖6 實驗設備GUI界面
3.1.3 內(nèi)容記錄模塊設計
內(nèi)容記錄模塊包含實驗描述、實驗結果以及實驗數(shù)據(jù)處理幾部分(如圖7所示)。
圖7 內(nèi)容記錄模塊
(1)實驗描述包含兩種情況:第一,理想情況下實驗反應的現(xiàn)象,一般由實驗教師提前存儲到數(shù)據(jù)庫中,當學員進行完實驗,可以調(diào)用相應的文件直接打開查看或者將文件導入到文本框中顯示。學員根據(jù)實驗描述檢驗實驗進展是否正常。第二,學員對自己實驗出現(xiàn)的其他現(xiàn)象進行描述,學員在數(shù)據(jù)庫文件中自行填寫實驗描述,如果查看本組學員實驗描述情況,在GUI界面中通過查看實驗描述文件或者導入實驗描述文件兩種方式實現(xiàn),其過程實質是“導入實驗描述文件”按鈕是將導入的文件全路徑保存在一個全局變量中,“查看實驗描述文件”按鈕通過此鏈接打開這個文件。(2)實驗結果包括實驗報告的撰寫以及實驗報告的查看、導入處理。設計思路類似于實驗描述。(3)數(shù)據(jù)處理。數(shù)據(jù)處理完成數(shù)據(jù)導入、查看、刪除以及實時查看波形功能。
3.2.1 數(shù)據(jù)庫表的設計
在SQL Server的企業(yè)管理器中新建一個數(shù)據(jù)庫data。根據(jù)用戶需求以及軟件界面特征,在新建的數(shù)據(jù)庫中建立4個表存儲實驗記錄,分別是基礎表(basic)、人員表(person)、設備表(equipment)及數(shù)據(jù)表(database)?;A表中每一個記錄都表示一個實驗實體,記錄實驗名稱為主鍵,它與表中其他字段都有唯一的對應關系。然而,在軟件界面可以看到,使用3個列表框的實驗信息(人員、設備、數(shù)據(jù)),與實驗名稱是一對多的關系。因此,使用另外3個表(人員表、設備表及數(shù)據(jù)表)對這些信息進行記錄。數(shù)據(jù)庫表關系圖如圖8所示。
圖8 4個表的約束關系圖
基礎表中的主鍵(mingcheng)與其他3個表中的“mingcheng”外鍵進行關聯(lián),用來刪除關聯(lián)記錄。當基礎表中的某實驗記錄刪除后,其他3個表的與之“mingcheng”字段相同的記錄均被刪除。
把一次實驗名稱、實驗目的、實驗日期、實驗地點、實驗人員、實驗設備都相同的實驗記錄定義為一個實驗實體。在軟件中需要對實驗實體進行新建、打開、保存操作時,需要根據(jù)當前實驗實體的保存狀態(tài)進行不同的操作。因此需要定義一個全局變量來監(jiān)控當前實驗實體的保存狀態(tài)。
用全局變量SAVE_STATUS(見表1)監(jiān)控當前實驗實體的保存狀態(tài)。
表1 SAVE_STATUS值表
“打開”和“新建”實驗實體的流程圖可以表示為圖9所示。
圖9 打開(新建)保存界面狀態(tài)流程圖
一個實驗實體對應數(shù)據(jù)庫表中的一個記錄。本數(shù)據(jù)集軟件以實驗實體為單位進行記錄并存儲。保存時用SQL的insert語句把實驗記錄插入到數(shù)據(jù)庫表中。讀取時用SQL的select語句把數(shù)據(jù)庫表中的記錄讀入軟件,并顯示在界面中。
3.2.2 ODBC的設置
ODBC是一種編程接口,使應用程序訪問以結構化查詢語言(SQL)作為數(shù)據(jù)訪問標準的數(shù)據(jù)庫管理系統(tǒng)。所謂數(shù)據(jù)源,就是要操作的數(shù)據(jù)庫。要找到數(shù)據(jù)庫,必須給出數(shù)據(jù)庫所在的目錄、磁盤和服務器。在數(shù)據(jù)庫建立完成的基礎上,用以下步驟完成ODBC設置,實現(xiàn)Matlab對數(shù)據(jù)庫的訪問。
(1)控制面板→管理工具→ODBC數(shù)據(jù)源→用戶DNS(如圖10所示)。
圖10 數(shù)據(jù)源管理器
(2)點擊“添加”后選擇“SQL Server”,點擊完成,進入如圖11所示頁面。
圖11 數(shù)據(jù)源DSN配置
數(shù)據(jù)源名稱可以根據(jù)程序要求任意命名,可以與數(shù)據(jù)庫名相同,也可以不相同,這里為“data”,與數(shù)據(jù)庫名相同。
服務器必須是SQL Server已經(jīng)打開的服務器名稱,在SQL Server的“服務管理器”中可以查詢(如圖12所示)。
圖12 服務管理器
(3)將默認的數(shù)據(jù)庫設為新建的“data”(如圖13所示)。
(4)測試數(shù)據(jù)源的連接,成功(如圖14所示)。
3.2.3 數(shù)據(jù)庫調(diào)用
根據(jù)用戶需求,只有實驗記錄的保存、載入和刪除部分的代碼涉及數(shù)據(jù)庫的操作。并且保存和載入代碼可能會在多個控件的回調(diào)函數(shù)中調(diào)用,因此把這兩部分的代碼寫成單獨的函數(shù)供控件回調(diào)函數(shù)的調(diào)用。圖15給出了保存函數(shù)程序主流程。
在數(shù)據(jù)集軟件界面上以雙縫干涉實驗及牛頓第二定律為例進行數(shù)據(jù)錄入、處理及畫圖實驗(如圖16所示),并將實驗數(shù)據(jù)存入了數(shù)據(jù)庫中,實現(xiàn)了數(shù)據(jù)的安全存儲,并通過Matlab對其調(diào)用、修改等管理,實現(xiàn)了此數(shù)據(jù)集軟件的功能。
圖16 軟件應用實例界面圖
數(shù)據(jù)庫表如圖17所示。
圖17 數(shù)據(jù)庫表
實驗中使用示波器TEK-DPO4104或TEK-DPO-7254c采集及存儲數(shù)據(jù),保存下來固定格式的csv數(shù)據(jù)文件。在本程序中,實驗數(shù)據(jù)部分就可將這些數(shù)據(jù)文件導入到程序中,以方便使用者隨時以原始數(shù)據(jù)、時域譜或頻譜的形式查看。
點擊實驗界面中的“導入數(shù)據(jù)”按鈕,在打開文件對話框中選擇要導入的數(shù)據(jù)文件,點擊“確定”完成操作。導入實驗數(shù)據(jù)成功后,右側列表框中顯示出已經(jīng)導入的數(shù)據(jù)文件(如圖18所示)。
圖18 實驗數(shù)據(jù)界面
在列表框中雙擊任意數(shù)據(jù)文件,可以查看此文件的時域和頻域譜圖,并可以使用Matlab自帶工具對譜圖進行操作[10](如圖19所示)。
圖19 數(shù)據(jù)處理圖
通過分析傳統(tǒng)實驗室管理的特點,指出傳統(tǒng)實驗室管理中信息的復雜性、數(shù)據(jù)處理的龐雜性以及實驗要素的多樣性,從而導致實驗室工作人員任務重、工作量大,學員實驗規(guī)范性差、難于管理,數(shù)據(jù)存儲安全性差。基于此,本文開發(fā)了一套基于Matlab GUI/SQL Server的實驗室數(shù)據(jù)集管理軟件,它通過Matlab實現(xiàn)對數(shù)據(jù)的調(diào)用、修改等管理,軟件開發(fā)界面友好,方便易用。實踐表明,實驗室數(shù)據(jù)集管理軟件解決了傳統(tǒng)實驗室中存在的問題,實現(xiàn)了實驗室數(shù)據(jù)管理的科學化、規(guī)范化、現(xiàn)代化,大大減輕了實驗室工作人員及學員的工作量,保障了數(shù)據(jù)存儲的安全性,具有一定的推廣價值。
[1]董振海.精通MATLAB7編程與數(shù)據(jù)庫應用[M].北京:電子工業(yè)出版社,2007.
[2]蘇曉生.掌握MATLAB 6.0及其工程應用[M].北京:科學出版社,2001.
[3]羅華飛.MATLAB GUI設計學習手記[M].北京:北京航空航天大學出版社 2011.
[4]胡曉冬,董辰輝.MATLAB從入門到精通[M].北京:人民郵電出版社,2010.
[5]馬桂婷,武洪萍,袁淑玲.數(shù)據(jù)庫原理及應用(SQL Sever 2008版)[M].北京:北京大學出版社,2010.
[6]高金蘭,章鋒.數(shù)據(jù)庫原理與SQL Sever應用[M].武漢:武漢大學出版社,2007.
[7]陳明.數(shù)據(jù)庫系統(tǒng)及應用: SQL Sever 2000[M].北京:清華大學出版社,2007.
[8]楊章偉.精通SQL語言與數(shù)據(jù)庫管理[M].北京:人民郵電出版社,2008.
[9]李偉紅.SQL Sever 2000數(shù)據(jù)庫及應用[M].北京:水利水電出版社,2007.
[10]吳大正.信號與線性系統(tǒng)分析[M].北京:高等教育出版社,2006.