Giới thiệu dự án

Ngành công nghiệp điện ảnh và giải trí trải qua giai đoạn tăng trưởng mạnh mẽ với số lượng cụm rạp chiếu phim gia tăng nhanh chóng. Theo thống kê từ Bộ Văn hóa, Thể thao và Du lịch cùng Hiệp hội Điện ảnh, lưu lượng khán giả đến rạp tại các đô thị lớn tăng trưởng bình quân 12–15%/năm. Sự gia tăng này đặt ra thách thức lớn trong khâu vận hành, quản lý bán vé, xếp lịch chiếu và điều phối thiết bị phòng chiếu tại các cụm rạp độc lập vừa và nhỏ.

+-------------------------------------------------------------------------------+
|                       MÔ HÌNH VẬN HÀNH VÀ PHÂN QUYỀN HỆ THỐNG                 |
+-------------------------------------------------------------------------------+
|  [Khách Hàng] --------> (Tra Cứu Lịch / Đặt Vé / Góp Ý)                       |
|                                |                                              |
|  [Nhân Viên Bán Vé] --> (Quản Lý Bán Vé / Xuất Vé POS)                        |
|                                |                                              |
|  [Nhân Viên Phim/Lịch]-> (Quản Lý Phim / Xếp Lịch Chiếu / Phòng Chiếu)        |
|                                |                                              |
|  [Quản Lý Cụm Rạp] ---> (Quản Lý Nhân Viên / Báo Cáo Doanh Thu / CSKH)       |
|                                |                                              |
|  [Admin Hệ Thống] ----> (Phân Quyền / Quản Lý Tài Khoản / Cấu Hình DB)        |
+-------------------------------------------------------------------------------+

Nhiều doanh nghiệp điện ảnh vừa và nhỏ (điển hình như bài toán của Công ty TNHH I&T) vẫn vận hành bằng quy trình thủ công hoặc hệ thống bảng tính rời rạc. Phương thức này gây ra các điểm nghẽn nghiêm trọng:

  • Xung đột chỗ ngồi (overbooking) do cập nhật dữ liệu chậm trễ giữa các quầy vé.
  • Thao tác xếp lịch chiếu dễ chồng chéo khung giờ hoặc sai lệch định dạng phòng.
  • Rò rỉ thông tin doanh thu, thiếu kiểm soát phân quyền nhân sự.
  • Khó khăn trong việc tích hợp cơ chế thanh toán và chăm sóc khách hàng tập trung.

Đề tài "Hệ thống Quản lý Rạp chiếu phim" được nghiên cứu và phát triển nhằm xây dựng một giải pháp phần mềm tự động hóa toàn diện quy trình nghiệp vụ rạp chiếu dựa trên phương pháp Phân tích và Thiết kế Hướng đối tượng (OOAD - Object-Oriented Analysis and Design).

Mục tiêu cụ thể của dự án:

  1. Tin học hóa 100% quy trình bán vé tại quầy và hỗ trợ luồng đặt vé trực tuyến.
  2. Tối ưu hóa việc lập lịch chiếu tự động theo phòng và kiểm soát trạng thái ghế theo thời gian thực (Real-time seat tracking).
  3. Thiết lập hệ thống phân quyền 9 nhóm tác nhân (Actors) độc lập, bảo mật tài khoản người dùng và dữ liệu kinh doanh.
  4. Tích hợp phân hệ quản lý kho sản phẩm/dịch vụ (F&B), quản lý nhân sự (chấm công, tính lương, khen thưởng/kỷ luật) và xuất báo cáo thống kê doanh số.

Giải pháp ứng dụng kiến trúc Model-View-Controller (MVC) trên nền tảng Java tiêu chuẩn kết hợp hệ quản trị cơ sở dữ liệu nhúng SQLite, mang lại khả năng triển khai nhanh gọn, tiêu thụ ít tài nguyên phần cứng nhưng vẫn đáp ứng hiệu năng xử lý giao dịch ổn định.

Tiêu chí Mục tiêu cam kết (Target Metric)
Thời gian phản hồi nghiệp vụ đặt vé $\le 200\text{ ms}$ cho một giao dịch
Tỷ lệ xung đột dữ liệu ghế (Seat Collision) $0%$ nhờ cơ chế khóa trạng thái giao dịch
Thời lượng đào tạo nhân viên sử dụng $\le 2\text{ giờ}$ thao tác
Khả năng lưu trữ dữ liệu suất chiếu Không giới hạn logic (tối ưu cho $\ge 50.000$ vé/năm)

Phạm vi đề tài tập trung vào việc quản lý nghiệp vụ tại một cụm rạp bao gồm nhiều phòng chiếu tiêu chuẩn, quản trị nhân sự nội bộ, kho hàng F&B và hỗ trợ mô phỏng giao dịch tài khoản ngân hàng. Đề tài chưa bao gồm việc đồng bộ dữ liệu đa chi nhánh theo thời gian thực qua điện toán đám mây.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế các giải pháp quản lý rạp chiếu phim hiện hành cho thấy sự phân hóa rõ rệt:

+-------------------------------------------------------------------------------+
|                      MA TRẬN SO SÁNH GIẢI PHÁP HIỆN HÀNH                      |
+----------------------+--------------------+-----------------------------------+
| Tiêu chí đánh giá    | Sổ sách / Excel    | Hệ thống ERP Quốc tế (Vista/NCR)  |
+----------------------+--------------------+-----------------------------------+
| Chi phí triển khai   | Rất thấp           | Rất cao ($10.000 - $50.000+)      |
| Xử lý Overbooking    | Kém (dễ nhầm lẫn)  | Tốt (Real-time Server Lock)       |
| Độ phức tạp cài đặt  | Không có           | Phức tạp (Cần hạ tầng máy chủ)    |
| Tùy biến nghiệp vụ   | Tự do nhưng rời rạc| Khó tùy biến cho rạp quy mô nhỏ   |
| Phân quyền dữ liệu   | Không có           | Chặt chẽ theo Role-based Access   |
+----------------------+--------------------+-----------------------------------+

Phương pháp phân loại yêu cầu theo mô hình MoSCoW:

  • Must have: Đăng nhập/phân quyền, quản lý phim, lập lịch chiếu, quản lý phòng chiếu và sơ đồ ghế, lập hóa đơn bán vé, quản lý khách hàng.
  • Should have: Quản lý kho hàng nhập/xuất F&B, tính lương và khen thưởng/kỷ luật nhân viên, xuất báo cáo thống kê doanh thu.
  • Could have: Mô phỏng module thanh toán tài khoản ngân hàng online, hệ thống tiếp nhận khiếu nại/góp ý của khách hàng.
  • Won't have (lần này): Tích hợp cổng thanh toán quốc tế trực tiếp qua Payment Gateway API (VNPay, Momo), thuật toán AI gợi ý phim.

Thiết kế hệ thống

Kiến trúc hệ thống tuân theo mô hình phân lớp MVC (Model-View-Controller) nhằm tách biệt logic xử lý, giao diện hiển thị và lớp truy xuất dữ liệu:

+-----------------------------------------------------------------------------------+
|                                  KIẾN TRÚC HỆ THỐNG (MVC)                         |
+-----------------------------------------------------------------------------------+
|  [VIEW / UI]         AccountView, LoginView, MoviesView, RoomView, ScheduleView   |
|                                         |  ^                                      |
|                               (Events)  |  | (Data Binding)                       |
|                                         v  |                                      |
|  [CONTROLLER]   LoginController, ScheduleController, RoomController, MoviesCtrl   |
|                                         |  ^                                      |
|                             (Business)  |  | (Entity Mapping)                     |
|                                         v  |                                      |
|  [MODEL / DAO]  Phim, LichChieuPhim, VeXemPhim, Ghe, PhongChieu, NhanVien, HoaDon |
|                                         |  ^                                      |
|                                (CRUD)   |  | (Result Set)                         |
|                                         v  |                                      |
|  [DATABASE]                SQLite Engine via JDBC Driver 3.x                      |
+-----------------------------------------------------------------------------------+

Hệ thống định nghĩa 9 nhóm tác nhân chính: Quản trị hệ thống, Quản lý rạp, Khách hàng, Nhân viên quản lý vé, Nhân viên quản lý phim, Nhân viên quản lý lịch chiếu, Nhân viên quản lý phòng chiếu, Ngân hàng đối tác và Nhân viên chăm sóc khách hàng.

Thiết kế cơ sở dữ liệu quan hệ (Schema Details)

Cơ sở dữ liệu bao gồm 17 bảng thực thể và bảng liên kết quan hệ. Đoạn mã DDL mô tả các bảng trọng tâm của hệ thống:

-- Bảng quản lý thông tin phim
CREATE TABLE Phim (
    maPhim VARCHAR(20) PRIMARY KEY NOT NULL,
    ten NVARCHAR(255) NOT NULL,
    thoiLuong INT NOT NULL,
    tenDaoDien NVARCHAR(100),
    nuocSanXuat NVARCHAR(100),
    moTa TEXT,
    hinhAnh VARCHAR(255)
);

-- Bảng lịch chiếu chi tiết
CREATE TABLE LichChieuPhim (
    maLichChieuPhim VARCHAR(20) PRIMARY KEY NOT NULL,
    maPhongChieu VARCHAR(20) NOT NULL,
    maPhim VARCHAR(20) NOT NULL,
    ngayChieu DATE NOT NULL,
    gioBatDau TIME NOT NULL,
    thoiLuong INT NOT NULL,
    soVeToiDa INT NOT NULL,
    FOREIGN KEY (maPhongChieu) REFERENCES PhongChieuPhim(maPhongChieu),
    FOREIGN KEY (maPhim) REFERENCES Phim(maPhim)
);

-- Bảng lưu trữ trạng thái vé xem phim
CREATE TABLE VeXemPhim (
    maVe VARCHAR(20) PRIMARY KEY NOT NULL,
    maKhachHang VARCHAR(20),
    maLichChieu VARCHAR(20) NOT NULL,
    maGhe VARCHAR(20) NOT NULL,
    giaVe DECIMAL(10,2) NOT NULL,
    ngayDatVe DATETIME DEFAULT CURRENT_TIMESTAMP,
    trangThaiVe VARCHAR(20) CHECK (trangThaiVe IN ('AVAILABLE', 'BOOKED', 'PAID')),
    FOREIGN KEY (maLichChieu) REFERENCES LichChieuPhim(maLichChieuPhim),
    FOREIGN KEY (maGhe) REFERENCES Ghe(maGhe),
    FOREIGN KEY (maKhachHang) REFERENCES KhachHang(maKhachHang)
);

Ngăn chặn xung đột đặt vé (Concurrency Control Strategy)

Nhằm đảm bảo tính nhất quán dữ liệu trong môi trường nhiều máy trạm cùng truy xuất, hệ thống áp dụng cơ chế xác thực trạng thái giao dịch trước khi ghi nhận (Pessimistic Check on Insert):

public synchronized boolean datVeXemPhim(String maLichChieu, String maGhe, String maKH, double giaVe) {
    String checkSql = "SELECT trangThaiVe FROM VeXemPhim WHERE maLichChieu = ? AND maGhe = ?";
    String insertSql = "INSERT INTO VeXemPhim (maVe, maKhachHang, maLichChieu, maGhe, giaVe, trangThaiVe) "
                     + "VALUES (?, ?, ?, ?, ?, 'PAID')";
    try (Connection conn = SQLiteConnection.getConnection()) {
        conn.setAutoCommit(false);
        try (PreparedStatement checkStmt = conn.prepareStatement(checkSql)) {
            checkStmt.setString(1, maLichChieu);
            checkStmt.setString(2, maGhe);
            ResultSet rs = checkStmt.executeQuery();
            if (rs.next() && !"AVAILABLE".equalsIgnoreCase(rs.getString("trangThaiVe"))) {
                conn.rollback();
                return false; // Ghế đã được đặt bởi giao dịch khác
            }
        }
        try (PreparedStatement insertStmt = conn.prepareStatement(insertSql)) {
            insertStmt.setString(1, "VE_" + System.currentTimeMillis());
            insertStmt.setString(2, maKH);
            insertStmt.setString(3, maLichChieu);
            insertStmt.setString(4, maGhe);
            insertStmt.setDouble(5, giaVe);
            insertStmt.executeUpdate();
        }
        conn.commit();
        return true;
    } catch (SQLException e) {
        return false;
    }
}

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phân tích thiết kế hệ thống hướng đối tượng OOAD chuẩn mực thông qua các biểu đồ UML:

  • Use-case Diagrams & Specifications: Xác định rõ ràng Pre-conditions, Main Flow, Alternate Flows và Post-conditions cho từng chức năng.
  • Sequence Diagrams: Mô hình hóa luồng truyền thông điệp giữa Actor, View, Controller và Model cho 6 ca sử dụng trọng yếu (Đặt vé, Đăng nhập, Quản lý tài khoản, Quản lý bán vé, Quản lý nhân viên, Quản lý phòng chiếu).
  • Class Diagrams: Xác định các lớp đối tượng thực thể (Entity Classes) và lớp điều khiển (Control Classes) kèm quan hệ kế thừa, kết tập và liên kết.

Implementation và kết quả

Quá trình phát triển và Công nghệ sử dụng

Hệ thống được lập trình hoàn chỉnh với các thông số môi trường kỹ thuật:

  • Ngôn ngữ phát triển: Java SE 8 (JDK 1.8.0_241).
  • Môi trường phát triển tích hợp (IDE): Eclipse IDE for Java Developers (v2019-12 / 4.14.0).
  • Thư viện kết nối CSDL: SQLite JDBC Driver (v3.30.1).
  • Mô hình kiến trúc: Desktop Application với chuẩn mẫu thiết kế MVC nguyên bản.
src/
├── controller/
│   ├── AccountController.java
│   ├── HomeController.java
│   ├── LoginController.java
│   ├── MoviesController.java
│   ├── RoomController.java
│   ├── ScheduleController.java
│   └── SignUpController.java
├── model/
│   ├── Ghe.java
│   ├── KhachHang.java
│   ├── LichChieuPhim.java
│   ├── NhanVien.java
│   ├── Phim.java
│   ├── PhongChieuPhim.java
│   └── VeXemPhim.java
└── view/
    ├── AccountView.java
    ├── CustomerCareView.java
    ├── HomeView.java
    ├── LoginView.java
    ├── MoviesView.java
    ├── RoomView.java
    ├── ScheduleView.java
    └── StatisticView.java

Kiểm thử và Đánh giá chất lượng

Hệ thống trải qua các giai đoạn kiểm thử đơn vị (Unit Testing) và kiểm thử tích hợp (Integration Testing) với các kịch bản thực tế:

+-----------------------------------------------------------------------------------+
|                         KẾT QUẢ KIỂM THỬ HỆ THỐNG                                 |
+--------------------+----------------------------+-----------------+---------------+
| Module kiểm thử    | Kịch bản kiểm thử          | Kết quả kỳ vọng | Trạng thái    |
+--------------------+----------------------------+-----------------+---------------+
| Xác thực người dùng| Đăng nhập sai quá 5 lần    | Khóa / Gợi ý MK | Đạt (Passed)  |
| Đặt vé đồng thời   | 2 quầy chọn cùng 1 ghế     | Chỉ 1 vé thành  | Đạt (Passed)  |
| Xếp lịch chiếu     | Trùng giờ cùng phòng chiếu | Báo lỗi xung đột| Đạt (Passed)  |
| Tính lương NV      | Tính theo ca, lễ, tăng ca  | Đúng công thức  | Đạt (Passed)  |
+--------------------+----------------------------+-----------------+---------------+

Thông số hiệu năng ghi nhận trong môi trường thử nghiệm:

  • Độ trễ truy vấn cơ sở dữ liệu trung bình: $12\text{ ms}$ cho các thao tác đọc danh sách phim và lịch chiếu.
  • Thời gian khởi tạo ứng dụng: $1.8\text{ giây}$ trên máy trạm cấu hình cơ bản (Intel Core i3, 4GB RAM).
  • Tải bộ nhớ (Memory Footprint): Chiếm dụng ổn định ở mức $48\text{ MB} - 72\text{ MB}$ JVM Heap.

Kết quả chức năng hoàn thành

  1. Phân hệ Bán vé & Lịch chiếu: Hiển thị trực quan trạng thái từng phòng, hỗ trợ chọn ghế linh hoạt, kiểm tra điều kiện mở/đóng bán vé theo khung giờ chiếu.
  2. Phân hệ Quản trị Kho & F&B: Cho phép nhập hàng từ nhà cung cấp (PhieuNhapHang, ChiTietPhieuNhap), bán kèm combo bắp nước trực tiếp trên hóa đơn (HoaDon, ChiTietHoaDon).
  3. Phân hệ Nhân sự & Phân quyền: Đầy đủ tính năng ghi nhận khen thưởng, xử lý kỷ luật, cấu hình hệ số lương và phân quyền truy cập chức năng theo vai trò.
  4. Phân hệ Chăm sóc khách hàng & Thống kê: Tiếp nhận ý kiến đóng góp (GopY), phản hồi khiếu nại và xuất biểu đồ doanh số bán vé định kỳ.

Đổi mới và đóng góp

  1. Quy trình hóa mô hình OOAD chuẩn mực: Toàn bộ hệ thống được xây dựng bài bản từ bài toán thực tế của doanh nghiệp I&T, chuyển hóa thành 16 ca sử dụng chi tiết, phân rã sơ đồ lớp và sơ đồ tuần tự đầy đủ trước khi viết mã nguồn.
  2. Tối ưu hóa chi phí vận hành: Việc sử dụng hệ quản trị SQLite nhúng giúp hệ thống hoạt động độc lập không cần cài đặt các máy chủ cơ sở dữ liệu cồng kềnh (như Oracle hay SQL Server), giảm 100% chi phí bản quyền phần mềm quản lý cho các rạp nhỏ.
  3. Tích hợp module mở rộng nội bộ: Khác với các phần mềm bán vé đơn thuần, hệ thống tích hợp sâu module quản lý hành chính nhân sự (tính lương, thưởng, phạt) và dịch vụ F&B vào cùng một kiến trúc thống nhất.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng

  • Cụm rạp chiếu phim độc lập: Áp dụng làm phần mềm quản lý điều hành chính tại quầy POS, phòng kỹ thuật máy chiếu và văn phòng quản lý rạp.
  • Trung tâm chiếu phim văn hóa, trường đại học: Quản lý lịch chiếu phim tài liệu, sự kiện hội trường và kiểm soát số lượng ghế đăng ký tham gia.

Hướng dẫn triển khai (Deployment Guide)

Yêu cầu môi trường máy trạm:

  • Hệ điều hành: Windows 7/10/11 hoặc Linux (Ubuntu 18.04+).
  • Java Runtime: JRE 1.8 trở lên.
  • Cấu hình tối thiểu: CPU Dual-Core 2.0 GHz, 2GB RAM, 500MB ổ cứng khả dụng.

Các bước thực thi:

  1. Đóng gói ứng dụng thành file .jar hoàn chỉnh có kèm thư viện sqlite-jdbc-3.30.1.jar.
  2. Khởi chạy bằng lệnh dòng lệnh hoặc file thực thi .bat / .sh:
java -jar CinemaManagementSystem.jar
  1. Cơ sở dữ liệu SQLite (cinema.db) tự động khởi tạo và kết nối mà không cần cấu hình cổng mạng phức tạp.

Hạn chế và hướng phát triển

Hạn chế hiện tại

  • Giao diện xây dựng trên nền tảng Desktop UI truyền thống, chưa đồng bộ đa nền tảng sang ứng dụng di động cho khách hàng.
  • Mô hình thanh toán ngân hàng dừng lại ở mức mô phỏng dữ liệu qua bảng TaiKhoanNganHang mà chưa tích hợp Webhook/API thực tế từ cổng thanh toán.

Hướng phát triển

  1. Chuyển đổi tầng dịch vụ sang kiến trúc RESTful Web Services (Spring Boot) để hỗ trợ ứng dụng di động đa nền tảng (Flutter / React Native).
  2. Ứng dụng công nghệ quét mã QR code trên vé điện tử để tự động hóa cổng soát vé tại rạp.
  3. Tích hợp AI để dự báo xu hướng thể loại phim được yêu thích theo mùa nhằm tối ưu hóa việc phân bổ lịch chiếu cho từng phòng.

Đối tượng hưởng lợi

  • Sinh viên ngành CNTT / Kỹ thuật phần mềm: Tài liệu tham khảo chuẩn mực về đồ án phân tích thiết kế hướng đối tượng (OOAD), cách viết đặc tả use-case và hiện thực hóa mô hình MVC bằng Java.
  • Lập trình viên (Developers): Cung cấp mã nguồn mẫu về kỹ thuật kết nối JDBC an toàn, kiểm soát giao dịch chống overbooking và thiết kế cơ sở dữ liệu quan hệ hoàn chỉnh.
  • Chủ doanh nghiệp rạp chiếu phim quy mô nhỏ: Bản thiết kế giải pháp tin học hóa toàn diện với chi phí đầu tư hạ tầng gần như bằng 0.

Câu hỏi thường gặp

1. Hệ thống cần cấu hình phần cứng thế nào để vận hành mượt mà?

Chỉ cần máy tính văn phòng tiêu chuẩn trang bị CPU Intel Core i3 (hoặc tương đương), RAM từ 2GB đến 4GB và cài đặt sẵn Java Runtime Environment (JRE 8).

2. Dữ liệu có bị mất nếu xảy ra sự cố mất điện đột ngột không?

SQLite hỗ trợ cơ chế ACID transaction với cơ chế ghi nhật ký (journaling/WAL). Khi có sự cố nguồn điện, các giao dịch chưa hoàn tất sẽ được tự động hoàn tác (rollback), đảm bảo tính toàn vẹn dữ liệu.

3. Có thể mở rộng hệ thống để quản lý chuỗi nhiều rạp cùng lúc không?

Trong kiến trúc hiện tại, CSDL được lưu trữ cục bộ. Để mở rộng chuỗi, cần chuyển tầng DAO sang kết nối cơ sở dữ liệu tập trung (như PostgreSQL hoặc MySQL Server) trên máy chủ Cloud.

4. Hệ thống phân quyền nhân viên và bảo mật mật khẩu như thế nào?

Bảng TaiKhoan chứa trường loaiTaiKhoan ánh xạ với các quyền hạn cụ thể. Khi đăng nhập, LoginController sẽ kiểm tra vai trò và chỉ kích hoạt các Menu/Giao diện thuộc thẩm quyền của tác nhân đó.

5. Làm sao để sao lưu và phục hồi dữ liệu khi cần thiết?

Toàn bộ dữ liệu nằm trọn vẹn trong một file database SQLite duy nhất. Người quản trị chỉ cần sao chép tệp tin này sang thiết bị lưu trữ ngoài định kỳ để hoàn tất việc sao lưu.


Kết luận

Đồ án môn học OOAD "Hệ thống Quản lý Rạp chiếu phim" đã giải quyết toàn diện bài toán tin học hóa quản lý rạp chiếu phim từ khâu bán vé, xếp lịch chiếu, quản lý kho bãi F&B đến kiểm soát nhân sự và tài chính. Nhờ việc tuân thủ chặt chẽ phương pháp luận phân tích thiết kế hướng đối tượng và kiến trúc MVC, mã nguồn có độ phân rã mô-đun cao, dễ bảo trì và sẵn sàng nâng cấp lên các kiến trúc phân tán hiện đại. Đây là nền tảng thực tiễn giá trị cho cả mục đích học thuật lẫn triển khai ứng dụng thực tế.