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