宾馆管理系统课程设计作业.docx
《宾馆管理系统课程设计作业.docx》由会员分享,可在线阅读,更多相关《宾馆管理系统课程设计作业.docx(15页珍藏版)》请在冰豆网上搜索。
![宾馆管理系统课程设计作业.docx](https://file1.bdocx.com/fileroot1/2022-12/7/c3ac31d7-f2a9-4cbd-956a-cb71709e65c0/c3ac31d7-f2a9-4cbd-956a-cb71709e65c01.gif)
宾馆管理系统课程设计作业
管理信息系统课程设计
宾馆管理系统
一、摘要
为方便小投资的宾馆能更好管理顾客与客房,客房与宾馆,宾馆与员工等之间的关系,顺应需要设计了这种宾馆客房信息管理系统,由于编写功能的不够强大,可能在真实应用会存在些许问题
二、需求分析
随着外出人流因为生活,商业等方面的增多,宾馆的发展也日益的迅猛,由于顾客量的增多,客户登记时间的广泛,宾馆收益的日益增多,仅仅依靠手写的老式输入记账法,是无法满足宾馆的需求的,同时这也是浪费人力和时间的。
开发这个数据库,目的就在于能够更好的对客房的预订情况,空余情况,顾客信息,顾客住宿时间和所用费用,客房房态等进行精确的查询,以便更好的完善和更新宾馆信息系统。
数据库的概念结构设计
三、数据库概念结构设计
3.1功能模块分析
根据宾馆的具体情况,系统主要功能如下:
(1)住宿管理模块:
包括客房预订、入住登记、客人续往、调房登记、退房结账5部分。
(2).客房管理模块:
包括客房设置、客房查询、宿费提醒3部分。
(3)查询统计模块:
包括预订房查询、住宿查询、退房查询、客房宿费统计4部分。
(4)报表管理模块:
包括预售报表、客房销售报表2部分。
(5)挂账管理模块:
包括客户管理、挂账查询、客户结账3部分。
(6)系统设置模块:
包括系统初始化、权限管理、密码设置3部分。
3.2功能结构图如下
3.3宾馆客房信息管理流程图
3.4ER图
四、数据库的逻辑结构设计
4.1用数据库建表并完成数据的完整性
1宾馆基本信息表。
列名
数据类型
长度
允许空
说明
单位名称
varchar
50
Notnull
宾馆的注册名称
邮政编码
varchar
6
Notnull
所在省市的邮编
电话
varchar
15
Notnull
前台工作电话
传真
varchar
15
Null
宾馆的传真
网址
varchar
30
Null
宾馆网页网址
电子邮箱
varchar
30
Null
宾馆邮箱
数据完整性:
建立单位名称为主键
2部门基本信息表。
记录宾馆的各个部门,更好的分配和了解情况。
列名
数据类型
长度
允许空
说明
部门编号
Varchar
10
Notnull
宾馆部门的专有编号
部门名称
Varchar
25
Null
依部门职责的命名
部门电话
Varchar
15
Notnull
联系电话
部门负责人
Varchar
10
Notnull
部门主要负责人
数据完整性:
以部门编号为主键
3员工信息表
列名
数据类型
长度
允许空
说明
员工编号
Varchar
10
Notnull
宾馆统一规划的员工编号
员工姓名
Varchar
10
Null
姓名
员工性别
Char
2
Null
男或女
出生日期
Datetime
8
Notnull
员工出生日期以便得知工龄
员工证件号
Varchar
20
Notnull
员工的有效证件
员工电话
Varchar
15
Notnull
员工的联系方式
部门编号
Varchar
25
Notnull
部门所属
职务
Varchar
25
Notnull
担任的职务
聘用日期
Datetime
8
Notnull
聘用的日期
月薪
Decimal
10
Notnull
月薪
备注
Text
16
Null
有关健康,婚姻,工作态度等描述
数据完整性:
建立员工编号为主键
建立CK_员工信息表:
员工性别='男'or员工性别='女'
创建FK_员工信息表_部门基本信息表以“部门编号”为外键
4客房设备信息。
记录客房的标准信息,为客房内设备的添加,房态的调节,客房的预定提供查询。
列名
数据类型
长度
允许空
说明
客房编号
Varchar
10
Notnull
宾馆统一安排的客房编号
客房类型
Varchar
25
Notnull
普通房,标准房,贵宾房
客房单价
Money
8
Notnull
价格
床位数量
Varchar
5
Notnull
床位数目
空调
Bit
1
Notnull
0表示无,1表示有
电视
Bit
1
Notnull
0表示无,1表示有
音响设备
Varchar
50
Notnull
无,普通,高级
房间数目
Varchar
10
Notnull
客房类型的数目
免费网络和电话
Bit
1
Notnull
免费网络和宾馆内的免费电话
独立浴室
Bit
1
Notnull
0表示无,1表示有
客房位置
Varchar
40
Notnull
0表示无,1表示有
预定情况
Bit
1
Notnull
预定,空余
备注
Text
16
Null
客房设备信息的补充
数据完整性:
建立客房编号为主键
5客房预订信息表。
列名
数据类型
长度
允许空
说明
预定编号
Varchar
10
Notnull
预定单的编号
顾客姓名
Varchar
10
Null
顾客姓名
顾客证件号
Varchar
20
Notnull
身份证或有效证件
客房编号
Varchar
10
Notnull
客房的编号
订房日期
Datetime
8
Notnull
订房日期
预订金
Money
8
Notnull
押金
折扣
Decimal
9
Notnull
会员折扣或宾馆活动
支付方式
Varchar
10
Notnull
信用卡,现金
备注
Test
16
Null
预定情况信息的补充
操作员
Varchar
10
Notnull
操作员的员工编号
数据完整性:
建立预订编号为主键
FK_客房预订信息表_员工信息表以“员工编号”“操作员”为外键
FK_客房预订信息表_顾客信息表以“顾客证件号”为外键
FK_客房预订信息表_客房设备信息表以“客房编号”为外键
6结算信息表。
列名
数据类型
长度
允许空
说明
结算编号
Varchar
10
Notnull
结算单的编号
客房编号
Varchar
10
Notnull
宾馆统一安排的客房编号
客房类型
Varchar
25
Null
普通房,标准房,贵宾房
顾客姓名
Varchar
10
Null
顾客姓名
顾客证件号
Varchar
20
Notnull
身份证或有效证件
订房日期
Datetime
8
Notnull
订房日期
退房日期
Datetime
8
Notnull
退房日期
消费金额
Money
8
Notnull
消费金额
折扣
Decimal
9
Notnull
会员折扣或宾馆活动
支付方式
Varchar
10
Notnull
信用卡,现金
备注
Test
16
Null
结算信息的补充
操作员
Varchar
10
Notnull
操作员的员工编号
数据完整性:
建立以结算编号为主键
FK_结算信息表_员工信息表以“操作员”“员工编号”为外键
FK_结算信息表_顾客信息表以“顾客证件号”为外键
FK_结算信息表_客房设备信息表以“客房编号”为外键
7顾客信息表
列名
数据类型
长度
允许空
说明
顾客姓名
Varchar
10
Null
顾客名称
顾客证件号
Varchar
20
Notnull
身份证或有效证件
顾客性别
Char
2
Null
男或女
顾客生日
Datetime
8
Null
方便宾馆为其在生日当天优惠
顾客电话
Varchar
15
Null
联系顾客
顾客邮箱
Varchar
30
Null
顾客邮箱
顾客级别
Varchar
30
Notnull
普通,会员,高级会员
数据完整性:
建立以顾客证件号为主键
建立CK_顾客信息表:
顾客性别='男'or顾客性别='女'
4.2建表的脚本语句
1、宾馆信息表
CREATETABLE[dbo].[宾馆基本信息表](
[单位名称][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[邮政编码][varchar](6)COLLATEChinese_PRC_CI_ASNOTNULL,
[电话][varchar](15)COLLATEChinese_PRC_CI_ASNOTNULL,
[传真][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[网址][varchar](30)COLLATEChinese_PRC_CI_ASNULL,
[电子邮箱][varchar](30)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
2、部门基本信息表
CREATETABLE[dbo].[部门基本信息表](
[部门编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[部门名称][varchar](25)COLLATEChinese_PRC_CI_ASNULL,
[部门电话][varchar](15)COLLATEChinese_PRC_CI_ASNOTNULL,
[部门负责人][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL
)ON[PRIMARY]
GO
3、员工信息表
CREATETABLE[dbo].[员工信息表](
[员工编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工姓名][varchar](10)COLLATEChinese_PRC_CI_ASNULL,
[员工性别][char]
(2)COLLATEChinese_PRC_CI_ASNULL,
[出生日期][datetime]NOTNULL,
[员工证件号][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工电话][varchar](15)COLLATEChinese_PRC_CI_ASNOTNULL,
[部门编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[职务][varchar](25)COLLATEChinese_PRC_CI_ASNOTNULL,
[聘用日期][datetime]NOTNULL,
[月薪][decimal](18,0)NOTNULL,
[备注][text]COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
4、客房设备信息表
CREATETABLE[dbo].[客房设备信息表](
[客房编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[客房类型][varchar](25)COLLATEChinese_PRC_CI_ASNOTNULL,
[客房单价][money]NOTNULL,
[床位数量][varchar](5)COLLATEChinese_PRC_CI_ASNOTNULL,
[空调][bit]NOTNULL,
[电视][bit]NOTNULL,
[音响设备][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[房间数目][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[免费网络和电话][bit]NOTNULL,
[独立浴室][bit]NOTNULL,
[客房位置][varchar](40)COLLATEChinese_PRC_CI_ASNOTNULL,
[预订情况][bit]NOTNULL,
[备注][text]COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
5、客房预订信息表
CREATETABLE[dbo].[客房预订信息表](
[预订编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[顾客姓名][varchar](10)COLLATEChinese_PRC_CI_ASNULL,
[顾客证件号][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
[客房编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[订房日期][datetime]NOTNULL,
[预订金][money]NOTNULL,
[折扣][decimal](18,0)NOTNULL,
[支付方式][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[备注][text]COLLATEChinese_PRC_CI_ASNULL,
[操作员][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
6、结算信息表
CREATETABLE[dbo].[结算信息表](
[结算编号][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[客房编号][varchar](10)COLLATEChinese_PRC_CI_ASNULL,
[客房类型][varchar](25)COLLATEChinese_PRC_CI_ASNULL,
[顾客姓名][varchar](10)COLLATEChinese_PRC_CI_ASNULL,
[顾客证件号][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[订房日期][datetime]NULL,
[退房日期][datetime]NULL,
[消费金额][money]NULL,
[折扣][decimal](18,0)NULL,
[支付方式][varchar](10)COLLATEChinese_PRC_CI_ASNULL,
[备注][text]COLLATEChinese_PRC_CI_ASNULL,
[员工编号][varchar](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
7、顾客信息表
CREATETABLE[dbo].[顾客信息表](
[顾客姓名][varchar](10)COLLATEChinese_PRC_CI_ASNULL,
[顾客证件号][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
[顾客性别][char]
(2)COLLATEChinese_PRC_CI_ASNULL,
[顾客生日][datetime]NULL,
[顾客邮箱][varchar](30)COLLATEChinese_PRC_CI_ASNULL,
[顾客级别][varchar](30)COLLATEChinese_PRC_CI_ASNOTNULL
)ON[PRIMARY]
GO
4.3数据输入
1宾馆信息表
2部门基本信息表
3员工信息表
4客房设备信息表
5客房预订信息表
6结算信息表
7顾客信息表
五、功能的实现
5.1视图的创建
1创建视图,只检索“订房日期”为2009-01-09的所有顾客信息以及其预订的客房方态
SELECTdbo.客房预订信息表.客房编号,dbo.顾客信息表.顾客证件号,
dbo.顾客信息表.顾客姓名,dbo.客房预订信息表.预订编号,
dbo.客房预订信息表.订房日期,dbo.客房设备信息表.客房类型,
dbo.客房设备信息表.客房单价
FROMdbo.顾客信息表INNERJOIN
dbo.客房预订信息表ON
dbo.顾客信息表.顾客证件号=dbo.客房预订信息表.顾客证件号INNERJOIN
dbo.客房设备信息表ON
dbo.客房预订信息表.客房编号=dbo.客房设备信息表.客房编号
WHERE(dbo.客房预订信息表.订房日期='2009-01-12')
2创建视图,只检索客房类型为普通单人间的且已预订的客房及顾客信息
SELECTdbo.客房设备信息表.客房编号ASExpr2,dbo.客房设备信息表.客房类型ASExpr3,
dbo.客房设备信息表.客房单价ASExpr4,dbo.客房设备信息表.预订情况ASExpr5,
dbo.顾客信息表.顾客证件号,dbo.顾客信息表.顾客姓名,
dbo.顾客信息表.顾客级别
FROMdbo.顾客信息表CROSSJOIN
dbo.客房设备信息表
WHERE(dbo.客房设备信息表.客房类型='普通单人间')AND
(dbo.客房设备信息表.预订情况='1')
5.2存储过程的建立
1为了促进消费者消费,创建将客房类型为贵宾房的客房单价进行减价9.5折处理的存储过程,创建语句如下:
CREATEPROCEDUREdiscountAS
update客房设备信息表set客房单价=客房单价*0.95where客房类型='贵宾房'
GO
2为了促进员工的工作积极性可以给员工增加薪水
创建语句为:
CREATEPROCEDUREwageincreaseAS
update员工信息表set月薪=(月薪*0.01+月薪)
Go
5.3触发器的建立
定义一个触发器“编号更新”,当客房设备信息表中的客房编号更新时,将客房预订表和结算信息表中的客房编号也同时更新。
CREATETRIGGER编号更新ON[dbo].[客房设备信息表]
afterUPDATE
AS
ifupdate(客房编号)
begin
declare@hotel_idasvarchar(10)
declare@old_hotel_idasvarchar(10)
select@hotel_id=客房编号frominserted
select@old_hotel_id=客房编号fromdeleted
update客房预订信息表
set客房预订信息表.客房编号=@hotel_idwhere客房预订信息表.客房编号=@old_hotel_id
update结算信息表
set结算信息表.客房编号=@hotel_idwhere结算信息表.客房编号=@old_hotel_id
End
六、实验小结
在这连续几天里的数据库应用设计中比起之前课程中的数据库有了更深的了解。
从一开始的需求分析到概念结构设计经历了许多次的修改,终于明白实体与实体之间该如何找到关系,再解决好需求分析和概念结构设计之后就显得容易了。
表格的设计要考虑到其属性的数据类型和长度,为了使得数据更具有操作性还要求完整性的设计,其中外键的设计必须是数据类型和长度相同的。
视图实际上就是联系多个表数据的虚拟的表,而存储过程就是编译的T-SQL语句存储在一个名称下的通过命令调用的重复使用。
比较难的是触发器的建立,其中使用了deleted和inserted表,且在需要用户自己编辑SQL语句也相应难些。