基于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 ATM取款机系统的设计和实现

基于JavaSwing的经典坦克大战游戏设计实现

基于JavaSwing+mysql的图书管理系统设计和实现

基于JavaSwing+mysql的学生社团管理系统设计和实现

打卡JavaSwing项目更新 5 / 100篇

大家可以点赞、收藏、关注、评论我啦 

以上是关于基于JavaSwing+Mysql的酒店管理系统设计和实现的主要内容,如果未能解决你的问题,请参考以下文章

基于JavaSwing+Mysql的酒店管理系统设计和实现

基于JavaSwing+mysql的酒店管理系统设计和实现

基于JavaSwing+Mysql点餐系统设计和实现

基于JavaSwing+Mysql点餐系统设计和实现

基于JavaSwing+mysql的图书管理系统设计和实现

基于JavaSwing+mysql的图书管理系统设计和实现