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

前言:

        项目是使用Java swing开发,可实现基础数据维护用户登录、系统首页酒店信息管理、主要模块是开房管理、退房管理、房间信息管理、顾客信息管理等功能。界面设计比较简介、适合作为Java课设设计以及学习技术使用。获取源码

引言

       在信息高度发达的今天, 酒店业务涉及的各个工作环节已不再仅仅是传统 的住宿、 结算业务,而是更广、更全面的服务性行业代表。酒店宾馆作为一个服务性行业,从客 房的营销即客人的预定开始, 到入住登记直到最后退房结账, 整个过程应该能够体现以 宾客为中心,提供快捷方便服务,给宾客感受一种顾客至上的享受,提高管理水平,简 化各种复杂操作, 在最短时间内完成酒店业务规范操作, 这样才能令旅客舒适难忘。 因 此,采用全新的计算机管理系统, 将成为提高酒店的管理效率, 改善服务水准的手段之 一。系统从满足客户的需求角度出发, 实现了酒店管理的基本流程。 系统的主要功能包 登录、重置、查看 设置等等。用户入住酒店的时候所要等待的时间就会大大的减少, 操作员能够很方便的 对用户信息的登记和对房间状态的的管理, 从而实现了酒店管理系统高效、 准确的特点。

主要技术和工具:

eclipse+JDK1..8+Navicat +swing +mysql

功能截图:

登录管理:

用户输入账号密码以及验证码进行登录验证

酒店管理信息:

开房:

用户录入开房相关信息、 提交的时候后台会验证数据的数据是否正确、房间是否被占用等情况

退房:

输入身份证信息和房间号进行验证正确后完成退房

房间信息:

房间信息管理管理页面可以查看所有的房间信息、房间标准以及状态等、也可以更具房间类型来查询房间信息。

顾客信息:

关键代码:

 主入口:

public class LoginFrame extends JFrame {
	private JPanel contentPane;
	private JTextField textField;
	private JPasswordField passwordField;
	private JTextField textField_1;
	private CaptchaUtils cpt;
	private BufferedImage image1;
	private String code;
	private JLabel label_6;
	//创建deskservice对象
	private DeskService deskService=new DeskServiceImpl();

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					LoginFrame frame = new LoginFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	public LoginFrame() {
		setBackground(Color.GREEN);
		setTitle("KING'S  LANDING");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(500, 250, 624, 524);

		contentPane = new JPanel(){
	   		 protected void paintComponent(Graphics g){
				 super.paintComponent(g);
				 ImageIcon images=new ImageIcon("images/624524.jpg");
				 g.drawImage(images.getImage(),0,0,null);
			 }
		 };	
		
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		JLabel label_1 = new JLabel("\u7528\u6237\u540D");
		label_1.setBackground(Color.WHITE);
		label_1.setForeground(Color.WHITE);
		label_1.setFont(new Font("微软雅黑", Font.PLAIN, 15));
		label_1.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/yonghu.png")));
		textField = new JTextField();
		textField.setBackground(Color.WHITE);
		textField.setColumns(10);
	        label_6=new JLabel();
	        label_6.addMouseListener(new MouseAdapter() {
	        	@Override
	        	public void mouseClicked(MouseEvent e) {
	        		cpt=new CaptchaUtils();
	    			//获取画布
	    			image1=cpt.getBuffImg();
	    			//获取随机数
	    			 code=cpt.getCode();
	    			ImageIcon icon=new ImageIcon(image1,"jpeg");
	    			label_6.setIcon(icon);
	        	}
	        });

			/**
			 * 验证码
			 */
			cpt=new CaptchaUtils();
			//获取画布
			image1=cpt.getBuffImg();
			//获取随机数
			 code=cpt.getCode();
			ImageIcon icon=new ImageIcon(image1,"jpeg");
			label_6.setIcon(icon);
		
		JLabel label_2 = new JLabel("\u5BC6\u7801");
		label_2.setForeground(Color.WHITE);
		label_2.setFont(new Font("微软雅黑", Font.PLAIN, 15));
		label_2.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/mima.png")));
		
		JButton button = new JButton("\u767B\u5F55");
		//设置按钮的透明
		button.setContentAreaFilled(false);
		//给按钮上的字设置颜色
		button.setForeground(Color.WHITE);
		button.setBackground(Color.WHITE);
		button.setFont(new Font("微软雅黑", Font.PLAIN, 20));
		button.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				//获取输入的用户名和密码
				String name=textField.getText();
				char[]array=passwordField.getPassword();
				String password=new String(array);
				System.out.println("name:"+name);
				System.out.println("password:"+password);
				//用户输入的验证码
				String codeFrame=textField_1.getText();
				if(!(code.equalsIgnoreCase((codeFrame)))){
					JOptionPane.showMessageDialog(null, "验证码错误,请重新输入!");
					return;
				}
				DeskDaoImpl deskDao=new DeskDaoImpl();
				Desk desk=new Desk(name,password);
				int code=deskDao.LoginDesk(desk);
				//判断是否是管理员登录
				if(code==1){
					//登录成功
					new HomeFrame().setVisible(true);
					//符合 则跳转到管理员的后台管理界面
					dispose();
					return ;
				}
				else{
					boolean bool=deskService.LoginDeskService(desk);
					if(!bool){
						JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
						return;
					}
					//登录成功
					new HomeFrame().setVisible(true);
					dispose();
				}
		});
		
}

开房入住:

@Override
			//开房监听事件
			public void mouseClicked(MouseEvent e) {
				//获取输入的房间号
				int houseId=Integer.parseInt(textField.getText());
				//获取输入的姓名
				String name=p_name.getText();
				//获取输入的年龄
				int age=Integer.parseInt(p_age.getText());
				//获取输入的入住天数
				int day=Integer.parseInt(p_day.getText());
				//获取输入的身份证号
				String id=p_id.getText();
				//获取输入的性别
				String sex=p_sex.getText();
				//获取房间类型
				String type=p_type.getText();
				//封装到Guest实体中
				Guest guest=new Guest();
				guest.setG_roomid(houseId);
				guest.setG_name(name);
				guest.setG_age(age);
				guest.setG_days(day);
				guest.setG_id(id);
				guest.setG_sex(sex);
				//封装到Room实体中
				Room room=new Room();
				room.setR_id(houseId);
				//判断年龄是否合理
				if(!(age>0&&age<100)){
					JOptionPane.showMessageDialog(null, "年龄输入不合理,请重新输入!");
					return;
				}
				//判断性别是否合理
				if(!(sex.equals("男")||sex.equals("女"))){
					JOptionPane.showMessageDialog(null, "性别只能是男或女,请重新输入!");
					return;
				}
				//入住天数不能小于1
				if(!(day>0)){
					JOptionPane.showMessageDialog(null, "入住天数不能小于1天,请重新输入!");
					return;
				}
				boolean bool=rs.OpenRoom(room);
				if(!bool){
					//房间已满则开房失败
					JOptionPane.showMessageDialog(null, "该房间已满,请更换房间!");
					return;
				}
				if(!(type.equals("标准房")||type.equals("套房")||type.equals("双人房")||type.equals("豪华套房"))){
					JOptionPane.showMessageDialog(null, "输入的信息有误,开房失败!");
					return;
				}
				boolean bool1=gsi.AddGuest(guest);
				if(bool1){
					//身份证不符合格式也失败
					JOptionPane.showMessageDialog(null, "身份证不符合格式,开房失败!");
					return;
				}

			}
		});

数据库设计:

用户表:

CREATE TABLE `NewTable` (
`d_id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '前台id' ,
`d_name`  varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '姓名' ,
`d_password`  varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '密码' ,
INDEX `d_id` (`d_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci
AUTO_INCREMENT=112
ROW_FORMAT=COMPACT
;

入住信息表:

CREATE TABLE `NewTable` (
`g_roomid`  int(11) NULL DEFAULT NULL COMMENT '房间id' ,
`g_id`  varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '顾客编号' ,
`g_name`  varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '姓名' ,
`g_sex`  varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '性别' ,
`g_age`  int(11) NULL DEFAULT NULL COMMENT '年龄' ,
`g_days`  int(11) NULL DEFAULT NULL COMMENT '入住天数' ,
`g_time`  datetime NULL DEFAULT NULL COMMENT '入住日期' 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci
ROW_FORMAT=COMPACT
;

房间信息表 :

CREATE TABLE `NewTable` (
`r_id`  int(11) NOT NULL AUTO_INCREMENT COMMENT 'roo  id' ,
`r_type`  varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT 'room 类型' ,
`r_price`  double NULL DEFAULT NULL COMMENT 'room价格' ,
`r_local`  varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT 'room位置' ,
`r_state`  varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT 'room状态' ,
INDEX `r_id` (`r_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci
AUTO_INCREMENT=106
ROW_FORMAT=COMPACT
;

ps:项目来于网络、作者整理优化测试、若有侵权联系作者删除

总结: 

         通过这次课程设计。我学到了许多令我受益匪浅的知识。感觉java的界面设计和 mfc差不多。只是java没有可视化的界面做起来太累了。其他主要是类和对象的问题。实现起来还是挺简单的。综合了根据中小型星级酒店的实际情况的特点, 虽然用户界面比较一般,但操作使用还是方便。符合酒店管理的基本流程。但由于时间仓促,一些不足之处还很多、比如美化和部分功能设计的都比较简单、但作为学生学习参考以及课程设计还是不错的选择。

订阅专栏获取源码

JavaSwing系列项目推荐:

JavaSwing ATM取款机系统的设计和实现

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

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

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

JavaSwing+Mysql的餐厅点餐系统设计实现

JavaSwing+Mysql的仓库管理系统设计实现

JavaSwing+Mysql超市商品管理系统设计实现

javaSwing+TXT学生信息管理系统设计实现

JavaSwing+mysql学生社团管理系统设计实现

打卡JavaSwing项目更新 9 / 100篇

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

  • 138
    点赞
  • 252
    收藏
  • 打赏
    打赏
  • 71
    评论
洒店管理系统使用说明书 配置源程序 附加数据库SQL Server 2005 (1)将TM\04\Database文件夹中的db_DrinkeryManage_Data.MDF和db_DrinkeryManage_Log.LDF文件拷贝到SQL Server 2005安装路径下的MSSQL.1\MSSQL\Data目录下。 (2)选择开始/程序/Microsoft SQL Server 2005/SQL Server Management Studio项,进入到“连接到服务器”页面,如图1.1所示。 图1.1 连接到服务器 (3)在“服务器名称”下拉列表中选择SQL Server 2005服务器名称,然后单击【连接】按钮。 (4)在“对象资源管理器”中右键单击“数据库”节点,在弹出的菜单中选择“附加”项,弹出“附加数据库”对话框,如图1.2所示。 图1.2 附加数据库 (5)单击【添加】按钮,在弹出的“定位数据库文件”对话框中选择数据库文件路径,如图1.3所示。 图1.3 定位数据库文件 (6)依次单击【确定】按钮,完成数据库附加操作。 发布与运行 (1)将光盘\TM\04\DrinkeryManage文件夹拷贝到Eclipse的工作空间中。 (2)启动Eclipse。 (3)选择“文件”/“导入”菜单项,展开“常规”节点,选择“现有项目到工作空间中”子节点,如图1.4所示。 图1.4 “导入”窗口 (4)单击【下一步】按钮,单击【浏览】按钮,选择程序所在目录,然后勾选“将项目复制到工作空间中”复选框,如图1.5所示。 图1.5 “导入”窗口 (5)单击【完成】按钮。 (6)在项目上单击鼠标右键,依次选择“新建”/“文件夹”命令,新建一个“lib”文件夹,然后,将SQL Server 2000数据库驱动文件“msbase.jar、mssqlserver.jar、msutil.jar”拷到该文件夹中。在该文件上单击鼠标右键,选择“构建路径”/“添加至构建路径”命令。 (7)在导入工程的src文件中,找到可执行的主类,在该类上单击鼠标右键,选择“运行方式”/“Java应用程序”项,如图1.6所示,完成程序配置。 图1.6 选择菜单项 使用说明 系统介绍 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。依据餐饮行业的特点,本系统实现以下目标:  操作简单方便、界面简洁大方。  方便快捷的开台点菜功能。  智能化定位菜品的功能。  快速查看开台点菜信息的功能。  自动结账功能。  按开台和商品实现的日结账功能。  按日消费额汇总统计实现的月结账功能。  按日营业额实现的年结账功能。  系统运行稳定、安全可靠。 操作注意事项 (1)本系统管理员用户名为:Tsoft,密码为:111。 (2)用户首次登录时,需要添加一个新用户,然后,使用添加的用户进行登录。 (3)在结账操作时,如果某一个菜单没有签单或取消签单,那么,先将此菜单进行签单或取消,然后再进行结账。 操作流程 使用本程序时,请按以下步骤操作: (1)用户登录后,进入酒店管理主界面,如图1.7所示。 图1.7 酒店管理系统主界面 (1)单击“用户管理”按钮,对用户信息进行添加及删除操作。 (2)单击“修改密码”按钮,修改当前登录的用户密码操作。 (3)单击“台号管理”按钮,对台号信息进行添加、查询及删除操作。 (4)单击“菜系管理”按钮,对菜系信息进行添加、查询及删除操作。 (5)单击“菜品管理”按钮,对菜品信息进行添加、查询及删除操作。 (6)单击“日结账”按钮,对每天的账单进行查询操作。 (7)单击“月结账”按钮,对每月的账单进行查询操作。 (8)单击“年结账”按钮,对每年的账单进行查询操作。 (9)单击“退出系统”按钮,退出当前操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2021 设计师:Hiro_C 返回首页
评论 71

打赏作者

java李杨勇

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值