版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第17章 酒店管理系統(tǒng),本章利用前面學(xué)過的知識(shí),結(jié)合.NET三層結(jié)構(gòu)的開發(fā)思想,完成一個(gè)C/S結(jié)構(gòu)的實(shí)用的酒店管理系統(tǒng),來鞏固和加深前面學(xué)過的編程技術(shù)。本章還通過系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)介紹了一些編程方面的重要技巧,內(nèi)容涉及到ADO.NET技術(shù)、數(shù)據(jù)驗(yàn)證技術(shù)、參數(shù)傳遞、數(shù)據(jù)顯示控件、容器控件等。本章主要內(nèi)容: 酒店管理系統(tǒng)的系統(tǒng)分析。 用戶管理模塊的設(shè)計(jì)和實(shí)現(xiàn)。 酒店基礎(chǔ)信息設(shè)置模塊的設(shè)計(jì)和實(shí)現(xiàn)。 酒店業(yè)務(wù)管理模塊的設(shè)計(jì)和實(shí)現(xiàn)。,17.1 系統(tǒng)分析,作為酒店管理的一個(gè)工具,該系統(tǒng)實(shí)現(xiàn)了酒店管理的基本功能,如添加、刪除、修改住房信息,添加、刪除、修改客人信息等。,17.1.1 需求分析,需求分析是開發(fā)應(yīng)
2、用系統(tǒng)的第一步,通過需求分析可以了解客戶需要什么樣的程序,需要完成什么功能。需求說明書描述系統(tǒng)的總體要求,并且作為各方面溝通的依據(jù),也為下一步工作提供基準(zhǔn)。系統(tǒng)開發(fā)人員要按照需求說明書完成相應(yīng)的功能。讀者可以查找相關(guān)書籍學(xué)習(xí)需求說明書的標(biāo)準(zhǔn)描述方式,在此重點(diǎn)闡述系統(tǒng)的分析和設(shè)計(jì)。 “酒店管理系統(tǒng)”用于管理和維護(hù)酒店的基本信息,酒店工作人員登錄系統(tǒng)后可以擁有該系統(tǒng)的所有功能,方便進(jìn)行酒店內(nèi)部管理。該系統(tǒng)使用數(shù)據(jù)庫存放數(shù)據(jù),圖17.1顯示了系統(tǒng)的功能設(shè)計(jì)。,17.1.2 系統(tǒng)設(shè)計(jì),本系統(tǒng)的總體架構(gòu)采用三層架構(gòu)模型,分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層,其中表示層負(fù)責(zé)界面的顯示,用于顯示數(shù)據(jù)和接收用戶
3、輸入的數(shù)據(jù),為用戶提供交互式操作界面;業(yè)務(wù)邏輯層是表示層和數(shù)據(jù)訪問層之間通信的橋梁,主要負(fù)責(zé)數(shù)據(jù)的傳遞和處理;數(shù)據(jù)訪問層主要實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存和讀取操作。該系統(tǒng)比較簡(jiǎn)單,因此不考慮使用接口和反射技術(shù)。三個(gè)模塊之間直接使用對(duì)象或者數(shù)據(jù)集進(jìn)行通信。本系統(tǒng)三層架構(gòu)如圖17.2所示。,17.1.3 數(shù)據(jù)庫設(shè)計(jì),我們?cè)O(shè)計(jì)的酒店管理系統(tǒng)屬于信息管理系統(tǒng),其中的功能都是圍繞數(shù)據(jù)庫實(shí)現(xiàn)的,所以數(shù)據(jù)庫的設(shè)計(jì)非常重要。 在VS2008中打開“服務(wù)器資源管理器”窗口,右擊“數(shù)據(jù)連接”選項(xiàng),單擊“創(chuàng)建新的數(shù)據(jù)庫”選項(xiàng),即可開始創(chuàng)建系統(tǒng)需要的數(shù)據(jù)庫,數(shù)據(jù)庫名稱為HotelManager,包括6張表,表的名稱和結(jié)構(gòu)分別說明
4、如下。 客人信息表(Guest)的表結(jié)構(gòu)見表17.1。該表用于存放入住酒店的客人信息,通過這個(gè)表可以記錄入住酒店客人的詳細(xì)信息,以及客人到達(dá)和離開酒店的時(shí)間。,17.2 實(shí)體類的實(shí)現(xiàn),前面一個(gè)示例程序中,數(shù)據(jù)傳遞是使用DataSet實(shí)現(xiàn)的,DataSet不具備良好的面向?qū)ο蟮奶匦?,使用起來不夠直觀、方便,而且DataSet的核心結(jié)構(gòu)與數(shù)據(jù)庫的核心結(jié)構(gòu)完全相同,使用DataSet傳遞數(shù)據(jù)就把數(shù)據(jù)結(jié)構(gòu)完全暴露在表示層和業(yè)務(wù)邏輯層,不利于數(shù)據(jù)安全。 實(shí)體類具有面向?qū)ο蟮幕咎卣鳎菢I(yè)務(wù)對(duì)象的基礎(chǔ)。在三層之間通過實(shí)體類傳遞數(shù)據(jù)具有很大的靈活性,有助于項(xiàng)目的維護(hù)、擴(kuò)展,更能體現(xiàn)三層結(jié)構(gòu)的優(yōu)勢(shì)。 本系統(tǒng)中
5、,數(shù)據(jù)庫HotelManager的五張表分別轉(zhuǎn)換為五個(gè)實(shí)體類,具體內(nèi)容詳述如下。,17.2.1 HotelUser實(shí)體類,HotelUser實(shí)體類對(duì)應(yīng)于數(shù)據(jù)庫中的HotelUser數(shù)據(jù)表,將其轉(zhuǎn)換成面向?qū)ο蟮谋硎拘问剑悎D如17.4所示。,17.2.2 Guest實(shí)體類,Guest實(shí)體類對(duì)應(yīng)于數(shù)據(jù)庫中的Guest表,類圖如圖17.5所示。,17.2.3 GuestCategory實(shí)體類,GuestCategory實(shí)體類來源于數(shù)據(jù)表GuestCategory,該類比較簡(jiǎn)單,類圖如圖17.5所示。,17.2.4 Room實(shí)體類,Room實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫中的表Room,類圖如圖17.6所示。,17.
6、2.5 ToomType實(shí)體類,RoomType實(shí)體類對(duì)應(yīng)數(shù)據(jù)表RoomType,其類圖如圖17.7所示。,17.3 界面設(shè)計(jì),應(yīng)用程序的界面是展示給用戶的,為用戶提供和系統(tǒng)進(jìn)行交互的功能,對(duì)用戶界面進(jìn)行良好的設(shè)計(jì)非常重要,既可以完成程序的功能,又能使用戶方便的使用。本節(jié)首先以圖片的形式將系統(tǒng)的界面展現(xiàn)出來,幫助您對(duì)本系統(tǒng)有一個(gè)初步直觀的了解。,17.3.1 用戶登錄面,用戶登錄界面為系統(tǒng)用戶提供交互,輸入用戶名和密碼,登錄本系統(tǒng)。界面設(shè)計(jì)如圖17.8所示。為了是界面更加友好,美觀,設(shè)計(jì)時(shí)使用了圖片作為背景。,17.3.2 主界面,系統(tǒng)主界面采用通用的模式,包括菜單欄、工具欄等控件。主界面是多
7、文檔應(yīng)用程序,采用了默認(rèn)的控件顏色,界面中最上面是菜單,然后是工具欄。本系統(tǒng)屬于內(nèi)部管理使用,必須登錄后才能擁有系統(tǒng)的使用權(quán)限,否則所有的工具和菜單都處于不能使用的狀態(tài)。如圖17.9所示。,17.3.3 客房類型設(shè)置界面,此界面用于完成客房類型的檢索、增加、修改、刪除功能。界面設(shè)計(jì)如圖17.10所示。該界面中用到了菜單欄、工具欄、DataGridView控件、分組框(GroupBox)、分組面板(Panel)等控件。 單擊“新增”或“修改”按鈕,可顯示“Panel”面板,在該面板中添加文本框、組合框等對(duì)客房信息進(jìn)行修改。界面如圖17.11所示。,17.3.4 客房信息界面,客房信息界面設(shè)計(jì)是為
8、了方便客房信息維護(hù),采用的設(shè)計(jì)風(fēng)格和客房類型設(shè)置界面基本相同,如圖17.12所示。 單擊“新增”、“修改”、“刪除”按鈕,均可打開相應(yīng)編輯面板,如圖17.13所示。單擊“取消”按鈕可隱藏編輯面板。該界面中控件和相關(guān)屬性的設(shè)定和客房類型設(shè)置界面相似,這里不再列出詳細(xì)說明,請(qǐng)參照表17.8完成。,17.3.5 客人管理界面,客人管理界面提供對(duì)客戶的信息進(jìn)行維護(hù),包括增、刪、改、查操作,設(shè)計(jì)風(fēng)格沿用上邊兩個(gè)界面的方式,如圖17.14所示。 單擊“新增”、“修改”、“刪除”按鈕,均可打開相應(yīng)編輯面板,如圖17.15所示。單擊“取消”按鈕可隱藏編輯面板。單擊“修改”、“刪除”按鈕時(shí),需要首先在DataG
9、ridView控件中單擊需要修改或刪除的信息,將其信息顯示在打開的編輯面板中,可進(jìn)行修改操作,也可刪除。該界面中控件和相關(guān)屬性的設(shè)定和客房類型設(shè)置界面相似,這里不再列出詳細(xì)說明,請(qǐng)參照表17.8完成。,17.3.6 用戶管理界面,用戶管理界面用于完成用戶的增、刪、改、查功能,界面設(shè)計(jì)如圖17.16所示。 單擊“新增”、“修改”、“刪除”按鈕,均可打開相應(yīng)編輯面板,實(shí)現(xiàn)對(duì)用戶信息的修改。,17.4 實(shí)現(xiàn)數(shù)據(jù)訪問層,本系統(tǒng)采用.NET三層架構(gòu)的思想構(gòu)建,由數(shù)據(jù)訪問層完成對(duì)數(shù)據(jù)庫的操作。由于數(shù)據(jù)庫的訪問包含增、刪、改、查等多種操作,所以在每一個(gè)類中包含很多方法,具體每一類中包含哪些方法根據(jù)需求而定。
10、為了調(diào)用方法簡(jiǎn)單化,在數(shù)據(jù)訪問層中所有的類和方法均為靜態(tài)類和靜態(tài)方法。,17.4.1 數(shù)據(jù)庫通用操作類(DBHelper.cs),由于系統(tǒng)中對(duì)于數(shù)據(jù)庫操作都需要處理連接字符串、創(chuàng)建連接、執(zhí)行查詢、更新等通用操作,為了提高代碼的復(fù)用性,創(chuàng)建DBHelper.cs類完成數(shù)據(jù)庫的通用操作。定義了連接數(shù)據(jù)庫的字符串,創(chuàng)建數(shù)據(jù)庫連接。方法中有:執(zhí)行無參數(shù)的sql語句的方法、執(zhí)行有參數(shù)的sql語句等方法。,17.4.2 用戶管理數(shù)據(jù)訪問(HotelUserService.cs,用戶管理的數(shù)據(jù)訪問需要實(shí)現(xiàn)對(duì)用戶表的增、刪、改、查操作,使用實(shí)體對(duì)象傳遞數(shù)據(jù),使用IList傳遞實(shí)體對(duì)象集合。用戶管理數(shù)據(jù)訪問示例
11、如代碼17-7所示。該類中包含的方法有: AddHotelUser(HotelUser hotelUser):用戶對(duì)象作為參數(shù),實(shí)現(xiàn)添加新用戶的功能。 DeleteHotelUser(HotelUser hotelUser):將用戶對(duì)象作為參數(shù),實(shí)現(xiàn)刪除用戶的操作。 DeleteHotelUserByUserID(int userID):根據(jù)用戶ID刪除用戶的方法。 ModifyHotelUser(HotelUser hotelUser):將用戶對(duì)象作為參數(shù),更新用戶信息。 GetAllHotelUsers():獲取所有用戶信息。 GetHotelUserByUserID(int userID
12、):根據(jù)用戶ID獲取用戶信息。 GetHotelUserByUserName(string userName):根據(jù)用戶名獲取用戶信息。,17.4.3 客房信息數(shù)據(jù)訪問(RoomService.cs),客房信息數(shù)據(jù)訪問類和用戶管理數(shù)據(jù)訪問的方法編寫很相似,都是完成對(duì)數(shù)據(jù)庫的增、刪、改、查操作,只是針對(duì)不同的應(yīng)用,傳遞的參數(shù)不同。示例代碼如代碼17-8所示。 說明:在下面的方法中,創(chuàng)建DataReader對(duì)象時(shí)都采用了using關(guān)鍵字,這是using的一種用法,using (SqlDataReader dataReader = DBHelper.GetReader(sql), using括號(hào)中創(chuàng)
13、建的對(duì)象,在執(zhí)行到using語句塊的末尾時(shí)會(huì)自動(dòng)釋放該對(duì)象。本例中創(chuàng)建的DataReader對(duì)象由于使用了using關(guān)鍵字,在語句執(zhí)行完畢后會(huì)自動(dòng)釋放,就不需要顯式關(guān)閉即不需要執(zhí)行DataReader對(duì)象的Close()方法。 該類中包含的方法如下: GetAllRooms():得到客房信息集合。 GetRoomByRoomId(int roomId):根據(jù)客房ID得到客房信息實(shí)體對(duì)象。 GetRoomListByRoomNumber(string roomNumber):根據(jù)客房名稱得到客房信息集合。 GetRoomIdByRoomNo(string roomNo):根據(jù)房間號(hào)得到客房實(shí)體對(duì)
14、象。 DeleteRoomByRoomId(int roomId):根據(jù)客房ID刪除客房信息。 ModifyRoom(Room room):修改客房信息。 AddRoom(Room room):增加客房信息。,17.4.4 客房類型數(shù)據(jù)訪問(RoomType.cs),客房類型數(shù)據(jù)訪問(RoomType.cs)實(shí)現(xiàn)客房類型的數(shù)據(jù)庫操作,編寫方法和客房信息數(shù)據(jù)訪問基本相同,示例代碼如代碼17-9所示。該類包含的方法如下: GetAllRoomTypes():得到客房類型信息集合。 GetRoomTypeListByTypeName(string typeName):根據(jù)客房類型名稱得到客房類型列表
15、。 GetTypeNameByTypeID(int typeID):根據(jù)客房類型ID得到客房類型名稱。 GetRoomTypeByTypeID(int typeId):根據(jù)客房類型ID得到客房實(shí)體對(duì)象。 ModifyRoomType(RoomType roomType):修改客房信息。 DeleteRoomTypeByTypeId(int typeId):刪除客房類型信息。 AddRoomType(RoomType roomType):增加客房類型信息。,17.4.5 客人管理數(shù)據(jù)訪問(Guest.cs),客人管理數(shù)據(jù)訪問類實(shí)現(xiàn)對(duì)客人表(Guest)的查詢、修改、刪除等操作,負(fù)責(zé)與數(shù)據(jù)庫之間的
16、交互,該類示例代碼如代碼17-10所示。 為了使讀者能夠靈活掌握sql語句的編寫,在此例中沒有使用客房信息和客房類型示例代碼中可變字符串的方法生成sql語句,而是直接使用參數(shù)類的方法,在代碼第18行,使用參數(shù)創(chuàng)建了sql語句,在代碼第22行到31行,使用SqlParameter類型的數(shù)組存儲(chǔ)sql語句中的參數(shù),調(diào)用DBHelper類中的方法執(zhí)行sql語句。,17.4.6 客人類型數(shù)據(jù)訪問(GuestCategory.cs),客人類型數(shù)據(jù)訪問(GuestCategory.cs)的功能比較簡(jiǎn)單,只要能夠根據(jù)ID獲得客戶類型就可以,示例代碼如代碼17-11所示。該類中包含的方法如下: GetAllG
17、uestCategories():,17.5 實(shí)現(xiàn)業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層負(fù)責(zé)數(shù)據(jù)的傳遞,在實(shí)現(xiàn)業(yè)務(wù)邏輯層之前,先概括一下實(shí)現(xiàn)的步驟: (1)在業(yè)務(wù)邏輯處理類中引用數(shù)據(jù)訪問層、實(shí)體層的命名空間。 (2)實(shí)例化實(shí)體對(duì)象。 (3)調(diào)用數(shù)據(jù)訪問功能。 (4)實(shí)現(xiàn)業(yè)務(wù)邏輯。,17.5.1 用戶管理業(yè)務(wù)邏輯類(HotelUserManage.cs),用戶管理業(yè)務(wù)邏輯類(HotelUserManage.cs)用來處理用戶管理的業(yè)務(wù)邏輯,在用戶管理數(shù)據(jù)訪問HotelUserServ.cs類和用戶管理界面之間進(jìn)行數(shù)據(jù)傳遞。 添加用戶操作時(shí),判斷用戶是否存在,如存在同名用戶,則不允許添加。刪除用戶、修改用戶都是通
18、過調(diào)用HotelUserService.cs類中的方法實(shí)現(xiàn)。示例代碼如代碼17-12所示。 (詳細(xì)內(nèi)容請(qǐng)參照本書),17.5.2 客房信息管理業(yè)務(wù)邏輯(RoomManager.cs),客房信息管理業(yè)務(wù)邏輯(RoomManager.cs)負(fù)責(zé)在客房信息管理數(shù)據(jù)訪問和客房信息界面之間進(jìn)行數(shù)據(jù)傳遞,通過調(diào)用RoomService.cs中的方法實(shí)現(xiàn),示例代碼如代碼17-13所示。 (詳細(xì)內(nèi)容請(qǐng)參照本書),17.5.3 客房類型業(yè)務(wù)邏輯(RoomTypeManager.cs),客房類型業(yè)務(wù)邏輯負(fù)責(zé)在客房類型數(shù)據(jù)訪問層和界面之間進(jìn)行數(shù)據(jù)傳遞,和客房信息業(yè)務(wù)邏輯相同,具有增、刪、改、查功能。示例代碼如代碼1
19、7-14所示。 (詳細(xì)內(nèi)容請(qǐng)參照本書),17.5.4 客人管理業(yè)務(wù)邏輯(GuestManager.cs),客人管理業(yè)務(wù)邏輯負(fù)責(zé)在客人管理數(shù)據(jù)訪問層和界面之間進(jìn)行數(shù)據(jù)傳遞,和客房信息業(yè)務(wù)邏輯相同,具有增、刪、改、查功能。示例代碼如代碼17-15所示。 (詳細(xì)內(nèi)容請(qǐng)參照本書),17.5.5 客人類型管理業(yè)務(wù)邏輯(GuestCategory.cs),客人類型表比較簡(jiǎn)單,用到的方法也較少,主要實(shí)現(xiàn)檢索功能。示例代碼如代碼17-16所示。,17.6 實(shí)現(xiàn)表示層數(shù)據(jù)綁定,上面已經(jīng)設(shè)計(jì)好了窗體,根據(jù)窗體需求實(shí)現(xiàn)了數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層的功能,本節(jié)完成界面也就是表示層的數(shù)據(jù)綁定,與數(shù)據(jù)庫能夠真正地發(fā)生交互。,
20、17.6.1 用戶登錄,用戶登錄表示層實(shí)現(xiàn)的功能主要有:判斷輸入的登錄名和密碼是否為空,判斷輸入的登錄密碼是否與根據(jù)登錄ID得到的密碼相同,如果相同則登錄成功,返回主界面。用戶登錄的代碼如代碼17-17所示。 本項(xiàng)目采用三層架構(gòu)構(gòu)建應(yīng)用系統(tǒng),界面層只能直接調(diào)用業(yè)務(wù)邏輯層,不能調(diào)用數(shù)據(jù)訪問層,各層之間通過實(shí)體類傳遞數(shù)據(jù),編寫程序時(shí)首先引用命名空間HotelManager.Models和HotelManager.BLL,然后調(diào)用HotelUserManager.cs中的方法實(shí)現(xiàn)登錄功能。,17.6.2 主界面,本系統(tǒng)將首先啟動(dòng)的界面設(shè)置為主界面,用戶登錄成功后主界面中按鈕和菜單才可以使用,如果取消登錄或登錄失敗,主界面中的菜單和按鈕基本都不可用。 主界面是子界面的容器,通過單擊主界面上的菜單或按鈕,打開相應(yīng)的子窗體,實(shí)現(xiàn)程序退出功能。主界面中的各個(gè)功能都是通過給事件編寫代碼實(shí)現(xiàn)。,17.6.3 客房類型設(shè)置,窗體載入時(shí)在數(shù)據(jù)列表控件DataGridView中顯示客房類型的詳細(xì)信息,隱藏編輯面板,單擊“新增”、“修改”、刪除時(shí)可以顯示。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 代銷合同與經(jīng)銷合同范例
- 免責(zé)保險(xiǎn)合同范本
- ktv家具采購合同范本
- 二手卷板機(jī)銷售合同范本
- 醫(yī)院產(chǎn)后修復(fù)服務(wù)合同范本
- 北京留學(xué)中介合同范例
- 公司入股其它公司合同范例
- 公司招聘培訓(xùn)合同范本
- 醫(yī)用膠合同范例
- 化工監(jiān)理合同范例
- 2025年中國X線診斷設(shè)備行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2024版全文:中國2型糖尿病預(yù)防及治療指南
- 讀書心得《好老師征服后進(jìn)生的14堂課》讀后感
- 公路工程施工安全應(yīng)急預(yù)案(4篇)
- 北師大版五年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件第5課時(shí) 人民幣兌換
- 工程回訪記錄單
- 住房公積金投訴申請(qǐng)書
- 高考物理二輪專題課件:“配速法”解決擺線問題
- 檢驗(yàn)科生物安全風(fēng)險(xiǎn)評(píng)估報(bào)告
- 京頤得移動(dòng)門診產(chǎn)品輸液
- 如何做一名合格的帶教老師PPT精選文檔
評(píng)論
0/150
提交評(píng)論