1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án xây dựng website quản lý rạp chiếu phim

151 27 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ án xây dựng website quản lý rạp chiếu phim
Tác giả Đỗ Phú Quang, Võ Đình Nghĩa
Người hướng dẫn ThS. Trần Thị Hồng Yến
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công nghệ Thông Tin
Thể loại đồ án
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 151
Dung lượng 6,54 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1. GIỚI THIỆU ĐỀ TÀI (0)
    • 1.1. Lý do chọn đề tài (17)
    • 1.2. Phạm vi nghiên cứu (17)
    • 1.3. Đối tượng nghiên cứu (18)
    • 1.4. Phương pháp nghiên cứu (18)
    • 1.5. Khảo sát thực tế và giải pháp (19)
      • 1.5.1. Khảo sát ứng dụng trên thị trường (19)
      • 1.5.2. Giải pháp (20)
  • Chương 2. CÔNG NGHỆ SỬ DỤNG (0)
    • 2.1. ReactJs (21)
      • 2.1.1. Giới thiệu (21)
      • 2.1.2. Ưu điểm (22)
      • 2.1.3. Nhược điểm (22)
    • 2.2. NextJs (22)
      • 2.2.1. Giới thiệu (22)
      • 2.2.2. Ưu điểm (23)
      • 2.2.3. Nhược điểm (23)
    • 2.3. MUI (Material UI) (23)
      • 2.3.1. Giới thiệu (24)
      • 2.3.2. Ưu điểm (24)
      • 2.3.3. Nhược điểm (24)
    • 2.4. TailwindCSS (25)
      • 2.4.1. Giới thiệu (25)
      • 2.4.2. Ưu điểm (25)
      • 2.4.3. Nhược điểm (26)
    • 2.5. NodeJs (26)
      • 2.5.1. Giới thiệu (27)
      • 2.5.2. Ưu điểm (27)
      • 2.5.3. Nhược điểm (27)
    • 2.6. ExpressJs (27)
      • 2.6.1. Giới thiệu (28)
      • 2.6.2. Ưu điểm (28)
      • 2.6.3. Nhược điểm (28)
    • 2.7. MongoDB (28)
      • 2.7.1. Giới thiệu (29)
      • 2.7.2. Ưu điểm (29)
      • 2.7.3. Nhược điểm (29)
    • 2.8. Mongoose (30)
      • 2.8.1. Giới thiệu (30)
      • 2.8.2. Ưu điểm (30)
      • 2.8.3. Nhược điểm (30)
  • Chương 3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG (0)
    • 3.1. Phân tích yêu cầu (32)
      • 3.1.1. Đăng ký (32)
      • 3.1.2. Đăng nhập (32)
      • 3.1.3. Xem trang thống kê nhanh (Trang Admin) (32)
      • 3.1.4. Đặt vé (Trang Admin + Client) (32)
      • 3.1.5. Quản lý phim (Trang Admin) (33)
      • 3.1.6. Quản lý lịch chiếu (Trang Admin) (33)
      • 3.1.7. Quản lý phòng chiếu (Trang Admin) (33)
      • 3.1.8. Quản lý đồ ăn nhẹ (Trang Admin) (34)
      • 3.1.9. Quản lý diễn viên (Trang Admin) (34)
      • 3.1.10. Quản lý nhân viên (Trang Admin) (34)
      • 3.1.11. Quản lý bài viết (Trang Admin) (35)
      • 3.1.12. Quản lý giao dịch (Trang Admin) (35)
      • 3.1.13. Quản lý báo cáo (Trang Admin) (35)
      • 3.1.14. Quản lý thể loại phim (Trang Admin) (35)
      • 3.1.15. Quản lý loại phòng chiếu (Trang Admin) (36)
      • 3.1.16. Quản lý thông tin cá nhân (Trang Admin) (36)
      • 3.1.17. Xem danh sách lịch chiếu (Trang Client) (36)
      • 3.1.18. Xem danh sách phim và chi tiết phim (Trang Client) (36)
      • 3.1.19. Đánh giá và bình luận (36)
      • 3.1.20. Xem danh sách phim và chi tiết diễn viên (Trang Client) (37)
      • 3.1.21. Xem danh sách phim và chi tiết bài viết (Trang Client) (37)
      • 3.1.22. Quản lý tài khoản (37)
    • 3.2. Thiết kế hệ thống (38)
      • 3.2.1. Sơ đồ Use Case (38)
      • 3.2.2. Danh sách Actor (39)
      • 3.2.3. Danh sách Use Case (39)
      • 3.2.4. Đặc tả Use Case (42)
    • 3.3. Thiết kế dữ liệu (67)
      • 3.3.1. Sơ đồ lớp (67)
      • 3.3.2. Sơ đồ lớp (67)
      • 3.3.3. Mô tả chi tiết bảng dữ liệu (68)
  • Chương 4. XÂY DỰNG ỨNG DỤNG (0)
    • 4.1. Danh sách màn hình (76)
      • 4.1.1. Danh sách màn hình trang Admin (76)
      • 4.1.2. Danh sách màn hình trang Client (77)
    • 4.2. Chi tiết màn hình (78)
      • 4.2.1. Trang Admin (78)
      • 4.2.2. Trang Client (128)
  • Chương 5. TỔNG KẾT (0)
    • 5.1. Ưu điểm (149)
    • 5.2. Nhược điểm (149)
    • 5.3. Hướng phát triển (150)
  • TÀI LIỆU THAM KHẢO (151)

Nội dung

GIỚI THIỆU ĐỀ TÀI

Lý do chọn đề tài

Internet đã trở thành một phần thiết yếu trong cuộc sống, cung cấp nhiều tiện ích giải trí và kho tàng tri thức Nó đã giúp tự động hóa các công việc thủ công trong kinh doanh, đặc biệt là trong quản lý rạp chiếu phim và đặt vé Trước đây, việc quản lý và giao dịch hoàn toàn phụ thuộc vào ghi chép thủ công, dẫn đến sai sót và rủi ro mất mát thông tin Sự ra đời của phần mềm và ứng dụng quản lý rạp chiếu phim nhờ Internet đã giải quyết những vấn đề này, mang lại sự tiện lợi và hiệu quả trong công việc Nhóm chúng tôi đã quyết định xây dựng một trang web quản lý rạp chiếu phim nhằm nâng cao trải nghiệm quản lý và giao dịch cho người dùng.

Phạm vi nghiên cứu

Trong đồ án này, chúng tôi sẽ nghiên cứu các bài toán liên quan đến quản lý người dùng và quy trình nghiệp vụ, nhằm phát triển một trang web quản lý rạp chiếu phim hoàn chỉnh.

Đối tượng nghiên cứu

‒ Ngôn ngữ lập trình: JavaScript, TypeScript

‒ Thư viện hỗ trợ: ReactJS, Mongoose, Material UI, TailwindCSS, Redux Saga, Redux Toolkit Đối tượng trong phạm vi đề tài hướng đến:

‒ Bộ phận quản lý, nhân viên của các rạp chiếu phim có nhu cầu tự động hóa quy trình quản lý

‒ Khách hàng có nhu cầu đặt vé xem phim trực tuyến.

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

‒ Nghiên cứu các ứng dụng, trang web hiện có trên thị trường, từ đó rút ra những ưu, nhược điểm của các ứng dụng đó (CGV, Cinestar,…)

‒ Tham khảo ý kiến của giảng viên hướng dẫn để đạt được kết quả tốt nhất cho đề tài

‒ Tìm hiểu các công nghệ Front-end như ReactJs, NextJs, Typescript, TailwindCSS, MUI

‒ Tìm hiểu các công nghệ Back-end như NodeJs, ExpressJs, MongoDB, Mongoose

‒ Tìm hiểu về State Management và các thư viện như Redux Toolkit, Redux Saga

Khảo sát thực tế và giải pháp

1.5.1 Khảo sát ứng dụng trên thị trường

Chúng tôi đã tiến hành khảo sát các ứng dụng trên thị trường và lựa chọn một số ứng dụng nổi bật trong lĩnh vực điện ảnh, bao gồm Website CGV, Website Lotte Cinema, Website Galaxy Cinema và Website BHD Star.

+ Giao diện đơn giản, dễ sử dụng

+ Các thành phần trong trang web sử dụng nhiều hình ảnh minh họa

+ Giao diện tương đối cũ, thiếu sức hút so với các trang web hiện nay

+ Một số thông tin phim còn thiếu điểm đánh giá, bình luận,…

+ Không cho phép tìm kiếm phim, không thể lọc phim dựa trên thể loại

+ Giao diện đơn giản, dễ sử dụng

+ Phần phân tích phim dựa trên đánh giá tương đối mới lạ

+ Không quản lý thể loại phim, không cho phép tìm kiếm phim

+ Thông tin đánh giá phim hiển thị tương đối sơ sài

+ Giao diện đẹp, bắt mắt

+ Quản lý nhiều trường thông tin như phim, thể loại, bài viết, diễn viên, + Hỗ trợ nhiều tiêu chí cho bộ lọc

+ Thường xuyên bị lỗi trong quá trình lọc phim theo thể loại

+ Giao diện đẹp, bắt mắt, dễ sử dụng

+ Một số phần của bố cục giao diện hiển thị chưa hợp lý (banner quảng cáo quá to,…)

+ Không linh hoạt trong cách hiển thị danh sách phim

+ Không cho phép tìm kiếm phim, không thể lọc phim dựa trên thể loại

Với những phân tích thông qua việc tìm hiểu các sản phẩm trên, chúng em đã đưa ra một số giải pháp cho sản phẩm như sau:

Sản phẩm được thiết kế dành riêng cho các rạp phim quy mô vừa và nhỏ, với tính năng quản lý chỉ một rạp tại một thời điểm, không hỗ trợ quản lý nhiều rạp cùng lúc.

+ Đối tượng sử dụng sẽ bao gồm chủ rạp, quản lý, nhân viên, khách hàng đặt vé

+ Khách hàng: Cho phép đặt vé, xem thông tin phim, bình luận, đánh giá phim, xem bài viết, diễn viên

+ Quản trị: Quản lý phim, thể loại phim, diễn viên, phòng, loại phòng, combo bắp nước, lịch chiếu, giao dịch, bài viết, nhân viên

+ Sản phẩm cuối cùng là một website nên có thể chạy trên nhiều loại thiết bị (điện thoại, máy tính bảng, )

+ Yêu cầu internet để truy cập

+ Có hỗ trợ responsive website để tối ưu trải nghiệm người dùng.

CÔNG NGHỆ SỬ DỤNG

ReactJs

ReactJS là thư viện JavaScript mã nguồn mở do Facebook phát triển, nhằm mục đích xây dựng ứng dụng web nhanh chóng và hiệu quả, đồng thời giảm thiểu lượng mã cần viết so với việc sử dụng JavaScript thuần.

ReactJS áp dụng phương pháp "component-based" để phát triển giao diện người dùng, trong đó mỗi thành phần (component) biểu thị một phần nhỏ của giao diện Các thành phần này có thể được tái sử dụng, kết hợp và tương tác với nhau, giúp tạo ra những trang web phức tạp.

ReactJS sử dụng JSX, một phần mở rộng của JavaScript, để phát triển các thành phần giao diện JSX cho phép tạo thẻ HTML tương tự như cách viết trên các trang web, giúp mã nguồn trở nên ngắn gọn và dễ đọc hơn.

ReactJS tối ưu hóa việc cập nhật và hiển thị giao diện bằng cách sử dụng Virtual DOM, một cấu trúc cây ảo Thay vì thực hiện cập nhật trực tiếp trên DOM thực, ReactJS so sánh và chỉ cập nhật những phần đã thay đổi trên Virtual DOM.

‒ ReactJS giúp quản lý trạng thái ứng dụng một cách hiệu quả thông qua việc sử dụng các state (trạng thái) và lifecycle methods (các phương thức vòng đời)

‒ Mang lại hiệu suất cao nhờ việc sử dụng Virtual DOM và cơ chế cập nhật thông minh

‒ Việc quản lý trạng thái một cách hiệu quả giúp ứng dụng dễ dàng bảo trì, mở rộng và kiểm thử

‒ Tăng tính tái sử dụng nhờ cách tiếp cận “component-based”, giảm thiểu việc lặp code

‒ React chỉ là một View Library, do đó việc tích hợp React vào một MVC framework truyền thống sẽ cần cấu hình thêm

‒ ReactJS có kích thước tương đối lớn so với các thư viện JavaScript khác, điều này có thể ảnh hưởng đến thời gian tải trang.

NextJs

Next.js là một framework front-end React mã nguồn mở, cung cấp các tính năng tối ưu hóa như render phía máy chủ (SSR) và tạo trang web tĩnh Dựa trên thư viện React, Next.js cho phép các ứng dụng sử dụng lõi của React và bổ sung thêm các chức năng Việc triển khai ứng dụng SSR giúp máy chủ truy cập và xử lý tất cả dữ liệu cần thiết, từ đó hiển thị trang một cách hiệu quả và gửi lại toàn bộ nội dung cho trình duyệt.

SSR giúp các trang web tải nhanh chóng và cải thiện trải nghiệm người dùng với thời gian phản hồi nhanh hơn Việc duyệt và hiển thị nội dung ngay lập tức là một trong những lợi ích chính của SSR.

‒ Ứng dụng NextJs tải nhanh hơn đáng kể so với ứng dụng ReactJs do được render phía Server

‒ Hỗ trợ các tính năng cho static web

‒ Đối với những ai đã có kinh nghiệm làm việc với ReactJs thì việc tiếp tập NextJs sẽ là một việc dễ dàng

‒ Tự động code splitting cho các page nhằm tối ưu hoá performance khi load trang

‒ Dễ dàng xây dựng các API internal thông qua các API routes tích hợp sẵn và tạo các endpoint API

‒ Nhanh chóng thêm các plugin để tùy chỉnh Next.js theo các nhu cầu cụ thể

‒ Khi có quá nhiều trang cần pre-render thì cần tốn nhiều thời gian build

‒ Nếu người học đi sâu vào NextJs mà chưa xây dựng chắc nền tảng thì dễ bị phụ thuộc và khó có thể tiếp thu một framework mới.

MUI (Material UI)

MUI (Material UI) là thư viện giao diện người dùng do Google phát triển, dựa trên React Thư viện này cung cấp các thành phần UI đẹp mắt, linh hoạt và dễ sử dụng, tuân theo phong cách thiết kế Material Design.

MUI cung cấp các thành phần giao diện người dùng tuân theo nguyên tắc Material Design của Google, mang đến cho ứng dụng giao diện hiện đại và hấp dẫn, đồng thời đảm bảo tính tương thích trên nhiều thiết bị.

MUI cung cấp một bộ sưu tập phong phú các thành phần giao diện như Button, TextField, Dialog, và Table, giúp tăng tốc quá trình xây dựng giao diện ứng dụng và tiết kiệm thời gian phát triển.

MUI cung cấp khả năng tùy chỉnh linh hoạt cho các thành phần giao diện người dùng, cho phép điều chỉnh màu sắc, kiểu dáng và các thuộc tính khác để phù hợp với thiết kế và thương hiệu của sản phẩm.

‒ Hỗ trợ TypeScript: MUI hỗ trợ TypeScript, cho phép phát triển ứng dụng với tính nhất quán và kiểm tra mã nguồn dễ dàng hơn

MUI sở hữu một cộng đồng phát triển mạnh mẽ, cung cấp nhiều tài liệu, ví dụ và hỗ trợ từ người dùng Nhờ vậy, người dùng dễ dàng tìm kiếm các tài nguyên hữu ích và nhận được giải đáp cho các thắc mắc một cách nhanh chóng.

Kích thước tệp tin lớn do MUI cung cấp nhiều thành phần giao diện người dùng đa dạng có thể ảnh hưởng đến thời gian tải trang và làm tăng kích thước ứng dụng.

Mặc dù MUI hỗ trợ tùy chỉnh, việc điều chỉnh chi tiết các thành phần yêu cầu kiến thức vững về CSS và JavaScript, điều này có thể gây khó khăn cho người mới bắt đầu.

MUI, được phát triển dựa trên các tiêu chuẩn hiện đại, có thể gặp khó khăn trong việc tương thích với các trình duyệt cũ hơn.

TailwindCSS

TailwindCSS là một framework CSS tập trung vào tính tiện ích và khả năng tùy chỉnh dễ dàng Khác với các framework CSS truyền thống như Bootstrap hay Material Design, Tailwind không cung cấp các class CSS phức tạp và cứng nhắc như “forms, table, card, carousel,” mà thay vào đó, nó cung cấp các class cho các thuộc tính cơ bản như “padding, color, cursor, border, light.” Điều này mang lại sự linh hoạt cho lập trình viên trong việc tùy chỉnh các thành phần của website theo ý muốn, không bị giới hạn bởi những quy tắc cứng nhắc của các framework trước đây.

Tailwind CSS mang đến khả năng tùy chỉnh linh hoạt, cho phép người dùng xây dựng giao diện theo ý muốn Nhờ vào việc sử dụng các lớp CSS có sẵn hoặc tạo lớp tùy chỉnh, bạn có thể thiết kế những kiểu dáng độc đáo và phù hợp với yêu cầu cụ thể của dự án.

TailwindCSS giúp phát triển sản phẩm nhanh chóng bằng cách loại bỏ nhu cầu viết CSS từ đầu hoặc tìm hiểu cú pháp của một framework cụ thể Thay vào đó, người dùng có thể dễ dàng áp dụng các lớp CSS có sẵn để tạo kiểu và cấu trúc giao diện một cách hiệu quả.

26 dùng một cách nhanh chóng Điều này giúp giảm thời gian phát triển và tăng năng suất của nhà phát triển

Tailwind CSS có kích thước nhỏ gọn hơn so với các framework CSS truyền thống, nhờ vào việc chỉ sử dụng các lớp CSS cần thiết Điều này giúp loại bỏ các đoạn mã không sử dụng, giảm kích thước file và cải thiện tốc độ tải trang.

TailwindCSS có khả năng tương thích tốt với hầu hết các trình duyệt và dễ dàng tích hợp với các công cụ và framework như ReactJs, Vue.js và Angular, cho phép xây dựng giao diện người dùng linh hoạt khi kết hợp với các công nghệ phát triển khác.

Tailwind CSS có thể dẫn đến việc tạo ra quá nhiều lớp CSS trong mã nguồn HTML, làm cho mã nguồn trở nên lớn và khó đọc Sự phụ thuộc này không chỉ làm tăng kích thước file CSS mà còn ảnh hưởng đến hiệu suất tải trang.

Khi mới bắt đầu sử dụng TailwindCSS, người dùng sẽ gặp khó khăn do cần thời gian để làm quen với cú pháp và các lớp CSS Để sử dụng hiệu quả, việc nắm vững các quy tắc này là rất quan trọng.

Mặc dù TailwindCSS hỗ trợ tùy chỉnh, nhưng với những yêu cầu thiết kế quá phức tạp, nó có thể không đáp ứng đủ Trong những trường hợp như vậy, việc viết CSS theo cách truyền thống là cần thiết.

NodeJs

Node.js là môi trường chạy mã JavaScript phía máy chủ, được xây dựng trên nền tảng engine JavaScript V8 của Chrome Nó cho phép thực thi mã JavaScript bên ngoài trình duyệt, quản lý máy chủ và phát triển các ứng dụng web và mạng phức tạp.

‒ Node.js cung cấp một cách tiếp cận bất đồng bộ (asynchronous) và lập trình hướng sự kiện (event-driven programming)

‒ Xử lý yêu cầu nhanh và hiệu quả nhờ cách tiếp cận bất đồng bộ

‒ Thư viện hỗ trợ mạnh mẽ, cung cấp nhiều tính năng cho phát triển web

‒ Có thể xây dựng các ứng dụng web đa nền tảng, ứng dụng real-time,…

‒ Do Nodejs hoạt động đơn luồng (Single-threaded) nên nếu có một tác vụ chạy lâu, nó sẽ khiến toàn bộ hệ thống bị block

‒ Không phù hợp cho các tác vụ đòi hỏi tính toán nhiều hoặc tài nguyên CPU cao

Xử lý lỗi trong Node.js có thể phức tạp hơn so với các ngôn ngữ và môi trường khác do tính chất không đồng bộ của nó, khiến việc theo dõi, xử lý và ghi nhật ký lỗi trở thành một thách thức lớn.

ExpressJs

‒ ExpressJS là một backend framework được xây dựng dựa trên nền tảng NodeJS

ExpressJS là một framework mạnh mẽ giúp phát triển ứng dụng web và API một cách đơn giản và nhanh chóng Với các công cụ và tính năng đa dạng, Express.js hỗ trợ lập trình viên trong việc xây dựng ứng dụng web hiệu quả hơn.

Express.js là một framework nhẹ và tối giản, cho phép bạn tùy chỉnh ứng dụng mà không bị ràng buộc bởi quá nhiều quy tắc hay cấu trúc Điều này giúp bạn dễ dàng xây dựng ứng dụng theo ý muốn của mình.

Express.js mang đến một cấu trúc linh hoạt cho việc phát triển ứng dụng web, cho phép bạn tổ chức mã nguồn và cấu trúc thư mục theo ý muốn, đồng thời lựa chọn các công cụ và thư viện bổ sung phù hợp với nhu cầu của dự án.

Với thiết kế nhẹ nhàng và hiệu suất vượt trội, Express.js là lựa chọn lý tưởng cho việc phát triển các ứng dụng web có khả năng đáp ứng nhanh và xử lý hàng ngàn yêu cầu đồng thời một cách hiệu quả.

Express.js không có một số tính năng tích hợp sẵn như các framework lớn hơn, điều này buộc lập trình viên phải viết thêm mã hoặc sử dụng các module bổ sung để thực hiện các chức năng phức tạp.

Mặc dù Express.js hỗ trợ các phương thức bảo mật như xác thực người dùng và xử lý cookie, nhưng nền tảng này không cung cấp tính năng bảo mật mạnh mẽ mặc định.

MongoDB

‒ MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) mã nguồn mở

Nó được thiết kế để lưu trữ và xử lý tài liệu dưới định dạng BSON (Binary JSON), giúp lưu trữ dữ liệu có cấu trúc linh hoạt và dễ dàng mở rộng.

MongoDB là một hệ quản trị cơ sở dữ liệu được thiết kế để xử lý các ứng dụng web và dữ liệu phân tán, với khả năng mở rộng cao Hệ thống này sử dụng mô hình lưu trữ dựa trên tài liệu, trong đó dữ liệu được tổ chức thành các tài liệu tương tự như các bản ghi trong các hệ quản trị cơ sở dữ liệu quan hệ truyền thống.

MongoDB cho phép linh hoạt trong việc thay đổi cấu trúc dữ liệu, cho phép thêm hoặc xóa các trường trong tài liệu mà không cần tuân theo một cấu trúc cố định Ngoài ra, nó còn hỗ trợ phân tán dữ liệu trên nhiều node máy chủ, giúp tối ưu hóa hiệu suất và khả năng mở rộng.

MongoDB được thiết kế để tối ưu hóa tốc độ đọc và ghi dữ liệu, với các tính năng nổi bật như indexing, caching và replica sets, nhằm đảm bảo hiệu suất tối ưu trong truy vấn và xử lý dữ liệu.

‒ MongoDB hỗ trợ nhiều ngôn ngữ lập trình thông qua các driver và thư viện phổ biến như Python, JavaScript (Node.js), Java, C#, Ruby và nhiều ngôn ngữ khác

MongoDB không đặt ra nhiều quy tắc và ràng buộc cho dữ liệu, do đó, việc quản lý và duy trì tính nhất quán của dữ liệu phụ thuộc vào thiết kế cơ sở dữ liệu và chính sách quản lý của ứng dụng.

MongoDB yêu cầu một lượng lớn bộ nhớ để lưu trữ tài liệu và chỉ mục, điều này có thể dẫn đến chi phí cao và không phù hợp cho các ứng dụng có khối lượng dữ liệu lớn và hạn chế bộ nhớ.

Mongoose

Mongoose là một thư viện phổ biến trong Node.js, giúp tương tác hiệu quả với cơ sở dữ liệu MongoDB Thư viện này cho phép người dùng định nghĩa các mô hình (models) và tạo ra các đối tượng JavaScript, từ đó đơn giản hóa việc thao tác với dữ liệu trong MongoDB.

Mongoose cung cấp các công cụ xác thực dữ liệu, giúp đảm bảo rằng các tài liệu lưu trữ trong MongoDB tuân thủ các yêu cầu và ràng buộc mà lập trình viên đã định nghĩa.

Mongoose cung cấp các phương thức linh hoạt để thao tác dữ liệu với MongoDB, giúp lập trình viên dễ dàng thêm, sửa đổi, xóa và truy vấn dữ liệu thông qua các công cụ mà Mongoose cung cấp.

Mongoose cung cấp tính năng populate, cho phép tự động truy xuất dữ liệu từ các bảng liên quan trong MongoDB, giúp tối ưu hóa quy trình truy vấn dữ liệu và quản lý mối quan hệ giữa các tài liệu hiệu quả hơn.

Mongoose thường có kích thước tập tin lớn hơn so với các thư viện khác, điều này có thể dẫn đến việc tăng kích thước tổng thể của ứng dụng và kéo dài thời gian tải ứng dụng.

Mặc dù Mongoose mang lại nhiều tính năng linh hoạt và tiện ích cho việc làm việc với MongoDB, nhưng đôi khi nó có thể ảnh hưởng tiêu cực đến hiệu suất của ứng dụng Việc sử dụng Mongoose cần được cân nhắc kỹ lưỡng để đảm bảo hiệu quả tối ưu cho dự án.

Sử dụng Mongoose yêu cầu một lớp trừu tượng bổ sung cùng với các hoạt động trung gian, điều này có thể dẫn đến việc giảm tốc độ truy cập và xử lý dữ liệu.

Thao tác với dữ liệu phức tạp có thể gây khó khăn, đặc biệt khi làm việc với các mối quan hệ một-nhiều hoặc nhiều-nhiều, điều này đòi hỏi sự hiểu biết và quản lý tinh vi.

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Phân tích yêu cầu

Khách hàng có thể dễ dàng đăng ký tài khoản mới trên trang Client bằng cách cung cấp các thông tin cần thiết như Tên đăng nhập, Mật khẩu, Họ và tên, Số điện thoại, Email, Giới tính và Ngày sinh.

Chủ rạp sẽ được cấp tài khoản bởi người quản lý hệ thống, trong khi đó, khi chủ rạp thêm nhân viên mới, hệ thống tự động tạo tài khoản cho nhân viên với tên đăng nhập là email của họ, và mật khẩu sẽ được gửi đến email đó.

‒ Đối với trang Client: Để có thể đặt vé cũng như bình luận và đánh giá phim, người dùng cần đăng nhập vào tài khoản đã đăng ký

‒ Đối với trang Admin: Chủ rạp và nhân viên cần đăng nhập để có thể thực hiện các chức năng quản lý tương ứng

3.1.3 Xem trang thống kê nhanh (Trang Admin)

‒ Sau khi đăng nhập chỉ có Chủ rạp hoặc Quản lý mới có thể xem các thông tin thống kê nhanh trong ngày Các thông tin này bao gồm:

+ Số vé đã bán trong ngày

+ Tổng số vé đã bán và tổng số vé còn lại

+ Doanh sách các giao dịch mới nhất

3.1.4 Đặt vé (Trang Admin + Client)

Cả Chủ rạp, Quản lý, Nhân viên và Khách hàng đều có thể thực hiện chức năng đặt vé Chức năng đặt vé bao gồm 4 bước:

3.1.5 Quản lý phim (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý phim Các chức năng cần có:

+ Tìm kiếm và lọc phim trong danh sách

+ Thêm, chỉnh sửa và xóa phim

Để cung cấp thông tin đầy đủ về một bộ phim, cần bao gồm các yếu tố như tên phim, đạo diễn, thể loại, diễn viên, thời lượng, năm sản xuất, ngày khởi chiếu, ngày ngừng khởi chiếu dự kiến, ngôn ngữ, trailer, ảnh chính, bộ sưu tập ảnh và mô tả.

3.1.6 Quản lý lịch chiếu (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý lịch chiếu Các chức năng cần có:

+ Xem danh sách lịch chiếu theo ngày

+ Thêm, chỉnh sửa và xóa lịch chiếu

‒ Các thông tin cần có của lịch chiếu: Phim, phòng chiếu, giờ chiếu, giá ghế đơn, giá ghế đôi

3.1.7 Quản lý phòng chiếu (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý phòng chiếu Các chức năng cần có:

+ Xem danh sách phòng chiếu

+ Thêm, chỉnh sửa và xóa phòng chiếu

‒ Các thông tin cần có của phòng chiếu: Tên phòng chiếu, loại phòng chiếu, danh sách ghế của phòng chiếu

3.1.8 Quản lý đồ ăn nhẹ (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý đồ ăn nhẹ Các chức năng cần có:

+ Xem danh sách các món và combo

+ Tìm kiếm món và combo

+ Thêm, chỉnh sửa và xóa món và combo

‒ Các thông tin cần có của đồ ăn nhẹ: Tên món hoặc combo, giá, ảnh chính

3.1.9 Quản lý diễn viên (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý diễn viên Các chức năng cần có:

+ Xem danh sách diễn viên

+ Thêm, chỉnh sửa và xóa diễn viên

‒ Các thông tin cần có của diễn viên: Tên diễn viên, ngày sinh, quốc tịch, ảnh chính, bộ sưu tập ảnh, mô tả

3.1.10 Quản lý nhân viên (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý nhân viên Các chức năng cần có:

+ Xem danh sách nhân viên

+ Thêm, chỉnh sửa và xóa nhân viên

+ Chủ rạp có thể xem, sửa, xóa quản lý và nhân viên, quản lý chỉ có thể xem, sửa, xóa nhân viên

‒ Các thông tin cần có của diễn viên: Họ và tên, số điện thoại, email, giới tính, ngày sinh, địa chỉ, vai trò

3.1.11 Quản lý bài viết (Trang Admin)

‒ Cả Chủ rạp, Quản lý và Nhân viên có thể thực hiện chức năng quản lý bài viết Các chức năng cần có:

+ Xem danh sách bài viết

+ Thêm, chỉnh sửa và xóa bài viết do mình viết Đối với bài viết do người khác viết thì chỉ có thể xem và không thể sửa và xóa

‒ Các thông tin cần có của bài viết: Tiêu đề, ảnh chính, nội dung, đăng công khai

3.1.12 Quản lý giao dịch (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý giao dịch Các chức năng cần có:

+ Xem danh sách giao dịch

+ Lọc giao dịch theo ngày

+ Xem chi tiết giao dịch

‒ Các thông tin cần có của giao dịch: Thời gian tạo, người tạo, phim, suất chiếu, danh sách ghế, danh sách đồ ăn nhẹ

3.1.13 Quản lý báo cáo (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý báo cáo Các chức năng cần có:

+ Xem báo cáo chung theo ngày, tháng, năm

+ Xem báo cáo theo phim theo ngày hoặc tất cả

3.1.14 Quản lý thể loại phim (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý thể loại phim Các chức năng cần có:

+ Xem danh sách thể loại phim

+ Tìm kiếm thể loại phim

+ Thêm, chỉnh sửa và xóa thể loại phim

‒ Các thông tin cần có của thể loại phim: Tên thể loại phim

3.1.15 Quản lý loại phòng chiếu (Trang Admin)

‒ Chủ rạp và Quản lý có thể thực hiện chức năng quản lý loại phòng chiếu Các chức năng cần có:

+ Xem danh sách loại phòng chiếu

+ Tìm kiếm loại phòng chiếu

+ Thêm, chỉnh sửa và xóa loại phòng chiếu

‒ Các thông tin cần có của loại phòng chiếu: Tên loại phòng chiếu

3.1.16 Quản lý thông tin cá nhân (Trang Admin)

‒ Người dùng đã đăng nhập có thể quản lý thông tin cá nhân của mình

‒ Các thông tin của người dùng bao gồm: Họ và tên, số điện thoại, email, giới thiệu, ngày sinh, địa chỉ

3.1.17 Xem danh sách lịch chiếu (Trang Client)

‒ Khách hàng có thể xem danh sách lịch chiếu của các phim trong tuần

‒ Khách hàng có thể bấm vào suất chiếu để chuyển đến trang đặt vé

3.1.18 Xem danh sách phim và chi tiết phim (Trang Client)

‒ Khách hàng có thể xem danh sách phim đang chiếu, sắp chiếu cũng như các phim đã chiếu

‒ Khách hàng có thể tìm kiếm phim, lọc phim theo thể loại và năm phát hành

Khách hàng có thể nhấp vào phim để xem thông tin chi tiết, bao gồm tên phim, năm sản xuất, thời lượng, ngày khởi chiếu, danh sách diễn viên, thể loại, mô tả nội dung, trailer, bộ ảnh, cũng như danh sách đánh giá và bình luận.

3.1.19 Đánh giá và bình luận

‒ Người dùng có thể gửi bình luận phim, thích và trả lời các bình luận của các người dùng khác Chức năng bình luận không yêu cầu đặt vé

‒ Đối với chức năng đánh giá, người dùng cần đặt vé Sau khi đặt vé, người dùng có thể gửi đánh giá phim

3.1.20 Xem danh sách phim và chi tiết diễn viên (Trang Client)

‒ Khách hàng có thể xem danh sách các diễn viên

Khách hàng có thể dễ dàng tìm kiếm và lọc diễn viên theo quốc gia, đồng thời nhấn vào tên diễn viên để truy cập trang chi tiết của họ.

3.1.21 Xem danh sách phim và chi tiết bài viết (Trang Client)

‒ Người dùng có thể xem danh sách các bài viết

‒ Người dùng có thể tìm kiếm bài viết Khách hàng có thể bấm vào bài viết để chuyển đến trang chi tiết bài viết

‒ Người dùng có thể cập nhật thông tin cá nhân, cập nhật mật khẩu cũng như xem danh sách lịch sử giao dịch

Người dùng có thể nhấp vào giao dịch để truy cập trang chi tiết, nơi họ có khả năng gửi và cập nhật đánh giá về phim.

Thiết kế hệ thống

Hình 3.1 Sơ đồ Use Case trang Admin

Hình 3.2 Sơ đồ Use Case trang Client

STT Tên Actor Mô tả ngắn gọn

1 Chủ rạp Người có vị trí cao nhất, chịu trách nhiệm quản lý, điều hành toàn bộ rạp phim

2 Quản lý Người hỗ trợ chủ rạp trong công việc điều hành rạp phim

3 Nhân viên Người thực hiện giao dịch, quản lý các giao dịch

4 Khách hàng Người sử dụng phần mềm để đặt vé trực tuyến

Bảng 3.2 Danh sách Use Case

1 Đăng nhập Chủ rạp, Quản lý,

Nhân viên của rạp đăng nhập bằng tài khoản được cấp, khách hàng đăng nhập bằng tài khoản đã đăng ký

2 Đăng xuất Chủ rạp, Quản lý,

Nhân viên, Khách hàng Đăng xuất tài khoản khỏi trang web

3 Đăng ký Khách hàng Đăng ký tài khoản để sử dụng trang web

Chủ rạp, Quản lý, Nhân viên, Khách hàng

Người dùng quên mật khẩu và cần tạo lại mật khẩu mới cho tài khoản

5 Đặt vé Chủ rạp, Quản lý,

Nhân viên, Khách hàng Đặt vé cho lịch chiếu mong muốn

6 Quản lý thông tin cá nhân

Chủ rạp, Quản lý, Nhân viên, Khách hàng

Quản lý các thông tin cơ bản của người dùng

Chủ rạp, Quản lý, Nhân viên

Xem danh sách giao dịch của rạp

Chủ rạp, Quản lý, Nhân viên

Thêm, xóa, sửa bài viết, xem danh sách bài viết

9 Quản lý loại phòng chiếu

Chủ rạp, Quản lý Thêm, xóa, sửa loại phòng, xem danh sách, tìm kiếm loại phòng

Chủ rạp, Quản lý Thêm, xóa, sửa phòng, xem danh sách, tìm kiếm phòng, xem chi tiết phòng

11 Quản lý thể loại phim

Chủ rạp, Quản lý Thêm, xóa, sửa thể loại phim, xem danh sách, tìm kiếm thể loại phim

12 Quản lý phim Chủ rạp, Quản lý Thêm, xóa, sửa phim, xem danh sách, tìm kiếm phim

Chủ rạp, Quản lý Thêm, xóa, sửa diễn viên, xem danh sách, tìm kiếm diễn viên

Chủ rạp, Quản lý Thêm, xóa, sửa lịch chiếu, xem danh sách lịch chiếu trong vòng 7 ngày

15 Quản lý đồ ăn nhẹ

Chủ rạp, Quản lý Thêm, xóa, sửa đồ ăn nhẹ, xem danh sách, tìm kiếm đồ ăn nhẹ

16 Quản lý nhân sự cấp thấp

Quản lý Thêm, xóa, sửa nhân sự cấp thấp

(Nhân viên), xem danh sách, tìm kiếm nhân sự

Chủ rạp, Quản lý Báo cáo số liệu trong ngày và thông tin chung của rạp

Chủ rạp, Quản lý Báo cáo doanh thu chung hoặc theo phim

19 Quản lý nhân sự cấp cao

Chủ rạp Thêm, xóa, sửa nhân sự cấp cao

(Quản lý), xem danh sách, tìm kiếm nhân sự

20 Xem bài viết Khách hàng Xem danh sách bài viết được công khai bởi Chủ rạp/Quản lý/Nhân viên, tìm kiếm bài viết

21 Quản lý giao dịch cá nhân

Khách hàng Xem lại danh sách các giao dịch của bản thân

Khách hàng Xem danh sách, thông tin chi tiết phim có sẵn tại rạp, tìm kiếm phim, bình luận, đánh giá phim

23 Xem danh sách diễn viên

Khách hàng Xem danh sách diễn viên, tìm kiếm diễn viên

Bảng 3.3 Đặc tả Use Case Đăng nhập

Tên Use Case Đăng nhập

Mô tả Là Chủ rạp/Quản lý/Nhân viên/Khách hàng, tôi muốn đăng nhập vào để sử dụng dịch vụ từ trang web

Tác nhân Chủ rạp, Quản lý, Nhân viên, Khách hàng

Kích hoạt Người dùng muốn đăng nhập vào trang web

Tiền điều kiện - Tài khoản người dùng đã được tạo sẵn

- Tài khoản người dùng đã được phân quyền

- Thiết bị của người dùng đã được kết nối internet khi thực hiện đăng nhập

Hậu điều kiện Người dùng đăng nhập ứng dụng thành công

1 Người dùng truy cập trang web

2 Người dùng nhập thông tin tài khoản và chọn lệnh “Đăng nhập”

3 Hệ thống xác thực thông tin đăng nhập hợp lệ và cho phép người dùng truy cập ứng dụng

Luồng tương tác ngoại lệ

1 Hệ thống xác thực thông tin đăng nhập không hợp lệ và hiển thị thông báo

2 Người dùng chọn lệnh “Quên mật khẩu”

3 Tiếp tục Use Case Quên mật khẩu

Yêu cầu phi Phiên đăng nhập của người dùng là 1 giờ, quá 1 giờ người dùng

43 chức năng phải đăng nhập lại để sử dụng ứng dụng

Bảng 3.4 Đặc tả Use Case Đăng xuất

Tên Use Case Đăng xuất

Mô tả Là Chủ rạp/Quản lý/Nhân viên/Khách hàng, tôi muốn đăng xuất tài khoản của tôi khỏi trang web

Tác nhân Chủ rạp, Quản lý, Nhân viên, Khách hàng

Kích hoạt Người dùng muốn đăng xuất khỏi trang web

Tiền điều kiện Tài khoản người dùng đã được đăng nhập

Hậu điều kiện Người dùng đăng xuất khỏi trang web thành công

1 Người dùng vào mục “Thông tin cá nhân”

2 Người dùng chọn lệnh “Đăng xuất”

3 Hệ thống đăng xuất tài khoản người dùng thành công

Luồng tương tác ngoại lệ

Yêu cầu phi chức năng

Bảng 3.5 Đặc tả Use Case Đăng ký

Tên Use Case Đăng ký

Mô tả Là Khách hàng, tôi muốn đăng ký tài khoản để có thể sử dụng dịch vụ từ trang web

Kích hoạt Người dùng muốn đăng ký tài khoản trang web

Tiền điều kiện Người dùng chưa đăng nhập vào trang web

Hậu điều kiện Người dùng đăng ký tài khoản thành công

1 Người dùng truy cập trang web

2 Người dùng chọn lệnh “Đăng ký”, nhập các thông tin cần thiết và xác nhận đăng ký

3 Hệ thống xác thực thông tin đăng ký hợp lệ và thông báo đăng ký thành công cho người dùng

Luồng tương tác ngoại lệ

Hệ thống xác thực thông tin đăng ký không hợp lệ và hiển thị thông báo

Yêu cầu phi chức năng

3.2.4.4 Use Case Quên mật khẩu

Bảng 3.6 Đặc tả Use Case Quên mật khẩu

Tên Use Case Quên mật khẩu

Mô tả Là Chủ rạp/Quản lý/Nhân viên/Khách hàng, tôi không nhớ mật khẩu cũ của tài khoản và muốn tạo mật khẩu mới

Tác nhân Chủ rạp, Quản lý, Nhân viên, Khách hàng

Kích hoạt Người dùng muốn tạo mới mật khẩu cho tài khoản

Tiền điều kiện Người dùng chưa đăng nhập vào trang web

Hậu điều kiện Người dùng tạo mật khẩu mới cho tài khoản thành công

1 Người dùng truy cập trang web

2 Người dùng chọn lệnh “Quên mật khẩu”, nhập địa chỉ email gắn liền với tài khoản muốn tạo mới mật khẩu

3 Hệ thống xác thực email hợp lệ và gửi mail thông báo về địa chỉ đã nhập

4 Người dùng nhấn vào liên kết trong mail nhận được để chuyển

45 đến trang tạo mới mật khẩu và thực hiện tạo mật khẩu

Luồng tương tác ngoại lệ

1 Hệ thống xác thực không tìm thấy tài khoản liên kết với email đã nhập và thông báo đến người dùng

2 Người dùng nhấn vào liên kết trong mail khi liên kết đã hết hạn

Yêu cầu phi chức năng

Liên kết được gửi đến địa chỉ email chỉ có hiệu lực 1 giờ

Bảng 3.7 Đặc tả Use Case Đặt vé

Tên Use Case Đặt vé

Khách hàng có nhu cầu đặt vé xem phim trực tuyến, trong khi đó, các chủ rạp, quản lý và nhân viên cũng cần khả năng đặt vé cho khách hàng khi họ đến đặt vé tại quầy.

Tác nhân Chủ rạp, Quản lý, Nhân viên, Khách hàng

Kích hoạt Người dùng muốn đặt vé

Tiền điều kiện Người dùng đã đăng nhập vào trang web

Hậu điều kiện Người dùng đặt vé thành công

1 Người dùng chọn mục “Đặt vé”

2 Người dùng xem các lịch chiếu và chọn lịch chiếu muốn đặt vé

3 Hệ thống hiển thị mô phỏng bố cục phòng chiếu và danh sách vé tương ứng với ghế, người dùng chọn ghế muốn đặt vé

4 Người dùng chọn đồ ăn nhẹ đi kèm (Không bắt buộc)

5 Người dùng nhấn “Thanh toán”, hệ thống thông báo thanh toán thành công

Luồng tương tác ngoại lệ

Trong quá trình chọn đồ ăn nhẹ, người dùng khác đã thanh toán các vé mà người dùng hiện tại đã chọn, hệ thống thông báo cho

Yêu cầu phi chức năng

3.2.4.6 Use Case Quản lý thông tin cá nhân

Bảng 3.8 Đặc tả Use Case Quản lý thông tin cá nhân

Tên Use Case Quản lý thông tin cá nhân

Mô tả Là Chủ rạp/Quản lý/Nhân viên/Khách hàng, tôi muốn quản lý thông tin cá nhân của tôi trên trang web

Tác nhân Chủ rạp, Quản lý, Nhân viên, Khách hàng

Kích hoạt Người dùng muốn xem thông tin cá nhân

Tiền điều kiện Người dùng đã đăng nhập vào trang web

Hậu điều kiện Người dùng xem và chỉnh sửa thông tin cá nhân thành công Luồng tương tác chính

1 Người dùng truy cập vào mục “Thông tin cá nhân”

2 Hệ thống hiển thị thông tin người dùng

3 Người dùng chỉnh sửa thông tin cá nhân và chọn “Cập nhật”

4 Ứng dụng cập nhật thông tin thành công và hiển thị thông báo Luồng tương tác ngoại lệ

Người dùng chỉnh sửa thông tin cá nhân và chọn “Cập nhật”, hệ thống xác thực thông tin không hợp lệ và thông báo cho người dùng

Yêu cầu phi chức năng

3.2.4.7 Use Case Quản lý giao dịch

Bảng 3.9 Đặc tả Use Case Quản lý giao dịch

Tên Use Case Quản lý giao dịch

Mô tả Là Chủ rạp/Quản lý/Nhân viên, tôi muốn quản lý danh sách giao dịch của rạp

Tác nhân Chủ rạp, Quản lý, Nhân viên

Kích hoạt Người dùng muốn xem danh sách giao dịch

Tiền điều kiện Người dùng đã đăng nhập vào trang web và tài khoản đủ quyền hạn

Hậu điều kiện Người dùng xem danh sách giao dịch thành công

1 Người dùng truy cập vào mục “Giao dịch”

2 Hệ thống hiển thị danh sách giao dịch của rạp

3 Người dùng nhấn xem chi tiết giao dịch, hệ thống hiển thị thông tin tương ứng

Luồng tương tác ngoại lệ

Yêu cầu phi chức năng

3.2.4.8 Use Case Quản lý bài viết

Bảng 3.10 Đặc tả Use Case Quản lý bài viết

Tên Use Case Quản lý bài viết

Mô tả Là Chủ rạp/Quản lý, tôi muốn quản lý danh sách bài viết của rạp

Là Nhân viên, tôi muốn thêm các bài viết cho rạp

Tác nhân Chủ rạp, Quản lý, Nhân viên

Kích hoạt Người dùng muốn xem danh sách bài viết

Tiền điều kiện Người dùng đã đăng nhập vào trang web và tài khoản đủ quyền hạn

Hậu điều kiện Người dùng xem danh sách bài viết thành công, thực hiện thêm, xóa, sửa khi cần thiết

1 Người dùng truy cập vào mục “Bài viết”

2 Người dùng chọn “Thêm bài viết”, nhập các thông tin cần thiết và chọn “Thêm”, hệ thống hiển thị thông báo thêm bài viết thành công

3 Hệ thống hiển thị danh sách bài viết được chia thành 2 phần:

“Bài viết công khai”, “Bài viết của tôi”

3.1 Người dùng nhấn vào bài viết trong mục “Bài viết công khai”, hệ thống hiển thị chi tiết bài viết

3.2 Người dùng nhấn vào bài viết trong mục “Bài viết của tôi”, hệ thống hiển thị chi tiết bài viết và cho phép chỉnh sửa/xóa

Luồng tương tác ngoại lệ

Khi người dùng thực hiện thao tác "Thêm bài viết", hệ thống sẽ kiểm tra và thông báo nếu người dùng đã điền thiếu thông tin cần thiết.

3.2.4.9 Use Case Quản lý loại phòng chiếu

Bảng 3.11 Đặc tả Use Case Quản lý loại phòng chiếu

Tên Use Case Quản lý loại phòng chiếu

Mô tả Là Chủ rạp/Quản lý, tôi muốn quản lý danh sách loại phòng chiếu của rạp

Tác nhân Chủ rạp, Quản lý

Kích hoạt Người dùng muốn xem danh sách loại phòng chiếu

Tiền điều kiện Người dùng đã đăng nhập vào trang web và tài khoản đủ quyền hạn

Hậu điều kiện Người dùng xem danh sách loại phòng chiếu thành công, thực hiện thêm, xóa, sửa khi cần thiết

Luồng tương tác 1 Người dùng truy cập vào mục “Cài đặt chung” và chọn “Loại

2 Hệ thống hiển thị danh sách loại phòng chiếu

2.1 Người dùng nhấn “Thêm loại phòng chiếu”, nhập tên loại phòng và chọn “Tạo mới”, hệ thống thêm loại phòng thành công và hiển thị lại danh sách loại phòng cho người dùng

2.2 Người dùng nhấn vào biểu tượng chỉnh sửa của loại phòng và thực hiện chỉnh sửa, hệ thống cập nhật loại phòng thành công và hiển thị lại danh sách loại phòng cho người dùng

2.3 Người dùng nhấn vào biểu tượng xóa loại phòng, hệ thống hiển thị hộp thoại xác nhận lựa chọn của người dùng Người dùng xác nhận xóa, hệ thống xóa loại phòng thành công và hiển thị lại danh sách loại phòng cho người dùng

2.4 Người dùng nhập thông tin vào ô “Tìm kiếm…”, hệ thống hiển thị danh sách loại phòng tương ứng

Luồng tương tác ngoại lệ

1 Người thực hiện “Thêm loại phòng” hoặc chỉnh sửa loại phòng, hệ thống xác nhận tên loại phòng đã tồn tại và hiển thị thông báo cho người dùng

2 Người dùng thực hiện xóa loại phòng, hệ thống xác nhận vẫn còn phòng tham chiếu đến loại phòng nên không thể xóa và hiển thị thông báo cho người dùng

Yêu cầu phi chức năng

3.2.4.10 Use Case Quản lý phòng chiếu

Bảng 3.12 Đặc tả Use Case Quản lý phòng chiếu

Tên Use Case Quản lý phòng chiếu

Mô tả Là Chủ rạp/Quản lý, tôi muốn quản lý danh sách phòng chiếu của rạp

Tác nhân Chủ rạp, Quản lý

Kích hoạt Người dùng muốn xem danh sách phòng chiếu

Tiền điều kiện Người dùng đã đăng nhập vào trang web và tài khoản đủ quyền hạn

Hậu điều kiện Người dùng xem danh sách và chi tiết loại phòng chiếu thành công, thực hiện thêm, xóa, sửa khi cần thiết

1 Người dùng truy cập vào mục “Phòng chiếu”

2 Hệ thống hiển thị danh sách phòng chiếu

2.1 Người dùng nhấn “Thêm phòng chiếu”, nhập các thông tin cần thiết và chọn “Tạo mới”, hệ thống thêm phòng thành công và hiển thị lại danh sách phòng cho người dùng

2.2 Người dùng nhấn vào phòng chiếu trong danh sách

Hệ thống hiển thị thông tin chi tiết, bố cục phòng chiếu

2.2.1 Người dùng chỉnh sửa thông tin, bố cục phòng chiếu và chọn “Cập nhật”, hệ thống cập nhật thông tin phòng chiếu thành công và hiển thị lại danh sách phòng chiếu cho người dùng

2.2.1 Người dùng chọn “Xóa phòng chiếu”, hệ thống hiển thị hộp thoại xác nhận lựa chọn của người dùng Người dùng xác nhận xóa, hệ thống xóa phòng chiếu thành công và hiển thị lại danh sách phòng chiếu cho người dùng

Luồng tương tác ngoại lệ

1 Người thực hiện “Thêm phòng chiếu” hoặc chỉnh sửa phòng, hệ thống xác nhận tên phòng đã tồn tại và hiển thị thông báo cho người dùng

2 Người dùng thực hiện xóa phòng hoặc chỉnh sửa phòng, hệ thống xác nhận phòng vẫn còn lịch chiếu nên không thể xóa hoặc chỉnh sửa và hiển thị thông báo cho người dùng

Yêu cầu phi chức năng

3.2.4.11 Use Case Quản lý thể loại phim

Bảng 3.13 Đặc tả Use Case Quản lý thể loại phim

Tên Use Case Quản lý thể loại phim

Mô tả Là Chủ rạp/Quản lý, tôi muốn quản lý danh sách thể loại phim của rạp

Tác nhân Chủ rạp, Quản lý

Kích hoạt Người dùng muốn xem danh sách thể loại phim

Tiền điều kiện Người dùng đã đăng nhập vào trang web và tài khoản đủ quyền hạn

Hậu điều kiện Người dùng xem danh sách thể loại phim thành công, thực hiện thêm, xóa, sửa khi cần thiết

1 Người dùng truy cập vào mục “Cài đặt chung” và chọn “Thể loại phim

2 Hệ thống hiển thị danh sách thể loại phim

2.1 Người dùng nhấn “Thêm thể loại phim”, nhập tên thể loại phim và chọn “Tạo mới”, hệ thống thêm thể loại phim thành công và hiển thị lại danh sách thể loại phim cho người dùng

2.2 Người dùng nhấn vào biểu tượng chỉnh sửa của thể loại phim và thực hiện chỉnh sửa, hệ thống cập nhật loại thể loại phim công và hiển thị lại danh sách thể loại phim cho người dùng

2.3 Người dùng nhấn vào biểu tượng xóa thể loại phim, hệ thống hiển thị hộp thoại xác nhận lựa chọn của người dùng Người dùng xác nhận xóa, hệ thống xóa thể loại phim thành công và hiển thị lại danh sách thể loại phim cho người dùng

2.4 Người dùng nhập thông tin vào ô “Tìm kiếm…”, hệ thống hiển thị danh sách thể loại phim tương ứng

Luồng tương tác ngoại lệ

Khi người dùng thực hiện việc "Thêm thể loại phim" hoặc chỉnh sửa thể loại phim, hệ thống sẽ xác nhận tên thể loại phim đã tồn tại và hiển thị thông báo cho người dùng.

Yêu cầu phi chức năng

3.2.4.12 Use Case Quản lý phim

Bảng 3.14 Đặc tả Use Case Quản lý phim

Tên Use Case Quản lý phim

Mô tả Là Chủ rạp/Quản lý, tôi muốn quản lý danh sách phim của rạp Tác nhân Chủ rạp, Quản lý

Kích hoạt Người dùng muốn xem danh sách phim

Tiền điều kiện Người dùng đã đăng nhập vào trang web và tài khoản đủ quyền hạn

Hậu điều kiện Người dùng xem danh sách phim thành công, thực hiện thêm, xóa, sửa khi cần thiết

1 Người dùng truy cập vào mục “Phim”

2 Hệ thống hiển thị danh sách phim

2.1 Người dùng nhấn “Thêm phim”, nhập đầy đủ thông tin cần thiết và chọn “Tạo mới”, hệ thống thêm phim thành công và hiển thị lại danh sách phim cho người dùng

2.2 Người dùng nhập thông tin vào ô “Tìm kiếm…”, hệ thống hiển thị danh sách phim tương ứng

2.3 Người dùng thay đổi trạng thái của phim trong bộ lọc, hệ thống hiển thị danh sách phim tương ứng

2.4 Người dùng nhấn vào phim trong danh sách Hệ thống hiển thị thông tin chi tiết của phim

2.4.1 Người dùng chỉnh sửa thông tin và chọn

“Cập nhật”, hệ thống cập nhật thông tin phim thành công và hiển thị lại danh sách phim cho người dùng

Thiết kế dữ liệu

Hình 3.3 Sơ đồ lớp của hệ thống

Bảng 3.27 Danh sách các bảng trong cơ sở dữ liệu

STT Tên bảng dữ liệu Diễn giải

1 Account Lưu trữ thông tin tài khoản người dùng

2 User Lưu trữ thông tin người dùng

3 RoomType Lưu trữ thông tin loại phòng chiếu

4 Room Lưu trữ thông tin phòng chiếu

5 Seat Lưu trữ thông tin ghế

6 Genre Lưu trữ thông tin thể loại phim

7 Movie Lưu trữ thông tin phim

8 Actor Lưu trữ thông tin diễn viên

9 ShowTime Lưu trữ thông tin lịch chiếu

10 Ticket Lưu trữ thông tin vé

11 Item Lưu trữ thông tin bắp nước

12 Transaction Lưu trữ thông tin giao dịch

13 Comment Lưu trữ thông tin bình luận phim

14 Rating Lưu trữ thông tin đánh giá phim

15 Post Lưu trữ thông tin bài viết

3.3.3 Mô tả chi tiết bảng dữ liệu

Bảng 3.28 Mô tả chi tiết bảng Account

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Username String Duy nhất, tối thiểu 5 ký tự

Tên đăng nhập của tài khoản

2 Password String Tối thiểu 5 ký tự

Mật khẩu của tài khoản

Bảng 3.29 Mô tả chi tiết bảng User

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Khác rỗng Tên người dùng

2 Phone String Khác rỗng Số điện thoại người dùng

3 Gender String Khác rỗng Giới tính của người dùng

4 Birthday Date Khác rỗng Ngày sinh của người dùng

5 Address String Địa chỉ người dùng

6 Email String Duy nhất, khác rỗng

7 Status String Khác rỗng Trạng thái của người dùng

8 Role String Khác rỗng Vai trò của người dùng trong hệ thống

9 Avatar String Ảnh đại diện của người dùng

Bảng 3.30 Mô tả chi tiết bảng RoomType

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Duy nhất, khác rỗng Tên loại phòng

Bảng 3.31 Mô tả chi tiết bảng Room

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Duy nhất, khác rỗng

2 Status String Khác rỗng Trạng thái của phòng

Bảng 3.32 Mô tả chi tiết bảng Seat

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 RowIndex Number Lớn hơn hoặc bằng 0

Chỉ mục hàng của ghế

2 ColumnIndex Number Lớn hơn hoặc bằng 0

Chỉ mục cột của ghế

3 Name String Tên được tạo tự động dựa trên RowIndex và ColumnIndex

4 Type String Khác rỗng Loại ghế

5 Position String Vị trí của ghế trong trường hợp loại ghế là ghế đôi

Bảng 3.33 Mô tả chi tiết bảng Genre

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Duy nhất, khác rỗng Tên thể loại phim

Bảng 3.34 Mô tả chi tiết bảng Movie

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Khác rỗng Tên phim

2 Description String Khác rỗng Mô tả phim

3 Director String Khác rỗng Tên đạo diễn

4 Thumbnail String Khác rỗng Ảnh bìa của phim

5 Images Array Các hình ảnh minh họa

6 Duration Number Lớn hơn 0 Thời lượng phim

7 PremierDay Date Khác rỗng Ngày khởi chiếu của phim

8 EndDay Date Lớn hơn ngày khởi chiếu

Ngày kết thúc của phim

9 Language String Khác rỗng Ngôn ngữ của phim

10 Trailer String Khác rỗng Video giới thiệu phim

11 Status String Khác rỗng Trạng thái của phim

Bảng 3.35 Mô tả chi tiết bảng Actor

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Khác rỗng Tên diễn viên

2 Nation String Khác rỗng Quốc tịch của diễn viên

3 Story String Khác rỗng Tiểu sử của diễn viên

4 Birthday Date Khác rỗng Ngày sinh của diễn viên

5 Avatar String Khác rỗng Ảnh đại diện của diễn viên

6 Images Array Khác rỗng Các hình ảnh khác của diễn viên

Bảng 3.36 Mô tả chi tiết bảng ShowTime

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 StartTime Date Khác rỗng Giờ bắt đầu lịch chiếu

2 EndTime Date Lớn hơn giờ bắt đầu

Giờ kết thúc lịch chiếu

3 SinglePrice Number Lớn hơn 0 Giá vé ghế đơn cho lịch chiếu

4 DoublePrice Number Lớn hơn 0 Giá vé ghế đôi cho lịch chiếu

Bảng 3.37 Mô tả chi tiết bảng Ticket

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 CreatedAt Date Thời điểm vé được tạo, được tự động thêm bởi MongoDB

2 UpdatedAt Date Thời điểm cập nhật gần nhất của vé, được tự động thêm bởi MongoDB

3 Price Number Lớn hơn 0 Giá vé dựa trên loại ghế và giá quy định bởi lịch chiếu

4 IsBooked Boolean Trạng thái của vé (Đã đặt hoặc chưa đặt)

Bảng 3.38 Mô tả chi tiết bảng Item

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 Name String Duy nhất, khác rỗng

2 Image String Khác rỗng Hình ảnh minh họa cho món ăn

3 Price Number Lớn hơn 0 Giá món ăn

Bảng 3.39 Mô tả chi tiết bảng Transaction

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 CreatedAt Date Thời điểm giao dịch được tạo, được tự động thêm bởi MongoDB

2 UpdatedAt Date Thời điểm cập nhật gần nhất của giao dịch, được tự động thêm bởi MongoDB

3 TotalPrice Number Tổng giá trị giao dịch được tính dựa trên các vé và bắp nước đã chọn

Bảng 3.40 Mô tả chi tiết bảng Comment

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 CreatedAt Date Thời điểm bình luận được tạo, được tự động thêm bởi MongoDB

2 UpdatedAt Date Thời điểm cập nhật gần nhất của bình luận, được tự động thêm bởi MongoDB

3 Comment String Khác rỗng Nội dung bình luận

4 IsReply Boolean Xác định bình luận có thể được trả lời bởi người dùng hay không

5 Likes Array Danh sách người dùng đã thích bình luận

6 Dislikes Array Danh sách người dùng không thích bình luận

Bảng 3.41 Mô tả chi tiết bảng Rating

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 CreatedAt Date Thời điểm đánh giá được tạo, được tự động thêm bởi MongoDB

2 UpdatedAt Date Thời điểm cập nhật gần nhất của đánh giá, được tự động thêm bởi MongoDB

3 Score Number Lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng

10 Điểm số người dùng dành cho phim

4 Description String Mô tả chi tiết về đánh giá

Bảng 3.42 Mô tả chi tiết bảng Post

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

1 CreatedAt Date Thời điểm bài viết được tạo, được tự động thêm bởi MongoDB

2 UpdatedAt Date Thời điểm cập nhật gần nhất của bài viết được tự động thêm bởi

3 Title String Khác rỗng Tiêu đề bài viết

4 Content String Khác rỗng Nội dung bài viết

5 Thumbnail String Khác rỗng Hình minh họa cho bài viết

6 View Number Số lượng lượt xem của bài viết dựa trên truy cập của người dùng

7 Status String Khác rỗng Trạng thái của bài viết

XÂY DỰNG ỨNG DỤNG

TỔNG KẾT

Ngày đăng: 04/09/2023, 20:29

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] "NextJs," [Online]. Available: https://nextjs.org/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: NextJs
Tác giả: Vercel
Năm: 2023
[2] "Material UI," [Online]. Available: https://mui.com/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: Material UI
[3] "TailwindCSS," [Online]. Available: https://tailwindcss.com/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: TailwindCSS
[4] "NodeJs," [Online]. Available: https://nodejs.org/en. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: NodeJs
[5] "ExpressJs," [Online]. Available: https://expressjs.com/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: ExpressJs
[6] "MongoDB," [Online]. Available: https://www.mongodb.com/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: MongoDB
[7] "mongoose," [Online]. Available: https://mongoosejs.com/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: mongoose
[8] "CGV," [Online]. Available: https://www.cgv.vn/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: CGV
[9] "Galaxy Cinema," [Online]. Available: https://www.galaxycine.vn/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: Galaxy Cinema
[10] "React," Meta, [Online]. Available: https://react.dev/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: React
Tác giả: Meta
[11] "BHD Star," [Online]. Available: https://www.bhdstar.vn/. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: BHD Star
[12] "Lotte Cinema," [Online]. Available: https://www.lottecinemavn.com/LCHS/index.aspx#. [Accessed 25 3 2023] Sách, tạp chí
Tiêu đề: Lotte Cinema

HÌNH ẢNH LIÊN QUAN

Hình 4.7. Màn hình “Đặt vé” (Chọn bắp nước) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.7. Màn hình “Đặt vé” (Chọn bắp nước) (Trang 84)
Hình 4.13. Màn hình “Danh sách lịch chiếu” - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.13. Màn hình “Danh sách lịch chiếu” (Trang 90)
Hình 4.14. Màn hình “Thêm lịch chiếu” - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.14. Màn hình “Thêm lịch chiếu” (Trang 91)
Hình 4.17. Màn hình thêm phòng chiếu - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.17. Màn hình thêm phòng chiếu (Trang 94)
Hình 4.24. Màn hình “Chỉnh sửa diễn viên” - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.24. Màn hình “Chỉnh sửa diễn viên” (Trang 101)
Hình 4.28. Màn hình “Danh sách bài viết” (Tất cả) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.28. Màn hình “Danh sách bài viết” (Tất cả) (Trang 105)
Hình 4.29. Màn hình “Danh sách bài viết” (Cá nhân) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.29. Màn hình “Danh sách bài viết” (Cá nhân) (Trang 106)
Hình 4.38. Màn hình “Báo cáo” (Báo cáo chung theo tháng – dạng biểu đồ) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.38. Màn hình “Báo cáo” (Báo cáo chung theo tháng – dạng biểu đồ) (Trang 115)
Hình 4.40. Màn hình “Báo cáo” (Báo cáo chung theo năm – dạng biểu đồ) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.40. Màn hình “Báo cáo” (Báo cáo chung theo năm – dạng biểu đồ) (Trang 117)
Hình 4.41. Màn hình “Báo cáo” (Báo cáo phim theo ngày) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.41. Màn hình “Báo cáo” (Báo cáo phim theo ngày) (Trang 118)
Hình 4.43. Màn hình “Báo cáo” (Báo cáo phim – dạng biểu đồ) - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.43. Màn hình “Báo cáo” (Báo cáo phim – dạng biểu đồ) (Trang 120)
Hình 4.55. Màn hình “Trang chủ” - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.55. Màn hình “Trang chủ” (Trang 132)
Hình 4.58. Màn hình “Chi tiết phim” - Đồ án xây dựng website quản lý rạp chiếu phim
Hình 4.58. Màn hình “Chi tiết phim” (Trang 136)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w