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日

相关文章

  • 在JavaScript中使用for循环的方法

    在 JavaScript 中,for 循环用于重复执行某些代码。for 循环通常用于遍历数组或对象,执行相同的代码多次。 基本格式为: for (初始值; 终止条件; 增量) { // 要执行的代码块 } 其中: 初始值:定义用于循环计数的变量,并设置初始值。 终止条件:定义循环运行条件,如果该条件为 true,则循环继续执行;如果为 false,则循环结束…

    Java 2023年5月26日
    00
  • Java 切割字符串的几种方式集合

    Java 切割字符串的几种方式集合 在Java中,切割字符串是非常常见的操作。本文将介绍Java中切割字符串的几种方式,包括使用StringTokenizer、split()函数和正则表达式等。 使用StringTokenizer java.util.StringTokenizer类是Java内置用来分割字符串的类,它可以将一个字符串按照指定的分隔符进行分割…

    Java 2023年5月26日
    00
  • Java 集合框架 Queue 和 Stack 体系

    Java 集合框架 Queue 和 Stack 体系 Queue 什么是 Queue Java 集合框架中的 Queue 接口代表了一种先进先出 (FIFO) 的队列数据结构。该接口继承自 Collection 接口,它是一种有序的集合,允许我们在队尾插入元素,从队头获取元素。在 Queue 中,插入元素的操作称之为 offer(),获取并删除队头元素的操作…

    Java 2023年5月26日
    00
  • Java内部类的使用教程详解

    Java内部类的使用教程详解 Java中的内部类是一个非常神奇的特性,它允许我们在一个Java类中定义另一个Java类。在这篇文章中,我们会详细讲解Java内部类的使用方法和注意事项。 内部类的类型 Java中的内部类分为四种类型:静态内部类、非静态内部类、局部内部类和匿名内部类。 静态内部类 静态内部类是定义在类中的普通静态类,可以像普通类一样使用。它可以…

    Java 2023年5月19日
    00
  • JSP 自动刷新的实例详解

    下面是“JSP 自动刷新的实例详解”完整攻略。 一、JSP 自动刷新简述 JSP 自动刷新,是指在 JSP 页面中,不需要手动刷新页面,而是自动刷新页面。这对于需要实时更新数据的应用场景非常实用,比如在线聊天室。 二、JSP 实现自动刷新的方法 JSP 实现自动刷新有两种方法: 1. 使用 HTML 的 meta 标签 <meta http-equiv…

    Java 2023年6月15日
    00
  • JAVA生成pdf文件的实操教程

    JAVA生成PDF文件的实操教程 本教程将教你如何使用JAVA生成PDF文件。你将学会使用开源库iText,它是一个功能强大的PDF库,支持PDF文件的创建、文本、表格、图片、字体等元素的操作。 步骤1:导入iText库 你需要先下载iText库并导入到你的JAVA项目中。可以从官网或Github获取。使用maven管理,可以这样引入: <depend…

    Java 2023年5月19日
    00
  • Spring Boot实战之静态资源处理

    让我来分步骤地讲解一下“Spring Boot实战之静态资源处理”的完整攻略。 1. 确认静态资源目录 首先要确认静态资源目录的配置是否正确。Spring Boot默认会将位于src/main/resources/static、src/main/resources/public、src/main/resources/resources、src/main/re…

    Java 2023年5月19日
    00
  • idea注解参数换行时间日期格式设置方法

    下面是关于如何在IDEA中设置注解参数换行时间日期格式的完整攻略: 1. 在注解中设置时间日期格式 在使用注解时,可以通过设置参数pattern来定义时间日期格式。例如,使用@JsonFormat注解将Java对象转换为JSON格式时,可以通过设置pattern参数来指定时间日期的输出格式。 @JsonFormat(pattern = "yyyy-…

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