张春 发表于 2024-12-4 01:17:30

基于SQL数据库的旅店管理系统

一、数据库设计
1.需求分析
客房的预定:可以通过网络进行预定,预定修改,取消预订。
客房管理:预定管理、客房查询、设置房态、开房、换房、续住、退房等管理。
员工管理: 员工修改信息、职员调配。
账务管理:主要是处理旅店的日常的账务报表,收入报表(前台收入明细表、现付收入明细表)、消费报表等。
顾客管理:网络游客入住评价,记录顾客身份信息。
2.数据库概念结构设计
(1)局部ER图
游客信息:
https://i-blog.csdnimg.cn/direct/3be78ced1d8e46dbb421a1ef997eb92d.png
客房信息:
https://i-blog.csdnimg.cn/direct/67b168f2c9c447589bb8e1f7d0a8e045.png
员工信息:
https://i-blog.csdnimg.cn/direct/8d4b09d7fd5f4d8ba31bc613c39d9cd0.png
经理信息:
https://i-blog.csdnimg.cn/direct/6c9e44bd3a2e4fb5b7a6021b44a676c6.png
餐厅信息:
https://i-blog.csdnimg.cn/direct/c74d96139761403a8608bb3d73993c04.png
(2)整体ER图:

3.数据库逻辑结构设计
(1)关系模式
游客信息(游客姓名,性别,身份证号,房间号,餐厅名字);
客房信息(房间号,房间范例,房价,员工号);
餐厅信息(餐厅名字,餐厅电话,经理姓名);
经理(经理姓名,经理电话);
员工(员工号,员工姓名,经理姓名);
(2)关系模式的规范化
游客信息的主码是游客身份证号,其他非主属性不完全依赖于身份证号,并且不存在传递函数依赖,因此游客信息不属于三范式
客房信息的主码是房间号,其他非主属性不完全依赖于房间号,并且不存在传递函数依赖,因此客房信息不属于三范式
餐厅信息的主码是餐厅名字,其他非主属性不完全依赖于餐厅名字,并且不存在传递函数依赖,因此餐厅信息不属于三范式
经理信息的主码是经理姓名,其他非主属性都完全依赖于经理姓名,并且存在传递函数依赖,因此经理信息属于三范式
员工信息的主码是游客员工号,其他非主属性不完全依赖于员工号,并且不存在传递函数依赖,因此员工信息不属于三范式

(3)数据库中表结构
游客信息表
列名
数据范例
能否为空
主键
外键
分析
Lkname
Varchar(20)

N
N
游客姓名
Lksex
 Varchar(5)

N
N
游客性别
Lkid
char(20)

Y
N
身份证号
Ctname
Varchar(20)

N
N
餐厅名字

房间信息表
列名
数据范例
能否为空
主键
外键
分析
Roomid
char(20)

Y
N
旅店房间号
Roomlx
Varchar(16)

N
N
房间范例
Roomfj
Varchar(16)

N
N
房价
Ygid
Varchar(16)

N
N
员工号

员工表
列名
数据范例
能否为空
主键
外键
分析
Ygname
Varchar(20)

N
N
员工姓名
Ygid
char(5)

Y
N
员工号
Jlname
Varchar(20)

N
N
经理姓名

餐厅信息表
列名
数据范例
能否为空
主键
外键
分析
Ctname
Varchar(20)

Y
N
餐厅名字
Ctph
 Varchar(5)

N
N
餐厅电话
Jlname
Varchar(20)

N
N
经理姓名

经理信息表
列名
数据范例
能否为空
主键
外键
分析
  Jlname
char(20)

Y
N
经理姓名
Jlph
 Varchar(20)

N
N
经理电话

(4)数据库中的视图
视图一:  名称  功能 
定义(代码)游客信息表
CREATE VIEW CustomerView (
    游客姓名,
    游客性别, 
身份证号
餐厅名字
)
AS
SELECT Lkname, Lksex, Lkid,Ctname
FROM Customer
视图二:  名称  功能
定义(代码)
CREATE VIEW 房间信息 (
    房间号,
    房间范例,
    房间价格
    员工号
)
AS
SELECT RoomID, Roomlx,Roomfj,Ygid
FROM Room
三、系统操作分析及运行结果
1.创建数据库及表
(1)创建旅店管理系统数据库
代码:
create database jdglxt
go
https://i-blog.csdnimg.cn/direct/e232868befaa42b5bc392c5a2798dd1b.png
 
(2)客房信息表
create table kfxxb             
(roomid char(5),
 roomlx char(16) not null,
 roomfj varchar(16) not null,
 ygid varchar(16) not null,
primary key(roomid)
https://i-blog.csdnimg.cn/direct/38a89fd53dbb455da7969b75a1490cc6.png
(3)游客信息表
create table lkxxb                   
(lkname char(20) not null,
lksex char(5)not null,         
lkid char(20)not null,
 ctname varchar(20)not null,
primary key(lkid)
https://i-blog.csdnimg.cn/direct/3fc9fcb6d7bc445ebe7c0d4fb05108e5.png
(4)餐厅信息表
create table ctxxb
(ctname char(20),
ctph varchar(5),
jlname varchar(20)
primary key(ctname),
https://i-blog.csdnimg.cn/direct/172e969e17094a839375d7e4562f8c1b.png
(5)员工表
create table ygxxb
(ygid char(10),
ygname varchar(20),
jlname varchar(20)
primary key(ygid)
)
https://i-blog.csdnimg.cn/direct/5f1d69cf6c3d41348b9cd1550ae8b539.png
(6)经理信息表
create table jjxxb
(jlname char(20) primary key,
 Jlth varchar(20) not null)
https://i-blog.csdnimg.cn/direct/ca1df82f22564eb496482bc1207a07e0.png
2.数据添加
(1)--向客房信息表中插入数据
代码:
insert into kfxxb
values('2008','标间','90','020101'),
 ('2009','标间','90','020102'),
('2010','标间','90','020103'),
 ('3007','特价','70','020104'),
 ('3008','特价','70','020105'),
('3009','特价','80','020106'),
('3010','单人间','80','020107'),
('4001','单人间','80','020109'),
('4002','三人间','120','020110'),
('4003','三人间','120','020111')
(2)--向游客信息表中插入数据
代码:
insert into lkxxb
 values('张三','男','123456789012345678','好运来'),
 ('李四','男','012345678912345678','好运来'),
 ('王五','男','987654321012345678','好运来'),
 ('张强','男','951564621012345678','好运来'),
 ('陈七','女','654987721012345678','好运来'),
('马六','男','220125199902253645','好运来'),
 ('李红','女','987654321012347128','好运来'),
 ('张杰','男','220228419650325645','好运来'),
 ('陈军','男','568941723849268622','好运来') ,
 ('王久','女','025849613546820056','好运来')
(3)--向餐厅信息表中插入数据
代码:
insert into ctxxb
values('好运来','15356412471','秋山')
('好运一','15356412472','秋以')
('好运二','15356412473','秋和')
('好运三','15356412474','秋三')
('好运四','15356412475','秋山四')
('好运五','15356412476','秋五')
('好运六','15356412477','秋六')
('好运七','15356412478','秋七')
('好运八','15356412479','秋吧')
('好运九','15356412480','秋就')
(4)--向员工信息表中插入数据
代码:
insert into ygxxb
values('王向阳','010201','秋山'),
 ('张向荣','010202','秋山'),
 ('李乐','010203','秋山'),
 ('田达','010204','秋山'),
 ('周博 ','010205','秋山'),
('田家','010206','秋山'),
 ('伊大 ','010207','秋山'),
('周婷婷 ','010208','秋山'),
('陈眉丽','010209','秋山'),
 ('犹大冬 ','010210','秋山')
(5)--向经理信息表插入数据
代码:
insert into jjxxb
values('秋山','15489762450')
('秋以','15489762451')
('秋和','15489762452')
('秋三','15489762453')
('秋山四','15489762454')
('秋五','15489762455')
('秋六','15489762456')
('秋七','15489762457')
('秋吧','15489762458')
('秋就','15489762459')
3.数据修改
--修改客房信息表表中房间号2008的房价
(1)代码:
update kfxxb
set roomfj='100'
where roomid='2008'
--修改客房信息表中
update  kfxxb
set roomfj='150'
where roomid='4002'
(2)餐厅信息表
--修改餐厅信息表中好运来的电话字
update ctxxb
set ctph='19823480345'
where ctname='好运来'
(3)游客信息表
--修改游客信息表中张三的身份证号
update lkxxb
set lkid='220228474383978544'
where ikname='张三'
--修改游客信息表中李四的性别
update llxxb
set lkid='女'
where iknamee='李四'
(4)员工信息表
--修改员工信息表中王向阳的员工号
update ygxxb
set ygid='010220'
where ygname='王向阳'
--修改员工信息表中田家的员工号
update ygxxb
set ygid='010221'
where ygname='田家'
(5)经理信息表
--修改经理信息表中经理秋山电话
update jjxxb
set ctph='18674320384'
where jlname='秋山'
--修改经理信息表中经理秋五电话
update jjxxb
set ctph='18674320311'
where jlname='秋五'
4.数据删除
(1)游客信息表
--删除游客信息表中姓名为王五的信息
delete from lkxxb
where lkname='王五'
--删除游客信息表中陈七的身份信息
delete from lkxxb
where lkname='陈七'
(2)客房信息表
--删除客房信息表中编号2009的信息
delete from kfxxb
where kfid='2009'
--删除客房信息表中编号4000的信息
delete from kfxxb
where kfid='4000'
(3)员工信息表
--删除员工信息表中李乐的根本信息
delete from ygxxb
where ygname='李乐'
--删除员工信息表中伊大的根本信息
delete from ygxxb
where ygname='伊大'
(4)餐厅信息表
--删除餐厅信息表中好运五的根本信息
delete from ctxxb
where ctname='好运五'
--删除餐厅信息表中好运六的根本信息
delete from ctxxb
where ctname='好运六'
(5)经理信息表
--删除经理信息表中秋山四的根本信息
delete from jlxxb
where jlname ='秋山四'
--删除经理信息表中秋五的根本信息
delete from jlxxb
where jlname ='秋五'
5.数据查询
(1)查询游客信息表的所有信息(单表查询)
代码:select*from lkxxb
截图:
https://i-blog.csdnimg.cn/direct/3a77f8d52350494199d502ff383ea2a5.png
(2)查询张强的员工号(多表查询)
select ygid from lkxxb,ygxxb
where ygxxb.ygid=lkxxb.lkname and
ygxxb.ygid='张强'
https://i-blog.csdnimg.cn/direct/d2e70a270c7b419ab22138d5efbf90d1.png
(3)查询游客信息表中所有游客
select lkname from lkxxb
https://i-blog.csdnimg.cn/direct/5952f2890d9643e0b3dda4f6b49a11b0.png
(4)查询员工信息表中所有员工编号
select ygid,count(*) as amount from ygxxb
group by ygid
https://i-blog.csdnimg.cn/direct/68b983a646e5437a8226ce98c36bd476.png
(5)将所有员工编号按照降序分列(将查询结果排序)
代码:
select ygid from ygxxb
order by ygid desc
https://i-blog.csdnimg.cn/direct/9ffbc7d835984ed692858c18568d567a.png
(6)查询客房信息表(视图查询)
代码:
select*from kfxxb
https://i-blog.csdnimg.cn/direct/71d43a8e891e49c0a46ff25d07ee8209.png
(7)查询员排名最小的员工号
代码:
select min(ygid) from ygxxb
https://i-blog.csdnimg.cn/direct/c3d36d807c2440ea92e940467eb3aa8e.png
(8)查询男女人人数(分组查询)
代码:
select lksex,count(*) as 人数 from lkxxb
group by lksex   
https://i-blog.csdnimg.cn/direct/bebf18c7101f40dd9eb91da8058e47a9.png
(9)查询价格大于100的入住客房房间号和价格(单表查询)
代码:
select roomid,price
from kfxxb
where price>100
https://i-blog.csdnimg.cn/direct/fc94d8851eeb4bdb8041789960fbd95a.png
(10)查询所有房价小于100的房间号
select roomfj,roomid
from kfxxb
where roomfj<100
https://i-blog.csdnimg.cn/direct/7ff292c84dd14c508721fea5082ad825.png
 
create database jdglxt
go
--客房信息表
create table kfxxb            
    (roomid char(5) primary key,
    roomlx char(16) not null,
       roomfj varchar(16) not null,
       ygid varchar(16) not null
    )
--旅客信息表
create table lkxxb                  
    (lkname char(20) not null,
   lksex char(5)not null,         
   lkid char(20)not null,
   ctname varchar(20)not null,
    primary key(lkid)
)
   
--餐厅信息表
create table ctxxb
(ctname char(20),
ctph varchar(20),
jlname varchar(20),
primary key(ctname)

)


--员工表
create table ygxxb
(ygid char(10) primary key,
ygname varchar(20),
jlname char(20) )
--经理信息表
create table jjxxb
(jlname char(20) primary key,
Jlth varchar(20) not null
)
--插入数据
--向客房信息表中插入数据
insert into kfxxb
values('1010','标间','90','010101'),
('1011','标间','90','010102'),
('1012','标间','90','010103'),
('1013','特价','70','010104'),
('1014','特价','70','010105'),
('1015','特价','80','010106'),
('1016','单人间','80','010107'),
('1017','单人间','80','010109'),
('1018','三人间','120','010110'),
('1019','三人间','120','010111')

--3向旅客信息表中插入数据
insert into lkxxb
values('尚福乐','男','211322198509260317','好运来'),
('岳朋','女','211481198401154441','好运来'),
('赵晓强','男','987654321012345678','好运来'),
('杨思剑','女','522324197508045647','好运来'),
('柏朝林','男','510921591208435011','好运来'),
('李家发','男','52262619800410121X','好运来'),
('李科','女','522324197309155226','好运来'),
('钱齐高','男','433026196612172414','好运来'),
('李关福','女','522422610421281489','好运来') ,
('段小平','男','510226196602284031','好运来')

--7向餐厅信息表中插入数据
insert into ctxxb
values('好运来','15356412471','秋山')
--8向员工信息表中插入数据
insert into ygxxb
values('王阳','020201','秋山'),
('张荣','020202','秋山'),
('李向乐','020203','秋山'),
('王一达','020204','秋山'),
('周天博 ','020205','秋山'),
('田林','020206','秋山'),
('伊大金 ','020207','秋山'),
('周婷 ','020208','秋山'),
('陈丽','020209','秋山'),
('犹大冬 ','020210','秋山')

--9.向经理信息表插入数据
insert into jjxxb
values('秋叶','15187964521')

update kfxxb
set roomfj='100'
where roomid='2008'

updatekfxxb
set roomfj='150'
where roomid='4002'

update ctxxb
set ctph='19823480345'
where ctname='好运来'

update lkxxb
set lkid='220228474383978544'
where lkname='张三'

select*from lkxxb

select lkname from lkxxb

select ygid,count(*) as amount from ygxxb
group by ygid
select ygid from ygxxb
order by ygid desc

select*from kfxxb
select min(ygid) from ygxxb

select lksex,count(*) as 人数 from lkxxb
group by lksex

select roomid,roomfj
from kfxxb
where roomfj>100

select roomfj,roomid
from kfxxb
where roomfj<100

select ygname ygid from ygxxb
order by ygid desc

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基于SQL数据库的旅店管理系统