【安博培训笔记】Oracle宾馆管理系统(三)
te table hotel_t_Predestine(--(预订信息表)
--列名 描述 数据类型(精度范围) 空/非空 约束条件
predid CHAR(16) primary key not null,-- 非空 主键
roomid VARCHAR2(10) not null,-- 非空
whenpred DATE not null,-- 非空
whopred VARCHAR2(20) not null,-- 非空
phone VARCHAR2(20) not null,-- 非空
arrivetime DATE not null,-- 非空
leavetime DATE not null,-- 非空
trueprice NUMBER(12,2) not null,
state NUMBER default 0 check(state in (0,1,2)) not null-- 取值范围为0、1和2,0表示有效,1表示入住,2表示失效,默认为0*/
);
/*4. 入住管理模块
入住管理主要包括安排客人入住到空闲状态的房间、登记入住单信息,查询在店客人信息,以及客史查询(查询以前在本宾馆住宿过的客人信息),同时也需要避免和其他客人的预订信息冲突,例如入住的客人预计要等到10号退房,而其他客人已经预订了9号的这个房间,这种情况也是不允许的;
表名 hotel_t_Lodge(入住信息表)
列名 描述 数据类型(精度范围) 空/非空 约束条件
lodgeid 入住单号 CHAR(16) 非空 主键
roomid 房号 VARCHAR2(10) 非空 外键
guestname 客人姓名 VARCHAR2(20) 非空
guestsex 性别 CHAR(1) 非空 “男”或“女”
cardtype 证件类别 VARCHAR2(20) 空
cardnumber 证件号码 VARCHAR2(30) 空
birthday 出生日期 DATE 空
guestaddress 地址 VARCHAR2(50) 空
phone 联系方式 VARCHAR2(20) 空
arrivetime 入住时间 DATE 非空
leavetime 预离或退房时间 DATE 非空
trueprice 房价 NUMBER(12,2) 非空
payinadvance 押金 NUMBER(12,2) 空 默认为0
predid 预订单号 CHAR(16) 空
serverman 接待人员 VARCHAR2(20) 空*/
create table hotel_t_Lodge(--(入住信息表)
--列名 描述 数据类型(精度范围) 空/非空 约束条件
lodgeid CHAR(16) primary key not null,-- 非空 主键
roomid VARCHAR2(10) not null references hotel_t_Room(Roomid),-- 非空 外键
guestname VARCHAR2(20) not null,-- 非空
guestsex CHAR(1) default 0 check(guestsex in (0,1)) not null,-- 非空 “男”或“女”
cardtype VARCHAR2(20),-- 空
cardnumber VARCHAR2(30),-- 空
birthday DATE,-- 空
guestaddress VARCHAR2(50),-- 空
phone VARCHAR2(20),-- 空
arrivetime DATE not null,-- 非空
leavetime DATE,-- 非空
trueprice NUMBER(12,2),-- 非空
payinadvance NUMBER(12,2) default 0,-- 空 默认为0
predid CHAR(16),-- 空
serverman VARCHAR2(20)-- 空
);
/*5. 消费管理模块
消费管理主要包括登记客人的消费信息和查询消费信息,消费信息主要包括客人在宾馆的用餐费和电话费等;
表名 hotel_t_Consume(消费信息表)
列名 描述 数据类型(精度范围) 空/非空 约束条件
consid 消费编号 NUMBER 非空 主键(自增)
consname 消费项目 VARCHAR2(20) 非空
consmoney 消费金额 NUMBER(12,2) 非空
constime 消费时间 DATE
lodgeid 入住单号 CHAR(16) 非空 外键*/
create table hotel_t_Consume(--(消费信息表)
--列名 描述 数据类型(精度范围) 空/非空 约束条件
consid NUMBER primary key not null,-- 非空 主键(自增)
consname VARCHAR2(20) not null,-- 非空
consmoney NUMBER(12,2) not null,-- 非空
constime DATE,
lodgeid CHAR(16) not null references hotel_t_Lodge(lodgeid)-- 非空 外键
);
create sequence seq_hotel_t_Consume;
create or replace trigger tir_hotel_Consume
before insert or update on hotel_t_Consume for each row
begin
select seq_hotel_t_Consume.nextval
into :new.consid from dual;
end;
6. 退房结算管理
退房结算管理主要指客人在退房时,收银员计算客人在宾馆的所有费用,包括住宿费和消费管理中的餐费和电话费等,然后将这些费用的和与客人入住时交纳的押金进行对比,最后多退少补,完成退房结算手续。退房手续办完后,房间就变成了空闲房,其他客人可以入住了。
上机推荐步骤:
1. 用户管理:
1) 建立相关的数据表及其约束,由于数据量都不大不需要建立所有
Create table hotel_t_User(
userid number primary key not null,--自增
username varchar2(20) not null,
userpassword varchar2(20) not null,
truename varchar2(20) not null
);
create sequence seq_hotel_t_User;
create or replace trigger tir_hotel_t_User
before insert or update on hotel_t_User for each row
begin
select seq_hotel_t_User.nextval
into :new.userid from dual;
end;
insert into hotel_t_User(username,userpassword,truename)
values('shihua','shihua','shihua');
2) 编写一个存储过程,用来用户登录时验证用户
存储过程验证用户登陆信息
select count(*) from hotel_t_User where userid =&userid and username