【安博培训笔记】Oracle宾馆管理系统(三)

2014-11-24 16:49:35 · 作者: · 浏览: 2
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