摘 要: 在某科研單位的設(shè)備使用場景及實(shí)際需求背景下,為了實(shí)現(xiàn)設(shè)備的靈活管理與流程管理,介紹了一種基于B/S模式的可擴(kuò)展性較高的設(shè)備管理系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)方式。系統(tǒng)通過Microsoft Visual Studio .NET平臺技術(shù),利用C#語言與SQL Server數(shù)據(jù)庫,最終實(shí)現(xiàn)了操作方便、擴(kuò)展容易、數(shù)據(jù)傳輸可靠的以WEB進(jìn)行數(shù)據(jù)錄入及查詢的設(shè)備管理系統(tǒng)。實(shí)際使用證明,該系統(tǒng)極大地提高了設(shè)備管理的工作效率,并且通過擴(kuò)展性設(shè)計(jì)極大地延長了系統(tǒng)的生命周期。
關(guān)鍵詞: B/S模式;設(shè)備管理系統(tǒng);C#語言;SQL Sever數(shù)據(jù)庫
目前在眾多企業(yè)及科研單位,其設(shè)備管理通常通過人工利用表格錄入進(jìn)行查詢及報(bào)廢等工作,這樣的方式隨著設(shè)備的增加、設(shè)備流動性的加強(qiáng)以及業(yè)務(wù)邏輯的復(fù)雜,逐步呈現(xiàn)出管理過程繁復(fù)、容易出錯并且不易追朔的特征。本系統(tǒng)是根據(jù)某科研單位的需求,合作開發(fā)的一套基于網(wǎng)絡(luò)化的設(shè)備管理平臺。該科研單位由于設(shè)備逐步增加,業(yè)務(wù)流程逐步改革,傳統(tǒng)的人工模式不能適應(yīng)設(shè)備管理的需要,本系統(tǒng)在設(shè)備管理上可極大地減輕管理人員的負(fù)擔(dān),更符合該單位目前需求與未來發(fā)展。
C#是運(yùn)行于.NET Framework上由微軟公司發(fā)布的面向?qū)ο蟮拈_發(fā)語言,它在2000年由Anders Hejlsberg主持開發(fā),對整個IT界具有很大的影響[1-2]。其中最重要的影響是在.NET平臺下開發(fā)應(yīng)用程序變得更加簡便、現(xiàn)代及通用,并且.NET使Internet的行為方式被改變,利用一種較為新型的開發(fā)、發(fā)行及使用方式,更好地體現(xiàn)了軟件服從于服務(wù)的思想[3]。隨著國內(nèi)網(wǎng)絡(luò)信息交流的頻繁與局域網(wǎng)的發(fā)展,其網(wǎng)絡(luò)數(shù)據(jù)帶寬得到了較大提高[4],其中B/S模式的管理系統(tǒng)也具有無需安裝客戶端,在目前網(wǎng)絡(luò)條件下具有訪問快捷與變更靈活等特征,所以設(shè)計(jì)以.NET平臺下利用C#語言開發(fā)的B/S系統(tǒng),結(jié)合SQL Sever數(shù)據(jù)庫的三層模型,是開發(fā)設(shè)備管理系統(tǒng)較為理想的方式。
1 系統(tǒng)需求與功能分析
在對該單位設(shè)備管理流程以及管理對象進(jìn)行認(rèn)真調(diào)研及分析后,確定了系統(tǒng)的基本功能與需求。系統(tǒng)需要對科研設(shè)備進(jìn)行統(tǒng)一的管理及部署,實(shí)現(xiàn)對設(shè)備信息的錄入及查詢兩大基本模塊,并可以由一般權(quán)限人員對設(shè)備進(jìn)行查詢。系統(tǒng)主要由服務(wù)器、數(shù)據(jù)庫、交換設(shè)備以及瀏覽終端組成,其網(wǎng)絡(luò)部署拓?fù)淙鐖D1所示。
使用者角色為管理員與普通用戶,其權(quán)限的職能劃分如下:
(1)管理員權(quán)限:主管信息系統(tǒng)的設(shè)備及信息錄入、刪除、設(shè)備信息修改等。
?。?)瀏覽用戶權(quán)限:可以查詢單個設(shè)備信息、檢索類設(shè)備信息、系統(tǒng)留言信息等。
以上權(quán)限根據(jù)其應(yīng)用需求,適合采用模塊化設(shè)計(jì),并根據(jù)用戶的認(rèn)證權(quán)限決定各模塊是否顯示。
通過實(shí)際管理流程分析,針對設(shè)備屬性方面分為設(shè)備操作屬性與設(shè)備自身屬性。設(shè)備操作屬性包括設(shè)備的調(diào)撥、報(bào)廢、錄入、刪除及維修。其自身屬性包括設(shè)備所屬地、名稱、價值、管理員信息及參數(shù)等數(shù)據(jù)。而合理的參數(shù)設(shè)置以及在系統(tǒng)設(shè)計(jì)中充分考慮到設(shè)備的屬性修改的便捷性,對系統(tǒng)的擴(kuò)展及生命力具有重要的意義。
2 設(shè)備管理系統(tǒng)的設(shè)計(jì)
2.1 系統(tǒng)模塊設(shè)計(jì)
設(shè)備管理系統(tǒng)的管理對象是設(shè)備,根據(jù)用戶的實(shí)際使用情況,系統(tǒng)主要劃分為設(shè)備管理操作模塊、系統(tǒng)設(shè)置管理模塊、信息查詢模塊與密碼修改模塊4大部分,參考Aspect-Orient Programming(AOP)設(shè)計(jì)思想[5],各模塊之間橫切關(guān)注點(diǎn)分離開,其功能劃分具有更好的封裝性。其功能框圖如圖2所示。
各模塊主要功能如下:
?。?)設(shè)備管理模塊:系統(tǒng)管理員權(quán)限可見,負(fù)責(zé)設(shè)備的信息錄入、修改、維修登記、調(diào)撥登記以及報(bào)廢登記,可細(xì)分為圖2所示的5個主要操作頁面。
通過系統(tǒng)設(shè)置管理模塊,可以大大提高系統(tǒng)的通用性以及系統(tǒng)使用的便捷性,避免了由于諸如部門更名而系統(tǒng)必須修改的情況。
?。?)信息查詢模塊:系統(tǒng)管理員權(quán)限與瀏覽用戶權(quán)限均可見,主要負(fù)責(zé)對設(shè)備統(tǒng)計(jì)搜索查詢、維修搜索查詢、調(diào)撥搜索查詢以及報(bào)廢統(tǒng)計(jì)查詢。查詢中必須定義:
其中,D1為查詢設(shè)備集,D2為維修設(shè)備集,D3為調(diào)撥設(shè)備集,D4為報(bào)廢設(shè)備集。在系統(tǒng)中存在唯一查詢De的一個頁面,保證全部設(shè)備可列出,并由狀態(tài)欄顯示其所屬子集。其他頁面查詢只顯示子集列表,通過這樣的設(shè)計(jì),隨著設(shè)備量的增加,能保證設(shè)備可列數(shù)量較少,提高工作效率,也可以通過限制顯示列表數(shù)量的方式,為后續(xù)的手機(jī)系統(tǒng)作為查詢終端奠定可擴(kuò)展的空間[6]。
2.2 系統(tǒng)擴(kuò)展性設(shè)計(jì)
設(shè)備管理系統(tǒng)的設(shè)計(jì)應(yīng)遵循易用性與可擴(kuò)展性原則[7]。隨著使用單位的部門名稱變更、管理流程變更以及功能模塊的增加,都會讓初始設(shè)計(jì)的系統(tǒng)陷入不能使用的尷尬境地。從使用者的角度,設(shè)備管理系統(tǒng)開發(fā)周期長、設(shè)計(jì)成本高、數(shù)據(jù)庫導(dǎo)入、導(dǎo)出與修改的方法繁復(fù),其做系統(tǒng)更換的代價較大,也極大地影響了一個系統(tǒng)的生命周期。針對以上出現(xiàn)的問題,如何設(shè)計(jì)系統(tǒng)的可擴(kuò)展性是評判系統(tǒng)設(shè)計(jì)優(yōu)良的一個重要指標(biāo)。本系統(tǒng)中的擴(kuò)展性設(shè)計(jì)基于以下兩方面:
?。?)部門與設(shè)備個別特征的可配置性。在系統(tǒng)中,考慮到通用性與擴(kuò)展性的需求,部門設(shè)計(jì)中以部門為管理單位,對設(shè)備進(jìn)行歸屬部門的掛靠,并由組織機(jī)構(gòu)模塊負(fù)責(zé)部門的錄入,其功能模塊如圖3所示。
圖3中,實(shí)線框表示可設(shè)置的操作對象模塊,虛線框表示相應(yīng)步驟中的操作功能選擇,通過這樣的設(shè)計(jì),在部門發(fā)生變動的情況下也可以具有很好的通用性與擴(kuò)展性。
?。?)設(shè)備管理系統(tǒng)架構(gòu)采用軟件架構(gòu)上采用的表現(xiàn)層、邏輯層和數(shù)據(jù)訪問層3層架構(gòu)。系統(tǒng)中功能目錄結(jié)構(gòu)利用數(shù)據(jù)庫實(shí)現(xiàn)表現(xiàn)層與邏輯層的聯(lián)系,頁面中目錄以樹形結(jié)構(gòu)顯示,并由H_systemtree表中Parentid項(xiàng)與序號ID項(xiàng)進(jìn)行樹形目錄顯示及葉節(jié)點(diǎn)、根節(jié)點(diǎn)的確定。H_systemtree表結(jié)構(gòu)設(shè)計(jì)如表1所示。
通過設(shè)計(jì)H_systemtree表控制目錄樹顯示,具有修改方便、擴(kuò)展性強(qiáng)的特點(diǎn),通過數(shù)據(jù)表項(xiàng)的修改,可以方便調(diào)整目錄樹的顯示結(jié)構(gòu),也可以通過頁面的鏈接較為快速地對系統(tǒng)進(jìn)行模塊化的擴(kuò)充。
3 設(shè)備管理系統(tǒng)關(guān)鍵技術(shù)的實(shí)現(xiàn)
3.1 數(shù)據(jù)庫實(shí)現(xiàn)
通過用戶的實(shí)際需要,首先設(shè)計(jì)了包括H_DeviceInfo在內(nèi)的10余張表,以滿足用戶的數(shù)據(jù)存儲訪問以及系統(tǒng)控制的需要。由于會面臨多次數(shù)據(jù)庫的訪問,因此在系統(tǒng)中聲明一個新的訪問接口類,其繼承通用類OleDbmanager,并調(diào)用類的多個構(gòu)造函數(shù),以實(shí)現(xiàn)在未來數(shù)據(jù)庫類型更改的情況下,或是有修改數(shù)據(jù)類型的鏈接時,對這個實(shí)現(xiàn)類進(jìn)行修改就可以適應(yīng),而不需要去改變接口的定義,從而避免由于上層應(yīng)用程序變更而變更接口的定義[8]。連接數(shù)據(jù)庫構(gòu)造函數(shù)定義部分代碼如下:
Public IDbConnection connectDb();
{
If(Connection==NULL)
{
Connection=new OleDbConnection(Connect_string)
}
try{Connection.open();}
return Connection;
}
3.2 ArrayList對象的數(shù)據(jù)存儲
根據(jù)設(shè)備管理系統(tǒng)信息錄入的特點(diǎn),通用性的設(shè)計(jì)標(biāo)題類數(shù)據(jù)利用HTML標(biāo)記語言中的td標(biāo)記進(jìn)行單元格定義,并由td標(biāo)記標(biāo)簽進(jìn)行靜態(tài)文本的顯示,這樣的好處是方便修改背景色、表格大小等屬性。利用asp:textbox控件進(jìn)行數(shù)據(jù)的獲取,利用asp:dropdownlist控件進(jìn)行數(shù)據(jù)選擇,利用asp:button控件進(jìn)行操作函數(shù)的觸發(fā)。對程序設(shè)計(jì)進(jìn)行規(guī)定后,其后續(xù)的開發(fā)以及設(shè)備上線后的調(diào)試與修改,將會具有一定的便捷性。在asp:textbox控件與asp:dropdownlist控件填寫完相應(yīng)的信息以后,會由asp:button進(jìn)行具體的數(shù)據(jù)獲取與執(zhí)行,進(jìn)行數(shù)據(jù)庫的寫入。
在數(shù)據(jù)庫寫入時,考慮到程序的擴(kuò)展性,利用數(shù)組的方法進(jìn)行數(shù)據(jù)庫的對齊寫入。一般情況下,有ArrayList和LinkedList兩個實(shí)現(xiàn)類可以實(shí)現(xiàn)數(shù)組的結(jié)構(gòu),但是這兩種方法的實(shí)現(xiàn)方式不一致,Linklist類是由鏈表實(shí)現(xiàn),而ArrayList類則是由數(shù)組實(shí)現(xiàn)。由于對齊方式寫入數(shù)據(jù)庫方式更能保證數(shù)據(jù)的查錯與修改,具有更好的格式性[9],這里考慮利用ArrayList類中Add方法進(jìn)行數(shù)據(jù)的獲取保存,并通過調(diào)用SQL語句寫入數(shù)據(jù)庫。其關(guān)鍵代碼如下:
/*獲取模塊中所需信息*/
ArrayList Device=new ArrayList();
…
Device.Add(DeviceNo.text);//設(shè)備編號
Device.Add(DeviceName);//設(shè)備名
…
/*插入數(shù)據(jù)庫*/
String SQL="insert into H_DeviceInfo(…deviceNo,deviceName…)values("+…,′"Device[n]+"′,′"Device[n+1]+"′…)";
通過以上方式,就可以把設(shè)備編號與設(shè)備名稱分別插入到表H_DeviceInfo中的deviceNo項(xiàng)與deviceName項(xiàng)中。在查詢模塊中,其數(shù)據(jù)的讀出顯示也采用類似的原理。通過這樣的設(shè)計(jì),較大程度地加強(qiáng)了程序的可讀性,并使程序在后續(xù)的修改中實(shí)現(xiàn)了較為便捷的目的。
系統(tǒng)設(shè)計(jì)以某科研單位的實(shí)際需求為設(shè)計(jì)依據(jù),概述了基于.NET利用C#語言開發(fā)的設(shè)備管理系統(tǒng)的設(shè)計(jì)過程,參考AOP的編程思想,提出了其中關(guān)鍵技術(shù)的實(shí)現(xiàn)方式。并且在設(shè)計(jì)及實(shí)現(xiàn)的過程中,通過使用模塊化設(shè)計(jì)、樹形菜單的數(shù)據(jù)庫控制及顯示、新聲明數(shù)據(jù)庫接口、控件使用相對單一和橫切關(guān)注點(diǎn)分離的編程思想,提高了程序的可讀性、簡易性,最終實(shí)現(xiàn)了可擴(kuò)展、生命周期長以及通用性高的設(shè)備管理系統(tǒng)。該系統(tǒng)可以較為方便地部署,通過后續(xù)的系統(tǒng)運(yùn)行測試,代替了傳統(tǒng)的設(shè)備管理模式,也驗(yàn)證了系統(tǒng)的擴(kuò)展性及可靠性,并且可以方便地?cái)U(kuò)展到手持終端的查詢,豐富系統(tǒng)訪問途徑。
參考文獻(xiàn)
[1] 張榮,王培俊,曹永彥,等.基于ASP .NET技術(shù)的實(shí)驗(yàn)中心信息化管理平臺的設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(5):235-237.
[2] 林金田,譚鑒榮,周欽強(qiáng),等.基于Web氣象技術(shù)裝備管理與查詢系統(tǒng)設(shè)計(jì)[J].成都信息工程學(xué)院學(xué)報(bào),2009,24(3):264-267.
[3] 曹蕾,李楠,寧燕子,等.基于C#. Net的公司內(nèi)部管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2011,2(2):50-52.
[4] Zhang Donglai, CODDINGTON P, WENDELBORN A. Web services workflow with result data forwarding as resources [J]. Future Generation Computer Systems,2011,27(6):694-702.
[5] 陳旻.基于ADO .NET數(shù)據(jù)庫訪問實(shí)例的設(shè)計(jì)實(shí)現(xiàn)與應(yīng)用[J].軟件導(dǎo)刊,2010,9(7):101-103.
[6] MAES S H. Distributed device information management system as a distributed information repository system: U.S. Patent 7,949,569[P].(2011-5-24).http://www.freepatentsonline.com/y2008/0183753.html
[7] 周芹,周遠(yuǎn)龍,王磊.基于B/S結(jié)構(gòu)的高校設(shè)備管理系統(tǒng)設(shè)計(jì)[J].軟件導(dǎo)刊,2013,12(2):82-83.
[8] 陳月娟,李慧,劉光遠(yuǎn),等.基于AOP的信息管理系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(2):130-133.
[9] SENTHIL J, ARUMUGAM S, KAPOOR S M A A. Automatic code generation for recurring code patterns in Web based applications and increasing efficiency of data access code[J]. International Journal of Computer Science, 2012, 9(3):473-476.