酒店管理系统 ---数据库原理综合实验

(详情请见报告)

实现功能:

(1)根据系统功能进行概念模型、关系模型和物理模型设计;

(2)根据数据库物理模型在MySQL中创建数据库和数据表,对表添加主键约束、外键约束等,并完成数据的插入功能;

(3)模拟系统业务场景,对表中的数据进行简单查询、分组聚合查询、多表关联查询等操作;

(4)模拟系统业务场景,通过创建视图对表查询进行优化;

(5)模拟系统业务场景,对表中的数据进行修改和删除操作;

(6)模拟系统业务需求,创建存储过程,执行并验证存储过程结果的正确性;

(7)创建新用户;给新用户授予数据表的查询、插入、更新权限;实现回收用户权限,删除用户;

(8)使用JDBC连接数据库,实现系统基本增删改查功能。

目的:

(1)掌握数据库基础设计相关理论知识;

(2)能够通过本地PC机安装MySQL数据库,建议5.5以上版本;

(3)掌握数据库基本DDL语法,能够根据物理设计创建对应的数据库对象;

(4)掌握数据库基本DML语法,能够按照业务功能对表中的数据进行增删改操作;

(5)掌握数据库基本DQL语法,能够按照业务需求对表中的数据进行查询操作;

(6)掌握操作视图的操作语法,能够通过视图对数据库进行优化;

(7)掌握存储过程创建、调用语法,能够通过创建存储过程实现业务功能;

(8)掌握用户和权限操作语法,能够通过创建用户和权限实现不同角色用户访问操作数据库;

概念模型设计

(1)实体及属性

客房 (客房编号,酒店ID,当天状态,位置,房型,价格,折扣价,平方数,床位,配套,图片)

订单 (ID,旅客ID,客房编号,开始时间,结束时间,费用,订单状态,评价,分数)

酒店 (ID,酒店名称,地址,客房数,客服电话,状态)

旅客 (ID,姓名,性别,身份证,等级,手机号码,账号,密码)

管理用户 (ID,姓名,性别,身份证,等级,手机号码,账号,密码)

(2)关系

一个酒店有多个客房,一个客房属于某个酒店,酒店和客房是一对多关系

一个旅客生成多个订单, 订单属于某个旅客,旅客与订单是一对多关系

一个客房生成多个订单,一个订单属于某个客房,订单与客房是一对多关系

E-R图

因图片不适应

物理模型设计

表名

列名

字段类型

长度

是否为空

备注

客房

客房编号

char

20

NO

主键

酒店ID

int

YES

外键

当天状态

varchar

20

YES

位置

varchar

20

YES

房型

varchar

20

YES

标准间、高级标间

三人间、豪华套房

价格

float

YES

折扣价

float

YES

平方数

varchar

20

YES

床位

varchar

20

YES

配套

text

65535

YES

图片

text

65535

YES

订单

ID

int

NO

主键

旅客ID

int

YES

外键

客房编号

char

20

YES

外键

开始时间

datetime

YES

结束时间

datetime

YES

费用

float

YES

订单状态

varchar

20

YES

评价

varchar

20

YES

分数

int

YES

酒店

ID

int

NO

主键

酒店名称

varchar

60

YES

地址

varchar

150

YES

客房数

int

YES

客服电话

int

YES

状态

varchar

20

YES

旅客

ID

int

NO

主键

姓名

varchar

20

YES

性别

varchar

20

YES

身份证

varchar

30

YES

等级

varchar

20

YES

手机号码

varchar

20

YES

账号

varchar

255

YES

密码

varchar

255

YES

管理用户

ID

int

NO

主键

姓名

varchar

20

YES

性别

varchar

20

YES

身份证

varchar

30

YES

等级

varchar

20

YES

手机号码

varchar

20

YES

账号

varchar

255

YES

密码

varchar

255

YES

系统实现

数据表

创建

create table 酒店(

ID  int primary key auto_increment,

酒店名称  varchar(20),

地址  varchar(50),

客房数 int,

客服电话 int,

状态 varchar(20)

);

create table 客房(

客房编号 char(20) primary key,

酒店ID int,

当天状态 varchar(20),

位置  varchar(20),

房型   varchar(20),

价格 float,

折扣价 float,

平方数   varchar(20),

床位   varchar(20),

配套 text,

图片 text,

foreign key (酒店ID) REFERENCES 酒店(ID)

);

create table 旅客(

ID  int primary key auto_increment,

账号  varchar(20),

密码   varchar(20),

姓名   varchar(20),

性别   varchar(20),

身份证   varchar(30),

等级   varchar(20),

手机号码  varchar(20)

);

create table 管理用户(

ID  int primary key auto_increment,

账号  varchar(20),

密码   varchar(20),

姓名   varchar(20),

性别   varchar(20),

身份证   varchar(30),

等级   varchar(20),

手机号码  varchar(20)

);

create table 订单(

ID   int primary key auto_increment,

旅客ID int,

客房编号 char(20),

开始时间 datetime,

结束时间 datetime,

费用 float,

订单状态  varchar(20),

评价  varchar(20),

分数 int,

foreign key (旅客ID) REFERENCES 旅客(ID),

foreign key (客房编号) REFERENCES 客房(客房编号)

);

插入

INSERT INTO 酒店(ID, 酒店名称, 地址, 客房数, 客服电话, 状态) VALUES (1, '橙子酒店丰乐南路分店', 'XX省XX市丰乐南路301号4-8层', 300, 400666882, '正常营业');

INSERT INTO 酒店(ID, 酒店名称, 地址, 客房数, 客服电话, 状态) VALUES (2, '橙子酒店兴亚路分店', 'XX省XX市兴亚路路401号3-8层', 500, 400666885, '正常营业');

INSERT INTO 管理用户(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (1000, '阎薇', '男', '441224198807080016', '普通', '18027368620');

INSERT INTO 管理用户(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (1001, '小薇', '女', '441224198807080026', '前台', '18027368620');

INSERT INTO 管理用户(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (1002, '大丹', '男', '441224198807080036', '管理员', '18027368621');

INSERT INTO 管理用户(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (1003, '王旭', '男', '441224198807080046', '酒店行政', '18027368622');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (1, '阎薇', '男', '441224198807080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (2, '乔蓉', '女', '441224197807080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (3, '路军', '男', '441224199507080016', 'VIP', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (4, '孙越', '女', '441224198807080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (5, '吴迪', '男', '441224199207080016', 'VIP', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (6, '佟玲', '女', '441224197107080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (7, '杨晴', '男', '441224199007080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (8, '吕波', '女', '441224198807080016', 'VIP', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (9, '闫懋', '男', '441224199807080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (10, '张艳', '女', '441224199907080016', '高级VIP', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (11, '王晨', '男', '441224198207080016', '普通', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (12, '柳奥', '女', '441224198507080016', 'VIP', '18027368620');

INSERT INTO 旅客(ID, 姓名, 性别, 身份证, 等级, 手机号码) VALUES (13, '张超', '男', '441224198807080016', '高级VIP', '18027368620');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('FL401', 1, '可用', '4楼401', '双人房', 258, 232.2, '35', '2床', '停车场/洗漱/浴缸/WIFI', '/chengzi/pic/301.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('FL402', 1, '可用', '4楼402', '三人房', 288, 259.2, '40', '4床', '停车场/洗漱/公用电脑', '/chengzi/pic/302.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('FL403', 1, '可用', '4楼403', '单人房', 168, 151.2, '25', '1床', '停车场/洗衣机/办公桌', '/chengzi/pic/303.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('FL501', 1, '可用', '5楼501', '双人房', 258, 232.2, '35', '2床', '停车场/洗漱/浴缸/WIFI', '/chengzi/pic/304.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('FL502', 1, '可用', '5楼502', '三人房', 288, 259.2, '40', '4床', '停车场/洗漱/公用电脑', '/chengzi/pic/305.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('FL503', 1, '可用', '5楼503', '单人房', 168, 151.2, '25', '1床', '停车场/洗衣机/办公桌', '/chengzi/pic/306.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY301', 2, '可用', '3层301', '双人房', 258, 232.2, '35', '2床', '停车场/洗漱/浴缸/大阳台', '/chengzi/pic/307.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY302', 2, '可用', '3层302', '三人房', 288, 259.2, '40', '4床', '停车场/洗漱/公用电脑', '/chengzi/pic/308.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY303', 2, '可用', '3层303', '单人房', 168, 151.2, '25', '1床', '停车场/洗衣机/办公桌', '/chengzi/pic/309.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY304', 2, '可用', '4层303', '双人房', 258, 232.2, '35', '2床', '停车场/洗漱/浴缸', '/chengzi/pic/310.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY401', 2, '可用', '4层401', '三人房', 288, 259.2, '40', '4床', '停车场/洗漱/公用电脑', '/chengzi/pic/311.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY402', 2, '可用', '4层402', '单人房', 168, 151.2, '25', '1床', '停车场/洗衣机/办公桌', '/chengzi/pic/312.png');

INSERT INTO 客房(客房编号, 酒店ID, 当天状态, 位置, 房型, 价格, 折扣价, 平方数, 床位, 配套, 图片) VALUES ('XY403', 2, '可用', '4层403', '主题房', 328, 295.2, '65', '6床', '停车场/洗漱/浴缸/带自助餐', '/chengzi/pic/313.png');

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (1, 1, 'FL402', '2022-07-01 00:00:00', '2022-07-02 00:00:00', 288, '完成', '很好', 80);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (2, 2, 'FL403', '2022-07-02 00:00:00', '2022-07-03 00:00:00', 168, '完成', '一般', 60);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (3, 3, 'FL501', '2022-07-03 00:00:00', '2022-07-04 00:00:00', 258, '完成', '非常好', 90);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (4, 4, 'FL502', '2022-07-04 00:00:00', '2022-07-05 00:00:00', 288, '完成', '很好', 80);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (5, 5, 'FL503', '2022-07-05 00:00:00', '2022-07-06 00:00:00', 168, '完成', '一般', 60);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (6, 6, 'XY301', '2022-07-06 00:00:00', '2022-07-07 00:00:00', 258, '完成', '非常好', 90);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (7, 7, 'XY302', '2022-07-07 00:00:00', '2022-07-08 00:00:00', 288, '完成', '很好', 80);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (8, 8, 'XY303', '2022-07-08 00:00:00', '2022-07-09 00:00:00', 168, '完成', '一般', 60);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (9, 9, 'XY304', '2022-07-09 00:00:00', '2022-07-10 00:00:00', 258, '完成', '非常好', 90);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (10, 10, 'XY401', '2022-07-10 00:00:00', '2022-07-11 00:00:00', 288, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (11, 3, 'FL501', '2022-07-11 00:00:00', '2022-07-12 00:00:00', 258, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (12, 4, 'FL502', '2022-07-12 00:00:00', '2022-07-13 00:00:00', 288, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (13, 5, 'FL503', '2022-07-13 00:00:00', '2022-07-14 00:00:00', 168, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (14, 6, 'XY301', '2022-07-14 00:00:00', '2022-07-15 00:00:00', 258, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (15, 7, 'XY302', '2022-07-15 00:00:00', '2022-07-16 00:00:00', 288, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (16, 3, 'XY303', '2022-07-16 00:00:00', '2022-07-17 00:00:00', 168, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (17, 4, 'XY304', '2022-07-17 00:00:00', '2022-07-18 00:00:00', 258, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (18, 5, 'FL501', '2022-07-18 00:00:00', '2022-07-19 00:00:00', 258, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (19, 6, 'FL502', '2022-07-19 00:00:00', '2022-07-20 00:00:00', 288, '预定', '', NULL);

INSERT INTO 订单(ID, 旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (20, 7, 'FL503', '2022-07-20 00:00:00', '2022-07-21 00:00:00', 168, '预定', '', NULL);

INSERT INTO 订单(旅客ID, 客房编号, 开始时间, 结束时间, 费用, 订单状态, 评价, 分数) VALUES (8, 'XY301', '2022-07-04 00:00:00', '2022-07-11 00:00:00', 258, '预定', '', NULL);

修改

INSERT INTO 旅客(姓名, 性别, 身份证, 等级, 手机号码,账号,密码) VALUES ('张飞', '男', '441224188807080016', '普通', '18027368620','1681cc','661254212');

旅客随即办理了VIP,数据更新

update 旅客 set 等级='VIP' where 姓名='张飞';

数据查询

查询有多少间客房以及平均价格

select count(*),avg(价格) from 客房

显示所有旅客信息,尽管没下过单,一样显示

select * from 旅客 left join 订单 on 订单.旅客id=旅客.id

显示订购过的客房的客房详情

Select * from 客房 where 客房编号 in (select 客房编号 from 订单);

 

酒 店 管 理 系 统 一、背景说明 目前大多数酒店提供的服务多种多样,规模大小也各不相同,但稍具规模的酒店必含下面三类服务:饮食、住宿和娱乐。由于我们对酒店行业没有具体的接触和实质性的了解。此次数据库设计只能在一些收集到的基本材料与个人直观认识的基础上,简单模仿中等规模的酒店设计管理系统,并将其抽象成一个由三部门组成、实现三大服务的系统。 二、部门的划分 饮食部门   它是酒店基本部门之一。它提供服务的特点是实时性强、持续时间短,强调效率。例如,顾客人数、顾客所用的菜及其它饮料等种类繁多,数量不等;后勤各种活动如采购等频繁发生。通过分析可发现,用人工完成此类操作比计算机更具实效与时效,且此类信息也没有长时间保留的必要,因此这些信息没有必要采用数据库管理。对于饮食部门,需要较长时间保留的信息主要是财务信息,一方面便于期末汇总,另一方面便于向上级报告。   在规模较大的酒店餐饮服务部分,餐厅可分成几个等级或几个小部门,然后各自形成小系统,本系统为了简单起见,把饮食部门作为一个子系统,不再细分。 住宿管理部门   它也是酒店基本部门之一。住宿管理部门的主要职责有:A.给个房间布置各种设备、分类、编号、制定收费标准、分配服务人员。B.登记旅客信息,确认其身份,登记其入住、退房时间。C.统计各类房间的客满程度。D.对本部门的财务流动进行登记处理。以上信息处理可以通过计算机完成,其他不便于计算机操作的在此没有列出。 娱乐管理部门   娱乐是酒店非主流服务,它的存在除了赢利,更多的是为了吸引顾客食宿。娱乐部门的特点与饮食部门很相似,不便于使用计算机进行操作。可以用计算机完成并且有必要用计算机完成的有:A.制定收费标准,分配负责人.B.收入支出财务处理:编号、财务来源去处的摘要、数量、单价、数额、结余、经手人等。这些信息都需要长时间保留并上报。 经理部门 经理部门的功能虽然不是面向顾客、不是酒店的服务项之一,但它的存在却是必不可少的。它的主要职责有:A.管理员工。给员工编号,登记其基本信息;根据员工的平时表现及工龄确定工资;此外,还要给员工分配工作部门及职务等等。B.划分部门。给个部门编号、命名、确定其职责范围、任命部门经理、分配员工。C.对本部门的财务进行核算(支付工资等)。D.期末对酒店的收益情况进行核算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值