java swing➕mysql管理系统的汽车租赁系统
时间: 2025-01-01 19:20:06 浏览: 10
### 使用Java Swing和MySQL创建汽车租赁管理系统
#### 设计概述
为了构建一个功能完整的汽车租赁管理系统,系统需具备良好的用户界面以及稳定的数据存储能力。通过使用Java Swing作为前端图形化界面工具包,可以方便地设计直观易用的操作窗口;而利用MySQL数据库,则能高效地管理各类业务数据。
#### 数据库表结构定义
首先,在MySQL中建立必要的表格来保存客户信息、车辆详情及订单记录等重要资料:
```sql
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
contact_info TEXT NOT NULL
);
CREATE TABLE cars (
car_id INT AUTO_INCREMENT PRIMARY KEY,
make_model VARCHAR(255) NOT NULL,
year YEAR NOT NULL,
daily_rate DECIMAL(6, 2) UNSIGNED DEFAULT '0.00' COMMENT 'Daily rental rate'
);
CREATE TABLE rentals (
rental_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT REFERENCES customers(id),
car_id INT REFERENCES cars(car_id),
start_date DATE NOT NULL,
end_date DATE NOT NULL,
total_cost DECIMAL(9, 2) GENERATED ALWAYS AS ((DATEDIFF(end_date,start_date)+1)*(
SELECT daily_rate FROM cars WHERE car_id=rentals.car_id)) STORED
);
```
上述SQL语句创建了三个主要实体——`customers`(顾客)、`cars`(汽车)与`rentals`(租借),并设置了它们之间的关联关系[^3]。
#### 用户登录模块实现
下面给出一段简单的Java代码片段展示如何借助Swing组件搭建基本的登陆页面,并连接至后台MySQL服务验证用户名密码合法性:
```java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class LoginFrame extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
public static void main(String[] args){
new LoginFrame().setVisible(true);
}
public LoginFrame(){
setTitle("Car Rental System");
setSize(400, 200);
JPanel panel = new JPanel();
add(panel);
JLabel userLabel = new JLabel("Username:");
panel.add(userLabel);
usernameField = new JTextField(20);
panel.add(usernameField);
JLabel passLabel = new JLabel("Password:");
panel.add(passLabel);
passwordField = new JPasswordField(20);
panel.add(passwordField);
JButton loginButton = new JButton("Login");
loginButton.addActionListener(this::handleLoginAction);
panel.add(loginButton);
}
private void handleLoginAction(ActionEvent e){
String url="jdbc:mysql://localhost:3306/car_rental";
try (Connection conn = DriverManager.getConnection(url,"root","password")){ // 替换成自己的数据库地址、账号和密码
PreparedStatement pst = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password ?");
pst.setString(1,usernameField.getText());
pst.setString(2,new String(passwordField.getPassword()));
var rs=pst.executeQuery();
if(rs.next()){
JOptionPane.showMessageDialog(null,"Welcome!");
dispose(); // 关闭当前窗体
// 打开主程序窗口...
}else{
JOptionPane.showMessageDialog(null,"Invalid credentials.");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
```
这段代码实现了基础的身份认证逻辑,实际应用时还需要考虑更多安全因素如加密传输、防止注入攻击等问题。
阅读全文