摘 要: 在某科研單位的設(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è)備流動(dòng)性的加強(qiáng)以及業(yè)務(wù)邏輯的復(fù)雜,,逐步呈現(xiàn)出管理過程繁復(fù)、容易出錯(cuò)并且不易追朔的特征,。本系統(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ā),對整個(gè)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)限的職能劃分如下:
?。?)管理員權(quán)限:主管信息系統(tǒng)的設(shè)備及信息錄入、刪除,、設(shè)備信息修改等,。
(2)瀏覽用戶權(quán)限:可以查詢單個(gè)設(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è)備所屬地、名稱,、價(jià)值,、管理員信息及參數(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)主要?jiǎng)澐譃樵O(shè)備管理操作模塊,、系統(tǒng)設(shè)置管理模塊、信息查詢模塊與密碼修改模塊4大部分,,參考Aspect-Orient Programming(AOP)設(shè)計(jì)思想[5],,各模塊之間橫切關(guān)注點(diǎn)分離開,其功能劃分具有更好的封裝性,。其功能框圖如圖2所示,。
各模塊主要功能如下:
(1)設(shè)備管理模塊:系統(tǒng)管理員權(quán)限可見,,負(fù)責(zé)設(shè)備的信息錄入,、修改、維修登記,、調(diào)撥登記以及報(bào)廢登記,,可細(xì)分為圖2所示的5個(gè)主要操作頁面。
通過系統(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的一個(gè)頁面,,保證全部設(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],。隨著使用單位的部門名稱變更、管理流程變更以及功能模塊的增加,,都會(huì)讓初始設(shè)計(jì)的系統(tǒng)陷入不能使用的尷尬境地,。從使用者的角度,設(shè)備管理系統(tǒng)開發(fā)周期長,、設(shè)計(jì)成本高、數(shù)據(jù)庫導(dǎo)入,、導(dǎo)出與修改的方法繁復(fù),,其做系統(tǒng)更換的代價(jià)較大,也極大地影響了一個(gè)系統(tǒng)的生命周期,。針對以上出現(xiàn)的問題,,如何設(shè)計(jì)系統(tǒng)的可擴(kuò)展性是評判系統(tǒng)設(shè)計(jì)優(yōu)良的一個(gè)重要指標(biāo)。本系統(tǒng)中的擴(kuò)展性設(shè)計(jì)基于以下兩方面:
?。?)部門與設(shè)備個(gè)別特征的可配置性,。在系統(tǒng)中,考慮到通用性與擴(kuò)展性的需求,,部門設(shè)計(jì)中以部門為管理單位,,對設(shè)備進(jìn)行歸屬部門的掛靠,并由組織機(jī)構(gòu)模塊負(fù)責(zé)部門的錄入,,其功能模塊如圖3所示,。
圖3中,實(shí)線框表示可設(shè)置的操作對象模塊,,虛線框表示相應(yīng)步驟中的操作功能選擇,,通過這樣的設(shè)計(jì),在部門發(fā)生變動(dòng)的情況下也可以具有很好的通用性與擴(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)控制的需要,。由于會(huì)面臨多次數(shù)據(jù)庫的訪問,因此在系統(tǒng)中聲明一個(gè)新的訪問接口類,,其繼承通用類OleDbmanager,,并調(diào)用類的多個(gè)構(gòu)造函數(shù),以實(shí)現(xiàn)在未來數(shù)據(jù)庫類型更改的情況下,,或是有修改數(shù)據(jù)類型的鏈接時(shí),,對這個(gè)實(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)試與修改,將會(huì)具有一定的便捷性,。在asp:textbox控件與asp:dropdownlist控件填寫完相應(yīng)的信息以后,,會(huì)由asp:button進(jìn)行具體的數(shù)據(jù)獲取與執(zhí)行,進(jìn)行數(shù)據(jù)庫的寫入,。
在數(shù)據(jù)庫寫入時(shí),,考慮到程序的擴(kuò)展性,,利用數(shù)組的方法進(jìn)行數(shù)據(jù)庫的對齊寫入。一般情況下,,有ArrayList和LinkedList兩個(gè)實(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ù)的查錯(cuò)與修改,具有更好的格式性[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.