A_username A_password
湖南科技大学本科生毕业设计(论文)
Varchar2(50) 用户名 非空 Varchar2(50) 密码 非空
非空
非空
(2)房间表:
房间表主要是关于房间的基本信息,主要用来对房间信息的管理,查看房间情况等,主要信息有:房间号,房间编号,房间名,备注,类型名,价格,房间状态号等,如表4.2所示。
表4.2 房间表(T_room)
字段名 R_ID R_no R_name R_statement R_name
字段说明 房间号 房间编号 房间名 备注 类型名
数据类型 number Varchar2(50)
Varchar2(50) Varchar2(255) Varchar2(50)
字段约束 主键、非空 非空
非空
值只能是“单人间,双人间,商务间,豪华套房,总统套房”中的任意一个, 非空
外键,非空
备注 非空 非空 非空 非空
R_price R_s_id
价格
房间状态号
Number(8,2) Number
非空 非空
(3)房间状态表:
房间状态表主要是为了区别房间的不同状态,如空闲、占用、维修等,主要信息有:
表4.3 房间状态表(T_roomstate)
字段名 S_id
S_Statename
字段说明 状态号 状态名
数据类型 Number Varchar2(50)
字段约束 主键、非空 值只能是“预定,空闲,维修,入住”中的任意一个
备注 非空 非空
状态号,状态名称等。如表4.3所示。
(4)员工表:
员工表主要是保存员工的基本信息,方便对员工信息的操作,主要信息有:员工号,员工编号,员工名,员工的薪水,性别,电话,年龄,身份证号,地址,email,职务号等。如表4.4所示。
表4.4 员工表(T_worker)
字段名 W_mid W_no
字段说明 员工号 员工编号
字段类型 Number Varchar2(20)
字段约束 非空 非空
备注 非空 非空
- 12 -
W_name W_sal W_sex W_tel W_age W_idc W_address W_email W_WT_id
湖南科技大学本科生毕业设计(论文)
Varchar2(20) 员工名 非空 Varchar2(20) 员工的薪水 非空 Varchar2(10) 性别 值只能是“男,女”
中的一个
Number 员工电话 非空 Number 员工年龄 非空
员工身份证号 Varchar2(30) 非空
Varchar2(50) 员工地址
Varchar2(50) 员工email
Varchar2(20) 员工职务号 外键,非空
非空
非空 非空 非空 非空 非空 非空 非空 非空
(5)工作类型表:
工作类型表主要是为了方便对不同工种的分类,通过工作类型对员工进行查询等,
表4.5 工作类型表(T_workertype)
字段名 WT_id WT_no WT_name
字段说明 工作类型号 工作编号 工作名
字段类型 Number Varchar2(50) Varchar2(50)
字段约束 主键,非空 非空 值只能是“主管,前台,迎宾,清洁工,服务员,保安”中的一个
备注 非空 非空 非空
主要信息有:工作类型号,工作编号,工作名等。如表4.5所示。
(6)房间账单表:
房间账单表主要是记录顾客的住房消费信息,主要用于对住房消费情况的查询,主要信息有:账单号,账单流水号,顾客编号,房间编号,价格,时间,押金,开单时间,买单时间,完结状态等。如表4.6所示。
表4.6 房间账单表(T_rbill)
字段名 BR_id BR_no BR_C_No BR_ R_no BR_price BR_InTime BR_cash BR_otime BR_ctime BR_state
字段说明 账单号 账单流水号 顾客编号 房间编号 价格 时间 押金 开单时间 买单时间 完结状态
字段类型 Number Varchar2(50) Varchar2(50) Varchar2(50) Number(8,2) Integer
Number(8,2) Date Date Integer
字段约束 主键,非空 非空
外键,非空 外键,非空 非空 非空 默认0 非空 非空
非空 0代表未完结,1代表完结
备注 非空 非空 非空 非空 非空 天数 非空 非空
(7)顾客表:
顾客表主要用于记录顾客的基本信息,主要信息有:顾客号,顾客编号,顾客名,
- 13 -
湖南科技大学本科生毕业设计(论文)
顾客电话,年龄,身份证号,地址,email,性别,是否VIP等。如表4.7所示。
表4.7 顾客表(T_customer)
字段名 C_id C_No C_name C_tel C_age C_idc C_address C_email C_sex C_Type
字段说明 顾客号 顾客编号 顾客名 顾客电话 顾客年龄 顾客身份证号 顾客地址 顾客email 性别 是否VIP
数据类型 Number Varchar(50) Varchar(50) Number Number Varchar2(50) Varchar2(50) Varchar2(50) Varchar2(10) _
字段约束 主键,非空 非空 非空 非空 非空
值只能是“男,女”中的一个 非空、 vip 和 普通用户
备注 非空 非空 非空 非空 非空 非空 非空
(8)用餐账单表:
用餐账单表主要是记录顾客的用餐消费信息,主要用于对用餐消费情况的查询,主要信息有:菜单项编号,账单流水号,顾客编号,菜单编号,数量,价格,开单时间,买单时间,完结状态等。如表4.8所示。
表4.8 用餐账单表(T_mBill)
字段名 BM_id BM_no BR_C_No BM_ M_no BM_number BM_price BM_otime BM_ctime BM_state
字段说明 菜单项编号 账单流水号 顾客编号 菜单编号 数量 价格 开单时间 买单时间 完结状态
字段类型 Number Varchar2(50) Number Number Integer
Number(8,2) Date Date Integer
字段约束 主键,非空 非空
外键,非空 外键,非空 非空 非空 非空
非空 0代表未完结,1代表完结
备注 非空 非空 非空 非空 非空 非空 非空
(9)房间占用信息表:
房间占用信息表主要用于记录房间被占用情况,主要信息有:房间占用号,入住时间,退房时间,房间编号,房间状态,预定入住状态等。如表4.9所示。
表4.9 房间占用信息表(T_roomoccupy)
字段名 RO_id
字段说明 房间占用号
数据类型 Number
字段约束 主键、非空
备注 非空
- 14 -
RO_stime RO_etime RO_r_no RO_s_no ro_state
湖南科技大学本科生毕业设计(论文)
Date 入住时间 非空 Date 退房时间
Varchar2(50) 外键、非空 房间编号
Varchar2(50) 外键、非空 房间状态
预定、入住状态 Integer 非空 0代表预定,1代表入住
非空
非空 非空
(10)菜单表:
菜单表主要是关于菜的一些基本信息,主要用来对菜单的基本操作,主要信息有:
表4.10 菜单表(T_menu)
字段名 M_id M_no M_name M_price M_desc
字段说明 菜单项编号 菜编号 菜名 价格 简介
字段类型 Number Varchar2(50) Varchar2(100) Number(8,2) Vachar2(255)
字段约束 主键,非空 非空 非空 非空
备注 非空 非空 非空 非空
菜单项编号,菜编号,菜名,价格,简介等。如表4.10所示。
4.2.2在Java中使用Oracle数据库
系统中运用JDBC实现对数据库的连接操作。通过如下方法的调用可获得与数据库的连接Connection。其中DRV,URL,USER和PWD保存在config.properties文件中,方便修改,需作修改时,只需要修改配置文件,而不用修改代码。LoadConfig类用于读取config.properties文件中的数据。以下是config.properties中的数据:
DRV=oracle.jdbc.driver.OracleDriver
URL=jdbc:oracle:thin:@localhost:1521:orcl USER=scott PWD=tiger
public Connection getConn(){ Connection conn = null; try { Class.forName(config.get(\)); conn = DriverManager.getConnection(config.get(\),config.get(\),config.get(\WD\)); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } 如下是对数据库的数据进行增删改查操作的一个示例: - 15 -
湖南科技大学本科生毕业设计(论文)
Connection conn = db.getConn();//获得连接 PreparedStatement pstmt = null; String sql = \values(seq_T_admin_test.nextval,?,?,?)\
try { pstmt = conn.prepareStatement(sql);//创建句柄 pstmt.setInt(1, admin.getaGrade()); pstmt.setString(2, admin.getaUserName()); pstmt.setString(3, admin.getaPassword()); int len = pstmt.executeUpdate();//查询时为executeQuery()方法,返回ResultSet结果集
if(len > 0){ bool = true; } } catch (SQLException e) { e.printStackTrace(); } finally{ db.free(conn, pstmt); }
在对数据库中的数据进行操作的过程中,为了保证数据完整性,有时需要用到事务,如下是事务应用的一个示例:
PreparedStatement pstmt = null;
PreparedStatement pstmt2 = null; String sql = \t_roomoccupy where ro_etime<=to_date(?,'yyyy-mm-dd') and ro_state=0)\; String sql2 = \from t_roomoccupy where ro_etime<=to_date(?,'yyyy-mm-dd') and ro_state=0\; try { conn = db.getConn(); conn.setAutoCommit(false); pstmt = conn.prepareStatement(sql); pstmt2 = conn.prepareStatement(sql2); pstmt.setString(1, date); pstmt2.setString(1, date); int len1 = pstmt.executeUpdate(); int len2 = pstmt2.executeUpdate(); if(len1>0 && len2 >0){ conn.commit(); bool = true; }else{ conn.rollback(); }
4.3 系统登录界面
系统的登录界面如下图4.1 登录界面图所示:
- 16 -