酒店客房管理系统

一、 概述

1.1、数据库课程设计题目

此次程序设计选题为酒店客房管理系统。

1.2、项目背景

随着社会的发展,普通人工酒店客房管理已经难以适应。酒店需要一个信息管理系统对旅客住宿情况进行管理。系统需要维护所有客房的详细信息,登记入住旅客信息,并实现各种相关的查询、统计功能。

1.3、程序设计报告编写的目的

设计报告主要编写课程设计的总体思路和代码实现的具体方面,利于日后维护和进行再开发能快速了解到当时代码设计者的设计的思路和实现细节。课程设计报告编写的目的是培养学生的设计报告编写能力。

二、需求分析

需求分析是对应用领域中的信息和操作要求进行详细分析,形成需求分析说明书。重点是调查、收集与分析用户在数据管理中的信息要求,处理要求,数据的安全性与完整性要求。

2.1、设计任务

作为数据库课程设计题目,鉴于时间有限,我们不追求大而全,只是把酒店管理所涉及的核心内容作为数据库管理对象进行设计。要完成对酒店客房的管理,系统必须管理酒店的客房信息、旅客信息、酒店客房管理系统操作人服务员的信息、客房订单信息等。

2.2、设计要求

酒店客房管理系统的关系型数据库设计主要满足数据库的第三范式,即非主属性不传递依赖于候选键,简单的说就是非主属性不到传递依赖。

2.3、需求描述

酒店客房管理系统的主要面向用户是酒店服务员,用户的主要工作是对来往的住客进行入住登记、退房业务、客户资料查询与更改、实时了解客房状态。

由上描述,可将需求分为四大部分,一是入住登记、二是退房与续租业务、三是客户资料查询与更改、四是客房时状态。

入住登记,实现保存客户基本信息、缴纳住房费用。客户基本信息包括姓名、性别、身份证、电话号码、租房类型、安排住房、入住天数等。费用缴纳前,需根据客户的住房类型已经住宿时间根据预缴纳与实际房间的计算出客户需缴纳费用。

退房与续租业务,实现退还保证金给客户和客户续租客房的业务。

客户资料查询与更改。资料查询,用户可以通过多种方式对客户资料进行查询,查询可以分为历史客户查询和现存客户查询,查询依据可以是多方面的,如以姓名、身份证、身份证等作为依据查询;客户资料更改,可对客户的电话号码、身份证进行更正。

实时客房状态。用户可以浏览当前客房的使用情况。

三、概念结构设计

3.1、概念设计工具

将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计。它是整个数据库设计的关键。

本课程设计的数据库概念模型的表示方法是实体-联系方法,该方法用 E-R 图来描述现实世界的概念模型,E-R 方法也称 E-R 模型。

3.2、抽象出系统实体

3.2.1、抽象出系统实体

酒店客房管理系统可以包含客房、客户、管理员、订单、客房类型,5 个实体,下图为 5 个实体的 E-R 图。

3.2.1-1 客房实体图

3.2.1-2 客户实体图

3.2.1-3 酒店管理员实体图

3.2.1-4 管理员实体图

3.2.1-5 房间类型实体图

3.3、入住信息登记子系统

3.3.1、系统描述

该系统先录入旅客的信息,包括姓名性别、身份证、电话号码、入住天数,按照旅客的意愿选择房间类型与房号, 计算旅客需预缴的费用(包括保证金)以及实际消费的费用,并反馈给用户。然后用户继续输入旅客的同伴信息并保存到数据库中。实际操作界面如下图:

3.3.1-1

3.3.2、分 E-R 图

3.3.1-2

3.3.3、说明

一个管理员可以负责 n 个客户,一个房间可以入住 1-6 人。

3.4、信息查询子系统

3.4.1、系统描述

信息查询。管理员可以输入旅客姓名、房间号、身份证等进行匹配,搜索出相对应的旅客信息并显示在界面。界面操作如下图。

3.4.1-1 查询界面图

3.4.2、分 E-R 图

3.4.2-2

3.4.3、分析

管理员通输入信息匹配到旅客,再通关系,查询到旅客居住的房间号,最后展现出旅客的信息。

3.5、旅客信息修改子系统

3.5.1 系统描述

管理员通输入旅客的房号和姓名,匹配到要修改的对象,可以对旅客的电话号码和身份证进行修改。界面如图所示。

3.5.1-1 信息修改界面图

3.5.2、分 E-R 图

3.5.2-2 修改 E-R 图

3.5.3、说明

一个管理员可以修改多个旅客。

3.6、退房子系统

3.6.1、系统描述

管理员输入房号,并对结算按钮对客房进行结算,在退款框向旅客展示退还的押金。界面图如下。

3.6.1-1 结算界面图

3.6.2、分 E-R 图

3.6.2-2 计算退房 E-R 图

3.6.3、说明

管理员可以操作多个住房关系,旅客与住房关系为 1 对 1,住房关系与订单为 n 对 1 的关系。

3.7、续租子系统

3.7.1、系统描述

管理员输入房号、续租天数并点击续租按,酒店客房管理系统会储存旅客的续租记录并计算应缴付款,提示管理员收取多少费用,界面如下图。

3.7.1-1 续租界面图

3.7.2、分 E-R 图

3.7.2-2 续租 E-R 图

3.7.3、说明

通过 roomNum/房号,找到实体间的联系,livers 与客户是一对一关系,这样可以找到对应的旅客增加停留属性 stayDay 的属性值,一个订单可以包含多个旅客,因为一个客房可以满足容纳多名旅客,使用关系实体 livers 可以找到一个与他关联的订单实体并改变它的预收款和旅客实消费的值。

3.8、酒店客房关联系统总体 E-R 图

四、逻辑结构设计

逻辑结构设计就是将概念结构设计中的全局 E-R 图转换为与选用的 DBMS 产品所支持的数据模型相符号的逻辑结构。

4.1、关系数据库模式

根据上面介绍的总体 E-R 图,可以得到酒店管理系统的关系模型如下:

旅客(旅客 ID,身份证号,姓名,性别,电话号码,年龄,入住日期,停留时间)为旅客实体对应的关系模式,其中旅客 ID 为系统自增加一的主键,在此表中唯一识别。

房间类类型(类型)为房间类型实体对应的关系模式。

比率(租金,预付款)

房间(房号,面积,房间类型,租金,状态)为房间实体对应的关系模式,其中房号为主键,租金与房间类型为外键,分别参照了比率和房间类型实体。

管理员(账号,密码,姓名)为管理员实体对应的关系模式,账号为主键。

订单(订单 ID,预付,实际消费,管理员账号)为订单实体对应的关系模式,管理员账号为参照管理员实体的外键。

住房关系(订单 Id,旅客 ID,房号,状态)为联系账单、旅客和客房对应的关系模式,因为旅客与订单、客房为多对一关系,因此客房,旅客和订单的主属性组成了住房关系模式的主键

type 房间类型表

字段名 类型 属性
roomType 类型 Varchar(20) 主键

rate 比率表

字段名 类型 属性
money 租金 varchar(20) 主键
prepay 预付 varchar(20) not null

room 客房表

字段名 类型 属性
roomNum 房号 varchar(20) 主键
area 面积 varchar(20) not null
roomType 房间类型 varchar(20) 外键 not null
money 租金 varchar(20) 外键 not null
status 状态 varchar(20) not null

guest 旅客表

字段 类型 属性
personId int 主键 自增加一
guestId 身份证 varchar(20) not null
name 姓名 varchar(20) not null
tel 电话 varchar(20) not null
age 年龄 varchar(20)
sex 性别 varchar(20) not null
day 入住日期 varchar(20) not null
stayDay 停留时间 varchar(20) not null

manager 管理员表

字段 类型 属性
num 账号 varchar(20) 主键
pw 密码 varchar(20) not null
name 姓名 varchar(20) not null

billOrder 订单表

字段 类型 属性
orderId int 主键 自增加一
prepay 预付款 varchar(20) not null
total 实际消费 varchar(20) not null
num 管理员账号 varchar(20) 外键 not null

lives 关系表

字段 类型 属性
orderId int 主键 参照 billOrder 表
personId int 主键 参照 guest 表
roomNum int 主键 参照 room 表
status varchar(1) not null

五、数据库物理设计与实施

5.1、软件与硬件

此次课程设计用到的数据库为 SQLServer2017,使用了 navicat 作为 SQL 语言的编辑软件,软件运行环境为 widow10 的 64 位系统。

5.2、物理结构设计

数据库在物理设备上的储存结构与储存方法称为数据库的物理结构,它依赖数据库管理系统。

5.2.1、数据库储存引擎

采用默认 InnoDB 储存引擎,其特点是行锁设计、支持 MVCC、支持外键、提供一致性非锁定读、同时被设计用来最有效的利用以及使用内存和 CPU。

5.2.2、关系模型存取方法

存取方法是快速存取数据库中数据的技术。在酒店客房管理系统中存在着许多查询功能,巧妙的设置索引,能很有效提高数据库的查询效率。此次课程设计数据库系统采用了索引存取方法。

5.2.3、存储结构

为了加快数据库的运行速度,我把数据库存放在电脑固体硬盘 C 盘。固态硬盘的读取速度比一般的机械硬盘要快的多,但其存储量比同等价位的机械硬盘要小得多,所有要更加合理的设计索引,减少空间的开销。

5.3、建立数据库

数据库的建立使用 nacvice 工具,基本表的建立用 SQL 语言

数据库名称为:hotel

type 基本表:

– 建立房间类型表

CREATE TABLE type
(
roomType VARCHAR(20) PRIMARY KEY
);

rate 基本表

–建立房间预收与实价

CREATE TABLE rate(
money VARCHAR(20) PRIMARY KEY,
prepay VARCHAR(20) NOT NULL
);

room 基本表

–建立房间表

CREATE TABLE room(
roomNum VARCHAR(20) PRIMARY KEY,
area VARCHAR(20),
roomtype VARCHAR(20),
money VARCHAR(20),
states VARCHAR(20),
FOREIGN KEY(roomtype) REFERENCES type(roomType),
FOREIGN KEY(money) REFERENCES rate (money)
);

manager 基本表

–经理表格

CREATE TABLE manager(
num VARCHAR(20) PRIMARY KEY,
pw VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL
);

guest 基本表

–旅客

CREATE TABLE guest(
personId INT IDENTITY(1,1) PRIMARY KEY,
guestId VARCHAR(20),
name VARCHAR(20) NOT NULL,
tel VARCHAR(20) NOT NULL,
age VARCHAR(20) ,
sex VARCHAR(20) NOT NULL,
day VARCHAR(20) NOT NULL,
stayDay VARCHAR(20) NOT NULL
);

billOrder 基本表

–账单

CREATE TABLE billOrder(
orderId INT IDENTITY(1,1) PRIMARY KEY,
prepay VARCHAR(20) NOT NULL,
total VARCHAR(20) NOT NULL,
num VARCHAR(20),
FOREIGN KEY(num) REFERENCES manager(num)
);

lives 基本表

–创建关系表

CREATE TABLE lives(
orderId INT,
personId INT,
roomNum VARCHAR(20),
status VARCHAR NOT NULL,
PRIMARY KEY(orderId,personId,roomNum),
FOREIGN KEY(orderId) REFERENCES billOrder(orderId),
FOREIGN KEY(personId) REFERENCES guest(personId),
FOREIGN KEY(roomNum) REFERENCES room(roomNum)
);

5.4、索引设计

当表中数据量比较大时,查询操作会比较耗时,建立索引是加快查询的有效手段。但过多的索引会增加数据库的储存负担,有效的设计索引,才能达到数据库空间和查询速度的最优。

在酒店客房管理系统中有许多字段需要频繁查找的,为其建立索引,有效与加快管理员的工作效率,能给使用者更好的使用体验。

在查询旅客信息功能中使用了根据旅客姓名、身份证、房号作为查询依据,到数据库中进行搜索;在续租与退租时也多次使用到房号匹配查询。所有为姓名、身份证、房号建立索引。

实现语句为:

CREATE UNIQUE INDEX guestNameIndex ON guest(name);
CREATE UNIQUE INDEX guestIdIndex ON guest(guestId);
CREATE UNIQUE INDEX roomNumIndex ON room(roomNum);

5.5、加载测试数据

客房数据:

管理员数据:

顾客数据:

订单数据:

联系表 lives 的数据:

六、数据库操作要求及实现

6.1、数据查询操作

客房使用状态查询:

SELECT roomNum FROM room WHERE status = '0';

客房有两种状态,分别是有客或空置,status=1 表示有客,status=0 表示空置。

旅客信息查询:

SELECT  FROM guest,lives WHERE name = '杨千旺' AND lives.personId = guest.personId AND guest.personId IN (SELECT personId FROM lives WHERE status = '0');

因为旅客表没有旅客居住的房号字段,所有需要链表查询。

6.3、数据更新

客房使用状态更新:

UPDATE room SET status = '1' WHERE roomNum = '103';

把 status 更新为 0 或者 1。

旅客信息更改:

UPDATE guest SET tel= '3', guestId = '3' WHERE name = '1'AND personId IN (SELECT personId FROM lives WHERE roomNum = '204');

6.4、数据维护操作

数据库试运行合格后,数据库开发工作就基本完成了,可以投入正式运行了。但是由于应用环境在不断变换,数据库中物理储存也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一项长期任务,也是设计工作的继续与提高。

数据库维护主要包括以下几方面:

1、 数据库转储和恢复。通过定期转储备份数据库文件,避免数据遭到破坏后无法恢复。

2、 数据库的安全性、完整性控制。

3、 数据库性能的监督、分析和改造。

4、 数据库的重组织与重构。

常使用 ALTER TABLE 语句对数据库字段和字段的约束进行删除、修改和新增。以达到数据维护效果。

七、源代码及查询截图

7.1、流程图

7.2、数据库连接方法

数据库连接使用了 JDBC 驱动连接 SQLServer 数据库,JDBC 是 Java DataBase Connectivity 的缩写,它是连接 Java 程序和数据库服务器的纽带。如图:

java.sql 包的接口和类:

Driver 接口和 DriverManaer 类:前者边是驱动器,后者表示驱动管理器

Connection 接口:数据库连接

Statement:负责执行 SQL 语句

PreparedStatement:负责执行预准备的 SQL 语句

CallableStatement:负责执行 SQL 存储过程

ResultSet:SQL 查询语句的结果集

在本次课程设计中数据库的具体连接代码:

//路径
url="jdbc:sqlserver://localhost:1433;"+"databaseName=hotel2;user=sa;password=yang2456064131;"
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//驱动类
conn = DriverManager.getConnection(url);//驱动连接

7.3、数据库查询截图

在课程设计中有许多地方需要使用到查询语句到数据库中获取数据,以旅客查询为例具体查询代码如下:

SELECT * FROM guest,lives WHERE name = '杨千旺' AND lives.personId = guest.personId AND guest.personId IN (SELECT personId FROM lives WHERE status = '0');

酒店管理系统运行显示结果如下:

八、总结

通过本次数据库课程设计,进一步巩固了我对数据库的基本操作,同时锻炼了我对数据的分析能力。懂得怎样从一个客观存在的实体中提炼出它的属性。设计数据库表格并不像一般我们所看的表格,它不是一个对立的个体,每个表格都会有它存在的意义和其它表格千丝万缕的关系。能巧妙的设计表格属性,不仅能减少数据库的存储开销、加快查询效率,还可为日后的开发提供便利。基本表的合理关系,能减轻 SQL 查询语句的设计,这可大大减少了数据开发人员的工作量。

在数据库设计中,还有一个比较重要是约束条件的建立。或许有人以为,约束条件限制了很大操作,增加了语言规则。约束条件它虽然增加了好多规则,插入时有许多不便,但它能很大程度的保证数据库能正常运行,有了约束条件,数据库变得更有规律完整。避免了缺值、和错误值。

本次数据库课程设计,在提高我系统应用开发能力,对应用系统从数据库到后端代码到前端展示的开发能力有许多提升。

♻️ 资源

大小: 1.51MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87360072

基于Java+SQLServer2017实现(Web)酒店客房管理系统【100010327】相关推荐

  1. 基于JAVA+SpringMVC+MYSQL的酒店客房管理系统

    项目功能: 酒店客房管理系统包括普通用户登录注册,管理员登录两种角色,其中用户可以修改密码,预定房间,预定记录查询,管理员可以修改自己密码,用户管理,房间分类管理,客房信息管理,开房管理,退房管理,开 ...

  2. 【源码及课件分享】Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战

    Java实战项目又双叒叕来咯~小伙伴们请查收~酒店客房管理系统![源码及课件分享]Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战_Java毕业设计https://www.bil ...

  3. 基于Java实现(Web)考勤管理系统【100010040】

    考勤系统设计文档 一.用户需求 1.1 目标 规范员工的上下班.请假.外出工作等行为 方便计算员工的薪金方便管理各种带薪假期 共享员工的请假及外出工作的信息 1.2 涉众 序号 涉众 待解决的问题 1 ...

  4. 基于JAVA+SpringMVC+MYSQL的酒店旅游管理系统

    项目功能: 酒店景点旅游管理系统源码有文档前后台 浏览用户 浏览用户是对自驾游有意向,正在网络上寻找自己心仪的旅游去处的用户,其主要实现功能为: (1) 客户可以利用网络,通过计算机上的浏览器浏览本到 ...

  5. 【013】基于Vue的酒店客房管理系统(含管理员、普通用户两种身份(附源码数据库、课设报告)

    这里写目录标题 一.系统详细介绍 二.系统部分设计思路 三.项目获取 一.系统详细介绍 前言: 这次带来的是基于Nodejs+Vue+Mysql的酒店客房管理系统,含非常非常详细的课设报告,觉得物超所 ...

  6. java做一个客房管理系统定制_开题报告基于Java的酒店客房管理系统的设计与实现.doc...

    开题报告基于Java的酒店客房管理系统的设计与实现 毕业设计开题报告 课 题 名 称:基于Java的酒店客房管理系统的 设计与实现 姓 名: 班 级: 指 导 教 师: 所 在 系 部: 专 业 名 ...

  7. (精品)基于Web的酒店客房管理系统的设计与实现毕业论文+开题报告+项目源码(SSM)及数据库+查重报告

     源码获取:我的博客资源页面可以下载!!!! 项目名称 (精品)基于Web的酒店客房管理系统的设计与实现毕业论文+开题报告+项目源码(SSM)及数据库+查重报告 视频介绍 (精品)基于Web的酒店客房 ...

  8. java做一个客房管理系统定制_基于JAVA酒店客房管理系统的设计与实现(JSP,MySQL)(含录像)...

    基于JAVA酒店客房管理系统的设计与实现(JSP,MySQL)(含录像)(毕业论文12000字,程序代码,MySQL数据库) 本酒店管理系统在功能模块主要分为两大方面,即用户功能模块和管理员功能模块. ...

  9. 基于 SpringBoot+Vue+Java 实现酒店客房管理系统

    文章目录 一.前言介绍 二.系统结构 三.系统详细实现 3.1用户信息管理 3.2会员信息管理 3.3客房信息管理 3.4收藏客房管理 3.5用户入住管理 3.6客房清扫管理 四.部分核心代码 源码下 ...

最新文章

  1. 弹出popwindow 背景变暗
  2. mysql explain用法
  3. Android native 开发总结
  4. Matlab自定义函数的几种方法
  5. Pandas的学习(6.DataFrame和Series创建多层行索引以及多层列索引)
  6. Flask设置返回json格式数据
  7. word插入visio图显示不完全
  8. 朴宥拉短片突破了几百万的观看量
  9. python django博客源码_利用Django实现一个博客(附全部源码)
  10. 前后台进程的本质区别
  11. 使用最小二乘法计算多元线性回归的公式推导
  12. 阿里云OSS浏览图片报403错误的解决方法
  13. dd linux 格式化u盘启动盘_linux dd命令刻录启动U盘详解
  14. 科研人员下载外文文献必备的论文网站
  15. 第八集 昆仑初度尘未洗,夜宿禁区五道梁
  16. 看完这篇关于电池的高票回答 可防储能大忽悠
  17. 19个三维GIS软件对比
  18. UnixLinux 索引
  19. Chrome 插件:无痕浏览模式下加载插件、启用插件设置方法
  20. 外汇/本币;结算/清算

热门文章

  1. 分段二次插值例题_分段低次插值克服了高次插值多项式可能产生震荡的不足,但分段低次插值函数在整个插值区间上不能保证...
  2. 如果编程语言是女孩子……
  3. linux nagios监控
  4. Excel 宏录制与VBA编程 —— 3、第一个VBA弹窗代码(附视频)
  5. 2022年团体程序设计天梯赛C++个人题解附带解题思路
  6. JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类
  7. HaaS轻应用(JavaScript)总览
  8. java村庄水井_我的世界:它们同样是“水井”却隐藏着不同的“秘密”,见过吗?...
  9. [ChatGPT为你支招]如何提高博客的质量,找到写作方向,保持动力,增加粉丝数?
  10. 第三章 UT单元测试——CPU与内存使用率限制