1、数据库系统原理A实验文档酒店客房管理系统 作 者 姓 名: 李芳、沈若冰 专业、班级 : 计算机科学与技术095 学 号 : 09422034、09422023 指 导 教 师: 赵宏伟 完 成 日 期: 2023-6-26 大连大学Dalian University摘要随着计算机技术的飞速发展,信息时代的到来,信息改变了我们这个社会。客房管理的信息化限度体现在将计算机及网络与信息技术应用于经营与管理,以现代化工具代替传统手工作业。酒店客房管理系统是酒店经营管理中不可缺少的部分,它的内容对于经营的决策者和管理者来说都至关重要。所以,使用网络信息化管理客房,不仅可以避免使用传统人工的方式管理文献
2、档案时出现效率低、保密性差,误差多等弊端,并且对于查询空房间及已定房间极为方便。这些优点可以极大地提高客房经营管理的效率,也是公司的科学化、正规化管理,与世界接轨的重要条件。此外,办事效率也是决定收入的一个关键因素。所以,电脑技术和电脑服务引入酒店管理成为一种必然的趋势。建立酒店客房管理信息系统,采用计算机对客房信息进行管理,可以进一步提高酒店的经济效益和现代化水平,帮助酒店工作人员提高工作效率,实现客房信息管理工作流程的系统化、规范化和自动化。本系统采用Visual C#.NET程序来编写,同时一个系统的开发建立数据库是至关重要的,所以本课题数据库采用的是具有强大功能的关系数据库语言SQL
3、Server2023,通过建立数据源使得Visual C#.NET与后台的数据库连接来运营。 目录一、前景31.1课题背景31.2系统开发环境3二、需求分析32.1 客房管理员对系统的需求32.2 前台工作人员对功能的需求42.3 数据流图构建42.4 数据字典构建5三、系统功能总体设计9四、 数据库结构设计与实现104.1 实体关系(E-R)图设计104.2建立数据库模型114.3创建表124.4 创建触发器134.4创建视图144.5创建存储过程16五、参考文献20一、 前景1.1课题背景 随着社会的发展,酒店服务行业与国际市场接轨已是大势所趋,酒店是一个服务至上的行业,从客人的预定开始,
4、到入住登记直至最后退房结账,每一环节都要保持一致性。随着计算机科学的飞速发展,给酒店计算机应用带来了蓬勃生机,计算机在酒店的应用中,已进一步到各个部门,特别在信息解决方面,计算机成了最为重要的工具。在酒店现代管理理论中,酒店管理系统是酒店经营必不可少的工具。本酒店管理系统是针对酒店的客房管理,以方便管理酒店的客房状态、信息,为用户提供了简朴、快速的服务,让用户及时了解酒店客房的运营状况、经营情况,从而提高酒店的服务质量,获得更好的经济效益1.2系统开发环境本系统采用单机版结构,前台开发工具是ASP.NET,后台数据库是Microsoft SQL Server 2023,软件规定:操作系统为Wi
5、ndows 2023或Windows XP或更高版本。二、需求分析酒店在正常运营中需要对客房资源、顾客信息、客房结算信息进行管理,运用酒店客房管理系统及时了解各个环节中信息的变更,提高管理的效率。系统开发的总体任务是实现客房信息的系统化、规范化和自动化。重要涉及客房管理员、前台工作人员对功能的需求。2.1 客房管理员对系统的需求(1)用户信息维护 浏览所有用户信息。用户信息涉及用户编号、用户角色、权限、密码、联系电话、电子邮件、所在部门等。还需要添加新用户、删除过期用户、修改用户信息等功能。(2)客房信息维护 浏览所有客房信息。客房信息涉及房间编号、房间类型编号、房间位置、房间描述、房间状态等
6、。还需要添加新客房、删除房间、修改房间信息等功能。(3)客房类型维护 浏览所有客房类型信息。客房类型涉及类型编号、类型名称、价格、类型描述、是否配备空调等。还需要添加新客房类型、删除过期类型、修改客房类型等功能。(4)营业状况记录 按照不同的需求,如按日期、房间号、房间类别等,对客房的营业额记录。2.2 前台工作人员对功能的需求(1)客房信息的查询,涉及空闲、已住、所有客房信息。(2)订房信息的输入,涉及客房号、顾客身份证号、订房日期等。(3)结算信息功能的实现。核对顾客信息后,点击“退房”系统自动显示结算金额、退房时间。这一功能重要涉及房间号、房间类型、顾客身份证号、订房日期、退房日期等信息
7、。2.3 数据流图构建数据流图(date flow diagram , DFD),是SA方法中用于表达系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和解决的过程,由于它只反映系统必须完毕的逻辑功能,所以它是一种功能模型。数据流图是从数据的角度来描述一个系统,数据流图适合于宏观地分析一个组织业务概况。图一:酒店客房管理系统第一层数据流图图二:合法性检查的二层数据流图图三:合法性检查的二层数据流图图四:事务解决的二层数据流图2.4 数据字典构建数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。它重要是对数据流图中的数据流、解决逻辑、外部实体、数据存储和数据项等方面进行
8、具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。(1) 数据项定义数据元素是不可再分的数据单位,一般而言,涉及如下内容:数据项描述数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系。其中,后两项定义了数据的完整性约束条件,用于数据校验。具体内容,如表3.1所示。表3.1酒店客房管理系统数据项定义编号名称别名数据类型长度I01UserID用户名varchar50I02UserPwd用户密码varchar50I03UserRole用户角色varchar50I04UserPower用户权限int4
9、I05UserSex用户性别bit1I06UserName用户姓名varchar50I07UserAddress用户住址varchar50I08UserTel用户联系电话varchar50I09UserEmail用户电子邮箱varchar50I10UserDept用户所在部门varchar50I11TypeID客房类型编号varchar50I12TypeName客房类型名称varchar50I13TypeArea客房标准面积float8I14TypeBedSum客房标准床位int2I15TypePrice标准收费money8I16TypeAirCondition是否配备空调bit1I17Typ
10、eTV是否配备电视bit1I18TypeDescribe类型描述varchar200I19RoomID房间编号varchar50I20RoomPosition房间位置varchar50I21RoomDescribe房间描述varchar200I22CusName入住客人姓名varchar50I23CusIDCard入住客人身份证号varchar19I24CusBookDate订房日期datetimeI25CusEndDate退房日期datetimeI26CusPay结账金额money8I27SID状态编号varchar50I28SClean清洁状况varchar50I29SDescribe状态
11、描述varchar50I30State房间当前状态bit1(2) 数据流定义酒店客房管理系统数据流:数据流编号:D1数据流名称:登录信息数据流来源:用户数据流去向:管理系统数据流组成:I01+I02数据流编号:D2数据流名称:用户名数据流来源:用户数据流去向:管理系统数据流组成:I01数据流编号:D3数据流名称:权限数据流来源: 系统用户表数据流去向:管理系统数据流组成:I04数据流编号:D4数据流名称:角色 数据流来源: 系统用户表数据流去向:管理系统数据流组成:I03数据流编号:D13数据流名称:用户密码 数据流来源: 管理系统数据流去向:用户信息表 数据流组成:I2数据流编号:D6数据流
12、名称:预订信息 数据流来源: 顾客数据流去向:管理系统数据流组成:I19+I22+I23+I24数据流编号:D7数据流名称:客房状态数据流来源: 客房状态表数据流去向:管理系统数据流组成:I30数据流编号:D8数据流名称:退房请求 数据流来源: 顾客数据流去向:管理系统数据流组成:I22+I23+I19数据流编号:D9数据流名称:费用结算数据流来源: 管理系统数据流去向:顾客 数据流组成:I15+I24+I25数据流编号:D10数据流名称:退房信息 数据流来源: 顾客数据流去向:管理系统数据流组成:I25+I26数据流编号:D11数据流名称:客房信息变动 数据流来源: 客房数据流去向:客房信息
13、表数据流组成:I11+I19+I20+I21+I27数据流编号:D12数据流名称:客房类型变动 数据流来源: 客房数据流去向:客房类型表 数据流组成:I11I18(3) 数据存储的描述数据存储编号:F1数据存储名称:系统用户表简 述: 记录用户的信息。数据存储组成:数据项I1I10数据存储编号:F2数据存储名称:入住信息 简 述:存放顾客入住信息 数据存储组成: 顾客编号+顾客姓名+顾客身份证号+入住房间号+预订日期+退房时间+结算金额数据存储编号:F3数据存储名称:客房信息 简 述: 记录客房信息数据存储组成:房间编号+房间类型+房间描述+房间状态编号+房间位置数据存储编号:F4数据存储名称
14、:客房类型 简 述: 存放客房类型信息数据存储组成:数据项I11I18数据存储编号:F5数据存储名称:客房状态简 述: 存放客房状态数据存储组成:房间编号+房间状态三、系统功能总体设计在需求分析的基础上,对酒店客房管理系统所要实现的功能可以细分为以下几个模块:新用户注册、用户信息维护、客房信息维护、客房类型维护、客房营业状况记录、客房经营管理、个人密码修改。系统用户可以分为两类权限:客房管理员、前台工作人员。其中客房经营管理模块分为客房状况浏览、客房状况控制,重要用于客房的预订和退房结算解决。系统功能图如图所示:客房管理系统客房经营管理模块用户信息维护模块房间管理退房操作订房操作营业状况记录房
15、间信息维护模块房间信息维护模块个人密码修改删除用户信息添加用户信息新 用户注册房间类型高查询添加房间类型删除房间类型房间类型修改删除房间信息房间信息修改房间信息查询添加房间信息四、 数据库结构设计与实现由于在数据库设计是要同时考虑多方面的问题,也使设计工作变得十分复杂,我们需要使用数据库分析工具来实现。在酒店客房管理系统数据库的设计中,我们使用了PowerDesigner来进行E-R图的设计和数据库模型的实现。4.1 实体关系(E-R)图设计 通过度析酒店客房管理系统的需求和系统功能,我们将酒店客房管理系统的实体分为用户、客房、客房状态、客房类型和入住客户。本系统的E-R图如下:4.2建立数据
16、库模型 在E-R图的基础上运用Powerdesigner生成的数据库模型如下:4.3创建表 表一:用户信息表Users序号英文名中文名数据类型 长度1UserID用户名varchar502UserPwd用户密码varchar503UserPower用户权限int44UserRole用户角色varchar505UserName用户姓名varchar506UserSex性别tinyint17UserAddress住址varchar508UserTel联系电话varchar509UserEmail电子邮件varchar5010UserDept所在部门varchar50表二:入住信息表OccupyGu
17、est序号英文名中文名数据类型长度1RoomID房间编号varchar502CusName顾客姓名varchar503CusIDCard顾客身份证号varchar194CusBookDate订房日期datetime85CusEndDate退房日期datetime86CusPay结账金额money8表三:房间状态表RoomState序号英文名中文名数据类型长度1SID状态编号varchar502State空闲tinyint13Sclean清洁varchar504SDescribe描述varchar50表四:房间类型表RoomType序号英文名中文名数据类型长度1TypeID类型编号varchar
18、502TypeName类型名称varchar503TypeArea面积real44TypeBedSum床位数量int45TypePrice价格money86TypeAirCondition是否有空调tinyint17TypeTV是否有电视tinyint18TypeDescribe类型描述varchar200表五:房间信息表Room序号英文名中文名数据类型长度1RoomID房间编号varchar502TypeID类型编号varchar503SID状态编号varchar504RoomPosition房间位置varchar505RoomDescribe房间描述varchar2004.4 创建触发器c
19、reate trigger insert_OccupyGuest on OccupyGuestfor insert as begin declare CusEndDate datetime declare CusBookDate datetimeselect CusBookDate=CusBookDate,CusEndDate=CusEndDatefrom inserted if (CusBookDateCusEndDate)rollback transactionend当退房时结账日期在预定日期前时触发create trigger insert_Users on Users for inse
20、rt as begin declare sex tinyintselect sex=UserSex from inserted if (sex not in (1,0)rollback transaction end性别插入错误是触发,1表达男,0表达女4.4创建视图创建AllRoomList视图,显示所有房间的相关信息Create view AllRoomList (RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe,State)as select RoomID,TypeName,RoomPosition,TypePrice,RoomDes
21、cribe,Statefrom RoomType,Room,RoomStatewhere Room.TypeID=RoomType.TypeID and Room.SID=RoomState.SID 创建FreeRoomList视图显示空闲房间的相关信息,订房时使用create view FreeRoomList (RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe)as select RoomID,TypeName,RoomPosition,TypePrice,RoomDescribefrom RoomType,Room,RoomState
22、where Room.TypeID=RoomType.TypeID and Room.SID=RoomState.SID and RoomState.State=0创建RoomLiveDetail视图,显示已住房间的相关信息,退房时使用create view RoomLiveDetailRoomLiveDetail(RoomID,TypeName,CusBookDate,TypePrice,CusIDCard,CusName)As selectOccupyGuest.RoomID,TypeName,CusBookDate,TypePrice,CusIDCard,CusNamefrom Room
23、Type,Room,RoomState,OccupyGuestwhere Room.TypeID=RoomType.TypeID and OccupyGuest.CusPay=0 and Room.SID=RoomState.SID and RoomState.State=1 and OccupyGuest.RoomID=Room.RoomID创建RoomDetail视图,显示所有客房的信息,对房间信息查询,更新时使用Create view RoomDetailList(RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe)as select
24、RoomID,TypeName,RoomPosition,TypePrice,RoomDescribefrom RoomType,Roomwhere Room.TypeID=RoomType.TypeIDcreate view RoomLiveCheckOut (RoomID,CusName,CusBookDate,CusIDCard,TypePrice)as select OccupyGuest.RoomID,CusName,CusBookDate,CusIDCard,TypePricefrom OccupyGuest,Room,RoomTypewhere OccupyGuest.CusPa
25、y=0 and OccupyGuest.RoomID=Room.RoomID and Room.TypeID=RoomType.TypeID创建RoomLiveCheckOut视图,顾客退房时从视图获取信息,做修改create view RoomLiveCheckOut (RoomID,CusName,CusBookDate,CusIDCard,TypePrice)as select OccupyGuest.RoomID,CusName,CusBookDate,CusIDCard,TypePricefrom OccupyGuest,Room,RoomTypewhere OccupyGuest.
26、CusPay=0 and OccupyGuest.RoomID=Room.RoomID and Room.TypeID=RoomType.TypeID创建TypeDetailList视图,用于前台查询和更新操作create view TypeDetailList (TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribe)as select TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribefrom RoomType创建视图UserDetailList,用于管理员进入系
27、统时查询和更新用户信息create view UserDetailList (UserID,UserName,UserEmail,UserTel,UserRole)as select UserID,UserName,UserEmail,UserTel,UserRolefrom Users创建SellBill视图,用于查询客房的营业情况create view SellBill (RoomID,TypeName,CusBookDate,CusEndDate,CusPay)As selectOccupyGuest.RoomID,RoomType.TypeName,CusBookDate,CusEnd
28、Date,CusPayfrom RoomType,Room,OccupyGuestwhere Room.TypeID=RoomType.TypeID and OccupyGuest.RoomID=Room.RoomID and CusPay0create view TypeDetailList (TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribe)as select TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribefrom RoomTypecreate view
29、 UserDetailList (UserID,UserName,UserEmail,UserTel,UserRole)as select UserID,UserName,UserEmail,UserTel,UserRolefrom Users4.5创建存储过程用户密码修改的存储过程create procedure PasswordModify( UserID varchar(50), UserPwd varchar(50) )as update Usersset UserPwd=UserPwdwhere UserID=UserID GO顾客退房结账时将结算金额,退房时间存入OccupyGue
30、st表CREATE procedure RoomCheckOut ( RoomID varchar(50),CusIDCard varchar(50), CusEndDate datetime, CusPay money )as update HRM.dbo.OccupyGuestset CusEndDate=CusEndDate, CusPay=CusPaywhere ( RoomID=RoomID and CusPay=0 and CusIDCard=CusIDCard)GO结账退房后将房间状态修改CREATE procedure RoomStateUpdate2 ( RoomID var
31、char(50) )as update HRM.dbo.Roomset SID=0where RoomID=RoomIDGO顾客订房时,将住房信息存入OccupyGuest表CREATE procedure OrderRoom ( RoomID varchar(50), CusName varchar(50), CusIDCard varchar(50), CusBookDate datetime )as insert into HRM.dbo.OccupyGuest( RoomID,CusName,CusIDCard,CusBookDate,Cuspay)values( RoomID,Cus
32、Name,CusIDCard,CusBookDate,0)GO订房后对房间状态做修改CREATE procedure RoomStateUpdate1 ( RoomID varchar(50) )as update HRM.dbo.Roomset SID=1where RoomID=RoomIDGO添加房间信息时,将新的信息存入Room表create procedure RoomAdd( RoomID varchar(50), TypeID varchar(50),SID varchar(50), RoomPosition varchar(50), RoomDescribe varchar(5
33、0) as insert into HRM.dbo.Room( RoomID,TypeID,SID,RoomPosition,RoomDescribe)values ( RoomID,TypeID,SID, RoomPosition,RoomDescribe ) GO在Room表中删除房间信息create procedure GuestRoomUpdate( RoomID varchar(50), TypeID varchar(50),SID varchar(50), RoomPosition varchar(50), RoomDescribe varchar(50)as update HRM
34、.dbo.Roomset TypeID=TypeID,SID=SID, RoomPosition= RoomPosition,RoomDescribe=RoomDescribe where (RoomID=RoomID)GO添加新的房间类型到RoomType表 create procedure RoomTypeAdd(TypeID varchar(50),TypeName varchar(50),TypeArea real,TypeBedSum int,TypeAirCondition bit,TypeTV bit,TypePrice money,TypeDescribe varchar(50
35、)as insert into HRM.dbo.RoomType( TypeID,TypeName,TypeArea,TypeBedSum, TypeAirCondition,TypePrice, TypeTV,TypeDescribe)values ( TypeID,TypeName,TypeArea,TypeBedSum, TypeAirCondition,TypePrice,TypeTV,TypeDescribe ) GO房间类型有更新时,将新的信息插入RoomType表中create procedure RoomTypeUpdate(TypeID varchar(50),TypeNam
36、e varchar(50),TypeArea float (8),TypeBedSum int,TypeAirCondition bit,TypeTV bit,TypePrice money,TypeDescribe varchar(50)as update HRM.dbo.RoomTypesetTypeName=TypeName,TypeArea=TypeArea,TypeBedSum=TypeBedSum,TypeAirCondition=TypeAirCondition,TypePrice=TypePrice, TypeTV=TypeTV,TypeDescribe=TypeDescrib
37、ewhere (TypeID=TypeID) GO为用户信息表添加新的用户,或注册新的用户CREATE PROCEDURE UserAdd(UserID varchar(50),UserPwd varchar(50), UserPower int, UserSex bit,UserName varchar(50), UserAddress varchar(50), UserTel varchar(50),UserEmail varchar(50), UserDept varchar(50), UserRole varchar(50) )AS INSERT INTO HRM.dbo.Users
38、(UserID,UserPwd,UserPower,UserSex,UserName, UserAddress,UserTel,UserEmail,UserDept,UserRole ) VALUES ( UserID,UserPwd,UserPower,UserSex,UserName,UserAddress, UserTel,UserEmail,UserDept,UserRole )GO从用户信息表中删除用户CREATE procedure UserDelete( UserID varchar(50) as delete HRM.dbo.Users where (UserID=UserID) GO五、参考文献1 王珊,萨师煊. 数据库系统概论第四版 M. 高等教育出版社. 20232 孙印杰. ASP.NET+SQL Server动态网站设计实例精解 M. 电子工业出版社. 2023