趙相宇等
摘 要:實驗室設(shè)備管理系統(tǒng)為解決以往的實驗室由管理人員手動管理的費時費力等多方面問題而設(shè)計。本文通過系統(tǒng)分析、數(shù)據(jù)庫設(shè)計、系統(tǒng)實現(xiàn)、系統(tǒng)測試四個方面對實驗室設(shè)備管理系統(tǒng)進(jìn)行分析與設(shè)計。在本系統(tǒng)的開發(fā)過程中,充分考慮到了后期系統(tǒng)的維護(hù)工作,采用了SSH框架來完成整個系統(tǒng)的開發(fā),用MySQL作為后臺數(shù)據(jù)庫存儲數(shù)據(jù)信息,MyEclipse作為開發(fā)工具,緊緊貼合實驗室的需求。
關(guān)鍵詞:業(yè)務(wù)層;邏輯層;控制層;設(shè)備管理
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A
1 引言(Introduction)
隨著現(xiàn)代科技的發(fā)展和進(jìn)步,實驗室成為一些高校以及科研院所的必備,實驗室設(shè)備的管理問題關(guān)系到實驗教學(xué)與科研項目是否能成功運行,傳統(tǒng)的紙質(zhì)報表管理模式隨著時間的推移數(shù)量的龐大,不便于保存和統(tǒng)計,無法準(zhǔn)確了解實驗設(shè)備運行狀態(tài)和使用情況。隨著信息技術(shù)的發(fā)展,人們更加青睞于將這樣復(fù)雜的工作交給計算機來進(jìn)行處理,該系統(tǒng)的開發(fā)便是基于這樣的需求,將實驗室的管理需求進(jìn)行信息化處理。通過該系統(tǒng)來規(guī)范的存儲和統(tǒng)計實驗室的設(shè)備信息。
2 系統(tǒng)的主要設(shè)計工作(Major design work of the
platform)
2.1 系統(tǒng)的主要任務(wù)
實驗室設(shè)備管理系統(tǒng)能夠通過系統(tǒng)管理員實現(xiàn)對設(shè)備的分類管理;可以對合法的注冊用戶發(fā)出的設(shè)備借用申請進(jìn)行審批并提交審批意見和審批結(jié)果進(jìn)行記錄;并在被借設(shè)備歸還時進(jìn)行歸還操作;管理員還可以對設(shè)備的維修信息記錄并可以查看歷史維修記錄,通過本系統(tǒng),管理員可以進(jìn)行各類數(shù)據(jù)的統(tǒng)計、報表,方便為管理者提供有價值的信息。系統(tǒng)具有數(shù)據(jù)安全準(zhǔn)確、界面友好、操作簡潔、便于維護(hù)和升級等特點。
2.2 系統(tǒng)開發(fā)工具簡介
該系統(tǒng)在Windows7操作系統(tǒng)上,采用SSH框架來完成整個系統(tǒng)的開發(fā),用MySQL作為后臺數(shù)據(jù)庫存儲數(shù)據(jù)信息,MyEclipse作為開發(fā)工具。SSH即Struts2+Spring+Hibernate。Struts2是基于MVC模式的一種框架,對Model層、View層、Control層都提供了相應(yīng)的組件;Spring是一種輕量級的控制反轉(zhuǎn)和面向切面的容器框架,解決了企業(yè)應(yīng)用開發(fā)的復(fù)雜性的問題[1]。MySQL是為人們普遍應(yīng)用的中型關(guān)系型數(shù)據(jù)庫,它提供的數(shù)據(jù)類型與Java中的數(shù)據(jù)類型基本相吻合,避免了不少繁瑣的類型之間的轉(zhuǎn)換問題,為本系統(tǒng)的數(shù)據(jù)的管理和維護(hù)提供了方便。Hibernate是對象關(guān)系映射框架,可以應(yīng)用在任何能用到JDBC的場合,扮演著數(shù)據(jù)持久化的角色[2]。系統(tǒng)具有數(shù)據(jù)安全準(zhǔn)確、操作簡潔、界面有好、便于維護(hù)和升級等特點。
3 系統(tǒng)的總體功能框架設(shè)計(The general design of
the system)
根據(jù)系統(tǒng)需求分析,可以將實驗室設(shè)備管理系統(tǒng)分為兩個主要模塊,分別介紹如下。
3.1 管理員模塊
在這個模塊中,主要實現(xiàn)的是管理員利用系統(tǒng)對普通的用戶和實驗室設(shè)備進(jìn)行管理,詳細(xì)的操作有:對本用戶進(jìn)行修改密碼;對注冊用戶進(jìn)行停用和恢復(fù)密碼;對設(shè)備類型進(jìn)行管理;對設(shè)備進(jìn)行管理;對用戶發(fā)出的借用申請進(jìn)行審批;設(shè)備維修管理。具體的功能框架如圖1所示。
3.2 注冊用戶模塊
在本模塊中,主要實現(xiàn)的是注冊用戶操作本系統(tǒng)借用設(shè)備,具體操作有:注冊用戶可以自行修改本用戶的密碼;注冊用戶可以對設(shè)備發(fā)出借用申請;注冊用戶可以查看申請結(jié)果;注冊用戶可以查看借用歷史。具體的功能框架如圖2所示。
4 數(shù)據(jù)庫設(shè)計(The design of database)
根據(jù)系統(tǒng)的設(shè)計要求,系統(tǒng)應(yīng)該保存設(shè)備相關(guān)信息,管理員信息和使用者信息,為滿足各項功能的需要,系統(tǒng)數(shù)據(jù)庫設(shè)計如下。
4.1 管理員信息與學(xué)生信息設(shè)計
學(xué)生信息表即用戶表,系統(tǒng)的設(shè)定本為學(xué)生對實驗室設(shè)備進(jìn)行借用、歸還等操作,所以用戶表即為學(xué)生表。管理員信息表是專門存放管理員登陸信息的數(shù)據(jù)表。具體數(shù)據(jù)結(jié)構(gòu)如下:學(xué)生表(t_student)=<學(xué)生編號(id),學(xué)生姓名(name),學(xué)生性別(sex),學(xué)號(stuId),登錄名(loginName),登錄密碼(loginPw)>。管理員表=<編號(id),用戶名(username),密碼(password)>。
說明:學(xué)生編號與學(xué)號不同,學(xué)生編號僅僅是為了作為數(shù)據(jù)表中主鍵的,區(qū)分其他字段的唯一標(biāo)識的存在。表中除了學(xué)生的基本信息外還有作為用戶信息的登錄名和登錄密碼,也保存在表中。
4.2 設(shè)備類型設(shè)計
為了方便對設(shè)備進(jìn)行管理,系統(tǒng)設(shè)計了設(shè)備類型管理功能,設(shè)備類型表用于存放各個設(shè)備的類型信息:設(shè)備類型表(t_type)=<類型編號(id),類別名稱(typeName)>。
4.3 設(shè)備信息設(shè)計
設(shè)備信息表=<編號(id),設(shè)備類型(typeId),設(shè)備編號(deviceId),設(shè)備描述(description),購買時間(time),狀態(tài)(state)>。
說明:設(shè)備信息表用于保存設(shè)備信息,編號和設(shè)備編號不同,編號是邏輯上表的主鍵,唯一標(biāo)識,而設(shè)備編號是對應(yīng)到每一臺設(shè)備上的物理上的對設(shè)備進(jìn)行區(qū)分的標(biāo)號;設(shè)備類型作為外鍵,保存設(shè)備類型表中的主鍵,狀態(tài)用來保存設(shè)備當(dāng)前的狀態(tài),例如:空閑、借出、維修中等。
4.4 設(shè)備申請、借用與維修設(shè)計
設(shè)備申請表=<編號(id),申請人(stuId),申請設(shè)備(devId),申請時間(applyTime),審批時間(approveTime),審批意見(opinion)>。設(shè)備借用表=<編號(id),申請人(stuId),申請設(shè)備(devId),借用時間(borrowTime),歸還時間(returnTime),是否損壞(isBroken),賠償金額(compensation),備注(remark)>。設(shè)備維修表=<編號(id),維修設(shè)備(devId),維修時間(serviceTime),維修內(nèi)容(content),維修人(serviceman),維修金額(payment),備注(remark)>。
說明:設(shè)備申請表是管理員用戶在后臺處理設(shè)備借用申請時用到的表,其中申請人和申請設(shè)備分別為學(xué)生表和設(shè)備表的主鍵,在此表中作為聯(lián)合外鍵。設(shè)備借用表中的申請人和申請設(shè)備與其同理。設(shè)備借用表中需要存放設(shè)備的狀態(tài),即用戶歸還設(shè)備時,管理員需查看設(shè)備是否損壞,并確定相應(yīng)的賠償金額。如果設(shè)備有所損壞,則在維修表中增加一條記錄,記錄設(shè)備維修的相關(guān)信息。
5 系統(tǒng)重要功能的具體實現(xiàn)(The concrete realization
of the important function of the system)
本系統(tǒng)采用的SSH框架,其中Hibernate起到的作用就是數(shù)據(jù)持久化,通過在代碼中添加注解的方式實現(xiàn)。這種形式的Hibernate通過訪問JavaBean能自動生成較為合理,清晰的數(shù)據(jù)表。Hibernate使用的hql語言也是針對Java類而不是數(shù)據(jù)庫表的,所以使用起來也會比sql語句方便、有效。
5.1 系統(tǒng)的業(yè)務(wù)邏輯層實現(xiàn)
實驗設(shè)備管理要求:管理員可以添加設(shè)備分類并根據(jù)設(shè)備分類進(jìn)行添加設(shè)備信息,管理員可以查看、修改和刪除設(shè)備信息,設(shè)備信息查詢的結(jié)果包括設(shè)備編號、設(shè)備名稱、設(shè)備類型、購買時間、設(shè)備狀態(tài)。當(dāng)用戶對設(shè)備發(fā)出借用申請時,管理員可以處理該申請,或同意,或不同意,如果管理員同意用戶的借用申請,則應(yīng)在系統(tǒng)內(nèi)進(jìn)行登記操作,此時該設(shè)備的狀態(tài)將變?yōu)椤耙淹饨琛?。?dāng)用戶歸還設(shè)備時,管理員應(yīng)查看設(shè)備的損壞程度,開出相應(yīng)的賠償金額并在系統(tǒng)內(nèi)進(jìn)行歸還操作。管理員可以錄入維修損壞的的設(shè)備信息和查看某個設(shè)備的歷史維修記錄。
5.2 系統(tǒng)的數(shù)據(jù)訪問層實現(xiàn)
該層主要通過Hibernate配合Dao來實現(xiàn)。數(shù)據(jù)庫訪問層是為業(yè)務(wù)邏輯層提供數(shù)據(jù)服務(wù),通過訪問數(shù)據(jù)庫中的數(shù)據(jù),進(jìn)行加工,來實現(xiàn)系統(tǒng)各個功能模塊對數(shù)據(jù)的需求。
5.3 系統(tǒng)表示層實現(xiàn)
視圖層是通過前端web的形式實現(xiàn)系統(tǒng)和用戶之間的交互,主要表現(xiàn)形式為JSP頁面。以下展“管理員功能模塊”主要實現(xiàn)的功能和主要代碼。
“管理員功能模塊”包括用戶管理、設(shè)備類型管理、設(shè)備管理模塊、設(shè)備借用管理模塊、設(shè)備維修管理模塊五個部分。以下展示用戶管理模塊、設(shè)備類型管理模塊和設(shè)備管理模塊的功能和控制層代碼。
5.3.1 用戶管理模塊
在后臺主頁面上可以看到“用戶信息管理”標(biāo)簽,點擊該標(biāo)簽,列出所有用戶,包括管理員用戶和普通用戶,管理員可以通過每個用戶所在行的后面的兩個按鈕實現(xiàn)凍結(jié)用戶和初始化用戶密碼的功能,其中初始化用戶密碼是將該用戶的密碼初始化為“111111”,實現(xiàn)代碼如下:
public String pwChange(){
String sql="update TStudent set loginPw='111111'where id="+id;
TStudentDao.getHibernateTemplate().bulkUpdate(sql);
this.setMessage("密碼初始化成功");
this.setPath(studentMana.action);
return"succeed";
}
5.3.2 設(shè)備類型管理模塊
在后臺主頁面上點擊“設(shè)備類型管理”標(biāo)簽則列出所有設(shè)備類型,管理員可以對設(shè)備類型進(jìn)行新增、修改、刪除操作,以下代碼實現(xiàn)設(shè)備類型的新增功能:
public String typeAdd(){
type.setDel("no");
TTypeDao.save(type);
this.setMessage("類型添加成功");
this.setPath("typeMana.action");
return"succeed";
}
5.3.3 設(shè)備管理模塊
在后臺主頁上點擊“實驗設(shè)備管理”標(biāo)簽則列出所有實驗設(shè)備,與設(shè)備類型管理模塊相似,管理員可以對設(shè)備進(jìn)行新增、修改、刪除操作,以下為查看設(shè)備列表主要代碼:
Session sqlSession=TDeviceDao.getSessionFactory().openSession();
SQLQuery sqlQuery=sqlSession.createSQLQuery(sql);
List objList=sqlQuery.list();
for(Object obj:objList){
TDevice device=new TDevice();
device.setId((Integer)obj[0]);
device.setDeviceId((String)obj[1]);
device.setDescription((String)obj[2]);
device.setTime((String)obj[3]);
device.setStrType((String)obj[4]);
device.setStrState((String)obj[5]);
device.setState((Integer)obj[6]);
deviceList.add(device);
}
sqlSession.close();
request.setAttribute("deviceId",deviceId);
request.setAtrribute("deviceName",deviceName);
request.setAttribute("deviceList",deviceList);
return"deviceQuery";
6 結(jié)論(Conclusion)
本論文設(shè)計的實驗室設(shè)備管理系統(tǒng),對于任何實驗室均可用。為實驗室管理員提供了高效、省時、便利的管理方式。該實驗室設(shè)備管理系統(tǒng)主要包括了用戶登錄、設(shè)備錄入、設(shè)備管理、設(shè)備分類管理等模塊,主要實現(xiàn)對設(shè)備的高效管理。系統(tǒng)的設(shè)計便于后期的維護(hù)與升級[3]。
參考文獻(xiàn)(References)
[2] BruceEckel.Java編程思想[M].北京:機械工業(yè)出版社,2003.
[1] 孫衛(wèi)琴,李洪成.Tomcat與Java Web開發(fā)技術(shù)詳解[M].北京:電
子工業(yè)出版社,2003.
[3] 孫涌.現(xiàn)代軟件工程[M].北京:北京希望電子出版社,2003.
作者簡介:
趙相宇(1990-),男,本科生.研究領(lǐng)域:軟件開發(fā).
劉 燕(1963-),女,碩士,教授.研究領(lǐng)域:數(shù)據(jù)挖掘,算法
設(shè)計.
王金玲(1971-),女,碩士,副教授.研究領(lǐng)域:數(shù)據(jù)庫技術(shù).