Bối cảnh và vấn đề nghiên cứu

Đề tài "Xây dựng website đặt vé xem phim sử dụng MERN Stack" do sinh viên Nguyễn Thu Ngân và Nguyễn Như Bảo Phương thực hiện dưới sự hướng dẫn của TS. Lê Văn Vinh tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (Khoa Đào tạo Chất lượng cao, ngành Công nghệ Thông tin, khóa 2018, bảo vệ tháng 12 năm 2022).

1. Lý do chọn đề tài và bối cảnh thực tiễn

Xem phim tại rạp là hình thức giải trí phổ biến, tuy nhiên phương thức mua vé truyền thống bộc lộ nhiều bất cập như mất thời gian xếp hàng chờ đợi và việc tập trung đông người tại quầy vé tiềm ẩn rủi ro trong bối cảnh kiểm soát dịch bệnh. Việc ứng dụng công nghệ thông tin vào quy trình bán vé trực tuyến giúp người dùng chủ động chọn phim, chọn rạp, chọn ghế ngồi, thanh toán an toàn và nhận mã QR qua thư điện tử để check-in trực tiếp tại rạp mà không cần qua quầy thủ công. Xuất phát từ nhu cầu thực tiễn đó, nhóm tác giả đã lựa chọn xây dựng website đặt vé xem phim trực tuyến nhằm tối ưu hóa trải nghiệm khách hàng và hỗ trợ công tác quản lý rạp chiếu.

2. Mục tiêu và nhiệm vụ nghiên cứu

Văn bản xác định các nhiệm vụ cụ thể theo tiến trình thực hiện:

  1. Khảo sát hiện trạng và phân tích ưu - nhược điểm của 4 hệ thống đặt vé trực tuyến phổ biến tại Việt Nam (CGV, BHD Star, Galaxy Cinema, Cinestar) nhằm xác định yêu cầu chức năng.
  2. Nghiên cứu bộ công nghệ MERN Stack (MongoDB, ExpressJS, ReactJS, NodeJS) và giải pháp bảo mật JSON Web Token (JWT) cho kiến trúc Web API.
  3. Thiết kế mô hình ca sử dụng (Use case), xây dựng kịch bản chi tiết (Scenarios), thiết kế lược đồ tuần tự (Sequence Diagrams) và mô hình hóa cơ sở dữ liệu hướng tài liệu.
  4. Xây dựng và cài đặt 2 phân hệ website: phân hệ dành cho người dùng cuối (khách hàng, khách vãng lai) và phân hệ dành cho người quản trị (Admin).
  5. Thiết kế kịch bản kiểm thử (Test Cases), tiến hành kiểm thử các chức năng chính, ghi nhận kết quả và so sánh sản phẩm thực nghiệm với các hệ thống hiện hành.

3. Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ đặt vé xem phim trực tuyến; kiến trúc dịch vụ Web RESTful API; bộ công nghệ MERN Stack (NodeJS, ExpressJS, ReactJS, MongoDB) và chuẩn bảo mật JSON Web Token (JWT).
  • Phạm vi nghiên cứu:
    • Nghiệp vụ người dùng: Đăng ký, đăng nhập, quản lý thông tin cá nhân, xem thông tin phim, xem lịch chiếu theo cụm rạp/theo phim, đặt vé và chọn ghế, thanh toán qua cổng PayPal, tích lũy và sử dụng điểm thưởng, đổi vé, xem lịch sử giao dịch, đăng bình luận đánh giá phim, nhận email mã QR và email nhắc lịch chiếu lúc 8h sáng ngày chiếu.
    • Nghiệp vụ quản lý: Quản lý thông tin phim (thêm, sửa, xóa, tìm kiếm, sắp xếp), quản lý lịch chiếu linh hoạt theo khung giờ và thứ trong tuần, quản lý combo đồ ăn/thức uống, quản lý người dùng, thống kê doanh thu và số lượng vé bán.
    • Phạm vi thời gian & dữ liệu: Đề tài được triển khai thực nghiệm trong 13 tuần (từ tháng 09/2022 đến tháng 12/2022).

Cơ sở lý thuyết và phương pháp

1. Khung lý thuyết và công nghệ sử dụng

Nghiên cứu ứng dụng trọn bộ kiến trúc công nghệ MERN Stack kết hợp các chuẩn bảo mật và dịch vụ mở rộng:

[Client: ReactJS + Redux + JSX] <---> [RESTful API / ExpressJS / NodeJS + JWT + Multer] <---> [Database: MongoDB]
  • NodeJS: Nền tảng thực thi JavaScript phía máy chủ xây dựng trên V8 JavaScript Engine của Google; hoạt động theo cơ chế đơn luồng với vòng lặp sự kiện (single-threaded event loop), xử lý bất đồng bộ không chặn (non-blocking I/O) và cơ chế không đệm (NoCache).
  • ExpressJS: Framework phát triển ứng dụng web trên NodeJS hỗ trợ cấu trúc MVC, cung cấp hệ thống định tuyến (Routing), phần mềm trung gian (Middleware) để kiểm soát dữ liệu và phân quyền, cùng các công cụ tạo mẫu (Templating) và gỡ lỗi (Debugging).
  • MongoDB: Hệ quản trị cơ sở dữ liệu NoSQL hướng tài liệu (Document-based database); lưu trữ dữ liệu dưới dạng BSON/JSON trong các Collection; hỗ trợ lập chỉ mục (Indexing), nhân bản dữ liệu (Replication), truy vấn phạm vi (Range queries), biểu thức chính quy (Regular expression), tổng hợp dữ liệu (Aggregation Pipeline, MapReduce, Single-purpose Aggregation) và bộ sưu tập giới hạn dung lượng (Capped collection).
  • ReactJS: Thư viện JavaScript mã nguồn mở do Facebook phát triển (năm 2013), tối ưu hóa việc kết xuất giao diện ở cả Client và Server bằng cú pháp JSX; tích hợp Redux làm bộ chứa quản lý trạng thái tập trung (State Management).
  • JSON Web Token (JWT): Tiêu chuẩn mở RFC 7519 dùng để truyền tải thông tin an toàn giữa Client và Server dưới dạng đối tượng JSON. Cấu trúc gồm 3 phần phân tách bởi dấu chấm: Header (loại token và thuật toán mã hóa như HMAC/RSA), Payload (chứa các Registered claims, Public claims, Private claims) và Signature (chữ ký điện tử tạo bởi mã hóa Header + Payload với chuỗi khóa bí mật secret key).
  • Thư viện bổ trợ: Multer (lưu trữ và xử lý tệp ảnh tĩnh tại local), PayPal SDK/Sandbox (xử lý thanh toán trực tuyến).

2. Phương pháp nghiên cứu

  • Phương pháp phân tích - tổng hợp: Khảo sát thực tế 4 website rạp chiếu phim thương mại để lập bảng so sánh tính năng:
Tiêu chí so sánh CGV (cgv.vn) BHD Star (bhdstar.vn) Galaxy Cinema (galaxycine.vn) Cinestar (cinestar.vn) Website đề tài
Đặt vé & chọn ghế Có Có Có Có Có
Đặt combo bắp nước Có Có (ưu đãi đến 20%) Có Có Có
Tích lũy điểm thành viên Có (CGV Membership) Có Có Có Có (5% giá trị đơn hàng)
Hỗ trợ đổi vé online Không hỗ trợ Không hỗ trợ Không hỗ trợ Không hỗ trợ Có (trước 1h30 phút)
Nhắc lịch qua email Không Không Không Không Có (8h sáng ngày chiếu)
Tình trạng giao diện Nhiều banner quảng cáo Lỗi chuyển hướng đồ ăn Popup quảng cáo liên tục Lọc lịch chiếu hạn chế Giao diện tối giản, tập trung
  • Phương pháp mô hình hóa phần mềm: Sử dụng UML xây dựng biểu đồ ca sử dụng (Use case Diagram), đặc tả kịch bản ca sử dụng (Use case Specifications) và xây dựng 22 biểu đồ tuần tự (Sequence Diagrams).
  • Phương pháp kiểm thử hộp đen (Black-box Testing): Thiết kế kịch bản kiểm thử dựa trên dữ liệu đầu vào và kết quả đầu ra thực tế cho các nhóm chức năng trọng yếu.

Thiết kế và triển khai

1. Kiến trúc hệ thống và luồng bảo mật

Hệ thống được thiết kế theo mô hình Client-Server phân tách:

  • Phía Client xây dựng bằng ReactJS, giao tiếp với máy chủ thông qua giao thức HTTP/HTTPS bằng các yêu cầu gửi đến các điểm cuối (endpoints) của RESTful API.
  • Phía Server sử dụng ExpressJS trên nền NodeJS đóng vai trò máy chủ API. Middleware của ExpressJS hoạt động như bộ lọc kiểm tra tính hợp lệ của JSON Web Token đối với mọi yêu cầu yêu cầu xác thực. Mật khẩu người dùng được băm (hash) trước khi lưu trữ trong cơ sở dữ liệu.
  • Tệp tin hình ảnh được upload và quản lý cục bộ thông qua thư viện multer nhằm loại bỏ rủi ro mất liên kết hình ảnh trực tuyến.

2. Cấu trúc cơ sở dữ liệu MongoDB

Cơ sở dữ liệu của hệ thống được tổ chức thành 8 bảng (Collections) chính:

  1. USERS: Lưu trữ thông tin tài khoản người dùng, email, mật khẩu đã hash, số điện thoại, điểm tích lũy, vai trò (role: khách hàng/admin).
  2. MOVIES: Lưu trữ dữ liệu phim (tên phim, đạo diễn, diễn viên, thời lượng, thể loại, ngày khởi chiếu, mô tả, hình ảnh poster, link trailer, trạng thái đang chiếu/sắp chiếu).
  3. MOVIETHREATERS: Lưu trữ danh sách và thông tin các cụm rạp trong hệ thống.
  4. ROOMS: Lưu trữ thông tin phòng chiếu và sơ đồ định dạng ghế ngồi thuộc từng rạp.
  5. SHOWTIMES: Lưu trữ lịch chiếu, ngày chiếu, khung giờ chiếu, giá vé tương ứng theo khung giờ/ngày trong tuần, và liên kết tới phòng chiếu, phim.
  6. TICKETBOOKINGS: Lưu trữ chi tiết giao dịch đặt vé, mã vé, thông tin người đặt, suất chiếu, danh sách ghế đã chọn, combo đồ ăn đính kèm, tổng tiền thanh toán, điểm thưởng đã dùng, trạng thái giao dịch và mã QR.
  7. FOODSANDDRINK: Lưu trữ danh mục đồ ăn, nước uống và các gói combo bắp nước đi kèm giá bán.
  8. COMMENTS: Lưu trữ nội dung nhận xét, đánh giá của người dùng về các bộ phim.

Nội dung chính theo từng chương

CHƯƠNG 1: PHẦN MỞ ĐẦU

Chương này trình bày tính cấp thiết của việc xây dựng hệ thống đặt vé xem phim trực tuyến; xác định đối tượng nghiên cứu (quy trình đặt vé, công nghệ MERN, bảo mật JWT, RESTful API); xác lập phạm vi chức năng cho người dùng cuối và quản trị viên; đặt ra mục tiêu nắm vững kỹ thuật lập trình và xây dựng hoàn chỉnh ứng dụng web phục vụ đặt vé.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Nội dung chương tập trung hệ thống hóa các nền tảng công nghệ nền tảng:

  • Phân tích 4 đặc tính của NodeJS: tính bất đồng bộ (non-blocking), tốc độ thực thi V8, mô hình đơn luồng và tính năng không lưu bộ đệm (NoCache).
  • Trình bày kiến trúc và 5 tính năng cốt lõi của ExpressJS: phát triển máy chủ nhanh, phần mềm trung gian Middleware, cơ chế định tuyến Routing, tạo mẫu Templating và công cụ Debugging.
  • Phân tích cấu trúc NoSQL của MongoDB, làm rõ các phương thức xử lý dữ liệu: Indexing, Replication, 3 kỹ thuật Aggregation (Aggregation Pipeline, MapReduce, Single-purpose Aggregation) và cơ chế tự dọn dẹp của Capped Collection.
  • Giới thiệu thư viện ReactJS, cú pháp JSX và thư viện quản lý trạng thái Redux.
  • Trình bày chuẩn JSON Web Token (RFC 7519), giải thích chi tiết cấu trúc 3 phần (Header, Payload, Signature) cùng các loại claims (Registered, Public, Private) để bảo vệ dữ liệu trao đổi giữa Client và Server.

CHƯƠNG 3: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU

  • Phân tích chi tiết hiện trạng, ưu điểm và nhược điểm của 4 trang web đặt vé: CGV, BHD Star, Galaxy Cinema, Cinestar.
  • Xác định yêu cầu phi chức năng: Bảo mật dữ liệu mật khẩu, tính khả dụng giao diện, dung lượng lưu trữ lớn.
  • Mô hình hóa hệ thống thông qua các bảng danh mục chức năng chi tiết cho 3 nhóm đối tượng:
    • Người quản lý (15 chức năng): Tìm kiếm khách hàng, sắp xếp khách hàng, thêm/sửa/xóa đồ ăn thức uống, thêm/sửa/xóa phim, tìm kiếm/sắp xếp phim, tạo/xóa lịch chiếu, thống kê doanh thu và số lượng, đăng nhập/đăng xuất quản trị.
    • Khách hàng (11 chức năng): Đăng ký, đăng nhập, đăng xuất, xem thông tin phim, xem lịch chiếu, đặt vé (thanh toán PayPal hoặc dùng điểm thưởng), xem/sửa thông tin cá nhân, thay đổi mật khẩu, xem lịch sử giao dịch, đổi vé/ghế.
    • Khách vãng lai (3 chức năng): Đăng ký tài khoản, xem lịch chiếu, xem thông tin chi tiết phim.
  • Trình bày 4 sơ đồ Use case tổng quát và chi tiết kèm hệ thống kịch bản đặc tả chi tiết (Scenarios) bao gồm: Điều kiện tiên quyết, luồng sự kiện chính (Basic Flow), luồng rẽ nhánh thất bại và kết quả đạt được.

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

  • Xây dựng 22 biểu đồ tuần tự (Sequence Diagrams) mô tả tương tác giữa Người dùng, Giao diện (UI), Bộ điều khiển/API và Cơ sở dữ liệu cho toàn bộ các ca sử dụng của hệ thống.
  • Đặc tả cấu trúc chi tiết của 8 bảng dữ liệu trong MongoDB (USERS, MOVIES, MOVIETHREATERS, ROOMS, SHOWTIMES, TICKETBOOKINGS, FOODSANDDRINK, COMMENTS) với các trường dữ liệu, kiểu dữ liệu và mối liên kết logic.
  • Thiết kế chi tiết hơn 40 màn hình giao diện người dùng cho cả hai phân hệ:
    • Phân hệ khách hàng: Đăng ký, đăng nhập, trang chủ (slider, phim đang chiếu, phim sắp chiếu), chi tiết phim, hệ thống rạp, trang đặt vé và chọn ghế, xác nhận mua vé, thanh toán bằng PayPal, thanh toán bằng điểm tích lũy, trang lịch sử giao dịch, giao diện đổi vé.
    • Phân hệ quản trị: Đăng nhập quản trị, quản lý danh sách phim, thêm/sửa chi tiết phim, quản lý danh sách suất chiếu, tạo lịch chiếu theo khung giờ, quản lý danh mục combo đồ ăn, danh sách người dùng, giao diện thống kê số lượng và thống kê doanh thu.

CHƯƠNG 5: CÀI ĐẶT VÀ KIỂM THỬ PHẦN MỀM

  • Thiết lập môi trường cài đặt phần mềm và tích hợp API.
  • Xây dựng bảng kịch bản kiểm thử chi tiết và thực thi các bộ kiểm thử chức năng (Test Cases):
    • Kiểm thử Quản lý đồ ăn thức uống: TC_AFD_01, TC_AFD_02, TC_AFD_03 (Kết quả thực tế tương ứng: TS_AFD_01, TS_AFD_02, TS_AFD_03).
    • Kiểm thử Thống kê doanh thu theo quý: TC_RQ_01, TC_RQ_02 (Kết quả thực tế tương ứng: TS_RQ_01, TS_RQ_02).
    • Kiểm thử Đăng nhập khách hàng: TC_SI_01, TC_SI_02, TC_SI_03 (Kết quả thực tế tương ứng: TS_SI_01, TS_SI_02, TS_SI_03).
    • Kiểm thử Đặt vé không dùng điểm thưởng: TC_BT_01, TC_BT_02 (Kết quả thực tế tương ứng: TS_BT_01, TS_BT_02).
  • So sánh sản phẩm phần mềm sau khi hoàn thiện với các hệ thống rạp thương mại trên thị trường.

CHƯƠNG 6: TỔNG KẾT

Đánh giá mức độ hoàn thành so với mục tiêu đề ra; tổng kết các ưu điểm và kết quả đạt được; chỉ ra các nhược điểm còn tồn tại và đề xuất định hướng phát triển tiếp theo cho hệ thống.

CHƯƠNG 7: TÀI LIỆU THAM KHẢO

Liệt kê danh mục các tài liệu tham khảo, bài báo khoa học, tài liệu kỹ thuật chuẩn RFC và các nguồn tài nguyên trực tuyến được trích dẫn trong khóa luận.


Kết quả và đóng góp

1. Kết quả chính đạt được

  • Xây dựng hoàn chỉnh ứng dụng web đặt vé xem phim với 2 phân hệ độc lập: Website người dùng và Website quản trị, kết nối thông suốt với cơ sở dữ liệu MongoDB thông qua hệ thống RESTful API viết bằng NodeJS/ExpressJS.
  • Triển khai thành công quy trình nghiệp vụ đặt vé trực tuyến: Chọn phim, chọn rạp, chọn khung giờ chiếu, chọn sơ đồ ghế ngồi trực quan, thanh toán trực tuyến qua cổng PayPal Sandbox và tích lũy điểm thưởng thành viên.
  • Xây dựng cơ chế đổi vé linh hoạt: Cho phép người dùng chủ động đổi sang vị trí ghế khác trên hệ thống trước giờ chiếu 1 tiếng 30 phút (với điều kiện giữ nguyên số lượng ghế đã mua) — giải quyết hạn chế mà cả 4 hệ thống khảo sát (CGV, BHD, Galaxy, Cinestar) đều chưa hỗ trợ trực tuyến.
  • Thiết lập quy trình tự động hóa tương tác: Gửi mã QR qua email cá nhân của khách hàng ngay sau khi thanh toán thành công để quét mã nhận vé tại rạp; tự động gửi email thông báo nhắc lịch chiếu phim vào lúc 8h sáng của ngày chiếu.
  • Tích hợp chính sách tích lũy điểm thưởng: Mỗi giao dịch đặt vé thành công tích lũy 5% tổng giá trị đơn hàng thành điểm thưởng (quy đổi 1 điểm = 1.000 VNĐ); người dùng được phép sử dụng điểm thưởng để cấn trừ trực tiếp vào hóa đơn khi có tích lũy từ 20 điểm trở lên.
  • Phân hệ quản trị hoàn thiện các chức năng nghiệp vụ: Quản lý phim, định giá vé tự động theo từng khung giờ và các ngày trong tuần, quản lý danh mục combo bắp nước, quản lý người dùng và bảng điều khiển thống kê doanh thu theo quý, số lượng phim, lượng vé bán.

2. Đóng góp của đề tài

  • Khắc phục các vấn đề phát sinh kỹ thuật trong phát triển ứng dụng MERN Stack: Ứng dụng thành công JSON Web Token để bảo vệ toàn diện các API và kiểm soát phiên đăng nhập; xử lý triệt để lỗi hiển thị hình ảnh trực tuyến bằng giải pháp lưu trữ hình ảnh cục bộ thông qua thư viện Multer.
  • Xây dựng một mô hình hệ thống đặt vé xem phim hoàn chỉnh, có tính ứng dụng thực tế cao, giao diện tinh gọn, loại bỏ các popup và banner quảng cáo gây phiền nhiễu cho người dùng so với các website thương mại hiện hành.

Hạn chế và hướng nghiên cứu tiếp

1. Hạn chế

  • Giải pháp xử lý hoàn tiền trực tuyến trên cổng PayPal trong trường hợp người dùng thực hiện đổi vé có chênh lệch giá hoặc hủy vé còn ở mức độ thử nghiệm, chưa tự động hóa hoàn toàn.
  • Hệ thống mới dừng lại ở phiên bản web ứng dụng (Web Application), chưa phát triển phiên bản ứng dụng di động bản địa (Native Mobile App).
  • Cơ chế kiểm soát đồng thời (concurrency control) khi nhiều người dùng cùng truy cập chọn một vị trí ghế tại cùng một thời điểm cần được nâng cấp thêm các thuật toán khóa dữ liệu chuyên sâu.

2. Hướng nghiên cứu tiếp

  • Hoàn thiện và tích hợp quy trình xử lý hoàn tiền tự động qua API của PayPal và mở rộng liên kết với các cổng thanh toán nội địa tại Việt Nam (như MoMo, ZaloPay, VNPAY).
  • Nghiên cứu phát triển ứng dụng di động trên nền tảng React Native để đồng bộ hóa dữ liệu và nâng cao trải nghiệm người dùng trên thiết bị di động.
  • Nâng cấp hệ thống gợi ý phim thông minh dựa trên lịch sử đặt vé và đánh giá của khách hàng.

Giá trị tham khảo

  • Đối tượng học tập và nghiên cứu: Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin đang thực hiện đồ án chuyên ngành hoặc khóa luận tốt nghiệp về xây dựng ứng dụng web hướng dịch vụ.
  • Nội dung tham khảo giá trị:
    • Kiến trúc tích hợp bộ công nghệ MERN Stack chuẩn mực kết hợp giải pháp xác thực, phân quyền người dùng thông qua JSON Web Token (JWT).
    • Phương pháp khảo sát, so sánh hiện trạng hệ thống thực tế và quy trình chuyển hóa yêu cầu nghiệp vụ thành mô hình ca sử dụng (Use case), kịch bản chi tiết (Scenarios) và lược đồ tuần tự (Sequence Diagrams).
    • Cấu trúc thiết kế 8 bảng dữ liệu NoSQL trong MongoDB cho bài toán quản lý rạp chiếu phim và đặt vé trực tuyến.
    • Hệ thống ca kiểm thử mẫu (Test Cases) kiểm tra tính đúng đắn của các nghiệp vụ mua vé, đổi vé, đăng nhập và thống kê doanh thu.

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

1. Cơ chế tích lũy và sử dụng điểm thưởng của hệ thống được quy định như thế nào?

Mỗi khi khách hàng thành viên thực hiện đặt vé thành công, hệ thống sẽ tự động tích lũy điểm thưởng tương đương 5% tổng số tiền thanh toán của đơn hàng (ví dụ: đơn hàng 100.000 VNĐ tích lũy được 5 điểm). Khi số dư đạt từ 20 điểm trở lên, khách hàng có thể chọn hình thức thanh toán bằng điểm thưởng với tỷ lệ quy đổi 1 điểm tương đương 1.000 VNĐ; phần tiền chênh lệch còn lại (nếu có) sẽ được thanh toán tiếp qua cổng PayPal.

2. Khách hàng có thể thực hiện đổi vé trên website với những điều kiện gì?

Khách hàng có thể thực hiện đổi ghế/đổi vé trực tiếp trên website tại mục Lịch sử giao dịch với 2 điều kiện bắt buộc:

  1. Thời gian yêu cầu đổi vé phải được thực hiện trước thời điểm suất chiếu diễn ra ít nhất 1 tiếng 30 phút.
  2. Số lượng ghế mới được chọn phải bằng đúng số lượng ghế đã đặt trong đơn hàng ban đầu.

3. Nhóm tác giả đã giải quyết vấn đề bảo mật và sự cố đường dẫn ảnh bị lỗi bằng cách nào?

  • Về bảo mật: Hệ thống ứng dụng chuẩn JSON Web Token (JWT) để kiểm soát các luồng dữ liệu vào/ra qua API. Người dùng đăng nhập được cấp Token riêng đóng vai trò "chìa khóa" xác thực quyền qua Middleware ở từng request; đồng thời mật khẩu được băm trước khi lưu vào MongoDB.
  • Về sự cố hình ảnh: Nhóm đã thay thế việc sử dụng đường dẫn ảnh trực tuyến (dễ bị lỗi hiển thị hoặc mất liên kết) bằng giải pháp lưu trữ tệp hình ảnh trực tiếp ở local server thông qua thư viện multer.

4. Cơ sở dữ liệu MongoDB của hệ thống bao gồm những bảng dữ liệu nào?

Hệ thống lưu trữ dữ liệu trong 8 bảng (collections) gồm: USERS (người dùng), MOVIES (danh mục phim), MOVIETHREATERS (cụm rạp), ROOMS (phòng chiếu), SHOWTIMES (lịch chiếu và giá vé), TICKETBOOKINGS (thông tin đặt vé và mã QR), FOODSANDDRINK (combo bắp nước) và COMMENTS (bình luận đánh giá).

5. Những nhóm chức năng nào đã được xây dựng kịch bản và thực thi kiểm thử trong đồ án?

Đồ án đã thiết kế và thực thi 4 nhóm kịch bản kiểm thử chức năng chính:

  • Nhóm ca kiểm thử thêm đồ ăn thức uống: TC_AFD_01, TC_AFD_02, TC_AFD_03.
  • Nhóm ca kiểm thử thống kê doanh thu theo quý: TC_RQ_01, TC_RQ_02.
  • Nhóm ca kiểm thử đăng nhập khách hàng: TC_SI_01, TC_SI_02, TC_SI_03.
  • Nhóm ca kiểm thử đặt vé không sử dụng điểm thưởng: TC_BT_01, TC_BT_02.

Kết luận

Khóa luận "Xây dựng website đặt vé xem phim sử dụng MERN Stack" của sinh viên Nguyễn Thu Ngân và Nguyễn Như Bảo Phương đã giải quyết trọn vẹn bài toán xây dựng hệ thống thương mại điện tử phục vụ đặt vé rạp chiếu phim trực tuyến. Đề tài ứng dụng hiệu quả kiến trúc MERN Stack (MongoDB, ExpressJS, ReactJS, NodeJS) kết hợp bảo mật JSON Web Token và cổng thanh toán PayPal để cung cấp đầy đủ các tính năng đặt vé, tích điểm thành viên, gửi mã QR, nhắc lịch chiếu và hỗ trợ đổi vé linh hoạt. Sản phẩm đồ án có cấu trúc thiết kế cơ sở dữ liệu và kịch bản ca sử dụng rõ ràng, mang lại giá trị tham khảo kỹ thuật thiết thực cho các nghiên cứu và dự án phát triển phần mềm ứng dụng web cùng chuyên ngành.