任务书一、数据库原理课程设计的任务1)通过本课程设计的训练,使学生掌握数据库技术的实际应用以及数据库信息管理系统的设计方法与开发过程;初步掌握数据库需求分析方法,掌握概要设计、逻辑设计和物理设计的步骤和技巧,理解并掌握数据库系统的整个开发过程。
2)通过课程设计,掌握数据库开发工具的使用以及综合编程调试的能力,结合数据库原理的基本理论,选用一种现代关系数据库系统,设计一个具体的信息管理系统,具备基本的数据库编程能力,为以后能进行数据库系统设计、开发与维护打下良好的基础。
3)提升工程实践能力、团队协作精神、交流与沟通能力;4)通过规化的实验报告,培养学生良好的文档习惯以及撰写规文档的能力。
二、课程设计的基本容..目录1.数据库需求分析·41.1设计目的··41.2系统功能分析··41.3功能模块设计··52.数据库概念结构设计·62.1概念模型··62.2 E-R模型··63.数据库逻辑结构设计·83.1关系模型设计··93.2数据模型的优化··93.3子模式设计··94.数据库物理结构设计·94.1存取方式设计··94.2存储结构设计··105.数据库安全性、完整性设计·10 5.1主要视图设计··105.2用户权限··106.数据库实现·116.1编码实现··116.1.1主要数据表的创建·116.1.2主要视图的创建·146.1.3索引的创建·146.1.4创建用户权限·146.1.5创建存储结构·157.数据录入调试及运行·168.课程设计总结体会·189.参考文献·191.数据库需求分析1.1设计目的本酒店客房管理系统是为了满足现代酒店的管理需求、提高对顾客的服务质量、方便酒店的管理和运营而设计的一款多功能易操作的基于B/S模式的数据库管理系统。
由于当前的多数酒店都是以人工的方式来统计管理酒店里的各项事务,其中带来了很多的不便,使得酒店的管理也相对比较困难。
对于酒店的营业情况的统计,要耗费很大的人力来进行统计分析。
人工方式的管理也很容易出现管理上的失误。
随着计算机技术和互联网技术的发展,设计一种可以实现自动化管理酒店事务的系统是当前酒店行业的一个迫切要求。
本款酒店客房管理系统就是应运而生的一款快捷酒店管理系统,它可以使酒店人员很方便的管理酒店的各项事务,并将管理的失误降到最低。
本系统通过对不同的人员分配不同的权限可以很好的防止客户以及酒店一些信息的泄露。
酒店会计还可以通过本系统快捷地统计出酒店在特定阶段的营业情况,可以根据分析的结果进行相应业务的调整。
顾客可以通过本系统对入住的体验进行评价或者提出相关的建议,可以使酒店的服务更加完善。
1.2系统功能分析本系统是为方便酒店管理和日常的营业需要,加入了酒店房间预定功能、顾客入住登记功能、员工维修客房设施记录功能、顾客体验反馈功能、营业情况统计功能。
酒店房间预订系统:顾客可根酒店客房的一些信息,根据自身需求预定相应的客房,并支付一定的押金,顾客可根据情况选择入住或者退订已预订的房间。
顾客入住登记功能:当顾客预定好房间选择入住时,系统进入住登记阶段,用户登记自身信息,并根据预定的订单信息办理入住房间。
员工维修记录功能:当酒店里的服务设施发生故障时,维修人员对故障进行维修,并记录维修的设施名称及其维修时间,以及维修所产生的费用,最后将数据存储在数据库中,并打印凭条以便上报。
顾客体验反馈系统:当顾客要退房离开时,顾客可根据自身体验对酒店的设施和服务进行相应的评价和对一些问题提出相应的建议便于酒店对此做出改进。
营业情况统计功能:酒店人员可根据特定阶段的营业状况,对消费记录进行分析,得出相应阶段营业盈亏的原因,并从中提取一些好的建议,以利于酒店的盈利。
1.3功能模块设计--系统功能模块图—●有关客房标准的制定、标准信息的输入,包括标准编号、标准名称、房间面积、床位数量、住房单价、是否有空调、电视机、以及单独卫生间等。
●客房标准信息的修改、查询等。
●客房基本信息的输入,包括客房编号、客房类型、客房位置、客房单价、备注等。
●客房基本信息的查询、修改,包括客房编号、客房类型、客房位置、客房单价、备注等。
●剩余客房信息的查询等。
●订房信息的输入,包括客房编号、客房种类、客房位置、客房单价、顾客、顾客、入住日期、折扣、备注信息等。
●订房信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客、顾客、入住日期、折扣、备注信息等。
●入住信息的输入,包括客房编号、客房种类、位置、客房单价、顾客、顾客、入住日期、折扣、结算日期、备注信息等。
●入住信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客、顾客、入住日期、折扣、结日期、备注信息等。
●员工信息的输入,包括员工工号,员工,性别,年龄,手机,酒店编号信息等。
2.数据库概念结构设计2.1概念模型●客房标准信息:客房编号、客房名称、床位数量、住房单价。
●客房信息:客房编号、客房种类、客房位置、客房单价,客房状态。
●订房信息:订单编号、客房种类、顾客、顾客、订房时间、折扣。
●顾客信息:顾客、顾客、手机。
●入住信息:流水单号、客房编号、客房类型、顾客、入住时间、结算时间、职工工号、结算备注。
●职工信息:工号、职工、职工性别、职工年龄、入职时间、职务。
●酒店信息:酒店编号、酒店名称、酒店。
●物品信息:物品编号、物品名称、物品类别、物品单价、库存。
●维修信息:流水单号、维修时间、维修物品、房间编号、维修费用。
2.2 E-R图客房状态客房标准信息E-R图职工信息E-R图顾客信息E-R图物品信息E-R图酒店信息E-R图手机号库存房间编号实体间联系E-R图3.数据库逻辑结构设计3.1 关系模型设计客房(客房编号,客房名称,客房类型,床位数量,住房单价,酒店编号)顾客(顾客,顾客,手机)员工(员工工号,员工,员工性别,员工年龄,手机,入职时间,职务)酒店(酒店编号,酒店名称)物品(物品编号,物品名称,物品单价,物品类型)入住(流水单号,房间名称,顾客号,入住时间,退房时间,住宿时长,住宿费用)预定(流水单号,顾客号,房间类型,预定时间,预定入住时长,押金,预定状态)维修(流水单号,员工工号,房间编号,维修设施名称,维修费用,维修时间)消费(流水单号,入住单号,消费物品名称,消费量,消费金额)评价(流水单号,顾客号,评论时间,评论星级,评论容,酒店编号)3.2 数据模型的优化客房信息关系模型中的主属性可推出所有其他非主属性,模式中不存在传递依赖和部分依赖所以符合3NF.顾客信息关系模型中的关系模型中的主属性可推出所有其他非主属性,模式中不存在传递依赖和部分依赖所以符合5NF.员工信息关系模型中的主属性可推出所有其他非主属性,模式中不存在传递依赖和部分依赖所以符合3NF.酒店信息在酒店信息关系模式中,因仅有两个属性且属性间不存在部分依赖,传递依赖所以该模式设计合理符合第三式。
物品信息在物品信息关系模式中,主属性可推出关系中的所有非主属性,关系中不存在传递依赖和部分依赖,且每一个决定因素都包含码,该关系模式满足BCNF式。
入住信息3.3 子模式设计为方便系统的使用,以及开发人员对程序的设计和顾客身份信息的安全性,本数据库系统采用子模式的设计方法来提高数据的使用效率和安全保障。
在酒店查询客房信息的时候设计一个子模式仅供系统用户查询到客房名称,客房类型,床位数量,住房单价等一些主要信息,而客房编号和酒店编号是为了系统的灵活性和数据库后台的方便操作而设计的用户可忽略。
在系统人员查询顾客身份信息时,系统可添加子模式使系统用户只能顾客信息的前六位和后四位,以防止顾客信息的泄露。
在用户查询入住信息,评价信息,消费信息以及维修信息时,流水单号都可忽略,减少用户的信息阅读量。
4. 数据库物理结构设计4.1存取方式设计由于本系统的数据信息的查询操作频繁,所以在部分表中建立索引以提高查询效率。
客房信息表修改删除插入操作较少,查询操作较为频繁,所以在该表中以客房编号上建立聚簇索引以提高查询效率。
顾客信息表由于插入操作较为频繁,所以不适合建立聚簇索引,采用在用户属性上建立非聚簇索引的方法提高数据的查询效率。
入住信息表和预定信息表要频繁的进行插入和查询操作,入住信息表和预定信息表中的流水单号具有有序的特性且插入的操作仅发生在表的末尾,所以适合在该模式的流水单号属性上建立聚簇索引便于数据的查询。
由于职工表的在本系统使用频率较少且数据量较少,添加索引反而使系统在索引的维护上耗费大量时间,所以不建议添加索引。
评价表由于要经常的插入和查询数据,且该表的数据量随营业时间增加而增加,所以要添加索引以提高系统对数据的查询效率。
4.2存储结构设计本系统的数据的存储结构可根据数据的规模的进行设计,对于小型的酒店建议采用单个硬盘的存储方式,减少设计开销。
对于大型的酒店,数据量较大,建议使用多个磁盘或使用磁盘阵列的形式来存储数据。
具体的设计要根据实际情况进行详细的设计。
5. 数据库安全性、完整性设计5.1主要视图设计顾客加密信息(顾客号,顾客)顾客只显示前六位和后四位。
客房基本信息(客房名称,客房类型,床位数量,住房单价)入住基本信息(房间编号,顾客号,入住时间,退房时间,住宿时长,住宿费用)只显示前六位和后四位。
预定基本信息(顾客号,房间类型,预定时间,预定入住时长,押金,预定状态)只显示前六位和后四位。
顾客消费总金额(客房名称,客房类型,入住时间,退房时间,住宿时长,住宿费用,消费总金额)5.2 用户权限酒店经理:对于客房信息表具有查看,修改,添加权限。
对于顾客信息表具有查看权限。
对于入住和预定信息表具有查看权限。
对于员工信息表具有查看,修改,插入和删除权限。
酒店会计:对于客房信息表具有查看结算信息表具有查看和插入权限。
对于员工表具有查看权限。
酒店前台:对于客房信息表具有查看权限,对其中的客房的入住状态具有修改权。
对于顾客信息表具有插入权。
对于入住表和预定表具有插入权。
顾客:对客房信息某些记录具有查询权。
6. 数据库实现6.1编码实现6.1.1主要数据表的创建CREATE DATABASE [酒店客房信息管理系统] ON PRIMARY(NAME = N'酒店客房信息管理系统',FILENAME=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\ DATA\酒店客房信息管理系统.mdf' ,SIZE = 3072KB ,FILEGROWTH = 1024KB)LOG ON(NAME = N'酒店客房信息管理系统_log',FILENAME=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\ DATA\酒店客房信息管理系统_log.ldf' ,SIZE = 1024KB ,FILEGROWTH = 10%)create table 物品(物品编号 char(5) primary key,物品名称 char(30) not null,物品单价 money,物品类型 char(10));create table 顾客(号 char(18) primary key,char(20) not null,手机号 char(11));create table 酒店(酒店编号 char(4) primary key,酒店名称 char(20));create table 客房(客房编号 char(4) primary key,客房名称 char(4) not null,客房类型 char(8) check(客房类型 in ('标准间','豪华间')),客房状态 char(4) check(客房状态 in('入住','空闲')),床位数 int,客房单价 money);create table 员工(员工工号 char(6) primary key,员工 char(20) not null,员工性别 char(2) check(员工性别 in('男','女')),员工年龄 int check(员工年龄>18 and 员工年龄<60),员工职务 char(20) not null,手机号 char(11));create table 维修(维修流水单号 int primary key IDENTITY (1, 1),维修房间编号 char(4) foreign key references 客房(客房编号), 维修员工工号 char(6) foreign key references 员工(员工工号), 维修物品名称 char(20),维修时间 date,维修费用 money);create table 评论(酒店编号 char(4),顾客号 char(18),评论时间 date,评论星级 int,评论容 char(500) not null);create table 预定(流水号 char(8) primary key,预定客房编号 char(4) foreign key references 客房(客房编号), 顾客号 char(18) foreign key references 顾客(号),员工工号 char(6) foreign key references 员工(员工工号),预定时间 date,预订时长 int,预定状态 char(10),退订时间 date,押金 money);create table 入住(流水单号 int primary key IDENTITY (1, 1),入住客房编号 char(4) foreign key references 客房(客房编号), 顾客号 char(18) foreign key references 顾客(号),入住时间 date,退房时间 date,住宿费用 money,);create table 消费单(消费流水单号 int primary key IDENTITY (1, 1),入住流水单号 int foreign key references 入住(流水单号),物品编号 char(5) foreign key references 物品(物品编号),消费量 int,消费金额 money);6.1.2主要视图的创建--创建客房基本信息视图--create view 客房基本信息asselect 客房名称,客房类型,床位数,客房单价from 客房--统计顾客住宿的消费费用--create view 消费统计asselect 流水单号, 客房名称, 客房类型, 入住时间,退房时间,DATEDIFF(day,入住时间,退房时间) as 住宿时长,住宿费用from 入住 join 客房 on 客房.客房编号=入住.入住客房编号--创建顾客加密信息视图--create view 顾客加密信息asselect =replace(号,substring(号,7,8),'********'),,手机号from 顾客.--创建预订概要信息便于查询--create view 预定概要信息asselect 预定客房编号,顾客号,预定时间,客房类型,押金,预定状态from 预定6.1.3索引的创建因其他表在建立主键时以默认添加,此处不再添加额外索引。