程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

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

发布于2022-06-15 22:12     阅读(247)     评论(0)     点赞(10)     收藏(5)


前言:

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

引言

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

主要技术和工具:

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

功能截图:

登录管理:

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

酒店管理信息:

开房:

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

退房:

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

房间信息:

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

顾客信息:

关键代码:

 主入口:

  1. public class LoginFrame extends JFrame {
  2. private JPanel contentPane;
  3. private JTextField textField;
  4. private JPasswordField passwordField;
  5. private JTextField textField_1;
  6. private CaptchaUtils cpt;
  7. private BufferedImage image1;
  8. private String code;
  9. private JLabel label_6;
  10. //创建deskservice对象
  11. private DeskService deskService=new DeskServiceImpl();
  12. public static void main(String[] args) {
  13. EventQueue.invokeLater(new Runnable() {
  14. public void run() {
  15. try {
  16. LoginFrame frame = new LoginFrame();
  17. frame.setVisible(true);
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. });
  23. }
  24. public LoginFrame() {
  25. setBackground(Color.GREEN);
  26. setTitle("KING'S LANDING");
  27. setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  28. setBounds(500, 250, 624, 524);
  29. contentPane = new JPanel(){
  30. protected void paintComponent(Graphics g){
  31. super.paintComponent(g);
  32. ImageIcon images=new ImageIcon("images/624524.jpg");
  33. g.drawImage(images.getImage(),0,0,null);
  34. }
  35. };
  36. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  37. setContentPane(contentPane);
  38. JLabel label_1 = new JLabel("\u7528\u6237\u540D");
  39. label_1.setBackground(Color.WHITE);
  40. label_1.setForeground(Color.WHITE);
  41. label_1.setFont(new Font("微软雅黑", Font.PLAIN, 15));
  42. label_1.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/yonghu.png")));
  43. textField = new JTextField();
  44. textField.setBackground(Color.WHITE);
  45. textField.setColumns(10);
  46. label_6=new JLabel();
  47. label_6.addMouseListener(new MouseAdapter() {
  48. @Override
  49. public void mouseClicked(MouseEvent e) {
  50. cpt=new CaptchaUtils();
  51. //获取画布
  52. image1=cpt.getBuffImg();
  53. //获取随机数
  54. code=cpt.getCode();
  55. ImageIcon icon=new ImageIcon(image1,"jpeg");
  56. label_6.setIcon(icon);
  57. }
  58. });
  59. /**
  60. * 验证码
  61. */
  62. cpt=new CaptchaUtils();
  63. //获取画布
  64. image1=cpt.getBuffImg();
  65. //获取随机数
  66. code=cpt.getCode();
  67. ImageIcon icon=new ImageIcon(image1,"jpeg");
  68. label_6.setIcon(icon);
  69. JLabel label_2 = new JLabel("\u5BC6\u7801");
  70. label_2.setForeground(Color.WHITE);
  71. label_2.setFont(new Font("微软雅黑", Font.PLAIN, 15));
  72. label_2.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/mima.png")));
  73. JButton button = new JButton("\u767B\u5F55");
  74. //设置按钮的透明
  75. button.setContentAreaFilled(false);
  76. //给按钮上的字设置颜色
  77. button.setForeground(Color.WHITE);
  78. button.setBackground(Color.WHITE);
  79. button.setFont(new Font("微软雅黑", Font.PLAIN, 20));
  80. button.addMouseListener(new MouseAdapter() {
  81. @Override
  82. public void mouseClicked(MouseEvent e) {
  83. //获取输入的用户名和密码
  84. String name=textField.getText();
  85. char[]array=passwordField.getPassword();
  86. String password=new String(array);
  87. System.out.println("name:"+name);
  88. System.out.println("password:"+password);
  89. //用户输入的验证码
  90. String codeFrame=textField_1.getText();
  91. if(!(code.equalsIgnoreCase((codeFrame)))){
  92. JOptionPane.showMessageDialog(null, "验证码错误,请重新输入!");
  93. return;
  94. }
  95. DeskDaoImpl deskDao=new DeskDaoImpl();
  96. Desk desk=new Desk(name,password);
  97. int code=deskDao.LoginDesk(desk);
  98. //判断是否是管理员登录
  99. if(code==1){
  100. //登录成功
  101. new HomeFrame().setVisible(true);
  102. //符合 则跳转到管理员的后台管理界面
  103. dispose();
  104. return ;
  105. }
  106. else{
  107. boolean bool=deskService.LoginDeskService(desk);
  108. if(!bool){
  109. JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
  110. return;
  111. }
  112. //登录成功
  113. new HomeFrame().setVisible(true);
  114. dispose();
  115. }
  116. });
  117. }

开房入住:

  1. @Override
  2. //开房监听事件
  3. public void mouseClicked(MouseEvent e) {
  4. //获取输入的房间号
  5. int houseId=Integer.parseInt(textField.getText());
  6. //获取输入的姓名
  7. String name=p_name.getText();
  8. //获取输入的年龄
  9. int age=Integer.parseInt(p_age.getText());
  10. //获取输入的入住天数
  11. int day=Integer.parseInt(p_day.getText());
  12. //获取输入的身份证号
  13. String id=p_id.getText();
  14. //获取输入的性别
  15. String sex=p_sex.getText();
  16. //获取房间类型
  17. String type=p_type.getText();
  18. //封装到Guest实体中
  19. Guest guest=new Guest();
  20. guest.setG_roomid(houseId);
  21. guest.setG_name(name);
  22. guest.setG_age(age);
  23. guest.setG_days(day);
  24. guest.setG_id(id);
  25. guest.setG_sex(sex);
  26. //封装到Room实体中
  27. Room room=new Room();
  28. room.setR_id(houseId);
  29. //判断年龄是否合理
  30. if(!(age>0&&age<100)){
  31. JOptionPane.showMessageDialog(null, "年龄输入不合理,请重新输入!");
  32. return;
  33. }
  34. //判断性别是否合理
  35. if(!(sex.equals("男")||sex.equals("女"))){
  36. JOptionPane.showMessageDialog(null, "性别只能是男或女,请重新输入!");
  37. return;
  38. }
  39. //入住天数不能小于1
  40. if(!(day>0)){
  41. JOptionPane.showMessageDialog(null, "入住天数不能小于1天,请重新输入!");
  42. return;
  43. }
  44. boolean bool=rs.OpenRoom(room);
  45. if(!bool){
  46. //房间已满则开房失败
  47. JOptionPane.showMessageDialog(null, "该房间已满,请更换房间!");
  48. return;
  49. }
  50. if(!(type.equals("标准房")||type.equals("套房")||type.equals("双人房")||type.equals("豪华套房"))){
  51. JOptionPane.showMessageDialog(null, "输入的信息有误,开房失败!");
  52. return;
  53. }
  54. boolean bool1=gsi.AddGuest(guest);
  55. if(bool1){
  56. //身份证不符合格式也失败
  57. JOptionPane.showMessageDialog(null, "身份证不符合格式,开房失败!");
  58. return;
  59. }
  60. }
  61. });

数据库设计:

用户表:

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

入住信息表:

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

房间信息表 :

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

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篇

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

原文链接:https://blog.csdn.net/weixin_39709134/article/details/119787579



所属网站分类: 技术文章 > 博客

作者:狗蛋来了

链接:http://www.javaheidong.com/blog/article/456738/f5ee9fe033aae443ccac/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)