Professional Documents
Culture Documents
CNPM
CNPM
CNPM
I, Lý do chọn đề tài:....................................................................................................
1
I. Viết đặc tả UC.................................................................................................
5.1 Phân tích chi tiết chức năng xem thống kê doanh thu theo phòng...............
5.2 Phân tích chi tiết chức năng xem thống kê doanh thu theo phòng...............
I, Biểu đồ UC........................................................................................................
+ Test case 1: có phòng trống và có khách hàng trong CSDL (test case
chuẩn, bỏ qua phần login)..................................................................................
+ Test case 3: Đặt 2 lần liên tiếp cùng phòng, cùng ngày khi chỉ còn 1
phòng trống duy nhất.........................................................................................
I, Biểu đồ UC........................................................................................................
2
IV, Thiết kế giao diện............................................................................................
I, Biểu đồ UC........................................................................................................
3
Tên đề tài: Hệ thống quản lý khách sạn
I, Lý do chọn đề tài:
Quản lý khách sạn là một khối nghiệp vụ hết sức phức tạp, đòi hỏi một hệ
thống quản lý chặt chẽ, thuận tiện và có hiệu quả cao. Đề tài vừa có giá trị trong
thực tế vừa có giá trị trong việc học tập của những sinh viên như chúng em. Vì
sau khi thực hiện đề tài, sinh viên vừa nắm được vững hơn kiến thức môn học
vừa bồi dưỡng cho bản thân thêm kiến thức về nghiệp vụ quản lý trong các
doanh nghiệp, công ty góp phần nâng cao trình độ chuyên môn của mỗi cá
nhân.Trong khuôn khổ bài tập lớn môn học này, mục tiêu chính yếu là để rèn
luyện chúng em thực hiện hệ thống với các nhiệm vụ cơ bản: thực hiện việc đặt
phòng, làm thủ tục nhận phòng cũng như trả phòng cho khách một cách nhanh
chóng. Cung cấp các dịch vụ khi khách có yêu cầu, đem lại sự thoải mái hài
lòng cho khách hàng. Bên cạnh đó là sự hỗ trợ cho việc quản lý các danh mục
trong hệ thống và thống kê báo cáo.
Mục đích hệ thống: Phần mềm hỗ trợ quản lý đặt phòng, nhận phòng, trả
phòng và thanh toán cho một khách sạn.
Phạm vi hệ thống: Chỉ nhân viên khách sạn có thẩm quyền mới được sử
dụng phần mềm: Quản lý, nhân viên bán hàng, lễ tân, kế toán.
Tất cả nhân viên có thể thực hiện các chức năng:
• Đăng nhập để thực hiện các hoạt động nghiệp vụ của mình.
• Sau khi đăng nhập có thể thay đổi mật khẩu cá nhân.
• Khi xong việc hoặc hết ca làm phải đăng xuất khỏi hệ thống.
Người quản lý khách sạn có thể thực hiện các chức năng:
4
• Xem thống kê: Doanh thu theo thời gian, doanh thu theo loại phòng,
thống kê lượng khách hàng.
• Quản lý các phòng: Thêm, sửa, xóa phòng
• Quản lý thông tin của nhân viên: Thêm, sửa, xóa tài khoản thông tin của
nhân viên
Nhân viên bán hàng có thể thực hiện các chức năng :
• Nhận đặt phòng cho khách hàng qua điện thoại
• Nhận hủy thông tin đặt phòng qua điện thoại
Nhân viên lễ tân có thể thực hiện các chức năng :
• Nhận đặt chỗ trực tiếp từ khách hàng
• Nhận hủy đặt chỗ trực tiếp từ khách hàng
• Thực hiện checkin cho khách hàng
• Thực hiện checkout và thanh toán cho khách hàng
Nhân viên kế toán có thể thực hiện các chức năng:
• Quản lý lương
• Thống kê doanh thu
5
• Khi chọn xem báo cáo thì có thể tùy chọn các loại báo cáo khác nhau:
báo cáo doanh thu theo thời gian (nhập thời gian), báo cáo doanh thu theo loại
phòng (nhập loại phòng), báo cáo thống kế lượng khách hàng (nhập thời gian)
• Nếu không nhập dữ liệu (thời gian, mã phòng) thì thống kê tất cả
• Khi chọn quản lý phòng có thể chọn: thêm phòng, sửa phòng, xóa phòng
• Khi chọn thêm phòng thì form thêm phòng hiện ra để nhập thông tin
phòng mới: name, type, displayPrice, description và nút “Thêm”
• Khi chọn sửa hoặc xóa thì hiện lên form yêu cầu nhập tên phòng cần sửa
hoặc xóa để tìm ra một danh sách phòng có chứa tên đã nhập.
• Khi chọn tên tương ứng để sửa thì hiện form tương tự khi thêm, với các
ô có sẵn thông tin để sửa.
• Khi chọn tên tương ứng để xóa thì hiện lên ô xác nhận và xóa.
• Khi chọn thêm user thì form thêm user hiện ra để nhập thông tin user
mới bao gồm: username, password, fullname, birthday, address, mail, role,
description và nút “Thêm”.
- Hoạt động nghiệp vụ của nhân viên bán hàng:
• Phải login để thực hiện các hoạt động nghiệp vụ của mình
• Sau khi login, menu chính gồm các lựa chọn đặt phòng và hủy đặt
phòng (qua điện thoại)
• Khi khách hàng gọi điện yêu cầu đặt phòng, nhân viên tìm phòng trống
theo thời gian khách đưa ra, hệ thống hiện danh sách phòng trống, nhân viên yêu
cầu khách hàng chọn phòng và lưu thông tin đặt phòng, bao gồm cả thông tin
của khách hàng
• Khi khách hàng gọi điện yêu cầu hủy phòng, nhân viên tìm thông tin đặt
phòng theo tên khách hàng, hệ thống hiện danh sách phòng khách hàng đã đặt,
nhân viên xác nhận thông tin với khách hàng và hủy đặt phòng
- Hoạt động nghiệp vụ của lễ tân:
• Phải login để thực hiện các hoạt động nghiệp vụ của mình
6
• Sau khi login, menu chính gồm các lựa chọn: đặt phòng, hủy đặt phòng,
nhận phòng, trả phòng (tại quầy).
• Khi chọn đặt phòng hay hủy đặt phòng thì phần mềm hoạt động tương tự
các chức năng của nhân viên bán hàng.
• Khi chọn nhận phòng thì hệ thống cho phép chọn tìm kiếm đặt phòng
theo tên khách hàng, hệ thống hiện danh sách đặt phòng, nhân viên cập nhật
trạng thái phòng mà khách hàng sẽ nhận.
• Khi chọn trả phòng thì hệ thống cho phép tìm phòng theo mã, hiện thông
tin chi tiết hóa đơn và in ra cho khách hàng thanh toán, sau đó cập nhật lại trạng
thái phòng
Dựa trên việc phân tích các yêu cầu bài toán, xác định được các Actor:
người quản lý, nhân viên bán hàng, nhân viên kế toán, nhân viên lễ tân,
nhân viên, khách hàng
7
2, Xác định yêu cầu chức năng: các Usecase
• Đăng nhập: Để xuất hiện menu của người quản lý ngay sau khi
login thì gọi là UC quản lý đăng nhập
• Xem thống kê: xem báo cáo, cho phép người quản lý xem một
báo cáo về doanh thu hoặc lượng thống kê lượng khách hàng
• Quản lý phòng: quản lý thông tin phòng , cho phép người quản lý
thêm, sửa hoặc xóa thông tin về phòng của khách sạn
• Quản lý nhân viên: quản lý thông tin nhân viên, cho phép người
quản lý thêm, sửa hoặc xóa thông tin về nhân viên của khách sạn
• Xem thống kê và quản lý phòng, quản lý nhân viên là tùy chọn
sau khi login, có thể thực hiện nhiều lần không cần login lại -> được
extend từ UC đăng nhập của người quản lý
• Đăng nhập của người bán hàng: Để xuất hiện menu của nhân viên
bán hàng ngay sau khi login
• Đặt phòng qua điện thoại: đặt phòng qua điện thoại
• Hủy đặt phòng qua điện thoại: Hủy đặt phòng qua điện thoại
UC Đặt phòng qua điện thoại và UC Hủy đặt phòng qua điện thoại
được extend từ UC Đăng nhập của người bán hàng
• Đăng nhập : Để xuất hiện menu của lễ tân ngay sau khi Đăng
nhập
8
• Đặt phòng tại quầy : cho phép lễ tân đặt phòng cho khách hàng
khi khách hàng yêu cầu tại quầy
• Hủy đặt phòng tại quầy: cho phép lễ tân hủy đặt phòng cho khách
hàng khi có yêu cầu từ khách hàng tại quầy
• Checkout: Xác nhận khách hàng trả phòng và thanh toán
• Đăng nhập của kế toán: Để xuất hiện menu của kế toán ngay sau
khi login
• Thống kê doanh thu: Thống kê doanh thu trong 1 thời gian nhất
định của khách sạn (1 ngày, 1 tháng,...)
Chọn một ngôn ngữ lập trình phù hợp, phổ biến và dễ bảo trì. Có
thể cân nhắc sử dụng các ngôn ngữ như Java, Python, hoặc C# vì chúng
phổ biến và có nhiều thư viện hỗ trợ phát triển ứng dụng web và quản lý
dữ liệu.
9
3.2 Tính tái sử dụng (Reusability):
Thiết kế và triển khai các thành phần tái sử dụng như các module,
giao diện người dùng, hoặc các hàm để có thể sử dụng lại ở các phần khác
của hệ thống mà không cần viết lại từ đầu.
Đảm bảo rằng hệ thống có thể chạy trên nhiều nền tảng khác nhau
mà không cần sửa đổi đáng kể.
Sử dụng các công nghệ và framework độc lập với nền tảng như
Spring Boot (Java), Flask hoặc Django (Python) để giảm thiểu sự phụ
thuộc vào một nền tảng cụ thể.
Đảm bảo mã nguồn của hệ thống tuân thủ các tiêu chuẩn và quy tắc
chung của ngôn ngữ lập trình được chọn để dễ dàng di chuyển và triển
khai trên các môi trường khác nhau.
10
3.4 Vẽ biểu đồ UC tổng quát.
Hệ thống, yêu cầu, tiền phòng, chi phí là các danh từ trừu tượng → loại
- Báo cáo nên là một lớp biên hơn là lớp thực thể
- Người quản lý, người quản trị, nhân viên bán hàng, nhân viên tiếp
tân đều là các danh từ cụ thể của tài khoản người dùng
Các lớp thực thể: Phòng, khách sạn, tài khoản, khách hàng, hóa đơn, dịch
vụ
11
2, Mô tả thực thể (thuộc tính, phương thức,..)
- Hotel:
- User:
- Client:
- Room:
- Booking:
- Bill:
- Service:
12
Thuộc tính: ID (int), name (String), type (String), displayPrice (float),
description (String)
- UsedService:
13
PHẦN 2: KẾT QUẢ TỪNG THÀNH VIÊN
14
Pre-Condition Người quản lý đăng nhập thành công, vào
giao diện xem thống kê
Post-Condition Người quản lý thực hiện được chức năng
xem thống kê doanh thu và xem thống kê
lượng khách hàng
Basic Flow 1. Người quản lý đăng nhập vào hệ thống.
2. Hệ thống xác thực thông tin đăng nhập
thành công và cho phép người dùng truy cập
ứng dụng
3.Người quản lý chọn các tính
năng thống kê doanh thu và
thống kê lượng khách hàng
4. Hệ thống tính toán và hiển thị kết quả
thống kê dựa trên các thông tin đã chọn.
5. Người quản lý có thể chọn xuất báo cáo
thống kê ra file Excel/ pdf
6.Hệ thống tải xuống thiết bị bản báo cáo
được chọn
Alternative Flow Thống Kê Doanh Thu
3.1 Người quản lý chọn tính năng “xem thống
kê doanh thu theo phòng
3.2 Hệ thống hiển thị giao diện yêu cầu chọn
khoảng thời gian cụ thể.
15
thống kê dựa trên các thông tin đã chọn.
Đăng xuất
16
cơ sở dữ liệu
Exception Flow 2.a. Hệ thống xác thực thông tin đăng nhập
không thành công và hiển thị thông báo.
2.a.1 Người dùng chọn lệnh hủy
đăng nhập. Use Case dừng lại.
2.a.2 Người dùng chọn lệnh lấy lại mật khẩu
Chuyển đến use case lấy lại mật khẩu
Business Rules Người dùng nhập sai thông tin đăng nhập ở
lần thứ 6 liên tiếp sẽ bị khóa tài khoản 30
phút.
Non-Functional Time out cho màn hình đăng nhập dưới 60
Requirement giây
Mật khẩu của người dùng phải được hash
bằng MD5.
17
thu
Basic Flow 1. Người quản lý chọn chức năng
"Thống Kê Doanh Thu theo phòng"trên
giao diện của hệ thống.
2. Hệ thống hiển thị giao diện thống kê
doanh thu.
3. Hệ thống hiển thị giao diện cho
người quản lý chọn thời gian thống kê.
4. Người quản lý nhập khoảng thời gian
muốn xem thống kê(ngày bắt đầu, kết
thúc).
5. Người quản lý xác nhận các thông
tin đã nhập, hệ thống ghi nhận lựa chọn
hợp lệ
6. Hệ thống hiển thị thống kê doanh
thu cho loại phòng và khoảng thời gian
đã chọn.
7. Người quản lý chọn xuất báo cáo
8. Hệ thống tải xuống thiết bị bản báo
cáo
Alternative Flow 5a. Người quản lý chọn hủy xác nhận
thông tin đã chọn
5a1. Hệ thống hiển thị lại giao diện cho
người quản lý chọn thời gian thống kê.
Use case tiếp tục bước 3
18
7b1. Hệ thống hiển thị bản pdf để xem
trước
7b2. Người quản lý nhấn nút tải xuống
Use case tiếp tục bước 8
19
Requirement xem thống kê doanh thu phải nhanh
chóng, không quá 5 giây.
- Dữ liệu doanh thu phải được bảo vệ và
chỉ có người quản lý có quyền truy cập
mới có thể xem được.
- Giao diện phải dễ sử dụng và trực
quan, giúp người quản lý dễ dàng nhập
thông tin và hiểu kết quả trả về.
20
người quản lý chọn thời gian thống kê.
3. Người quản lý nhập khoảng thời gian
muốn xem thống kê( nhập ngày bắt đầu,
ngày kết thúc).
5. Người quản lý xác nhận các
thông tin đã nhập, hệ thống ghi nhận
lựa chọn hợp lệ
6. Hệ thống hiển thị thống kê lượng
khách cho loại phòng và khoảng thời
gian đã chọn.
Alternative Flow 5a. Người quản lý chọn hủy xác nhận
thông tin đã chọn
5a1. Hệ thống hiển thị lại giao diện cho
người quản lý chọn thời gian thống kê.
Use case tiếp tục bước 3
Exception Flow 5d. Hệ thống thông báo không có dữ liệu
thống kê lượng khách phù hợp với các
thông tin đã chọn
5d1. Hệ thống hiển thị giao diện cho
người quản lý chọn lại hoặc thoát chức
năng xem thống kê
21
Người quản lý chỉ có thể chọn 1 khoảng
thời gian thống kê theo tháng hoặc quý,
hoặc năm
Non-Functional - Thời gian phản hồi của hệ thống khi xem
Requirement thống kê lượng khách phải nhanh chóng,
không quá 5 giây.
- Dữ liệu doanh thu phải được bảo vệ và
chỉ có người quản lý có quyền truy cập
mới có thể xem được.
- Giao diện phải dễ sử dụng và trực quan,
giúp người quản lý dễ dàng nhập thông
tin và hiểu kết quả trả về.
22
b. Biểu đồ hoạt động của UC xem thống kê lượng khách hàng
23
24
IV. Thiết kế giao diện cho UC
1 Phân tích chi tiết chức năng xem thống kê doanh thu theo phòng
● Nhập tên người dùng, mật khẩu → cần phương thức checkLogin()
○ input: username,password(lớp User)
○ output: boolean
25
○ gán cho lớp User
● Sau khi người quản lí đăng nhập thành công, giao diện chính của quản lí
hiện ra -> ManagerHomeView
● Người quản lí click nút xem báo cáo thống kê -> giao diện chọn loại
thống kê hiện ra -> SelectStatView, có ô chọn thống kê doanh thu
subIncomeStat và lượng khách subClentStat
● Người quản lí chọn thống kê doanh thu-> giao diện thống kê doanh thu
theo loại phòng hiện ra -> RoomStatView, có phần cho người quản lý nhập vào
ngày bắt đầu và kết thúc thống kê → -inStartDtate, -inEndDate
● Người quản lí chọn và click xem subStat -> hệ thống tìm kiếm thông tin
thống kê -> cần chức năng getRoomStat()
○ input: inStartDtate,inEndDate
○ output: 1 bảng danh sách thống kê, mỗi dòng chứa loại phòng và
doanh thu tương ứng của nó: → outsubListRoomStat
○ gán cho lớp RoomStat
● Kết quả thống kê được hệ thống trả lại cho RoomStatView để hiển thị cho
người quản lí
● Người quản lí click vào một hàng để xem thống kê doanh thu chi tiết của
1 loại phòng -> hệ thống chuyển sang giao diện xem thống kê chi tiết 1 loại
phòng -> đề xuất lớp RoomDetailView, chứa thông tin phòng được chọn, và
bảng danh sách thống kê các hóa đơn chi tiết.
Để lớp RoomDetailView có dữ liệu để hiển thị, hệ thống cần thực hiện
chức năng tìm danh sách các hóa đơn của một phòng trong khoảng thời gian
thống kê getBillbyRoom() -> chức năng này nên là hành động của đối tượng
Bill.
26
2 Phân tích chi tiết chức năng xem thống kê doanh thu theo phòng
a. . View classes:
- LoginFrm là giao diện đăng nhập
- ManagerHomeFrm là giao diện chính của nhân viên quản lý, có các
nút có chức năng quản lý phòng, quản lý nhân viên, xem thống kê
- SelectStatFrm là giao diện báo cáo thống kê, cần 2 nút là thống kê
doanh thu và thống kê lượng khách
- RoomStatFrm là giao diện cấu hình báo cáo thống kê doanh thu
theo phòng, cần 2 ô nhập vào ngày bắt đầu, kết thúc 1 nút xem báo
cáo
- Số liệu thống kê có dạng bảng sẽ hiển thị ở RoomStatFrm gồm 2
cột là loại phòng tổng doanh thu của phòng đó trong thời gian đã
chọn
27
- RoomDetailFrm là giao diện hiển thị số liệu chi tiết theo phòng đã
chọn. Số liệu này có dạng bảng hiển thị danh sách bill đã thanh toán
của phòng trong khoảng thời gian đã chọn
b. Control(DAO) classes
- RoomStatDAO có phương thức getRoomStat() để lấy số liệu thống
kê doanh số của tất cả phòng theo thời gian đã chọn
- BookingDAO có phương thức getBookingofRoom() để lấy danh
sách hóa đơn đã thanh toán của phòng đã chọn trong khoảng thời
gian thống kê
c. Entity classes:
- User, Room,Client,Service,Booking
- RoomStat
- Booking: cần các lớp thành phần là BookedRoom,
- BookedRoom cần lớp thành phần là Room,UsedService
- UsedService cần lớp thành phần là Service
28
VI. Thuyết minh và vẽ biểu đồ tuần tự cho UC.
- Actor: Manager
- Lớp giao diện: ManagerHomeFrm, SelectStatFrm,RoomStatFrm ,
RoomDetailFrm
- Lớp điểu khển: RoomStatDAO, BookingDAO
- Lớp thực thể: RoomStat, Room, Booking, Client, BookedRoom
a. Nhân viên quản lí click chọn chức năng xem thống kê từ giao diện
chính sau khi đăng nhập.
29
b. Phương thức actionPerformed() của lớp ManagerHomeFrm được
kích hoạt.
c. Phương thức actionPerformed() gọi lớp SelectStatFrm.
d. Phương thức SelectStatFrm() được kích hoạt, giao diện tương ứng
được hiển thị.
e. Nhân viên click chọn thể loại thống kê là thống kê phòng theo
doanh thu.
f. Phương thức actionPerformed() của lớp SelectStatFrm được kích
hoạt
g. Phương thức actionPerformed() gọi lớp RoomStatFrm.
h. Phương thức RoomStatFrm() được kích hoạt, hiển thị giao diện
tương ứng.
i. Nhân viên chọn ngày bắt đầu/kết thúc thời gian thống kê và click
xem thống kê.
j. Phương thức actionPerformed() của lớp RoomStatFrm được kích
hoạt.
k. Phương thức actionPerformed() gọi phương thức getRoomStat()
của lớp RoomStatDAO.
l. Phương thức getRoomStat() lấy số liệu thống kê từ CSDL.
m. Phương thức getRoomStat() gọi các phương thức của lớp RoomStat
để đóng gói kết quả thống kê.
n. Lớp RoomStat cũng phải gọi các phương thức của lớp Room để
đóng gói.
o. Kết quả được RoomStat trả lại cho phương thức actionPerformed()
p. Phương thức actionPerformed() hiển thị kết quả thống kê lên giao
diện RoomStatFrm.
q. Nhân viên click vào một phòng để xem chi tiết.
30
r. Phương thức actionPerformed() của lớp RoomStatFrm lại được
kích hoạt.
s. Phương thức actionPerformed() gọi lớp RoomDetailFrm
t. Phương thức RoomDetailFrm() được kích hoạt.
u. Phương thức RoomDetailFrm() gọi phương thức
getBookingOfRoom() của lớp BookingDAO.
v. Phương thức getBookingOfRoom() lấy dữ liệu từ CSDL.
w. Phương thức getBookingOfRoom() gọi các phương thức của lớp
Booking để đóng gói dữ liệu.
x. Lớp Booking gọi các phương thức lớp BookedRoom, Client để
đóng gói thuộc tính thành phần.
y. BookedRoom gọi các phương thức của lớp Room để đóng gói
thuộc tính thành phần
z. Kết quả được lớp BookingDAO trả lại cho phương thức
RoomDetailFrm()
aa. Phương thức RoomDetailFrm() hiển thị danh sách hóa đơn chi tiết
lên giao diện RoomDetailFrm
31
VII. Viết test case chuẩn cho UC.
32
id name address star des
1 Hotel de 29 Tràng Tiền, 5
l'Opera Hanoi Hoàn Kiếm, Hà
MGallery Nội
tblRoom:
33
Thanh Gòn om 8
4 Hoàng Thị 4444 Cần htl@gmail.c 45678
Luyến Thơ om 9
tblBooking:
2 4 3 13/02/2024 0
3 3 2 21/04/2024 600
4 4 4 25/04/2024 0
5 3 3 26/04/2024 0
6 3 4 25/05/2024 0
tblBookedRoom:
34
Các bước thực Kết quả mong đợi
hiện
1. Nhân viên Giao diện chọn cấu hình thống kê hiện ra. Có các lựa chọn:
quản lí - thống kê doanh thu
Nguyễn Văn - thống kê lượng khách
Anh (id=1 đã
đăng nhập.
Chọn chức
năng xem
thống kê từ
menu chính
2. Click chọn Giao diện thống kê phòng theo doanh thu hiện ra, có các ô
thống kê nhập:
doanh thu - ngày bắt đầu thống kê
- ngày kết thúc thống kê
Nút xem
3. Nhập : Kết quả thống kê các phòng theo doanh thu hiện lên:
Ngày bắt đầu
01/05/2024 T room incom
Ngày kết thúc T e
30/05/2024 1 102 490
Và click vào 0
nút Xem 2 203 180
0
3 101 160
0
35
4 103 950
5 201 0
6 202 0
4. Click chọn Giao diện thống kê chi tiết của phòng 102 từ 0130/05/2024
xem chi tiết vào
TT start end price da incom
dòng của phòng
clien y e
102
t
1 Anh 01/05/20 02/05/20 1000 1 900
24 24
2 Than 05/05/20 10/05/20 1000 5 400
h 24 24 0
Tổ 6 490
ng 0
Nút OK.
- CSDL sau khi test: Không có thay đổi gì so với trước khi test.
36
B. Đặng Quý Bình - B21DCCN018 - UC Đặt phòng
I, Biểu đồ UC
II, Đặc tả UC
UC Đặt phòng:
Đối tượng sử dụng: Nhân viên lễ tân hoặc nhân viên bán hàng.
Use case này cho phép nhân viên lễ tân hoặc nhân viên bán hàng tiếp nhận việc
đặt phòng trước của khách hàng.
- Nhân viên lễ tân hoặc nhân viên bán hàng đăng nhập vào hệ thống
- Hệ thống hiển thị form yêu cầu nhập thông tin phòng, loại phòng muốn chọn
và ngày nhận phòng
- Nhân viên lễ tân hoặc nhân viên bán hàng nhập thông tin và ngày nhận phòng
của khách đầy đủ theo form.
37
- Hệ thống tự động kiểm tra thông tin phòng ngày mà khách hàng yêu cầu, đồng
thời lọc danh sách các loại phòng và các phòng tương ứng mà khách hàng có thể
đặt vào ngày đó.
+ Nhân viên lễ tân hoặc nhân viên bán hàng chọn phòng theo yêu cầu của khách
hàng đã đặt.
+ Click nút “Đăng ký” để hoàn tất việc đặt phòng trước của khách.
+ Nhân viên lễ tân hoặc nhân viên bán hàng tìm kiếm khách hàng theo số điện
thoại hoặc tên trong hệ thống nếu khách hàng đã từng đặt phòng ở đây.
+ Nếu không nhân viên lễ tân hoặc nhân viên bán hàng chọn chức năng thêm
khách hàng để hệ thống hiển thị form nhập thông tin khách hàng sau đó click nút
“Thêm khách hàng” để thêm thông tin khách hàng vào trong hệ thống.
+ Lưu thông tin đặt phòng cùng thông tin khách hàng đặt phòng.
TH2: Loại phòng mà khách hàng yêu cầu đã hết phòng trống:
+ Nhân viên lễ tân hoặc nhân viên bán hàng sẽ thông báo cho khách và tiếp tục
tìm kiếm loại phòng khác hoặc thời gian khác nếu khách hàng yêu cầu.
+ Nếu khách hàng không còn nhu cầu thực hiện hủy phiếu đăng ký.
- Muốn thực hiện đặt phòng, nhân viên lễ tân hoặc nhân viên bán hàng phải
đăng nhập, tìm phòng trống, tìm khách hàng xem đã có trong hệ thống chưa, nếu
chưa có thì phải thêm khách hàng mới.
38
- Tìm kiếm phòng trống: UC này cho phép nhân viên tìm phòng còn trống để
phục vụ việc đặt phòng.
- Tìm kiếm khách hàng: UC này cho phép nhân viên tìm thông tin khách hàng
trong hệ thống để phục vụ việc đặt phòng. Việc tìm kiếm có thể thực hiện tìm
kiếm theo tên hoặc số điện thoại.
- Thêm khách hàng: UC này cho phép nhân viên thêm thông tin khách hàng vào
hệ thống khi đặt phòng cho khách hàng, mà thông tin của khách hàng chưa có
trong hệ thống.
Summary
Use Case Description: Đặt phòng cho khách hàng bởi nhân viên lễ tân hoặc
nhân viên bán hàng.
Priority: Cao
Post-Condition: Thông tin đặt phòng và khách hàng được lưu trữ trong hệ
thống.
39
Flow
Basic Flow:
1. Nhân viên lựa chọn chức năng "Đặt Phòng" trên hệ thống.
2. Hệ thống hiển thị form nhập thông tin phòng, loại phòng, và ngày nhận
phòng.
3. Nhân viên nhập thông tin và ngày nhận phòng theo yêu cầu của khách.
4. Hệ thống kiểm tra sự khả dụng của phòng và thông báo kết quả.
5. Nếu có phòng trống, nhân viên chọn phòng và lưu thông tin đặt phòng và
khách hàng.
Alternative Flow:
1a. Nếu không có phòng trống: Nhân viên thông báo cho khách và hủy đặt
phòng.
Exception Flow:
1. Lỗi kết nối hệ thống: Nhân viên thông báo cho quản trị viên và thử lại sau.
Additional Information
Business Rule: Khách hàng chỉ có thể đặt phòng trong thời gian hoạt động
của khách sạn.
40
III, Biểu đồ hoạt động UC
41
IV, Thiết kế giao diện cho UC
42
V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC.
Tầng View: HomeFrm là giao diện chính của nhân viên bán hang hoặc nhân
viên lễ tân. SearchFreeRoomFrm là giao diện tìm phòng trống. SearchClientFrm
là giao diện tìm khách hàng. AddClientFrm là giao diện thêm khách hàng trong
trường hợp khách hàng mới. ConfirmFrm là giao diện xác nhận đặt phòng.
43
Tầng Control: RoomDAO cần để thực hiện tìm phòng trống. ClientDAO cần để
thực hiện tìm khách hàng và thêm khách hàng, nếu cần. BookingDAO cần để
thêm thông tin đặt phòng mới. Các lớp này đều kế thừa từ lớp DAO để điều
khiển truy nhập chung vào CSDL.
Tầng Model: Cần các lớp Room, Client, Booking. Lớp Booking cần có các lớp
thành phần BookedRoom và User.
44
VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC.
Khách hàng gọi điện hoặc trao đổi trực tiếp với nhân viên tại quầy
Nhân viên click chức năng đặt phòng trên giao diện chính của mình (sau khi
đăng nhập).
45
Nhân viên hỏi khách hàng ngày nhận/trả phòng.
Khách hàng nói ngày nhận/trả phòng mà mình mong muốn cho nhân viên.
Phương thức searchFreeRoom() gọi lớp Room để đóng gói kết quả tìm kiếm
được.
Phương thức actionPerformed() hiển thị kết quả lên giao diện
SearchFreeRoomFrm.
Nhân viên thông báo các loại phòng còn trống cho khách hàng và yêu cầu khách
hàng chọn phòng mong muốn.
46
Phương thức actionPerformed() gọi lớp Booking để đóng gói thông tin để truyền
cho các giao diện tiếp theo.
Lớp Booking gọi lớp BookedRoom để đóng gói thuộc tính thành phần
Nhân viên hỏi xin thông tin cá nhân của khách hàng.
Khách hàng cung cấp thông tin cá nhân cho nhân viên.
Phương thức searchClient() thực hiện tìm kiếm khách hàng từ CSDL.
Phương thức searchClient() gọi lớp Client để đóng gói thông tin đã tìm được.
47
Phương thức searchClient() trả kết quả lại cho phương thức actionPerformed().
Phương thức actionPerformed() hiển thị kết quả lên giao diện SearchClientFrm.
Nhân viên click vào dòng đúng thông tin khách hàng vừa cung cấp.
Phương thức actionPerformed() của lớp SearchClientFrm lại được kích hoạt.
Phương thức actionPerformed() gọi lớp Booking để bổ sung thuộc tính khách
hàng
Nhân viên xác nhận lại các thông tin đặt phòng với khách hàng.
Phương thức addBooking() lưu thông tin đặt phòng vào CSDL.
Phương thức addBooking() trả lại quyền điều khiển cho phương thức
actionPerformed()
48
Phương thức actionPerformed() thống báo đặt phòng thành công
Nhân viên thông báo xác nhận đặt phòng thành công với khách hàng.
Có phòng trống
Đặt 2 lần liên tiếp cùng phòng, cùng ngày khi chỉ còn 1 phòng trống duy nhất
+ Test case 1: có phòng trống và có khách hàng trong CSDL (test case chuẩn, bỏ
qua phần login)
-tblUser:
49
1 Manager manager manager manager
- tblHotel:
- tblRoom:
50
4 1 201 Standard 800 garden view
-tblClient:
- tblBooking:
51
id idCreator idClient bookingdate saleoff note
1 3 1 13/04/2024 0
2 4 3 13/04/2024 0
3 3 2 21/04/2024 0
4 4 4 25/04/2024 0
5 3 3 26/04/2024 0
- tblBookedRoom:
52
5 4 1 28/04/2024 02/05/2024 2000 0 0
1. Nhân viên có id=3 Giao diện tìm phòng trống hiện ra. Có ô nhập:
đã đăng nhập. Chọn
- Ngày đến:
chức năng đặt phòng
từ menu chính - Ngày đi:
- Loại phòng:
Nút tìm
- Ngày đến =
30/04/2024
id name type price des
- Ngày đi =
01/05/2024
4 202 Standard 800 garden
- Loại phòng =
53
Standard view
3. Click chọn phòng Giao diện tìm khách hàng hiện lên. Có ô nhập tên, nút
202 tìm
4. Nhập vào: Kết quả hiện ra thông tin khách hàng và nút thêm
khách hàng mới:
- name = Huyền
- idcard: 234234
54
- địa chỉ: Sài Gòn
- email: ctt@gmail.com
- tel: 0988888
6. Click nút xác nhận Thông báo: đặt phòng thành công!
7. Click nút OK của Quay trở về trang chủ của nhân viên bán hàng
thông báo
- Các bảng khác không thay đổi, chỉ có bảng tblBooking và tblBookedRoom
thay đổi:
55
- tblBooking:
1 3 1 13/04/2024 0
2 4 3 13/04/2024 0
3 3 2 21/04/2024 0
4 4 4 25/04/2024 0
5 3 3 26/04/2024 0
6 3 3 27/04/2024 0
- tblBookedRoom:
56
3 3 2 29/04/2020 01/05/2024 1000 0 0
-tblUser:
57
- tblHotel:
- tblRoom:
-tblClient:
58
id name idcard address email tel des
- tblBooking:
1 3 1 13/04/2024 0
2 4 3 13/04/2024 0
3 3 2 21/04/2024 0
4 4 4 25/04/2024 0
59
5 3 3 26/04/2024 0
6 3 3 27/04/2024 0
1. Nhân viên có id=3 đã Giao diện tìm phòng trống hiện ra. Có ô nhập:
đăng nhập. Chọn chức
- Ngày đến:
năng đặt phòng từ menu
chính - Ngày đi:
- Loại phòng:
Nút tìm
- Ngày đến = Giao diện đặt phòng khác nút và hủy bỏ hiện lên
30/04/2024
- Ngày đi = 01/05/2024
60
3. Click chọn hủy bỏ Nút thông báo xác nhận hiện lên
4. Click nút OK của Quay trở về trang chủ của nhân viên bán hàng
thông báo
+ Test case 3: Đặt 2 lần liên tiếp cùng phòng, cùng ngày khi chỉ còn 1 phòng
trống duy nhất
-tblUser:
- tblHotel:
61
1 Metropole 160 Nguyễn Văn Trỗi, Mộ 5
Lao, Hà Đông, Hà Nội
- tblRoom:
-tblClient:
62
1 Lê Ngọc Quang 123123 Hà Nội an@gmail.co 091232
m 13
- tblBooking:
1 3 1 13/04/2024 0
2 4 3 13/04/2024 0
3 3 2 21/04/2024 0
4 4 4 25/04/2024 0
63
5 3 3 26/04/2024 0
- tblBookedRoom:
64
1. Nhân viên có id=3 Giao diện tìm phòng trống hiện ra. Có ô nhập:
đã đăng nhập. Chọn
- Ngày đến:
chức năng đặt phòng
từ menu chính - Ngày đi:
- Loại phòng:
Nút tìm
- Ngày đến =
30/04/2024
id name type price des
- Ngày đi =
01/05/2024
4 202 Standar 800 garden
- Loại phòng = d view
Standard
3. Click chọn phòng Giao diện tìm khách hàng hiện lên. Có ô nhập tên, nút
202 tìm
4. Nhập vào: Kết quả hiện ra thông tin khách hàng và nút thêm
khách hàng mới:
- name = Huyền
65
3 Cao 23423 Sài ctt@gm 0988
Thanh 4 Gòn ail.com 888
Huyền
- idcard: 234234
- email: ctt@gmail.com
- tel: 0988888
66
dard en 4 4
vie
w
6. Click nút xác nhận Thông báo: đặt phòng thành công!
7. Click nút OK của Quay trở về trang chủ của nhân viên bán hàng
thông báo
8. Nhân viên có id=3 Giao diện tìm phòng trống hiện ra. Có ô nhập:
đã đăng nhập. Chọn
- Ngày đến:
chức năng đặt phòng
từ menu chính - Ngày đi:
- Loại phòng:
Nút tìm
- Ngày đến =
30/04/2024
id name type price des
- Ngày đi =
01/05/2024
67
- Loại phòng = 4 202 Stand 800 garden
Standard ard view
10. Click chọn phòng Giao diện tìm khách hàng hiện lên. Có ô nhập tên, nút
202 tìm
11. Nhập vào: Kết quả hiện ra thông tin khách hàng và nút thêm
khách hàng mới:
- name = Quang
12. Click vào dòng Giao diện xác nhận hiện ra:
khách hàng tên
- Khách hàng:
Quang
- tên: Lê Ngọc Quang
- idcard: 123123
- email: an@gmail.com
- tel: 09123213
68
- Thông tin phòng đặt::
13. Click nút xác Thông báo: đặt phòng thành công!
nhận
14. Click nút OK của Quay trở về trang chủ của nhân viên bán hàng
thông báo
- Các bảng khác không thay đổi, chỉ có bảng tblBooking và tblBookedRoom
thay đổi:
- tblBooking:
69
1 3 1 13/04/2024 0
2 4 3 13/04/2024 0
3 3 2 21/04/2024 0
4 4 4 25/04/2024 0
5 3 3 26/04/2024 0
6 3 3 28/04/2024 0
7 3 1 01/05/2024 0
- tblBookedRoom:
70
3 3 2 29/04/2020 01/05/2024 1000 0 1
71
C. Bùi Trường Sơn - B21DCCN649 - UC Check-out
I, Biểu đồ UC
II, Đặc tả UC
UC ID 1.1
UC Name Quản Lý Check-out
Description Cho phép nhân viên lễ tân thực hiện check-out cho khách hàng
72
Basic-Flow 1. Nhân viên lễ tân được khách hàng thông báo rằng họ
chuẩn bị check-out
2. Nhân viên lễ tân truy cập vào hệ thống
3. Nhân viên lễ tân chọn chức năng check-out
4. Hệ thống hiển thị danh sách các phòng
5. Nhân viên lễ tân thực hiện tìm kiếm theo tên phòng
6. Hệ thống hiển thị phòng theo tên phòng mà nhân viên tìm
kiếm
7. Nhân viên lễ tân nhấn vào phòng vừa tìm kiếm.
8. Hệ thống hiển thị thông tin chi tiết của phòng cùng các nút
có chức năng lập hóa đơn, cập nhật tình trạng phòng.
9. Nhân viên chọn chức năng lập hóa đơn.
10.Hệ thống hiển thi thông tin hóa đơn cùng nút in hóa đơn và
xác nhận thanh toán.
11.Nhân viên lễ tân in hóa đơn và yêu cầu khách hàng thanh
toán.
12.Khách hàng thực hiện thanh toán thành công
13.Nhân viên nhấn nút xác nhận thanh toán và hệ thống trở về
trang thông tin chi tiết phòng.
14.Nhân viên chọn ô check-out và hệ thống hiển thị thông báo
“Cập nhật thông tin thành công”.
15.Nhân viên thực hiện check-out thành công.
Alternative A. Khách hủy check-out
Flow 1. Người dùng nhấn thoát khỏi giao diện danh sách phòng
2. Hệ thống chuyển người dùng về lại trang chủ hệ thống
Exception Flow 1. Thông tin mã đặt phòng bị sai
2. Quay lại bước 5 của Basic Flow
73
III, Biểu đồ hoạt động UC
74
c. Giao diện thông tin chi tiết phòng
75
V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC
A. Thuyết minh
a. View classes:
● ReceptionistHomeFrm: là giao diện cho nhân viên lễ tân. Bên trong cần ít
nhất 1 nút để đi đến chức năng check-out.
● CheckoutFrm: là giao diện để thực hiện các quy trình check-out. Nó cần
một trường nhập tên phòng để tìm kiếm, một nút để tìm kiếm, và một
bảng để hiển thị danh sách phòng.
● RoomDetailFrm: là giao diện hiển thị thông tin phòng được chọn. Nó cần
một nút lập hóa đơn và một ô cập nhật tình trạng phòng.
● SetBillFrm: là giao diện để lập hóa đơn. Nó cần các trường để hiển thị
ngày nhận phòng, chi tiết phòng, thông tin khách hàng, các khoản phí
phát sinh, tổng tiền cần thanh toán, thông tin nhân viên và một ô để xác
nhận đã thanh toán.
76
b. Control (DAO) classes:
● DAO: là một lớp chung. Nó chỉ có chức năng kết nối tới database và cung
cấp các kết nối chung cho tất các lớp DAO kế thừa trong hệ thống.
● RoomDAO: là lớp để thao tác với database liên quan đến đối tượng
Room. Lớp này cần hai phương thức: searchBookedRoom() để tìm kiếm
phòng đã đặt của khách hàng, updateStatusRoom() để cập nhật trạng thái
của phòng.
● BillDAO: là lớp để thao tác với database liên quan đến đối tượng Bill.
Lớp này cần phương thức addBill() để lập ra hóa đơn.
c. Entity classes:
77
VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC
a. Thuyết minh
1. Nhân viên lễ tân truy cập vào hệ thống thành công, và giao diện
ReceptionistHomeFrm được hiển thị
2. Nhân viên lễ tân nhấn vào nút Checkout trên giao diện
ReceptionistHomeFrm.
3. Phương thức actionperformed() của lớp ReceptionistHomeFrm được gọi.
4. Phương thức actionperformed() gọi đến lớp CheckoutFrm.
5. Hàm khởi tạo CheckoutFrm() được gọi tới.
6. Giao diện CheckoutFrm() được hiển thị cho nhân viên lễ tân.
7. Nhân viên lễ tân nhập mã đặt phòng vào trường mã đặt phòng và nhấn
nút tìm kiếm.
8. Phương thức actionperformed() của lớp CheckoutFrm được gọi tới.
78
9. Phương thức actionperformed() gọi tới phương thức
searchBookedRoom() của lớp RoomDAO.
10. Phương thức searchBookedRoom() được thực thi.
11. Phương thức searchBookedRoom() gọi tới lớp BookedRoom để đóng gói
kết quả.
12. Lớp BookedRoom đóng gói các thuộc tính của chính nó.
13. Lớp BookedRoom trả về đối tượng cho phương thức
searchBookedRoom().
14. Phương thức searchBookedRoom() trả về kết quả cho phương thức
actionperformed().
15. Phương thức actionperformed() hiển thị kết quả phòng trên giao diện
CheckOutFrm cho nhân viên lễ tân.
16. Nhân viên lễ tân nhấn vào phòng vừa tìm kiếm trên giao diện
CheckOutFrm.
17. Phương thức actionperformed() của lớp CheckOutFrm() được gọi.
18. Phương thức actionperformed() gọi tới lớp RoomDetailFrm.
19. Hàm khởi tạo RoomDetailFrm() được gọi tới.
20. Giao diện RoomDetailFrm được hiển thị cho nhân viên lễ tân.
21. Nhân viên lễ tân tiếp tục chọn nút lập hóa đơn trên giao diện
RoomDetailFrm
22. Phương thức actionperformed() của RoomDetailFrm được gọi.
23. Phương thức actionperformed() gọi tới phương thức addBill() của lớp
BillDAO.
24. Phương thức addBill() được thực thi.
25. Phương thức addBill() gọi tới lớp Bill để đóng gói kết quả.
26. Lớp Bill tự đóng gói các thuộc tính của chính nó.
27. Lớp Bill trả về đối tượng Bill cho phương thức addBill().
28. Phương thức addBill() trả về kết quả cho phương thức actionperformed().
79
29. Phương thức actionperformed() gọi tới lớp SetBillFrm.
30. Hàm khởi tạo SetBillFrm() được gọi.
31. Giao diện SetBillFrm được hiển thị cho nhân viên lễ tân.
32. Nhân viên lễ tân nhấn nút in hóa đơn trên giao diện SetBillFrm.
33. Nhân viên lễ tân gửi hóa đơn cho khách hàng để thanh toán.
34. Khách hàng thanh toán thành công cho nhân viên lễ tân.
35. Nhân viên lễ tân nhấn nút xác nhận thanh toán.
36. Phương thức actionperformed() gọi lại giao diện RoomDetailFrm.
37. Giao diện RoomDetailFrm được hiển thị lại cho nhân viên lễ tân.
38. Nhân viên lễ tân chọn ô cập nhật tình trạng phòng trên giao diện
RoomDetailFrm.
39. Phương thức actionperformed() của lớp RoomDetailFrm được gọi.
40. Phương thức actionperformed() gọi tới phương thức updateStatusRoom()
của lớp RoomDAO.
41. Phương thức updateStatusRoom() được thực thi.
42. Phương thức updateStatusRoom() gọi tới lớp BookedRoom để đóng gói
kết quả.
43. Lớp BookedRoom tự đóng gói các thuộc tính của chính nó.
44. Lớp BookedRoom trả về thuộc tính cho phương thức
updateStatusRoom().
45. Phương thức updateStatusRoom() trả về kết quả cho phương thức
actionperformed().
46. Phương thức actionperformed() hiển thị thông tin cập nhật thành công và
gọi lại giao diện CheckoutFrm, kết thúc check-out.
b. Biểu đồ tuần tự UC
80
81
VII, Viết test case chuẩn cho UC
tblUser
tbl Client
tbl BookedRoom
82
m f n t t
1 2 14/02/202 30/05/202 1200 0 1 1 1
4 4
2 5 14/02/202 01/06/202 1200 0 1 1 2
4 4
3 3 20/04/202 09/05/202 1500 0 1 0 3
4 4
4 4 28/04/202 10/05/202 2000 0 1 0 4
4 4
tbl Bill
Nhân viên lễ tân với id = 2 Giao diện hiển thị các thông tin ở trang check-out
thực hiện truy cập vào hệ với các một trường nhập tên phòng để tìm kiếm,
thống và chọn chức năng một nút để tìm kiếm, và một bảng để hiển thị
check-out từ trang ban đầu danh sách phòng.
Nhân viên lễ tân nhập tên Hệ thống hiển thị phòng đã tìm ở trong bảng
83
phòng: 3 vào trường tìm kiếm
và nhấn nút tìm kiếm
Nhân viên lễ tân chọn phòng Hệ thống hiển thị giao diện chi tiết của phòng đã
đã tìm chọn
Nhân viên lễ tân tiếp tục chọn Hệ thống hiển thị giao diện gồm các thông tin có
chức năng lập hóa đơn trong hóa đơn và nút xác nhận thanh toán cùng
nút in hóa đơn
Nhân viên lễ tân xác nhận Hóa đơn mới được thêm vào cơ sở dữ liệu
thanh toán
Nhân viên lễ tân chọn ô đã Thông tin phòng hiển thị trong cơ sở dữ liệu
check-out
tblBookedRoom:
84
4 4
2 5 14/02/202 01/06/202 1200 0 1 1 2
4 4
3 3 20/04/202 09/05/202 1500 0 1 1 3
4 4
4 4 28/04/202 10/05/202 2000 0 1 0 4
4 4
tblBill:
85
D. Hà Trần Thế Anh - B21DCC145
I, Biểu đồ UC
II, Đặc tả UC
Use case này cho phép người quản lý quản lý thông tin phòng khách sạn hiệu
quả, bao gồm thêm, sửa và xóa phòng.
86
- Người quản lý đăng nhập vào hệ thống quản lý khách sạn.
- Giao diện quản lí chung hiện ra có chức năng quản lí thông tin khách
sạn, quản lí thông tin phòng, xem báo cáo thống kê.
- Khi chọn thêm phòng thì form thêm phòng hiện ra để nhập thông tin
phòng mới: name, type, displayPrice, description và nút “add”.
- Nhập thêm các thuộc tính cho phòng mới và click “add”.
- Hệ thống báo thành công và quay về trang chủ người quản lí.
- Giao diện tìm phòng hiện ra với 1 ô nhập tên phòng và nút tìm kiếm.
- Danh sách các phòng có tên chứa từ khóa vừa nhập hiện ra, bên cạnh tên
phòng còn có nút ‘edit’ và ‘delete’.
- Khi click “edit” để sửa thì hiện form tương tự khi thêm, với các ô có sẵn
thông tin để sửa.
87
- Sửa lại một vài thuộc tính (trừ id không sửa được), sau đó xác nhận lại
và click “save”.
- Hệ thống báo thành công và quay về trang chủ người quản lí.
- Giao diện tìm phòng hiện ra với 1 ô nhập tên phòng và nút tìm kiếm.
- Danh sách các phòng có tên chứa từ khóa vừa nhập hiện ra, bên cạnh tên
phòng còn có nút ‘edit’ và ‘delete’.
- Khi chọn “delete” tương ứng để xóa thì hiện lên ô xác nhận và click
“delete” để xác nhận xóa phòng hoặc click “cancel” để hủy thao tác xóa
phòng.
- Hệ thống báo thành công và quay về trang chủ người quản lí.
88
III, Biểu đồ hoạt động UC
89
IV, Thiết kế giao diện UC
90
91
V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC
- Các lớp tầng giao diện: LoginFrm là giao diện đăng nhập.
ManagerHomeFrm là giao diện chính của nhân viên quản lí. ManageRoomFrm
92
là giao diện quản lí thông tin phòng. SearchRoomFrm là giao diện tìm phòng để
sửa. EditRoomFrm là giao diện sửa một phòng đã chọn.
- Các lớp tầng điều khiển: UserDAO là lớp truy cập dữ liệu xử lí thông tin
liên quan đến thành viên hệ thống. RoomDAO là lớp truy cập dữ liệu xử lí thông
tin liên quan đến phòng. Hai lớp này đều kế thừa lớp DAO để xử lí cơ chế dùng
chung truy cập vào cơ sở dữ liệu.
93
VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC
94
1. Nhân viên quản lí nhập tên đăng nhập, mật khẩu và click đăng nhập trên
giao diện LoginFrm.
2. Hàm actionPerformed() của lớp LoginFrm được gọi.
3. Hàm actionPerformed() gọi lớp User để đóng gói thông tin đăng nhập.
4. Lớp User đóng gói thông tin vào thực thể User
5. Lớp User trả đối tượng User về cho phương thức actionPerformed().
6. Phương thức actionPerformed() gọi phương thức checkLogin() của lớp
UserDAO.
7. Phương thức checkLogin() kiểm tra thông tin đăng nhập.
8. Phương thức checkLogin() gọi lớp User để đóng gói bổ sung thuộc tính
name, position.
9. Lớp User gọi các hàm setName(), setPosition() để đóng gói bổ sung.
10.Lớp User trả kết quả về cho phương thức checkLogin().
11.Phương thức checkLogin() trả kết quả về cho phương thức
actionPerformed().
12.Phương thức actionPerformed() gọi lớp ManagerHomeFrm.
13.Phương thức ManagerHomeFrm() được gọi
14.Giao diện tương ứng hiển thị.
15.Nhân viên quản lý click chọn chức năng quản lí thông tin phòng.
16.Phương thức actionPerformed() được kích hoạt.
17.Phương thức actionPerformed() gọi lớp RoomManageFrm.
18.Phương thức RoomManageFrm() được kích hoạt
19.Giao diện tương ứng hiển thị.
20.Nhân viên quản lý click nút sửa phòng.
21.Phương thức actionPerformed() được kích hoạt.
22.Phương thức actionPerformed() gọi lớp SearchRoomFrm.
23.Phương thức SearchRoomFrm() được kích hoạt
24.Giao diện tương ứng hiển thị.
95
25.Nhân viên quản lý nhập tên phòng và click tìm.
26.Phương thức actionPerformed() được kích hoạt.
27.Phương thức actionPerformed() gọi phương thức searchRoom() của lớp
RoomDAO.
28.Phương thức searchRoom() tìm phòng theo tên.
29.Phương thức searchRoom() gọi lớp Room để đóng gói kết quả tìm kiếm.
30.Lớp Room thực hiện đóng gói vào thực thể Room.
31.Lớp Room trả đối tượng về cho phương thức searchRoom().
32.Phương thức searchRoom() trả kết quả lại cho phương thức
actionPerformed() của lớp SearchRoomFrm.
33.Phương thức actionPerformed() hiện danh sách kết quả được hiện lên cho
nhân viên quản lý.
34.Nhân viên quản lý click 1 phòng trong danh sách để sửa.
35.Phương thức actionPerformed() lại được kích hoạt.
36.Phương thức actionPerformed() gọi lớp EditRoomFrm.
37.Phương thức EditRoomFrm() được gọi,
38.Giao diện tương ứng được hiển thị.
39.Nhân viên quản lý sửa một vài thuộc tính của phòng và click lưu.
40.Phương thức actionPerformed() của lớp EditRoomFrm được kích hoạt
41.Phương thức actionPerformed() gọi lớp Room để set lại thuộc tính được
sửa.
42.Lớp Room thực hiện set lại các thuộc tính cho thực thể Room
43.Lớp Room trả về đối tượng cho phương thức actionPerformed().
44.Phương thức actionPerformed() gọi phương thức updateRoom() của lớp
RoomDAO.
45.Phương thức updateRoom() cập nhật thông tin phòng vào CSDL
46.Phương thưc updateRoom() trả quyền điều khiển về phương thức
actionPerformed().
96
47.Phương thức actionPerformed() hiện thông báo thành công.
48.Nhân viên quản lý click vào OK của thông báo.
49.Phương thức actionPerformed() gọi lại lớp ManagerHomeFrm.
50.Lớp ManagerHomeFrm lại hiển thị.
tblUser:
tblHotel:
tblRoom:
97
Test case 1: Thêm phòng mới vào CSDL
Nhân viên quản lý (Manager) đăng Giao diện thêm phòng hiện ra với
nhập với id=1. Chọn chức năng thêm các thông tin cần điền vào: name,
phòng từ menu chính. type, price, description và nút “add”.
Price: 2300
98
Click nút “add”
Nhân viên quản lý (Manager) đăng Giao diện tìm phòng hiện ra với 1 ô
nhập với id=1. Chọn chức năng sửa nhập tên phòng và nút tìm kiếm.
phòng từ menu chính.
Room 201
99
Room 202
Room 203
Chọn “edit” phòng 202 Giao diện sửa phòng hiện ra với các
thông tin cần sửa: name, type, price,
description và nút “save”.
100
Test case 3: xóa phòng khỏi CSDL
Nhân viên quản lý (Manager) đăng Giao diện tìm phòng hiện ra với 1 ô
nhập với id=1. Chọn chức năng xóa nhập tên phòng và nút tìm kiếm.
phòng từ menu chính.
Room 301
Room 302
Room 303
Chọn “delete” phòng 301 Giao diện xóa phòng hiện ra hỏi xác
nhận, cùng với 2 nút “cancel” để hủy
thao tác xóa và “delete” để xá phòng
khỏi CSDL
101
102
E. Dương Thùy An - B21DCCN132
II, Đặc tả UC
UC hủy phòng:
Đối tượng sử dụng: Nhân viên lễ tân hoặc nhân viên bán hàng.
Use case này cho phép nhân viên lễ tân hoặc nhân viên bán hàng tiếp nhận hủy
phòng của khách hàng
- Khách hàng cung cấp thông tin phòng yêu cầu hủy
103
- Nhân viên lễ tân hoặc nhân viên bán hàng đăng nhập vào hệ thống, vào mục
hủy phòng, tìm thông tin đơn đặt phòng qua booking ID hoặc số điện thoại
khách hàng
- Nhân viên hoặc lễ tân kiểm tra chính sách hủy phòng. Nếu hủy trước 24 giờ
trước ngày checkin thì không mất phí, ngược lại mất 5% hóa đơn đã thanh toán
- Nhân viên thông báo chính sách hủy phòng cho khách hàng và nhận lại xác
nhận của khách hàng
- Hệ thống tự động gửi xác nhận hủy phòng cho khách qua số điện thoại hoặc
email
104
Trigger Khi khách yêu cầu hủy phòng
Pre-Condition Lễ tân, nhân viên bán hàng đăng nhập thành
công, vào được chức năng hủy phòng
Post-Condition Lễ tân, nhân viên bán hàng hủy phòng
thành công, có thông báo từ hệ thống
Basic Flow 1. Lễ tân, nhân viên bán hàng đăng nhập vào
hệ thống.
2. Hệ thống xác thực thông tin đăng nhập
thành công và cho phép người dùng truy cập
ứng dụng
3. Lễ tân, nhân viên bán hàng chọn
Hủy phòng
4. Hệ thống hiện trang tìm đơn đặt phòng qua
Booking ID.
5. Lễ tân, nhân viên bán hàng nhập Booking
ID khách cung cấp và ấn tìm kiếm
6. Trang chi tiết đơn hàng xuất hiện (Có
thông tin phí hủy phòng)
7. Lễ tân, nhân viên bán hàng xác nhận hủy
với khách lần 2, và ấn nút hủy phòng
8. Hệ thống báo hủy thành công. Lễ tân, nhân
viên bán hàng báo lại với khách
Alternative Flow Khách không muốn hủy phòng nữa
6.1. Lễ tân, nhân viên bán hàng nhấn nút
thoát chức năng hủy phòng
Đăng xuất
105
2. Hệ thống hiện thông báo để xác nhận đăng
xuất, nhân viên xác nhận
3. Hệ thống thực hiện đăng xuất, hiển thị
màn hình đăng nhập
106
II. Biểu đồ hoạt động UC
107
III. Thiết kế giao diện cho UC
108
V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC.
Tầng View:
- CancelHomeFrm: trang chủ hủy phòng của nhân viên bán hàng và lễ
tân
- DetailCancelFrm: trang thông tin chi tiết đơn đặt phòng và hủy phòng
Tầng Control:
Các lớp này đều kế thừa từ lớp DAO để điều khiển truy nhập chung vào
CSDL.
Tầng Model:
109
110
VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC.
1. Khách hàng gọi điện hoặc trao đổi trực tiếp với nhân viên tại quầy
2. Nhân viên click chức năng hủy phòng trên giao diện chính của mình
3. Phương thức actionPerform() của lớp CancelHomeFrm được kích hoạt
4. Phương thức actionPerform() gọi lớp SearchBookingFrm
5. Hàm khởi tạo SearchBookingFrm() được gọi tới
6. Giao diện SearchBookingFrm() hiện lên
7. Nhân viên nhập mã của đơn đặt phòng cần hủy, ấn nút tìm kiếm
8. Phương thức actionperformed() của lớp SearchBookingFrm() được gọi tới
9. Phương thức actionperformed() gọi tới phương thức searchBooking() của
lớp BookingDAO
10.Phương thức searchBooking() được thực thi
11.Phương thức searchBooking() gọi tới lớp Booking để đóng gói kết quả
111
12.lớp Booking đóng gói các thuộc tính của chính nó
13.lớp Booking trả vể đối tượng cho phương thức searchBooking()
14.phương thức searchBooking() trả về kết quả cho phương thức
actionperformed()
15.phương thức actionperformed() hiển thị kết quả phòng trên giao diện
SearchBookingFrm cho nhân viên bán hàng hoặc lễ tân
16.Nhân viên bán hàng hoặc lễ tân click vào kết quả trả về
17.Phương thức actionperformed() của lớp SearchBooking được gọi
18.Phương thức actionperformed() gọi tới lớp DetailCancel
19.Hàm khởi tạo DetailCancel được gọi tới
20.Giao diện DetailCancel xuất hiện cho nhân viên xem
21.Nhân viên ấn nút Chi tiết hủy đơn
22.Phương thức actionperformed() của lớp DetailCancel được gọi tới
23.Phương thức actionperformed() gọi tới phương thức getFee() và
getCondition() của lớp PolicyDAO
24.phương thức getFee() và getCondition() trả về kết quả cho phương thức
actionperformed()
25.phương thức actionperformed() hiển thị kết quả phòng trên giao diện
DetailCancel cho nhân viên bán hàng hoặc lễ tân
26.Nhân viên báo lại cho khách hàng, xác nhận khách có muốn hủy hay
không
27.Nếu khách hủy, nhân viên hỏi lý do, điền vào ô trống
28.Nhân viên ấn HỦY PHÒNG
29.Phương thức actionperformed() gọi tới phương thức addCancel() của
CancelDAO
30. Phương thức addCancel() được thực thi
31. Phương thức addCancel() gọi tới lớp CanceledBooking
32. Lớp CanceledBooking đóng gói
112
33. Lớp CanceledBooking trả về đối tượng cho phương thức addCancel()
34. Phương thức addCancel() trả về kết quả cho phương thức
actionperformed()
35. Phương thức actionperformed() gọi tới lớp ConfirmFrm
36. Lớp ConfirmFrm xác nhận hủy phòng thành công cho nhân viên
37. Nhân viên thông báo hủy thành công cho khách hàng
38. Kết thúc hủy phòng
-tblUser:
-tblClient:
113
1 Lê Ngọc 123123 Hà Nội an@gmail.co 0912321
Quang m 3
- tblBooking:
114
4 4 4 25/04 9/5 150000 None
0
Các bước thực hiện TH1: Khách quyết định hủy phòng
1. Nhân viên có id=3 đang nhập, chọn chức năng hủy phòng
ID booking
Nút tìm
2. Nhập 1 ô ID booking :
115
0
Booking ID: 1
Lý do hủy: ………
116
Hệ thống hiện màn hình xác nhận đã hủy phòng thành
1. Nhân viên có id=1 đang nhập, chọn chức năng hủy phòng
ID booking
Nút tìm
2. Nhập 3 ô ID booking :
117
Booking ID: 3
Lý do hủy: ………
Nhân viên xác nhận phí hủy với khách, khách muốn tiếp tục đặt phòng
118
119