JSP Servlet

HỆ THỐNG QUẢN LÝ BÃI ĐỖ XE - KHOÁ HỌC JSP/SERVLET

1. Yêu cầu chung

Xây dựng ứng dụng web quản lý bãi đỗ xe sử dụng:

  • JSP/Servlet
  • JSTL + EL
  • JDBC

Áp dụng mô hình MVC


📌 2. CHỨC NĂNG CRUD

2.1. CRUD vehicle_type (Loại xe)

Chức năng:

  • Hiển thị danh sách
  • Thêm mới
  • Cập nhật
  • Xóa

Thuộc tính:

  • name (tên loại xe)
  • price_per_hour (giá/giờ)

Yêu cầu:

  • Tên không trùng
  • Giá > 0

2.2. CRUD parking_slot (Vị trí đỗ)

Chức năng:

  • Hiển thị danh sách
  • Thêm mới
  • Cập nhật
  • Xóa

Thuộc tính:

  • slot_code (mã vị trí)
  • status (EMPTY / OCCUPIED)

Yêu cầu:

  • Mã vị trí là duy nhất
  • Không được xóa khi đang OCCUPIED

2.3. CRUD vehicle (Xe)

Chức năng:

  • Hiển thị danh sách
  • Thêm mới
  • Cập nhật
  • Xóa

Thuộc tính:

  • license_plate (biển số)
  • type_id (loại xe)

Yêu cầu:

  • Biển số là duy nhất
  • Không để trống

2.4. CRUD parking_ticket (Vé gửi xe)

Chức năng:

  • Hiển thị danh sách
  • Thêm mới (xe vào)
  • Cập nhật (xe ra)
  • Xóa

Khi thêm (Check-in):

  • Chọn:
    • Xe
    • Vị trí
  • Tự động:
    • checkin_time
    • status = PARKING
  • Cập nhật slot → OCCUPIED

Khi cập nhật (Check-out):

  • Nhập:
    • checkout_time
  • Tự động:
    • Tính total_price
  • Cập nhật:
    • status = DONE
    • slot → EMPTY

Công thức tính tiền:

total_price=(checkout_timecheckin_time)hours×price_per_hour\text{total\_price} = (\text{checkout\_time} - \text{checkin\_time})_{hours} \times \text{price\_per\_hour}


🗄️ 3. SCRIPT SQL (TỐI ĐA 4 BẢNG)


CREATE DATABASE parking_management;
USE parking_management;

-- 1. Loại xe
CREATE TABLE vehicle_type (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL UNIQUE,
    price_per_hour DECIMAL(10,2) NOT NULL
);

-- 2. Vị trí đỗ
CREATE TABLE parking_slot (
    id INT PRIMARY KEY AUTO_INCREMENT,
    slot_code VARCHAR(20) NOT NULL UNIQUE,
    status ENUM('EMPTY', 'OCCUPIED') DEFAULT 'EMPTY'
);

-- 3. Xe
CREATE TABLE vehicle (
    id INT PRIMARY KEY AUTO_INCREMENT,
    license_plate VARCHAR(20) NOT NULL UNIQUE,
    type_id INT,
    FOREIGN KEY (type_id) REFERENCES vehicle_type(id)
);

-- 4. Vé gửi xe
CREATE TABLE parking_ticket (
    id INT PRIMARY KEY AUTO_INCREMENT,
    vehicle_id INT,
    slot_id INT,
    checkin_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    checkout_time DATETIME NULL,
    total_price DECIMAL(10,2) DEFAULT 0,
    status ENUM('PARKING', 'DONE') DEFAULT 'PARKING',

    FOREIGN KEY (vehicle_id) REFERENCES vehicle(id),
    FOREIGN KEY (slot_id) REFERENCES parking_slot(id)
);

-- Dữ liệu mẫu
INSERT INTO vehicle_type(name, price_per_hour) VALUES
('Xe máy', 5000),
('Ô tô', 20000);

INSERT INTO parking_slot(slot_code) VALUES
('A1'), ('A2'), ('B1'), ('B2');






Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó