Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

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

Tên môn học : Nhập môn công nghệ phần mềm

Tên lớp học phần : CNPM09

Tên đề tài nhóm : Hệ thống quản lý nhà hàng

Nhóm bài tập lớn : 15

Các thành viên nhóm 1. B17DCCN398 Nguyễn Văn Long

2. B17DCCN633 Đào Xuân Trường

3. B17DCCN650 Đỗ Văn Tuấn

4. B16DCAT169 Trương Ngọc Tuấn

Tên modul : Đặt bàn

Yêu cầu : Báo cáo tổng hợp BTL


TT Tên Tiếng Việt Tên Tiếng Anh Ngữ nghĩa
Nhóm thuật ngữ liên quan đến nhà hàng
Cơ sở chuyên kinh doanh về việc nấu
nướng và phục dịch các món ăn và đồ
1 Nhà hàng Restaurant
uống cho khách hàng đến mua và chủ yếu
dùng ngay ở đó
Người phục vụ món ăn cho khách hàng tại
2 Bồi bàn Waiter
mỗi bàn ăn
Các món ăn mà nhà hàng cung cấp tới
3 Món ăn Dish
khách hàng
4 Địa chỉ nhà hàng Restaurant Address Địa chỉ của nhà hàng hoạt động
Danh sách các món ăn và đồ uống có
5 Menu Menu
trong nhà hàng
6 Bàn ăn Table Nơi khách hàng ăn uống
7 Hóa đơn Bill Thông tin thanh toán của khách hàng
Hình thức thanh Các cách mà khách hàng có thể thanh
8 Payment form
toán toán
Chi phí cho dịch vụ mà khách hàng sử
9 Giá dịch vụ Service price
dụng
Người trông coi tài sản của nhà hàng và
10 Bảo vệ Protector
khách hàng
11 Lễ tân Receptionist Người tiếp đón khách hàng
12 Nhân viên bếp Kitchen staff Đầu bếp nấu trong nhà hàng
Bộ phận quản lý tài Financial
13 Quản lý doanh thu, chi tiêu của nhà hàng
chính management
14 Đồ uống Drink Các loại thức uống dùng trong nhà hàng
15 Giờ mở cửa Open time Thời gian mở cửa của nhà hàng
16 Giờ đóng cửa Close time Thời gian đóng cửa của nhà hàng
Các dịch vụ mà nhà hàng cung cấp cho
17 Dịch vụ Service
khách hàng
18 Khuyến mãi Promotion Những khuyến mãi của nhà hàng
19 Số bàn Number of table Đánh số bàn để dễ quản lý
Loại bàn mà khách hàng đặt: bàn thường,
20 Loại bàn Type of table
bàn vip
Số điện thoại nhà Restaurant phone
21 Số điện thoại của nhà hàng khi cần
hàng number
Tỉ lệ lấp đầy nhà Tỉ lệ nhà hàng bị trật kín khách hàng hoặc
22 Restaurant fill rate
hàng quá tải
23 Hóa đơn Bill Hóa đơn thanh toán
Tổng doanh thu
24 Turnover of the day Tổng số doanh thu trong một ngày
trong ngày
Tổng doanh thu Revenue of the
25 Tổng số doanh thu trong một tháng
tháng month
26 Đầu bếp Chef Người làm món ăn
Combo món ăn + Đồ ăn , nước uống trọn gói, giá tính theo
27 Combo
đồ uống combo ( giá không tính theo từng món )
Hủy bàn đã đặt khi khách không con nhu
28 Hủy bàn Cancel table
cầu
Hủy món ăn đã đặt khi khách hàng thay
29 Hủy món Cancel dish
đổi nhu cầu
Chịu trách nhiệm về xuất-nhập kho của
30 Quản lý kho Warehouse manager
nhà hàng
Người chịu trách nhiệm giao hàng cho
31 Người giao hàng Shipper
khách khi khách dặt online
32 Người rửa bát Dishwasher Người rửa bát của nhà hàng
Người chịu trách nhiệm công việc vệ sinh
33 Nhân viên vệ sinh Sanitation worker
cho nhà hàng
34 Thời gian order Order time Thời gian khách hàng đặt bàn
35 Doanh thu Monthly revenue Số tiền nhà hàng thu được trong 1 tháng
36 Giá món ăn Food prices Giá của một món ăn
37 Nhân viên Staff Nhân viên
Nhóm thuật ngữ liên quan đến khách hàng
38 Khách hàng Customer Người đến sử dụng dịch vụ nhà hàng
Là khách quan trọng của nhà hàng, được
39 Khách quan trọng Vip đánh dấu trên order để nhân viên biết ưu
tiên phục vụ.
40 Địa chỉ khách hàng Customer address Địa chỉ của khách hàng đến nhà hàng
Số điện thoại khách Customer phone
41 Số điện thoại của người đặt bàn
hàng number
Tiền khách hàng thưởng cho nhân viên
42 Tiền boa Give a tip
phục vụ
43 Giờ đặt Booking time Thời gian đặt món của khách hàng
44 Tên khách hàng Name customer Tên của khách hàng
45 Email Email Email của khách hàng

Mô tả bằng ngôn ngữ tự nhiên:


❖ Phạm vi:
Phần mềm dạng ứng dụng cho máy tính cá nhân, dùng nội bộ trong một
nhà hàng, chỉ có nhân viên nhà hàng được sử dụng trực tiếp. Phần mềm
có thể cài đặt trên nhiều máy tính cá nhân của nhân viên. Nhưng cơ sở
dữ liệu là tập trung tại một máy chủ duy nhất.
❖ Người dùng và chức năng của người dùng:
1. Chỉ có nhân viên quản lý và nhân viên lễ tân của nhà hàng được
phép dùng phần mềm.
2. Nhân viên quản lý có thể thực hiện một số các chức năng:
• Quản lý tài khoản
• Quản lý nhà hàng: thêm/sửa
• Xem thống kê món ăn theo doanh thu
• Quản lý món ăn
• Quản lý combo món ăn
• Quản lý bàn ăn
3. Nhân viên lễ tân có thể thực hiện một số chức năng như:
• Thanh toán cho khách hàng
• Thống kê mặt hàng
• Đặt bàn theo yêu cầu trực tiếp của khách hàng
• Đặt bàn cho khách hàng qua điện thoại
• Hủy đặt bàn theo yêu cầu của khách hàng tại quầy
• Hủy đặt bàn theo yêu cầu của khách hàng qua điện thoại
• Chọn món ăn khi khách hàng gọi món
4. Khách hàng (gián tiếp)
❖ Các đối tượng phải quản lý trong hệ thống:
• Nhà hàng: Tên, địa chỉ, số sao, mô tả, email, số điện thoại
• Khách hàng: Tên, số điện thoại, email, địa chỉ
• Nhân viên: Tên, địa chỉ, chức vụ, username, password
• Bàn ăn: Tên, loại, số người tối đa, mô tả
• Món ăn: Tên, loại, giá, mô tả
• Combo: Tên, giá, mô tả, tổng số món
• Phiếu đặt bàn: Ngày đặt, giờ đặt
• Hóa đơn: Giờ thanh toán, mã giảm giá, tổng số tiền
❖ Quan hệ giữa các đối tượng cần xử lý:
• Một nhà hàng có nhiều bàn ăn
• Mỗi bàn có thể được đặt bởi nhiều khách hàng khác nhau tại các thời
điểm khác nhau
• Mỗi khách hàng có thể đặt nhiều bàn khác nhau tại các thời điểm khác nhau
• Khách hàng chỉ có thể đặt bàn nếu bàn đó còn trống.
• Khách hàng có thể hủy đặt đặt bàn nếu hủy trước ngày đến. Nếu khách
hàng hủy đặt bàn sau ngày đến thì có thể bị lưu vào danh sách đen và có
thể bị từ chối ở những lần đặt tiếp theo.
• Khách hàng phải thanh toán trước khi rời nhà hàng.
• Đối với khách hàng đi theo đoàn thì tại mỗi thời điểm, có thể đứng tên
một khách hàng (đại điện cho cả đoàn)
• Một bàn ăn có thể có nhiều món ăn hoặc combo
• Mỗi món ăn hoặc combo có thể được gọi ở nhiều bàn
• Một khách hàng có thể có nhiều phiếu đặt bàn
• Một phiếu đặt bàn có thể được thanh toán ở nhiều hóa đơn (trả trước, trả
sau)
• Một nhân viên có thể thực hiện nhiều phiếu đặt bàn và thanh toán ở nhiều
hóa đơn
Mô tả nghiệp vụ chi tiết của các chức năng:
• Chức năng đặt bàn: Nhân viên chọn chức năng đặt bàn khi khách hàng
gọi đến → giao diện tìm bàn trống hiện ra → NV nhập ngày + giờ đặt + số
lượng khách và bấm tìm → kết quả hiện ra gồm danh sách các bàn còn
trống vào ngày giờ đấy: mã, tên, số lượng khách tối đa → NV chọn 1 bàn
theo yêu cầu của KH → Giao diện nhập thông tin KH hiện ra → NV hỏi
khách hàng và nhập mã, tên, số ĐT, email và click tìm → Hệ thống hiện
danh sách các khách hàng có cùng tên vừa nhập, mỗi khách hàng trên 1
dòng: mã, tên, số ĐT, email, → NV click vào dòng đúng với KH đang đặt
(nếu không có thì lick thêm KH mới) → Hệ thống hiện lên giao diện xác
nhận có đầy đủ thông tin bàn + thông tin KH + ngày giờ đặt → NV xác
nhận với KH và click xác nhận → Hệ thống lưu thông tin vào CSDL.
• Chức năng hủy bàn: Nhân viên lễ tân login vào hệ thống bằng username
và password của mình → giao diện trang chủ hiện ra → nhân viên lễ tân
click chọn chức năng hủy bàn → giao diện hủy bàn hiện lên với các ô input
và dropdown cho phép nhập và chọn ( số bàn: hiển thị tất cả các bàn ăn có
trong nhà hàng với dropdown cho phép chọn, thời gian đặt bàn from - to:
nhân viên lễ tân click vào ô input kèm icon datepicker → popup datepicker
hiện lên cho phép nhân viên chọn khoảng thời gian từ lúc đặt bàn đến lúc
trả bàn→ giá trị được hiển thị trong ô input, nhân viên click chọn tìm kiếm
→ kết quả hiện ra gồm danh sách các bàn mà KH đã đặt gồm mã bàn, ngày
đặt, giờ đặt → NV chọn 1 bàn theo yêu cầu của KH → Click hủy→ Hệ
thống hủy bàn , hủy tên, mã, sđt , email người đặt → Hệ thống hiện lên
giao diện xác nhận hủy có đầy đủ thông tin bàn + thông tin KH + ngày giờ
đặt → NV xác nhận với KH và click xác nhận hủy → Hệ thống xóa thông
tin khỏi CSDL → quay lại giao diện chính sau khi login.
• Chức năng gọi món: Nhân viên chọn chức năng gọi món → giao diện
chọn bàn hiện ra với danh sách bàn và số hiệu sổ xuống → Nhân viên chọn
bàn đúng với khách hàng đang gọi món → giao diện nhập món được gọi
hiện ra →NV hỏi KH và nhập vào tên món ăn + chọn tìm → kết quả hiện
ra gồm danh sách các món ăn chi tiết: mã, loại, tên, giá → NV chọn 1 món
ăn theo đúng như KH gọi và NV click chọn → Yêu cầu nhập số lượng →
NV nhập số lượng và tích OK → Tên món ăn + số lượng + số tiền tạm tính
được thêm vào danh sách các món ăn đã chọn phía dưới. NV lặp lại các
bước chọn món ăn này cho đến khi nhập vào được hết các món ăn mà KH
trong bàn đã gọi. NV đọc lại để xác nhận với KH → NV click xác nhận →
Hệ thống lưu lại
• Chức năng thanh toán: KH yêu cầu NV thanh toán → Nhân viên chọn chức
năng thanh toán → Giao diện chọn bàn hiện ra với danh sách bàn và số hiệu
sổ xuống → NV chọn bàn đúng với bàn của KH → Giao diện hóa đơn chi tiết
của bàn hiện ra như mô tả ở trên → NV hỏi KH có phiếu giảm giá không →
Nếu có thì click thêm phiếu giảm giá + nhập mã → Giao diện hóa đơn thêm
dòng phiếu giảm giá và cập nhật lại tổng tiền phải thanh toán → NV báo KH
số tiền → Sau khi thanh toán, NV click xác nhận → Hệ thống lưu lại và in
hóa đơn chi tiết cho KH.
• Chức năng thống kê: Quản lý login vào hệ thống bằng username và password
của mình → chọn chức năng thống kê món ăn theo doanh thu → giao diện
chọn thời gian thống kê (ngày bắt đầu - kết thúc) hiện ra → quản lý chọn xong
bấm nút thống kê → kết quả hiện ra gồm danh sách các món ăn/combo chi
tiết: mã, loại, tên, tổng số lượt bán, tổng doanh thu. Sắp xếp theo tổng doanh
thu của từng món, cho phép sắp xếp từ cao đến thấp hoặc từ thấp đến cao →
QL click vào 1 dòng của 1 món ăn/combo → hệ thống hiện lên giao diện chi
tiết danh sách các lần món ăn được gọi: id, tên khách, ngày giờ đặt món, số
lượng món, tổng tiền. QL click vào nút đóng, giao diện chi tiết danh sách món
ăn đóng lại và trở về giao diện thống kê chính → QL click close → popup
hiện lên hỏi “bạn có muốn đóng màn hình?” cùng với 2 button “đồng ý” và
“hủy bỏ” → Nếu QL click button “đồng ý” thì giao diện thống kê đóng lại
và quay lại về màn hình chính khi login. Ngược lại nếu QL click “hủy bỏ”
→ popup đóng lại và trở về giao diện thống kê
UC tổng quan:

Các use case được mô tả như sau:


• Ql mon an: UC này cho phép Nv quan ly quản lý các món ăn trong nhà hàng
• Ql combo mon an: UC này cho phép NV quan ly quản lý các combo món ăn trong
nhà hàng (thêm món vào combo, sửa, xóa,..)
• Ql nha hang: UC này cho phép Nv quan ly cập nhật thông tin về nhà hàng
• Ql ban an: UC này cho phép Nv quan ly quản lý bàn ăn trong nhà hàng: thêm, xóa
bàn,...
• Xem thong ke: UC này cho phép Nv quan ly xem xét thống kê món ăn theo doanh
thu cả nhà hàng
• Ql tai khoan: Uc này cho phép Nv quan ly quản lý tài khoản của nhân viên trong
nhà hàng: thêm, sửa, xóa.
• Thong ke mat hang: UC này cho phép Nv le tan thống kê các món ăn đã xuất
• Dat ban qua dien thoai: UC này cho phép Nv le tan xác nhận đặt bàn của khách
hàng qua điện thoại.
• Huy dat ban qua dien thoai: UC cho phép Nv le tan xác nhận hủy đặt bàn của
khách hàng qua điện thoại.
• Thanh toan: UC này cho phép Khach hang thanh toán hóa đơn.
• Dat ban tai quay: UC này cho phép Khach hang đặt bàn tại quầy.
• Huy dat ban tai quay: UC này cho phép Khach hang hủy đặt bàn tại quầy.
• Dat ban: UC này cho phép Khach hang đặt bàn.
• Huy ban: UC này cho phép Khach hang hủy đặt bàn.
• Goi mon: UC này cho phép Nv le tan gọi món ăn theo Khach hang đã yêu cầu.
UC chi tiết modul đặt bàn

Các use case được mô tả như sau:


• Dat ban: UC này cho phép Nv le tan đặt bàn theo yêu cầu của Khach hang.
• Tim ban trong: UC này cho phép Nv le tan tìm bàn còn trống theo yêu cầu của
Khach hang.
• Tim khach hang: UC này cho phép Nv le tan tìm đúng Khach hang đang đặt
bàn.
• Them khach hang: UC này cho phép Nv le tan click thêm Khach hang mới
nếu Khach hang đang đặt không có trong danh sách.
• Xac nhan: UC này cho phép Nv le tan xác nhận đã đặt bàn thành công cho
Khach hang.

Kịch bản v.1 cho chức năng đặt bàn:


1. Nhân viên lễ tân A click chọn chức năng đặt bàn trong menu quản lý đặt bàn.
Nhân viên A muốn đặt bàn cho khách hàng B, người đang gọi điện thoại yêu cầu
đặt bàn hoặc đang đặt bàn tại quầy.
2. Hệ thống hiển thị giao diện tìm bàn trống: ngày giờ đến, số lượng khách.
3. Nhân viên A hỏi khách hàng B ngày giờ đến và số lượng khách.
4. Khách hàng B trả lời muốn đặt bàn vào ngày 2020-05-20, lúc 20:00:00 và số
lượng khách là 10.
5. Nhân viên A nhập ngày 2020-05-20, giờ 20:00:00, số lượng khách 10 và click vào
nút tìm bàn trống.
6. Hệ thống hiển thị danh sách các bàn trống theo các yêu cầu vừa nhập:
Mã Tên Số lượng khách tối đa Mô tả
1 A1 10 Inside
2 A2 15 Outside
3 A3 20 Outside

7. Nhân viên A thông báo các bàn có thể đặt cho khách hàng B và yêu cầu khách
hàng B chọn 1 bàn trong số đó.
8. Khách hàng B chọn bàn A2, Outside (ngoài trời).
9. Nhân viên A click vào bàn A2 (dòng số 2).
10. Hệ thống hiển thị giao diện nhập thông tin khách hàng: Tên, số ĐT, email, địa chỉ.
11. Nhân viên A hỏi khách hàng B các thông tin trên.
12. Khách hàng B khai: Tên là B, số ĐT là 0123456789, email là b99pro@gmail.com,
địa chỉ là Thái Bình.
13. Nhân viên A nhập B vào ô tên và click tìm kiếm.
14. Hệ thống hiển thị danh sách các khách hàng có chứa chữ B trong hệ thống:
Mã Tên Số ĐT Email Địa chỉ
1 B 0123456789 b99pro@gmail.com Thái Bình
2 B 0189445776 b@gmail.com Hà Giang
3 BKA 0912345678 bka@gmail.com Tây Ninh

15. Nhân viên A thấy khách hàng B có các thông tin đúng với hàng thứ nhất nên click
chọn hàng đó.
16. Hệ thống hiển thị giao diện xác nhận thông tin đặt bàn bao gồm thông tin bàn A2,
Outside; thông tin khách hàng B, đến từ Thái Bình; đặt bàn vào ngày 2020-05-20,
giờ 20:00:00; nút xác nhận và hủy bỏ.
17. Nhân viên A xác nhận các thông tin với khách hàng B trước khi lưu.
18. Khách hàng B xác nhận đúng thông tin.
19. Nhân viên click vào nút xác nhận (lưu thành công).
20. Hệ thống thông báo đặt bàn thành công và quay về menu quản lý đặt bàn.
21. Nhân viên A thông báo cho khách hàng B đã đặt bàn thành công.
Ngoại lệ:
6. Hệ thống thông báo không còn bàn trống với ngày, giờ đến và số lượng khách đã
nhập.
14. Không có khách hàng nào hiện lên trong kết quả tìm kiếm hoặc không có khách hàng
đúng thông tin với khách hàng đang đặt.
- Mô tả hệ thống như sau:
Hệ thống quản lý thông tin về nhà hàng, thông tin về các món ăn, thông tin về các bàn ăn,
thông tin về khách hàng đặt bàn. Hệ thống cho phép nhân viên quản lý có thể quản lý
món ăn,quản lý combo món ăn, quản lý bàn ăn, quản lý nhà hàng và xem các báo cáo
thống kê. Hệ thống cũng cho phép khách hàng đặt bàn qua điện thoại thông qua nhân
viên lễ tân hoặc đến nhà hàng đặt bàn trực tiếp tại quầy thông qua nhân viên lễ tân. Hệ
thống còn cho phép nhân viên lễ tân thực hiện các hoạt động như gọi món cho khách
hàng, thanh toán cho khách hàng. Khi thực hiện thanh toán cho khách hàng, hóa đơn
được in ra cho khách hàng đã bao gồm cả phiếu giảm giá.
- Có các danh từ và các phân tích như sau:
+ Hệ thống: danh từ chung => loại
+ Thông tin: danh từ chung => loại
+ Nhà hàng: là đối tượng xử lý của hệ thống => là 1 lớp thực thể: NhaHang
+ Món ăn: là đối tượng xử lý của hệ thống => là 1 lớp thực thể: MonAn
+ Combo món ăn: là đối tượng xử lý của hệ thống =>là 1 lớp thực thể:Combo
+ Bàn ăn: là đối tượng xử lý của hệ thống => là 1 lớp thực thể: BanAn
+ Nhân viên quản lý: không phải là đối tượng xử lý trực tiếp của hệ thống, nhưng cũng bị
quản lý cùng với nhân viên lễ tân theo kiểu người dùng trực tiếp của phần mềm => đề
xuất 1 lớp thực thể chung là NhanVien
+ Khách hàng: là đối tượng xử lý của hệ thống => là 1 lớp thực thế: KhachHang.
+ Điện thoại: không thuộc phạm vi xử lý của phần mềm => loại
+ Nhân viên lễ tân: không phải là đối tượng xử lý trực tiếp của hệ thống, nhưng cũng bị
quản lý cùng với nhân viên quản lý theo kiểu người dùng trực tiếp của phần mềm => đề
xuất 1 lớp thực thể chung là NhanVien
+ Quầy: không thuộc phạm vi xử lý của phần mềm => loại
+ Hóa đơn: là đối tượng xử lý của hệ thống => là 1 lớp thực thể HoaDon
+ Phiếu giảm giá:là đối tượng xử lý của hệ thống => là 1 thuộc tính của lớp thực thể
HoaDon
+ Các thông tin thống kê: thống kê món ăn theo doanh thu => TKDoanhThu, thống kê
món ăn => TKMonAn, thống kê bàn ăn => TKBanAn
→ Như vậy, chúng ta thu được các lớp thực thể ban đầu là: NhaHang, MonAn, BanAn,
NhanVien, KhachHang, HoaDon, TKDoanhThu, TKMonAn, TKBanAn, Combo
- Quan hệ giữa các lớp thực thể được mô tả như sau:
• Một NhaHang có nhiều BanAn, một BanAn chỉ thuộc về một NhaHang (1-n)
• Một BanAn có thể gọi nhiều MonAn, một MonAn có thể được gọi từ nhiều
BanAn (n-n).Do đó bổ sung lớp thực thể liên kết giữa 2 đối tượng này là
MonAnDaGoi
• Một BanAn có thể gọi nhiều Combo, một Combo có thể được gọi từ nhiều
BanAn (n-n).Do đó bổ sung lớp thực thể liên kết giữa 2 đối tượng này là
ComboDaGoi
• Một KhachHang có thể đặt nhiều BanAn và một BanAn có thể được đặt bởi
nhiều KhachHang => quan hệ n-n => bổ sung thêm lớp liên kết giữa 2 đối tượng
này là PhieuDatBan
• Một KhacHang có thể có nhiều PhieuDatBan, một BanAn cũng có thể có nhiều
PhieuDatBan tại nhiều thời điểm khác nhau. Nhưng mỗi lần đặt bàn,
KhachHang có thể đặt nhiều bàn => mối quan hệ PhieuDatBan và BanAn là n-n
nên cần tách thành một lớp trung gian ở giữa là BanDaDat. Một PhieuDatBan và
một BanAn xác định duy nhất một BanDaDat. Liên kết này xác định thêm các
thông tin như ngày đến, giờ đến và giờ về
• Một NhanVien có thể lập nhiều HoaDon cho KhachHang, một HoaDon chỉ
được thanh toán bởi một NhanVien
• Một Nhanvien có thể lập nhiều PhieuDatBan, một PhieuDatBan chỉ được làm
bởi 1 NhanVien
• Một PhieuDatBan có thể có nhiều HoaDon (thanh toán trước, thanh toán sau khi
ăn xong), một HoaDon chỉ thanh toán cho 1 PhieuDatBan )

Biểu đồ lớp thực thể phân tích:


Trích lớp biên, trích lớp điều khiển:
2+6. Giao diện nhân viên lễ tân: đặt bàn, gọi món, thanh toán, thống kê:
- ReceptionistHomeView:
• subBookTable
• subOrder
• subPay
• subStat
Giao diện tìm bàn trống: ô nhập ngày đến, giờ đến, số lượng khách, nút tìm kiếm,
bảng kết quả:
- SearchFreeTableView:
• inDate
• inTime
• inNumberOfClient
• subSearch
• outListTable
- Xử lý tìm bàn trống:
• Input: ngày đến, giờ đến, số lượng khách
• Output: listTable → BanAn
• Hàm searchFreeTable() → BanAn
10. Giao diện tìm thông tin khách hàng: tên khách hàng, nút tìm kiếm, bảng kết quả:
- SearchClientView:
• inName
• subSearch
• outListClient
- Xử lý tìm thông tin khách hàng:
➢ Input: tên khách hàng
➢ Output: listKhachHang
→ Hàm searchClient() → KhachHang
Giao diện thêm khách hàng mới: tên, số ĐT, email, địa chỉ, nút thêm khách hàng
- AddClientView:
• inName
• inPhoneNumber
• inEmail
• inAddress
• subAdd
- Xử lý thêm khách hàng mới:
➢ Input: tên, số ĐT, email, địa chỉ → KhachHang
➢ Output: KhachHang
→ Hàm addClient() → KhachHang
16. Giao diện xác nhận thông tin đặt bàn
- ConfirmView:
• outBookedTable
• outClient
• subConfirm
• subCancel
- Xử lý lưu lại thông tin đặt bàn:
• Input: khách hàng và bàn ăn đã đặt → PhieuDatBan
• Output: true/false
• Hàm addBooking() → PhieuDatBan

Biểu đồ lớp chi tiết modul đặt bàn:


Kịch bản v.2 cho chức năng đặt bàn:
1. Khách hàng gọi điện cho nhân viên để đặt bàn
2. Nhân viên chọn chức năng đặt bàn trong giao diện ReceptionistHomeView
3. Lớp ReceptionistHomeView gọi lớp SearchFreeTableView
4. Lớp SearchFreeTableView hiển thị
5. Nhân viên hỏi khách hàng ngày, giờ đến và số lượng khách
6. Khách hàng trả lời nhân viên các thông tin trên
7. Nhân viên nhập các thông tin đó trên giao diện SearchFreeTableView và click tìm
kiếm
8. Lớp SearchFreeTableView gọi lớp BanAn để tìm bàn trống
9. Lớp BanAn thực hiện tìm bàn trống
10. Lớp BanAn trả về kết quả cho lớp SearchFreeTableView
11. Lớp SearchFreeTableView hiển thị
12. Nhân viên hỏi khách hàng để chọn 1 bàn trống
13. Khách hàng thông báo với nhân viên bàn mà mình chọn
14. Nhân viên click chọn bàn đó trên giao diện SearchFreeTableView
15. Lớp SearchFreeTableView gọi lớp SearchClientView hiển thị
16. Lớp SearchClientView hiển thị
17. Nhân viên hỏi khách hàng các thông tin cá nhân của khách hàng
18. Khách hàng thông báo cho nhân viên các thông tin cá nhân cần thiết
19. Nhân viên nhập tên khách hàng trên giao diện SearchClientView và nhấn tìm kiếm
20. Lớp SearchClientView gọi lớp KhachHang để tìm kiếm khách hàng
21. Lớp KhachHang thực hiện tìm kiếm khách hàng
22. Lớp KhachHang trả về kết quả cho lớp SearchClientView
23. Lớp SearchClientView hiển thị
24. Nhân viên click vào dòng đúng với khách hàng đang đặt, nếu không có thì thực
hiện thêm khách hàng mới
25. Lớp SearchClientView gọi lớp ConfirmView hiển thị
26. Lớp ConfirmView hiển thị
27. Nhân viên hỏi lại khách hàng để xác nhận các thông tin đặt bàn
28. Khách hàng xác nhận lại với nhân viên
29. Nhân viên click nút xác nhận trên giao diện ConfirmView
30. Lớp ConfirmView gọi lớp PhieuDatBan để lưu lại thông tin đặt bàn
31. Lớp PhieuDatBan lưu thông tin đặt bàn
32. Lớp PhieuDatBan trả về kết quả cho lớp ConfirmView
33. Lớp ConfirmView hiển thị xác nhận đặt bàn thành công
34. Nhân viên click OK
35. Lớp ConfirmView gọi lớp ReceptionistHomeView hiển thị
36. Lớp RecptionistHomeView hiển thị
37. Nhân viên thông báo cho khách hàng đã đặt bàn thành công

Biểu đồ lớp tuần tự phân tích modul đặt bàn:


Biểu đồ lớp thực thể thiết kế:
Biểu đồ CSDL:
Biểu đồ thiết kế tĩnh:

Kịch bản v.3 cho chức năng đặt bàn:


1. Nhân viên lễ tân nhập tên đăng nhập và mật khẩu và click đăng nhập trên giao
diện LoginFrm khi khách hàng gọi tới
2. Hàm actionPerformed() của lớp LoginFrm được gọi
3. Hàm actionPerformed() gọi các phương thức của lớp NhanVien để đóng gói các
thuộc tính đăng nhập thành đối tượng NhanVien
4. Lớp NhanVien đóng gói xong, trả đối tượng NhanVien về cho phương thức
actionPerformed()
5. Phương thức actionPerformed() gửi đối tượng NhanVien này cho lớp
NhanVienDAO để gọi phương thức checkLogin()
6. Phương thức checkLogin() kiểm tra thông tin đăng nhập
7. Phương thức checkLogin() trả về kết quả cho phương thức actionPerformed()
8. Phương thức actionPerformed() gọi lớp ReceptionistHomeFrm
9. Phương thức ReceptionistHomeFrm() được gọi, giao diện tương ứng hiển thị
10. Nhân viên chọn chức năng đặt bàn
11. Phương thức actionPerformed() được kích hoạt
12. Phương thức actionPerformed() gọi lớp SearchFreeTableFrm
13. Phương thức SearchFreeTableFrm() được kích hoạt, giao diện hiển thị
14. Nhân viên hỏi khách hàng thông tin về ngày, giờ đến, số lượng khách để tìm bàn
trống
15. Khách hàng trả lời nhân viên
16. Nhân viên nhập ngày, giờ đến, số lượng khách và click tìm kiếm
17. Phương thức actionPerformed() của lớp SearchFreeTableFrm được gọi
18. Phương thức actionPerformed() gọi lớp BanAnDAO để gọi phương thức
searchFreeTable()
19. Phương thức searchFreeTable() thực hiện tìm bàn trống
20. Phương thức searchFreeTable() gọi các phương thức đóng gói của lớp BanAn để
đóng gói kết quả tìm kiếm
21. Lớp BanAn thực hiện đóng gói trả về đối tượng cho phương thức
searchFreeTable()
22. Phương thức searchFreeTable() trả về kết quả cho phương thức actionPerformed()
của lớp SearchFreeTableFrm
23. Lớp SearchFreeTableFrm hiển thị
24. Nhân viên hỏi khách hàng để chọn 1 bàn
25. Khách hàng trả lời nhân viên
26. Nhân viên click chọn 1 bàn
27. Phương thức actionPerformed() được kích hoạt
28. Phương thức actionPerformed() gọi lớp BanDaDat để tạo mới một đối tượng
BanDaDat
29. Lớp BanDaDat trả về đối tượng BanDaDat cho phương thức actionPerformed()
30. Phương thức actionPerformed() gọi lớp SearchClientFrm
31. Phương thức SearchClientFrm() được gọi, giao diện tương ứng hiển thị
32. Nhân viên hỏi khách hàng thông tin của họ
33. Khách hàng trả lời nhân viên
34. Nhân viên nhập tên khách hàng và click tìm kiếm
35. Phương thức actionPerformed() của lớp SearchClientFrm được gọi
36. Phương thức actionPerformed() gọi lớp KhachHangDAO để gọi phương thức
searchClient()
37. Phương thức searchClient() thực hiện tìm khách hàng
38. Phương thức searchClient() gọi các phương thức đóng gói của lớp KhachHang để
đóng gói kết quả tìm kiếm
39. Lớp KhachHang thực hiện đóng gói trả về đối tượng cho phương thức
searchClient()
40. Phương thức searchClient() trả về kết quả cho phương thức actionPerformed() của
lớp SearchClientFrm
41. Lớp SearchClientFrm hiển thị
42. Nhân viên click chọn khách hàng đúng với khách hàng đang đặt bàn
43. Phương thức actionPerformed() được kích hoạt
44. Phương thức actionPerformd() gọi lớp CofirmFrm
45. Phương thức ConfirmFrm() được gọi, giao diện tương ứng hiển thị
46. Nhân viên hỏi khách hàng để xác nhận các thông tin đặt bàn
47. Khách hàng xác nhận với nhân viên
48. Nhân viên click xác nhận
49. Phương thức actionPerformed() của lớp ConfirmFrm được gọi
50. Phương thức actionPerformed() gọi lớp PhieuDatBan để tạo mới một đối tượng
PhieuDatBan
51. Lớp PhieuDatBan trả về đối tượng PhieuDatBan về cho phương thức
actionPerformed()
52. Phương thức actionPerformed() gửi đối tượng PhieuDatBan cho lớp
PhieuDatBanDAO để gọi phương thức addBooking()
53. Phương thức addBooking() thực hiện lưu thông tin đặt bàn
54. Phương thức addBooking() trả vể kết quả cho phương thức actionPerformed()
55. Phương thức actionPerformed() hiện thông báo thành công
56. Nhân viên click OK
57. Phương thức actionPerformed() gọi lại lớp ReceptionistHomeFrm
58. Lớp ReceptionistHomeFrm hiển thị
59. Nhân viên thông báo cho khách hàng đã đặt bàn thành công
Biểu đồ lớp tuần tự thiết kế modul đặt bàn:
Blackbox test plan:
Chức năng/use case Các lớp test case
Đặt 1 bàn còn trống, khách hàng đã tồn tại
Đặt 1 bàn còn trống, khách hàng chưa tồn tại
Đặt bàn
Đặt 1 bàn không còn trống
Đặt liên tục 1 bàn còn trống, khách hàng đã tồn tại

Note: Mỗi bàn ăn đặt vào 1 buổi, (sáng: trước 12:00:00, chiều: sau 12:00:00). Trong 1
buổi của cùng 1 ngày, nếu khách hàng chưa về thì bàn đó vẫn tính là bàn đã đặt,
khách hàng khác muốn đặt bàn đó phải đặt vào buổi còn lại; nếu khách hàng về rồi,
khách hàng khác có thể đặt bàn đó sau khi khách hàng kia đã về.
Test case cho trường hợp đặt 1 bàn còn trống, khách hàng đã tồn tại:
- CSDL trước khi test:
tblNhaHang
id ten diaChi soSao moTa email soDienThoai
1 Hải Sơn Hà 3 haison@gmail.com 0123456789
Đông

tblBanAn
id idNhaHang ten loai soNguoiToiDa moTa
1 1 A1 Vip1 12 Inside
2 1 A2 Vip2 10 Inside
3 1 B1 Vip2 12 Outside
4 1 B2 Vip3 15 Outside

tblNhanVien
id ten username password diaChi chucVu
1 A a a Hà Nội Nv lễ tân
2 B b b Hà Nam Nv lễ tân
3 C c c Nam Định Nv quản lý
4 D d d Thái Bình Nv lễ tân
tblKhachHang
id ten soDienThoai email diaChi
1 Trường 0122333 tr@gmail.com Thái Bình
2 Thịnh 0987555 th@gmail.com Hà Nội
3 Minh 0112456 mi@gmail.com Hà Nam
4 Long 0476984 lo@gmail.com Nam Định

tblPhieuDatBan
id idKhachHang idNhanVien ngayDat gioDat
1 2 2 2020-04-12 13:00:00

tblBanDaDat
id idBanAn idPhieuDatBan ngayDen gioDen gioVe soLuongKhach
1 1 1 2020-04-13 15:00:00 null 10

Các bước thực hiện Kết quả mong đợi


1. Khởi động phần Giao diện đăng nhập:
mềm - username
- password
- nút Login
2. Nhập username = a, Giao diện nhân viên lễ tân:
password = a và click - đặt bàn
Login - gọi món
- thanh toán
- thống kê theo doanh thu
3. Click đặt bàn Giao diện tìm bàn trống:
- ngày
- giờ
- số lượng khách
- nút tìm kiếm
4. Nhập Giao diện tìm bàn trống: ngày = 2020-04-13, giờ =
ngày = 2020-04-13, 08:00:00, số lượng khách = 12
giờ = 08:00:00, Kết quả:
số lượng khách = 12
và click tìm kiếm id idNhaHang ten loai soNguoiToiDa moTa
1 1 A1 Vip1 12 Inside
3 1 B1 Vip2 12 Outside
4 1 B2 Vip3 15 Outside
5. Click bàn A1 Giao diện chuyển sang giao diện tìm khách hàng:
(dòng 1) - tên khách hàng
- nút tìm kiếm
- nút thêm
6. Nhập tên = T và Giao diện tìm khách hàng:
click tìm kiếm Kết quả:

id ten soDienThoai email diaChi


1 Trường 0122333 tr@gmail.com Thái
Bình
2 Thịnh 0987555 th@gmail.com Hà
Nội

7. Click khách hàng Giao diện chuyển sang giao diện xác nhận:
tên Trường (dòng 1) - thông tin bàn đặt:
id idNhaHang ten loai soNguoiToiDa moTa
1 1 A1 Vip1 12 Inside
- thông tin khách hàng:
id ten soDienThoai email diaChi
1 Trường 0122333 tr@gmail.com Thái
Bình
- ngày = 2020-04-13
- giờ = 08:00:00

8. Click xác nhận Thông báo đặt bàn thành công


9. Click OK Giao diện nhân viên lễ tân:
- đặt bàn
- gọi món
- thanh toán
- thống kê theo doanh thu

- CSDL sau khi test:


• tblNhaHang: không đổi
• tblBanAn: không đổi
• tblNhanVien: không đổi
• tblKhachHang: không đổi
• tblPhieuDatBan: (ngayDat, gioDat lấy theo thời gian hệ thống)
id idKhachHang idNhanVien ngayDat gioDat
1 2 2 2020-04-12 13:00:00
2 1 1 2020-04-12 13:20:00
• tblBanDaDat:
id idBanAn idPhieuDatBan ngayDen gioDen gioVe soLuongKhach
1 1 1 2020-04-13 15:00:00 null 10
2 1 2 2020-04-13 08:00:00 null 12

Test case cho trường hợp đặt 1 bàn trống, khách hàng chưa tồn tại
- CSDL trước khi test:
tblNhaHang
id ten diaChi soSao moTa email soDienThoai
1 Hải Sơn Hà 3 haison@gmail.com 0123456789
Đông

tblBanAn
id idNhaHang ten loai soNguoiToiDa moTa
1 1 A1 Vip1 12 Inside
2 1 A2 Vip2 10 Inside
3 1 B1 Vip2 12 Outside
4 1 B2 Vip3 15 Outside

tblNhanVien
id ten username password diaChi chucVu
1 A a a Hà Nội Nv lễ tân
2 B b b Hà Nam Nv lễ tân
3 C c c Nam Định Nv quản lý
4 D d d Thái Bình Nv lễ tân
tblKhachHang
id ten soDienThoai email diaChi
1 Trường 0122333 tr@gmail.com Thái Bình
2 Thịnh 0987555 th@gmail.com Hà Nội
3 Minh 0112456 mi@gmail.com Hà Nam
4 Long 0476984 lo@gmail.com Nam Định

tblPhieuDatBan
id idKhachHang idNhanVien ngayDat gioDat
1 2 2 2020-04-12 13:00:00

tblBanDaDat
id idBanAn idPhieuDatBan ngayDen gioDen gioVe soLuongKhach
1 1 1 2020-04-13 15:00:00 null 10

Các bước thực hiện Kết quả mong đợi


1. Khởi động phần Giao diện đăng nhập:
mềm - username
- password
- nút Login
2. Nhập username = a, Giao diện nhân viên lễ tân:
password = a và click - đặt bàn
Login - gọi món
- thanh toán
- thống kê theo doanh thu
3. Click đặt bàn Giao diện tìm bàn trống:
- ngày
- giờ
- số lượng khách
- nút tìm kiếm
4. Nhập Giao diện tìm bàn trống: ngày = 2020-04-13, giờ =
ngày = 2020-04-13, 08:00:00, số lượng khách = 12
giờ = 08:00:00, Kết quả:
số lượng khách = 12 id idNhaHang ten loai soNguoiToiDa moTa
và click tìm kiếm 1 1 A1 Vip1 12 Inside
3 1 B1 Vip2 12 Outside
4 1 B2 Vip3 15 Outside
5. Click bàn A1 Giao diện chuyển sang giao diện tìm khách hàng:
(dòng 1) - tên khách hàng
- nút tìm kiếm
- nút thêm
6. Nhập tên = Mạnh Giao diện tìm khách hàng:
và click tìm kiếm Kết quả:

id ten soDienThoai email diaChi

7. Click nút thêm Giao diện chuyển sang giao diện thêm khách hàng mới:
- tên khách hàng
- số điện thoại
- email
- địa chỉ
8. Nhập tên = Mạnh, Thông báo thêm khách hàng thành công
số điện thoại =
0112345,
email =
ma@gmail.com,
địa chỉ = Hà Giang,
và click nút thêm
9. Click OK Giao diện chuyển sang giao diện xác nhận:
- thông tin bàn đặt:
id idNhaHang ten loai soNguoiToiDa moTa
1 1 A1 Vip1 12 Inside
- thông tin khách hàng:
id ten soDienThoai email diaChi
5 Mạnh 0122345 ma@gmail.com Hà
Giang
- ngày = 2020-04-13
- giờ = 08:00:00

10. Click xác nhận Thông báo đặt bàn thành công
11. Click OK Giao diện nhân viên lễ tân:
- đặt bàn
- gọi món
- thanh toán
- thống kê theo doanh thu

- CSDL sau khi test:


• tblNhaHang: không đổi
• tblBanAn: không đổi
• tblNhanVien: không đổi
• tblKhachHang:
id ten soDienThoai email diaChi
1 Trường 0122333 tr@gmail.com Thái Bình
2 Thịnh 0987555 th@gmail.com Hà Nội
3 Minh 0112456 mi@gmail.com Hà Nam
4 Long 0476984 lo@gmail.com Nam Định
5 Mạnh 0122345 ma@gmail.com Hà Giang

• tblPhieuDatBan: (ngayDat, gioDat lấy theo thời gian hệ thống)


id idKhachHang idNhanVien ngayDat gioDat
1 2 2 2020-04-12 13:00:00
2 5 1 2020-04-12 13:20:00
• tblBanDaDat:
id idBanAn idPhieuDatBan ngayDen gioDen gioVe soLuongKhach
1 1 1 2020-04-13 15:00:00 null 10
2 1 2 2020-04-13 08:00:00 null 12

You might also like