基于JavaSwing+Mysql的酒店管理系统设计和实现
Posted java李阳勇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于JavaSwing+Mysql的酒店管理系统设计和实现相关的知识,希望对你有一定的参考价值。
前言:
本项目是使用Java swing开发,可实现酒店管理系统登陆/重置、酒店信息查询、入驻管理和退房管理、收银管理以及修改密码等几大模块。界面设计比较简介、适合作为Java课设设计以及学习技术使用。
摘要:
在信息高度发达的今天, 酒店业务涉及的各个工作环节已不再仅仅是传统 的住宿、 结算业务,而是更广、更全面的服务性行业代表。酒店宾馆作为一个服务性行业,从客 房的营销即客人的预定开始, 到入住登记直到最后退房结账, 整个过程应该能够体现以 宾客为中心,提供快捷方便服务,给宾客感受一种顾客至上的享受,提高管理水平,简 化各种复杂操作, 在最短时间内完成酒店业务规范操作, 这样才能令旅客舒适难忘。 因 此,采用全新的计算机管理系统, 将成为提高酒店的管理效率, 改善服务水准的手段之 一。系统从满足客户的需求角度出发, 实现了酒店管理的基本流程。 系统的主要功能包 登录、重置、查看 设置等等。用户入住酒店的时候所要等待的时间就会大大的减少, 操作员能够很方便的 对用户信息的登记和对房间状态的的管理, 从而实现了酒店管理系统高效、 准确的特点。
主要模块:
用户登录、重置
查询编辑《查询客房信息、查询客房状态、查询编辑客房信息、添加房客信息》
入退房管理《入住管理、退房管理》
退定房管理《预定管理、退订管理》
收银管理、修改密码
功能截图:
登录
查询编辑:
查询房客信息
查询房客信息列表数据、也可以根据房间号、身份证以及姓名等信息进行模糊查询
查询房客状态
查询编辑房客信息
可以对房客信息进行查询和编辑管理
添加房客信息
入退房管理
入住管理:
退房管理:
退订房管理
预定管理:
退订管理:
收银管理
入账管理:
出账管理:
修改密码
部分关键代码:
用户登录:
private void loginActionPerformed(java.awt.event.ActionEvent evt) {
String userName = this.userName.getText();
String password = new String(this.password.getPassword());
if ("".equals(userName) || userName == null) {
JOptionPane.showMessageDialog(null, "用户名不能为空");
return;
}
if ("".equals(password) || password == null) {
JOptionPane.showMessageDialog(null, "密码不能为空");
return;
}
User user = new User();
user.setUserName(userName);
user.setPassword(password);
Connection conn = null;
try {
conn = dbUtil.getCon();
User us = userDao.login(conn, user);
if (us == null) {
JOptionPane.showMessageDialog(null, "用户名或密码错误");
} else {
this.dispose();
new main().setVisible(true);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
dbUtil.closeCon(conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
添加房客信息:
//实例化对象
DbUtil dbUtil = new DbUtil();
RuZhuDao householdDao = new RuZhuDao();
KeFangDao guestRoomDao = new KeFangDao();
ShouYinDao cashierDao = new ShouYinDao();
//创建窗口
public addHousehold() {
initComponents();
this.setLocation(200, 50);
}
//控件
private void initComponents() {
jLabel1 = new JLabel();
jLabel2 = new JLabel();
jLabel3 = new JLabel();
jLabel4 = new JLabel();
name = new JTextField();
idNum = new JTextField();
money = new JTextField();
roomNum = new JTextField();
jButton1 = new JButton();
jButton2 = new JButton();
setClosable(true);
setIconifiable(true);
setMaximizable(true);
setTitle("添加住户");
jLabel1.setText("姓名");
jLabel2.setText("身份证");
jLabel3.setText("房间号");
jLabel4.setText("收费");
jButton1.setText("添加");
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
private void jButton1ActionPerformed(ActionEvent evt) {
//获取输入框的值
String name = this.name.getText();//姓名
String idNum = this.idNum.getText();//身份证号
String roomNum = this.roomNum.getText();//房间号
String money = this.money.getText();//费用
//验证值是否为空
if("".equals(name) || name == null){
JOptionPane.showMessageDialog(null, "请输入姓名");
return;
}
if("".equals(idNum) || idNum == null){
JOptionPane.showMessageDialog(null, "请输入身份证号码");
return;
}
if("".equals(roomNum) || roomNum == null){
JOptionPane.showMessageDialog(null, "请输入房间号");
return;
}
if("".equals(money) || money == null){
JOptionPane.showMessageDialog(null, "请输入入住费用");
}
//封装对象
ZhuHu household = new ZhuHu();
household.setName(name);
household.setIdNum(idNum);
household.setRoomNum(Integer.parseInt(roomNum));
household.setMoney(Integer.parseInt(money));
household.setState("入住中");
Connection con = null;
try {
con = dbUtil.getCon();
KeFang gr = new KeFang();
//判断房间是否存在或者是否已有人入住
gr = guestRoomDao.findByRoomNum(con, Integer.parseInt(roomNum));
if(gr == null){
JOptionPane.showMessageDialog(null, "未查询到客房信息");
return;
}
if(gr.getState() == 1){
JOptionPane.showMessageDialog(null, "房间占用,请重新选择房间");
return;
}
int result = householdDao.addHousehold(con, household);
if(result != 0){
JOptionPane.showMessageDialog(null, "添加成功");
reset();
//更新房间状态未已入住
KeFang guestRoom = new KeFang();
guestRoom.setNum(Integer.parseInt(roomNum));
guestRoom.setState(1);
guestRoomDao.updateState(con, guestRoom);
//添加收银信息
ShouYin cashier = new ShouYin();
cashier.setType("收入");
cashier.setMoney(money);
cashier.setRemarks("用户"+name+"入住收入金额"+money);
cashierDao.addCashier(con, cashier);
}else{
JOptionPane.showMessageDialog(null, "添加失败");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "添加失败");
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);//关闭数据库连接
} catch (Exception e) {
e.printStackTrace();
}
}
}
数据库设计:
用户表:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`userName` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录名' ,
`password` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登陆密码' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=2
ROW_FORMAT=DYNAMIC
;
退订表:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '预订人姓名' ,
`phone` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '预订人电话' ,
`checkTime` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '预订入住时间' ,
`creditTime` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单创建时间' ,
`state` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '预订状态' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=4
ROW_FORMAT=DYNAMIC
;
收银表:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型' ,
`money` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '金额' ,
`remarks` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注' ,
`time` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建时间' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=8
ROW_FORMAT=DYNAMIC
;
房间表:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '住户姓名' ,
`idNum` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证号码' ,
`checkTime` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '入住时间' ,
`roomNum` int(11) NULL DEFAULT NULL COMMENT '入住房号' ,
`money` int(30) NULL DEFAULT NULL COMMENT '收费' ,
`state` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '入住状态' ,
`outTime` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '退房时间' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=26
ROW_FORMAT=DYNAMIC
;
备注:项目来于网络、作者整理优化测试编写文档、若有侵权联系删除
总结:
通过这次课程设计。我学到了许多令我受益匪浅的知识。感觉java的界面设计和 mfc差不多。只是java没有可视化的界面做起来太累了。其他主要是类和对象的问题。实现起来还是挺简单的。综合了根据中小型星级酒店的实际情况的特点, 虽然用户界面比较一般,但操作使用还是方便。符合酒店管理的基本流程。但由于时间仓促,一些不足之处还很多、比如美化和部分功能设计的都比较简单、但作为学生学习参考以及课程设计还是不错的选择。
完整源码下载地址
JavaSwing系列项目推荐:
打卡JavaSwing项目更新 5 / 100篇
大家可以点赞、收藏、关注、评论我啦
以上是关于基于JavaSwing+Mysql的酒店管理系统设计和实现的主要内容,如果未能解决你的问题,请参考以下文章