Java swing实现酒店管理系统

Java swing是一个Java GUI工具包,可以用来实现面向对象编程。下面我将详细讲解如何使用Java swing实现一个酒店管理系统。

步骤一:创建GUI界面

Java swing基于MVC模式,所以我们需要先设计GUi界面。为了实现一个酒店管理系统,我们至少需要如下界面:

  1. 登录界面(用来让用户输入用户名和密码,进入系统)
  2. 主界面(根据用户的角色,动态地生成菜单)
  3. 订单界面(添加、删除、修改和查询订单信息)
  4. 客户界面(添加、删除、修改和查询客户信息)
  5. 房间界面(添加、删除、修改和查询房间信息)
  6. 员工界面(添加、删除、修改和查询员工信息)

示例 1:

下面是登录界面的代码块示例,其中包括文本框、标签、按钮以及事件处理器的定义。

JFrame frame=new JFrame("Login");
frame.setSize(300,150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel=new JPanel();
frame.add(panel);

panel.setLayout(new GridLayout(3,2));

JLabel userLabel=new JLabel("Username:");
panel.add(userLabel);

JTextField userText=new JTextField();
panel.add(userText);

JLabel passLabel=new JLabel("Password:");
panel.add(passLabel);

JPasswordField passText=new JPasswordField();
panel.add(passText);

JButton loginButton=new JButton("login");
panel.add(loginButton);
loginButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String user=userText.getText();
        String pass= new String(passText.getPassword());
        if(user.equals("admin")&&pass.equals("adminpass")){
            JOptionPane.showMessageDialog(frame, "Login Successful!");
            //跳转到主界面
        }
        else{
            JOptionPane.showMessageDialog(frame, "Invalid login!");
        }
    }
});

示例 2:

下面是订单窗口的代码块示例,其中包括表格、按钮、标签以及文本框的定义。

private void createOrderWindow(){
  JPanel orderPanel=new JPanel();
  orderPanel.setLayout(new BorderLayout());
  //添加表格
  String [] headers={"Order No.","Date","Room No.","Price","Status"};
  Object [][] data={
    {1,"2022-01-01","A101",200,"booked"},
    {2,"2022-01-02","A202",300,"paid"},
    {3,"2022-01-03","B303",400,"canceled"}
  };
  JTable orderTable=new JTable(data,headers);
  JScrollPane scrollPane=new JScrollPane(orderTable);
  orderPanel.add(scrollPane,BorderLayout.CENTER);
  //添加按钮和标签
  JLabel searchLabel=new JLabel("Search by order No.:");
  JTextField searchField=new JTextField(10);
  JButton searchButton=new JButton("Search");
  JButton addButton=new JButton("Add");
  JButton deleteButton=new JButton("Delete");
  JPanel buttonPanel=new JPanel();
  buttonPanel.add(searchLabel);
  buttonPanel.add(searchField);
  buttonPanel.add(searchButton);
  buttonPanel.add(addButton);
  buttonPanel.add(deleteButton);
  orderPanel.add(buttonPanel,BorderLayout.SOUTH);
  //添加事件处理器
  searchButton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      String searchText=searchField.getText();
      //查询订单信息并在表格中显示
    }
  });
  addButton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      //添加订单信息并在表格中更新
    }
  });
  deleteButton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      //删除订单信息并在表格中更新
    }
  });
  //添加窗口到主面板
  mainPanel.addTab("Orders",orderPanel);
}

步骤二:绑定数据模型

创建完毕GUI界面后,我们需要与后台的数据存储模型进行绑定。我们可以使用JDBC来连接数据库,或者使用Hibernate或MyBatis等ORM框架。

示例 1:

下面是使用JDBC连接MySQL数据库的代码块示例。这里假设我们已经创建了一个名为“hotel”的数据库,以及一个名为“employees”的数据表。

Connection conn=null;
String url="jdbc:mysql://localhost:3306/hotel";
String user="root";
String password="passwd";
try{
    Class.forName("com.mysql.jdbc.Driver"); //加载MySQL驱动
    conn=DriverManager.getConnection(url,user,password); //建立连接
    Statement stmt=conn.createStatement();
    ResultSet rs=stmt.executeQuery("SELECT * FROM employees"); //查询结果集
    while(rs.next()){
        int id=rs.getInt("id");
        String name=rs.getString("name");
        String position=rs.getString("position");
        double salary=rs.getDouble("salary");
        //处理结果集
    }
}
catch(SQLException se){
    se.printStackTrace();
}
catch(Exception e){
    e.printStackTrace();
}
finally{
    try{
        if(conn!=null){
            conn.close(); //关闭连接
        }
    }
    catch(SQLException se){
        se.printStackTrace();
    }
}

示例 2:

下面是使用Hibernate绑定数据模型的代码块示例。这里假设我们已经定义好了一个名为“Employee”的Java类,对应的数据表为“employees”。

Configuration configuration=new Configuration()
    .setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect")
    .setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver")
    .setProperty("hibernate.connection.url","jdbc:mysql://localhost:3306/hotel")
    .setProperty("hibernate.connection.username","root")
    .setProperty("hibernate.connection.password","passwd")
    .setProperty("hibernate.show_sql","true")
    .addAnnotatedClass(Employee.class);
SessionFactory sessionFactory=configuration.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();
List<Employee> employees=session.createQuery("FROM Employee").list();
for(Employee e:employees){
    //处理结果集
}
transaction.commit();
session.close();
sessionFactory.close();

步骤三:实现业务逻辑

完成了GUI界面的创建和数据模型的绑定后,我们需要实现业务逻辑代码。

示例 1:

下面是添加订单信息的代码块示例。这里我们假设订单信息存储在名为“orders”的数据表中。

public void addOrder(Order order){
  Connection conn=null;
  PreparedStatement stmt=null;
  String sql="INSERT INTO orders(order_no,date,room_no,price,status) VALUES(?,?,?,?,?)";
  try{
    Class.forName("com.mysql.jdbc.Driver");
    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel","root","passwd");
    stmt=conn.prepareStatement(sql);
    stmt.setInt(1,order.getOrderNo());
    stmt.setDate(2,new Date(order.getDate().getTime()));
    stmt.setString(3,order.getRoomNo());
    stmt.setDouble(4,order.getPrice());
    stmt.setString(5,order.getStatus());
    int rows=stmt.executeUpdate();
    if(rows>0){
      System.out.println("Order added successfully!");
    }
  }
  catch(Exception e){
    e.printStackTrace();
  }
  finally{
    try{
      if(stmt!=null){
        stmt.close();
      }
      if(conn!=null){
        conn.close();
      }
    }
    catch(SQLException se){
      se.printStackTrace();
    }
  }
}

示例 2:

下面是修改员工信息的代码块示例。这里我们使用Hibernate框架将Employee类映射到employees数据表中。

public void updateEmployee(int id,String name,String position,double salary){
  Configuration configuration=new Configuration()
    .setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect")
    .setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver")
    .setProperty("hibernate.connection.url","jdbc:mysql://localhost:3306/hotel")
    .setProperty("hibernate.connection.username","root")
    .setProperty("hibernate.connection.password","passwd")
    .setProperty("hibernate.show_sql","true")
    .addAnnotatedClass(Employee.class);
  SessionFactory sessionFactory=configuration.buildSessionFactory();
  Session session=sessionFactory.openSession();
  Transaction transaction=session.beginTransaction();
  Employee employee=session.load(Employee.class,id);
  employee.setName(name);
  employee.setPosition(position);
  employee.setSalary(salary);
  session.update(employee);
  transaction.commit();
  session.close();
  sessionFactory.close();
}

总结

本文介绍了如何使用Java swing来实现一个酒店管理系统。我们从GUi界面的设计开始,通过JDBC或Hibernate等技术与后台数据模型进行绑定,最后实现了相应的业务逻辑。在整个过程中,我们以两个具体的代码块示例详细阐述了每一个步骤的技术要点。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java swing实现酒店管理系统 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解使用Jenkins自动编译部署web应用

    详解使用Jenkins自动编译部署web应用 简介 Jenkins是一个开源的、支持持续集成和持续交付的软件开发工具。使用Jenkins可以编译、打包、测试和部署你的web应用程序。本文将详细讲解如何使用Jenkins自动编译部署web应用。 环境配置 在开始使用Jenkins自动编译部署web应用之前,需要进行一些环境配置。以下是环境配置的步骤: 安装Je…

    Java 2023年5月26日
    00
  • Java组件javabean用户登录实例详解

    Java组件javabean用户登录实例详解 什么是JavaBean? JavaBean 是Java语言编写的可重用组件,具有如下特征: 公共的无参构造方法 成员变量为私有的,公共的Getter和Setter方法 可序列化 用户登录实例 本文将介绍如何使用JavaBean实现用户登录功能。 编写JavaBean 首先,我们要编写一个JavaBean,该Jav…

    Java 2023年6月15日
    00
  • Java的线程与进程以及线程的四种创建方式

    Java线程与进程 Java是一门支持多线程的编程语言,线程和进程是Java中常见的程序执行方式。 进程 进程是操作系统分配资源的基本单位,每一个进程都有自己独立的内存空间和系统资源。每当一个程序启动时,操作系统就会为该程序创建一个进程。 Java程序的主函数(main)就是一个进程。当main函数被调用时,操作系统为该程序分配一段内存,这段内存称为进程。J…

    Java 2023年5月19日
    00
  • SpringBoot整合Mybatis注解开发的实现代码

    接下来我将以以下步骤为例,详细讲解SpringBoot整合Mybatis注解开发的实现代码: 配置Mybatis 首先,在Spring Boot配置文件中添加Mybatis的相关配置,如下所示: mybatis: mapper-locations: classpath:mapper/*.xml configuration: map-underscore-to…

    Java 2023年5月20日
    00
  • 详解SpringMVC的拦截器链实现及拦截器链配置

    详解SpringMVC的拦截器链实现及拦截器链配置 在SpringMVC中,拦截器是一个非常重要的组件,它可以帮助我们在请求到达控制器之前或之后执行一些操作。本文将详细介绍SpringMVC的拦截器链实现及拦截器链配置,并提供两个示例说明。 拦截器链实现 在SpringMVC中,拦截器链是由HandlerInterceptor接口实现的。拦截器链中的每个拦截…

    Java 2023年5月17日
    00
  • Java4Android开发教程(一)JDK安装与配置

    Java4Android开发教程(一)JDK安装与配置 在进行Java4Android开发之前,需要先安装和配置JDK(Java Development Kit),本文将介绍如何安装和配置JDK。 1. 下载JDK 首先,需要到Oracle官网下载JDK,下载地址为https://www.oracle.com/java/technologies/javase…

    Java 2023年5月24日
    00
  • JSP 开发之Spring Security详解

    JSP 开发之Spring Security详解 介绍 Spring Security 是 Spring 框架的核心模块,用于控制应用程序的安全访问(即确保用户只能访问他们有权限访问的内容)。它实现了诸如身份验证、授权等功能,可以轻松地创建功能强大的安全应用程序。本文将为大家详细介绍 Spring Security 的一些重要概念、特性和使用方法。 Spri…

    Java 2023年5月20日
    00
  • tomcat 安全规范(tomcat安全加固和规范)

    Tomcat 安全规范 (Tomcat 安全加固和规范) 为什么需要 Tomcat 安全规范? Tomcat 作为一款常用的 Java Web 服务器,因其易用、易安装等特点被广泛应用。但是,由于其安全性较弱,存在着许多潜在的安全风险,例如 SQL 注入、XSS 攻击、未授权访问等。因此,制定 Tomcat 安全规范并严格执行这些规范,可以大大降低安全风险,…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部