Các vấn đề: Các trang web trên đều cung cấp các tính năng quản lý rạp chiếu phim như lịch chiếu, đặt vé trực tuyến, thông tin phim và tin tức.. Mỗi trang web có thiết kế và tính năng khá
CƠ SỞ LÝ THUYẾT
Kiến thức nền tảng
2.1.1 Ngôn ngữ HTML (HyperText Markup Language):
HTML là ngôn ngữ đánh dấu siêu văn bản sử dụng để tạo nên các trang web
Nó được sử dụng để mô tả cấu trúc và nội dung của một trang web thông qua việc sử dụng các thẻ (tags) và các phần tử
HTML cho phép định nghĩa cấu trúc của một trang web bằng cách sử dụng các thẻ Mỗi thẻ được đặt trong cặp dấu ngoặc nhọn ("") và có thể chứa các thuộc tính để xác định các đặc điểm và hành vi của phần tử Ví dụ, thẻ được sử dụng để định nghĩa một tiêu đề cấp 1, thẻ
được sử dụng để định nghĩa một đoạn văn bản, và thẻ được sử dụng để hiển thị hình ảnh [1]
HTML hỗ trợ nhiều loại phần tử như tiêu đề, đoạn văn bản, danh sách, bảng, hình ảnh, liên kết, biểu đồ, video và âm thanh, và nhiều hơn nữa Các phần tử này có thể được lồng vào nhau để tạo nên cấu trúc phức tạp và đa dạng của một trang web Ngoài ra, HTML cũng hỗ trợ sử dụng CSS (Cascading Style Sheets) để định dạng và tạo kiểu cho các phần tử trong trang web, giúp điều chỉnh màu sắc, kích thước, vị trí, căn chỉnh và các hiệu ứng trực quan khác
HTML là một ngôn ngữ cơ bản và quan trọng trong việc phát triển và xây dựng các trang web Nó cung cấp khả năng mô tả cấu trúc và nội dung của một trang web một cách dễ hiểu và linh hoạt Khi được kết hợp với CSS và JavaScript, HTML giúp tạo ra các trang web đa dạng, hấp dẫn và tương tác
2.1.2 Ngôn ngữ CSS (Cascading Style Sheets):
CSS là một ngôn ngữ được sử dụng để định dạng và trình bày các trang web
Nó giúp điều chỉnh màu sắc, kích thước, vị trí và hiệu ứng của các phần tử trên trang web, từ văn bản, hình ảnh, đến bố cục và các phần tử giao diện
Một số điểm nổi bật về CSS:
- Tách biệt giữa nội dung và kiểu dáng: CSS cho phép tách biệt giữa nội dung (HTML) và kiểu dáng (CSS)
- Lập trình linh hoạt: CSS sử dụng cú pháp đơn giản và dễ hiểu, giúp lập trình viên có thể thực hiện các tùy chỉnh và hiệu ứng phức tạp trên trang web
- Kế thừa và ưu tiên: CSS áp dụng nguyên tắc kế thừa, cho phép các thuộc tính được kế thừa từ các phần tử cha
- Responsive design: cho phép tạo ra các trang web linh hoạt và tương thích với các thiết bị và màn hình khác nhau
- Thư viện và framework: Có nhiều thư viện và framework CSS phổ biến như Bootstrap, Foundation, Materialize CSS, …
2.1.3 Ngôn ngữ lập trình Java:
Java là một ngôn ngữ lập trình phổ biến và một nền tảng phát triển phần mềm mạnh mẽ Nó được phát triển bởi Sun Microsystems (nay là Oracle Corporation) và ra mắt lần đầu vào năm 1995 Java được thiết kế để có tính di động và đa nền tảng, cho phép viết một lần và chạy ở nhiều môi trường khác nhau
Java sử dụng cú pháp tương đối dễ hiểu và có cấu trúc, đồng thời hỗ trợ tính năng hướng đối tượng Ngôn ngữ này giúp các nhà phát triển xây dựng các ứng dụng phần mềm phức tạp và lớn, từ ứng dụng di động, ứng dụng máy tính cá nhân cho đến ứng dụng doanh nghiệp
Java có mô hình thực thi trung gian (intermediate execution model), trong đó mã nguồn Java được biên dịch thành mã bytecode, sau đó được thực thi trên máy ảo Java (JVM - Java Virtual Machine) Điều này giúp ứng dụng Java có khả năng di
7 động cao và khả năng chạy trên nhiều hệ điều hành khác nhau mà không cần viết lại mã nguồn [1]
Một số đặc điểm nổi bật của Java bao gồm quản lý bộ nhớ tự động (garbage collection), bảo mật cao, kiểm soát ngoại lệ (exception handling), luồng (thread) và xử lý đồng thời, cộng đồng lớn và nhiều thư viện phong phú Java cũng hỗ trợ phát triển ứng dụng web thông qua các công nghệ như Servlet, JSP và Framework Spring
Java có ứng dụng rộng rãi trong các lĩnh vực như phát triển ứng dụng di động (Android), phát triển ứng dụng máy tính cá nhân, phát triển ứng dụng server, phát triển ứng dụng web, trí tuệ nhân tạo, big data, game và nhiều lĩnh vực công nghệ khác
JavaScript là một ngôn ngữ lập trình phía máy khách (client-side) được sử dụng để tương tác và thay đổi nội dung của trang web Nó cho phép bạn thêm các hiệu ứng động, xử lý sự kiện, kiểm tra và thay đổi dữ liệu, và tạo ra các trải nghiệm tương tác trên trình duyệt web
Dưới đây là một số điểm nổi bật về JavaScript:
- Tương tác người dùng: cho phép tương tác với người dùng thông qua xử lý sự kiện như nhấp chuột, di chuột, gõ phím và gửi biểu mẫu
- Điều khiển DOM: cho phép thay đổi nội dung và cấu trúc của trang web bằng cách truy cập và thay đổi các phần tử trong DOM (Document Object Model)
- Xử lý dữ liệu: thực hiện các phép tính, kiểm tra và xử lý chuỗi, mảng, đối tượng, và thực hiện các hoạt động logic phức tạp
- Giao tiếp với máy chủ: JavaScript cung cấp các API và phương thức để giao tiếp với máy chủ
- Thư viện và framework: có nhiều thư viện và framework JavaScript phổ biến như jQuery, React, Angular, Vue.js, …
2.1.5 Ngôn ngữ SQL (Structured Query Language):
SQL là ngôn ngữ truy vấn cấu trúc được sử dụng để quản lý và tương tác với cơ sở dữ liệu quan hệ Nó là một ngôn ngữ tiêu chuẩn được sử dụng rộng rãi trong lĩnh vực quản lý cơ sở dữ liệu
Dưới đây là một số điểm nổi bật về SQL:
- Truy vấn dữ liệu: cho phép truy vấn và lấy dữ liệu từ cơ sở dữ liệu bằng cách sử dụng các câu lệnh SELECT, FROM, WHERE, GROUP BY, HAVING và ORDER BY
- Thao tác dữ liệu: SQL cung cấp các câu lệnh để thao tác dữ liệu trong cơ sở dữ liệu: chèn (INSERT), cập nhật (UPDATE) và xóa (DELETE)
- Quản lý cơ sở dữ liệu: SQL cung cấp các câu lệnh để tạo, sửa đổi và xóa cơ sở dữ liệu, bảng, khóa ngoại, chỉ mục và ràng buộc
Công nghệ sử dụng
Spring Boot là một framework phát triển ứng dụng Java dựa trên nền tảng Spring Framework Nó được thiết kế để giúp lập trình viên xây dựng ứng dụng web và dịch vụ nhanh chóng, dễ dàng và tiết kiệm thời gian
Một số đặc điểm chính của Spring Boot:
- Tiết kiệm thời gian cấu hình: Spring Boot tự động cấu hình và cung cấp các giải pháp mặc định cho các thành phần Spring như Hibernate, Spring MVC, Spring Data và nhiều công nghệ khác
- Microservices-friendly: Spring Boot hỗ trợ phát triển các ứng dụng dạng microservices
- Tự động cấu hình và quản lý phụ thuộc: Spring Boot sử dụng các thư viện tự động cấu hình để quét và xác định các phụ thuộc của ứng dụng
- Tích hợp dễ dàng: Spring Boot tích hợp tốt với các công nghệ và framework phổ biến khác như Spring Data, Spring Security, Thymeleaf, Hibernate, và nhiều thư viện khác
- Tính linh hoạt và mở rộng: Spring Boot hỗ trợ việc tạo các thành phần tùy chỉnh và kết hợp với các công nghệ khác để xây dựng ứng dụng đáp ứng các yêu cầu đặc biệt
Spring MVC là một trong các module của Spring Framework, nó cung cấp một mô hình phát triển ứng dụng web theo kiến trúc MVC (Model-View-Controller) Đây là một trong những framework phổ biến để phát triển ứng dụng web Java Một số điểm nổi bật về Spring MVC:
- Mô hình MVC: sử dụng mô hình MVC để tách biệt các phần khác nhau của ứng dụng web như xử lý logic (Controller), hiển thị giao diện (View) và quản lý dữ liệu (Model) Điều này giúp tăng tính tái sử dụng, bảo trì và phát triển linh hoạt của ứng dụng
- DispatcherServlet: nhận các yêu cầu từ người dùng, xác định Controller phù hợp để xử lý yêu cầu và chuyển tiếp dữ liệu giữa Controller và View
- Cấu hình linh hoạt: cấu hình ứng dụng thông qua các tệp cấu hình XML, Annotation hoặc Java Configuration
Thymeleaf là một template engine phổ biến trong phát triển ứng dụng web Java Nó được sử dụng để tạo ra các giao diện người dùng (UI) động và tương tác với dữ liệu
Một số điểm nổi bật về Thymeleaf:
- Cú pháp thân thiện với người dùng
- Hỗ trợ đa ngôn ngữ
- Tích hợp tốt với Spring: Thymeleaf có tích hợp tốt với Spring Framework và được khuyến nghị sử dụng cùng với Spring MVC Nó hỗ trợ các tính năng như binding dữ liệu, xử lý sự kiện, và hỗ trợ dữ liệu động trong giao diện người dùng
- Tích hợp dễ dàng: Thymeleaf có thể tích hợp với các công nghệ và framework khác như Spring Boot, Java EE, và các framework phát triển web khác
Bootstrap 5 là một framework phát triển web phổ biến, được sử dụng để xây dựng giao diện người dùng (UI) linh hoạt và đáp ứng trên nhiều thiết bị khác nhau
Dưới đây là một số điểm nổi bật về Bootstrap 5:
- Thiết kế đáp ứng: Bootstrap 5 hỗ trợ thiết kế đáp ứng, tức là giao diện sẽ tự động điều chỉnh và thích nghi với các kích thước màn hình khác nhau, bao gồm cả điện thoại di động, máy tính bảng và máy tính để bàn Điều này giúp tạo ra trải nghiệm người dùng tốt trên mọi thiết bị
- Cú pháp dễ sử dụng: Bootstrap 5 sử dụng cú pháp dễ hiểu và gần gũi với HTML và CSS
- Các thành phần giao diện sẵn có: Bootstrap 5 cung cấp một bộ sưu tập các thành phần giao diện sẵn có như nút, biểu mẫu, thẻ, bảng, thanh điều hướng, carousel, và nhiều hơn nữa
- Hỗ trợ tùy chỉnh: Bootstrap 5 cho phép tùy chỉnh và điều chỉnh giao diện của mình theo nhu cầu, có thể tùy chỉnh các giá trị màu sắc, font chữ, kích thước và các thuộc tính khác để phù hợp với thiết kế
- Tích hợp với các công nghệ khác: Bootstrap 5 có thể tích hợp dễ dàng với các công nghệ và framework khác như JavaScript, jQuery, Angular, và React Điều này giúp bạn tận dụng các tính năng mạnh mẽ của Bootstrap trong dự án của mình.
Quản lý phiên bản - Github
GitHub là một dịch vụ lưu trữ và quản lý mã nguồn phổ biến trên internet Nó cung cấp một nền tảng cho các nhà phát triển phần mềm để chia sẻ, quản lý và làm việc chung trên dự án phần mềm
Dưới đây là một số thông tin cơ bản về GitHub:
- Hệ thống kiểm soát phiên bản: GitHub sử dụng hệ thống kiểm soát phiên bản Git để quản lý mã nguồn Git cho phép các nhà phát triển lưu trữ, theo dõi và quản lý lịch sử thay đổi của mã nguồn
- Lưu trữ mã nguồn: GitHub cung cấp khả năng lưu trữ mã nguồn cho các dự án phần mềm Người dùng có thể tạo ra các kho lưu trữ (repositories) để lưu trữ mã nguồn của dự án và chia sẻ nó với cộng đồng
- Quản lý dự án: GitHub cung cấp các công cụ và tính năng quản lý dự án, bao gồm theo dõi vấn đề (issue tracking), quản lý nhiệm vụ (task management) và phân công công việc (assigning tasks)
- Hợp tác và làm việc nhóm: GitHub cho phép nhiều người cùng làm việc trên cùng một dự án phần mềm Người dùng có thể tạo và quản lý nhánh (branches) để làm việc độc lập và sau đó hợp nhất (merge) các thay đổi vào nhánh chính
- Kiểm tra và xem lại mã nguồn: GitHub cung cấp các tính năng kiểm tra mã (code review) để cho phép nhà phát triển xem xét, đánh giá và đề xuất thay đổi cho mã nguồn
- Cộng đồng và tích hợp: GitHub là nền tảng rộng lớn với cộng đồng người dùng đông đảo Nó cung cấp tích hợp với các dịch vụ khác như CI/CD (Continuous Integration/Continuous Deployment) và các công cụ phát triển phần mềm khác
Hình 2.1 Logo Github (Nguồn github.com)
Môi trường phát triển
VSCode (Visual Studio Code) là một trình biên tập mã nguồn mở, nhẹ nhàng và mạnh mẽ được phát triển bởi Microsoft Đây là một công cụ phát triển tích hợp (IDE) đa nền tảng được sử dụng rộng rãi trong cộng đồng phát triển phần mềm
Một số đặc điểm chính của VSCode:
- Hỗ trợ nhiều ngôn ngữ lập trình: VSCode hỗ trợ nhiều ngôn ngữ lập trình như JavaScript, TypeScript, Python, C++, Java, HTML, CSS và nhiều ngôn ngữ khác Nó cung cấp các tính năng như gợi ý mã, tô màu cú pháp, kiểm tra lỗi và hoàn thành tự động cho các ngôn ngữ này
- Mở rộng và cấu hình linh hoạt: VSCode có thể được mở rộng thông qua các tiện ích mở rộng (extensions) được cung cấp bởi cộng đồng người dùng
- Giao diện người dùng đơn giản và trực quan
- Tích hợp hỗ trợ Git
- Đa nền tảng: VSCode có thể chạy trên các hệ điều hành phổ biến như Windows, macOS và Linux
Hình 2.2 Logo VSCode (Nguồn code.visualstudio.com)
IntelliJ IDEA là một môi trường phát triển tích hợp (IDE) thông minh cho ngôn ngữ lập trình Java Nó được phát triển bởi JetBrains và được coi là một trong những IDE phổ biến nhất cho phát triển ứng dụng Java
Một số đặc điểm chính của IntelliJ IDEA:
- Hỗ trợ đa ngôn ngữ: IntelliJ IDEA không chỉ hỗ trợ phát triển Java mà còn hỗ trợ nhiều ngôn ngữ lập trình khác như Kotlin, Scala, Groovy, JavaScript, HTML, CSS và nhiều ngôn ngữ khác
- Đa nền tảng: IntelliJ IDEA có sẵn cho các nền tảng khác nhau như Windows, macOS và Linux, đảm bảo tính tương thích và linh hoạt trong việc phát triển trên các hệ điều hành khác nhau
- Công cụ thông minh: IntelliJ IDEA cung cấp nhiều công cụ thông minh để tăng năng suất lập trình viên: tính năng tự động hoàn thành mã, kiểm tra lỗi cú pháp, định dạng mã tự động, tạo đề xuất mã, tìm kiếm thông minh, …
- Hỗ trợ quản lý dự án mạnh mẽ: IntelliJ IDEA cung cấp các công cụ quản lý dự án mạnh mẽ như quản lý phiên bản, tích hợp hệ thống kiểm tra mã nguồn, hỗ trợ quản lý phụ thuộc và tích hợp công cụ xây dựng (build tools) như Maven và Gradle
Hình 2.3 Logo IntelliJ (Nguồn jetbrains.com)
XÂY DỰNG HỆ THỐNG
Phân tích yêu cầu hệ thống
3.1.1 Yêu cầu phi chức năng:
- Giao diện đơn giản, màu sắc đồng nhất
- Thao tác đặt vé đơn giản
- Hạn chế độ trễ khi thao tác các chức năng
- Ảnh Poster của phim phải chất lượng cao
- Các thông tin người dùng phải được bảo mật và đảm bảo chỉ có họ mới có quyền truy cập
- Các vai trò cụ thể sẽ được truy cập vào các tài nguyên tương ứng
3.1.2.1 Mô hình Use-case toàn hệ thống:
Hình 3.1 Mô hình Use-case Overview
Bảng 3.1 Danh sách các Actor
Admin Là người nắm quyền toàn bộ hoạt động trên của hệ thống và quản lý các tài nguyên
Khách hàng Là người muốn sử dụng hệ thống
Bảng 3.2 Mô tả Use-case
STT ID Tên Use-case Mô tả Use-case
1 UC01 Đăng nhập Actors đăng nhập bằng tài khoản của mình
2 UC02 Đăng ký Actors đăng ký tài khoản mới
3 UC03 Đăng xuất Actors đăng xuất khỏi hệ thống
4 UC04 Quản lý hệ thống rạp Cho phép Admin quản lý các rạp của hệ thống
5 UC05 Thống kê Cho phép Admin xem thống kê
6 UC06 Quản lý bình luận Cho phép Admin quản lý mình luận của khách hàng
7 UC07 Quản lý phòng chiếu Cho phép Admin quản lý các phòng chiếu phim
8 UC08 Quản lý phim Cho phép Admin quản lý các bộ phim
9 UC09 Quản lý lịch chiếu Cho phép Admin quản lý các lịch chiếu
10 UC10 Quản lý vé Cho phép Admin quản lý các vé xem phim đã được đặt
11 UC11 Xem thông tin cá nhân
Cho phép Actors xem thông tin cá nhân của mình
12 UC12 Xem danh sách phim hiện tại
Cho phép Actors xem danh sách phim hiện đang được chiếu
13 UC13 Tìm kiếm Cho phép Actors tìm kiếm bộ phim mình cần
14 UC14 Chi tiết phim Cho phép Actors xem thông tin chi tiết của một bộ phim
15 UC15 Đặt vé Cho phép Actors đặt vé xem phim
16 UC16 Xem vé đã đặt Cho phép Actors xem các vé mà mình đã đặt.
17 UC17 Sử dụng điểm tích luỹ
Cho phép Actors sử dụng điểm tích luỹ của mình
18 UC18 Xem danh sách phim đã xem
Cho phép Khách hàng xem danh sách phim mình đã xem
19 UC19 Bình luận Cho phép Khách hàng bình luận vào một bộ phim.
Use-case Đăng nhập – UC01:
Bảng 3.3 Đặc tả Use-case Đăng nhập
Short Description Actors đăng nhập bằng tài khoản đã đăng ký
2 Tại màn hình đăng nhập, email đã được đăng ký
Pre-Condition - Kết nối mạng
- Tài khoản đã đăng ký
Use-case Đăng ký – UC02:
Bảng 3.4 Đặc tả Use-case Đăng ký
Short Description Actors đăng ký bằng email
2 Điền thông tin vào form
Pre-Condition - Kết nối mạng
- Tài khoản email hợp lệ và chưa được đăng ký
Use-case Đăng xuất – UC03:
Bảng 3.5 Đặc tả Use-case Đăng xuất
Short Description Actors đăng xuất khỏi hệ thống
Basic Flow 1 Chọn “Đăng xuất” trên native bar
Pre-Condition - Kết nối mạng
Use-case Quản lý hệ thống rạp – UC04:
Bảng 3.6 Đặc tả Use-case Quản lý hệ thống rạp
Name Quản lý hệ thống rạp
Short Description Admin quản lý các rạp của hệ thống
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Rạp phim” trên tab Menu
3 Sử dụng các chức năng quản lý: Thêm, Cập nhật, Xóa
- Chọn “Thêm rạp chiếu”: Điền thông tin rạp chiếu/Xác nhận
- Chọn “Cập nhật”: Chỉnh sửa thông tin rạp chiếu/Xác nhận
- Chọn “Xóa”: Xóa rạp chiếu khỏi cơ sở dữ liệu
Pre-Condition - Kết nối mạng
- Đăng nhập bằng tài khoản Admin
Use-case Thống kê – UC05:
Bảng 3.7 Đặc tả Use-case Thống kê
Short Description Admin xem thống kê
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Thống kê” trên tab Menu
3 Chọn “Thống kê” của rạp muốn xem thống kê
- Đăng nhập bằng tài khoản Admin.
Use-case Quản lý bình luận – UC06:
Bảng 3.8 Đặc tả Use-case Quản lý bình luận
Name Quản lý bình luận
Short Description Admin quản lý bình luận
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Bình luận” trên tab Menu
3 Sử dụng các chức năng quản lý: Xác nhận, Xóa
- Chọn “Xác nhận”: Xác nhận đồng ý đăng bình luận
- Chọn “Xóa”: Xóa bình luận
- Đăng nhập bằng tài khoản Admin.
Use-case Quản lý phòng chiếu – UC07:
Bảng 3.9 Đặc tả Use-case Quản lý phòng chiếu
Name Quản lý phòng chiếu
Short Description Admin quản lý phòng chiếu
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Phòng chiếu” trên tab Menu
3 Sử dụng các chức năng quản lý: Thêm, Cập nhật, Xóa
- Chọn “Thêm phòng chiếu”: Điền thông tin phòng chiếu/Xác nhận
- Chọn “Cập nhật”: Chỉnh sửa thông tin phòng chiếu/Xác nhận
- Chọn “Xóa”: Xóa phòng chiếu khỏi cơ sở dữ liệu
Pre-Condition - Kết nối mạng
- Đăng nhập bằng tài khoản Admin
Use-case Quản lý phim – UC08:
Bảng 3.10 Đặc tả Use-case Quản lý phim
Short Description Admin quản lý phim
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Phim” trên tab Menu
3 Sử dụng các chức năng quản lý: Tìm kiếm, Thêm, Cập nhật, Xóa
- Chọn thanh tìm kiếm: Điền phim muốn tìm/Click vào kết quả
- Chọn “Thêm phim”: Điền thông tin phim/Xác nhận
- Chọn “Cập nhật”: Chỉnh sửa thông tin phim/Xác nhận
- Chọn “Xóa”: Xóa phim khỏi cơ sở dữ liệu
Pre-Condition - Kết nối mạng
- Đăng nhập bằng tài khoản Admin
Use-case Quản lý lịch chiếu – UC09:
Bảng 3.11 Đặc tả Use-case Quản lý lịch chiếu
Name Quản lý lịch chiếu
Short Description Admin quản lý lịch chiếu phim
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Lịch chiếu” trên tab Menu
3 Sử dụng các chức năng quản lý: Thêm, Cập nhật, Xóa
- Chọn “Thêm lịch chiếu”: Điền thông tin lịch chiếu/Xác nhận
- Chọn “Cập nhật”: Chỉnh sửa thông tin lịch chiếu/Xác nhận
- Chọn “Xóa”: Xóa lịch chiếu khỏi cơ sở dữ liệu
- Đăng nhập bằng tài khoản Admin
- Phải có ít nhất một phòng chiếu và một bộ phim để thêm lịch chiếu
Use-case Quản lý vé – UC10:
Bảng 3.12 Đặc tả Use-case Quản lý vé đã đặt
Short Description Admin quản lý vé đã đặt
1 Đăng nhập bằng tài khoản Admin
2 Chọn “Đặt vé” trên tab Menu
3 Sử dụng các chức năng quản lý: Xác nhận, Từ chối
- Chọn “Xác nhận”: Chấp nhận vé đặt của khách hàng
- Chọn “Từ chối”: Từ chối vé đặt của khách hàng
- Đăng nhập bằng tài khoản Admin
- Phải có ít nhất một yêu cầu đặt vé của Khách hàng
Use-case Xem thông tin cá nhân – UC11:
Bảng 3.13 Đặc tả Use-case Xem thông tin cá nhân
Name Xem thông tin cá nhân
Short Description Actors xem thông tin cá nhân
2 Chọn “Thông tin cá nhân” trên tab Menu
3 Hiển thị thông tin của Actors
Pre-Condition - Kết nối mạng
Use-case Xem danh sách phim hiện tại – UC12:
Bảng 3.14 Đặc tả Use-case Xem danh sách phim hiện tại
Name Xem danh sách phim hiện tại
Short Description Khánh hàng xem danh sách phim đang chiếu tại rạp
2 Tại màn hình chính hiện danh sách các phim đang chiếu tại rạp
3 Khách hàng có thể tìm phim mình cần bằng thanh tìm kiếm
- Phải có ít nhất một bộ phim trong cơ sở dữ liệu
Use-case Tìm kiếm – UC13:
Bảng 3.15 Đặc tả Use-case Tìm kiếm
Short Description Actors tìm kiếm một bộ phim
2 Nhập vào từ khóa cần tìm
3 Hệ thống hiện ra các phim tương ứng
4 Chọn một phim để xem chi tiết
- Từ khóa nhập vào là tên bộ phim
Use-case Chi tiết phim – UC14:
Bảng 3.16 Đặc tả Use-case Chi tiết phim
Short Description Khách hàng xem thông tin chi tiết một bộ phim
2 Nhập vào từ khóa cần tìm
3 Hệ thống hiện ra các phim tương ứng
4 Chọn một phim để xem chi tiết
- Từ khóa nhập vào là tên bộ phim
Use-case Đặt vé – UC15:
Bảng 3.17 Đặc tả Use-case Đặt vé
Short Description Khách hàng đặt vé cho một bộ phim
1 Chọn “Đặt vé” ở phim muốn đặt
2 Chọn thông tin ngày, lịch ghế, số lượng, vị trí ghế
4 Thanh toán đợi xác nhận
Pre-Condition - Kết nối mạng
Use-case Xem vé đã đặt – UC16:
Bảng 3.18 Đặc tả Use-case Xem vé đã đặt
Name Xem vé đã đặt
Short Description Khách hàng xem danh sách vé mà mình đã đặt
1 Chọn “Lịch sử đặt vé” ở Menu
2 Hiện danh sách vé đã đặt
3 Đối với vé chưa được xác nhận có thể yêu cầu Hủy
- Đã đặt ít nhất một vé
Use-case Sử dụng điểm tích luỹ – UC17:
Bảng 3.19 Đặc tả Use-case Sử dụng điểm tích luỹ
Name Sử dụng điểm tích luỹ
Short Description Khách hàng sử dụng điểm tích luỹ của mình
1 Khách hàng điền các thông tin vé
2 Tại mục xác nhận vé, khách hàng chọn sử dụng điểm tích lũy để giảm giá khi mua vé
3 Click vào button xác nhận
- Cần có điểm tích luỹ
Use-case Xem danh sách phim đã xem – UC18:
Bảng 3.20 Đặc tả Use-case Xem danh sách phim đã xem
Name Xem danh sách phim đã xem
Short Description Khách hàng xem danh sách phim mà mình đã xem
1 Chọn “Phim đã xem” ở Menu
2 Hiện danh sách phim đã xem
3 Khách hàng có thể bình luận cho các phim đã xem
Use-case Bình luận – UC19:
Bảng 3.21 Đặc tả Use-case Bình luận
Short Description Khách hàng bình luận cho phim mà mình đã xem
1 Chọn “Phim đã xem” ở Menu
2 Hiện danh sách phim đã xem
4 Đánh giá và viết bình luận
6 Khách hàng có thể sửa bình luận của mình
- Bắt buộc phim đã đặt vé và xem xong
Phân tích thiết kế hệ thống
3.2.1.1 Sequence diagram chức năng Đăng nhập:
Hình 3.2 Sequence diagram Đăng nhập cho Admin
Hình 3.3 Sequence diagram Đăng nhập cho Khách hàng
3.2.1.2 Sequence diagram chức năng Đăng ký:
Hình 3.4 Sequence diagram Đăng ký
3.2.1.3 Sequence diagram chức năng Đăng xuất:
Hình 3.5 Sequence diagram Đăng xuất
3.2.1.4 Sequence diagram chức năng Quản lý hệ thống rạp:
Hình 3.6 Sequence diagram Quản lý hệ thống rạp
3.2.1.5 Sequence diagram chức năng Thống kê:
Hình 3.7 Sequence diagram Thống kê
3.2.1.6 Sequence diagram chức năng Quản lý bình luận:
Hình 3.8 Sequence diagram Quản lý bình luận
3.2.1.7 Sequence diagram chức năng Quản lý phòng chiếu:
Hình 3.9 Sequence diagram Quản lý phòng chiếu
3.2.1.8 Sequence diagram chức năng Quản lý phim:
Hình 3.10 Sequence diagram Quản lý phim
3.2.1.9 Sequence diagram chức năng Quản lý lịch chiếu:
Hình 3.11 Sequence diagram Quản lý lịch chiếu
3.2.1.10 Sequence diagram chức năng Quản lý vé:
Hình 3.12 Sequence diagram Quản lý vé
3.2.1.11 Sequence diagram chức năng Xem thông tin cá nhân:
Hình 3.13 Sequence diagram Xem thông tin cá nhân
3.2.1.12 Sequence diagram chức năng Xem danh sách phim hiện tại:
Hình 3.14 Sequence diagram Xem danh sách phim hiện tại
3.2.1.13 Sequence diagram chức năng Tìm kiếm:
Hình 3.15 Sequence diagram Tìm kiếm
3.2.1.14 Sequence diagram chức năng Chi tiết phim:
Hình 3.16 Sequence diagram Chi tiết phim
3.2.1.15 Sequence diagram chức năng Đặt vé:
Hình 3.17 Sequence diagram Đặt vé
3.2.1.16 Sequence diagram chức năng Xem vé đã đặt:
Hình 3.18 Sequence diagram Xem vé đã đặt
3.2.1.17 Sequence diagram chức năng Xem danh sách phim đã xem:
Hình 3.19 Sequence diagram Xem danh sách phim đã xem
3.2.1.18 Sequence diagram chức năng Bình luận:
Hình 3.20 Sequence diagram Bình luận
3.2.2 Thiết kế cơ sở dữ liệu:
3.2.2.1 Sơ đồ cơ sở dữ liệu:
Hình 3.21 Sơ đồ cơ sở dữ liệu
3.2.2.2 Mô tả các bảng dữ liệu:
Bảng 3.22 Mô tả bảng dữ liệu theater
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 theaterId string Mã định danh rạp chiếu, phân biệt với các rạp chiếu khác
2 name string Tên rạp chiếu
3 provice string Tỉnh thành của rạp chiếu
4 status string Trạng thái hoạt động của rạp chiếu
Bảng 3.23 Mô tả bảng dữ liệu room
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 roomId int Mã định danh phòng chiếu, phân biệt với các phòng chiếu khác
2 name string Tên phòng chiếu
3 typeScreen string Loại màn hình dùng cho phòng chiếu
4 status string Trạng thái hoạt động của phòng chiếu
5 theaterID int Mã định danh rạp chiếu
Bảng 3.24 Mô tả bảng dữ liệu seat
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 seatId int Mã định danh ghế ngồi, phân biệt với các ghế khác
2 showtimesId int Mã định danh lịch chiếu
3 seat int Mã số ghế
4 status int Trạng thái ghế
Bảng 3.25 Mô tả bảng dữ liệu showtimes
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 showtimesId int Mã định danh lịch chiếu, phân biệt với các lịch chiếu khác
2 movieId int Mã định danh phim
3 roomId int Mã định danh phòng chiếu
4 time datetime Thời gian bắt đầu
Bảng 3.26 Mô tả bảng dữ liệu booking
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 bookingId int Mã định danh ghế ngồi, phân biệt với các ghế khác
2 userId int Mã định danh user
3 showtimesId int Mã định danh lịch chiếu
4 numberOfSeat number Số ghế đặt
5 seatList Int[] Danh sách ghế ngồi
6 status int Trạng thái vé
Bảng 3.27 Mô tả bảng dữ liệu movie
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 movieId int Mã định danh một bộ phim, phân biệt với các bộ phim khác
2 name string Tên bộ phim
3 time string Thời lượng của phim
4 genre arraystring Thể loại phim
6 actors string Các diễn viên
7 year number Năm công chiếu
8 start datetime Ngày bắt đầu chiếu
9 end datetime Ngày kết thúc
10 poster string Poster của phim
Bảng 3.28 Mô tả bảng dữ liệu comment
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 commentId int Mã định danh một bình luận, phân biệt với các bình luận khác
2 userId int Mã định danh user
3 movieId int Mã định danh một bộ phim
4 rating int Điểm đánh giá
5 comment string Bình luận cho phim
Bảng 3.29 Mô tả bảng dữ liệu user
STT Tên trường Kiểu dữ liệu Ý nghĩa
1 userId int Mã định danh user, phân biệt với các user khác
2 email string Email của user
3 password string Mật khẩu của user
4 name string Tên của user
5 phone string Số điện thoại của user
6 role string Phân quyền của user trong hệ thống
7 favoriteMovie arrayInt Phim yêu thích
8 point int Điểm tích luỹ
XÂY DỰNG ỨNG DỤNG
Giao diện chung
- Màn hình Home xuất hiện khi vừa mở trang web
- Các tương tác: o “Khách”: Truy cập trang đăng nhập cho Khách hàng o “Admin”: Truy cập trang đăng nhập cho Admin
Hình 4.2 Giao diện Đăng ký
- Giao diện đăng ký cho khách hàng mới, người dùng cần điền các thông tin mà form yêu cầu
- Các tương tác: o Click “Tôi đồng ý với các điều khoản” để xác nhận chấp nhận điều khoản o “Đăng ký”: Xác nhận đăng ký tài khoản mới o “Xóa”: Xóa các thông tin vừa điền
Hình 4.3 Giao diện Đăng nhập
- Điền thông tin Email và Mật khẩu
- Các tương tác: o “Đăng ký ngay”: Truy cập trang đăng ký tài khoản mới o “Đăng nhập”: Đăng nhập vào hệ thống
Giao diện cho Khách hàng
Hình 4.4 Giao diện dành cho Khách hàng
- Giao diện dành cho khách hàng, tương tác với các mục của Navbar: o Chọn “Cinezo” để quay về Home o Chọn tên tài khoản để xem thông tin cá nhân o “Đăng xuất”: Đăng xuất khỏi hệ thống
- Tương tác với các mục của Menu: o “Trang chủ”: Xem các phim sắp chiếu và đang chiếu o “Phim đã xem”: Xem danh sách các phim đã xem o “Lịch sử đặt vé”: Xem các vé đã đặt
Hình 4.5 Giao diện Home với phim khách hàng có thể thích
- Các tương tác: o Nhập tên phim/diễn viên/đạo diễn của một bộ phim vào thanh tìm kiếm để tiến hành tìm kiếm
Hình 4.6 Giao diện Home với phim đang chiếu
Hình 4.7 Giao diện Home với phim sắp chiếu
- Các tương tác: o Button “Chi tiết”: Xem thông tin chi tiết của phim o Button “Đặt vé”: Tiến hành đặt vé cho bộ phim đang được chọn
Hình 4.8 Giao diện Thông tin chi tiết phim
- Khách hàng sau khi xem thông tin phim có thể click “Mua vé” để tiến hành đặt vé
- Khách hàng sau khi xem thông tin phim có thể click “Yêu thích” để đánh dấu yêu thích phim
- Khách hàng có thể xem bình luận và rating của những người dùng khách ở mục “Bình luận”
Hình 4.9 Giao diện Đặt vé
- Các tương tác: o Chọn tỉnh thành o Chọn rạp chiếu o Chọn ngày chiếu o Chọn phòng chiếu o Chọn Giờ chiếu o Chọn số lượng ghế ngồi o Click để chọn vị trí ghế ngồi
Màu hồng: ghế còn trống
Màu xám: ghế đã được đặt
Màu vàng: ghế đang chọn o “Mua vé”: đặt vé sau khi chọn suất chiếu và ghế ngồi
Hình 4.10 Giao diện Phiếu xác nhận vé đặt
- Khách hàng có thể chọn sử dụng điểm đã tích để giảm giá mua vé
- Sau khi kiểm tra thông tin vé Khách hàng click “Xác nhận” xác nhận đặt vé
Hình 4.11 Giao diện Danh sách phim đã xem
- Với các phim đã xem, Khách hàng có thể bình luận hoặc chỉnh sửa bình luận của mình cho bộ phim đó
Hình 4.12 Giao diện Viết bình luận cho phim đã xem
- Các tương tác: o Đánh giá cho phim từ 1 – 5 sao o Viết bình luận o “Thêm bình luận”/“Cập nhật bình luận”: đăng tải bình luận và đánh giá
Hình 4.13 Giao diện Danh sách vé đã đặt
- Khách hàng nếu muốn hủy đặt vé click button “Hủy đặt” Tuỳ vào thời gian xác nhận huỷ, khách hàng sẽ được hoàn tiền vào điểm tích luỹ cá nhân (trước giờ chiếu 2h, nửa ngày, một ngày)
Hình 4.14 Giao diện Thông tin cá nhân của Khách hàng
- Khách hàng xem thông tin cá nhân của bản thân, Điểm tích luỹ được tính theo như sau: o +1 cho mỗi lần đặt vé o Khi khách hàng huỷ vé thì điểm tích luỹ được cập nhật hoàn theo thời gian huỷ(huỷ trước giờ chiếu 2h, nửa ngày, một ngày) 1 điểm tương đương 1.000vnđ
- Nếu Khách hàng muốn đổi mật khẩu click “Đổi mật khẩu”
Hình 4.15 Giao diện đổi mật khẩu
- Sau khi điền các thông tin form yêu cầu click “Đổi mật khẩu” để tiến hành đổi mật khẩu của tài khoản
- Nếu nhập sai một trong ba thông tin hệ thống sẽ thông báo không thành công
Giao diện cho Admin
Hình 4.16 Giao diện dành cho Admin
- Giao diện dành cho Admin, tương tác với các mục của Navbar: o Chọn “Cinezo” để quay về Home o Chọn tên tài khoản để xem thông tin cá nhân o “Đăng xuất”: đăng xuất khỏi hệ thống
- Tương tác với các mục của Menu: o “Rạp phim”: quản lý rạp chiếu o “Phòng chiếu”: quản lý phòng chiếu o “Phim”: quản lý phim o “Lịch chiếu”: quản lý lịch chiếu o “Bình luận”: quản lý bình luận của khách hàng o “Thống kê”: xem các thống kê
Hình 4.17 Giao diện quản lý rạp phim
- Các tương tác: o “Thêm rạp chiếu”: thêm một rạp chiếu o “Cập nhật”: cập nhật thông tin rạp chiếu hiện tại o “Trang sau”: xem tiếp danh sách các rạp của trang kế
Hình 4.18 Giao diện Thêm phòng chiếu
- Admin sau khi điền các thông tin của phòng chiếu click “Thêm” để tiến hành thêm một rạp chiếu
Hình 4.19 Giao diện quản lý phòng chiếu với danh sách các rạp
- Các tương tác: o Sau khi chọn “Cập nhật” của một rạp sẽ dẫn đến màn hình hiển thị danh sách các phòng của rạp đó o Chọn số trang hoặc click “Trang sau” để xem tiếp danh sách các rạp của trang kế
Hình 4.20 Giao diện quản lý phòng chiếu với danh sách các phòng của một rạp
- Các tương tác: o “Thêm phòng chiếu”: thêm một phòng chiếu o “Cập nhật”: cập nhật thông tin phòng chiếu hiện tại
Hình 4.21 Giao diện Thêm phòng chiếu
- Admin sau khi điền các thông tin của phòng chiếu click “Thêm phòng chiếu” để tiến hành thêm một phòng chiếu
Hình 4.22 Giao diện Quản lý phim
- Các tương tác: o Thanh tìm kiếm theo tên/đạo diễn/diễn viên của một phim o “Thêm phim mới”: Truy cập đến trang thêm phim o “Cập nhật”: Truy cập đến trang cập nhật thông tin của phim hiện tại
Hình 4.23 Kết quả tìm kiếm phim
- Khi nhập tên phim vào thanh tìm kiếm thì các thẻ phim tương ứng hiện ra, chọn để xem thông tin và cập nhật thông tin cho phim
Hình 4.24 Giao diện thêm phim
- Admin sau khi điền các thông tin và chọn poster của phim click “Thêm” để tiến hành thêm một phim
- Thông tin thể loại có thể giữ Ctrl để chọn nhiều thể loại cho phim
Hình 4.25 Giao diện Quản lý lịch chiếu
- Các tương tác: o Sau khi chọn “Cập nhật” của một rạp sẽ dẫn đến màn hình hiển thị danh sách lịch chiếu của rạp đó o Chọn số trang hoặc click “Trang sau” để xem tiếp danh sách các rạp của trang kế
Hình 4.26 Giao diện Quản lý lịch chiếu
- Các tương tác: o “Thêm lịch chiếu”: thêm một lịch chiếu o “Cập nhật”: cập nhật thông tin lịch chiếu hiện tại o “Trang sau”: xem tiếp danh sách lịch chiếu của trang kế
Hình 4.27 Giao diện thêm lịch chiếu
- Admin sau khi điền các thông tin của lịch chiếu click “Thêm lịch chiếu” để tiến hành thêm một lịch chiếu
Hình 4.28 Giao diện quản lý bình luận
- Các tương tác: o Click “Xác nhận” để cho phép đăng tải bình luận o Click “Xoá” để xoá bình luận
Hình 4.29 Giao diện Thống kê
- Chọn “Thống kê” của một rạp để xem thống kê
Hình 4.30 Giao diện Thống kê của một rạp/Tổng các rạp
- Biểu đồ thống kê theo lượt vé và doanh thu của một năm
- Hiện thống kê theo ngày và năm về tổng lượt vé, tổng doanh thu
Hình 4.31 Giao diện thông tin cá nhân Admin
- Nếu Admin muốn đổi mật khẩu click “Đổi mật khẩu”
Hình 4.32 Giao diện Đổi mật khẩu
- Sau khi điền các thông tin form yêu cầu click “Đổi mật khẩu” để tiến hành đổi mật khẩu của tài khoản