Đối tượng nghiên cứu Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu sử dụng, giải trí, tạo ra một môi trường cho mọi người có thể thuận tiện đặt vé trực tuyến, lựa chọn
Trang 1THÀNH PHỐ HỒ CHÍ MINH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
TRẦN VĂN NGUYÊN
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
NGUYỄN NGỌC HẢI – 20110639 TRẦN VĂN NGUYÊN - 20110685
XÂY DỰNG HỆ THỐNG BÁN VÉ XEM
PHIM TRỰC TUYẾN
KHÓA LUẬN TỐT NGHIỆP KỸ SƯ CNTT
GIÁO VIÊN HƯỚNG DẪN ThS TRƯƠNG THỊ KHÁNH DỊP
KHÓA 2020 - 2024
Trang 3PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên 1: Nguyễn Ngọc Hải MSSV 1: 20110639
Họ và tên Sinh viên 2: Trần Văn Nguyên MSSV 1: 20110685
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng hệ thống bán vé xem phim trực tuyến
Họ và tên Giáo viên hướng dẫn: ThS Trương Thị Khánh Dịp
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm
4 Đề nghị cho bảo vệ hay không ?
Tp Hồ Chí Minh, ngày tháng năm 2024
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 4PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên 1: Nguyễn Ngọc Hải MSSV 1: 20110639
Họ và tên Sinh viên 2: Trần Văn Nguyên MSSV 1: 20110685
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng hệ thống bán vé xem phim trực tuyến
Họ và tên Giáo viên phản biện: TS. Lê Văn Vinh
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm
4 Đề nghị cho bảo vệ hay không ?
Tp Hồ Chí Minh, ngày tháng năm 2024
Giáo viên phản biện
(Ký & ghi rõ họ tên)
Trang 5Chúng em nhận thức rằng việc học hỏi không bao giờ có điểm dừng, và dù đã cố gắng hết sức nhưng vẫn không tránh khỏi những thiếu sót Rất mong nhận được sự góp
ý tận tình từ quý thầy (cô) để từ đó rút kinh nghiệm, hoàn thiện và nâng cấp sản phẩm của chúng em một cách tốt nhất có thể
Chúng em xin chân thành cảm ơn!
Nhóm thực hiện
Nguyễn Ngọc Hải - 20110639 Trần Văn Nguyên - 20110685
Trang 6Trường ĐH Sư Phạm Kỹ Thuật TP.HCM
Khoa : CNTT
ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP
Họ và Tên SV thực hiện 1 : Nguyễn Ngọc Hải Mã Số SV : 20110639
Họ và Tên SV thực hiện 2 : Trần Văn Nguyên Mã Số SV : 20110685 Thời gian làm luận văn : Từ : 04/03/2024 Đến : 22/06/2024
Chuyên ngành : Công nghệ phần mềm
Tên luận văn : Xây dựng hệ thống bán vé xem phim trực tuyến
GV hướng dẫn : ThS Trương Thị Khánh Dịp
Nhiệm Vụ Của Luận Văn :
1 Tìm hiểu công nghệ NestJS, MongoDB, FireBase và ReactJS
2 Thiết kế phần mền hoàn chỉnh dựa trên những công nghệ đã tìm hiểu
3 Tìm hiểu và thực hiện kiểm thử phầm mềm
4 Đánh giá ưu, nhược điểm và đưa ra hướng phát triển của phần mềm
5 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ế
Đề cương viết luận văn :
MỤC LỤC
CHƯƠNG 1 TỔNG QUAN 1
1.1 Tính cấp thiết của đề tài 1
1.2 Đối tượng nghiên cứu 1
1.3 Phạm vi nghiên cứu 2
1.3.1 Trải nghiệm người dùng 2
1.3.2 Quản lý hệ thống và dữ liệu 2
1.3.3 Quản lý kinh doanh và marketing 2
1.3.4 Quản lý hệ thống và kỹ thuật 2
1.4 Mục tiêu của đề tài 3
1.5 Ý nghĩa khoa học và thực tiễn 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 5
2.1 Các công nghệ sử dụng ở Front-End 5
Trang 72.1.1 ReactJS Framework 5
2.1.2 Các thư viện hỗ trợ khác 7
2.2 Các công nghệ sử dụng ở Back-End 8
2.2.1 NestJS 8
2.2.2 MongoDB 10
2.2.3 Các thư viện hỗ trợ khác 11
CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU 13
3.1 Khảo sát hiện trạng 13
3.1.1 CGV Vietnam 13
3.1.2 Lotte Cinema Vietnam 14
3.1.3 Galaxy Cinema 15
3.1.4 Kết luận 16
3.2 Xác định yêu cầu 17
3.2.1 Yêu cầu chức năng 17
3.2.2 Yêu cầu phi chức năng 17
3.3 Mô hình hóa yêu cầu 18
3.3.1 Lược đồ Usecase 18
3.3.2 Mô hình hóa yêu cầu 19
CHƯƠNG 4 THIẾT KẾ PHẦN MỀM 42
4.1 Lược đồ lớp 42
4.2 Lược đồ hoạt động(Activity diagram) 43
4.3 Lược đồ tuần tự 47
4.4 Thiết kế cơ sở dữ liệu 56
4.4.1 Lược đồ cơ sở dữ liệu 56
4.4.2 Chi tiết bảng dữ liệu 57
4.5 Thiết kế giao diện 62
4.5.1 Màn hình giao diện phía người dùng 62
4.5.2 Màn hình giao diện phía admin 81
CHƯƠNG 5 CÀI ĐẶT VÀ KIỂM THỬ 100
5.1 Công cụ dùng trong dự án 100
5.2 Cài đặt ứng dụng 100
5.3 Kiểm thử 101
5.3.1 Mục tiêu kiểm thử 101
5.3.2 Phạm vi kiểm thử 102
5.3.3 Quy trình kiểm thử 102
5.3.4 Kết quả kiểm thử 104
Trang 8CHƯƠNG 6 KẾT LUẬN 112
6.1 Kết quả đạt được 112
6.1.1 Về mặt lý thuyết 112
6.1.2 Về mặt ứng dụng 112
6.2 Ưu điểm 112
6.3 Nhược điểm 113
6.4 Hướng phát triển 113
KẾ HOẠCH THỰC HIỆN
STT Thời gian Công việc Ghi chú
1 04/03/2024 -
10/03/2024
Nghiên cứu đề tài Tìm hiểu yêu cầu của hệ thống, nghiên cứu
các hệ thống bán vé xem phim trực tuyến hiện có Lập danh sách các yêu cầu cơ bản và chức năng chính của hệ thống
2 11/03/2024 -
15/03/2024
Khảo sát hiện trường Tiến hành khảo sát các rạp chiếu phim để
hiểu rõ quy trình bán vé hiện tại Thu thập thông tin chi tiết về quy trình bán vé và các yêu cầu của người dùng, biết được các ưu và nhược điểm từng rạp
3 16/03/2024 -
20/03/2024
Phân tích yêu cầu và
mô hình hoá yêu cầu
Phân tích yêu cầu hệ thống từ thông tin đã thu thập được, mô hình hoá yêu cầu đã phân tích
4 21/03/2024 -
31/03/2024
Thiết kế giao diện người dùng
Thiết kế giao diện người dùng (UI/UX) cho
hệ thống Hoàn thành các bản thiết kế giao diện
5 01/04/2024 -
07/04/2024
Thiết kế cơ sở dữ liệu Thiết kế cơ sở dữ liệu, lập mô hình dữ liệu
Hoàn thành mô hình ERD và các bảng trong
cơ sở dữ liệu
6 08/04/2024 -
14/04/2024
Thiết kế các lược đồ UML
Thiết kế các lược đồ lớp, lược đồ hoạt động, lược đồ tuần tự, và các lược đồ UML khác
7 15/04/2024 -
17/04/2024
Lập kế hoạch phát triển
Lập kế hoạch chi tiết cho các giai đoạn phát triển, phân công nhiệm vụ cho các thành viên trong nhóm
Trang 9Tích hợp phần backend và frontend, kiểm tra kết nối và chức năng cơ bản Đảm bảo hệ thống hoạt động cơ bản
9 19/05/2024 -
21/05/2024
Kiểm thử hệ thống (giai đoạn 1)
Kiểm thử chức năng cơ bản của hệ thống Kết quả: Sửa lỗi và cải thiện các chức năng cơ bản
Kiểm thử toàn bộ hệ thống, bao gồm các chức năng nâng cao Tối ưu hệ thống
12 07/06/2024 -
14/06/2024
Triển khai thử nghiệm Triển khai hệ thống thử nghiệm cho một số
người dùng Thu thập phản hồi và điều chỉnh
hệ thống nếu cần
13 15/06/2024 -
22/06/2024
Hoàn thành báo cáo Viết và hoàn thiện báo cáo luận án
Tp Hồ Chí Minh, ngày tháng năm 2024
Người viết đề cương
Ý kiến của giáo viên hướng dẫn
(ký và ghi rõ họ tên)
Trang 10MỤC LỤC
CHƯƠNG 1 TỔNG QUAN 1
1.1 Tính cấp thiết của đề tài 1
1.2 Đối tượng nghiên cứu 1
1.3 Phạm vi nghiên cứu 2
1.3.1 Trải nghiệm người dùng 2
1.3.2 Quản lý hệ thống và dữ liệu 2
1.3.3 Quản lý kinh doanh và marketing 2
1.3.4 Quản lý hệ thống và kỹ thuật 2
1.4 Mục tiêu của đề tài 3
1.5 Ý nghĩa khoa học và thực tiễn 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 5
2.1 Các công nghệ sử dụng ở Front-End 5
2.1.1 ReactJS Framework 5
2.1.2 Các thư viện hỗ trợ khác 7
2.2 Các công nghệ sử dụng ở Back-End 8
2.2.1 NestJS 8
2.2.2 MongoDB 10
2.2.3 Các thư viện hỗ trợ khác 11
CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU 13
3.1 Khảo sát hiện trạng 13
3.1.1 CGV Vietnam 13
3.1.2 Lotte Cinema Vietnam 14
3.1.3 Galaxy Cinema 15
3.1.4 Kết luận 16
3.2 Xác định yêu cầu 17
3.2.1 Yêu cầu chức năng 17
3.2.2 Yêu cầu phi chức năng 17
3.3 Mô hình hóa yêu cầu 18
3.3.1 Lược đồ Usecase 18
3.3.2 Mô hình hóa yêu cầu 19
CHƯƠNG 4 THIẾT KẾ PHẦN MỀM 42
4.1 Lược đồ lớp 42
4.2 Lược đồ hoạt động(Activity diagram) 43
4.3 Lược đồ tuần tự 47
Trang 114.4 Thiết kế cơ sở dữ liệu 56
4.4.1 Lược đồ cơ sở dữ liệu 56
4.4.2 Chi tiết bảng dữ liệu 57
4.5 Thiết kế giao diện 62
4.5.1 Màn hình giao diện phía người dùng 62
4.5.2 Màn hình giao diện phía admin 81
CHƯƠNG 5 CÀI ĐẶT VÀ KIỂM THỬ 100
5.1 Công cụ dùng trong dự án 100
5.2 Cài đặt ứng dụng 100
5.3 Kiểm thử 101
5.3.1 Mục tiêu kiểm thử 101
5.3.2 Phạm vi kiểm thử 102
5.3.3 Quy trình kiểm thử 102
5.3.4 Kết quả kiểm thử 104
CHƯƠNG 6 KẾT LUẬN 112
6.1 Kết quả đạt được 112
6.1.1 Về mặt lý thuyết 112
6.1.2 Về mặt ứng dụng 112
6.2 Ưu điểm 112
6.3 Nhược điểm 113
6.4 Hướng phát triển 113
Trang 12DANH MỤC BẢNG
Bảng 3.1 Đặc tả usecase xem danh sách phim 19
Bảng 3.2 Đặc tả usecase xem chi tiết từng bộ phim 21
Bảng 3.3 Đặc tả usecase xem lịch chiếu 21
Bảng 3.4 Đặc tả usecase đăng nhập vào tài khoản 23
Bảng 3.5 Đặc tả usecase đăng ký tài khoản mới 24
Bảng 3.6 Đặc tả usecase tìm kiếm phim và lịch chiếu 26
Bảng 3.7 Đặc tả usecase đặt vé 27
Bảng 3.8 Đặc tả usecase thanh toán vé đã chọn 28
Bảng 3.9 Đặc tả usecase xem thông tin vé đã đặt 30
Bảng 3.10 Đặc tả usecase xem thông tin cá nhân 31
Bảng 3.11 Đặc tả usecase cập nhật thông tin cá nhân 32
Bảng 3.12 Đặc tả usecase thêm mới bộ phim 33
Bảng 3.13 Đặc tả usecase sửa thông tin phim 35
Bảng 3.14 Đặc tả usecase thêm lịch chiếu 36
Bảng 3.15 Đặc tả usecase sửa thông tin lịch chiếu 37
Bảng 3.16 Đặc tả usecase xem danh sách vé đặt 39
Bảng 3.17 Đặc tả usecase quản lý tài khoản người dùng 40
Bảng 4.1 Chi tiết dữ liệu bảng users 57
Bảng 4.2 Chi tiết dữ liệu bảng banners 57
Bảng 4.3 Chi tiết dữ liệu bảng bookings 58
Bảng 4.4 Chi tiết dữ liệu bảng combos 58
Bảng 4.5 Chi tiết dữ liệu bảng products 59
Bảng 4.6 Chi tiết dữ liệu bảng genres 59
Bảng 4.7 Chi tiết dữ liệu bảng movies 59
Bảng 4.8 Chi tiết dữ liệu bảng theaters 60
Bảng 4.9 Chi tiết dữ liệu bảng rooms 61
Bảng 4.10 Chi tiết dữ liệu bảng ticket_price 61
Bảng 4.11 Chi tiết dữ liệu bảng showtimes 61
Bảng 4.12 Chi tiết dữ liệu bảng seats 61
Bảng 4.13 Danh sách màn hình sử dụng phía người dùng 63
Bảng 4.14 Chi tiết màn hình đăng ký tài khoản 65
Bảng 4.15 Chi tiết màn hình xác nhận tài khoản 66
Bảng 4.16 Chi tiết màn hình đăng nhập 66
Bảng 4.17 Chi tiết màn hình quên mật khẩu 67
Bảng 4.18 Chi tiết màn hình xác nhận quên mật khẩu 68
Bảng 4.19 Chi tiết màn hình điều hướng 69
Bảng 4.20 Chi tiết màn hình trang chủ 71
Bảng 4.21 Chi tiết màn hình lịch chiếu 72
Bảng 4.22 Chi tiết màn hình danh sách phim 73
Bảng 4.23 Chi tiết màn hình lịch chi tiết phim 75
Bảng 4.24 Chi tiết màn hình danh sách ghế 76
Bảng 4.25 Chi tiết màn hình thông tin thanh toán 77
Bảng 4.26 Chi tiết màn hình thông tin cá nhân 80
Bảng 4.27 Danh sách màn hình sử dụng phía Quản trị viên 83
Trang 13Bảng 4.28 Chi tiết màn hình đăng nhập trang quản lý 84
Bảng 4.29 Chi tiết màn hình quên mật khẩu trang quản lý 84
Bảng 4.30 Chi tiết màn hình quên mật khẩu trang quản lý 85
Bảng 4.31 Chi tiết thanh điều hướng trang quản lý 86
Bảng 4.32 Chi tiết màn hình quản lý phim 87
Bảng 4.33 Chi tiết màn hình thêm, cập nhật phim 88
Bảng 4.34 Chi tiết màn hình quản lý banner 89
Bảng 4.35 Chi tiết màn hình thêm, cập nhật banner 90
Bảng 4.36 Chi tiết màn hình quản lý rạp chiếu phim 91
Bảng 4.37 Chi tiết màn hình thêm, cập nhật rạp chiếu phim 92
Bảng 4.38 Chi tiết màn hình quản lý người dùng 92
Bảng 4.39 Chi tiết màn hình thêm, cập nhật người dùng 93
Bảng 4.40 Chi tiết màn hình quản lý combo 94
Bảng 4.41 Chi tiết màn hình thêm, cập nhật combo 95
Bảng 4.42 Chi tiết màn hình quản lý lịch chiếu 96
Bảng 4.43 Chi tiết màn hình thêm, cập nhật lịch chiếu 96
Bảng 4.44 Chi tiết màn hình quản lý vé đặt - 011 97
Bảng 4.45 Chi tiết màn hình quản lý thông tin cá nhân 98
Bảng 4.46 Chi tiết màn hình đổi mật khẩu 98
Bảng 5.1 Phạm vi kiểm thử 102
Bảng 5.2 Kết quả kiểm thử 104
Bảng 5.3 Kết quả kiểm thử các chức năng 104
Trang 14DANH MỤC HÌNH ẢNH
Hình 2.1 Virtual DOM trong ReactJS 5
Hình 2.2 One-way binding trong ReactJS 6
Hình 2.3 Cấu trúc của NestJS 9
Hình 2.4 Kiến trúc của MongoDB 10
Hình 2.5 Các thành phần của JWT 12
Hình 3.1 Khảo sát hiện trạng CGV Vietnam 13
Hình 3.2 Khảo sát hiện trạng CGV Vietnam 14
Hình 3.3 Khảo sát hiện trạng Lotte Cinema Vietnam 15
Hình 3.4 Khảo sát hiện trạng trang Galaxy Cinema 16
Hình 3.5 Usecase cho người dùng 18
Hình 3.6 Usecase cho quản trị viên 19
Hình 4.1 Lược đồ lớp 42
Hình 4.2 Lược đồ hoạt động chức năng xem thông tin cá nhân và vé đã đặt 43
Hình 4.3 Lược đồ hoạt động chức năng cập nhật thông tin phim 43
Hình 4.4 Lược đồ hoạt động chức năng cập nhật lịch chiếu 44
Hình 4.5 Lược đồ hoạt động chức năng quản lý đơn đặt vé 44
Hình 4.6 Lược đồ hoạt động chức năng xem thống kê 45
Hình 4.7 Lược đồ hoạt động chức năng đặt vé 45
Hình 4.8 Lược đồ hoạt động chức năng xem thông tin lịch chiếu 46
Hình 4.9 Lược đồ hoạt động chức năng xem thông tin phim 46
Hình 4.10 Lược đồ tuần tự chức năng xem danh sách phim 47
Hình 4.11 Lược đồ tuần tự chức năng xem chi tiết phim 47
Hình 4.12 Lược đồ tuần tự chức năng xem lịch chiếu 48
Hình 4.13 Lược đồ tuần tự chức năng đăng nhập 48
Hình 4.14 Lược đồ tuần tự chức năng đặt vé 49
Hình 4.15 Lược đồ tuần tự chức năng tìm kiếm phim 49
Hình 4.16 Lược đồ tuần tự chức năng thanh toán vé đã chọn 50
Hình 4.17 Lược đồ tuần tự chức năng đăng ký 50
Hình 4.18 Lược đồ tuần tự chức năng xem thông tin vé đã đặt 51
Hình 4.19 Lược đồ tuần tự chức năng xem thông tin cá nhân 51
Hình 4.20 Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 52
Hình 4.21 Lược đồ tuần tự chức năng thêm mới bộ phim 52
Hình 4.22 Lược đồ tuần tự chức năng sửa thông tin phim 53
Hình 4.23 Lược đồ tuần tự chức năng thêm lịch chiếu 53
Hình 4.24 Lược đồ tuần tự chức năng sửa thông tin lịch chiếu 54
Hình 4.25 Lược đồ tuần tự chức năng xem danh sách vé đặt 54
Hình 4.26 Lược đồ tuần tự chức năng cập nhật vé 55
Hình 4.27 Lược đồ tuần tự chức năng quản lý tài khoản người dùng 55
Hình 4.28 Lược đồ cơ sở dữ liệu 56
Hình 4.29 Sơ đồ luồng màn hình mà người dùng không cần xác thực 62
Hình 4.30 Sơ đồ luồng màn hình mà người dùng cần phải xác thực 63
Hình 4.31 Màn hình đăng ký tài khoản - 001 65
Hình 4.32 Màn hình xác nhận tài khoản - 002 66
Hình 4.33 Màn hình đăng nhập - 003 66
Trang 15Hình 4.34 Màn hình quên mật khẩu - 004 67
Hình 4.35 Màn hình xác nhận quên mật khẩu - 005 68
Hình 4.36 Màn hình điều hướng – 006 69
Hình 4.37 Màn hình điều hướng - 006 69
Hình 4.38 Màn hình trang chủ - 007 71
Hình 4.39 Màn hình danh sách lịch chiếu - 009 72
Hình 4.40 Màn hình danh sách phim – 008 73
Hình 4.41 Màn hình chi tiết phim – 012 74
Hình 4.42 Màn hình điều hướng - 012 75
Hình 4.43 Màn hình danh sách ghế - 013 76
Hình 4.44 Màn hình chi tiết thông tin thanh toán - 014 77
Hình 4.45 Màn hình thông tin cá nhân – 015 78
Hình 4.46 Màn hình thông tin cá nhân - 015 79
Hình 4.47 Màn hình thông tin cá nhân – 015 80
Hình 4.48 Sơ đồ luồng màn hình cho quản trị viên 82
Hình 4.49 Sơ đồ luồng màn hình cho người quản lý 82
Hình 4.50 Màn hình đăng nhập trang quản lý - 001 83
Hình 4.51 Màn hình quên mật khẩu trang quản lý - 002 84
Hình 4.52 Màn hình xác nhận quên mật khẩu trang quản lý - 003 85
Hình 4.53 Màn hình thanh điều hướng - 004 86
Hình 4.54 Màn hình quản lý phim - 005 87
Hình 4.55 Màn hình thêm, cập nhật phim - 005 88
Hình 4.56 Màn hình quản lý banner - 006 89
Hình 4.57 Màn hình thêm, cập nhật banner - 006 90
Hình 4.58 Màn hình quản lý rạp chiếu phim - 007 91
Hình 4.59 Màn hình thêm, cập nhật rạp chiếu phim 91
Hình 4.60 Màn hình quản lý người dùng - 008 92
Hình 4.61 Màn hình thêm, cập nhật người dùng - 008 93
Hình 4.62 Màn hình quản lý combo - 009 94
Hình 4.63 Màn hình thêm, cập nhật combo - 009 95
Hình 4.64 Màn hình quản lý lịch chiếu - 010 95
Hình 4.65 Màn hình thêm, cập nhật lịch chiếu - 010 96
Hình 4.66 Màn hình quản lý vé đặt - 011 97
Hình 4.67 Màn hình quản lý thông tin cá nhân - 012 98
Hình 4.68 Màn hình thay đổi mật khẩu - 013 98
Trang 16CHƯƠNG 1 TỔNG QUAN
1.1 Tính cấp thiết của đề tài
Trong thời đại công nghệ số đang phát triển mạnh mẽ, việc áp dụng các hệ thống trực tuyến trong nhiều lĩnh vực đã trở thành xu hướng không thể phủ nhận Trong bối cảnh này, hệ thống bán vé xem phim trực tuyến không chỉ là một sự tiện lợi cho người dùng mà còn là một giải pháp hiệu quả cho ngành công nghiệp điện ảnh
Hệ thống bán vé xem phim trực tuyến không chỉ là một công cụ thuận tiện cho người dùng mà còn là một yếu tố quan trọng trong việc tối ưu hóa trải nghiệm xem phim Khả năng cung cấp thông tin chi tiết về lịch chiếu, chỗ ngồi, và các suất chiếu có sẵn giúp người xem dễ dàng chọn lựa và đặt vé từ bất kỳ đâu, bất kỳ khi nào Điều này giúp rút ngắn thời gian chờ đợi và tạo ra một trải nghiệm xem phim thoải mái, không bị gián đoạn
Ngoài ra, hệ thống này cũng đem lại lợi ích cho các rạp chiếu phim và nhà sản xuất phim Việc quản lý thông tin về doanh số bán vé, thông tin khách hàng và thu nhập từ các suất chiếu giúp họ đưa ra các chiến lược kinh doanh linh hoạt và hiệu quả Bằng cách tiếp cận được đối tượng khán giả trực tuyến, họ có thể mở rộng tầm vóc kinh doanh và tăng doanh thu
Trong bối cảnh nhu cầu giải trí ngày càng tăng và sự tiện lợi của công nghệ số ngày càng được ưa chuộng, việc triển khai hệ thống bán vé xem phim trực tuyến không chỉ là một bước tiến quan trọng trong việc đáp ứng nhu cầu của người dùng mà còn đóng vai trò quan trọng trong sự phát triển của ngành công nghiệp điện ảnh Sự kết hợp giữa tiện lợi, trải nghiệm tốt hơn cho người dùng và cơ hội kinh doanh cho các nhà sản xuất phim là những lợi ích rõ ràng mà hệ thống này mang lại
1.2 Đối tượng nghiên cứu
Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu sử dụng, giải trí, tạo ra một môi trường cho mọi người có thể thuận tiện đặt vé trực tuyến, lựa chọn phim theo
sở thích, đồng thời hỗ trợ người dùng tìm hiểu thêm thông tin về bộ phim, trailler, review phim trước khi đặt mua Bên cạnh đó là các công nghệ áp dụng để hiện thực hoá sản phẩm Cụ thể như sau:
Tập trung nghiêm cứu Restful API, NestJS để xây dựng nên hệ thống các APIs hỗ trợ truy xuất và thao tác với dữ liệu một cách chính xác và nhanh chóng nhất
Sử dụng cơ sở dữ liệu NoSQL là MongoDB để lưu trữ dữ liệu trong hệ thống
Trang 17Về phần hiển thị cho người sử dụng cuối nhóm chúng em tiến hành nghiên cứu Framework ReactJS và một số thư viện được hỗ trợ cho ReactJS để xây dựng và xử
lý giao diện và cho người dùng sử dụng trên website
Về phần bảo mật hệ thống, tiến hành nghiên cứu công nghệ Json Web Token làm bảo mật cho hệ thống, tất cả các luồng dữ liệu vào ra đều được kiểm soát thông qua Token
1.3 Phạm vi nghiên cứu
1.3.1 Trải nghiệm người dùng
• Giao diện người dùng: Phân tích và cải thiện giao diện để làm cho việc đặt vé
trở nên dễ dàng và thuận tiện hơn cho người dùng
• Tính tương thích: Đảm bảo hệ thống hoạt động trên nhiều nền tảng và thiết bị
khác nhau một cách hiệu quả
• Tối ưu hóa trải nghiệm: Tăng cường trải nghiệm người dùng trong việc tìm
kiếm thông tin, chọn suất chiếu, đặt vé và thanh toán
1.3.2 Quản lý hệ thống và dữ liệu
• Quản lý dữ liệu: Xây dựng hệ thống quản lý dữ liệu hiệu quả để lưu trữ thông
tin về lịch chiếu, thông tin khách hàng, và các thông tin quan trọng khác
• Bảo mật thông tin: Đảm bảo an toàn và bảo mật thông tin cá nhân của người
dùng và thông tin liên quan đến giao dịch thanh toán
1.3.3 Quản lý kinh doanh và marketing
• Chiến lược quảng cáo và khuyến mãi: Nghiên cứu về cách hệ thống có thể
được tích hợp để thực hiện chiến lược quảng cáo và khuyến mãi hiệu quả
• Thu nhập và doanh số bán vé: Phân tích dữ liệu để đánh giá doanh số bán vé
và thu nhập từ các suất chiếu, từ đó cải thiện chiến lược kinh doanh
1.3.4 Quản lý hệ thống và kỹ thuật
• Hiệu suất hệ thống: Đảm bảo hiệu suất cao và ổn định của hệ thống trong quá
trình đặt vé và giao dịch
• Nâng cấp và cải thiện: Tìm kiếm cách để cải thiện hệ thống, tính năng mới, và
phản hồi từ người dùng để cải thiện trải nghiệm
Trang 181.4 Mục tiêu của đề tài
Phát triển Hệ thống Web Bán Vé Xem Phim Trực Tuyến: Tạo ra một hệ thống web toàn diện cho việc đặt vé xem phim trực tuyến với giao diện thân thiện, cho phép người dùng xem thông tin về các bộ phim, lịch chiếu, đặt vé và thanh toán một cách thuận tiện Tối ưu hóa Trải Nghiệm Người Dùng: Tập trung vào việc cải thiện trải nghiệm người dùng để tạo ra một giao diện thân thiện, dễ sử dụng và linh hoạt Xây dựng chức năng tìm kiếm, lựa chọn chỗ ngồi và quản lý thông tin cá nhân giúp người dùng dễ dàng đặt
vé
Áp dụng Kiến Thức Chuyên Ngành: Sử dụng kiến thức từ chuyên ngành để xây dựng
hệ thống với cơ sở dữ liệu mạnh mẽ, đảm bảo an toàn và bảo mật thông tin người dùng Tối ưu hoá hiệu suất hệ thống, đảm bảo ổn định và linh hoạt trong quản lý dữ liệu và giao dịch
Tích Hợp Các Kỹ Năng Lập Trình và Thiết Kế: Sử dụng các ngôn ngữ lập trình (như CSS, TypeScript, NodeJS, etc.) và framework phù hợp để xây dựng giao diện và chức năng Thiết kế giao diện đẹp và thân thiện với người dùng bằng cách áp dụng kiến thức
về UX/UI
Cải Thiện Hệ Thống Liên Tục: Tiếp tục phát triển và nâng cấp hệ thống dựa trên phản hồi từ người dùng và các xu hướng mới trong công nghệ để đảm bảo tính thích ứng và linh hoạt của sản phẩm
1.5 Ý nghĩa khoa học và thực tiễn
• Ý nghĩa khoa học:
Trong quá trình nghiên cứu và phát triển hệ thống bán vé xem phim trực tuyến, nhóm
em đặt mục tiêu chủ yếu là áp dụng các kiến thức chuyên ngành và phân tích từ góc độ nghiên cứu để xây dựng một sản phẩm có tính khoa học cao
Áp dụng kiến thức chuyên ngành: Sử dụng kiến thức và các phương pháp công nghệ mới để xây dựng hệ thống với tính chính xác và hiệu suất cao
Tiếp cận đề tài từ góc độ nghiên cứu để hiểu rõ hơn về nhu cầu thực tế, xu hướng công nghệ mới, và yếu tố ảnh hưởng đến trải nghiệm người dùng
Áp dụng các công nghệ mới để tối ưu hóa hiệu suất hệ thống cũng như đảm bảo tính
an toàn và bảo mật cho thông tin cá nhân của người dùng
• Ý nghĩa thực tiễn:
Trang 19Xây dựng hệ thống thực tế và triển khai nó để có thể phục vụ người dùng và thị trường một cách hiệu quả
Tạo ra một sản phẩm có thể giải quyết thực tế vấn đề của người dùng, cung cấp cho
họ trải nghiệm tốt nhất khi mua vé xem phim
Đảm bảo rằng sản phẩm có thể thích nghi và mở rộng để đáp ứng các yêu cầu thực
tế trong quá trình sử dụng và phát triển trong tương lai
Trang 20CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Các công nghệ sử dụng ở Front-End
2.1.1 ReactJS Framework
ReactJS là một thư viện JavaScript có tính hiệu quả và linh hoạt để xây dựng các thành phần giao diện người dùng (UI) có thể sử dụng lại ReactJS giúp phân chia các UI phức tạp thành các thành phần nhỏ (được gọi là component) Nó được tạo ra bởi Jordan Walke, một kỹ sư phần mềm tại Facebook ReactJS ban đầu được phát triển và duy trì bởi Facebook và sau đó được sử dụng trong các sản phẩm của mình như WhatsApp & Instagram ReactJS được dùng để xây dựng các ứng dụng - single page application (SPA) Một trong những điểm thú vị của ReacJS là nó không chỉ được xây dựng bên phía clients mà còn được sử dụng trên server và có thể kết nối với nhau ReactJS so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM.1
Công nghệ Virtual DOM giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc mới
có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý ReactJS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này Virtual DOM là một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật
Hình 2.1 Virtual DOM trong ReactJS
Trang 21ReactJS sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều Dữ liệu được truyền từ parent đến child thông qua props Luồng dữ liệu đơn giản giúp chúng ta dễ dàng kiểm soát cũng như sửa lỗi
Với các đặc điểm ở trên, ReactJS dùng để xây dựng các ứng dụng lớn mà dữ liệu của chúng thay đổi liên tục theo thời gian Dữ liệu thay đổi thì hầu hết kèm theo sự thay đổi
về giao diện Ví dụ như Facebook: trên Newsfeed của bạn cùng lúc sẽ có các status khác nhau và mỗi status lại có số like, share, comment liên tục thay đổi Khi đó ReactJS sẽ rất hữu ích để sử dụng
Hình 2.2 One-way binding trong ReactJS
Các ưu điểm nổi bật khi sử dụng ReactJS thay cho các framework khác:
• ReactJS cho phép Developer viết ứng dụng trực tiếp trên JavaScript Thêm vào
đó là JSX – một trong những tính năng không chỉ làm cho ReactJS dễ dàng mà còn thú vị hơn Developer giờ đây có thể tạo nên một tính năng mới và có thể xem nó xuất hiện ngay trong thời gian thực, giúp Developer có thể được đưa trực tiếp các đoạn HTML vào JavaScript
• Một ý tưởng khác làm cho ReactJS trở nên độc đáo là nó cho phép Developer phá vỡ những cấu tạo UI phức tạp thành những component độc lập Dev sẽ không phải lo lắng về tổng thể ứng dụng web, giờ đây Developer dễ dàng chia nhỏ các cấu trúc UI/UX phức tạp thành từng component đơn giản hơn
Trang 22• Không chỉ vậy, thông qua Props, các component có thể kết nối với nhau bằng cách sử dụng data tùy biến Điều này giúp chuyển các dữ liệu đã được tùy biến đến một UI component cụ thể
• Tính năng State khi sử dụng ReactJS, giúp điều chỉnh trạng thái cho các component (child) nhận data từ một component nguồn (parent) Developer có thể thay đổi trạng thái cho nhiều component (child) trên ứng dụng nhưng không ảnh hưởng tới component gốc (parent) đang ở trạng thái Stateful Việc điều chỉnh các ứng dụng cũng trở nên dễ dàng hơn
• Dom ảo (Virtual DOM) giúp cho ứng dụng nhanh hơn DOM ảo hỗ trợ rất tốt cho việc cấu trúc UI phản ứng kịp thời với trước những thay đổi nhằm tăng trải nghiệm người dùng Khi tạo ra ReactJS, các nhà thiết kế đã dự đoán đúng việc cập nhật các HTML cũ là cực kỳ quan trọng nhưng cũng khá tốn kém chi phí Vì thế ý tưởng sử dụng DOM ảo giúp ReactJS biết chính xác khi nào cần render lại hoặc khi nào bỏ đi những phần tử của DOM chính vì phát hiện ra những thay đổi trên data
2.1.2 Các thư viện hỗ trợ khác
Một số thư viện hỗ trợ cho việc xây dựng website ở phía Front-End:
• Axios: là một HTTP client được phát triển dựa trên Javascript Promise, được dùng để hỗ trợ cho việc xây dựng các ứng dụng API từ đơn giản đến phức tạp và
có thể được sử dụng cả ở trình duyệt hay Node.js
• Tailwind CSS: Thư viện CSS utility-first giúp xây dựng giao diện người dùng linh hoạt và dễ bảo trì
• Ant Design (Antd): Thư viện React UI cung cấp các thành phần giao diện người dùng chuyên nghiệp theo phong cách Ant Design
• React Router: Quản lý định tuyến trong ứng dụng React, cho phép chuyển đổi giữa các trang và cung cấp tính năng như tham số URL và quản lý history
• React Hook Form: Thư viện quản lý trạng thái biểu mẫu trong React bằng Hooks, giúp xử lý trạng thái, xác thực và theo dõi sự thay đổi trên các trường biểu mẫu
• Yup: Thư viện xác thực dữ liệu dựa trên schema, kiểm tra và đảm bảo tính hợp lệ của dữ liệu
• React Query: Thư viện quản lý trạng thái và fetch dữ liệu trong ứng dụng React thông qua Hooks, hỗ trợ quản lý trạng thái và thao tác truy vấn
Trang 23• I18n: Thư viện i18n (quốc tế hóa) giúp ứng dụng hỗ trợ nhiều ngôn ngữ và vùng (địa lý) khác nhau Nó cung cấp các công cụ để dễ dàng dịch văn bản, định dạng ngày tháng, số và các phần khác của ứng dụng để phản ánh yêu cầu ngôn ngữ và vùng cụ thể của người dùng Thư viện i18n giúp tạo ra trải nghiệm đa ngôn ngữ linh hoạt và dễ bảo trì
• React Helmet: Cho phép thêm các thẻ <head> tùy chỉnh vào trang React để quản
lý tiêu đề, meta tags, và các thẻ khác của trang HTML Hỗ trợ việc SEO của website được tốt hơn
2.2 Các công nghệ sử dụng ở Back-End
2.2.1 NestJS
NestJS là một NodeJS framework dùng để phát triển server-side applications hiệu quả và có thể mở rộng NestJS là sự kết hợp bởi OOP(Object Oriented Programming), FP(Functional Programming), FRP(Functional Reactive Programming) NestJS sử dụng TypeScript để phát triển nhưng nó cũng hỗ trợ cả Javascript để tạo ra một môi trường phát triển hiện đại và mạnh mẽ cho việc xây dựng các ứng dụng web và API
Module (Các module): Module là một phần cơ bản trong cấu trúc NestJS Mỗi ứng dụng NestJS bao gồm ít nhất một module gốc (root module) và có thể có nhiều module con Module là nơi tổ chức các thành phần của ứng dụng như Controllers, Providers và các thành phần khác Mỗi module đại diện cho một phần chức năng cụ thể của ứng dụng Middleware (Trung gian): Middleware là các hàm xử lý mà NestJS sử dụng để xử lý các yêu cầu HTTP trước khi chúng đến các route xử lý chính Middleware có thể được
sử dụng để thực hiện các thao tác chung như xác thực, ghi log, xử lý lỗi, v.v
Filter (Bộ lọc): Filters được sử dụng để xử lý các exception (ngoại lệ) xảy ra trong ứng dụng Filters cho phép bạn xử lý và thay đổi response trước khi gửi về client khi có exception xảy ra
Exception (Ngoại lệ): Exception handling (xử lý ngoại lệ) là một phần quan trọng của cấu trúc NestJS Exception handling cho phép bạn xử lý các exception xảy ra trong ứng dụng và trả về các thông báo lỗi thích hợp cho client.2
2 Cách Request Lifecycle hoạt động trong NestJS nestjs-y3RL1awpLao
Trang 24https://viblo.asia/p/cach-request-lifecycle-hoat-dong-trong-Hình 2.3 Cấu trúc của NestJS
Tính năng của NestJS
• Với NestJS, việc sử dụng Dependency Injection (DI) là một cách hiệu quả để giảm sự phụ thuộc cứng giữa các thành phần của ứng dụng DI giúp bạn tạo ra
mã linh hoạt, tái sử dụng và dễ kiểm thử Các decorator (chú thích) trong NestJS giúp xác định vai trò và mục đích của từng thành phần trong mã nguồn như Controllers, Providers, Middleware, v.v., giúp bạn dễ dàng hiểu và bảo trì mã nguồn
• NestJS hỗ trợ Middleware và Interceptors, giúp bạn thực hiện các thao tác chung trước và sau khi xử lý yêu cầu HTTP Điều này giúp bạn xử lý các yêu cầu HTTP trước khi chúng đến các route xử lý chính và thay đổi response trước khi nó được gửi về client
Trang 25• Exception handling (xử lý ngoại lệ) là một phần quan trọng trong NestJS, giúp bạn xử lý các exception xảy ra trong ứng dụng và trả về các thông báo lỗi thích hợp cho client khi có lỗi xảy ra
2.2.2 MongoDB
NoSQL là 1 dạng CSDL mã nguồn mở không sử dụng Transact-SQL để truy vấn thông tin NoSQL cho phép mở rộng dữ liệu mà không cần tạo khóa ngoại, khóa chính hay kiểm tra tính ràng buộc… Có thể thấy, dạng cơ sở dữ liệu này có thể linh động, sẵn sàng bỏ qua tính toàn vẹn cứng nhắc của transaction hay dữ liệu nhằm đổi lấy hiệu suất, cùng với khả năng mở rộng tốt
Các Collection trong MongoDB có cấu trúc cực kỳ linh hoạt Điều này cho phép dữ liệu không cần thiết phải tuân theo bất kỳ một dạng cấu trúc nào Vì thế, MongoDB có thể lưu trữ những dữ liệu có cấu trúc đa dạng và phức tạp Dữ liệu trong MongoDB được lưu bằng định dạng kiểu JSON
Hình 2.4 Kiến trúc của MongoDB
Các tính năng của MongoDB
• Khả năng nhân rộng Replication hay còn được hiểu là nhân bản, tức là sẽ có những bản sao tương tự những phiên bản mà bạn đang sử dụng Nhu cầu lưu trữ
dữ liệu lớn do cơ sở dữ liệu ngày càng đa dạng, chính vì vậy nó càng đòi hỏi dữ
Trang 26liệu phải được toàn vẹn và tránh bị mất mát trước những sự cố trong quá trình xử
lý
• Trong cân bằng tải: Thông qua Sharding, MongoDB phân chia tỷ lệ theo chiều ngang giúp người sử dụng chọn lựa chọn 1 Shard key, xác định những data được phân phối trong Collection Về cơ bản, những dữ liệu được phân chia, phân phối đồng đều dựa trên những Shard key Hỗ trợ chạy trên nhiều máy chủ, cân bằng tải hoặc copy dữ liệu để giúp hệ thống luôn hoạt động ngay cả khi có lỗi về phần cứng
• Hỗ trợ lưu trữ các tệp dữ liệu: MongoDB sử dụng như hệ thống tệp nhờ khả năng lưu trữ tệp dữ liệu từ đó hỗ trợ cân bằng tải và copy dữ liệu từ nhiều máy tính Trong đó, hệ thống tệp GridFS sẽ phân chia từng tệp ra những phần hay đoạn lưu thành những document riêng và người dùng có thể truy xuất GridFS thông qua tiện ích Mongofiles
• Tập hợp: MongoDB cung cấp 3 phương pháp tập hợp chính bao gồm Aggregation Pipeline, Single-purpose Aggregation và Mapreduce Trong đó, Aggregation Pipeline được đánh giá là mang lại hiệu suất cao hơn so với những hoạt động tổng hợp khác
• Quy định kích thước giới hạn Collection: MongoDB có hỗ trợ cho những Collection giới hạn Khi dữ liệu vượt quá mức giới hạn cho phép thì những tài liệu cũ trước đó sẽ bị xóa mà không cần người dùng sử dụng bất kỳ câu lệnh điều khiển nào.3
2.2.3 Các thư viện hỗ trợ khác
Một số thư viện hỗ trợ cho việc xây dựng website ở phía Back-End:
• moongose: là một thư viện mô hình hóa đối tượng (Object Data Model - ODM) cho MongoDB và Node.js Nó quản lý mối quan hệ giữa dữ liệu, cung cấp sự xác nhận giản đồ và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn các đối tượng trong MongoDB
• jsonwebtoken: JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng JSON Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào "chữ ký" của nó Phần chữ ký của JWT sẽ được mã hóa lại bằng HMAC hoặc RSA Trong đó chuỗi
Trang 27Token phải có 3 phần là header , phần payload và phần signature được ngăn bằng
dấu “.”
Hình 2.5 Các thành phần của JWT
• google-auth-library: thư viện được hỗ trợ chính thức của Google để sử dụng ủy
quyền và xác thực OAuth 2.0 với các API của Google
• dotenv: là một module, tải các biến môi trường từ env vào process.env Lưu trữ
cấu hình trong môi trường tách biệt với code
• moment: là một thư viện mạnh dùng để thao tác xử lý datetime trong javascript
cũng như là typescript được thiết kế hoạt động trong cả browser và Node.js,
thường được dùng để thay thế cho datetime có sẵn trong javascript
• cors: là viết tắt của Cross-origin resource sharing, là một cơ chế cho phép hạn
chế việc chia sẻ tài nguyên của một trang web đối với các trang web khác
Trang 28CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU 3.1 Khảo sát hiện trạng
3.1.1 CGV Vietnam
Hình 3.1 Khảo sát hiện trạng CGV Vietnam
Ưu điểm của CGV Vietnam:
• Giao diện: Trang web của CGV có giao diện trực quan, giúp họ dễ dàng tìm kiếm thông tin và đặt vé
• Thông tin chi tiết về phim và lịch chiếu: Cung cấp đầy đủ thông tin về các bộ phim đang chiếu, lịch chiếu, thể loại, diễn viên, giúp người dùng có cái nhìn tổng quan trước khi đặt vé
• Phương thức thanh toán đa dạng: Hỗ trợ nhiều phương thức thanh toán khác nhau như thẻ tín dụng, ví điện tử, hoặc cổng thanh toán trực tuyến
• Chương trình khuyến mãi và ưu đãi: Thường xuyên có các chương trình khuyến mãi, ưu đãi cho người dùng như vé giá rẻ, combo vé và đồ ăn uống
Hạn chế và điểm cần cải thiện của CGV Vietnam:
• Tốc độ tải trang và trải nghiệm người dùng: Tốc độ tải trang không nhanh, cũng như trải nghiệm đặt vé không được mượt mà
Trang 29• Tính năng tương tác và hỗ trợ khách hàng: Cần cải thiện tính năng tương tác và
hỗ trợ người dùng khi gặp vấn đề trong quá trình đặt vé hoặc cần thông tin hỗ trợ
• Tối ưu hóa trải nghiệm người dùng: Có thể cần cải thiện giao diện và trải nghiệm người dùng để tăng tính hấp dẫn và thuận tiện cho người dùng khi sử dụng
• Chức năng: có 1 số chức năng lỗi hoặc khó thực hiện, giao diện khó cho người dùng sử dụng, quy trình đặt vé, đăng nhập phức tạp,…
Hình 3.2 Khảo sát hiện trạng CGV Vietnam
3.1.2 Lotte Cinema Vietnam
Ưu điểm của Lotte Cinema Vietnam:
• Thông tin chi tiết và lịch chiếu: Trang web cung cấp thông tin chi tiết về các bộ phim, lịch chiếu, thể loại, diễn viên và trailer giúp người dùng có cái nhìn tổng quan về phim trước khi đặt vé
• Tính linh hoạt và thanh toán đa dạng: Hỗ trợ nhiều phương thức thanh toán khác nhau như thẻ tín dụng, chuyển khoản ngân hàng, hoặc thanh toán qua các cổng thanh toán trực tuyến
Hạn chế và điểm cần cải thiện của Lotte Cinema Vietnam:
• Giao diện và trải nghiệm người dùng: Giao diện trang web có thể không linh hoạt và cần cải thiện để tăng trải nghiệm người dùng
Trang 30• Tính năng tương tác và hỗ trợ khách hàng: Cần cải thiện tính năng tương tác và
hỗ trợ người dùng khi gặp vấn đề trong quá trình đặt vé hoặc cần thông tin hỗ trợ
• Cải thiện tính hấp dẫn và thuận tiện: Có thể cần cải thiện giao diện và trải nghiệm người dùng để tăng tính hấp dẫn và thuận tiện khi sử dụng
Hình 3.3 Khảo sát hiện trạng Lotte Cinema Vietnam
3.1.3 Galaxy Cinema
Ưu điểm của Galaxy Cinema:
• Thông tin chi tiết và lịch chiếu: Trang web cung cấp thông tin chi tiết về các bộ phim, lịch chiếu, thể loại, diễn viên và trailer giúp người dùng có cái nhìn tổng quan về phim trước khi đặt vé
• Tính linh hoạt và thanh toán đa dạng: Hỗ trợ nhiều phương thức thanh toán khác nhau như thẻ tín dụng, chuyển khoản ngân hàng, hoặc thanh toán qua các cổng thanh toán trực tuyến
Hạn chế và điểm cần cải thiện của Galaxy Cinema:
• Giao diện và trải nghiệm người dùng: Giao diện trang web có thể không linh hoạt và cần cải thiện để tăng trải nghiệm người dùng
Trang 31• Tính năng tương tác và hỗ trợ khách hàng: Cần cải thiện tính năng tương tác và
hỗ trợ người dùng khi gặp vấn đề trong quá trình đặt vé hoặc cần thông tin hỗ trợ
• Cải thiện tính hấp dẫn và thuận tiện: Có thể cần cải thiện giao diện và trải nghiệm người dùng để tăng tính hấp dẫn và thuận tiện khi sử dụng
Hình 3.4 Khảo sát hiện trạng trang Galaxy Cinema
3.1.4 Kết luận
Dựa trên những thông tin về các trang web bán vé xem phim trực tuyến ở Việt Nam như CGV Vietnam, Lotte Cinema Vietnam và Galaxy Cinema,… có thể rút ra một số kết luận chung như sau:
Giao diện và trải nghiệm người dùng: Một số trang web có gặp vấn đề về giao diện không linh hoạt và trải nghiệm người dùng không luôn tốt Điều này có thể gây ra khó khăn cho người dùng khi tìm kiếm thông tin và đặt vé
Tính năng tương tác và hỗ trợ người dùng: Cần cải thiện tính năng tương tác và hỗ trợ người dùng khi họ cần thông tin hoặc gặp vấn đề trong quá trình đặt vé Việc cung cấp hỗ trợ nhanh chóng và hiệu quả sẽ tăng cường trải nghiệm người dùng
Trang 32Tối ưu hóa trải nghiệm người dùng: Tăng cường trải nghiệm người dùng bằng cách cải thiện giao diện trang web, làm cho quá trình tìm kiếm thông tin và đặt vé trở nên dễ dàng và thuận tiện hơn
Chức năng hệ thống: Tốc độ tải trang không nhanh, cũng như trải nghiệm đặt vé không được mượt mà Một số chức năng bị lỗi, quy trình xử lý phức tạp
Từ những khảo sát trên và thông tin thu thập được, nhóm em sẽ ghi nhận và cải thiện, tăng trải nghiệm người dùng, đảm bảo hệ thống luôn hoạt động một cách chính xác
3.2 Xác định yêu cầu
3.2.1 Yêu cầu chức năng
• Xem Danh Sách Phim: Hệ thống cung cấp danh sách các bộ phim đang chiếu
với thông tin chi tiết về từng bộ phim như tựa đề, thể loại, diễn viên, thời lượng, và mô tả
• Đặt Vé: Người dùng có thể chọn phim, suất chiếu, và ghế ngồi trên giao diện để
đặt vé
• Thanh Toán: Hệ thống cung cấp phương thức thanh toán an toàn và xử lý giao
dịch mua vé
• Quản Lý Lịch Chiếu: Quản trị viên có thể cập nhật, thêm mới, hoặc xóa lịch
chiếu cho các bộ phim
• Quản Lý Tài Khoản: Cho phép người dùng quản lý thông tin cá nhân, đổi mật
khẩu, và cài đặt tùy chọn khác
• Xác Nhận Đặt Vé: Hệ thống gửi thông báo xác nhận đặt vé cho người dùng sau
khi thanh toán thành công
3.2.2 Yêu cầu phi chức năng
• Hiệu Suất: Hệ thống cần xử lý nhiều giao dịch cùng lúc để đáp ứng nhu cầu đặt
vé trong các khung giờ cao điểm
• Bảo Mật: Thông tin cá nhân và thông tin thanh toán của người dùng cần được
mã hóa và bảo mật
• Khả Năng Mở Rộng: Hệ thống cần có khả năng mở rộng để hỗ trợ thêm rạp
chiếu phim, cải thiện hiệu suất và tính năng mới trong tương lai
Trang 33• Đáng Tin Cậy và Ổn Định: Đảm bảo hệ thống hoạt động ổn định, đáng tin cậy,
ít gặp lỗi và có khả năng khôi phục sau sự cố
3.3 Mô hình hóa yêu cầu
3.3.1 Lược đồ Usecase
Hình 3.5 Usecase cho người dùng
Trang 34Hình 3.6 Usecase cho quản trị viên
3.3.2 Mô hình hóa yêu cầu
2.3.3.1 Mô hình hóa website phía khách và thành viên
Bảng 3.1 Đặc tả usecase xem danh sách phim
Tên usecase Xem danh sách phim
Mô tả Chức năng này cho phép người dùng xem danh sách các bộ phim đang
chiếu tại rạp cụ thể thông qua trang web đặt vé
Actor Khách hàng hoặc người dùng
Tiền điều kiện
• Hệ thống hoạt động và đã được khởi động
• Dữ liệu về danh sách phim đã được tải hoặc cập nhật trên hệ thống
Hậu điều kiện • Danh sách phim được hiển thị đầy đủ và chính xác
Trang 35• Người dùng có thể xem thông tin chi tiết về từng bộ phim
Luồng cơ bản
(Thành công)
Xem danh sách phim thành công
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng xem danh sách phim
3 Hệ thống hiển thị danh sách các bộ phim đang chiếu kèm theo thông tin chi tiết, bao gồm tên phim, thể loại, đạo diễn, diễn viên, thời lượng và mô tả
4 Người dùng có thể xem chi tiết từng bộ phim bằng cách chọn hoặc nhấn vào thông tin phim tương ứng
Luồng thay thế
(Thất bại)
Không có bộ phim để hiển thị
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng xem danh sách phim
3 Hệ thống cố gắng hiển thị danh sách các bộ phim đang chiếu
4 Nếu không có bộ phim nào hiển thị, hệ thống thông báo "Hiện không có thông tin về bộ phim nào được hiển thị" hoặc thông báo tương tự
5 Người dùng có thể quay lại trang chủ hoặc thực hiện lại việc xem danh sách phim
Người dùng không nhập thông tin tìm kiếm
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng không nhập thông tin tìm kiếm và nhấn nút xem danh sách phim
3 Hệ thống hiển thị thông báo "Vui lòng nhập thông tin tìm kiếm!" và yêu cầu người dùng nhập thông tin tìm kiếm
4 Người dùng có thể nhập lại thông tin tìm kiếm hoặc quay lại trang chủ
Luồng mở rộng Không có
Trang 36Bảng 3.2 Đặc tả usecase xem chi tiết từng bộ phim
Tên usecase Xem chi tiết từng bộ phim
Mô tả Chức năng cho phép người dùng xem thông tin chi tiết về một bộ phim
cụ thể trên trang web đặt vé rạp chiếu phim
Actor Khách hàng hoặc người dùng
Tiền điều kiện Danh sách phim đã được tải hoặc cập nhật trong cơ sở dữ liệu
Hậu điều kiện Thông tin chi tiết về bộ phim được hiển thị đầy đủ và chính xác
Luồng cơ bản
(Thành công)
1 Hệ thống hiển thị thông tin chi tiết về bộ phim đã chọn, bao gồm tên phim, thể loại, đạo diễn, diễn viên, thời lượng, mô tả, và các thông tin khác
2 Người dùng có thể xem các chi tiết và thông tin cụ thể về bộ phim bằng cách duyệt qua trang hoặc chọn các mục tương ứng
3 Kết thúc xem chi tiết từng bộ phim
Luồng thay thế
(Thất bại)
Không thể hiển thị thông tin chi tiết về bộ phim
1 Hệ thống thông báo "Không thể hiển thị thông tin chi tiết cho
bộ phim này Vui lòng thử lại sau."
2 Người dùng có thể quay lại danh sách phim hoặc thực hiện lại việc chọn bộ phim khác
Luồng mở rộng Không có
Bảng 3.3 Đặc tả usecase xem lịch chiếu
Tên usecase Xem lịch chiếu
Mô tả Chức năng này cho phép người dùng xem lịch chiếu của các phim
đang chiếu tại rạp cụ thể thông qua trang web đặt vé
Actor Khách hàng hoặc người dùng
Tiền điều kiện Dữ liệu liên quan đến lịch chiếu của các bộ phim đã được cập nhật và
có sẵn trên hệ thống
Hậu điều kiện • Danh sách lịch chiếu hiển thị chính xác và hoàn chỉnh
Trang 37• Người dùng có thể xem chi tiết về lịch chiếu của từng bộ phim nếu họ chọn
Luồng cơ bản
(Thành công)
Xem lịch chiếu thành công
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng xem lịch chiếu
3 Hệ thống hiển thị lịch chiếu cho các bộ phim đang chiếu, bao gồm thời gian, phòng chiếu, số ghế còn trống, và các thông tin liên quan khác
4 Người dùng có thể xem chi tiết về lịch chiếu của từng bộ phim bằng cách chọn hoặc nhấn vào thông tin lịch chiếu tương ứng
Luồng thay thế
(Thất bại)
Xem lịch chiếu không thành công
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng xem lịch chiếu
3 Hệ thống cố gắng hiển thị lịch chiếu cho các bộ phim đang chiếu
4 Nếu không có thông tin lịch chiếu nào được hiển thị, hệ thống thông báo "Hiện không có thông tin lịch chiếu" hoặc thông báo tương tự
5 Người dùng có thể quay lại trang chủ hoặc thực hiện lại việc xem lịch chiếu
Người dùng không chọn thông tin tìm kiếm lịch chiếu
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng không chọn thông tin tìm kiếm lịch chiếu và nhấn nút xem lịch chiếu
3 Hệ thống hiển thị thông báo "Vui lòng chọn thông tin tìm kiếm lịch chiếu!" và yêu cầu người dùng nhập thông tin tìm kiếm
4 Người dùng có thể chọn lại thông tin tìm kiếm lịch chiếu hoặc quay lại trang chủ
Luồng mở rộng Không có
Trang 38Bảng 3.4 Đặc tả usecase đăng nhập vào tài khoản
Tên usecase Đăng nhập vào tài khoản
Mô tả Chức năng này cho phép người dùng truy cập vào tài khoản cá nhân
trên trang web đặt vé của rạp chiếu phim
Actor Người dùng
Tiền điều kiện
• Người dùng đã truy cập trang web
• Hệ thống đã được khởi động và hoạt động bình thường
• Người dùng đã có tài khoản được tạo trước đó trong cơ sở dữ liệu của hệ thống
Hậu điều kiện
• Người dùng được xác thực và họ có quyền truy cập các chức năng sau khi đăng nhập
• Hệ thống ghi nhận hoạt động đăng nhập của người dùng cho mục đích theo dõi và bảo mật
Luồng cơ bản
(Thành công)
Đăng nhập thành công
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng đăng nhập
3 Hệ thống yêu cầu người dùng nhập thông tin đăng nhập (tên đăng nhập và mật khẩu)
4 Người dùng nhập thông tin đăng nhập chính xác
5 Hệ thống xác minh thông tin và đăng nhập thành công vào tài khoản người dùng
6 Trang web hiển thị giao diện tài khoản cá nhân hoặc trang chủ
đã đăng nhập
Luồng thay thế
(Thất bại)
Đăng nhập không thành công vì thông tin không chính xác
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng đăng nhập
3 Hệ thống yêu cầu người dùng nhập thông tin đăng nhập (tên đăng nhập và mật khẩu)
Trang 394 Người dùng nhập thông tin không chính xác hoặc không hợp
Người dùng chưa có tài khoản và cần đăng ký
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng đăng nhập
3 Hệ thống cung cấp tùy chọn đăng ký tài khoản nếu người dùng chưa có tài khoản
4 Người dùng chọn tạo tài khoản mới
5 Hệ thống yêu cầu người dùng nhập thông tin cá nhân cần thiết (email, mật khẩu, thông tin liên hệ, v.v.)
6 Người dùng hoàn tất việc tạo tài khoản mới và có thể đăng nhập sau khi tạo thành công
Luồng mở rộng Không có
Bảng 3.5 Đặc tả usecase đăng ký tài khoản mới
Tên usecase Đăng ký tài khoản mới
Mô tả Chức năng này cho phép khách hàng tạo một tài khoản mới trên trang
web đặt vé của rạp chiếu phim
Đăng ký tài khoản thành công
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
Trang 402 Người dùng chọn chức năng đăng ký tài khoản mới
3 Hệ thống yêu cầu người dùng nhập các thông tin cần thiết cho việc tạo tài khoản mới (email, mật khẩu, thông tin liên hệ, v.v.)
4 Người dùng điền thông tin yêu cầu
5 Hệ thống kiểm tra tính hợp lệ của thông tin và xác nhận tạo tài khoản mới thành công
6 Trang web hiển thị thông báo "Tài khoản đã được tạo thành công" hoặc thông báo tương tự
Luồng thay thế
(Thất bại)
Người dùng không nhập đầy đủ hoặc thông tin không hợp lệ
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng đăng ký tài khoản mới
3 Hệ thống yêu cầu người dùng nhập các thông tin cần thiết cho việc tạo tài khoản mới
4 Người dùng không điền đầy đủ hoặc cung cấp thông tin không hợp lệ
5 Hệ thống thông báo lỗi "Vui lòng nhập đầy đủ thông tin cần thiết" hoặc thông báo tương tự
6 Người dùng có thể điều chỉnh hoặc cung cấp thông tin chính xác để hoàn tất việc đăng ký
Tên người dùng hoặc địa chỉ email đã được sử dụng trước đó
1 Người dùng truy cập trang web đặt vé rạp chiếu phim
2 Người dùng chọn chức năng đăng ký tài khoản mới
3 Hệ thống yêu cầu người dùng nhập các thông tin cần thiết cho việc tạo tài khoản mới
4 Người dùng sử dụng tên người dùng hoặc địa chỉ email đã được sử dụng trước đó
5 Hệ thống thông báo lỗi "Tên người dùng hoặc địa chỉ email đã tồn tại" hoặc thông báo tương tự