You are on page 1of 23

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

CÔNG NGHỆ THÔNG TIN 1

Phân tích thiết kế đảm bảo hệ thống phần mềm


NHÓM:

ĐỀ TÀI: HỆ THỐNG QUẢN LÝ NHÀ HÀNG KARAOKE


MODUL: Thanh toán (17.4)

Sinh viên thực hiện:


Lê Tuấn Anh
B17DCCN758
HÀ NỘI 2023
BT1
1. Use chi tiết của Thanh toán

Chức năng Thanh toán có các giao diên tương tác với Lễ tân:
- Yêu cầu thanh toán → đề xuất UC yêu cầu thanh toán
- Đăng nhập → đề xuất UC đăng nhập
- Thanh toán → đề xuất UC thanh toán
- Chọn phòng → đề xuất UC chọn phòng
- Nhập danh sách mặt hàng đã dùng → đề xuất UC nhập danh sách mặt hàng đã dùng
- Đăng nhập, chọn phòng, nhập ds mặt hàng đã dùng là bắt buộc mới hoàn thành việc
thanh toán → UC thanh toán include các UC này
- Thanh toán là bắt buộc mới hoàn thành yêu cầu thanh toán → UC yêu cầu thanh toán
include UC thanh toán
Như vậy, biểu đồ UC chi tiết cho modul Thanh toán được trình bày trong hình
trên. Các UC được mô tả như sau:
- Chọn phòng: UC này cho phép lễ tân chọn một phòng đã đặt để thực hiện thanh toán
- Nhập ds mặt hàng đã dùng: UC này cho phép lễ tân nhập số lượng tương ứng với mặt
hàng đã dùng để thực hiện thanh toán
2. Kịch Bản Chuẩn và Ngoại Lệ

Use case Thanh toán


Tác nhân Lễ tân

Tiền điều kiện Lễ tân đã đăng nhập vào hệ thống thành công
Hậu điều kiện In hóa đơn và cập nhật trạng thái của phòng và 2 NV thành rỗi, trạng
thái của hóa đơn thành đã thanh toán
Kịch bản chính 1. Lễ tân chọn chức năng Thanh toán
2. Hệ thống hiển thị giao diện Danh sách phòng hát đã đặt

3. Lễ tân nhấn chọn thanh toán tại dòng chứa phòng cần thanh toán
4. Hệ thống hiển thị giao diện Danh sách mặt hàng đã dùng
5. Lễ tân nhập tên mặt hàng và nhấn nút tìm kiếm
6. Hệ thống hiển thị danh sách mặt hàng thỏa mãn với tên đã nhập
7. Lễ tân nhập số lượng mặt hàng đã dùng tương ứng
8. Hệ thống kiểm tra thông tin số lượng mặt hàng đã nhập. Nếu hợp
lệ, hệ thống lưu lại thông tin vào cơ sở dữ liệu
9. Lễ tân nhấn nút Thanh toán
10. Hệ thống hiển thị thông báo thanh toán thành công. Đồng thời,
in hóa đơn và cập nhật trạng thái của phòng và 2 nhân viên thành
rỗi, trạng thái của hóa đơn thành đã thanh toán
Ngoại lệ 5.1 Lễ tân nhập tên mặt hàng không có trong hệ thống
5.1.1 Hệ thống hiển thị thông báo “Không tìm thấy mặt hàng nào”
7.1 Lễ tân nhập số lượng mặt hàng không hợp lệ
7.1.1 Hệ thống hiển thị thông báo “Thông tin số lượng mặt hàng
không hợp lệ”
BT02-03
1. Phân tích lớp thực thể
Bước 1: Mô tả hệ thống trong một đoạn văn
Hệ thống là trang web hỗ trợ quản lý nhà hàng Karaoke. Trong đó, lễ tân được
phép thanh toán, chọn phòng hát đã đặt và nhập danh sách mặt hàng đã dùng bằng cách
tìm kiếm mặt hàng theo tên rồi nhập số lượng tương ứng. Sau khi thanh toán xong, hệ
thống sẽ chuyển trạng thái của hóa đơn thành đã thanh toán, trạng thái của phòng và 2
NV phục vụ thành rỗi. Biết rằng, thời gian sử dụng phòng hát sẽ được hệ thống tự động
tính khi lễ tân tiếp nhận yêu cầu đặt phòng và thanh toán phòng hát.
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: lễ tân, nhân viên phục vụ
- Các danh từ liên quan đến vật: phòng hát, mặt hàng, hóa đơn, phòng đã đặt, mặt hàng đã
dùng
- Các danh từ liên quan đến thông tin: giá phòng hát, thời gian sử dụng, tên mặt hàng, số
lượng, trạng thái của hóa đơn, trạng thái của phòng, trạng thái của nhân viên phục vụ
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, trang web, danh sách → loại
- Các danh từ liên quan đến người :
+ Thành viên hệ thống → lớp Thanhvien (trừu tượng): tên, tên đăng nhập, mật khẩu,
ngày sinh, địa chỉ, email, số điện thoại
+ Lễ tân → lớp Letan: kế thừa lớp Thanhvien
+ Nhân viên phục vụ → lớp NVphucvu: kế thừa lớp Thanhvien, trạng thái
- Các danh từ liên quan đến vật :
+ Phòng hát → lớp Phonghat: tên, cỡ, hạng, trạng thái
+ Mặt hàng → lớp Mathang: tên, đơn giá, đơn vị tính
+ Hóa đơn → lớp Hoadon: tổng tiền, trạng thái
+ Phòng đã đặt → lớp Phongdadat
+ Mặt hàng đã dùng → lớp Mathangdadung: số lượng
- Các danh từ liên quan thông tin :
+ Giá phòng hát → lớp Giaphonghat: thời gian bắt đầu, thời gian kết thúc, đơn giá
+ Thời gian sử dụng (thời gian bắt đầu, thời gian kết thúc) → thuộc tính của lớp
Phongdadat
+ Tên mặt hàng → thuộc tính của lớp Mathang
+ Số lượng → thuộc tính của lớp Mathangdadung
+ Trạng thái của hóa đơn → thuộc tính của lớp Hoadon
+ Trạng thái của phòng → thuộc tính của lớp Phonghat
+ Trạng thái của nhân viên phục vụ → thuộc tính của lớp NVphucvu
Bước 4: Xác định quan hệ số lượng giữa các thực thể
- Phòng hát có nhiều giá khác nhau → Phonghat - Giaphonghat là 1 - n
- 1 phòng có nhiều lần đặt, 1 lần đặt chỉ thuộc về 1 phòng → Phonghat - Phongdadat là 1
-n
- 1 mặt hàng được sử dụng nhiều lần, 1 mặt hàng đã dùng chỉ thuộc về 1 mặt hàng →
Mathang - Mathangdadung là 1 - n
- 1 lễ tân thanh toán nhiều hóa đơn, 1 hóa đơn chỉ được thanh toán bởi 1 lễ tân → Letan -
Hoadon là 1 - n
- 1 nhân viên phục vụ trong nhiều phòng đã đặt và 1 phòng đã đặt có nhiều nhân viên
phục vụ → NVphucvu - Phongdadat là n - n → Đề xuất lớp NVphucvuphonghat xác định
duy nhất 1 nhân viên phục vụ cho 1 phòng đã đặt nhất định
- 1 hóa đơn bao gồm 1 phòng đã đặt và nhiều mặt hàng đã dùng → Hoadon - Phongdadat
là 1 - 1 và Hoadon - Mathangdadung là 1 - n
- Ngoài ra, thông tin Họ tên có thể tách ra thành 1 lớp thực thể riêng và thông tin Địa chỉ
có thể tách ra thành 1 lớp thực thể riêng
Bước 5: Xác định quan hệ đối tượng giữa các thực thể
- Thông tin Họ tên nằm trong thông tin về Thành viên
- Thông tin Địa chỉ nằm trong thông tin về Thành viên
- Thông tin Lễ tân nằm trong thông tin về Hóa đơn
- Phòng đã đặt là thành phần của Hóa đơn
- Mặt hàng đã dùng là thành phần của Hóa đơn
- Thông tin Mặt hàng nằm trong thông tin về Mặt hàng đã dùng
- Giá phòng hát nằm trong thông tin về Phòng hát
- Phòng hát nằm trong thông tin về Phòng đã đặt
- Phòng đã đặt và Nhân viên phục vụ liên kết tạo ra Nhân viên phục vụ phòng hát duy
nhất
Kết quả thu được biểu đồ lớp thực thể pha phân tích:

2. Biểu đồ lớp

3. Biểu đồ trạng thái


1. Từ giao diện chính, nếu chức năng Thanh toán được chọn thì chuyển đến giao diện
Danh sách phòng đã đặt
2. Tại giao diện Danh sách phòng đã đặt, nếu phòng đã đặt được chọn thì chuyển đến
giao diện Danh sách mặt hàng đã dùng
3. Tại giao diện Danh sách mặt hàng đã dùng, nhập số lượng của danh sách mặt hàng đã
dùng
4. Tại giao diện Danh sách mặt hàng đã dùng, nếu nút thanh toán được nhấn thì thanh
toán và kết thúc

4. Biểu đồ giao tiếp


1. Tại giao diện chính của lễ tân sau khi đăng nhập, lễ tân chọn chức năng Thanh toán
2. Lớp GDChinh gọi lớp GDDSphongdadat
3. Lớp GDDSphongdadat gọi lớp Phonghat yêu cầu lấy danh sách các phòng đã đặt
4. Lớp Phonghat lấy danh sách các phòng đã đặt
5. Lớp Phonghat trả kết qủa lại cho lớp GDDSphongdadat
6. Lớp GDDSphongdadat hiển thị cho lễ tân
7. Lễ tân chọn phòng đã đặt
8. Lớp GDDSphongdadat gọi lớp GDDSmathangdadung
9. Lớp GDDSmathangdadung gọi lớp Phongdadat yêu cầu cập nhật thời gian kết thúc
10. Lớp Phongdadat cập nhật thời gian kết thúc
11. Lớp Phongdadat trả kết quả lại cho lớp GDDSmathangdadung
12. Lớp GDDSmathangdadung gọi lớp Mathang yêu cầu lấy danh sách mặt hàng
13. Lớp Mathang lấy danh sách mặt hàng
14. Lớp Mathang trả kết quả lại cho lớp GDDSmathangdadung
15. Lớp GDDSmathangdadung hiển thị cho lễ tân
16. Lễ tân nhập tên mặt hàng
17. Lớp GDDSmathangdadung gọi lớp Mathang yêu cầu tìm kiếm mặt hàng theo tên
18. Lớp Mathang tìm kiếm mặt hàng theo tên
19. Lớp Mathang trả kết quả lại cho lớp GDDSmathangdadung
20. Lớp GDDSmathangdadung hiển thị cho lễ tân
21. Lễ tân nhập số lượng
22. Lớp GDDSmathangdadung gọi lớp Mathangdadung yêu cầu lưu lại mặt hàng đã dùng
23. Lớp Mathangdadung lưu lại mặt hàng đã dùng
24. Lớp Mathangdadung trả kết quả lại cho lớp GDDSmathangdadung
25. Lớp GDDSmathangdadung gọi lớp Hoadon yêu cầu cập nhật tổng tiền
26. Lớp Hoadon cập nhật tổng tiền
27. Lớp Hoadon trả kết qủa lại cho lớp GDDSmathangdadung
28. Lớp GDDSmathangdadung hiển thị cho lễ tân
29. Lễ tân nhấn nút Thanh toán
30. Lớp GDDSmathangdadung gọi lớp Hoadon yêu cầu cập nhật trạng thái hóa đơn
31. Lớp Hoadon cập nhật trạng thái
32. Lớp Hoadon trả kết quả lại cho lớp GDDSmathangdadung
33. Lớp GDDSmathangdadung gọi lớp Phonghat yêu cầu cập nhật trạng thái
34. Lớp Phonghat cập nhật trạng thái
35. Lớp Phonghat trả kết qủa lại cho lớp GDDSmathangdadung
36. Lớp GDDSmathangdadung gọi lớp NVphucvu yêu cầu cập nhật trạng thái
37. Lớp NVphucvu cập nhật trạng thái
38. Lớp NVphucvu trả kết qủa lại cho lớp GDDSmathangdadung
39. Lớp GDDSmathangdadung báo thanh toán thành công cho lễ tân
BT04-05
1. Thiết kế lớp thực thể
Bước 1: Bổ sung thuộc tính id cho các lớp không kế thừa từ lớp khác: trừ các lớp Letan,
NVphucvu
Bước 2: Bổ sung kiểu dữ liệu cho các thuộc tính. Kiểu dữ liệu tương ứng với kiểu dữ liệu
của ngôn ngữ lập trình Java
Bước 3: Chuyển đổi các quan hệ association sang dạng aggregation/ composition
Quan hệ NVphucvu - Phongdadat → NVphucvuphonghat chuyển thành
NVphucvuphonghat chứa NVphucvu và Phongdadat
Bước 4: Bổ sung các thuộc tính thành phần của quan hệ aggregation/ composition, ta thu
được biểu đồ lớp thực thể pha thiết kế

2. Thiết kế CSDL
Bước 1: Mỗi lớp thực thể đề xuất bảng tương ứng
- Lớp Hoten → bảng Hoten
- Lớp Diachi → bảng Diachi
- Lớp Thanhvien → bảng Thanhvien
- Lớp Letan → bảng Letan
- Lớp NVphucvu → bảng NVphucvu
- Lớp Phonghat → bảng Phonghat
- Lớp Giaphonghat → bảng Giaphonghat
- Lớp Mathang → bảng Mathang
- Lớp Hoadon → bảng Hoadon
- Lớp Phongdadat → bảng Phongdadat
- Lớp Mathangdadung → bảng Mathangdadung
- Lớp NVphucvuphonghat → bảng NVphucvuphonghat
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
- Bảng Hoten có các thuộc tính: họ, tên đệm, tên
- Bảng Diachi có các thuộc tính: số nhà, tòa nhà, xóm phố, phường xã, quận huyện, tỉnh
thành
- Bảng Thanhvien có các thuộc tính: tên đăng nhập, mật khẩu, ngày sinh, email, số điện
thoại
- Bảng Letan
- Bảng NVphucvu có thuộc tính: trạng thái
- Bảng Phonghat có các thuộc tính: tên, cỡ, hạng, trạng thái
- Bảng Giaphonghat có các thuộc tính: thời gian bắt đầu, thời gian kết thúc, đơn giá
- Bảng Mathang có các thuộc tính: tên, đơn giá, đơn vị tính
- Bảng Hoadon có các thuộc tính: tổng tiền, trạng thái
- Bảng Phongdadat có các thuộc tính: thời gian bắt đầu, thời gian kết thúc
- Bảng Mathangdadung có các thuộc tính: số lượng, thành tiền
- Bảng NVphucvuphonghat
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:
- 1 Hoten - 1 Thanhvien
- 1 Diachi - 1 Thanhvien
- 1 Letan - n Hoadon
- 1 Hoadon - 1 Phongdadat
- 1 Phongdadat - 1 Phonghat
- 1 Phonghat - n Giaphonghat
- 1 Hoadon - n Mathangdadung
- 1 Mathangdadung - 1 Mathang
- 1 NVphucvu - n NVphucvuphonghat
- 1 Phongdadat - n NVphucvuphonghat
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 í của các
bảng tương ứng: trừ các bảng Letan, NVphucvu
Khóa ngoại được thiết lập cho các bảng:
- 1 Hoten - 1 Thanhvien → bảng Thanhvien có khóa ngoại Hotenid
- 1 Diachi - 1 Thanhvien → bảng Thanhvien có khóa ngoại Diachiid
- 1 Letan - n Hoadon → bảng Hoadon có khóa ngoại Letanid
- 1 Hoadon - 1 Phongdadat → bảng Phongdadat có khóa ngoại Hoadonid
- 1 Phongdadat - 1 Phonghat → bảng Phongdadat có khóa ngoại Phonghatid
- 1 Phonghat - n Giaphonghat → bảng Giaphonghat có khóa ngoại Phonghatid
- 1 Hoadon - n Mathangdadung → bảng Mathangdadung có khóa ngoại Hoadonid
- 1 Mathangdadung - 1 Mathang → bảng Mathangdadung có khóa ngoại Mathangid
- 1 NVphucvu - n NVphucvuphonghat → bảng NVphucvuphonghat có khóa ngoại
NVphucvuid
- 1 Phongdadat - n NVphucvuphonghat → bảng NVphucvuphonghat có khóa ngoại
Phongdadatid
Kết quả thu được CSDL toàn hệ thống
3. Thiết kế giao diện web
- Tầng giao diện có các trang jsp: gdChinh, gdDSphongdadat, gdDSmathangdadung
- Tầng thao tác với dữ liệu có các lớp DAO: PhonghatDAO, PhongdadatDAO,
MathangDAO, MathangdadungDAO, HoadonDAO, NVphucvuDAO
- Tầng thực thể gồm tất cả các thực thể liên quan
Giao diện chính của hệ thống
Giao diện Danh sách phòng hát đã đặt

Giao diện Danh sách mặt hàng đã dùng


4. Thiết kế biểu đồ lớp chi tiết
5. Xây dựng biểu đồ hoạt động

6. Xây dựng biểu đồ tuần tự


1. Tại giao diện chính của lễ tân, sau khi đăng nhập, lễ tân nhấn chọn chức năng thanh
toán
2. Trang gdChinh.jsp gọi trang gdDSphongdadat.jsp
3. Trang gdDSphongdadat.jsp gọi lớp PhonghatDAO yêu cầu lấy danh sách phòng đã đặt
4. Lớp PhonghatDAO gọi hàm getPDD()
5. Hàm getPDD() gọi lớp Phonghat để đóng gói thông tin
6. Lớp Phonghat đóng gói thông tin thực thể
7. Lớp Phonghat trả kết quả về cho hàm getPDD()
8. Hàm getPDD() trả kết quả cho trang gdDSphongdadat.jsp
9. Trang gdDSphongdadat.jsp hiển thị danh sách phòng đã đặt cho lễ tân
10. Lễ tân chọn phòng cần thanh toán
11. Trang gdDSphongdadat.jsp gọi trang gdDSmathangdadung.jsp
12. Trang gdDSmathangdadung.jsp gọi lớp PhongdadatDAO yêu cầu cập nhật thời gian
kết thúc
13. Lớp PhongdadatDAO gọi hàm updateTGKetThuc()
14. Hàm updateTGKetThuc() trả kết quả về cho trang gdDSmathangdadung.jsp
15. Trang gdDSmathangdadung.jsp gọi lớp MathangDAO yêu cầu lấy danh sách mặt
hàng
16. Lớp MathangDAO gọi hàm getMH()
17. Hàm getMH() gọi lớp Mathang yêu cầu đóng gói thực thể
18. Lớp Mathang đóng gói thông tin thực thể
19. Lớp Mathang trả kết quả lại cho hàm getMH()
20. Hàm getMH() trả kết quả cho trang gdDSmathangdadung.jsp
21. Trang gdDSmathangdadung.jsp hiển thị danh sách mặt hàng cho lễ tân
22. Lễ tân nhập tên mặt hàng
23. Trang gdDSmathangdadung.jsp gọi lớp MathangDAO yêu cầu tìm kiếm danh sách
mặt hàng theo tên
24. Lớp MathangDAO gọi hàm searchMH()
25. Hàm searchMH() gọi lớp Mathang yêu cầu đóng gói thực thể
26. Lớp Mathang đóng gói thông tin thực thể
27. Lớp Mathang trả kết quả lại cho hàm searchMH()
28. Hàm searchMH() trả kết quả cho trang gdDSmathangdadung.jsp
29. Trang gdDSmathangdadung.jsp hiển thị danh sách mặt hàng theo tên cho lễ tân
30. Lễ tân nhập số lượng mặt hàng đã dùng tương ứng
31. Trang gdDSmathangdadung.jsp gọi lớp MathangdadungDAO yêu cầu lưu lại thông
tin
32. Lớp MathangdadungDAO gọi hàm saveMHDD()
33. Hàm saveMHDD() trả kết quả lại cho trang gdDSmathangdadung.jsp
34. Trang gdDSmathangdadung.jsp gọi lớp HoadonDAO yêu cầu cập nhật tổng tiền hóa
đơn
35. Lớp HoadonDAO gọi hàm updateTongTien()
36. Hàm updateTongTien() trả kết quả lại cho trang gdDSmathangdadung.jsp
37. Trang gdDSmathangdadung.jsp hiển thị lên cho lễ tân
38. Lễ tân nhấn nút Thanh toán
39. Trang gdDSmathangdadung.jsp gọi lớp HoadonDAO yêu cầu cập nhật trạng thái hóa
đơn
40. Lớp HoadonDAO gọi hàm updateStatus()
41. Hàm updateStatus() trả kết quả lại cho trang gdDSmathangdadung.jsp
42. Trang gdDSmathangdadung.jsp gọi lớp PhonghatDAO yêu cầu cập nhật trạng thái
phòng hát
43. Lớp PhonghatDAO gọi hàm updateStatus()
44. Hàm updateStatus() trả kết quả lại cho trang gdDSmathangdadung.jsp
45. Trang gdDSmathangdadung.jsp gọi lớp NVphucvuDAO yêu cầu cập nhật trạng thái
hóa đơn
46. Lớp NVphucvuDAO gọi hàm updateStatus()
47. Hàm updateStatus() trả kết quả lại cho trang gdDSmathangdadung.jsp
48. Trang gdDSmathangdadung.jsp hiển thị thông báo thanh toán thành công lên cho lễ
tân
7. Xây dựng biểu đồ triển khai
Áp dụng cho hệ thống, các package được thiết kế theo cấu trúc như hình dưới:
- Các lớp thực thể đặt chung trong gói model
- Các lớp DAO đặt chung trong gói dao
- Các trang jssp để trong gói view. Gói view được chia nhỏ thành các gói nhỏ hơn tương
ứng với các giao diện cho các người dùng khác nhau:
+ Các thao tác cho đăng nhập, quản lý mât khẩu đặt trong goi thanhvien
+ Các trang cho chức năng liên quan đến lễ tân đặt trong gói lễ tân
+ Các trang cho chức năng liên quan đến nhân viên phục vụ đặt trong gói nvphucvu
Hệ thống quản lí đăng kí tín chỉ và điểm sinh viên – Software: Art of Design and
Programming (home.blog)

You might also like