下载资源前端资源详情
实操题第三题.zip
大小:2.55KB
价格:50积分
下载量:0
评分:
5.0
上传者:Susy_
更新日期:2025-09-22

计算机程序设计员三级考试第三题

资源文件列表(大概)

文件名
大小
实操题第三题/CarRentalSystem.java
7.07KB
实操题第三题/create_table.sql
507B

资源内容介绍

计算机程序设计员三级考试
import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class CarRentalSystem extends JFrame {private Connection connect() {try {return DriverManager.getConnection("jdbc:mysql://localhost:3306/car_rental_system", "root", "123456");} catch (SQLException e) {JOptionPane.showMessageDialog(this, "数据库连接失败: " + e.getMessage());return null;}}public CarRentalSystem() {setTitle("汽车租赁信息管理系统");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(600, 400);setLocationRelativeTo(null);JTabbedPane tabbedPane = new JTabbedPane();tabbedPane.addTab("汽车登记", createRegisterPanel());tabbedPane.addTab("租赁管理", createRentPanel());tabbedPane.addTab("归还管理", createReturnPanel());tabbedPane.addTab("查询功能", createSearchPanel());add(tabbedPane);setVisible(true);}private JPanel createRegisterPanel() {JPanel panel = new JPanel(new GridLayout(0, 2, 10, 10));JTextField txtId = new JTextField(), txtBrand = new JTextField(), txtModel = newJTextField(),txtYear = new JTextField(), txtRent = new JTextField();JButton btnSubmit = new JButton("提交");panel.add(new JLabel("汽车编号:"));panel.add(txtId);panel.add(new JLabel("品牌:"));panel.add(txtBrand);panel.add(new JLabel("型号:"));panel.add(txtModel);panel.add(new JLabel("年份:"));panel.add(txtYear);panel.add(new JLabel("每日租金:"));panel.add(txtRent);panel.add(btnSubmit);btnSubmit.addActionListener(e -> {registerCar(txtId.getText(), txtBrand.getText(), txtModel.getText(),Integer.parseInt(txtYear.getText()),Double.parseDouble(txtRent.getText()));});return panel;}private void registerCar(String id, String brand, String model, int year, double dailyRent) {String sql = "INSERT INTO cars (id, brand, model, year, daily_rent) VALUES (?, ?, ?, ?, ?)";try (Connection conn = connect(); PreparedStatement pstmt =conn.prepareStatement(sql)) {pstmt.setString(1, id);pstmt.setString(2, brand);pstmt.setString(3, model);pstmt.setInt(4, year);pstmt.setDouble(5, dailyRent);pstmt.executeUpdate();JOptionPane.showMessageDialog(this, "汽车信息登记成功");} catch (SQLException e) {JOptionPane.showMessageDialog(this, "登记失败: " + e.getMessage());}}private JPanel createRentPanel() {JPanel panel = new JPanel(new GridLayout(0, 2, 10, 10));JTextField txtCarId = new JTextField(), txtName = new JTextField(), txtContact = newJTextField(), txtStartDate = new JTextField();JButton btnRent = new JButton("租出");panel.add(new JLabel("汽车编号:"));panel.add(txtCarId);panel.add(new JLabel("客户姓名:"));panel.add(txtName);panel.add(new JLabel("联系方式:"));panel.add(txtContact);panel.add(new JLabel("起租日期:"));panel.add(txtStartDate);panel.add(btnRent);btnRent.addActionListener(e -> {rentCar(txtCarId.getText(), txtName.getText(), txtContact.getText(),txtStartDate.getText());});return panel;}private void rentCar(String carId, String customerName, String contact, String startDate) {String sqlRent = "INSERT INTO rentals (car_id, customer_name, contact, start_date)VALUES (?, ?, ?, ?)";String sqlUpdate = "UPDATE cars SET status = 'rented' WHERE id = ?";try (Connection conn = connect();PreparedStatement pstmtRent = conn.prepareStatement(sqlRent);PreparedStatement pstmtUpdate = conn.prepareStatement(sqlUpdate)) {// Start transactionconn.setAutoCommit(false);// Insert rental recordpstmtRent.setString(1, carId);pstmtRent.setString(2, customerName);pstmtRent.setString(3, contact);pstmtRent.setDate(4, Date.valueOf(startDate));pstmtRent.executeUpdate();// Update car statuspstmtUpdate.setString(1, carId);pstmtUpdate.executeUpdate();// Commit transactionconn.commit();JOptionPane.showMessageDialog(this, "汽车租出成功");} catch (SQLException e) {JOptionPane.showMessageDialog(this, "租出失败: " + e.getMessage());}}private JPanel createReturnPanel() {JPanel panel = new JPanel(new GridLayout(0, 2, 10, 10));JTextField txtCarId = new JTextField(), txtEndDate = new JTextField();JButton btnReturn = new JButton("归还");panel.add(new JLabel("汽车编号:"));panel.add(txtCarId);panel.add(new JLabel("归还日期:"));panel.add(txtEndDate);panel.add(btnReturn);btnReturn.addActionListener(e -> {returnCar(txtCarId.getText(), txtEndDate.getText());});return panel;}private void returnCar(String carId, String endDate) {String sql = "UPDATE rentals SET end_date = ?, total_rent = (SELECT daily_rent FROMcars WHERE id = ?) * DATEDIFF(?, start_date) WHERE car_id = ? AND end_date IS NULL";String sqlUpdate = "UPDATE cars SET status = 'available' WHERE id = ?";try (Connection conn = connect();PreparedStatement pstmt = conn.prepareStatement(sql);PreparedStatement pstmtUpdate = conn.prepareStatement(sqlUpdate)) {// Start transactionconn.setAutoCommit(false);// Update rental recordpstmt.setDate(1, Date.valueOf(endDate));pstmt.setString(2, carId);pstmt.setDate(3, Date.valueOf(endDate));pstmt.setString(4, carId);pstmt.executeUpdate();// Update car statuspstmtUpdate.setString(1, carId);pstmtUpdate.executeUpdate();// Commit transactionconn.commit();JOptionPane.showMessageDialog(this, "汽车归还成功");} catch (SQLException e) {JOptionPane.showMessageDialog(this, "归还失败: " + e.getMessage());}}private JPanel createSearchPanel() {JPanel panel = new JPanel(new BorderLayout());JTextField txtSearch = new JTextField();JTextArea txtResults = new JTextArea();txtResults.setEditable(false);JButton btnSearch = new JButton("搜索");panel.add(txtSearch, BorderLayout.NORTH);panel.add(new JScrollPane(txtResults), BorderLayout.CENTER);panel.add(btnSearch, BorderLayout.SOUTH);btnSearch.addActionListener(e -> {search(txtSearch.getText(), txtResults);});return panel;}private void search(String keyword, JTextArea txtResults) {String sql = "SELECT * FROM rentals INNER JOIN cars ON rentals.car_id = cars.idWHERE car_id = ? OR customer_name LIKE ?";try (Connection conn = connect(); PreparedStatement pstmt =conn.prepareStatement(sql)) {pstmt.setString(1, keyword);pstmt.setString(2, "%" + keyword + "%");ResultSet rs = pstmt.executeQuery();StringBuilder results = new StringBuilder();while (rs.next()) {results.append("Rental ID: ").append(rs.getInt("rental_id")).append("\n");results.append("Car ID: ").append(rs.getString("car_id")).append("\n");results.append("Customer Name:").append(rs.getString("customer_name")).append("\n");results.append("Contact: ").append(rs.getString("contact")).append("\n");results.append("Start Date: ").append(rs.getDate("start_date")).append("\n");results.append("End Date: ").append(rs.getDate("end_date")).append("\n");results.append("Total Rent:").append(rs.getDouble("total_rent")).append("\n\n");}txtResults.setText(results.toString());} catch (SQLException e) {JOptionPane.showMessageDialog(this, "查询失败: " + e.getMessage());}}public static void main(String[] args) {SwingUtilities.invokeLater(() -> new CarRentalSystem());}}

用户评论 (0)

发表评论

captcha