Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 91

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Khoa: Công nghệ thông tin

TÊN MÔN HỌC: PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN


LỚP HỌC PHẦN: 07
TÊN ĐỀ TÀI NHÓM: Hệ thống quản lý rạp chiếu phim
NHÓM BÀI TẬP LỚN: 11

DANH SÁCH THÀNH VIÊN:

STT Họ và tên Mã SV Tên modul thực hiện

1 Nguyễn Thiệu Hiếu B20DCCN256 Bán vé tại quầy

2 Ngô Trần Đức Thái B20DCCN636 Lên lịch chiếu phim

3 Hoàng Đức Thắng B20DCCN660 Khách hàng hoàn trả vé

4 Nguyễn Văn Tú B20DCCN609 Đổi điểm thưởng lấy


quà/vé

5 Vũ Anh Tuấn B20DCCN624 Bán vé trực tuyến


A. PHẦN VIỆC CHUNG CỦA NHÓM
I. Mô tả hệ thống.
1. Mục đích
Hệ thống trang web phục vụ công tác quản lí đặt mua vé trực
tuyến, đổi điểm thưởng lấy quà tặng/vé, khách hàng hoàn trả vé,
lên lịch chiếu phim, mua vé tại quầy
2. Phạm vi
● Thành viên hệ thống:
- Đăng nhập:
+ Cho phép người dùng truy cập vào hệ thống với
tài khoản của mình.
- Đăng xuất:
+ Cho phép người dùng đăng xuất khỏi hệ thống.
- Đổi mật khẩu cá nhân:
+ Cho phép người dùng thay đổi mật khẩu của
mình để bảo vệ thông tin cá nhân.
● Khách hàng (Người xem):
- Đặt vé: Cho phép người dùng chọn phim, suất chiếu,
và đặt vé.
- Hủy vé:
+ Cho phép người dùng hủy đặt vé trước một
khoảng thời gian cố định trước suất chiếu.
- Xem thông tin phim:
+ Hiển thị thông tin về các bộ phim, lịch chiếu, và
giá vé.
● Nhân viên rạp chiếu phim:

- Quản lý thông tin phim:


+ Thêm, xóa, sửa thông tin về các bộ phim.
- Quản lý lịch chiếu:
+ Tạo và cập nhật lịch chiếu phim cho mỗi rạp.
- Quản lý vé:
+ Theo dõi và kiểm soát số lượng vé còn lại cho
mỗi suất chiếu.
- Báo cáo doanh thu:
+ Tạo báo cáo doanh thu cho từng bộ phim hoặc
suất chiếu.

● Quản lý rạp chiếu phim:

- Quản lý nhân viên:


+ Thêm, xóa, sửa thông tin của nhân viên.

- Thống kê doanh thu:


+ Xem các báo cáo thống kê về doanh thu, số
lượng vé bán được, và các chỉ số khác.

- Quản lý khuyến mãi:


+ Thêm, xóa, sửa thông tin về các chương trình
khuyến mãi.

- Quản lý rạp chiếu:


+ Thêm, xóa, sửa thông tin về các rạp chiếu, số
lượng ghế, và các trang thiết bị khác.

- Xem bảng điểm của rạp:


+ Xem bảng điểm về hiệu suất hoạt động của rạp
chiếu.

3. Thông tin về các đối tượng

● Nhóm các thông tin liên quan đến con người:


- Khách hàng:
+ Tài khoản: tên đăng nhập, mật khẩu
+ Thông tin cá nhân: họ tên, địa chỉ, ngày sinh,
email, số điện thoại
- Nhân viên:
+ Tài khoản: tên đăng nhập, mật khẩu
+ Thông tin cá nhân: họ tên, địa chỉ, ngày sinh,
email, số điện thoại
+ Vị trí công việc: quyền hạn (bán vé, quầy bar,
quản lý rạp)
- Quản lý rạp chiếu phim:
+ Tài khoản: tên đăng nhập, mật khẩu
+ Thông tin cá nhân: họ tên, địa chỉ, ngày sinh,
email, số điện thoại
+ Vị trí công việc: quản lý rạp, có quyền kiểm
soát doanh số, quản lý nhân viên
- Nhân viên bán vé:
+ Tài khoản: tên đăng nhập, mật khẩu
+ Thông tin cá nhân: họ tên, địa chỉ, ngày sinh,
email, số điện thoại
+ Vị trí công việc: bán vé, quyền xem thông tin
suất chiếu
- Nhân viên quầy:
+ Tài khoản: tên đăng nhập, mật khẩu
+ Thông tin cá nhân: họ tên, địa chỉ, ngày sinh,
email, số điện thoại
+ Vị trí công việc: phục vụ quầy bar, quyền xem
thông tin doanh số quầy.
+
● Nhóm các thông tin liên quan đến cơ sở vật chất:
- Rạp chiếu phim:
+ Thông tin: tên, địa chỉ, mô tả
+ Danh sách các phòng chiếu
- Phòng chiếu:
+ Thông tin: tên, sức chứa tối đa, mô tả
+ Danh sách ghế trong phòng
+ Nhóm các thông tin liên quan đến đơn vị, tổ
chức.

● Nhóm các thông tin liên quan đến chuyên môn, vận hành:
- Suất chiếu:
+ Thông tin: mã suất chiếu, ngày chiếu, giờ chiếu,
phòng chiếu, mô tả
+ Danh sách các ghế đã được đặt
- Phim:
+ Thông tin: tên, thể loại, đạo diễn, diễn viên, thời
lượng, mô tả
- Chương trình khuyến mãi:
+ Thông tin: tên, mô tả, thời gian áp dụng

● Nhóm thông tin liên quan đến thống kê:


- Doanh số bán vé:
- Thống kê theo suất chiếu, theo phim
- Thống kê đánh giá của khách hàng:
- Đánh giá phim, dịch vụ
- Thống kê doanh thu từ quầy bar:
- Thống kê theo suất chiếu
- Thống kê lượt đặt vé online:
- Thống kê theo suất chiếu, theo ngày
- Thống kê doanh thu từ chương trình khuyến mãi:
- Thống kê theo suất chiếu, theo phim
- Thống kê số lượng khách hàng theo thời gian:
- Thống kê theo ngày, tháng, năm
- Thống kê doanh thu từ các nguồn khác nhau (vé, quầy
bar, khuyến mãi):
- Thống kê tổng hợp theo thời gian.

4. Quan hệ giữa các đối tượng

- Rạp Chiếu Phim có nhiều Phòng Chiếu:


+ Một Rạp Chiếu Phim có thể có nhiều phòng chiếu.
+ Mỗi Phòng Chiếu thuộc một Rạp Chiếu Phim cụ thể.
- Mỗi Phòng Chiếu có nhiều Suất Chiếu:
+ Mỗi Phòng Chiếu có thể có nhiều suất chiếu trong một
ngày.
+ Mỗi Suất Chiếu thuộc một Phòng Chiếu cụ thể.
- Mỗi Suất Chiếu có nhiều Ghế Ngồi:
+ Mỗi Suất Chiếu có thể có nhiều ghế ngồi.
+ Mỗi Ghế Ngồi thuộc một Suất Chiếu cụ thể.
- Mỗi Suất Chiếu có nhiều Vé:
+ Mỗi Suất Chiếu có thể có nhiều vé.
+ Mỗi Vé thuộc một Suất Chiếu cụ thể.
- Mỗi Vé có một hoặc nhiều Mặt Hàng:
+ Mỗi Vé có thể liên kết với một hoặc nhiều mặt hàng
(ví dụ: thức ăn, nước uống).
+ Mỗi Mặt Hàng thuộc một hoặc nhiều Vé.
- Mỗi Suất Chiếu có nhiều Đánh Giá và Bình Luận:
+ Mỗi Suất Chiếu có thể có nhiều đánh giá và bình luận
từ khách hàng.
+ Mỗi Đánh Giá và Bình Luận thuộc một Suất Chiếu cụ
thể.

II. Biểu đồ UC tổng quát

Chúng ta có thể đề xuất các actor cho hệ thống quản lý rạp chiếu
phim như sau: thành viên, khách hàng, nhân viên rạp chiếu phim, quản lý
rạp chiếu phim, và kỹ thuật viên. Tất cả đều có những chức năng cơ bản
như đăng nhập và đổi mật khẩu, nhưng mỗi đối tượng sẽ có những chức
năng riêng phù hợp với vai trò của họ.

Các chức năng cụ thể được phân chia như sau:


Thành viên:
● Đăng nhập và đổi mật khẩu.
Khách hàng:
● Xem thông tin phim, lịch chiếu.
● Đặt vé và mua vé online.
● Xem lại lịch sử mua vé.
Nhân viên rạp chiếu phim:
● Quản lý thông tin suất chiếu.
● Kiểm tra và báo cáo vé đã bán.
● Thực hiện báo cáo về doanh thu.
Quản lý rạp chiếu phim:
● Quản lý thông tin phim, đạo diễn, diễn viên.
● Xem và cập nhật lịch chiếu.
● Quản lý giá vé và chính sách khuyến mãi.
● Thống kê doanh thu theo khoảng thời gian và theo
từng phim.
Kỹ thuật viên:
● Quản lý và bảo dưỡng hệ thống âm thanh, hình ảnh.
● Sửa chữa thiết bị kỹ thuật khi cần.
Trong số các chức năng này, việc xem lịch chiếu của khách hàng là
tương tự chức năng xem lịch dạy của nhân viên rạp chiếu phim. Nên hai
use case này được cho kế thừa từ use case xem lịch chiếu. Như vậy, biểu
đồ use case tổng quan của hệ thống được trình bày với mô tả các use case
như sau:

Đặt vé:
● Cho phép khách hàng truy cập hệ thống để đặt vé xem phim
theo lịch chiếu mong muốn.
Xem lịch chiếu:
● Hiển thị thông tin chi tiết về lịch chiếu của các bộ phim
trong rạp, giúp khách hàng chọn suất chiếu phù hợp.
Mua vé online:
● Cung cấp khả năng mua vé trực tuyến, giúp tiện lợi cho
khách hàng.

Quản lý thông tin suất chiếu:


● Cho nhân viên rạp chiếu phim quản lý thông tin về các suất
chiếu, bao gồm thêm, sửa, và xóa suất chiếu.

Kiểm tra vé đã bán:


● Nhân viên rạp chiếu phim có thể kiểm tra thông tin về số vé
đã được bán cho mỗi suất chiếu.

Thống kê doanh thu:


● Quản lý rạp chiếu phim có khả năng xem thống kê doanh thu
theo khoảng thời gian và theo phim.

Quản lý thông tin phim:


● Quản lý rạp chiếu phim có thể thêm, sửa, và xóa thông tin về
các bộ phim.

Xem và cập nhật lịch chiếu:


● Quản lý rạp chiếu phim có khả năng xem và điều chỉnh lịch
chiếu cho các suất chiếu.
Quản lý giá vé và chính sách khuyến mãi:
● Quản lý rạp chiếu phim có thể quản lý giá vé và áp dụng
chính sách khuyến mãi.
Quản lý thông tin nhân viên:
● Quản lý rạp chiếu phim có khả năng quản lý thông tin về
nhân viên, bao gồm thêm, sửa, và xóa thông tin.
Quản lý thiết bị kỹ thuật:
● Kỹ thuật viên có thể quản lý và bảo dưỡng hệ thống âm
thanh, hình ảnh, và thực hiện sửa chữa khi cần.
Xuất bảng điểm:
● Cho khảo thí xuất bảng điểm cho khách hàng theo yêu cầu.

Xem thống kê:


● Nhân viên quản lý có khả năng xem các loại báo cáo thống
kê về hoạt động của rạp chiếu phim.

III. Biểu đồ lớp thực thể ở pha phân tích

Bước 1: Mô tả hệ thống trong một đoạn văn

Hệ thống quản lý rạp chiếu phim là một ứng dụng trực tuyến được
thiết kế để hỗ trợ quản lý các hoạt động liên quan đến chiếu phim
trong một rạp.

Trong đó, khách hàng có khả năng đặt vé xem phim theo lịch chiếu
và chọn suất chiếu mong muốn; xem thông tin chi tiết về lịch
chiếu, bao gồm thời gian chiếu, phòng chiếu, và phim đang chiếu;
thực hiện mua vé trực tuyến để tiết kiệm thời gian và công sức;
kiểm tra số vé đã được bán và cập nhật thông tin về doanh thu.

Nhân viên rạp chiếu phim có thể quản lý thông tin chi tiết về các
suất chiếu, bao gồm thêm, sửa, và xóa suất chiếu; kiểm tra thông
tin về số vé đã được bán và thực hiện báo cáo về doanh thu; quản
lý thông tin về các bộ phim, bao gồm thêm, sửa, và xóa thông tin.

Quản lý rạp chiếu phim có khả năng thêm, sửa, và xóa thông tin về
các bộ phim, đạo diễn, diễn viên; xem và cập nhật lịch chiếu cho
các suất chiếu; quản lý giá vé và áp dụng chính sách khuyến mãi để
thu hút khách hàng; xem thống kê doanh thu theo khoảng thời gian
và theo từng phim.

Kỹ thuật viên có thể quản lý và bảo dưỡng hệ thống âm thanh, hình


ảnh; sửa chữa thiết bị kỹ thuật khi cần.

Bước 2: Trích các danh từ xuất hiện trong đoạn văn.


Các danh từ liên quan đến người: khách hàng, nhân viên rạp chiếu
phim, quản lý rạp chiếu phim, kỹ thuật viên.
Các danh từ liên quan đến vật: rạp chiếu phim, suất chiếu, vé,
doanh thu.
Các danh từ liên quan đến thông tin: lịch chiếu, bộ phim, đạo diễn,
diễn viên, giá vé, chính sách khuyến mãi.

Bước 3: Đánh giá và lựa chọn các danh từ làm lớp thực thể hoặc thuộc
tính.
Các danh từ trừu tượng: hệ thống, ứng dụng trực tuyến, thông tin.
Các danh từ liên quan đến người:
● Thành viên hệ thống -> ThanhVien: tên, tên đăng nhập, mật
khẩu, ngày sinh, địa chỉ, email, điện thoại.
● Khách hàng -> KhachHang: kế thừa ThanhVien, mã khách
hàng.
● Nhân viên rạp chiếu phim -> NhanVienRap: kế thừa
ThanhVien, vị trí.
● Quản lý rạp chiếu phim -> QuanLyRap: kế thừa
NhanVienRap.
● Kỹ thuật viên -> KyThuatVien: kế thừa NhanVienRap.
Các danh từ liên quan đến vật:
● Rạp chiếu phim -> RapChieuPhim: tên, địa chỉ, mô tả.
● Suất chiếu -> SuatChieu: mã suất chiếu, thời gian chiếu.
● Vé -> Ve: mã vé, giá vé.
● Doanh thu -> DoanhThu: mã doanh thu, ngày thu, số vé bán
được.
Các danh từ liên quan đến thông tin:
● Lịch chiếu -> LichChieu: liên quan đến thời gian chiếu, suất
chiếu, phim.
● Phim -> Phim: tên, đạo diễn, diễn viên, mô tả.
● Giá vé -> GiaVe: giá vé, chính sách khuyến mãi.
Bước 4: Xác định quan hệ số lượng giữa các thực thể
● Rạp chiếu phim có nhiều suất chiếu -> RapChieuPhim -
SuatChieu là 1-n, với mỗi suất chiếu được liên kết với một
rạp chiếu phim cụ thể.
● Suất chiếu có nhiều vé được đặt -> SuatChieu - VeDat là 1-
n, với mỗi vé được đặt liên kết với một suất chiếu cụ thể.
● Khách hàng có thể đặt nhiều vé cho nhiều suất chiếu ->
KhachHang - VeDat là n-n -> đề xuất lớp DatVe kết nối giữa
KhachHang và SuatChieu (DatVe # VeDat), mỗi DatVe biểu
diễn một giao dịch đặt vé cụ thể.
● Rạp chiếu phim có nhiều phim -> RapChieuPhim - Phim là
1-n, với mỗi bộ phim được liên kết với một rạp chiếu phim
cụ thể.
● Một phim có thể chiếu ở nhiều suất chiếu -> Phim -
SuatChieu là 1-n, với mỗi suất chiếu liên kết với một phim
cụ thể.
● Giá vé có thể áp dụng cho nhiều suất chiếu -> GiaVe -
SuatChieu là n-n -> đề xuất lớp GiaVeSuatChieu xác định
duy nhất một giá vé áp dụng cho một suất chiếu cụ thể.
● Nhân viên rạp chiếu phim có thể quản lý nhiều suất chiếu ->
NhanVienRap - SuatChieu là 1-n, với mỗi suất chiếu được
quản lý bởi một nhân viên rạp chiếu phim.
● Quản lý rạp chiếu phim có thể quản lý nhiều nhân viên ->
QuanLyRap - NhanVienRap là 1-n, với mỗi nhân viên rạp
chiếu phim được quản lý bởi một quản lý rạp chiếu phim.
● Kỹ thuật viên có thể quản lý và bảo dưỡng nhiều thiết bị kỹ
thuật -> KyThuatVien - ThietBiKyThuat là 1-n, với mỗi
thiết bị kỹ thuật được quản lý bởi một kỹ thuật viên.
● Mỗi lịch chiếu có thể liên kết với một suất chiếu cụ thể và có
nhiều buổi chiếu -> LichChieu - SuatChieu là 1-n, với mỗi
suất chiếu được liên kết với một lịch chiếu cụ thể.
● Ngoài ra, thông tin Họ và tên có thể tách thành một lớp thực
thể riêng - HoTen, với các thuộc tính là Họ và Tên. Thông
tin địa chỉ cũng có thể tách thành một lớp thực thể riêng -
DiaChi, với các thuộc tính là Số nhà, Đường, Quận, Thành
phố. Các thông tin này có thể được sử dụng lại trong nhiều
đối tượng khác nhau mà không làm ảnh hưởng đến tính nhất
quán và dễ bảo trì của hệ thống.

Bước 5: Xác định quan hệ đối tượng giữa các thực thể

● Rạp chiếu phim là thành phần của Hệ thống Quản lý Rạp


Chiếu Phim
● Suất chiếu là thành phần của Rạp chiếu phim
● Vé đặt là thành phần của Suất chiếu
● Khách hàng là thành phần của Hệ thống Quản lý Rạp Chiếu
Phim
● Nhân viên rạp chiếu phim là thành phần của Hệ thống Quản
lý Rạp Chiếu Phim
● Quản lý rạp chiếu phim là thành phần của Nhân viên rạp
chiếu phim
● Kỹ thuật viên là thành phần của Nhân viên rạp chiếu phim
● Bộ phim là thành phần của Hệ thống Quản lý Rạp Chiếu
Phim
● Giá vé là thành phần của Hệ thống Quản lý Rạp Chiếu Phim
● Lịch chiếu là thành phần của Hệ thống Quản lý Rạp Chiếu
Phim
● Lịch chiếu liên kết với Suất chiếu và Bộ phim để tạo ra lịch
chiếu cụ thể
● DatVe là thành phần của Hệ thống Quản lý Rạp Chiếu Phim
● DatVe liên kết với Khách hàng và Suất chiếu để tạo ra giao
dịch đặt vé cụ thể
● Thông tin địa chỉ là thành phần của Khách hàng
● Thông tin họ và tên là thành phần của Khách hàng
● Lớp thống kê liên kết với các thực thể tương ứng để tạo ra
các báo cáo thống kê.
Kết quả thu được biểu đồ lớp thực thể pha phân tích toàn hệ thống như
trong hình.
IV. Biểu đồ lớp thực thể ở pha thiết kế

Bước 1:
Các lớp được bổ sung thuộc tính id: trừ các lớp thống kê (TK),
nhân viên, Rapchieuphim, Phim, Suatchieu, Nhanvien, NVQuanli,
NVBanve.

Bước 2:
Thuộc tính của các lớp được bổ sung theo kiểu của ngôn ngữ lập
trình Java.

Bước 3:
Quan hệ Nhanvien – Rapchieuphim -> NhanvienRapchieuphim
chuyển thành NhanvienRapchieuphim chứa Nhanvien và
Rapchieuphim.
Quan hệ Phim – Suatchieu -> PhimSuatchieu chuyển thành
PhimSuatchieu chứa Phim và Suatchieu.
Quan hệ Suatchieu – Rapchieuphim -> Chieuphim chuyển thành
Chieuphim chứa Suatchieu và Rapchieuphim.
Quan hệ Rapchieuphim – NVQuanli -> Quanli chuyển thành
Quanli chứa Rapchieuphim và NVQuanli.
Quan hệ Rapchieuphim – NVBanve -> Banve chuyển thành Banve
chứa Rapchieuphim và NVBanve.

Bước 4:
Bổ sung các thuộc tính thành phần của quan hệ hợp thành/gắn chặt,
ta thu được biểu đồ lớp thực thể pha thiết kế.

V. Thiết kế CSDL
Bước 1:
● Mỗi lớp thực thể đề xuất bảng tương ứng:
● Lớp RạpChiếu -> bảng tblRapChieu
● Lớp Phim -> bảng tblPhim
● Lớp SuatChieu -> bảng tblSuatChieu
● Lớp GheNgoi -> bảng tblGheNgoi
● Lớp KhachHang -> bảng tblKhachHang
● Lớp Ve -> bảng tblVe
● Lớp DatVe -> bảng tblDatVe
● Lớp NhanVien -> bảng tblNhanVien
● Lớp PhanHoi -> bảng tblPhanHoi
● Lớp DoanhThu -> bảng tblDoanhThu
● Lớp DienVien -> bảng tblDienVien
● Lớp HangPhim -> bảng tblHangPhim
● Lớp LoaiGhe -> bảng tblLoaiGhe
● Lớp PhongChieu -> bảng tblPhongChieu
● Lớp QuocGia -> bảng tblQuocGia
● Lớp DaoDien -> bảng tblDaoDien
● Lớp TheLoai -> bảng tblTheLoai
● Lớp LoaiVe -> bảng tblLoaiVe
● Lớp NguoiDung -> bảng tblNguoiDung
● Lớp HeThongRap -> bảng tblHeThongRap

Bước 2:
● Đưa thuộc tính không phải đối tượng của lớp thực thể thành thuộc
tính của bảng tương ứng:
● tblRapChieu có các thuộc tính: id, tên, địa chỉ
● tblPhim: id, tên, thể loại, đạo diễn
● tblSuatChieu: id, giờ chiếu, ngày chiếu
● tblGheNgoi: id, số ghế, trạng thái (đã đặt/chưa đặt)
● tblKhachHang: id, tên, email, số điện thoại
● tblVe: id, giá vé, loại vé
● tblDatVe: id, ngày đặt, trạng thái đặt vé
● tblNhanVien: id, tên, chức vụ
● tblPhanHoi: id, nội dung, ngày phản hồi
● tblDoanhThu: id, ngày, doanh thu
● tblDienVien: id, tên, ngày sinh, quốc tịch
● tblHangPhim: id, tên, địa chỉ
● tblLoaiGhe: id, tên, mô tả
● tblPhongChieu: id, tên, số ghế
● tblQuocGia: id, tên
● tblDaoDien: id, tên, ngày sinh, quốc tịch
● tblTheLoai: id, tên, mô tả
● tblLoaiVe: id, tên, giá vé
● tblNguoiDung: id, tên đăng nhập, mật khẩu
● tblHeThongRap: id, tên, số phòng chiếu

Bước 3:
Chuyển quan hệ số lượng giữa các lớp thực thể thành quan hệ số lượng
giữa các bảng:
● tblRapChieu – n tblPhim: Mỗi rạp chiếu có thể chiếu nhiều phim,
nhưng mỗi phim chỉ thuộc một rạp chiếu.
● tblRapChieu – n tblSuatChieu: Mỗi rạp chiếu có thể có nhiều suất
chiếu, nhưng mỗi suất chiếu thuộc một rạp chiếu.
● tblSuatChieu – n tblGheNgoi: Mỗi suất chiếu có nhiều ghế ngồi,
nhưng mỗi ghế ngồi chỉ thuộc một suất chiếu.
● tblPhim – n tblSuatChieu: Mỗi phim có thể được chiếu ở nhiều
suất, nhưng mỗi suất chiếu chỉ chiếu một phim.
● tblKhachHang – n tblVe: Mỗi khách hàng có thể mua nhiều vé,
nhưng mỗi vé chỉ thuộc một khách hàng.
● tblKhachHang – n tblDatVe: Mỗi khách hàng có thể đặt nhiều vé,
nhưng mỗi đặt vé chỉ thuộc một khách hàng.
● tblNhanVien – n tblDoanhThu: Mỗi nhân viên có thể ghi nhận
nhiều doanh thu, nhưng mỗi doanh thu chỉ do một nhân viên ghi
nhận.
● tblRapChieu – n tblPhanHoi: Mỗi rạp chiếu có thể nhận nhiều phản
hồi, nhưng mỗi phản hồi chỉ thuộc một rạp chiếu.
● tblSuatChieu – n tblDoanhThu: Mỗi suất chiếu có thể sinh ra nhiều
doanh thu, nhưng mỗi doanh thu chỉ thuộc một suất chiếu.
● tblPhim – n tblPhanHoi: Mỗi phim có thể nhận nhiều phản hồi,
nhưng mỗi phản hồi chỉ liên quan đến một phim.
● tblDienVien – n tblPhim: Mỗi diễn viên có thể tham gia nhiều
phim, nhưng mỗi phim chỉ có một đạo diễn.
● tblHangPhim – n tblPhim: Mỗi hãng phim có thể sản xuất nhiều
phim, nhưng mỗi phim chỉ thuộc một hãng phim.
● tblLoaiGhe – n tblGheNgoi: Mỗi loại ghế có thể có nhiều ghế ngồi,
nhưng mỗi ghế ngồi chỉ thuộc một loại ghế.
● tblPhongChieu – n tblGheNgoi: Mỗi phòng chiếu có thể có nhiều
ghế ngồi, nhưng mỗi ghế ngồi chỉ thuộc một phòng chiếu.
● tblQuocGia – n tblDaoDien: Mỗi quốc gia có thể có nhiều đạo
diễn, nhưng mỗi đạo diễn chỉ thuộc một quốc gia.
● tblTheLoai – n tblPhim: Mỗi thể loại có thể thuộc nhiều phim,
nhưng mỗi phim chỉ thuộc một thể loại.
● tblLoaiVe – n tblVe: Mỗi loại vé có thể được sử dụng cho nhiều
vé, nhưng mỗi vé chỉ thuộc một loại vé.
● tblNguoiDung – n tblDatVe: Mỗi người dùng có thể đặt nhiều vé,
nhưng mỗi đặt vé chỉ thuộc một người dùng.
● tblHeThongRap – n tblRapChieu: Mỗi hệ thống rạp có thể có nhiều
rạp chiếu, nhưng mỗi rạp chiếu chỉ thuộc một hệ thống rạp.
● tblNguoiDung – n tblPhanHoi: Mỗi người dùng có thể gửi nhiều
phản hồi, nhưng mỗi phản hồi chỉ thuộc một người dùng.

Bước 4:
Bổ sung các thuộc tính khóa. Khóa chính được thiết lập với thuộc tính id
của các bảng tương ứng, trừ các bảng tblVe và tblDatVe.
Khóa ngoại được thiết lập cho các bảng:
● tblRapChieu – n tblPhim -> Bảng tblPhim có khóa ngoại
tblRapChieuId
● tblRapChieu – n tblSuatChieu -> Bảng tblSuatChieu có khóa ngoại
tblRapChieuId
● tblSuatChieu – n tblGheNgoi -> Bảng tblGheNgoi có khóa ngoại
tblSuatChieuId
● tblKhachHang – n tblVe -> Bảng tblVe có khóa ngoại
tblKhachHangId
● tblKhachHang – n tblDatVe -> Bảng tblDatVe có khóa ngoại
tblKhachHangId
● tblNhanVien – n tblDoanhThu -> Bảng tblDoanhThu có khóa
ngoại tblNhanVienId
● tblRapChieu – n tblPhanHoi -> Bảng tblPhanHoi có khóa ngoại
tblRapChieuId
● tblSuatChieu – n tblDoanhThu -> Bảng tblDoanhThu có khóa
ngoại tblSuatChieuId
● tblPhim – n tblPhanHoi -> Bảng tblPhanHoi có khóa ngoại
tblPhimId
● tblDienVien – n tblPhim -> Bảng tblPhim có khóa ngoại
tblDienVienId
● tblHangPhim – n tblPhim -> Bảng tblPhim có khóa ngoại
tblHangPhimId
● tblLoaiGhe – n tblGheNgoi -> Bảng tblGheNgoi có khóa ngoại
tblLoaiGheId
● tblPhongChieu – n tblGheNgoi -> Bảng tblGheNgoi có khóa ngoại
tblPhongChieuId
● tblQuocGia – n tblDaoDien -> Bảng tblDaoDien có khóa ngoại
tblQuocGiaId
● tblTheLoai – n tblPhim -> Bảng tblPhim có khóa ngoại
tblTheLoaiId
● tblLoaiVe – n tblVe -> Bảng tblVe có khóa ngoại tblLoaiVeId
● tblNguoiDung – n tblDatVe -> Bảng tblDatVe có khóa ngoại
tblNguoiDungId
● tblHeThongRap – n tblRapChieu -> Bảng tblRapChieu có khóa
ngoại tblHeThongRapId
● tblNguoiDung – n tblPhanHoi -> Bảng tblPhanHoi có khóa ngoại
tblNguoiDungId
● tblNguoiDung – n tblVe -> Bảng tblVe có khóa ngoại
tblNguoiDungId

Bước 5:
● Các thuộc tính dẫn xuất:
● Thông tin điểm trung bình môn và điểm trung bình chữ trong
bảng tblDangkihoc.
● Tổng doanh thu từ việc tính tổng giá vé và doanh thu khác
trong bảng tblDoanhThu.
● Loại bỏ các bảng thống kê, như tblThongKeVe,
tblThongKeDatVe, tblThongKeDoanhThu, giữ lại các thông
tin dẫn xuất trong bảng tblDoanhThu.
● Tổng hợp số lượng vé đã đặt và đã mua trong bảng tblVe và
tblDatVe.
● Đưa ra thông tin về số lượng phản hồi và đánh giá từ khách
hàng trong bảng tblPhanHoi.
● Tính toán tổng số lượng ghế ngồi và số lượng ghế đã đặt
trong bảng tblGheNgoi.
● Tổng hợp thông tin về số lượng suất chiếu và các thông tin
liên quan từ bảng tblSuatChieu.
● Xác định số lượng phòng chiếu và các thông tin chi tiết từ
bảng tblPhongChieu.
● Thống kê thông tin về số lượng phim, đạo diễn, diễn viên,
thể loại từ các bảng liên quan như tblPhim, tblDienVien,
tblDaoDien, tblTheLoai.
● Tính tổng số lượng khách hàng và thông tin chi tiết từ bảng
tblKhachHang.
● Tổng hợp thông tin về các rạp chiếu và các thông tin chi tiết
từ bảng tblRapChieu.
● Xác định số lượng và thông tin chi tiết về các loại vé từ bảng
tblLoaiVe.
● Tổng hợp thông tin về các hãng phim và các thông tin chi
tiết từ bảng tblHangPhim.
● Xác định số lượng và thông tin chi tiết về quốc gia từ bảng
tblQuocGia.
● Tính tổng số lượng và thông tin chi tiết về các loại ghế từ
bảng tblLoaiGhe.
● Tổng hợp thông tin về đánh giá và phản hồi từ khách hàng từ
bảng tblPhanHoi.
● Xác định số lượng và thông tin chi tiết về đạo diễn từ bảng
tblDaoDien.
● Tổng hợp thông tin về các thể loại phim và các thông tin chi
tiết từ bảng tblTheLoai.
● Xác định số lượng và thông tin chi tiết về người dùng từ
bảng tblNguoiDung.
● Thống kê thông tin về các hệ thống rạp chiếu và các thông
tin chi tiết từ bảng tblHeThongRap.
B. PHẦN VIỆC TỪNG CÁ NHÂN
I. Sinh viên Vũ Anh Tuấn – UC : Khách hàng đặt
mua vé trực tuyến.
1. Đặc tả UC.
a. Hoạt động nghiệp vụ của UC:
- Khách hàng vào hệ thống => Giao diện trang
chủ hiện ra: có 1 chức năng đăng nhập.
- Khách hàng click đăng nhập => Giao diện
đăng nhập hiện ra có ô nhập username,
password và nút login.
- Khách hàng nhập username, password và
click login.
- Có 2 trường hợp xảy ra:

+ Nếu đăng nhập sai => Hệ thống thông


báo sai username hoặc password =>
Khách hàng click ok của thông báo =>
Hệ thống trở lại giao diện đăng nhập
chứa thông tin cũ.

+ Nếu đăng nhập đúng => Giao diện


chính của khách hàng hiện ra và có
chức năng đặt mua vé trực tuyến.

- Khách hàng click vào chức năng đặt mua vé


trực tuyến => Giao diện tìm kiếm suất chiếu
phim hiện ra:

+ Danh sách lựa chọn ngày chiếu(7


ngày tính từ ngày hiện tại)
+ Danh sách lựa chọn khung giờ
chiếu trong ngày
+ Danh sách lựa chọn các phim có
lịch chiếu đang chọn
+ Danh sách phòng chiếu có thông
tin đang chọn
- Khách hàng chọn 1 ngày. => Giao diện hiện
ra danh sách các khung giờ chiếu trong ngày
đang chọn.
- Khách hàng chọn 1 khung giờ chiếu => Giao
diện hiện ra danh sách các phim có lịch chiếu
đang chọn.
- Khách hàng chọn 1 phim => Giao diện hiện ra
danh sách phòng chiếu phù hợp với thông tin
đang chọn.
- Khách hàng click một phòng => Giao diện
chọn chỗ ngồi hiện ra bao gồm:
+ Bảng tất cả các chỗ ngồi của phòng vừa
chọn: mỗi ô tương ứng với một chỗ.
(khách hàng chỉ được chọn những chỗ
chưa được đặt).
+ Nút hủy.
+ Nút mua vé.
- Nếu khách hàng click hủy => Hệ thống trở lại
giao diện chọn phòng với các thông tin cũ.
- Nếu khách hàng chọn những chỗ còn trống và
click mua vé => Giao diện xác nhận mua vé
hiện ra với thông tin:
+ Danh sách các vé vừa chọn, mỗi vé một
dòng với thông tin: tên phim, ngày
chiếu, giờ chiếu, tên phòng chiếu, loại
phòng chiếu, mã chỗ ngồi, giá vé, nút
áp dụng quà tặng.
+ Một dòng ghi tổng số điểm thưởng tích
được (nếu có).
+ Một dòng ghi tổng số tiền giảm giá (nếu
có).
+ Dòng cuối ghi tổng số tiền cần thanh
toán.
+ Nút trở lại.
+ Nút thanh toán.
- Nếu khách hàng click trở lại => Hệ thống trở
lại giao diện chọn chỗ ngồi với các thông tin
cũ.
- Nếu khách hàng click áp dụng quà tặng của 1
vé => Giao diện lựa chọn quà tặng hiện ra có
thông tin:
+ Danh sách các quà tặng đang có của
khách hàng có điều kiện phù hợp với
thông tin khách hàng đã chọn.
+ Mỗi quà tặng ứng với một dòng với
thông tin: tên, chi tiết, điều kiện áp
dụng, hạn sử dụng.
+ Khách hàng chọn 1 quà tặng => Hệ
thống trở lại giao diện xác nhận mua vé
với cập nhật quà tặng vừa lựa chọn và
tổng tiền thanh toán.
+ Nếu khách hàng click thanh toán =>
Giao diện thanh toán hiện ra với thông
tin thanh toán (mã QR hoặc số tài
khoản ngân hàng), tổng số tiền.
- Khách hàng thực hiện thanh toán:
+ Nếu một trong các chỗ ngồi vừa chọn
đã được thanh toán bởi khách hàng
khác => Hệ thống thông báo chỗ ngồi
đã được đặt bởi khách hàng khác =>
Khách hàng click ok của thông báo =>
Hệ thống trở lại giao diện chọn chỗ
ngồi với các cập nhập về các chỗ ngồi
đã được đặt.
+ Nếu các chỗ ngồi vừa chọn chưa được
đặt bởi khách hàng khác => Hệ thống
thông báo thanh toán thành công và lưu
thông tin đặt vé vào cơ sở dữ liệu =>
Khách hàng click ok của thông báo =>
Hệ thống trở về giao diện chính của
khách hàng.

b. Biểu đồ UC chi tiết:


Use chi tiết của chức năng đặt mua vé trực tuyến.

Chức năng đặt mua vé trực tuyến có các giao diện tương tác với khách hàng:
+ Đăng nhập => Đề xuất usecase đăng nhập.
+ Tìm kiếm phim => Đề xuất usecase tìm kiếm phim.
+ Chọn phòng => Đề xuất usecase chọn phòng.
+ Chọn chỗ ngồi => Đề xuất usecase chọn chỗ ngồi.
+ Thanh toán => Đề xuất usecase thanh toán.
+ Tích điểm thưởng => Đề xuất usecase tích điểm thưởng.
+ Áp dụng quà tặng => Đề xuất usecase áp dụng quà tặng.
- Các usecase đăng nhập, tìm kiếm phim, chọn phòng, chọn chỗ ngồi,
thanh toán là bắt buộc mới hoàn thành được việc đặt mua vé trực tuyến
do đó usecase đặt mua vé trực tuyến include các usecase này.
- Các usecase áp dụng quà tặng, tích điểm thưởng là tùy chọn từ giao diện
thanh toán, nên usecase áp dụng quà tặng, tích điểm thưởng có quan hệ
mở rộng từ usecase thanh toán.
- Như vậy biểu đồ usecase chi tiết cho chức năng đặt mua vé trực tuyến
được trình bày trong hình trên. Các usecase được mô tả như sau:
+ Tìm kiếm phim: cho phép khách hàng tìm kiếm phim chiếu theo
ngày chiếu, giờ chiếu, tên phim.
+ Chọn phòng chiếu: cho phép khách hàng chọn phòng chiếu để tiến
hành mua vé.
+ Chọn chỗ ngồi: cho phép khách hàng chọn chỗ ngồi để tiến hành
mua vé.
+ Thanh toán: cho phép khách hàng áp dụng phần quà, tích điểm
thưởng và thanh toán các vé đã chọn.
c. Đặc tả UC

Scenari Chức năng đặt mua vé trực tuyến


o
Actor Khách hàng
Pre- Khách hàng đã có tài khoản
conditi
ons
Post Khách hàng đặt mua vé thành công
conditi
ons
Main 1. Khách hàng Trần Minh C truy cập vào hệ thống.
events 2. Giao diện chính của hệ thống hiện ra có ít nhất 1 chức năng

đăng nhập.
3. Khách hàng click đăng nhập.

4. Giao diện đăng nhập hiện ra có:

- 1 ô nhập username.
- 1 ô nhập password.
- 1 nút login.
5. Khách hàng nhập thông tín:

- Username = vat 123


- Password = ********
Và click login.
6. Giao diện chính của khách hàng hiện ra có 1 chức năng đặt
mua vé.
7. Khách hàng click đặt mua vé.

8. Giao diện lựa chọn suất chiếu hiện ra có:

- Danh sách lựa chọn lịch chiếu tính từ ngày hiện tại.(đang
chọn lịch đầu tiên ngày 24/09/2023 20:00)
- Danh sách phim có lịch chiếu 24/09/2023, khung giờ = 20:00
(đang chọn phim đầu tiên)
Mã Tên Đạo diễn Thời lượng
phim phim

MV01 Oppenheimer Chirstopher Nolan 180 phút


MV02 Joker Todd Phillips 121 phút
MV03 The Usual Suspect Bryan Singer 106 phút
- Danh sách phòng chiếu có lịch chiếu và phim đang chọn
Mã phòng Tên phòng Loại phòng Số ghế

R01 101 2D 84
R02 102 2D 84
- Nút/ link next
9. Khách hàng chọn dòng đầu tiên với thông tin mã phòng =

R01, tên phòng = 101, loại phòng = 2D, click next


10. Giao diện chọn vị trí ngồi hiện ra với thông tin:

- Thông tin xuất chiếu vừa chọn bao gồm: mã phim = MV01,
tên phim = Oppenheimer, đạo diễn = Christopher Nolan, thời
lượng = 180 phút, ngày chiếu = 24/09/2023, giờ chiếu = 20:00
- Thông tin phòng vừa chọn: mã phòng = R01, tên phòng =
101, loại phòng = 2D
- Bảng vị trí các chỗ ngồi của phòng đã chọn:

A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
E1 E2 E3 E4 E5 E6 E7 E8 E9 E10
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
G1 G2 G3 G4 G5 G6 G7 G8 G9 G10
- Nút/link trở lại
- Nút link mua vé
11. Khách hàng tích chọn 1 chỗ ngồi có vị trí D5 và click mua

vé.
12. Giao diện thanh toán hiện ra với thông tin:

- Tổng điểm thưởng: 1


- Tổng tiền: 125000
- Nút/link áp dụng quà tặng
- Nút/link trở lại
- Nút/link thanh toán
13. Khách hàng click thanh toán

14. Giao diện hiển thị chi tiết về số tài khoản ngân hàng hiện

lên:
- Ngân hàng: XYZ
- Chi nhánh: Hà Nội
- STK: 6811******
- Chủ tài khoản: CinemaABC
- Tổng số tiền: 125000
- Mã qr
15. Khách hàng thực hiện thanh toán

16. Hệ thống thông báo thanh toán thành công

17. Khách hàng click ok của thông báo

18. Hệ thống trở lại giao diện chính của khách hàng.

2. Phân tích UC
a. Phân tích lớp module
Bước 1: Giao diện trang chủ => Đề xuất Class Homeview, cần có
subLogin.
● Bước 2: Giao diện đăng nhập => Đề xuất Class LoginView, cần có:

inpUsername, inpPassword, subLogin


● Cần kiểm tra đăng nhập => Đề xuất phương thức login()

+ input: username, password (Member)


+ output: boolean
+ Gán cho Class Member
● Bước 3: Giao diện chính của khách hàng => đề xuất Class
ClientHomeView cần có: subBookingTicket, outUsername,
outFullname, outEmail
● Bước 4: Giao diện tìm kiếm suất chiếu => đề xuất Class
SearchShowTimeView, cần có outInpTimeSlot, outInpFilm,
outSubRoom
● Ban đầu, cần lấy danh sách lịch chiếu tính từ ngày, giờ hiện tại

=> đề xuất phương thức getShowTimeFromCurrentDate()


+ input: date
+ output: TimeSlot[]
+ Gán cho Class TimeSlot
● Ban đầu (hoặc sau khi chọn lịch chiếu) cần lấy danh sách phim

có lịch chiếu vừa chọn => đề xuất phương thức


getFilmHaveTimeSlot()
+ input: TimeSlot
+ output: Film[]
+ Gán cho Class Film
● Sau khi chọn 1 Film cần lấy danh sách suất chiếu gồm cả thông

tin Room => đề xuất phương thức getShowTimeWithRoom()


+ input: timeSlot, Film (ShowTime)
+ output: ShowTime[]
+ Gán cho Class ShowTime
● Bước 5: Sau khi click 1 ShowTime xuất hiện giao diện lựa chọn chỗ
ngồi => đề xuất Class SelectSeatView, cần có outInpAvailableSeat,
outBookedSeat, subBooking, subBack
● Cần lấy danh sách toàn bộ chỗ ngồi còn trống của suất chiếu =>

đề xuất phương thức getAvailableSeat()


+ input: ShowTime
+ output: Seat[]
+ Gán cho Class Seat
● Cần lấy danh sách các chỗ đã được đặt của suất chiếu => đề

xuất phương thức getBookedSeat()


+ input: ShowTime
+ output: Seat[]
+ Gán cho Class Seat
● Bước 6: Sau khi click subBooking, cần giao diện Thanh toán => Đề
xuất Class PaymentView: outListTicket, subApplyGift, outGift,
outTotalBonusPoint, subCancel, subPayment.
● Bước 7: Giao diện áp dụng quà tặng => đề xuất Class ApplyGiftView:
outSubGiftOfClient
● Cần danh sách quà tặng khách hàng đang có, có điều kiện áp

dụng phù hợp với vé, hóa đơn của khách hàng => Đề xuất
phương thức getGiftOfClient()
+ input: clientID, Bill (Bill)
+ output: RedemptionGift[]
+ Gán cho Class RedemptionGift
● Bước 8: Giao diện chi tiết thanh toán => Đề xuất Class
DetailPayment: outBank, outBankNumber, outTotal
● Thanh toán thành công, cần lưu thông tin về hóa đơn => Đề

xuất phương thức saveBill()


+ input: Bill
+ output: boolean
+ gán cho class Bill.

b. Phân tích hoạt động UC


1. Khách hàng truy cập vào hệ thống
2. Class HomeView hiển thị cho khách hàng
3. Khách hàng click login
4. Class HomeView gọi Class LoginView
5. Class LoginView hiển thị cho khách hàng
6. Khách hàng nhập username, password, click login
7. Class LoginView gọi Class Member
8. Class Member gọi phương thức login()
9. Class Member trả kết quả cho Class LoginView
10.Class LoginView gọi Class ClientHomeView
11.Class ClientHomeView hiển thị cho người dùng
12.Khách hàng click bookingTicket
13.Class ClientHomeView gọi Class SearchShowTimeView
14.Class SearchShowTimeView gọi Class TimeSlot
15.Class TimeSlot gọi phương thức getTimeSlotFromCurrentDate()
16.Class TimeSlot trả kết quả cho Class SearchShowTimeView
17.Class SearchShowTimeView gọi Class Film
18.Class Film gọi phương thức getFilmHaveTimeSlot()
19.Class Film trả kết quả cho Class SearchShowTimeView
20.Class SearchShowTimeView gọi Class ShowTime
21.Class ShowTime gọi phương thức getShowTimeWithRoom()
22.Class ShowTime trả kết quả cho Class SearchShowTimeView
23.Class SearchShowTimeView hiển thị cho khách hàng
24.Khách hàng chọn 1 ShowTime, click next
25.Class SearchShowTimeView gọi Class SelectSeatView
26.Class SelectSeatView gọi Class Seat
27.Class Seat gọi phương thức getAvailableSeat()
28.Class Seat trả kết quả cho Class SelectSeatView
29.Class SelectSeatView gọi Class Seat
30.Class Seat gọi phương thức getBookedSeat()
31.Class Seat trả kết quả cho Class SelectSeatView
32.Class SelectSeatView hiển thị cho khách hàng
33.Khách hàng chọn 1 seat và click booking
34.Class SelectSeatView gọi ClassPaymentView
35.Class PaymentView hiển thị cho khách hàng
36.Khách hàng click payment
37.Class PaymentView gọi Class DetailPaymentView
38.Class DetailPaymentView hiển thị cho khách hàng
39.Khách hàng thanh toán
40.Class DetailPaymentView gọi Class Bill
41.Class Bill gọi phương thức saveBill()
42.Class Bill trả kết quả cho Class DetailPaymentView
43.Class DetailPaymentView hiển thị thông báo thành công.

3. Thiết kế UC
a. Thiết kế giao diện và đề xuất các lớp (giao diện, lớp truy xuất dữ liệu)
Bước 1: Thiết kế giao diện

● Bước 2: Đề xuất các lớp giao diện tương ứng


- Tầng giao diện có các trang jsp: HomeView.jsp, LoginView.jsp,
doLogin.jsp, ClientHomeView.jsp, preSearch.jsp,
SearchShowTimeView.jsp, SelectSeatView.jsp, DetailPaymentView.jsp,
ApplyGiftView.jsp, doSaveBill.jsp
● Bước 3: Đề xuất các lớp truy xuất dữ liệu DAO.
- Tầng thao tác dữ liệu bao gồm: DAO, MemberDAO, FilmDAO,
TimeSlotDAO, ShowTimeDAO, SeatDAO, RedemptionGiftDAO,
BillDAO
- Tại trang doLogin.jsp cần kiểm tra đăng nhập
=> đề xuất hàm login()
+ input: username, password (Member)
+ output: boolean
+ Gán cho Class MemberDAO
- Tại trang preSearch.jsp cần lấy danh sách các TimeSlot tính từ ngày giờ
hiện tại
=> đề xuất hàm getTimeSlotFromCurrentDate()
+ input: date, time(Date)
+ output: List<TimeSlot>
+ Gán cho Class TimeSlotDAO
- Tại trang preSearch.jsp cần lấy danh sách các Film của một TimeSlot
=> đề xuất hàm getFilmHaveTimeSlot()
+ input: TimeSlot
+ output: List<Film>
+ Gán cho Class FilmDAO
- Tại trang preSearch.jsp cần lấy danh sách các ShowTime bao gồm cả
thông tin Room của một TimeSlot và một Film
=> đề xuất hàm getShowTimeWithRoom()
+ input: TimeSlot, Film
+ output: List<ShowTime>
+ Gán cho Class ShowTimeDAO
- Tại trang SelectSeatView.jsp cần lấy danh sách các Seat còn của một
ShowTime
=> đề xuất hàm getAvailableSeat()
+ input: ShowTime
+ output: List<Seat>
+ Gán cho Class SeatDAO
- Tại trang SelectSeatView.jsp cần lấy danh sách các Seat đã được đặt của
một ShowTime
=> đề xuất hàm getBookedSeat()
+ input: ShowTime
+ output: List<Seat>
+ Gán cho Class SeatDAO
- Tại trang ApplyGiftView.jsp cần lấy danh sách các RedemptionGift của
khách hàng
=> đề xuất hàm getGiftOfClient()
+ input: Bill
+ output: List<RedemptionGift>
+ Gán cho Class RedemptionGiftDAO
- Tại trang doSaveBill.jsp cần kiểm tra và lưu thông tin Bill
=> đề xuất hàm saveBill()
+ input: Bill
+ output: boolean
+ Gán cho Class BillDAO
● Bước 4: Bổ sung các lớp thực thể liên quan
b. Thiết kế động: kịch bản UC cuối và biểu đồ tuần tự cho từng modul.
1. Khách hàng truy cập vào hệ thống
2. Trang HomeView.jsp hiển thị cho khách hàng
3. Khách hàng click login
4. Trang HomeView.jsp gọi trang LoginView.jsp
5. Trang LoginView.jsp hiển thị cho khách hàng
6. Khách hàng nhập username, password và click login
7. Trang LoginView.jsp gọi trang doLogin.jsp
8. Trang doLogin.jsp gọi Class Member
9. Class Member gọi Member(), setUsername(), setPassword()
10.Class Member trả lại kết quả cho trang doLogin.jsp
11.Trang doLogin.jsp gọi Class MemberDAO
12.Class MemberDAO gọi phương thức login()
13.Class MemberDAO gọi class Member
14.Class Member gọi phương thức setID(), setFullname(), setDOB()
15.Class Member trả kết quả cho class MemberDAO
16.Class MemberDAO trả kết quả cho trang doLogin.jsp
17.Trang doLogin.jsp gọi trang ClientHomeView.jsp
18.Trang ClientHomeView.jsp hiển thị cho khách hàng
19.Khách hàng click bookingTicket
20.Trang ClientHomeView.jsp gọi trang preSearch.jsp
21.Trang preSearch.jsp gọi Class TimeSlotDAO
22.Class TimeSlotDAO gọi phương thức getTimeSlotFromCurrentDate()
23.Class TimeSlotDAO gọi Class TimeSlot
24.Class TimeSlot gọi TimeSlot(), setter()
25.Class TimeSlot trả lại kết quả cho Class TimeSlotDAO
26.Class TimeSlotDAO trả lại kết quả cho trang preSearch.jsp
27.Trang preSearch.jsp gọi class FilmDAO
28.Class FilmDAO gọi phương thức getFilmHaveTimeSlot()
29.Class FilmDAO gọi Class Film
30.Class Film gọi phương thức Film(), setter()
31.Class Film trả kết quả cho class FilmDAO
32.Class FilmDAO trả kết quả cho trang preSearch.jsp
33.Trang preSearch.jsp gọi Class ShowTimeDAO
34.Class ShowTimeDAO gọi phương thức getShowTimeWithRoom()
35.Class ShowTimeDAO gọi Class Room
36.Class Room gọi phương thức Room(), setter()
37.Class Room trả lại kết quả cho Class ShowTimeDAO
38.Class ShowTimeDAO gọi class ShowTime
39.Class ShowTime gọi phương thức ShowTime(), setRoom(), setFilm(),
setTimeSlot()
40.Class ShowTime trả lại kết quả cho Class ShowTimeDAO
41.Class ShowTimeDAO trả lại kết quả cho trang preSearch.jsp
42.Trang preSearch.jsp gọi trang SearchShowTimeView.jsp
43.Trang SearchShowTimeView.jsp hiển thị cho khách hàng
44.Khách hàng chọn một ShowTime và click next
45.Trang SearchShowTimeView.jsp gọi trang SelectSeatView.jsp
46.Trang SelectSeatView.jsp gọi Class SeatDAO
47.Class SeatDAO gọi phương thức getAvailableSeat()
48.Class SeatDAO gọi Class Seat
49.Class Seat gọi Seat(), setter()
50.Class Seat trả kết quả cho SeatDAO
51.Class SeatDAO trả kết quả cho trang SelectSeatView.jsp
52.Trang SelectSeatView.jsp gọi Class SeatDAO
53.Class SeatDAO gọi phương thức getBookedSeat()
54.Class SeatDAO gọi class Seat
55.Class Seat gọi Seat(), setter(0
56.Class Seat trả kết quả cho class SeatDAO
57.Class SeatDAo trả kết quả cho trang SelectSeatView.jsp
58.Trang SelectSeatView.jsp hiển thị cho khách hàng
59.Khách hàng click chọn Seat còn trống và click booking
60.Trang SelectSeatView.jsp gọi Class Ticket
61.Class Ticket gọi Ticket(), setSeat(), setShowTime()
62.Class Ticket trả kết quả cho trang SelectSeatView.jsp
63.Trang SelectSeatView.jsp gọi Class Bill
64.Class Bill gọi Bill(), setListTicket(), setMember()
65.Class Bill trả kết quả cho trang SelectSeatView.jsp
66.Trang SelectSeatView.jsp gọi trang PaymentView.jsp
67.Trang PaymentView.jsp hiển thị cho khách hàng
68.Khách hàng click booking
69.Trang PaymentView.jsp gọi trang DetailPaymentView.jsp
70.Trang DetailPaymentView.jsp hiển thị cho khách hàng
71.Khách hàng thực hiện thanh toán thành công
72.Trang DetailPaymentView.jsp gọi trang doSaveBill.jsp
73.Trang doSaveBill.jsp gọi Class BillDAO
74.Class BillDAO gọi phương thức saveBill()
75.Class BillDAO trả kết quả cho trang doSaveBill.jsp
76.Trang doSaveBill.jsp hiển thị thông báo thành công
77.Khách hàng click ok
78.Trang doSaveBill.jsp gọi trang ClientHomeView.jsp
79.Trang ClientHomeView.jsp hiển thị cho khách hàng.

II. Sinh viên Nguyễn Văn Tú – UC : Khách hàng đổi điểm


thưởng lấy quà tặng/vé.
1. Đặc tả UC.
a. Hoạt động nghiệp vụ của UC:
Khách hàng vào hệ thống => Giao diện trang chủ hiện ra: có 1
chức năng đăng nhập.
- Khách hàng click đăng nhập => Giao diện đăng nhập hiện ra có ô
nhập username, password và nút login.
- Khách hàng nhập username, password và click login.
+ Nếu đăng nhập sai => Hệ thống thông báo sai username
hoặc password => Khách hàng click ok của thông báo => Hệ
thống trở lại giao diện đăng nhập chứa thông tin cũ.
+ Nếu đăng nhập đúng => Giao diện chính của khách hàng
hiện ra: có chức năng đổi điểm thưởng.
- Khách hàng click đổi điểm thưởng => Giao diện lựa chọn phần quà
hiện ra với thông tin:
+ Điểm thưởng hiện có của khách hàng.
+ Bảng danh sách các quà tặng. Mỗi quà tặng tương ứng với
một dòng có các thông tin mã, tên, điều kiện áp dụng, số
điểm cần để đổi.
- Khách hàng click vào đổi quà trên một dòng:
+ Nếu tổng điểm thưởng của khách hàng đang có nhỏ hơn tổng
số điểm thưởng cần để đổi quà => Hệ thống thông báo
không đủ điều kiện đổi quà => Khách hàng click ok của
thông báo => Hệ thống trở lại giao diện đổi quà.
+ Nếu tổng điểm thưởng của khách hàng đang có lớn hơn hoặc
bằng tổng số điểm thưởng cần để đổi quà => Hệ thống thông
báo thành công và lưu thông tin phần quà vào cơ sở dữ liệu
=> Khách hàng click ok của thông báo thành công => Hệ
thống trở về giao diện đổi quà.

b. Biểu đồ UC chi tiết:


Use chi tiết của chức năng Khách hàng đổi điểm thưởng lấy
quà tặng/vé.
Ch
ức năng đổi điểm thưởng có các giao diện tương tác với khách hàng:
+ Đăng nhập => Đề xuất usecase đăng nhập
+ Chọn phần quà => Đề xuất usecase chọn phần quà
- Chọn phần quà là bắt buộc mới hoàn thành được việc đổi điểm thưởng
nên usecase đổi điểm thưởng include usecase này.
- Như vậy biểu đồ usecase chi tiết cho chức năng đổi điểm thưởng được
trình bày trong hình trên.

c. Đặc tả UC

Scenario Đổi điểm thưởng lấy quà trực tuyến


Actor Khách hàng
Pre- Khách hàng đã có tài khoản của mình
condition
Post Khách hàng đổi điểm thưởng lấy quà thành công
condition
Main event 1. Khách hàng Trần Minh C truy cập vào hệ thống.
2. Giao diện đăng nhập hiện lên có

- 1 ô nhập username
- 1 ô nhập password
- 1 nút login
3. Khách hàng nhập thông tin

- Username = tmc123
- Password = ********
Và click login
4. Giao diện chính của khách hàng hiện lên, có ít nhất 1 chức năng

đổi quà.
5. Khách hàng click đổi quà

6. Giao diện đổi quà hiện lên có thông tin:

- Thông tin khách hàng: username = nvt123, họ và tên = C, email =


nvt@xx.com, số điện thoại = 0393333333, địa chỉ = Hà Nội, tổng
điểm đang có = 9.
- Danh sách các quà tặng
Mã quà Tên quà Giá trị Điều Điểm cần Nhập số lượng Thêm
kiện áp đổi
dụng
GF01 Voucher 100% 2D 10 [Text Box]
100% vé thường
2D thường
GF02 Voucher 50% 3D 6 [Text Box]
50% vé 3D thường
thường

GF03 Voucher 50% Hóa đơn 5 [Text Box]


20% tổng
hóa đơn
GF04 1 bỏng ngô 80000 Hóa đơn 5 [Text Box]

- Danh sách quà đang chọn(hiện trống)


Mã quà Tên quà Loại quà Điều kiệnĐiểm Số lượngTổng Delete
áp dụng cần đổi điểm
cần
- Tổng điểm cần
- Nút đổi quà
7. Khách hàng nhập số lượng = 1, click thêm tại dòng số 2 với mã
quà = GF02, tên quà = Voucher 50% vé 3D thường
8. Hệ thống cập nhật quà vừa thêm vào danh sách đang chọn trên

giao diện
- Thông tin khách hàng: username = tmc123, họ và tên = C, email
= tmc@xx.com, số điện thoại = 0393333333, địa chỉ = Hà Nội,
tổng điểm đang có = 9.
- Danh sách các quà tặng
Mã quà Tên quà Loại quà Giá trị Điều kiện Điểm Nhập số Thêm
áp dụng cần đổi lượng
GF01 Voucher Voucher 100 2D thường 10 [Text
100% vé % Box]
2D
thường
GF02 Voucher Voucher 50 3D thường 6 [Text
50% vé % Box]
3D
thường
GF03 Voucher Voucher 50 Hóa đơn 5 [Text
20% tổng % Box]
hóa đơn
GF04 1 bỏngHiện vật 800 Hóa 5 [Text
ngô 00 đơn Box]
- Danh sách quà đang chọn
Mã quà Tên quà Loại quà Điều kiện Điể Số lượng Tổng điểmDelete
áp dụng m cần
cần
đổi
GF02 Voucher Voucher 3D 6 1 6 delete
50% vé thường
3D
thường
- Tổng điểm cần: 6
- Nút đổi quà
9. Khách hàng click đổi quà

10. Hệ thống hiển thị thông báo đổi quà thành công

11. Khách hàng click ok

12. Hệ thống trở lại giao diện chính của khách hàng.

2. Phân tích UC
a. Phân tích lớp module.
Bước 1: Giao diện trang chủ => Class HomeView với thuộc tính
subLogin
● Bước 2: Giao diện đăng nhập => Class LoginView bao gồm

inpUsername, inpPassword, subLogin


● Cần kiểm tra đăng nhập => đề xuất phương thức login()

+ input: username, password (Member)


+ output: boolean
+ gán cho class Member
● Bước 3: Giao diện chính của khách hàng => Class

ClientHomeView vơi thuộc tính subRedemptionGift,


outUsername, outFullname, outEmail
● Bước 4: Giao diện đổi quà => Class RedemptionGiftView với

các thành phần outUsername, outFullname, outBonusPoint,


outInpListGift, outInpAddedGift, subRedemption
● Cần lấy danh sách quà tặng => đề xuất phương thức getGift()

+ input: không có
+ output: Gift[]
+ gán cho class Gift[]
● Khi click đổi quà cần kiểm tra điểm thưởng và lưu quà tặng =>

đề xuất phương thức saveRedemptionBill()


+ input: RedemptionBill
+ output: boolean
+ Gán cho class RedemtionBill.
b. Phân tích hoạt động UC
1. Khách hàng truy cập vào hệ thống
2. Class HomeView hiển thị cho khách hàng
3. Khách hàng click login
4. Class HomeView gọi Class LoginView
5. Class LoginView hiển thị cho khách hàng
6. Khách hàng nhập username, password, click login
7. Class LoginView gọi Class Member
8. Class Member gọi phương thức login()
9. Class Member trả kết quả cho Class LoginView
10.Class LoginView gọi Class ClientHomeView
11.Class ClientHomeView hiển thị cho khách hàng
12.Khách hàng click redemptionGift
13.Class ClientHomeView gọi Class RedemptionGiftView
14.Class RedemptionGiftView gọi Class Gift
15.Class Gift gọi phương thức getGift()
16.Class Gift trả kết quả cho Class RedemptionGiftView
17.Class RedemptionGiftView hiển thị cho khách hàng
18.Khách hàng nhập số lượng, click thêm tại một dòng, click đổi quà
19.Class RedemptionGiftView gọi Class RedemptionBill
20.Class RedemptionBill gọi phương thức saveRedemptionBill()
21.Class RedemptionBill trả kết quả cho Class RedemptionGiftView
22.Class RedemptionGiftView hiển thị thông báo thành công.

3. Thiết kế UC
a. Thiết kế giao diện và đề xuất các lớp (giao diện, lớp truy xuất dữ liệu)
Bước 1: Thiết kế giao diện
● Bước 2: Đề xuất các lớp giao diện tương ứng
- Tầng giao diện bao gồm các trang jsp: HomeView.jsp, LoginView.jsp,
doLogin.jsp, ClientHomeView.jsp, RedemptionGiftView.jsp, AddGift.jsp,
DeleteGift.jsp, doSaveRedemptionBill.jsp
● Bước 3: Đề xuất các lớp truy xuất dữ liệu DAO
- Tầng truy xuất dữ liệu bao gồm các lớp: DAO, MemberDAO, GiftDAO,
RedemptionBillDAO
- Tại trang doLogin.jsp cần kiểm tra thông tin đăng nhập
=> đề xuất hàm login()
+ input: Member
+ output: boolean
+ Gán cho Class MemberDAO
- Tại trang RedemptionGiftView.jsp cần lấy danh sách các Gift
=> đề xuất hàm getGift()
+ input:
+ output: List<Gift>
+ Gán cho Class GiftDAO
- Tại trang doSaveRedemptionBill.jsp cần kiểm tra và lưu thông tin
RedemptionBill
=> đề xuất hàm saveRedemptionBill()
+ input: RedemptionBill
+ output: boolean
+ Gán cho Class RedemptionBillDAO
● Bước 4: Bổ sung các lớp thực thể liên quan

b. Thiết kế động: kịch bản UC cuối và biểu đồ tuần tự cho từng modul.
1. Khách hàng truy cập vào hệ thống
2. Trang HomeView.jsp hiển thị cho khách hàng
3. Khách hàng click login
4. Trang HomeView.jsp gọi trang LoginView.jsp
5. Trang LoginView.jsp hiển thị cho khách hàng
6. Khách hàng nhập username, password và click login
7. Trang LoginView.jsp gọi trang doLogin.jsp
8. Trang doLogin.jsp gọi Class Member
9. Class Member gọi Member(), setUsername(), setPassword()
10.Class Member trả lại kết quả cho trang doLogin.jsp
11.Trang doLogin.jsp gọi Class MemberDAO
12.Class MemberDAO gọi phương thức login()
13.Class MemberDAO gọi Class Member
14.Class Member gọi phương thức setID(), setFullname(), setDOB()
15.Class Member trả kết quả cho trang MemberDAO
16.MemberDAO trả kết quả cho trang doLogin.jsp
17.Trang doLogin.jsp gọi trang ClientHomeView.jsp
18.Trang ClientHomeView.jsp hiển thị cho khách hàng
19.Khách hàng click redemptionGift
20.Trang ClientHomeView.jsp gọi trang RedemptionGiftView.jsp
21.Trang RedemptionGiftView.jsp gọi Class RedemptionBill
22.Class RedemptionBill gọi RedemptionBill()
23.Class RedemptionBill trả kết quả cho trang RedemptionGiftView.jsp
24.Trang RedemptionGiftView.jsp gọi Class GiftDAO
25.Class GiftDAO gọi phương thức getGift()
26.Class GiftDAO gọi Class Gift
27.Class Gift gọi Gift(), setter()
28.Class Gift trả kết quả cho Class GiftDAO
29.Class GiftDAO trả kết quả cho trang RedemptionGiftView.jsp
30.Trang RedemptionGiftView.jsp hiển thị cho khách hàng
31.Khách hàng nhập số lượng, click add
32.Trang RedemptionGiftView.jsp gọi trang AddGift.jsp
33.Trang AddGift.jsp gọi Class RedemptionGift
34.Class RedemptionGift gọi RedemptionGift(), setGift()
35.Class RedemptionGift trả kết quả cho trang AddGift.jsp
36.Trang AddGift.jsp gọi Class RedemptionBill
37.Class RedemptionBill gọi setListRedemptionGift()
38.Class RedemptionBill trả kết quả cho trang AddGift.jsp
39.Trang AddGift.jsp gọi trang RedemptionGiftView.jsp
40.Trang RedemptionGiftView.jsp hiển thị cho khách hàng
41.Khách hàng click redemption
42.Trang RedemptionGiftView.jsp gọi trang doSaveRedemptionBill.jsp
43.Trang doSaveRedemptionBill.jsp gọi Class RedemptionBillDAO
44.Class RedemptionBillDAO gọi saveRedemptionBill()
45.Class RedemptionBillDAO trả kết quả cho doSaveRedemptionBill.jsp
46.Trang doSaveRedemptionBill.jsp hiển thị thông báo thành công
47.Khách hàng click ok
48.Trang doSaveRedemptionBill.jsp gọi trang ClientHomeView.jsp
49.Trang ClientHomeView.jsp hiển thị cho khách hàng

III. Sinh viên Hoàng Đức Thắng – UC : Khách hàng hoàn trả vé
1. Đặc tả UC
a. Hoạt động nghiệp vụ của UC:
Khách hàng huỷ vé đã đặt:
- Khách hàng truy nhập vào hệ thống và thực hiện đăng
nhập:
- Chọn Trả vé xem phim -> Hệ thống hiện ra các suất chiếu
mà khách hàng đã đặt (đã đặt ít nhất một vé)
- Trên mỗi suất chiếu có nút huỷ suất chiếu và huỷ vé chiếu
(Các suất chiếu phân biệt với nhau bằng tên phim và thời
gian chiếu)
- Nếu khách hàng muốn huỷ toàn bộ suất chiếu đã đặt ->
Khách hàng chọn huỷ suất chiếu -> Giao diện xác nhận
huỷ hiện ra với thông tin (mã suất chiếu, tên phim, thời
gian chiếu, tổng số tiền đã thanh toán và số tiền hoàn lại) -
> Khách hàng ấn huỷ -> hệ thống báo thành công và trở về
trang hiển thị suất chiếu:
+ Chỉ active những xuất chiếu thoả mãn điều kiện:
Thời gian hiện tại khi khách hàng bấm huỷ và thời
gian chiếu phim cách nhau 2 tiếng trở lên kể từ lúc
đặt vé.
+ Mỗi lần sẽ chỉ được thao tác huỷ với một xuất chiếu.
Sau khi hoàn thành các thao tác để huỷ đối với một
xuất chiếu mới có thể thực hiện lần huỷ tiếp theo cho
những xuất chiếu khác (nếu có)
- Nếu khách hàng chọn huỷ vé chiếu -> Giao diện hiện ra
danh sách các vé trong suất chiếu mà khách hàng đã đặt
(thông tin chi tiết của các vé xuất hiện và combo bỏng
nước đã order cho xuất chiếu) , tổng số điểm thưởng ,tổng
số tiền đã thanh toán , phương thức thanh toán) kèm các ô
tích chọn tương ứng -> thực hiện tích chọn các vé muốn
huỷ -> Khách hàng chọn xác nhận huỷ
- Khách hàng sau khi xác nhận lại thông tin sẽ chọn xác
nhận huỷ -> Giao diện xác nhận xuất hiện gồm tổng tiền
đã thanh toán, số vé đã huỷ (Khác với suất chiếu các vé đã
huỷ có thể đặt lại ), số tiền hoàn lại dựa trên số vé đã huỷ
và thời gian huỷ vé (Nếu thời gian huỷ càng sát giờ chiếu
thì số tiền hoàn lại sẽ giảm theo), Số điểm tích luỹ sẽ bị trừ
đi do huỷ vé và phải chịu thêm điểm phạt.
- Khách hàng chọn huỷ -> Hệ thống báo thực hiện huỷ
thành công -> Trở lại giao diện hiển thị các suất chiếu sau
khi đã huỷ (Số tiền hoàn lại sẽ được chuyển vào ví của
khách hàng trên hệ thống quản lý rạp phim).
b. Biếu đồ use-case chi tiết huỷ vé:

Chức năng huỷ vé có các giao diện tương tác với khách
hàng:
- Đăng nhập -> đề xuất UC Đăng nhập
- Huỷ vé xem phim -> Đề xuất UC huỷ vé xem phim
- Huỷ suất chiếu -> Đề xuất UC huỷ suất chiếu
- Huỷ các vé trong suất chiếu -> Đề xuất UC huỷ các
vé xem phim trong các suất chiếu
- Sau khi huỷ hệ thống thực hiện thanh toán bằng hình
thức hoàn tiền vào ví của khác hàng trên hệ thống ->
Đề xuất UC Thanh toán
c. Đặc tả use-case
Use Huỷ vé xem phim
case
Actor Khách hàng
Tiền Khách hàng thực hiện đăng nhập thành công, và thời điểm
điều huỷ vé và thời điểm chiếu phim cách nhau trên 2h
kiện
Hậu Khách hàng đã huỷ thành công vé xem phim trong suất
điều chiếu hoặc toàn bộ suất chiếu đã đặt
kiện
Kịch 1. Khách hàng thực hiện đăng nhập vào hệ thống, Sau
bản đó chọn huỷ vé
chính 2. Danh sách các suất chiếu đã đặt hiện lên với thông tin
mỗi suất chiếu và 2 nút huỷ suất chiếu và huỷ vé
trong suất chiếu , ô tìm kiếm suất chiếu theo tên phim
hoặc thời gian chiếu
3.

4. Nếu trạng thái suất chiếu là đã đặt (tức trong suất


chiếu có ít nhất một vé đã đặt) thì sẽ có 2 nút bấm
Huỷ suất chiếu và huỷ vé.
- Nếu khách hàng chọn huỷ suất chiếu, Giao diện huỷ
suất chiếu hiện ra : gồm
+ Mã suất chiếu
+ Tên phim
+ Thời gian chiếu
+ Trạng thái
+ Số tiền được hoàn lại
+ Số điểm thưởng bị trừ
+ Nút xác nhận huỷ suất chiếu
- Khách hàng chọn xác nhận huỷ suất chiếu
- Hệ thống báo huỷ suất chiếu thành công và quay lại
trang hiển thị danh sách các suất chiếu
- Nếu khách hàng chọn huỷ vé , Giao diện hiện danh
sách các vé hiện ra với thông tin chi tiết các vé:
+ Ô tìm kiếm theo mã vé, phòng
+ nút tìm kiếm

+ Số lượng suất bỏng ngô và nước (Nếu có)


+ Tổng số tiền đã thanh toán
+ Phương thức thanh toán (Qua ví , tài khoản
ngân hàng)
+ Nút xác nhận huỷ vé
- Sau khi khách hàng tích chọn huỷ một vé
- Giao diện sẽ hiện ra danh sách các vé đã được chọn:

+ Nút xác nhận huỷ


- Khách hàng ấn xác nhận huỷ giao diện xác nhận huỷ
hiện ra:
+ Tổng số vé đã chọn huỷ
+ Số tiền dự kiến hoàn lại
+ Phương pháp hoàn tiền : Qua thẻ ngân hàng, ví
trên hệ thống
+ Nút Huỷ vé
- Khách hàng chọn Huỷ vé, Hệ thống thông báo thành
công và quay lại bước 2 để tiếp tục thực hiện huỷ
5. Ở bước 4 nếu trạng thái suất chiếu là đã huỷ khách
hàng có thể đặt lại
6. Hệ thống sẽ di chuyển đến giao diện đặt vé cho khách
trong suất đã bị huỷ
Ngoại 2.
lệ + Không có suất chiếu nào đã đặt
+ Thời điểm huỷ đã nhỏ hơn hoặc bằng 2h trước khi
phim chiếu

2. Phân tích UC
a. Phân tích lớp module
- Bắt đầu, sau khi thực hiện đăng nhập giao diện chính sẽ hiện ra
đề xuất lớp ClientHomeView có các thành phần:
+ nút Huỷ vé: kiểu submit
- (*)Sau khi khách hàng chọn nút Huỷ vé, Giao diện huỷ suất
chiếu hiện ra đề xuất lớp SuatChieuOrderView gồm các thành
phần:
+ ô nhập dữ liệu tìm kiếm: kiểu input
+ nut tìm kiếm: kiểu submit
+ nút huỷ suất chiếu: kiểu submit
+ nút huỷ vé: kiểu submit
+ nút đặt lại (Nếu Suất đã bị huỷ): kiểu submitk
+ chọn suất chiếu để huỷ (huỷ toàn bộ hoặc chỉ huỷ một vài
vé trong suất chiếu)
- Để hiển thị danh sách các suất chiếu khách hàng đã đặt ở (*),
cần xử lý dưới hệ thống:
+ Tìm các suất chiếu đã đặt
+ input: khách hàng
+ output: danh sách suất chiếu
+ cần phương thức để lấy các suất chiếu khách hàng đã đặt:
đề xuất phương thức getSuatChieuOrderKH() gán cho lớp
SuatChieuOrder.
- (**)Nếu khách hàng chọn nút Huỷ suất chiếu -> giao diện huỷ
suất chiếu hiện ra đề xuất lớp XacNhanHuySuatChieuView
gồm các thành phần:
+ Tên phim, thời gian chiếu, bỏng , nước: output.
+ Tổng số vé đã đặt trong suất chiếu, Tổng giá tiền đã thanh
toán cho suất chiếu, Số tiền bị trừ, Số tiền được hoàn lại :
output.
+ Nút Quay lại giao diện hiển thị suất chiếu: kiểu submit.
+ Nút Xác nhận huỷ suất chiếu: kiểu submit.
- Để hiến thị thông tin ở (**) , cần xử lí dưới hệ thống:
+ input:không có
+ output:
● Hiển thị tên phim và thời gian chiếu : đề xuất phương
thức getTenPhimTime() gán cho lớp SuatChieuPhim
● Hiển thị tổng số vé đã đặt trong suất chiếu: đề xuất
phương thức getTongVeTrongSuat() gán cho lớp
Order
● Hiển thị tổng giá tiền đã thanh toán -> đề xuất lớp
getTongThanhToanSuat() gán cho lớp Order
- Sau khi ấn Xác nhận huỷ suất chiếu, Hệ thống thông báo huỷ
thành công Đề xuất giao diện HuySuatChieuThanhCongView
- Ở bước (*) Nếu Khách hàng chọn nút huỷ vé -> Giao diện hiện
ra danh sách các vé đã đặt của khách hàng trong suất chiếu đó ->
(***)Đề xuất lớp HuyVeView có các thành phần:
+ Danh sách các vé đã đặt: output, tích chọn
+ Tên phim , thời gian chiếu: output
+ input tìm kiếm: kiểu input
+ nút tìm kiếm vé: kiểu submit
+ Tổng số tiền đã thanh toán và phương thức thanh toán
+ nút xác nhận huỷ vé: kiểu submit
- Khi khách hàng tích chọn một lần hệ thống sẽ hiển thị danh sách
các vé đã tích chọn đề xuất lớp TichChonHuyVeView có các
thành phần:
+ Danh sách các vé đã tích chọn để huỷ: output, submit
+ Tổng các vé đã tích chọn
- Để có giao diện ở (***) cần xử lí dưới hệ thống:
+ input: khách hàng, Suất chiếu
+ output: Hiển thị danh sách các vé và thông tin trên mỗi vé
(Phòng, chỗ ngồi, giá vé) đã đặt.
+ Đề xuất phương thức getListVeBySuatOrder() gán cho lớp
SuatChieuVe
- Khách hàng bấm nút xác nhận huỷ các vé đã tích chọn.
- Hệ thống hiển thị giao diện xác nhận huỷ vé -> Đề xuất lớp
XacNhanHuyVeView có các thành phần:
+ Các mã vé tích đã chọn để huỷ
+ Số tiền hoàn lại
+ Số điểm thưởng bị trừ
+ nút Huỷ, nút quay lại: kiểu submit
- Khách hàng nhấn nút Huỷ -> Hệ thống hiển thị giao diện huỷ
thành công tương tự như huỷ suất chiếu.

Kết quả thu được biểu đồ lớp cho modul Huỷ vé xem phim trong
hình:

b. Phân tích hoạt động UC


- Kịch bản v.2 cho module huỷ vé xem phim:
1. Khách hàng truy cập vào Giao diện HomeView
2. Lớp HomeView hiển thị cho khách hàng
3. khách hàng chọn đăng nhập
4. Lớp HomeView gọi lớp LoginView
5. Lớp LoginView hiển thị cho khách hàng
6. Khách hàng nhập username, password và thực hiện đăng nhập
7. Lớp LoginView gọi lớp ClientHomeView
8. Lớp ClientHomeView hiển thị cho khách hàng
9. Khách hàng chọn chức năng Huỷ vé xem phim
10. Lớp ClientHomeView gọi lớp SuatChieuOrderView
11. Lớp SuatChieuOrderView gọi lớp Order tìm các suất chiếu
đã đặt của khách hàng
12. Lớp Order tìm danh sách các suất chiếu đã đặt của khách
hàng
13. Lớp Order trả kết quả cho lớp SuatChieuOrderView
14. Lớp SuatChieuOrderView hiển thị cho khách hàng
15. Khách hàng ấn huỷ Suất chiếu
16. Lớp SuatChieuOrderView gọi lớp
XacNhanHuySuatChieuView
17. Lớp XacNhanHuySuatChieuView hiển thị thông tin cho
khách hàng
18. Khách hàng chọn Xác nhận huỷ
19. Lớp XacNhanHuySuatChieuView gọi lớp Order để cập
nhật trạng thái đặt vé của khách hàng
20. Lớp Order cập nhật trạng thái
21. Lớp Order trả thông tin cho lớp
XacNhanHuySuatChieuView
22. Lớp XacNhanHuySuatChieuView hiển thị huỷ thành công
cho khách hàng
23. Ở bước 5 Nếu khách hàng chọn Huỷ vé
24. Lớp SuatChieuOrderView gọi lớp HuyVeView
25. Lớp HuyVeView gọi lớp Order để tìm danh sách vé
26. Lớp Order tìm thông tin các vé đã đặt trong suất chiếu
27. Lớp Order trả kết quả cho lớp HuyVeView
28. Lớp HuyVeView hiển thị cho khách hàng
29. Khách hàng thực hiện tích chọn các vé muốn huỷ
30. Khách hàng ấn Xác nhận Huỷ
31. Lớp HuyVeView gọi lớp XacNhanHuyVeView
32. Lớp XacNhanHuyVeView hiển thị thông tin cho khách
hàng
33. Khách hàng chọn nút Huỷ vé
34. Lớp XacNhanHuyVeView gọi lớp Order
35. Lớp Order cập nhật trạng thái vé
36. Lớp Order trả lại cho lớp XacNhanHuyVeView
37. Lớp XacNhanHuyVeView hiển thị thông báo huỷ thành
công với khách hàng
Biểu đồ giao tiếp:

3. Thiết kế Use-case
a. Thiết kế giao diện và đề xuất các lớp (giao diện, lớp truy
xuất dữ liệu )
Bước 1: Thiết kế giao diện
Bước 2: Đề xuất các lớp giao diện
Tầng giao diện gồm các lớp: HomeView, LoginView.jsp,
ClientHomeView.jsp, SuatChieuOrderView.jsp,
XacNhanHuySuatChieuView.jsp,
HuySuatChieuThanhCongView.jsp, HuyVeView.jsp,
TichChonHuyVeView.jsp, XacNhanHuyVeView.jsp,
CapNhatTrangThai.jsp
Bước 3: Đề xuất các lớp truy xuất dữ liệu (DAO)
Tầng thao tác với dữ liệu có các lớp DAO MemberDAO,
OrderDAO, ClientDAO, SuatChieuVeDAO
- Tại trang LoginView.jsp: Đề xuất phương thức login()
+ input: Member
+ output: boolean
+ gán cho MemberDAO
- tại trang SuatChieuOrderView.jsp: đề xuất phương thức
getSuatChieuByKH()
+ input: Client
+ output: List<SuatChieu>
+ gán cho lớp OrderDAO
- Tại trang XacNhanHuySuatChieuView.jsp:
● Đề xuất phương thức saveStateSuatChieu() cập nhất trạng thái
huỷ của suất chiếu,
+ input: SuatChieu
+ output:
+ gán cho lớp OrderDAO
● Đề xuất thêm phương thức TruBonusPoint() để trừ điểm thưởng
của khách hàng
+ input: Client
+ output:
+ gán cho lớp ClientDAO

- tại trang HuyVeView.jsp : đề xuất phương thức


getListVeBySuatOrder() để hiển thị danh sách vé đã đặt trong
suất chiếu
+ input: Client
+ ouput: List<Ve> ()
+ gán cho lớp SuatChieuVeDAO
- tại trang XacNhanHuyVeView.jsp :
● Đề xuất phương thức saveStateVe()
+ input: List<Ve>
+ output:
+ gán cho lớp OrderDAO
Đề xuất thêm phương thức TruBonusPoint() như ở giao diện
XacNhanHuySuatChieuView.jsp

b. Thiết kế động: kịch bản UC cuối và vẽ biểu đồ tuần tự cho


từng modul
Bước 1: Viết kịch bản phiên bản 3
1. Khách hàng truy cập vào giao diện chính HomeView.jsp
2. Trang HomeView.jsp hiển thị cho khách hàng
3. Khách hàng chọn đăng nhập,
4. Trang HomeView.jsp gọi trang LoginView.jsp
5. Trang LoginView.jsp hiển thị cho khách hàng
6. Khách hàng nhập thông tin tài khoản và mật khẩu và
submit
7. Trang LoginView.jsp gọi trang ClientHomeView.jsp
8. Trang ClientHomeView.jsp hiển thị cho khách hàng
9. Khách hàng chọn chức năng Huỷ vé xem phim
10. Trang ClientHomeView.jsp gọi trang
SuatChieuOrderView.jsp
11. Trang SuatChieuOrderView.jsp gọi lớp OrderDAO
để tìm danh sách các suất chiếu đã đặt
12. OrderDAO gọi hàm getSuatChieuByKH()
13. Hàm getSuatChieuByKH() gọi lớp Order để đóng
gói
14. Lớp Order đóng gói thông tin thực thể
15. Lớp Order trả lại kết quả cho hàm
getSuatChieuByKH()
16. Hàm getSuatChieuByKH() trả kết quả lại cho trang
SuatChieuOrderView.jsp
17. Trang SuatChieuOrderView.jsp hiển thị cho khách
hàng
18. Nếu khách hàng chọn huỷ suất chiếu
19. Trang SuatChieuOrderView.jsp gọi trang
XacNhanHuySuatChieuView.jsp
20. Trang XacNhanHuySuatChieuView.jsp hiển thị cho
khách hàng
21. Khách hàng chọn Xác nhận huỷ
22. Trang XacNhanHuySuatChieuView.jsp gọi lớp
ClientDAO
23. Lớp ClientDAO gọi hàm truBonusPoint()
24. Lớp ClientDAO gọi hàm saveStateSuatChieu()
25. Lớp ClientDAO trả lại trang
XacNhanHuySuatChieuView.jsp
26. Trang XacNhanHuySuatChieuView.jsp hiển thị
thông báo huỷ suất chiếu thành công cho khách hàng
27. Khách hàng chọn Finish
28. Trang XacNhanHuySuatChieuView.jsp gọi trang
SuatChieuOrderView.jsp
29. Trang SuatChieuOrderView.jsp hiển thị cho khách
hàng
30. Nếu Khách hàng chọn Huỷ vé
31. Lớp SuatChieuOrderView.jsp gọi lớp
HuyVeView.jsp
32. Lớp HuyVeView.jsp gọi lớp SuatChieuOrderDAO
33. lớp SuatChieuVeDAO gọi hàm
getListVeBySuatOrder()
34. Hàm getListVeBySuatOrder() gọi lớp SuatChieuVe
35. LớpSuatChieuVe đóng gói thông tin thực thể
36. Lớp SuatChieuVe trả dữ liệu cho Hàm
getListVeBySuatOrder()
37. Hàm getListVeBySuatOrder() trả kết quả cho lớp
HuyVeView.jsp
38. Lớp HuyVeView.jsp hiển thị dữ liệu cho khách hàng
39. Khách hàng thực hiện tích các vé xem phim muốn
huỷ
40. Mỗi lần tích Lớp HuyVeView.jsp gọi lớp
TichChonHuyVeView.jsp để khách hàng kiểm tra các vé
đã tích chọn huỷ
41. Trang TichChonHuyVeView.jsp hiển thị cho khách
hàng
42. Khách hàng chọn tiếp tục huỷ
43. Trang TichChonHuyVeView.jsp gọi trang
HuyVeView.jsp (Lặp từ bước 39 -> 43 cho đến khi tích
chọn đủ)
44. Trang HuyVeView.jsp hiển thị cho khách hàng
45. Sau khi tích chọn xong khách hàng thực hiện ấn Xác
nhận huỷ vé
46. Lớp HuyVeView.jsp gọi lớp
XacNhanHuyVeView.jsp
47. Trang XacNhanHuyVeView.jsp hiển thị cho khách
hàng
48. Sau khi kiểm tra hết thông tin Khách hàng chọn Huỷ
x Vé
49. Lớp XacNhanHuyVeView.jsp gọi lớp ClientDAO
50. Lớp ClientDAO gọi hàm truBonusPoint() để trừ
điểm thường
51. Lớp ClientDAO gọi hàm saveStateVe()
52. Lớp ClientDAO trả lại trang
XacNhanHuyVeView.jsp
53. Trang XacNhanHuyVeView.jsp thông báo huỷ thành
công
Biểu đồ tuần tự:
IV. Sinh viên Ngô Trần Đức Thái - UC: Lên lịch chiếu phim
1. Đặc tả UC

a. Hoạt động nghiệp vụ của UC:

- Quản lý đăng nhập vào hệ thống với tài khoản, mật khẩu đã được cấp

- Quản lý click vào nút đăng nhập => Giao diện chính của quản lý hiện ra có chức
năng Quản lý lịch chiếu

- Quản lý click Quản lý lịch chiếu => Menu quản lý lịch chiếu hiện ra có Lên lịch
chiếu mới

- Quản lý click Lên lịch chiếu mới để bắt đầu quá trình lên lịch chiếu => Giao diện lên
lịch chiếu hiện ra

+ Danh sách lựa chọn phim

+ Danh sách lựa chọn phòng chiếu

+ Danh sách lựa chọn khung giờ

+ Danh sách giá vé

+ Nút thêm lịch chiếu


+ Nút hủy

- Quản lý chọn phim muốn lên lịch => Giao diện sẽ hiển thị danh sách các bộ phim có
sẵn để lựa chọn. Thông tin chi tiết về từng bộ phim bao gồm tên phim, thể loại, đạo
diễn, diễn viên, và mô tả nội dung.

- Quản lý chọn phòng chiếu => Giao diện sẽ hiển thị danh sách các phòng chiếu trong
rạp. Thông tin bao gồm tên phòng, số lượng ghế, và trạng thái (đã chiếu, đang chiếu,
trống).

- Quản lý chọn khung giờ chiếu => Giao diện sẽ cung cấp danh sách các khung giờ
chiếu có sẵn của các phòng chiếu đã chọn và đang trống

- Quản lý chọn giá vé từ danh sách giá vé có sẵn. Thông tin về giá vé cũng có thể bao
gồm các loại vé như vé người lớn, vé trẻ em, vé sinh viên,…

- Quản lý click Thêm lịch chiếu => Hệ thống lưu vào CSDL và thông báo thêm thành
công => Trở lại giao diện hiển Quản lý lịch chiếu

b. Biểu đồ UC chi tiết:

Use chi tiết của chức năng Lên lịch chiếu phim

Chức năng Lên lịch chiếu phim có các giao diện tương tác với quản lý:

+ Đăng nhập => Đề xuất usecase đăng nhập


+ Quản lý lịch chiếu => Đề xuất usecase Quản lý lịch chiếu
+ Lên lịch chiếu mới => Đề xuất usecase Lên lịch chiếu mới

- Các usecase Chọn phim, Chọn khung giờ, Chọn phòng chiếu, Chọn giá vé là bắt
buộc để hoàn thành việc lên lịch chiếu phim mới do đó usecase Lên lịch chiếu mới
include các usecase này.

- Usecase Lên lịch chiếu mới là tùy chọn từ giao diện Quản lý lịch chiếu, nên usecase
này có quan hệ extend từ usecase Quản lý lịch chiếu

Như vậy, biểu đồ UC chi tiết cho modul Lên lịch chiếu phim. Các UC được mô tả như
sau:

+ Chọn phim: UC này cho phép quản lý chọn phim để lên lịch

+ Chọn phòng chiếu: UC này quản lý chọn phòng chiếu để lên lịch

+ Chọn khung giờ: UC này quản lý chọn khung giờ để lên lịch phim

+ Chọn giá vé: UC này quản lý chọn giá vé phim để lên lịch

c. Đặc tả UC

Use Lên lịch chiếu phim


case

Actor Quản lý

Tiền Quản lý đã đăng nhập vào hệ thống và có quyền quản lý lịch chiếu
điều
kiện

Hậu Lịch chiếu mới đã được thêm vào hệ thống và thông báo thành công
điều
kiện

Kịch 1. Sau khi đăng nhập, từ giao diện chính, quản lý chọn chức năng
bản Quản lý lịch chiếu
chính
2. Giao diện Quản lý lịch chiếu hiện lên.

Có nút Lên lịch chiếu mới, Sửa lịch chiếu


3. Quản lý chọn chức năng Lên lịch chiếu mới

4. Giao diện Lên lịch chiếu mới hiện lên, có danh sách phim muốn
lên lịch; danh sách phòng chiếu, danh sách khung giờ, danh sách giá
vé và nút Thêm lịch chiếu chưa được active.

5. Quản lý chọn phim muốn lên lịch từ danh sách phim.

6. Giao diện hiện lên danh sách phim quản lý có thể chọn:

TT Tên phim Ngày khởi Thời


chiếu lượng(phút)

1 Yêu lại vợ ngầu 10/11/2023 119

2 AQUAMAN: ĐẾ 15/11/2023 143


VƯƠNG
ATLANTIS (CHIẾU
LẠI)

3 THE MARVELS 10/11/2023 104

7. Quản lý click chọn phim Yêu lại vợ ngầu


8. Giao diện danh sách các phòng chiếu hiện ra

TT Phòng chiếu Số ghế

1 N1 63

2 N2 126

9. Quản lý click N1

10. Giao diện danh sách các khung giờ chiếu còn trống hiện ra

TT Khung giờ chiếu Ngày

1 18:00 30/11/2023

2 22:00 30/11/2023

3 20:00 01/12/2023
4 23:00 01/12/2023

11. Quản lý click vào 1, 3

12. Giao diện danh sách giá vé hiện ra:

TT Người lớn Sinh viên Trẻ em

1 85k 70k 60k

2 105k 90k 70k

13. Quản lý click 1

14. Nút Thêm lịch chiếu sẽ active

15. Quản lý click Thêm lịch chiếu

16. Hệ thống báo thành công và quay về giao diện Quản lý lịch chiếu

Ngoại 8. Không còn phòng chiếu trống


lệ
10. Không còn khung giờ chiếu trống

2. Phân tích UC

a. Phân tích lớp module

· Bước 1: Giao diện trang chủ => Đề xuất lớp GDChinh, cần có
subDangnhap.
· Bước 2: Giao diện đăng nhập => Đề xuất lớp GDDangnhap, cần có:
inpTaikhoan, inpMatkhau, subDangnhap
· Bước 3, giao diện chính Quản lý -> đề xuất lớp GDChinhQL, cần các
thành phần:

· chọn Quản lý lịch chiếu: kiểu submit

· Bước 4, giao diện Quản lý lịch chiếu -> đề xuất lớp GDLichchieuQL,
cần có các thành phần:

· Nút Lên lịch chiếu mới: kiểu submit

· Bước 5, giao diện Lên lịch chiếu mới -> đề xuất lớp GDLenlich, cần có
các thành phần:
· Chọn phim để lên lịch: vừa input, vừa output

· Chọn phòng chiếu: vừa input, vừa output

· Chọn khung giờ chiếu: vừa input, vừa output

· Chọn giá vé: vừa input, vừa output

· Thêm lịch chiếu: kiểu submit

· Để có danh sách phim để chọn ở bước 5, cần xử lí dưới hệ thống:

· Tìm các phim đang có trên hệ thống

· input: không có

· output: danh sách phim

· đề xuất phương thức getPhim(), gán cho lớp Phim.

· Để có danh sách phòng chiếu để chọn ở bước 5, cần xử lí dưới hệ thống:

· Tìm các phòng chiếu của rạp

· input: không có

· output: danh sách phòng

· đề xuất phương thức getPhong(), gán cho lớp Phong.

· Để có danh sách khung giờ chiếu để chọn ở bước 5, cần xử lí dưới hệ


thống:

· Tìm các khung giờ chiếu của rạp

· input: không có

· output: danh sách khung giờ trống

· đề xuất phương thức getKhungGio(), gán cho lớp KhungGio.

· Để có danh sách giá vé để chọn ở bước 5, cần xử lí dưới hệ thống:

· Tìm các giá vé của rạp

· input: không có

· output: danh sách giá vé


· đề xuất phương thức getVe(), gán cho lớp Ve.

b. Phân tích hoạt động UC

1. Quản lý truy cập vào hệ thống

2. Lớp GDChinh hiển thị cho quản lý

3. Quản lý click dangnhap

4. Lớp GDChinh gọi Class GDDangnhap

5. Lớp GDDangnhap hiển thị cho quản lý

6. Quản lý nhập taikhoan, matkhau, click dangnhap

7. Lớp GDDangnhap gọi lớp GDChinhQL

8. Lớp GDChinhQL hiển thì cho quản lý

9. Quản lý click LichchieuQL

10. Lớp GDChinhQL gọi lớp GDLichchieuQL

11. Lớp GDLichchieuQL hiển thị cho quản lý

12. Quản lý click Lenlich

13. Lớp GDLichchieuQL gọi lớp GDLenlich

14. Lớp GDLenlich gọi lớp Phim yêu cầu tìm danh sách phim

15. Lớp Phim tìm các phim trên hệ thống

16. Lớp Phim trả kết quả lại cho lớp GDLenlich

17. Lớp GDLenlich hiển thị cho quản lý

18. Quản lý click 1 phim muốn lên lịch

19. Lớp GDLenlich gọi lớp Phong yêu cầu tìm danh sách phòng

20. Lớp Phong tìm các phòng trên hệ thống

21. Lớp Phong trả kết quả lại cho lớp GDLenlich

22. Lớp GDLenlich hiển thị cho quản lý


23. Quản lý click phòng muốn lên lịch

24. Lớp GDLenlich gọi lớp KhungGio yêu cầu tìm danh sách khung giờ
trống

25. Lớp KhungGio tìm các khung giờ còn trống của phòng trên hệ thống

26. Lớp KhungGio trả kết quả lại cho lớp GDLenlich

27. Lớp GDLenlich hiển thị cho quản lý

28. Quản lý click khung giờ muốn lên lịch

29. Lớp GDLenlich gọi lớp Ve yêu cầu tìm danh sách giá vé

30. Lớp Ve tìm giá vé trên hệ thống

31. Lớp Ve trả kết quả lại cho lớp GDLenlich

32. Lớp GDLenlich hiển thị cho quản lý

33. Quản lý click giá vé muốn lên lịch

34. Quản lý click Themlich

35. Lớp GDLenlich gọi phương thức luuLich()

36. Lớp GDLenlich trả kết quả cho lớp GDLichchieuQL

37. Lớp GDLichchieuQL hiển thị thông báo thành công


3.Thiết kế UC

a. Thiết kế giao diện và đề xuất các lớp (giao diện, lớp truy xuất dữ liệu)
Bước 1: Thiết kế giao diện
Bước 2: Đề xuất các lớp giao diện tương ứng

Tầng giao diện có các trang jsp: gdChinh, gdDangnhap, gdChinhqL,


gdLichchieuQL, gdLenlich, doThemLich.

Bước 3: Đề xuất các lớp truy xuất dữ liệu DAO:


- Tầng thao tác với dữ liệu có các lớp DAO, PhimDAO, PhongDAO,
KhungGioDAO, VeDAO, LenLichDAO
- Tại trang gdLenlich.jsp cần lấy danh sách phim, phòng, khung giờ, giá vé

=> đề xuất hàm getPhim()

+ input:

+ output: List<Phim>

+ Gán cho lớp PhimDAO

=> đề xuất hàm getPhong()

+ input:

+ output: List<Phong>
+ Gán cho lớp PhongDAO

=> đề xuất hàm getKhungGio()


+ input:

+ output: List<KhungGio>

+ Gán cho lớp KhungGioDAO

=> đề xuất hàm getVe()

+ input:

+ output: List<Ve>

+ Gán cho lớp VeDAO

- Tại trang doThemLich.jsp cần kiểm tra và lưu thông tin:

=> đề xuất hàm luuLich()

+ input: LenLich
+ output boolean
+ gán cho lớp LenLichDAO
Bước 4: Bổ sung các lớp thực thể liên quan

b. Thiết kế động: kịch bản UC cuối và biểu đồ tuần tự

1. Quản lý truy cập vào hệ thốngl

2. Trang GDChinh.jsp hiển thị cho quản lý

3. Quản lý click login


4. Trang GDChinh.jsp gọi trang GDDangnhap.jsp

5. Trang GDDangnhap.jsp hiển thị cho quản lý

6. Quản lý nhập taikhoan, matkhau và click login

7. Trang GDDangnhap.jsp gọi trang GDChinhQL.jsp

8. Trang GDChinhQL.jsp hiển thị cho quản lý

9. Quản lý click LichChieuQL

10. Trang GDChinhQL.jsp gọi trang GDLichchieuQL.jsp

11. Trang GDLichChieuQL.jsp hiển thị cho quản lý

12. Quản lý click LichChieuMoi

13. Trang GDLichChieuQL.jsp gọi trang GDLenlich.jsp

14. Trang GDLenlich.jsp gọi lớp PhimDAO yêu cầu tìm danh sách phim

15. Lớp PhimDAO gọi hàm getPhim()

16. Hàm getPhim() gọi lớp Phim để đóng gói thông tin

17. Lớp Phim đóng gói thông tin thực thể

18. Lớp Phim trả kết quả về cho hàm getPhim()

19. Hàm getPhim() trả kết quả cho trang GDLenlich.jsp

20. Trang GDLenlich.jsp hiển thị cho quản lý

21. Quản lý chọn 1 phim để lên lịch

22. Trang GDLenlich.jsp gọi lớp PhongDAO yêu cầu tìm danh sách phòng

23. Lớp PhongDAO gọi hàm getPhong()

24. Hàm getPhong() gọi lớp Phong để đóng gói thông tin

25. Lớp Phong đóng gói thông tin thực thể

26. Lớp Phong trả kết quả về cho hàm getPhong()

27. Hàm getPhong() trả kết quả cho trang GDLenlich.jsp

28. Trang GDLenlich.jsp hiển thị cho quản lý


29. Quản lý chọn 1 phòng để lên lịch

30. Trang GDLenlich.jsp gọi lớp KhungGioDAO yêu cầu tìm danh sách
khung giờ trống

31. Lớp KhungGioDAO gọi hàm getKhungGio()

32. Hàm getKhungGio() gọi lớp KhungGio để đóng gói thông tin

33. Lớp KhungGio đóng gói thông tin thực thể

34. Lớp KhungGio trả kết quả về cho hàm getKhungGio()

35. Hàm getKhungGio() trả kết quả cho trang GDLenlich.jsp

36. Trang GDLenlich.jsp hiển thị cho quản lý

37. Quản lý chọn 1 khung giờ để lên lịch

38. Trang GDLenlich.jsp gọi lớp VeDAO yêu cầu tìm danh sách phim

39. Lớp VeDAO gọi hàm getVe()

40. Hàm getVe() gọi lớp Ve để đóng gói thông tin

41. Lớp Ve đóng gói thông tin thực thể

42. Lớp Ve trả kết quả về cho hàm getVe()

43. Hàm getVe() trả kết quả cho trang GDLenlich.jsp

44. Trang GDLenlich.jsp hiển thị cho quản lý

45. Quản lý chọn 1 giá vé để lên lịch

46. Trang GDLenlich.jsp hiển thị cho quản lý muốn thêm lịch

47. Quản lý click Thêm lịch

48. Trang GDLenlich.jsp gọi trang doThemLich.jsp

49. Trang doThemLich.jsp gọi lớp LenLichDAO yêu cầu thêm lịch

50. Lớp LenLichDAO gọi hàm luuLich()

51. Lớp LenLichDAO trả lại lớp doThemLich.jsp

52. Trang doThemLich.jsp hiển thị thông báo thành công


53. Quản lý click OK

54. Trang doThemLich.jsp gọi trang GDLichchieuQL.jsp

55. Trang GDLichchieuQL.jsp hiển thị cho quản lý

V. Sinh viên Nguyễn Thiệu Hiếu UC: bán vé tại quầy:

1. Đặc tả use case:


a, Hoạt động nghiệp vụ của UC:
- Nhân viên tại quầy đăng nhập -> Hệ thống hiện ra giao diện của nhân
viên tại quầy gồm 2 chức năng: bán vé cho khách tại quầy và quản lý
thông tin thành viên
- Nhân viên tại quầy chọn chức năng bán vé cho khách -> Giao diện chọn
phim hiện ra
- Nhân viên hỏi khách hàng rồi chọn 1 phim -> Giao diện chọn lịch xem
hiện ra
- Nhân viên hỏi khách rồi chọn 1 lịch -> Giao diện chọn phòng xem và ghế
ngồi hiện ra
- Nhân viên hỏi khách rồi chọn 1 phòng xem và 1 ghế ngồi -> Giao diện
chọn đồ ăn hiện ra
- Nhân viên hỏi khách rồi chọn 1 bỏng ngô -> Giao diện thanh toán hiện ra
với các thông tin: tên chi nhánh, số hiệu phòng chiếu, ngày giờ chiếu, tên
phim, số lượng vé, giá tiền cho mỗi vé + tổng số tiền
- Nhân viên thông báo giá tiền, nhận tiền từ khách và nhấn thanh toán ->
Hệ thống in hóa đơn và vé
- Nhân viên đưa hóa đơn và vé cho khách

b,use case chi tiết của bán vé tại quầy :

Trong chức năng này, nhân viên quản lí có thể phải tương tác với các giao diện:

- Đăng nhập -> thống nhất với UC đăng nhập

-Chọn phim cho khách hàng-> đề xuất UC Chọn phim

-Chọn lịch xem phim cho khách hàng -> đề xuất UC Chọn lịch xem phim

- UC Chọn
quan đồ ăn là tùy chọn từ UC Bán vé tại quầy. Do đó, chúng có
hệ mở
rộng.

- Chọn phòng cho khách hàng-> đề xuất UC Chọn phòng

- Chọn ghế ngồi cho khách hàng -> đề xuất UC ghế ngồi

-Thanh toán cho khách hàng -> đề xuất UC thanh toán


- Chọn phim: Use case này cho phép nhân viên tại quầy chọn phim theo yêu
cầu khách hàng
-Chọn lịch xem phim: Use case này cho phép nhân viên tại quầy chọn lịch

xem phim theo yêu cầu khách hàng


-Chọn phòng: Use case này cho phép nhân viên tại quầy chọn phòng theo

yêu cầu khách hàng


-Chọn ghế ngồi: Use case này cho phép nhân viên tại quầy chọn ghế ngồi

theo yêu cầu khách hàng.


- Chọn đồ ăn: Use case này cho phép nhân viên tại quầy chọn đồ ăn cho

khách hàng nếu khách hàng có nhu cầu.


- Thanh toán: Use case này cho phép nhân viên tại quầy thanh toán cho khách
hàng.

c, đặc tả use case:

Use case Bán vé tại quầy


Actor Nhân viên tại quầy
Pre- Nhân viên tại quầy đã đăng nhập thành công vào hệ thống
conditions

Post Nhân viên thanh toán thành công cho khách hàng
conditions

Main 1. Sau khi đăng nhập, từ giao diện bán vé hiện ra, nhân viên A
events chọn chức năng bán vé tại quầy.
2. Giao diện bán vé hiện ra với tính năng chọn phim hiện lên
với: Danh sách các phim sẽ chiếu để chọn, nút tiếp tục.
3. Nhân viên chọn vào phim mà khách hàng yêu cầu và nhấn nút
tiếp tục.
4. Giao diện chọn lịch chiếu của phim khách hàng chọn hiện lên
với: Danh sách các khung giờ sẽ chiếu lịch đấy và nút tiếp tục

5. Nhân viên chọn lịch chiếu phim theo yêu cầu của khách
hàng, lưu ý rằng nếu trạng thái là đã chiếu thì sẽ không
thể chọn. Sau đó nhấn nút tiếp tục
6. Giao diện chọn phòng hiện ra với danh sách tương ứng
với phim và khung giờ chiếu đấy và nút tiếp tục.

7. Nhân viện chọn phòng theo yêu cầu khách hàng, lưu ý nếu
trạng thái là Hết chỗ thì không thể chọn. Sau đó nhấn nút
tiếp tục.
8. Giao diện chọn ghế ngồi hiện ra với danh sách ghế ngồi
tương ứng của phòng, và nút tiếp tục.

Nhân viên chọn ghế ngồi theo yêu cầu của khách hàng,
lưu ý nếu trạng thái của ghế là Đã ngồi thì không thể
chọn. Sau đó nhấn nút tiếp tục.

10. Giao diện menu đồ ăn hiện lên.


11. Nhân viên chọn đồ ăn theo nhu cầu khách hàng, có thể chọn
nhiều lựa chọn hoặc không chọn cái nào, sau đó nhấn tiếp tục.

12. Giao diện thanh toán hiện ra với những lựa chọn
khách hàng chọn và số tiền khách hàng phải trả.

Ngoại lệ
2. Không có phim nào để chọn.

4. Không có lịch chiếu phim nào để chọn hoặc tất cả các lịch

chiếu đều ở trạng thái đã chiếu

6. Không có phòng nào để chọn hoặc tất cả các phòng đều ở trạng

thái Hết chỗ

8. Không hiển thị danh sách ghế để chọn.

2. Phân tích use case:


a, Phân tích lớp module:

Bước1: Giao diện chính của nhân viên tại quầy -> Đề xuất lớp
GDChinhNVQuay, cần các thành phần:

- Chọn phim: kiểu submit.


Bước 2: Giao diện chọn phim -> Đề xuất lớp GDChonPhim,

cần có các thành phần:

- Chọn phim khách hàng muốn xem: input.

- Bảng danh sách phim: vừa output, vừa submit.

- Nút chọn tiếp tục: kiểu submit.

Bước 3: Để có danh sách phim để chọn ở bước 2, cần xử lý dưới hệ thống:

- Tìm phim

- input: tên phim hoặc tên tác giả hoặc thể loại phim.

- output: danh sách các phim tương ứng.

- Đề xuất phương thức getListPhim(), gán cho lớp Phim.

Bước 4: Giao diện chọn lịch xem phim -> Đề xuất lớp GDChonLichXemPhim, cần
có các thành phần.

- Bảng danh sách lịch chiếu phim: vừa output, vừa submit.

- Nút tiếp tục: kiểu submit.

Bước 5: Để có danh sách lịch chiếu phim cần xử lý bên dưới hệ thống.

- Tìm các lịch chiếu phim tương ứng với phim đã chọn trước đó.

- input: phim, ngày.

- output: danh sách LichChieu.

- Đề xuất phương thức getListLichChieu(), gán vào lớp LichChieu

Bước 6: Giao diện chọn phòng -> Đề xuất lớp GDChonPhong, cần có các thành
phần.

- Bảng danh sách phòng sẽ chiếu phim đã chọn, tương ứng với lịch chiếu đã chọn:
vừa output, vừa submit.
- Nút tiếp tục: kiểu submit.

Bước 7: Để có danh sách phòng cần xử lý bên dưới hệ thống.

- Tìm các phòng tương ứng với phim và lịch chiếu đã chọn trước đó.

- input: phim, lịch chiếu.

- output: danh sách Phong.

- Đề xuất phương thức getListPhong(), gán vào lớp Phong.

Bước 8: Giao diện chọn ghế -> Đề xuất lớp GDChonGhe, cần có các thành phần.

- Bảng danh sách ghế của phòng đã chọn: vừa output, vừa submit.

- Nút tiếp tục: kiểu submit.

Bước 9: Để có danh sách ghế cần xử lý bên dưới hệ thống.

- Tìm các ghế của phòng đã chọn.

- input: phòng.

- output: danh sách Ghe.

- Đề xuất phương thức getListGhe(), gán vào lớp Ghe.

Bước 10: Giao diện chọn đồ ăn, combo -> Đề xuất lớp GDChonDoAn, cần có các
thành phần.

- Bảng danh sách đồ ăn: vừa output, vừa submit.

- Bảng danh sách combo: vừa output, vừa submit.

- Nút tiếp tục: kiểu submit.

Bước 11: Để có danh sách đồ ăn và combo, cần xử lý bên dưới hệ thống.

- Tìm đồ ăn và combo hiện có mà hệ thống đáp ứng.

- Không có input.

- output: Danh sách DoAn và danh sách Combo.

- Đề xuất phương thức getListDoAn() của lớp DoAn và phương thức


getListCombo() của lớp Combo.
Bước 13: Để có thông tin vé, đồ ăn đã chọn và giá tiền cần.

- Tìm hóa đơn tương ứng với các lựa chọn dịch vụ đã sử dụng.

- input: ve, listDoAnTrongHoaDon, listComboTrongHoaDon.

Bước 12: Giao diện thanh toán -> Đề xuất lớp GDThanhToan, cần có các thành
phần.

- Thông tin vé và đồ ăn đã chọn trước đó: output.

- Thông tin giá tiền: output.

- Nút thanh toán: submit.

- Xử lý bên dưới hệ thống.

- output: HoaDon.

- Đề xuất phương thức getHoaDon() của lớp HoaDon.

b. Phân tích hoạt động UC :


1. Tại giao diện chính của nhân viên tại quầy sau khi đăng nhập, nhân viên click
chọn phim.
2. Lớp GDChinhNVQuay gọi lớp GDChonPhim.
3. GDChonPhim hiển thị cho nhân viên.
4. Nhân viên nhập từ khóa liên quan tới phim mà khách hàng muốn xem, click
vào nút tìm kiếm.
5. GDChonPhim gọi lớp Phim yêu cầu tìm danh sách phim.
6. Lớp Phim tìm các phim theo từ khóa.
7. Lớp Phim trả kết quả lại cho GDChonPhim.
8. GDChonPhim hiển thị danh sách phim cho nhân viên.
9. Nhân viên click vào phim mà khách hàng yêu cầu và nhấn nút tiếp tục.
10. GDChonPhim gọi lớp GDChonLichChieu.
11. GDChonLichChieu gọi lớp LichChieu yêu cầu lấy danh sách lịch chiếu
tương ứng với phim đã chọn.
12. Lớp LichChieu tìm các lịch chiếu tương ứng với phim.
13. Lớp LichChieu trả lại kết quả cho GDChonLichChieu.
14. GDChonLichChieu hiển thị kết quả cho nhân viên.
15. Nhân viên click chọn 1 lịch chiếu theo yêu cầu khách hàng rồi nhấn tiếp tục.
16. GDChonLichChieu gọi lớp GDChonPhong.
17. GDChonPhong gọi lớp Phong yêu cầu lấy danh sách phòng tương ứng.
18. Lớp Phong tìm kiếm các phòng tương ứng với phim và lịch chiếu đã chọn
19. Lớp Phong trả lại kết quả cho GDChonPhong.
20. GDChonPhong hiển thị cho nhân viên.
21. Nhân viên chọn 1 phòng theo yêu cầu khách hàng rồi click tiếp tục.
22. GDChonPhong gọi lớp GDChonGhe.
23. GDChonGhe gọi lớp Ghe yêu cầu tìm danh sách ghế của phòng đấy
24. Lớp Ghe tìm kiếm các ghế của phòng đã chọn.
25. Lớp Ghe trả kết quả cho GDChonGhe.
26. GDChonGhe hiển thị cho nhân viên.
27. Nhân viên chọn 1 ghế theo yêu cầu khách hàng rồi click tiếp tục.
28. GDChonGhe gọi lớp GDChonDoAnVaCombo.
29. GDChonDoAnVaCombo gọi lớp DoAn .
30. Lớp DoAn tìm kiếm danh sách đồ ăn.
31. Lớp DoAn trả kết quả cho GDChonDoAnVaCombo.
32. GDChonDoAnVaCombo gọi lớp Combo .
33. Lớp Combo tìm kiếm danh sách Combo.
34. Lớp Combo trả kết quả cho GDChonDoAnVaCombo.
35. GDChonDoAnVaCombo hiển thị kết quả cho nhân viên.
36. Nhân viên chọn đồ ăn và combo theo yêu cầu khách hàng rồi nhấn nút tiếp
tục.
37. GDChonDoAnVaCombo gọi lớp GDThanhToan.
38. GDThanhToan gọi lớp HoaDon yêu cầu tìm thông tin thanh toán và giá tiền
khách hàng phải trả.
39. Lớp HoaDon tìm kiếm thông tin.
40. Lớp HoaDon trả kết quả cho GDThanhToan
41. GDThanhToan hiển thị cho nhân viên.
42. Nhân viên thông báo cho khách hàng số tiền phải trả, sau khi khách hàng trả
tiền nhân viên click nút thanh toán.
43. GDThanhToan báo thanh toán thành công.

3. Thiết kế UC
a. Thiết kế giao diện và đề xuất các lớp (giao diện, lớp truy xuất dữ liệu)
Bước 1: Thiết kế giao diện
- Tầng giao diện có các trang: GDChonPhim.jsp,
GDChonLichXemPhim.jsp, GDChonPhong.jsp, GDChonGhe.jsp,
GDChonDoAnVaCombo.jsp, GDThanhToan.jsp.
- Tầng thao tác với dữ liệu có các lớp: DAO, PhimDAO,
LichChieuDAO, PhongDAO, GheDAO, HoaDonDAO,
DoAnDAO, ComboDAO.

b. Thiết kế động: kịch bản UC cuối và biểu đồ tuần tự cho từng modul.
1. Khách hàng đến quầy thanh toán mua vé
2. Nhân viên hỏi tên phim.
3. Khách hàng trả lời.
4. Tại giao diện trang chủ website giao diện chính của nhân viên tại quầy, nhân
viên đăng nhập từ khóa phim vào ô tìm kiếm và click tìm phim
5. Trang GDChonPhim.jsp gọi chính nó.
6. Trang GDChonPhim.jsp gọi lớp PhimDAO yêu cầu tìm danh sách phim có
tên chứa từ khóa của khách hàng nhập.
7. Lớp PhimDAO gọi hàm getPhimTheoKeyword().
8. Hàm getPhimTheoKeyword() gọi lớp Phim để đóng gói thông tin.
9. Lớp Phim đóng gói thông tin thực thể.
10. Lớp Phim trả kết quả cho hàm getPhimTheoKeyword() (Lặp lại bước 5-7
cho đến khi đóng gói hết các đối tượng Phim vào danh sách các Phim có trùng
keyword ).
11. Hàm getPhimTheoKeyword() trả một danh sách các phim trùng keyword
cho trang GDChonPhim.jsp
12. Trang GDChonPhim.jsp hiển thị cho nhân viên tại quầy.
13. Nhân viên hỏi khách hàng chính xác phim khách hàng muốn chọn.
14. Khách hàng chỉ cho nhân viên.
15. Nhân viên click vào phim đó.
16. Trang GDChonPhim.jsp gọi trang GDChonLichXemPhim.jsp
17. Trang GDChonLichXemPhim.jsp gọi lớp LichChieuDAO yêu cầu tìm danh
sách tất cả các khung giờ chiếu trong ngày của ngày hôm đấy.
18. Lớp LichChieuDAO gọi hàm getListLichchieu()
19. Hàm getListLichChieu() thực hiện gọi lớp LichChieu để đóng gói thông tin.
20. Lớp LichChieu đóng gói thông tin thực thể.
21. Lớp LichChieu trả lại kết quả cho hàm getListLichChieu() ( Lặp lại bước
16-18 đến khi đóng gói hết các đối tượng LichChieu thỏa mãn yêu cầu )
22. Hàm getListLichChieu() trả kết quả cho trang GDChonLichChieu.jsp
23. Trang GDChonLichChieu.jsp hiển thị kết quả cho nhân viên tại quầy.
24. Nhân viên tại quầy hỏi khách hàng giờ muốn xem.
25. Khách hàng chọn rồi nói cho nhân viên.
26. Nhân viên click vào 1 bản ghi và nhấn nút tiếp tục
27. Trang GDChonLichChieu.jsp gọi trang GDChonPhong.jsp
28. GDChonPhong.jsp gọi lớp PhongDAO yêu cầu tìm danh sách phòng ứng
với phim, khung giờ chiếu trong chi nhánh mà khách đã chọn.
29. Lớp Phong DAO gọi hàm getListPhong().
30. Hàm getListPhong() gọi lớp Phong để đóng gói thông tin.
31. Lớp Phong đóng gói thông tin thực thể.
32. Lớp Phong trả về kết quả cho hàm getListPhong() ( Lặp lại bước từ 27-29
đến khi đóng gói hết các đối tượng Phong thỏa mãn )
33. Hàm getListPhong() trả về cho trang GDChonPhong.jsp
34. Trang GDChonPhong.jsp hiển thị kết quả cho nhân viên.
35. Nhân viên hỏi khách hàng phòng muốn đăng kí
36. Khách hàng chọn rồi nói cho nhân viên
37. Nhân viên click bản ghi khách hàng chọn rồi ấn tiếp tục
38. Trang GDChonPhong.jsp gọi trang GDChonGhe.jsp.
39. GDChonGhe.jsp gọi lớp GheDAO yêu cầu tìm danh sách ghế ứng với
phòng khách đã chọn.
40. Lớp GheDAO gọi hàm getListGhe().
41. Hàm getListGhe() gọi lớp Ghe để đóng gói thông tin.
42. Lớp Ghe đóng gói thông tin thực thể.
43. Lớp Ghe trả về kết quả cho hàm getListGhe() ( Lặp lại bước từ 38 - 40 đến
khi đóng gói hết các đối tượng Phong thỏa mãn )
44. Hàm getListGhe() trả về cho trang GDChonGhe.jsp
45. Trang GDChonGhe.jsp hiển thị kết quả cho nhân viên.
46. Nhân viên hỏi khách hàng ghế muốn đăng kí
47. Khách hàng chọn rồi nói cho nhân viên
48. Nhân viên click bản ghi khách hàng chọn rồi ấn tiếp tục
49. Trang GDChonGhe.jsp gọi trang GDChonDoAnVaCombo/
50. GDChonDoAnVaCombo.jsp gọi lớp DoAnDAO yêu cầu tìm danh sách đồ
ăn của hệ thống.
51. Lớp DoAnDAO gọi hàm getListDoAn().
52. Hàm getListDoAn() gọi lớp DoAn để đóng gói thông tin.
53. Lớp DoAn đóng gói thông tin thực thể.
54. Lớp DoAn trả về kết quả cho hàm getListDoAn() ( Lặp lại bước từ 49 - 51
đến khi đóng gói hết các đối tượng DoAn thỏa mãn )
55. Hàm getListDoAn() trả về cho trang GDChonDoAnVaCombo.jsp
56. GDChonDoAnVaCombo.jsp gọi lớp ComboDAO yêu cầu tìm danh sách
combo của hệ thống.
57. Lớp ComboDAO gọi hàm getListCombo().
58. Hàm getListCombo() gọi lớp Combo để đóng gói thông tin.
59. Lớp Combo đóng gói thông tin thực thể.
60. Lớp Combo trả về kết quả cho hàm getListCombo() ( Lặp lại bước từ 56 -
58 đến khi đóng gói hết các đối tượng Combo thỏa mãn )
61. Hàm getListCombo() trả về cho trang GDChonDoAnVaCombo.jsp
62. Trang GDChonDoAnVaCombo.jsp hiển thị kết quả cho nhân viên.
63. Nhân viên hỏi khách hàng muốn chọn đồ ăn và combo nào, với số lượng là
bao nhiêu.
64. Khách hàng trả lời nhân viên.
65. Nhân viên nhập số lượng đồ ăn và combo và khách hàng yêu cầu. và click
tiếp tục
66. Trang GDChonDoAnVaCombo.jsp gọi trang GDThanhToan.jsp
67. Trang GDThanhToan.jsp gọi lớp HoaDonDAO để đóng gói dữ liệu các vé
và thông tin từng vé của người dùng.
68. Lớp HoaDonDAO gọi hàm getHoaDon() đóng gói dữ liệu.
69. Hàm getHoaDon() gọi Lớp HoaDon để đóng gọi dữ liệu
70. Lớp HoaDon đóng gói thông tin thực thể
71. Lớp HoaDon trả kết quả cho hàm getHoaDon()
72. Hàm getHoaDon() trả kết quả về cho trang GDThanhToan.jsp
73. Trang GDThanhToan.jsp hiển thị cho nhân viên.
74. Nhân viên thông báo giá tiền cho khách hàng
75. Khách hàng trả tiền cho nhân viên.
76. Nhân viên click vào nút thanh toán.
77. Trang GDThanhToan.jsp hiển thị thông báo thanh toán thành công.
78. Nhân viên click vào ok.

You might also like