Java swing是一个Java GUI工具包,可以用来实现面向对象编程。下面我将详细讲解如何使用Java swing实现一个酒店管理系统。
步骤一:创建GUI界面
Java swing基于MVC模式,所以我们需要先设计GUi界面。为了实现一个酒店管理系统,我们至少需要如下界面:
- 登录界面(用来让用户输入用户名和密码,进入系统)
- 主界面(根据用户的角色,动态地生成菜单)
- 订单界面(添加、删除、修改和查询订单信息)
- 客户界面(添加、删除、修改和查询客户信息)
- 房间界面(添加、删除、修改和查询房间信息)
- 员工界面(添加、删除、修改和查询员工信息)
示例 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技术站