Professional Documents
Culture Documents
PTTK LOP7 Nhom11
PTTK LOP7 Nhom11
● 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
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ọ.
Đặ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.
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.
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ể
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:
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
đăng nhập.
3. Khách hàng click đăng nhập.
- 1 ô nhập username.
- 1 ô nhập password.
- 1 nút login.
5. Khách hàng nhập thông tín:
- 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
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 =
- 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:
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
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ó:
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 => Đề
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
c. Đặc tả UC
- 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à
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
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
+ 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 =>
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.
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:
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
- 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
- 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
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ý:
- 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
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.
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.
6. Giao diện hiện lên danh sách phim quản lý có thể chọn:
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
1 18:00 30/11/2023
2 22:00 30/11/2023
3 20:00 01/12/2023
4 23:00 01/12/2023
16. Hệ thống báo thành công và quay về giao diện Quản lý lịch chiếu
2. Phân tích UC
· 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:
· 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:
· 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
· input: không có
· input: không có
· input: không có
· input: không có
14. Lớp GDLenlich gọi lớp Phim yêu cầu tìm danh sách phim
16. Lớp Phim trả kết quả lại cho lớp GDLenlich
19. Lớp GDLenlich gọi lớp Phong yêu cầu tìm danh sách phòng
21. Lớp Phong trả kết quả lại cho lớp GDLenlich
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
29. Lớp GDLenlich gọi lớp Ve yêu cầu tìm danh sách giá vé
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
+ input:
+ output: List<Phim>
+ input:
+ output: List<Phong>
+ Gán cho lớp PhongDAO
+ output: List<KhungGio>
+ input:
+ output: List<Ve>
+ 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
14. Trang GDLenlich.jsp gọi lớp PhimDAO yêu cầu tìm danh sách phim
16. Hàm getPhim() gọi lớp Phim để đóng gói thông tin
22. Trang GDLenlich.jsp gọi lớp PhongDAO yêu cầu tìm danh sách phòng
24. Hàm getPhong() gọi lớp Phong để đóng gói thông tin
30. Trang GDLenlich.jsp gọi lớp KhungGioDAO yêu cầu tìm danh sách
khung giờ trống
32. Hàm getKhungGio() gọi lớp KhungGio để đóng gói thông tin
38. Trang GDLenlich.jsp gọi lớp VeDAO yêu cầu tìm danh sách phim
46. Trang GDLenlich.jsp hiển thị cho quản lý muốn thêm lịch
49. Trang doThemLich.jsp gọi lớp LenLichDAO yêu cầu thêm lịch
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:
-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 ghế ngồi cho khách hàng -> đề xuất UC ghế ngồi
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.
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
6. Không có phòng nào để chọn hoặc tất cả các phòng đều ở trạng
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:
- Tìm phim
- input: tên phim hoặc tên tác giả hoặc thể loại 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.
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 đó.
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.
- Tìm các phòng tương ứng với phim và lịch chiếu đã chọn trước đó.
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.
- input: phòng.
Bước 10: Giao diện chọn đồ ăn, combo -> Đề xuất lớp GDChonDoAn, cần có các
thành phần.
- Không có input.
- Tìm hóa đơn tương ứng với các lựa chọn dịch vụ đã sử dụng.
Bước 12: Giao diện thanh toán -> Đề xuất lớp GDThanhToan, cần có các thành
phần.
- output: HoaDon.
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.