劉云萍
(太原工業(yè)學(xué)院 計(jì)算機(jī)工程系,山西 太原 030008)
三層架構(gòu)的宿舍管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
劉云萍
(太原工業(yè)學(xué)院 計(jì)算機(jī)工程系,山西 太原 030008)
通過(guò)對(duì)兩層架構(gòu)與三層架構(gòu)優(yōu)缺點(diǎn)的對(duì)比研究,利用Visual Studio 2012開(kāi)發(fā)平臺(tái)與SqlServer2008R2數(shù)據(jù)庫(kù)技術(shù)設(shè)計(jì)開(kāi)發(fā)了基于三層架構(gòu)模式宿舍管理系統(tǒng),三層架構(gòu)屬于瘦客戶的模式,用戶端只需要一個(gè)較小的硬盤、較小的內(nèi)存、較慢的CPU就可以獲得不錯(cuò)的性能.通過(guò)使用本系統(tǒng)可以使得管理人員提高管理學(xué)生宿舍管理的效率,同時(shí)提高數(shù)據(jù)的安全性,降低人員利用率,降低成本.
宿舍管理;三層架構(gòu);瘦客戶
隨著信息網(wǎng)絡(luò)廣泛普及,計(jì)算機(jī)信息化技術(shù)的創(chuàng)新.信息化管理系統(tǒng)已經(jīng)普遍應(yīng)用于各個(gè)行業(yè),高校的信息化建設(shè)不僅僅只涵蓋軟硬件設(shè)備、人員技術(shù)的問(wèn)題.目前它需要管理者加深對(duì)高等教育的理解,增強(qiáng)接受新事物的能力,有能力制定長(zhǎng)遠(yuǎn)發(fā)展規(guī)劃.現(xiàn)階段如果仍采取人工進(jìn)行管理不僅速度慢,同時(shí)也存在諸多失誤,準(zhǔn)確率低,導(dǎo)致資源浪費(fèi).雖然國(guó)內(nèi)關(guān)于學(xué)生宿舍管理系統(tǒng)的研究開(kāi)發(fā)的比較早,應(yīng)用于學(xué)生管理方面的系統(tǒng)軟件有很多,這些系統(tǒng)雖然具備很多優(yōu)點(diǎn),也解決了管理工作中大量而繁瑣的問(wèn)題,很大程度上提高了管理效率,但是也存在一些問(wèn)題.本系統(tǒng)采用三層架構(gòu)模式去開(kāi)發(fā),有利于將來(lái)群體開(kāi)發(fā),使得協(xié)同工作效率加倍,更好的支持分布式計(jì)算環(huán)境,用戶端通過(guò)邏輯層來(lái)訪問(wèn)數(shù)據(jù)層,減少了入口點(diǎn),把很多的系統(tǒng)功能都加以屏蔽.本系統(tǒng)能很好解決以往學(xué)生宿舍管理管理成本高、人員利用率相對(duì)低的缺點(diǎn).
兩層結(jié)構(gòu)如圖1所示:當(dāng)某個(gè)方面改變時(shí),系統(tǒng)整體都需要重新開(kāi)發(fā).把“多層”放在一層,分工不明確且耦合度高——維護(hù)性及擴(kuò)展性低,難以適應(yīng)需求變化.
圖1 兩層結(jié)構(gòu)圖
三層結(jié)構(gòu)如圖2所示:如有發(fā)生變化,只需更改該層,不需更改整個(gè)系統(tǒng).層次清晰,每層之間耦合度低,分工明確——提高了效率,適應(yīng)需求變化,可維護(hù)性高,可擴(kuò)展性高.
圖2 三結(jié)構(gòu)圖
三層架構(gòu)主要由UI(表現(xiàn)層), BLL(業(yè)務(wù)邏輯層),DAL(數(shù)據(jù)訪問(wèn)層)三層構(gòu)成.表現(xiàn)層(UI):就是展現(xiàn)給用戶的界面,即用戶在使用一個(gè)系統(tǒng)的時(shí)候他的所見(jiàn)所得.業(yè)務(wù)邏輯層(BLL):針對(duì)具體問(wèn)題的操作,也可以說(shuō)是對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理.數(shù)據(jù)訪問(wèn)層(DAL):該層所做事務(wù)直接操作數(shù)據(jù)庫(kù),針對(duì)數(shù)據(jù)的增添、刪除、修改、查找等.三層之間聯(lián)系主要靠實(shí)體層(Entity),Entity(實(shí)體層)它不屬于三層中的任何一層,但是它是必不可少的一層.Entity在三層架構(gòu)中的作用:實(shí)現(xiàn)面向?qū)ο笏枷胫械?封裝";貫穿于三層,在三層之間傳遞數(shù)據(jù);每一層(UI—>BLL—>DAL)之間的數(shù)據(jù)傳遞(單向)是靠變量或?qū)嶓w作為參數(shù)來(lái)傳遞的,這樣就構(gòu)造了三層之間的聯(lián)系,完成了功能的實(shí)現(xiàn).因此三層及實(shí)體層之間的依賴關(guān)系如下圖3所示:
2.1 接口設(shè)計(jì)
圖3 三層結(jié)構(gòu)圖
(1)接口:IEnumerable
函數(shù)原型:publicIEnumerable
參數(shù)說(shuō)明:為Model層中定義的類型
返回值說(shuō)明:list
功能:新建泛型集合將數(shù)據(jù)庫(kù)中的數(shù)據(jù)中存入表中.
(2)接口:GetById(Guid id)
函數(shù)原型:publicGetById(Guid id)
參數(shù)說(shuō)明:Guid類型id
返回值說(shuō)明:集合Rows
功能:根據(jù)id查詢獲取數(shù)據(jù)內(nèi)容.
(3)接口:Update(Guid id, string name)
函數(shù)原型:public void Update(Guid id, string name)
參數(shù)說(shuō)明:Guid類型 id, string類型 name
返回值類型:無(wú)
功能:進(jìn)行更新操作.
(4)接口:Insert(string name)
函數(shù)原型:public void Insert(string name)
參數(shù)說(shuō)明:string類型name
返回值類型:無(wú)
功能:進(jìn)行插入數(shù)據(jù)操作.
(5)接口:DeleteById(Guid id)
函數(shù)原型:public void DeleteById(Guid id)
參數(shù)說(shuō)明:Guid類型id
返回值類型:無(wú)
功能:根據(jù)所選id刪除行內(nèi)容.
2.2 類圖設(shè)計(jì)
下圖為學(xué)生信息類和宿舍信息類的類圖設(shè)計(jì),分別如圖4及圖5所示
其他的類圖設(shè)計(jì)與其相似,下面不將一一贅述.
2.3 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)
學(xué)生宿舍管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)包括,T_AllDorm表、T_Department表、T_Dorm表、T_EleCount表、T_IdName表、T_Operator表、T_Passport表、T_Student表、T_Relation表、T_SanitaryExam表、T_SanitaryRating表、T_Visitor表的設(shè)計(jì).
2.4 錯(cuò)誤處理設(shè)計(jì)
在使用本軟件時(shí),若出現(xiàn)錯(cuò)誤操作則會(huì)拋出錯(cuò)誤Message顯示錯(cuò)誤處理操作內(nèi)容,因此用戶在進(jìn)行數(shù)據(jù)操作時(shí)候嚴(yán)格按照數(shù)據(jù)范圍以及相關(guān)的正確處理方式進(jìn)行操作軟件.
圖4 學(xué)生信息查詢類圖
圖5 宿舍信息查詢
3.1 框架設(shè)計(jì)
本系統(tǒng)主要使用Visual Studio 2012進(jìn)行代碼編寫(xiě),使用SqlServer2008R2 進(jìn)行相關(guān)的數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),構(gòu)建DAL層、Model層、UI層進(jìn)行對(duì)于數(shù)據(jù)庫(kù)的交互處理.當(dāng)用戶進(jìn)行處理操作時(shí)通過(guò)調(diào)用DAL層中的方法進(jìn)行相關(guān)數(shù)據(jù)的處理操作.Model層主要存儲(chǔ)的是對(duì)于定義對(duì)象的字段屬性,UI層則為用戶看到的使用界面.本系統(tǒng)主要實(shí)現(xiàn)功能為學(xué)生信息管理、宿舍信息管理、宿舍衛(wèi)生與電費(fèi)管理、出入人員信息管理、對(duì)于宿舍證的打印操作等,下面為對(duì)各個(gè)框架的具體描述.
(1)管理員信息管理:可以對(duì)管理員進(jìn)行管理,添加修改刪除管理員信息,進(jìn)行設(shè)置用戶名和密碼.
(2)學(xué)生信息管理:對(duì)學(xué)生進(jìn)行學(xué)生信息的錄入,包括學(xué)生姓名、學(xué)號(hào)、生日、政治面貌、系別、籍貫、專業(yè)、宿舍號(hào)、郵件、身份證號(hào)、緊急聯(lián)系人、入住日期、離宿日期、備注、性別、職務(wù)、班級(jí)照片信息進(jìn)行錄入并存入到數(shù)據(jù)庫(kù)當(dāng)中,用戶可以進(jìn)行將存儲(chǔ)的學(xué)生信息導(dǎo)入到Excel中再進(jìn)行相應(yīng)的使用操作,還包括對(duì)于學(xué)生信息的添加刪除修改等操作.
(3)宿舍信息管理:進(jìn)行查詢宿舍現(xiàn)在的入住狀態(tài),通過(guò)此狀態(tài)可以判斷是否可以添加學(xué)生入住,達(dá)到后期分配宿舍的目的.同時(shí)可以查詢各個(gè)宿舍內(nèi)的學(xué)生與是否住滿的信息.通過(guò)對(duì)于查詢結(jié)果的處理可以進(jìn)行將預(yù)入住的學(xué)生分配到未住滿的宿舍操作.
(4)宿舍衛(wèi)生管理:可以進(jìn)行對(duì)于宿舍衛(wèi)生的評(píng)分,可以查詢出各個(gè)宿舍的衛(wèi)生狀況,并可以導(dǎo)出宿舍衛(wèi)生成績(jī)Excel.
(5)宿舍電費(fèi)管理:可以查詢各個(gè)宿舍的電費(fèi)信息,可以查詢出各個(gè)宿舍電費(fèi)的狀況與繳納記錄情況,并可以導(dǎo)出各個(gè)宿舍的電費(fèi)信息以及繳納情況的電費(fèi)表單Excel.
(6)宿舍證打?。哼M(jìn)入該模塊選擇需要進(jìn)行宿舍證打印操作的學(xué)生信息,通過(guò)使用水晶報(bào)表將宿舍證打印出來(lái).
3.2 功能類
(1)Model層:AllDorm、Department、Dorm、EleCount、IdName、Operator、Passport、Relation、SanitaryExam、SanitaryRating、Student、Visitor以上所有的類分別聲明所有類中的參數(shù)的聲明,并為后臺(tái)調(diào)用做準(zhǔn)備.
(2)DAL層:AllDormDAL、DepartmentDAL、DormDAL、EleCountDAL、IdNameDAL、OperatorDAL、PassportDAL、RelationDAL、SanitaryExamDAL、StudentDAL、SanitaryRatingDAL、VisitorDAL本層所有的類聲明了對(duì)數(shù)據(jù)庫(kù)進(jìn)行的處理操作.一般為通過(guò)Id獲取值,獲取整段信息列表,增加、刪除、修改等操作.
(3)UI層:主要為前臺(tái)顯示頁(yè)面類,即前臺(tái)顯示頁(yè)面.
(4)數(shù)據(jù)訪問(wèn)類:主要進(jìn)行連接數(shù)據(jù)庫(kù)操作,并通過(guò)調(diào)用SqlHelper類來(lái)完成DAL層訪問(wèn)數(shù)據(jù)庫(kù)的操作.
4.1 學(xué)生信息頭像錄入實(shí)現(xiàn)
通過(guò)添加WPFMediaKit程序集,在后臺(tái)調(diào)用本地?cái)z像頭,創(chuàng)建生成頭像的區(qū)域?qū)⒄掌远M(jìn)制字節(jié)形式存入到數(shù)據(jù)庫(kù)中,下面為調(diào)用WPFMediaKit.dll程序集中的方法來(lái)完成此項(xiàng)操作的代碼:
RenderTargetBitmap bmp = new RenderTargetBitmap(
(int)captureElement.ActualWidth, (int)captureElement.ActualHeight,
96, 96, PixelFormats.Default);
bmp.Render(captureElement);
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (MemoryStreamms = new MemoryStream())
{
encoder.Save(ms);
CaptureData = ms.ToArray();
}
DialogResult = true;
用戶登錄的主系統(tǒng)界面進(jìn)入學(xué)生信息添加模塊進(jìn)行學(xué)生頭像獲取功能,選擇攝像頭進(jìn)行操作,利用本地?cái)z像頭獲取頭像的操作界面如圖6所示.
圖6 學(xué)生頭像本地獲取界面
4.2 學(xué)生宿舍分配界面實(shí)現(xiàn)
宿舍表單中創(chuàng)建標(biāo)識(shí)列IsFulled標(biāo)志來(lái)判斷,在進(jìn)行查詢宿舍的操作附加條件為IsFulled的值為False,若IsFulled為False即該宿舍未住滿可將學(xué)生添加到該宿舍去.宿舍的容量值Size默認(rèn)為8,宿舍的Size不為8則IsFulled的值為False(未住滿狀態(tài)),若為8則IsFulled的值為True(住滿狀態(tài)),
通過(guò)查詢AllDorm表中各個(gè)宿舍的入住狀態(tài)獲取未住滿宿舍的信息,然后再講學(xué)生添加到未住滿的宿舍中.
代碼的實(shí)現(xiàn)則為調(diào)用數(shù)據(jù)庫(kù)公用類SqlHelper進(jìn)行對(duì)于宿舍信息的操作,操作處理為DAL層中的DormDAL中的方法,并將數(shù)據(jù)顯示在頁(yè)面的DategridView中.
其他界面(學(xué)生信息管理界面、宿舍電費(fèi)與衛(wèi)生管理界面、出入信息管理界面等)和功能的實(shí)現(xiàn)基本與上述基本一致,只是對(duì)數(shù)據(jù)的管理方法略有區(qū)別,整體詳細(xì)設(shè)計(jì)基本與任務(wù)書(shū)所需功能保持一致,這里不再贅述.
4.3 數(shù)據(jù)導(dǎo)出Excel表單實(shí)現(xiàn)
在本地引用中添加NPOI.dll程序集,此程序集中的方法優(yōu)勢(shì)在于不需要本地已經(jīng)裝有Office應(yīng)用Excel,并能生成.xls的文件,只要用Excel軟件打開(kāi)即可.并且在應(yīng)用此程序集的方法時(shí)不會(huì)每次都占用進(jìn)程,這樣不會(huì)另內(nèi)存使用添加負(fù)擔(dān),造成系統(tǒng)崩潰.
目前,經(jīng)過(guò)測(cè)試,本系統(tǒng)已開(kāi)始在學(xué)校適用運(yùn)行,基本達(dá)到預(yù)期效果.本系統(tǒng)還可方便進(jìn)行升級(jí),以適應(yīng)對(duì)數(shù)據(jù)量進(jìn)一步擴(kuò)大和安全性的需要.本管理系統(tǒng)為解決高校的使用需求為基礎(chǔ),分析和解決學(xué)院在宿舍管理方面面臨的實(shí)際問(wèn)題,某些功能由于自己知識(shí)的欠缺和時(shí)間不足使得系統(tǒng)開(kāi)發(fā)不夠精細(xì),功能實(shí)現(xiàn)不夠完善.另外系統(tǒng)在功能分析上可能存在不足之處,這些都有待進(jìn)一步的改善.
[1] 張海藩.軟件工程導(dǎo)論[M].第五版.北京:清華大學(xué)出版社,2008
[2] 牛麗平.UML面向?qū)ο笤O(shè)計(jì)與分析[M].北京:清華大學(xué)出版社,2008
[3] 章立民.ASP.NET開(kāi)發(fā)實(shí)戰(zhàn)范例寶典(使用C#)[M].北京:科學(xué)出版社,2010
[4] 劉 燁,吳中元.C#編程及應(yīng)用程序開(kāi)發(fā)教程[M].北京:清華大學(xué)出版社,2003
[5] 趙 杰.SQL SERVER數(shù)據(jù)庫(kù)管理設(shè)計(jì)與實(shí)現(xiàn)教程[M].北京:清華大學(xué)出版社,2004
Three-tier Architecture of the Design and Implementation of the Dormitory Management System
Liu Yunping
(Department of Computer Engineering, Taiyuan Institute of Technology, Taiyuan 030008, China)
To base on the comparative Analysis of the Pros and cons between 2-tier architecture And 3-tier architecture, Using Visual Studio 2012 development platform and SqlServer2008R2 database technology to design and develop the Dormitory Management System that based on 3-tier architecture.The 3-tier architecture belongs to the thin client mode, the clients only need a smaller hard disk、the smaller memory and the slower CPU to attain good performance. By using this system can make the administrative staff to improve the efficiency of management of student dormitory management, while increasing data safety, reducing of personnel utilization and cutting the cost.
dormitory management;three-tier architecture;thin clients
2015-01-12
劉云萍(1980-), 女,山西太原人,碩士,太原工業(yè)學(xué)院講師,主要從事數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)研究.
1672-2027(2015)01-0061-05
TP311.1
A