Bối cảnh và vấn đề nghiên cứu
Sự chuyển dịch mạnh mẽ của công nghệ số đã thúc đẩy việc ứng dụng các nền tảng trực tuyến vào nhiều ngành dịch vụ, trong đó có ngành công nghiệp điện ảnh. Khóa luận tốt nghiệp kỹ sư ngành Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (thực hiện bởi sinh viên Nguyễn Ngọc Hải và Trần Văn Nguyên, dưới sự hướng dẫn của ThS. Trương Thị Khánh Dịp, mã số tài liệu SKL013888, tháng 6 năm 2024) tập trung giải quyết bài toán xây dựng hệ thống bán vé xem phim trực tuyến nhằm tối ưu hóa quy trình phân phối vé và nâng cao trải nghiệm của khán giả.
Theo trình bày của tác giả, hệ thống bán vé xem phim trực tuyến đáp ứng nhu cầu xem phim ngày càng cao bằng cách cung cấp thông tin lịch chiếu, vị trí chỗ ngồi và các suất chiếu theo thời gian thực. Giải pháp này giúp khán giả chủ động lựa chọn, rút ngắn thời gian xếp hàng tại quầy vé truyền thống. Về phía đơn vị vận hành rạp và nhà sản xuất, hệ thống cung cấp công cụ quản lý doanh số bán vé, thông tin khách hàng và thu nhập từ các suất chiếu, tạo cơ sở dữ liệu hỗ trợ công tác hoạch định chiến lược kinh doanh.
Nhiệm vụ của luận văn được xác định theo 5 nội dung chính:
- Tìm hiểu công nghệ NestJS, MongoDB, Firebase và ReactJS.
- Thiết kế phần mềm hoàn chỉnh dựa trên những công nghệ đã tìm hiểu.
- Tìm hiểu và thực hiện kiểm thử phần mềm.
- Đánh giá ưu, nhược điểm và đưa ra hướng phát triển của phần mềm.
- Hiểu được quy trình và cách thức hoạt động của một sản phẩm thực tế.
Mục tiêu cụ thể của đề tài bao gồm:
- Phát triển Hệ thống Web Bán Vé Xem Phim Trực Tuyến với giao diện tương tác, cho phép người dùng xem thông tin phim, lịch chiếu, đặt vé và thanh toán trực tuyến.
- Tối ưu hóa Trải Nghiệm Người Dùng thông qua thiết kế giao diện linh hoạt, tích hợp chức năng tìm kiếm phim, chọn ghế ngồi trực quan và quản lý hồ sơ cá nhân.
- Áp dụng Kiến Thức Chuyên Ngành vào việc thiết kế cơ sở dữ liệu, bảo mật dữ liệu người dùng và đảm bảo hệ thống vận hành ổn định trong quá trình xử lý giao dịch.
- Tích Hợp Kỹ Năng Lập Trình và Thiết Kế khi sử dụng TypeScript, NodeJS, CSS và các framework hiện đại theo tiêu chuẩn UX/UI.
- Cải Thiện Hệ Thống Liên Tục nhằm duy trì khả năng thích ứng dựa trên phản hồi của người dùng và xu hướng công nghệ mới.
Đối tượng nghiên cứu của đề tài là quy trình đặt vé xem phim trực tuyến, nhu cầu tra cứu thông tin điện ảnh (trailer, đánh giá phim), cùng các công nghệ hiện thực hóa bao gồm kiến trúc RESTful API, NestJS, cơ sở dữ liệu NoSQL MongoDB, thư viện ReactJS và cơ chế xác thực JSON Web Token (JWT).
Phạm vi nghiên cứu được phân định trên 4 khía cạnh kỹ thuật và quản lý:
- Trải nghiệm người dùng: Phân tích, cải thiện giao diện đặt vé; đảm bảo tính tương thích trên nhiều nền tảng, thiết bị; tối ưu hóa luồng tìm kiếm, chọn suất chiếu và thanh toán.
- Quản lý hệ thống và dữ liệu: Tổ chức lưu trữ dữ liệu lịch chiếu, khách hàng; mã hóa và bảo mật thông tin cá nhân cùng dữ liệu giao dịch.
- Quản lý kinh doanh và marketing: Tích hợp cơ chế hỗ trợ quảng cáo, chương trình khuyến mãi; phân tích dữ liệu doanh thu và doanh số vé theo suất chiếu.
- Quản lý hệ thống và kỹ thuật: Đảm bảo hiệu suất vận hành ổn định trong các khung giờ cao điểm và duy trì khả năng nâng cấp chức năng.
- Phạm vi thời gian và địa bàn: Đề tài được triển khai từ ngày 04/03/2024 đến ngày 22/06/2024 tại Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật TP.HCM, kết hợp khảo sát thực tế tại các hệ thống rạp chiếu phim lớn tại Việt Nam gồm CGV Vietnam, Lotte Cinema Vietnam và Galaxy Cinema.
Cơ sở lý thuyết và công nghệ ứng dụng
Đề tài sử dụng mô hình phát triển web hiện đại tách biệt giữa tầng hiển thị (Front-End) và tầng dịch vụ nghiệp vụ (Back-End), giao tiếp thông qua kiến trúc RESTful API.
| Phân tầng hệ thống |
Công nghệ / Thư viện chính |
Vai trò kỹ thuật trong hệ thống |
| Front-End |
ReactJS |
Xây dựng ứng dụng Single Page Application (SPA), sử dụng Virtual DOM để tối ưu hóa việc cập nhật giao diện và cơ chế luồng dữ liệu một chiều (one-way data binding) truyền dữ liệu qua Props và State. Hỗ trợ cú pháp JSX. |
|
Axios |
Thư viện HTTP client dựa trên JavaScript Promise phục vụ kết nối và gọi API từ trình duyệt đến máy chủ. |
|
Tailwind CSS & Ant Design (Antd) |
Tailwind CSS cung cấp hệ thống utility-first class để dàn trang linh hoạt; Ant Design cung cấp bộ component giao diện chuẩn hóa. |
|
React Router |
Điều hướng trang và quản lý tham số URL, lịch sử duyệt (history). |
|
React Hook Form & Yup |
React Hook Form quản lý trạng thái form; Yup cung cấp schema xác thực tính hợp lệ của dữ liệu đầu vào. |
|
React Query |
Quản lý trạng thái bất đồng bộ và tìm nạp dữ liệu (caching, fetching data). |
|
I18n & React Helmet |
I18n hỗ trợ đa ngôn ngữ và định dạng vùng địa lý; React Helmet tùy biến các thẻ <head> HTML hỗ trợ tối ưu hóa công cụ tìm kiếm (SEO). |
| Back-End |
NestJS Framework |
Khung làm việc xây dựng trên NodeJS, hỗ trợ TypeScript kết hợp các mô hình OOP, FP, FRP. Kiến trúc chia module (root module và submodule), sử dụng Middleware, Interceptor, Exception Filter và Dependency Injection (DI). |
|
Mongoose |
Thư viện mô hình hóa đối tượng (ODM) quản lý schema, quan hệ dữ liệu và ánh xạ đối tượng giữa mã nguồn với MongoDB. |
|
JSON Web Token (JWT) |
Tiêu chuẩn mở RFC 7519 dùng cho xác thực và phân quyền, cấu trúc 3 phần (Header, Payload, Signature) mã hóa bằng HMAC hoặc RSA. |
|
Google Auth Library |
Thư viện hỗ trợ xác thực và ủy quyền người dùng qua giao thức Google OAuth 2.0. |
|
Dotenv, Moment, CORS |
Dotenv nạp biến môi trường từ tệp .env; Moment xử lý định dạng ngày giờ; CORS thiết lập cơ chế kiểm soát chia sẻ tài nguyên giữa các domain. |
|
Firebase |
Nền tảng hỗ trợ lưu trữ và dịch vụ bổ trợ. |
| Cơ sở dữ liệu |
MongoDB |
Hệ quản trị cơ sở dữ liệu NoSQL lưu trữ tài liệu dưới dạng JSON/BSON. Hỗ trợ nhân bản (Replication), phân mảnh (Sharding) cân bằng tải qua Shard key, hệ thống tệp GridFS lưu tệp lớn, khung tổng hợp (Aggregation Pipeline) và Capped Collection giới hạn kích thước. |
Khảo sát hiện trạng và xác định yêu cầu hệ thống
Trước khi tiến hành thiết kế phần mềm, nhóm nghiên cứu đã khảo sát hiện trạng ba hệ thống bán vé xem phim trực tuyến phổ biến tại Việt Nam nhằm đúc kết ưu điểm và xác định các điểm hạn chế cần khắc phục:
| Hệ thống rạp khảo sát |
Ưu điểm ghi nhận |
Hạn chế và điểm cần cải thiện |
| CGV Vietnam |
Giao diện trực quan; cung cấp đầy đủ thông tin phim, lịch chiếu, thể loại, diễn viên; hỗ trợ đa dạng phương thức thanh toán; nhiều chương trình khuyến mãi và combo ưu đãi. |
Tốc độ tải trang chưa cao; trải nghiệm đặt vé thiếu mượt mà; tính năng tương tác hỗ trợ khách hàng hạn chế; quy trình đặt vé và đăng nhập còn phức tạp, tồn tại một số chức năng khó thao tác. |
| Lotte Cinema Vietnam |
Thông tin chi tiết kèm trailer và lịch chiếu trực quan; phương thức thanh toán linh hoạt qua thẻ tín dụng, chuyển khoản và cổng trực tuyến. |
Giao diện trang web chưa thật sự linh hoạt; trải nghiệm người dùng chưa cao; hệ thống tương tác và hỗ trợ kỹ thuật cho người dùng cần được cải thiện. |
| Galaxy Cinema |
Cung cấp đầy đủ thông tin phim và lịch chiếu; hỗ trợ thanh toán linh hoạt qua nhiều kênh điện tử. |
Giao diện trang web cần cải thiện độ linh hoạt để tăng tính thuận tiện và hấp dẫn khi người dùng thao tác. |
Từ kết quả khảo sát, hệ thống được thiết lập các yêu cầu kỹ thuật:
- Yêu cầu chức năng:
- Xem danh sách phim: Cung cấp danh sách phim đang chiếu kèm thông tin chi tiết (tựa đề, thể loại, diễn viên, thời lượng, mô tả).
- Đặt vé: Cho phép người dùng chọn phim, suất chiếu và vị trí ghế ngồi trực quan trên sơ đồ phòng chiếu.
- Thanh toán: Tích hợp quy trình xử lý giao dịch mua vé an toàn.
- Quản lý lịch chiếu: Cho phép quản trị viên thêm mới, cập nhật hoặc xóa lịch chiếu phim.
- Quản lý tài khoản: Hỗ trợ quản lý thông tin cá nhân, cập nhật dữ liệu và đổi mật khẩu.
- Xác nhận đặt vé: Tự động gửi thông báo xác nhận đơn đặt vé sau khi giao dịch hoàn tất.
- Yêu cầu phi chức năng:
- Hiệu suất: Xử lý đồng thời nhiều giao dịch đặt vé trong khung giờ cao điểm.
- Bảo mật: Mã hóa thông tin cá nhân và dữ liệu thanh toán.
- Khả năng mở rộng: Cấu trúc phần mềm hỗ trợ mở rộng thêm cụm rạp và tính năng mới.
- Đáng tin cậy và ổn định: Giảm thiểu lỗi hệ thống và có khả năng khôi phục khi gặp sự cố.
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc phân lớp, mô hình hóa các thực thể dữ liệu trên cơ sở dữ liệu MongoDB và thiết lập luồng nghiệp vụ qua hệ thống sơ đồ UML.
Thiết kế cơ sở dữ liệu
Cơ sở dữ liệu của hệ thống bao gồm 12 bảng (collections) lưu trữ các thực thể nghiệp vụ:
| Tên bảng (Collection) |
Mục đích lưu trữ dữ liệu |
users |
Thông tin tài khoản người dùng, email, mật khẩu mã hóa, thông tin liên hệ và phân quyền. |
banners |
Dữ liệu hình ảnh và liên kết quảng cáo biểu ngữ trên giao diện trang chủ. |
bookings |
Chi tiết các đơn đặt vé của khách hàng, trạng thái thanh toán và thông tin giao dịch. |
combos |
Danh mục các gói sản phẩm bắp nước kết hợp khuyến mãi. |
products |
Thông tin các mặt hàng đồ ăn, nước uống bán lẻ tại rạp. |
genres |
Danh mục phân loại thể loại phim (hành động, tâm lý, hài, v.v.). |
movies |
Thông tin chi tiết phim: tên phim, đạo diễn, diễn viên, thời lượng, ngày phát hành, mô tả, trailer. |
theaters |
Dữ liệu về các cụm rạp chiếu phim trong hệ thống (tên rạp, địa chỉ, khu vực). |
rooms |
Danh sách phòng chiếu trực thuộc từng cụm rạp. |
ticket_price |
Bảng định mức giá vé áp dụng theo loại ghế, phòng chiếu và khung giờ. |
showtimes |
Lịch chiếu chi tiết, liên kết giữa phim, phòng chiếu, ngày và giờ bắt đầu. |
seats |
Sơ đồ ghế ngồi trong từng phòng chiếu, loại ghế và trạng thái (trống, đang giữ, đã đặt). |
Thiết kế giao diện và luồng tương tác
Giao diện người dùng được phân chia thành hai phân hệ riêng biệt với tổng cộng 46 màn hình chi tiết:
- Phía người dùng (26 màn hình): Bao gồm luồng màn hình không cần xác thực (đăng ký tài khoản - 001, xác nhận tài khoản - 002, đăng nhập - 003, quên mật khẩu - 004, xác nhận quên mật khẩu - 005, thanh điều hướng - 006, trang chủ - 007, danh sách phim - 008, danh sách lịch chiếu - 009, chi tiết phim - 012) và luồng màn hình yêu cầu xác thực (chọn danh sách ghế - 013, chi tiết thanh toán - 014, thông tin cá nhân - 015, quản lý vé đã đặt).
- Phía quản trị viên (20 màn hình): Đăng nhập trang quản lý (001), quên mật khẩu quản lý (002, 003), thanh điều hướng quản trị (004), quản lý phim (005), thêm/cập nhật phim (005), quản lý banner (006), thêm/cập nhật banner (006), quản lý rạp chiếu (007), thêm/cập nhật rạp chiếu, quản lý người dùng (008), thêm/cập nhật người dùng (008), quản lý combo (009), thêm/cập nhật combo (009), quản lý lịch chiếu (010), thêm/cập nhật lịch chiếu (010), quản lý vé đặt (011), quản lý thông tin cá nhân (012) và đổi mật khẩu (013).
Kế hoạch triển khai và kiểm thử
Dự án được xây dựng và triển khai thực nghiệm theo tiến độ 12 giai đoạn:
- Nghiên cứu đề tài và lập danh sách yêu cầu (04/03/2024 – 10/03/2024).
- Khảo sát hiện trường tại các rạp chiếu phim (11/03/2024 – 15/03/2024).
- Phân tích yêu cầu và mô hình hóa (16/03/2024 – 20/03/2024).
- Thiết kế giao diện người dùng UI/UX (21/03/2024 – 31/03/2024).
- Thiết kế cơ sở dữ liệu ERD và các bảng dữ liệu (01/04/2024 – 07/04/2024).
- Thiết kế các lược đồ UML (Activity, Sequence, Class diagrams) (08/04/2024 – 14/04/2024).
- Lập kế hoạch phát triển chi tiết và phân công nhiệm vụ (15/04/2024 – 17/04/2024).
- Xây dựng Back-End, Front-End và tích hợp hệ thống (18/04/2024 – 18/05/2024).
- Kiểm thử hệ thống giai đoạn 1: Kiểm thử chức năng cơ bản, sửa lỗi (19/05/2024 – 21/05/2024).
- Phát triển và hoàn thiện các chức năng nâng cao (22/05/2024 – 02/06/2024).
- Kiểm thử hệ thống giai đoạn 2: Kiểm thử toàn bộ hệ thống và tối ưu hóa (03/06/2024 – 06/06/2024).
- Triển khai thử nghiệm cho người dùng thực tế và hoàn thành báo cáo (07/06/2024 – 22/06/2024).
Nội dung chính theo từng chương
CHƯƠNG 1 TỔNG QUAN
Chương 1 thiết lập cơ sở khoa học của đề tài. Tác giả phân tích tính cấp thiết của việc áp dụng hệ thống bán vé trực tuyến trong thời đại số hóa, làm rõ lợi ích đối với cả người xem và doanh nghiệp quản lý rạp chiếu. Chương này xác định đối tượng nghiên cứu là quy trình đặt vé và bộ công nghệ NestJS, ReactJS, MongoDB, JWT; phân định phạm vi nghiên cứu trên 4 trụ cột: trải nghiệm người dùng, quản trị dữ liệu, kinh doanh marketing và hiệu năng kỹ thuật; đồng thời công bố 5 mục tiêu cụ thể cùng ý nghĩa khoa học và giá trị thực tiễn của khóa luận.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Chương 2 trình bày có hệ thống các nền tảng kỹ thuật được lựa chọn. Tác giả phân tích sâu cơ chế hoạt động của ReactJS gồm Virtual DOM, One-way data binding, Props, State và JSX; cùng hệ sinh thái thư viện bổ trợ giao diện (Axios, Tailwind CSS, Ant Design, React Router, React Hook Form, Yup, React Query, I18n, React Helmet). Về phía Back-End, chương làm rõ kiến trúc module của NestJS, cơ chế Dependency Injection, Middleware, Interceptors và Exception Filters; phân tích đặc tính CSDL NoSQL MongoDB gồm Replication, Sharding, GridFS, Aggregation Pipeline; cùng các giải pháp an toàn thông tin qua chuẩn JSON Web Token (RFC 7519) và Google OAuth 2.0.
CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU
Chương 3 tổng hợp dữ liệu khảo sát thực tế từ CGV Vietnam, Lotte Cinema Vietnam và Galaxy Cinema. Trên cơ sở đó, tác giả cụ thể hóa 6 yêu cầu chức năng và 4 yêu cầu phi chức năng. Trọng tâm của chương là việc mô hình hóa yêu cầu thông qua lược đồ Use Case cho Người dùng và Quản trị viên, đi kèm tài liệu đặc tả chi tiết 17 Use Case nghiệp vụ chính:
- Bảng 3.1: Đặc tả usecase xem danh sách phim.
- Bảng 3.2: Đặc tả usecase xem chi tiết từng bộ phim.
- Bảng 3.3: Đặc tả usecase xem lịch chiếu.
- Bảng 3.4: Đặc tả usecase đăng nhập vào tài khoản.
- Bảng 3.5: Đặc tả usecase đăng ký tài khoản mới.
- Bảng 3.6: Đặc tả usecase tìm kiếm phim và lịch chiếu.
- Bảng 3.7: Đặc tả usecase đặt vé.
- Bảng 3.8: Đặc tả usecase thanh toán vé đã chọn.
- Bảng 3.9: Đặc tả usecase xem thông tin vé đã đặt.
- Bảng 3.10: Đặc tả usecase xem thông tin cá nhân.
- Bảng 3.11: Đặc tả usecase cập nhật thông tin cá nhân.
- Bảng 3.12: Đặc tả usecase thêm mới bộ phim.
- Bảng 3.13: Đặc tả usecase sửa thông tin phim.
- Bảng 3.14: Đặc tả usecase thêm lịch chiếu.
- Bảng 3.15: Đặc tả usecase sửa thông tin lịch chiếu.
- Bảng 3.16: Đặc tả usecase xem danh sách vé đặt.
- Bảng 3.17: Đặc tả usecase quản lý tài khoản người dùng.
Mỗi bảng đặc tả đều xác định đầy đủ Actor, Tiền điều kiện, Hậu điều kiện, Luồng cơ bản (thành công) và các Luồng thay thế (thất bại).
CHƯƠNG 4 THIẾT KẾ PHẦN MỀM
Chương 4 hiện thực hóa các yêu cầu thành mô hình kỹ thuật chi tiết. Phần thiết kế hành vi bao gồm 9 lược đồ hoạt động (Activity Diagrams) cho các chức năng xem thông tin cá nhân, cập nhật phim, cập nhật lịch chiếu, quản lý đơn đặt vé, xem thống kê, đặt vé, xem thông tin lịch chiếu; cùng 18 lược đồ tuần tự (Sequence Diagrams) mô tả luồng tương tác giữa client, server và cơ sở dữ liệu. Phần thiết kế cấu trúc trình bày lược đồ thực thể liên kết và đặc tả chi tiết 12 bảng dữ liệu MongoDB. Phần thiết kế giao diện hoàn thiện sơ đồ luồng điều hướng màn hình xác thực/không xác thực và chi tiết 46 màn hình chức năng.
CHƯƠNG 5 CÀI ĐẶT VÀ KIỂM THỬ
Chương 5 ghi lại quy trình hiện thực hóa mã nguồn và đánh giá chất lượng phần mềm. Nội dung chương bao gồm danh mục công cụ phát triển, quy trình cài đặt môi trường và các bước thực thi ứng dụng. Công tác kiểm thử được chia thành 2 giai đoạn: kiểm thử các chức năng cơ bản (19/05 – 21/05/2024) và kiểm thử toàn diện hệ sinh thái chức năng nâng cao (03/06 – 06/06/2024). Tác giả tổng hợp phạm vi kiểm thử (Bảng 5.1), kết quả kiểm thử tổng quát (Bảng 5.2) và kết quả kiểm thử chức năng chi tiết (Bảng 5.3), sau đó tiến hành triển khai thử nghiệm trên nhóm người dùng thực tế (07/06 – 14/06/2024).
CHƯƠNG 6 KẾT LUẬN
Chương 6 đánh giá mức độ hoàn thành nhiệm vụ của khóa luận. Về mặt lý thuyết, nhóm tác giả đã làm chủ kiến thức công nghệ về NestJS, ReactJS, MongoDB và kỹ thuật phân tích thiết kế hướng đối tượng bằng UML. Về mặt ứng dụng, đề tài đã phát triển thành công sản phẩm web bán vé xem phim trực tuyến hoàn chỉnh. Đồng thời, chương thẳng thắn chỉ ra các nhược điểm còn tồn tại của ứng dụng và đề xuất các phương hướng phát triển, nâng cấp hệ thống trong tương lai.
Kết quả và đóng góp
Khóa luận đã hoàn thành các mục tiêu đề ra với những kết quả kỹ thuật cụ thể:
- Hoàn thành đầy đủ 12 giai đoạn phát triển theo đúng kế hoạch đề cương từ ngày 04/03/2024 đến ngày 22/06/2024.
- Xây dựng hệ thống đặc tả hoàn chỉnh gồm 17 Use Case, 9 lược đồ hoạt động, 18 lược đồ tuần tự, mô hình hóa cấu trúc cơ sở dữ liệu NoSQL với 12 bảng dữ liệu và thiết kế chi tiết 46 màn hình giao diện người dùng và quản trị.
- Tích hợp thành công quy trình xác thực người dùng dựa trên chuẩn JSON Web Token (RFC 7519) và giao thức Google OAuth 2.0.
- Thực hiện kiểm thử phần mềm qua 2 đợt kiểm thử nội bộ và hoàn thành giai đoạn triển khai thử nghiệm thực tế với người dùng từ ngày 07/06/2024 đến 14/06/2024.
Về giải pháp và kiến nghị, tác giả đề xuất:
- Chuẩn hóa luồng đặt vé và giao diện người dùng nhằm khắc phục tình trạng gián đoạn, tải trang chậm và thao tác phức tạp vốn tồn tại ở các hệ thống khảo sát thực tế (CGV, Lotte Cinema, Galaxy Cinema).
- Ứng dụng kiến trúc Dependency Injection và phân chia Module trong NestJS để cô lập lỗi, giúp mã nguồn Back-End dễ bảo trì và mở rộng khi quy mô rạp gia tăng.
- Tận dụng cấu trúc dữ liệu linh hoạt của MongoDB (JSON document) để quản lý sơ đồ ghế ngồi và thông tin lịch chiếu biến động theo thời gian thực.
Về đóng góp học thuật và thực tiễn: Tác giả tự đánh giá đề tài đã hệ thống hóa phương pháp phân tích, thiết kế và hiện thực hóa một hệ thống thương mại điện tử chuyên ngành rạp chiếu phim từ khâu khảo sát nghiệp vụ thực tế tại thị trường Việt Nam đến sản phẩm phần mềm có thể vận hành thử nghiệm.
Hạn chế và hướng phát triển
Căn cứ theo văn bản khóa luận, hệ thống còn tồn tại một số hạn chế:
- Ứng dụng vẫn còn những nhược điểm kỹ thuật (được nhóm tác giả ghi nhận tại mục 6.2 Chương 6) cần tiếp tục tinh chỉnh sau giai đoạn thử nghiệm.
- Dữ liệu khảo sát hiện trạng chỉ tập trung vào ba hệ thống rạp tại Việt Nam (CGV, Lotte Cinema, Galaxy Cinema).
- Giai đoạn triển khai thử nghiệm người dùng thực tế diễn ra trong khoảng thời gian ngắn (từ 07/06/2024 đến 14/06/2024) nên tập dữ liệu phản hồi thực tế chưa đạt quy mô lớn.
Hướng phát triển tiếp theo được tác giả xác định:
- Hoàn thiện và nâng cấp các chức năng nâng cao dựa trên phản hồi của người dùng trong giai đoạn thử nghiệm.
- Tiếp tục tối ưu hóa hiệu suất xử lý giao dịch đồng thời của hệ thống trong các khung giờ cao điểm có lượng đặt vé lớn.
- Mở rộng khả năng liên kết hệ thống với nhiều chuỗi rạp chiếu khác nhau và đa dạng hóa thêm các phương thức thanh toán trực tuyến.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo hữu ích cho:
- Sinh viên chuyên ngành Công nghệ thông tin, Công nghệ phần mềm đang chuẩn bị thực hiện đồ án tốt nghiệp hoặc các dự án môn học về phát triển ứng dụng web thương mại điện tử, đặt vé trực tuyến.
- Lập trình viên muốn nghiên cứu giải pháp tích hợp công nghệ giữa Front-End (ReactJS, Tailwind CSS, Ant Design, React Hook Form, React Query) và Back-End (NestJS, TypeScript, MongoDB, Mongoose, JWT).
- Người phân tích hệ thống cần tài liệu tham khảo thực tế về mô hình hóa yêu cầu: Chương 3 và Chương 4 cung cấp mẫu đặc tả chi tiết 17 Use Case (kèm luồng cơ bản, luồng thay thế), hệ thống sơ đồ Activity, sơ đồ Sequence và thiết kế 12 bảng cơ sở dữ liệu NoSQL cho bài toán rạp chiếu phim.
Câu hỏi thường gặp
1. Đề tài đã khảo sát và phân tích hiện trạng những hệ thống bán vé nào tại Việt Nam?
Tác giả đã trực tiếp khảo sát ba hệ thống bán vé rạp chiếu phim gồm CGV Vietnam, Lotte Cinema Vietnam và Galaxy Cinema. Khảo sát chỉ rõ các ưu điểm về độ phong phú của thông tin phim và đa dạng kênh thanh toán, đồng thời chỉ ra các mặt hạn chế cần cải thiện như tốc độ tải trang chậm, giao diện chưa linh hoạt và quy trình đặt vé, đăng nhập còn phức tạp.
2. Cơ sở dữ liệu của hệ thống được tổ chức thành những bảng dữ liệu nào?
Hệ thống sử dụng cơ sở dữ liệu MongoDB gồm 12 bảng (collections) chuyên biệt: users (người dùng), banners (biểu ngữ), bookings (vé đã đặt), combos (gói khuyến mãi), products (bắp nước lẻ), genres (thể loại), movies (phim), theaters (rạp chiếu), rooms (phòng chiếu), ticket_price (giá vé), showtimes (lịch chiếu) và seats (sơ đồ ghế).
3. Hệ thống áp dụng những giải pháp công nghệ nào cho tầng Back-End và cơ chế an toàn dữ liệu?
Tầng Back-End được xây dựng bằng framework NestJS trên nền tảng NodeJS và TypeScript, ứng dụng nguyên lý Dependency Injection, Module, Middleware và Exception Filter. Tương tác cơ sở dữ liệu thông qua thư viện Mongoose ODM. Cơ chế bảo mật và phân quyền được xử lý bằng JSON Web Token (JWT) theo tiêu chuẩn RFC 7519 kết hợp xác thực người dùng qua Google OAuth 2.0 (sử dụng thư viện google-auth-library).
4. Quy trình kiểm thử và thử nghiệm hệ thống được tiến hành qua các mốc thời gian nào?
Quy trình kiểm thử được tổ chức thành 2 giai đoạn: Giai đoạn 1 từ 19/05/2024 đến 21/05/2024 tập trung vào kiểm tra các chức năng cơ bản; Giai đoạn 2 từ 03/06/2024 đến 06/06/2024 kiểm thử toàn diện các chức năng nâng cao và tối ưu hệ thống. Sau đó, từ 07/06/2024 đến 14/06/2024, hệ thống được triển khai thử nghiệm thực tế cho người dùng để tiếp nhận phản hồi trước khi nghiệm thu báo cáo vào ngày 22/06/2024.
5. Giao diện người dùng của hệ thống được cấu thành bởi những công nghệ và thư viện Front-End nào?
Phía Front-End được phát triển bằng ReactJS với cơ chế Virtual DOM và luồng dữ liệu một chiều (one-way data binding). Các thư viện bổ trợ bao gồm: Tailwind CSS và Ant Design (xây dựng UI), Axios (gọi API), React Router (định tuyến), React Hook Form và Yup (quản lý và xác thực form), React Query (truy vấn và lưu bộ nhớ đệm dữ liệu), I18n (đa ngôn ngữ) và React Helmet (quản lý thẻ meta cho SEO).
Kết luận
Khóa luận tốt nghiệp của sinh viên Nguyễn Ngọc Hải và Trần Văn Nguyên tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành trọn vẹn mục tiêu nghiên cứu và phát triển hệ thống bán vé xem phim trực tuyến. Thông qua việc kết hợp các công nghệ hiện đại gồm NestJS, ReactJS, MongoDB và JWT, đề tài đã giải quyết bài toán đặt vé từ khâu khảo sát thực tế, mô hình hóa chi tiết 17 Use Case đến cài đặt và kiểm thử 2 giai đoạn chặt chẽ. Hệ thống cung cấp giải pháp chuyển đổi số tiện lợi cho khán giả và đơn vị quản lý rạp, đồng thời là tài liệu tham khảo có giá trị học thuật cao về quy trình công nghệ phần mềm ứng dụng.