董愛民
摘要:隨著高校實驗室數(shù)量及莘莘學子的不斷增多,最初的人工預約實驗室模式存在效率低下、出錯率高、管理混亂、資源浪費,甚至造成實驗課程安排沖突。該文設計的基于MFC的實驗室預約系統(tǒng),能夠提高實驗室管理人員管理效率,方便教師對實驗室的預約,同時也解決了學生因為實驗時間和地點信息無法及時獲取而造成的缺課問題。該系統(tǒng)實現(xiàn)了數(shù)據(jù)流的自動化與一體化,通過對實驗室信息的高效管理使得本系統(tǒng)具有人工管理所無法比擬的優(yōu)勢。
關(guān)鍵詞:實驗室;實驗預約;自動化
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)13-0068-03
1 系統(tǒng)架構(gòu)
本系統(tǒng)使用的模式是C/S模式,即服務器端/客戶端模式。系統(tǒng)架構(gòu)如圖1所示。
1.1 服務器端
數(shù)據(jù)庫連接對象:系統(tǒng)對數(shù)據(jù)庫的訪問和操作都是在服務器端進行的,本系統(tǒng)采用ADO技術(shù)連接數(shù)據(jù)庫。
服務器端套接字:服務器端套接字用于監(jiān)聽、接受和處理客戶端的請求。
服務器端通過對每個客戶端連接請求分配一個線程,可同時處理多個客戶端的請求。當處理客戶端修改數(shù)據(jù)庫的請求時,使用并發(fā)控制,保持各個線程對資源操作的同步。
處理客戶端請求對象:當服務器端套接字接收到報文,報文為XML格式,需要對報文進行解析,通過解析出來的參數(shù)信息,寫成SQL語句傳給數(shù)據(jù)庫連接對象進行操作,同時接收數(shù)據(jù)庫連接對象查詢得到的結(jié)果,拼裝成XML格式的字符串,傳遞給服務器端套接字,服務器端套接字再傳遞給系統(tǒng)客戶端。
1.2 客戶端
客戶端角色:管理員角色、教師角色、學生角色。在請求操作的時候它們通過向系統(tǒng)服務器端發(fā)送報文來請求操作。報文分為上行報文和下行報文,上行報文是客戶端向服務器端發(fā)送的報文,下行報文是服務器端向客戶端發(fā)送的報文。系統(tǒng)定義報文的數(shù)據(jù)類型是一個結(jié)構(gòu)體,包含報文的長度、類型、報文主體。
客戶端套接字:同服務器端一樣,客戶端也有一個套接字,稱之為客戶端套接字??蛻舳税颜埱蟮膮?shù)拼裝成XML格式報文主體,然后通過客戶端套接字發(fā)送到服務器端。客戶端從服務器端接收到的是XML格式的字符串,轉(zhuǎn)換成自定義的XML對象,然后通過對象提取出由服務器端傳遞過來的數(shù)據(jù)
1.3 服務器端和客戶端的通訊
首先是客戶端將請求及需要的參數(shù)寫成XML格式的字符串報文,然后通過客戶端套接字發(fā)送到服務器端,服務器端通過服務器端套接字接收報文,交給處理對象處理,處理對象將報文解析,將解析出來的參數(shù)發(fā)給ADO對象,ADO對象通過參數(shù)進行數(shù)據(jù)庫查找、添加、刪除、更新等操作,最后將結(jié)果返回給處理對象,處理對象再將報文主體裝成XML格式的字符串報文發(fā)給服務器端套接字,服務器端套接字再將報文發(fā)給客戶端。
2 系統(tǒng)數(shù)據(jù)流及數(shù)據(jù)存儲描述
系統(tǒng)主要數(shù)據(jù)流的說明如表1所示。
系統(tǒng)主要數(shù)據(jù)存儲如表2所示。
3 關(guān)鍵功能
3.1 系統(tǒng)登錄
系統(tǒng)登錄是在線程中實現(xiàn)登錄的,在線程中登錄是為了實現(xiàn)托盤狀態(tài)的轉(zhuǎn)變效果。在登錄之前,系統(tǒng)托盤呈現(xiàn)灰色(離線狀態(tài)),成功登陸后系統(tǒng)托盤呈現(xiàn)亮色(在線狀態(tài)),而在登錄中系統(tǒng)托盤呈現(xiàn)閃動效果。錄頁面包括身份的選擇、賬號輸入、密碼輸入、記住密碼復選框、登錄按鈕、設置按鈕。點擊設置按鈕彈出設置界面,界面包括客戶端連接服務器端的IP地址輸入框、端口輸入框,記住密碼功能是將用戶的信息存入到本地磁盤的文本文件中,當運行系統(tǒng)時系統(tǒng)從磁盤中讀取用戶信息。
3.2 管理功能
系統(tǒng)中有很多管理信息界面,管理信息界面主要是對信息進行添加、修改、刪除操作。下面就系統(tǒng)中的一個具有代表性的系部課程管理界面來做介紹。
管理員通過添加、修改、刪除來管理系部課程。
1)刪除功能
當管理員選中刪除單選按鈕時,界面下方的編輯框和組合框里就會出現(xiàn)選中的信息,但編輯框和組合框都變成不可編輯的。
2)修改功能
同刪除功能一樣,修改也是選中課程,然后下面的編輯框和組合框都顯示選中的課程信息,管理員可以到下面的編輯框和組合框編輯信息。
3)添加功能
當“添加”單選框沒有選中時,學院和教研室的組合框里面都是空數(shù)據(jù),當選擇“添加”按鈕時他們才會有數(shù)據(jù),并且當選中上面的課程信息時下面的編輯框和組合框不會顯示課程信息,教師可通過下拉框來選擇需要添加的課程。
3.3 上傳數(shù)據(jù)
單個添加數(shù)據(jù)顯得效率低下且極為不便,特別是需要添加大量數(shù)據(jù)時,為此系統(tǒng)增加了Excel表的導入功能,管理員可通過Excel表批量添加信息到數(shù)據(jù)庫。上傳Excel表界面如圖2所示。
點擊打開按鈕就會彈出文件對話框,為了減少導入數(shù)據(jù)出錯的可能性,文件對話框中的文件類型經(jīng)過了后綴名過濾處理,用戶只能選擇.xls后綴名文件。
3.4 消息和托盤
教師預約實驗室成功或者取消實驗室成功會需通知學生;管理員審批教師實驗室申請通過會需通知教師和學生;管理員進行系統(tǒng)調(diào)課需通知教師和學生。本系統(tǒng)增加了系統(tǒng)消息提示功能,消息框在電腦屏幕的右下角系統(tǒng)托盤處彈出。其中人形標志為系統(tǒng)客戶端托盤,托盤分為離線狀態(tài)下的托盤和在線狀態(tài)下的托盤,在用戶登錄之前托盤是離線狀態(tài)下(灰色),用戶在登錄之中是呈現(xiàn)閃動狀,成功登陸之后是在線狀(亮色)。在客戶端的主界面,設有一定時器,每隔3S向服務器發(fā)出請求,查看數(shù)據(jù)庫消息表中有無消息,如表中有消息,則在線程中實現(xiàn)消息提示框的彈出,具體代碼如下所示:
void CMainDialog::OnTimer(UINT_PTR nIDEvent)//定時器里發(fā)生操作,每3S
{ 省略部分代碼
if(Mtype!="")
{
int type = _ttoi(Mtype);
switch(type)
{
case 1:
ShowMessage("您的班級有新的預約!\n請查看課表!");
break;
case 2:
ShowMessage("您的班級有預約被取消,\n請查看課表!");
break;
case 3:
ShowMessage("您有新的申請通過?。躰請查看!");
break;
case 4:
ShowMessage("實驗室有新的申請!");
break;
case 5:
ShowMessage("管理員調(diào)動了課程,\n請查看課表!");
break;
}
}
}
}
LRESULT CMainDialog::MessageThread( LPVOID lparam)//消息框線程
{ TCHAR * pmessage = (TCHAR *)lparam;
if ( pmessage != NULL )
{ CMessageDialog cmessagedlg(pmessage);
cmessagedlg.DoModal();
free( pmessage );
pmessage = NULL;
}
return (LRESULT)TRUE;
}
4 小結(jié)
本系統(tǒng)在技術(shù)上實現(xiàn)了服務器端和客戶端的交互,使用XML格式的報文作為數(shù)據(jù)的載體在服務器端和客戶端進行傳輸,同時實現(xiàn)了在線程中進行用戶登錄、在線消息框提示、Excel表的導入、線程和進程間的消息交互等功能技術(shù)。在教師預約和管理員對數(shù)據(jù)修改上實現(xiàn)了并發(fā)控制,數(shù)據(jù)庫方面運用了觸發(fā)器和存儲過程加快了數(shù)據(jù)庫操作效率。
參考文獻:
[1] 鄭剛. 面向?qū)ο蠓椒ㄔ谛畔⑾到y(tǒng)開發(fā)中的應用[M]. 微機發(fā)展, 2002, 12(2).
[2] 覃征, 徐文華, 韓毅.等. 軟件項目管理[M]. 2版.北京: 清華大學出版社, 2009.
[3] 馬丁, 鄧輝. 敏捷軟件開發(fā)(原則模式與實踐)[M]. 北京: 清華大學出版社, 2003.