Giới thiệu dự án
Sự tăng trưởng vượt bậc của ngành công nghiệp điện ảnh và thương mại điện tử tại Việt Nam đã thúc đẩy nhu cầu chuyển đổi số mạnh mẽ trong mô hình kinh doanh B2C (Business-to-Consumer). Theo thống kê thị trường bán lẻ dịch vụ giải trí, hơn 75% khán giả trẻ tại các khu vực đô thị ưu tiên trải nghiệm đặt vé và thanh toán trực tuyến nhằm tối ưu hóa thời gian và đảm bảo chọn được vị trí ghế mong muốn. Tuy nhiên, nhiều cụm rạp chiếu phim quy mô vừa và nhỏ hoặc các rạp tại các tỉnh thành phát triển như Bình Dương vẫn đối mặt với bài toán vận hành thủ công, quản lý lịch chiếu rời rạc và phụ thuộc vào quầy bán vé vật lý.
Đề tài "Xây dựng Website Quản lý Rạp chiếu phim" do sinh viên Hoàng Trung Phong thực hiện dưới sự hướng dẫn của GVHD Huỳnh Quang Đức (Khoa Công nghệ Thông tin, Robot và Trí tuệ Nhân tạo – Trường Đại học Bình Dương) giải quyết triệt để các hạn chế này bằng cách tin học hóa toàn diện quy trình vận hành rạp chiếu.
+-------------------------------------------------------------------------+
| HỆ THỐNG QUẢN LÝ RẠP CHIẾU PHIM B2C |
+-------------------------------------------------------------------------+
| [Khách hàng] --> Đăng ký / Đăng nhập, Tra cứu phim, Đặt vé |
| [Thanh toán Online] --> Cổng MoMo ATM tích hợp mã xác thực OTP |
| [Nhân viên rạp] --> Quản lý danh mục phim, Blog điện ảnh, Đơn hàng |
| [Quản lý (Admin)] --> Lên lịch suất chiếu, Phân phòng, Báo cáo Excel |
+-------------------------------------------------------------------------+
Mục tiêu của dự án
- Tin học hóa quy trình đặt vé: Xây dựng nền tảng web B2C trực tuyến cho phép khách hàng tra cứu thông tin phim, xem lịch chiếu theo thời gian thực, lựa chọn số ghế chính xác và đặt vé trực tiếp.
- Tích hợp cổng thanh toán trực tuyến: Kết nối giải pháp thanh toán điện tử an toàn qua cổng MoMo ATM với cơ chế xác thực mã OTP (One-Time Password) gửi về số điện thoại.
- Tối ưu hóa quản trị rạp: Cung cấp công cụ quản lý tập trung cho ban quản lý và nhân viên rạp: quản lý danh mục phim (đang chiếu, sắp chiếu), điều phối phòng chiếu, xếp lịch suất chiếu linh hoạt và biên tập tin tức/blog điện ảnh.
- Báo cáo và thống kê doanh thu tự động: Xây dựng phân hệ trích xuất báo cáo doanh số vé bán theo phim và theo khoảng thời gian thực tế, hỗ trợ xuất dữ liệu định dạng bảng tính Excel.
Phương pháp tiếp cận và kết quả kỳ vọng
- Phương pháp giải quyết: Ứng dụng kiến trúc máy khách – máy chủ (Client-Server), kết hợp phương pháp phân tích thiết kế hướng đối tượng (Object-Oriented Analysis and Design - OOAD) từ dưới lên (Bottom-up). Hệ thống sử dụng ngôn ngữ lập trình kịch bản máy chủ PHP kết hợp hệ quản trị cơ sở dữ liệu quan hệ MySQL Server.
- Chỉ số đo lường kỳ vọng:
- Giảm 85% thời gian chờ đợi mua vé của khách hàng tại quầy.
- Đảm bảo tính nhất quán dữ liệu đặt chỗ, loại bỏ 100% tình trạng trùng ghế (double-booking).
- Thời gian phản hồi hệ thống trung bình dưới 500ms đối với các truy vấn tra cứu và đặt chỗ.
- Phạm vi và giới hạn: Tập trung vào mô hình vận hành của rạp chiếu phim phục vụ thị trường khán giả đô thị; hệ thống phát triển trên nền tảng Web Application, chưa bao gồm ứng dụng di động Native App độc lập và máy chủ vật lý riêng biệt.
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ế quy trình quản lý rạp chiếu phim truyền thống bộc lộ nhiều điểm nghẽn trong khâu quản lý vé và điều phối suất chiếu:
| Giải pháp |
Ưu điểm |
Nhược điểm |
| Bán vé tại quầy (POS truyền thống) |
Dễ thao tác trực tiếp, không cần kết nối Internet phía khách hàng |
Ùn tắc giờ cao điểm, tốn nhân sự quầy, không thể dự báo trước lượng khán giả |
| Hệ thống nhượng quyền quốc tế (CGV, Lotte) |
Tính năng quy mô lớn, chịu tải cao |
Chi phí bản quyền và duy trì máy chủ rất đắt đỏ, cấu trúc phức tạp, khó tùy biến |
| Website Quản lý Rạp B2C (Đề tài đề xuất) |
Chi phí đầu tư thấp, triển khai linh hoạt trên Apache/PHP/MySQL, tối ưu cho rạp vừa và nhỏ |
Cần nâng cấp hạ tầng mạng khi lượng người dùng đồng thời vượt ngưỡng 10.000 users |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must have (Bắt buộc có):
- Phân quyền 3 nhóm tác nhân (Khách hàng, Nhân viên rạp, Người quản lý).
- CRUD (Create, Read, Update, Delete) danh mục Phim, Suất chiếu, Phòng và Ghế.
- Đặt vé trực quan theo sơ đồ ghế và thanh toán qua cổng MoMo ATM.
- Should have (Nên có):
- Phân hệ Blog điện ảnh/tin tức quảng bá phim.
- Xuất báo cáo doanh thu theo tháng ra file Excel.
- Could have (Có thể có):
- Đánh giá, bình luận phim từ phía thành viên.
- Won't have (Chưa thực hiện ở giai đoạn này):
- Tích hợp máy quét mã vạch Barcode/QR Code tự động tại cửa soát vé vật lý.
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc 3 tầng (3-Tier Architecture) nhằm tách biệt giữa giao diện hiển thị, xử lý nghiệp vụ và lưu trữ dữ liệu.
graph TD
Client[Client Browser / Desktop / Mobile Web] -->|HTTP/HTTPS Request| WebServer[Web Server: Apache 2.4 / PHP Engine]
WebServer -->|Business Logic & RBAC| AppLogic[Application Modules: Booking, Movies, Showtimes, Auth]
AppLogic -->|SQL Queries / PDO| Database[(MySQL Database 8.0 CE)]
AppLogic -->|API Payment Gateway| MoMo[MoMo ATM Payment Gateway]
Ngăn xếp công nghệ (Technology Stack)
- Backend Runtime: PHP (Hypertext Preprocessor) phiên bản 7.4 / 8.1.
- Cơ sở dữ liệu: MySQL Server 8.0 CE (Relational Database Management System - RDBMS).
- Web Server: Apache HTTP Server 2.4 (thuộc gói tích hợp XAMPP).
- Công cụ phân tích và thiết kế: IBM Rational Rose 7.0 (mô hình hóa Use Case, Entity Class Diagram), Microsoft Visio, MySQL Workbench 8.0 CE.
- Yêu cầu hạ tầng máy chủ tiêu chuẩn:
- CPU: 1 x Intel Xeon E5-2600 series (E5-2660 / E5-2670 / E5-2680).
- RAM: 32GB DDR3 ECC.
- Lưu trữ: 2 x 240GB SSD (Cấu hình Hardware RAID H310 / H710).
- Băng thông mạng: Cổng kết nối tối thiểu 200Mbps, 02 IP tĩnh.
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Cơ sở dữ liệu bao gồm 7 thực thể cốt lõi được chuẩn hóa bậc 3 (3NF):
-- Cấu trúc các bảng dữ liệu cốt lõi của hệ thống quản lý rạp
CREATE TABLE NguoiDung (
IDNguoiDung INT AUTO_INCREMENT PRIMARY KEY,
TenTK VARCHAR(50) NOT NULL UNIQUE,
MatKhau VARCHAR(255) NOT NULL,
Quyen INT NOT NULL DEFAULT 0, -- 0: Khách hàng, 1: Nhân viên, 2: Quản lý
HoTen VARCHAR(50) NOT NULL,
GioiTinh VARCHAR(10),
Email VARCHAR(45) NOT NULL,
SDT VARCHAR(15),
VaiTro VARCHAR(45)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE Phim (
IDPhim INT AUTO_INCREMENT PRIMARY KEY,
TenPhim VARCHAR(100) NOT NULL,
TheLoai VARCHAR(45),
QuocGia VARCHAR(45),
DaoDien VARCHAR(50),
DienVien VARCHAR(100),
ThoiLuong INT NOT NULL,
ImageLink VARCHAR(255),
MoTa TEXT,
IDNguoiDung INT,
FOREIGN KEY (IDNguoiDung) REFERENCES NguoiDung(IDNguoiDung)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE Phong (
TenPhong VARCHAR(100) PRIMARY KEY
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE Ghe (
SoGhe VARCHAR(10) NOT NULL,
TenPhong VARCHAR(100) NOT NULL,
PRIMARY KEY (SoGhe, TenPhong),
FOREIGN KEY (TenPhong) REFERENCES Phong(TenPhong) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE SuatChieu (
IDSuatChieu INT AUTO_INCREMENT PRIMARY KEY,
GiaVe INT NOT NULL,
NgayGioChieu DATETIME NOT NULL,
IDPhim INT NOT NULL,
TenPhong VARCHAR(100) NOT NULL,
FOREIGN KEY (IDPhim) REFERENCES Phim(IDPhim) ON DELETE CASCADE,
FOREIGN KEY (TenPhong) REFERENCES Phong(TenPhong) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE VeBan (
IDVeBan INT AUTO_INCREMENT PRIMARY KEY,
ThoiDiem DATETIME NOT NULL,
IDSuatChieu INT NOT NULL,
IDNguoiDung INT NOT NULL,
TenPhong VARCHAR(100) NOT NULL,
SoGhe VARCHAR(10) NOT NULL,
FOREIGN KEY (IDSuatChieu) REFERENCES SuatChieu(IDSuatChieu),
FOREIGN KEY (IDNguoiDung) REFERENCES NguoiDung(IDNguoiDung),
FOREIGN KEY (SoGhe, TenPhong) REFERENCES Ghe(SoGhe, TenPhong)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE TinTuc (
IDTinTuc INT AUTO_INCREMENT PRIMARY KEY,
TenTinTuc VARCHAR(255) NOT NULL,
ImageLink VARCHAR(255),
NoiDung MEDIUMTEXT,
IDNguoiDung INT,
FOREIGN KEY (IDNguoiDung) REFERENCES NguoiDung(IDNguoiDung)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển gia tăng (Iterative Incremental Model) kết hợp tiếp cận Bottom-up trong thiết kế hướng đối tượng:
- Giai đoạn 1 (Tuần 1 - 2): Khảo sát thực tế hành vi người dùng tại Bình Dương, tổng hợp lý thuyết, thu thập yêu cầu từ 50+ khán giả.
- Giai đoạn 2 (Tuần 3 - 4): Xây dựng biểu đồ Use Case, thiết kế Entity Class Diagram và hiện thực hóa lược đồ cơ sở dữ liệu trên MySQL Workbench.
- Giai đoạn 3 (Tuần 5 - 6): Lập trình các module chức năng phía Server bằng PHP, thiết kế giao diện HTML5/CSS3/JavaScript trên Adobe Dreamweaver.
- Giai đoạn 4 (Tuần 7 - 8): Tích hợp giả lập thanh toán MoMo ATM, kiểm thử chức năng, tối ưu hóa câu truy vấn SQL và đóng gói nghiệm thu.
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
Hệ thống triển khai kiểm soát quyền truy cập dựa trên vai trò (Role-Based Access Control - RBAC) tại phiên làm việc (Session) của máy chủ nhằm ngăn chặn truy cập trái phép vào các trang quản trị.
1. Module Đăng nhập và Phân quyền (RBAC Session Management)
<?php
// login_process.php - Xác thực và phân quyền tài khoản
session_start();
require_once 'config/db_connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$tenTK = mysqli_real_escape_string($conn, $_POST['Tai_Khoan']);
$matKhau = $_POST['Mat_Khau']; // Trong thực tế kết hợp password_verify
$sql = "SELECT IDNguoiDung, TenTK, MatKhau, Quyen, HoTen, VaiTro
FROM NguoiDung
WHERE TenTK = '$tenTK' AND MatKhau = '$matKhau' LIMIT 1";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result) === 1) {
$user = mysqli_fetch_assoc($result);
// Lưu thông tin phiên bảo mật
$_SESSION['user_id'] = $user['IDNguoiDung'];
$_SESSION['username'] = $user['TenTK'];
$_SESSION['fullname'] = $user['HoTen'];
$_SESSION['role_code'] = (int)$user['Quyen']; // 0: User, 1: Staff, 2: Manager
$_SESSION['role_name'] = $user['VaiTro'];
// Điều hướng thông minh theo vai trò tác nhân
switch ($_SESSION['role_code']) {
case 2: // Quản lý
header("Location: admin/dashboard.php");
break;
case 1: // Nhân viên rạp
header("Location: staff/movie_management.php");
break;
default: // Khách hàng
header("Location: index.php");
break;
}
exit();
} else {
$_SESSION['error'] = "Tài khoản hoặc mật khẩu không chính xác!";
header("Location: login.php");
exit();
}
}
?>
2. Xử lý đặt vé và kiểm tra ghế trống theo thời gian thực
<?php
// booking_process.php - Xử lý kiểm tra ghế và tạo giao dịch đặt vé
session_start();
require_once 'config/db_connect.php';
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
$idSuatChieu = (int)$_POST['id_suat_chieu'];
$tenPhong = mysqli_real_escape_string($conn, $_POST['ten_phong']);
$soGhe = mysqli_real_escape_string($conn, $_POST['so_ghe']);
$idNguoiDung = (int)$_SESSION['user_id'];
$thoiDiem = date('Y-m-d H:i:s');
// Bắt đầu Transaction để tránh xung đột dữ liệu (Concurrency Control)
mysqli_begin_transaction($conn);
try {
// 1. Kiểm tra trạng thái ghế đã bị đặt trước đó trong suất chiếu hay chưa
$checkSql = "SELECT IDVeBan FROM VeBan
WHERE IDSuatChieu = $idSuatChieu
AND TenPhong = '$tenPhong'
AND SoGhe = '$soGhe' FOR UPDATE";
$checkRes = mysqli_query($conn, $checkSql);
if (mysqli_num_rows($checkRes) > 0) {
throw new Exception("Ghế số $soGhe tại phòng $tenPhong đã có người đặt!");
}
// 2. Chèn bản ghi vé bán mới
$insertSql = "INSERT INTO VeBan (ThoiDiem, IDSuatChieu, IDNguoiDung, TenPhong, SoGhe)
VALUES ('$thoiDiem', $idSuatChieu, $idNguoiDung, '$tenPhong', '$soGhe')";
mysqli_query($conn, $insertSql);
// Xác nhận giao dịch thành công
mysqli_commit($conn);
// Chuyển hướng sang cổng thanh toán MoMo ATM
$_SESSION['payment_ticket_id'] = mysqli_insert_id($conn);
header("Location: payment_momo.php?status=pending");
exit();
} catch (Exception $e) {
mysqli_rollback($conn);
$_SESSION['booking_error'] = $e->getMessage();
header("Location: booking.php?showtime_id=$idSuatChieu");
exit();
}
?>
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box Testing) và kiểm thử hiệu năng truy vấn trên môi trường cục bộ và mạng LAN:
| Kịch bản kiểm thử (Test Scenario) |
Số lượng Test Cases |
Kết quả đạt (Pass Rate) |
Ghi chú kỹ thuật |
| Xác thực & Phân quyền RBAC |
12 |
100% |
Phân tách chuẩn xác 3 quyền (Admin/Staff/Customer) |
| Tìm kiếm phim & Lọc lịch chiếu |
8 |
100% |
Thời gian truy vấn SQL < 12ms trên 1.000 bản ghi |
| Đặt vé & Khóa ghế thời gian thực |
15 |
100% |
Xử lý thành công điều kiện tranh chấp ghế (Locking) |
| Tích hợp thanh toán MoMo ATM OTP |
10 |
100% |
Xác thực OTP chính xác, xử lý callback hoàn tất vé |
| Xuất báo cáo doanh thu ra Excel |
5 |
100% |
Khớp 100% dữ liệu kế toán theo tháng/theo phim |
- Hiệu năng hệ thống:
- Tốc độ phản hồi trang chủ trung bình: 180ms.
- Tốc độ tải sơ đồ chọn ghế: 240ms.
- Tỷ lệ lỗi giao dịch đồng thời (100 concurrent requests): 0.00%.
Đổi mới và đóng góp
Cải tiến kỹ thuật nổi bật
- Thiết kế phân phòng và số ghế động: Khác với các hệ thống rạp tĩnh gán cứng số ghế vào mã phim, kiến trúc cơ sở dữ liệu của đề tài tách biệt hoàn toàn bảng
Phong và bảng Ghe (sử dụng khóa phức hợp (SoGhe, TenPhong)), cho phép một rạp tùy biến số lượng ghế linh hoạt trên từng phòng chiếu mà không làm thay đổi cấu trúc bảng SuatChieu.
- Quy trình thanh toán MoMo ATM khép kín: Hệ thống giả lập và tích hợp quy trình thanh toán MoMo ATM 2 bước với mã xác thực OTP bảo mật qua số điện thoại, giúp người dùng làm quen với trải nghiệm thanh toán không tiền mặt tiêu chuẩn.
- Module báo cáo doanh thu động: Tự động hóa quá trình tổng hợp doanh thu theo từng bộ phim và khoảng thời gian thực tế, hỗ trợ người quản lý ra quyết định tăng/giảm suất chiếu dựa trên tỷ lệ lấp đầy rạp.
Bảng so sánh với các giải pháp hiện hành
| Tiêu chí |
Hệ thống POS thủ công |
Nền tảng bên thứ 3 (MoMo/Shopee) |
Website Quản lý Rạp (Đề tài) |
| Chi phí tích hợp & duy trì |
Thấp nhưng chi phí nhân sự cao |
Trích hoa hồng 5 - 12% trên mỗi vé |
0% phí hoa hồng, tự chủ hệ thống |
| Thời gian đặt vé trung bình |
3 - 5 phút xếp hàng |
45 - 60 giây |
30 - 45 giây |
| Khả năng tùy biến suất chiếu |
Chậm, sửa thủ công |
Phụ thuộc API rạp lớn |
Tức thì trên giao diện quản trị |
| Kiểm soát dữ liệu khách hàng |
Không thu thập được |
Thuộc về bên thứ 3 |
Toàn quyền khai thác dữ liệu rạp |
Hiệu quả vận hành ghi nhận được:
[Tốc độ xuất vé] : +300% nhanh hơn so với bán vé quầy
[Chi phí quản lý] : -70% chi phí lập bảng biểu và kế toán
[Độ chính xác dữ liệu] : 100% loại bỏ hiện tượng trùng lặp chỗ ngồi
Ứng dụng thực tế và triển khai
Trường hợp sử dụng thực tế (Real-world Use Cases)
- Cụm rạp chiếu phim độc lập / Địa phương: Các rạp tư nhân hoặc trung tâm văn hóa điện ảnh cấp tỉnh/huyện có thể sử dụng trực tiếp mã nguồn để vận hành hệ sinh thái đặt vé trực tuyến độc lập với kinh phí cực kỳ tiết kiệm.
- Mở rộng sang các ngành dịch vụ đặt chỗ tương tự: Kiến trúc cơ sở dữ liệu và luồng nghiệp vụ của đề tài hoàn toàn có thể tái cấu trúc (re-factor) thành nền tảng đặt phòng khách sạn, đặt bàn tiệc nhà hàng hoặc đặt chỗ xe khách liên tỉnh nhờ tính tương đồng của bài toán quản lý tài nguyên theo khung giờ.
Hướng dẫn triển khai và Cấu hình máy chủ
+-----------------------------------------------------------------------+
| HƯỚNG DẪN TRIỂN KHAI HỆ THỐNG TRÊN MÔI TRƯỜNG LINUX / APACHE / MYSQL |
+-----------------------------------------------------------------------+
Bước 1: Cài đặt Web Server Stack
$ sudo apt update && sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql -y
Bước 2: Khởi tạo Cơ sở dữ liệu
$ mysql -u root -p
mysql> CREATE DATABASE quanly_rapchieuphim CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> source /path/to/database_schema.sql;
Bước 3: Triển khai Source Code
$ git clone https://github.com/hoangtrungphong/cinema-management.git /var/www/html/cinema
$ chown -R www-data:www-data /var/www/html/cinema
$ chmod -R 755 /var/www/html/cinema
Bước 4: Cấu hình kết nối Cơ sở dữ liệu
Chỉnh sửa tệp config/db_connect.php với thông tin DB_USER, DB_PASS và DB_NAME tương ứng.
+-----------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit Analysis)
- Chi phí đầu tư ban đầu: Rất thấp do sử dụng hoàn toàn nền tảng mã nguồn mở (Apache, PHP, MySQL) và công cụ miễn phí.
- Thời gian hoàn vốn (ROI): Ước tính từ 3 - 6 tháng thông qua việc cắt giảm tối thiểu 2 nhân sự trực quầy bán vé và tăng 25% doanh số bán vé nhờ kênh tiếp thị trực tuyến.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Cơ chế khóa ghế đồng thời: Hiện tại việc kiểm tra ghế trống dựa trên Transaction và khóa bảng
FOR UPDATE trong MySQL; khi lượng người dùng đồng thời vượt quá 1.000 requests/giây có thể xuất hiện độ trễ (latency).
- Thiếu thông báo thời gian thực: Chưa tích hợp giao thức WebSocket để cập nhật trực tiếp trạng thái ghế đổi màu trên màn hình của các khách hàng khác nhau mà vẫn phụ thuộc vào tải lại trang (Page Reload) hoặc AJAX Polling.
- Nền tảng ứng dụng: Hiện tại chỉ cung cấp giao diện Web Responsive, chưa đóng gói thành ứng dụng di động chuyên biệt (iOS/Android).
Hướng phát triển trong tương lai
- Ứng dụng Redis In-Memory Cache: Triển khai Redis để lưu trữ tạm thời trạng thái ghế đang giữ trong 5 phút (Seat Hold Lock), giảm tải 80% truy vấn đọc/ghi trực tiếp vào MySQL.
- Nâng cấp Real-time với Socket.IO / WebSockets: Cập nhật sơ đồ ghế tức thì theo thời gian thực (Real-time seat mapping) khi có khách hàng vừa chọn ghế.
- Tích hợp Vé điện tử QR Code: Tự động gửi vé kèm mã QR qua Email/SMS và xây dựng ứng dụng Scanner trên thiết bị di động cho nhân viên soát vé tại cửa rạp.
- Phát triển thuật toán gợi ý phim (Recommendation System): Ứng dụng Machine Learning cơ bản dựa trên lịch sử xem phim của tài khoản để đề xuất các bộ phim sắp chiếu phù hợp.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI HỆ THỐNG |
+-----------------------------------------------------------------------------------------+
| [Sinh viên CNTT] --> Nghiên cứu mã nguồn mẫu PHP-MySQL, mô hình phân tích UML chuẩn |
| [Lập trình viên] --> Tham khảo kiến trúc RBAC, xử lý Transaction đặt vé và tích hợp API |
| [Chủ doanh nghiệp] --> Sở hữu giải pháp quản lý rạp B2C chi phí thấp, tối ưu lợi nhuận |
| [Nhà nghiên cứu] --> Cung cấp dữ liệu thực nghiệm về hành vi tiêu dùng giải trí B2C |
+-----------------------------------------------------------------------------------------+
- Sinh viên chuyên ngành CNTT / Phần mềm: Nắm vững quy trình phát triển một ứng dụng web hướng đối tượng hoàn chỉnh từ khâu khảo sát thực tế, phân tích biểu đồ Use Case, thiết kế cơ sở dữ liệu quan hệ đến triển khai mã nguồn.
- Lập trình viên Web (Web Developers): Nhận được bộ khung cấu trúc chuẩn cho bài toán kinh doanh B2C đặt chỗ (booking system), kỹ thuật xử lý phân quyền 3 cấp và kinh nghiệm xử lý giao dịch dữ liệu.
- Doanh nghiệp và Cụm rạp địa phương: Sở hữu ngay phương án chuyển đổi số toàn diện với chi phí 0 đồng tiền bản quyền phần mềm, chủ động hoàn toàn trong quản lý dữ liệu kinh doanh.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để triển khai máy chủ web là gì?
Hệ thống có thể vận hành ổn định trên máy chủ chạy hệ điều hành Linux (Ubuntu Server 20.04/22.04 LTS) hoặc Windows Server với cấu hình tối thiểu: 1 vCPU (2.0 GHz trở lên), 2GB RAM, 20GB dung lượng ổ cứng SSD và cài đặt sẵn môi trường PHP 7.4+ cùng MySQL 8.0.
2. Làm thế nào để giải quyết triệt để tình trạng hai người cùng đặt một ghế tại cùng một thời điểm?
Hệ thống sử dụng cơ chế kiểm soát tranh chấp đồng thời thông qua tính năng TRANSACTION kết hợp khóa hàng dữ liệu SELECT ... FOR UPDATE của MySQL InnoDB Engine. Khi một giao dịch đang xử lý đặt vé cho ghế $soGhe tại $idSuatChieu, hàng dữ liệu đó sẽ bị khóa tạm thời; yêu cầu đến sau sẽ nhận thông báo ghế đã được đặt và giao dịch tự động Rollback an toàn.
3. Hệ thống có hỗ trợ tích hợp thêm các cổng thanh toán khác như VNPAY, ZaloPay không?
Có. Nhờ thiết kế module hóa hướng đối tượng, việc tích hợp thêm các cổng thanh toán như VNPAY, ZaloPay hoặc Viettel Money chỉ yêu cầu thêm tệp Controller xử lý tạo URL thanh toán và tiếp nhận Webhook/IPN trả về từ nhà cung cấp mà không cần thay đổi cấu trúc cơ sở dữ liệu cốt lõi.
4. Chi phí duy trì hệ thống ước tính hàng tháng là bao nhiêu?
Đối với một rạp chiếu phim quy mô vừa (3 - 5 phòng chiếu, lượng truy cập 20.000 lượt/tháng), chi phí thuê máy chủ ảo (Cloud VPS) chỉ dao động từ 150.000 – 300.000 VNĐ/tháng, chi phí tên miền khoảng 250.000 VNĐ/năm, hoàn toàn không tốn phí bản quyền phần mềm.
5. Dữ liệu báo cáo xuất ra file Excel được xử lý như thế nào?
Module báo cáo truy vấn tổng hợp dữ liệu từ các bảng VeBan, SuatChieu, Phim thông qua các hàm gom nhóm COUNT(IDVeBan), SUM(GiaVe), GROUP BY IDPhim, MONTH(ThoiDiem). Kết quả được định dạng theo chuẩn bảng tính MIME type application/vnd.ms-excel cho phép người quản lý tải trực tiếp về máy tính để lưu trữ và phân tích.
Kết luận
Đề tài tốt nghiệp "Xây dựng Website Quản lý Rạp chiếu phim" của sinh viên Hoàng Trung Phong đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn đề ra. Đồ án không chỉ hệ thống hóa nền tảng lý thuyết phân tích thiết kế hệ thống thông tin hướng đối tượng mà còn tạo ra một sản phẩm phần mềm hoàn chỉnh, đáp ứng đầy đủ các nghiệp vụ khắt khe của mô hình thương mại điện tử B2C.
Với kiến trúc 3 tầng vững chắc trên nền tảng PHP & MySQL, hệ thống đã chứng minh được tính khả thi cao, khả năng vận hành ổn định, giao diện thân thiện và sẵn sàng chuyển giao ứng dụng cho các cụm rạp chiếu phim thực tế. Đề tài mở ra tiềm năng lớn để tiếp tục nâng cấp, tích hợp công nghệ Real-time và trí tuệ nhân tạo, đóng góp thiết thực vào công cuộc số hóa ngành dịch vụ bán lẻ và giải trí hiện đại.