CNPM

You might also like

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

MỤC LỤC

Phần 1: Công việc chung của nhóm...........................................................................

I, Lý do chọn đề tài:....................................................................................................

II, Mô tả yêu cầu bài toán, yêu cầu người dùng.........................................................

Ràng buộc nghiệp vụ:...........................................................................................

III, Mô tả yêu cầu phần mềm.....................................................................................

1, Phân tích và xác định actor.................................................................................

2, Xác định yêu cầu chức năng: các Usecase..........................................................

2.1 Các UC cho người quản lý:............................................................................

2.2 Các UC của người bán hàng..........................................................................

2.3 Các UC cho lễ tân..........................................................................................

2.4 Các UC cho kế toán.......................................................................................

3, Xác định các yêu cầu phi chức năng................................................................

3.1 Ngôn ngữ lập trình:........................................................................................

3.2 Tính tái sử dụng (Reusability):......................................................................

3.3 Tính khả chuyển (Portability):.......................................................................

3.4 Vẽ biểu đồ UC tổng quát..............................................................................

IV, Xây dựng biểu đồ lớp thực thể...........................................................................

1, Phân tích và xác định các thực thể....................................................................

2, Mô tả thực thể (thuộc tính, phương thức,..)......................................................

3, Vẽ biểu đồ lớp thực thể.....................................................................................

Phần 2 Kết quả từng thành viên..................................................................................

A. Nông Triệu Lan Anh- B21DCCN157- UC xem thống kê.................................

1
I. Viết đặc tả UC.................................................................................................

II. Vẽ biểu đồ hoạt động......................................................................................

IV. Thiết kế giao diện cho UC..............................................................................

V. Thuyết minh và vẽ biểu đồ lớp MVC cho 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...............

VI. Thuyết minh và vẽ biểu đồ tuần tự cho UC....................................................

VII. Viết test case chuẩn cho UC..........................................................................

B. Đặng Quý Bình - B21DCCN018 - UC Đặt phòng..............................................

I, Biểu đồ UC........................................................................................................

II, Đặc tả UC.........................................................................................................

IV, Thiết kế giao diện cho UC..............................................................................

V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC.................................................

VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC....................................................

VII, Viết test case chuẩn cho 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 2: Không có phòng trống................................................................

+ 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.........................................................................................

C. Bùi Trường Sơn - B21DCCN649 - UC Check-out.............................................

I, Biểu đồ UC........................................................................................................

II, Đặc tả UC.........................................................................................................

III, Biểu đồ hoạt động UC.....................................................................................

2
IV, Thiết kế giao diện............................................................................................

V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC.................................................

VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC....................................................

VII, Viết test case chuẩn cho UC..........................................................................

D. Hà Trần Thế Anh - B21DCC145.........................................................................

I, Biểu đồ UC........................................................................................................

II, Đặc tả UC.........................................................................................................

III, Biểu đồ hoạt động UC.....................................................................................

IV, Thiết kế giao diện UC.....................................................................................

V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC.................................................

VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC....................................................

VII, Viết test case chuẩn cho UC..........................................................................

E. Dương Thùy An - B21DCCN132......................................................................

I. Sơ đồ Use Case hủy phòng.............................................................................

II, Đặc tả UC.......................................................................................................

III. Thiết kế giao diện cho UC............................................................................

V, Thuyết minh và vẽ biểu đồ lớp MVC cho UC...............................................

VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC..................................................

VII, Viết test case chuẩn cho UC........................................................................

3
Tên đề tài: Hệ thống quản lý khách sạn

Phần 1: Công việc chung của nhóm

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.

II, Mô tả yêu cầu bài toán, yêu cầu người dùng

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

Ràng buộc nghiệp vụ:

- Hoạt động nghiệp vụ của nhân viên nói chung:


• Phải đăng nhập để thực hiện các hoạt động nghiệp vụ của mình
• Sau khi đăng nhập, trên menu trang chủ tương ứng với từng nhân viên
đều có menu để chọn chức năng thay đổi mật khẩu và đăng xuất.
- Hoạt động nghiệp vụ của người quản lý:
• 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 xem báo cáo và quản lý thông tin phòng,
quản lý thông tin nhân viên

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

- Hoạt động nghiệp vụ của kế toán:


• 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: thống kê doanh thu, quản
lý lương
• Sau khi chọn: thống kê doanh thu hiển thị form nhập vào các thông tin
cho việc tạo biểu đồ đường/ tròn thể hiện lượng doanh thu tăng giảm theo ngày,
tháng, năm.
• Sau khi chọn: quản lý lương, hiển thị danh sách chấm công của nhân
viên để tạo bảng lươngIII, Mô tả yêu cầu phần mềm

1, Phân tích và xác định actor

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

2.1 Các UC cho người quản lý:

• Đă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ý

2.2 Các UC của người bán hàng

• Đă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

2.3 Các UC cho lễ tân

• Đă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

• Checkin: Xác nhận khách hàng nhận phòng

• Checkout: Xác nhận khách hàng trả phòng và thanh toán

Các UC phía dưới được extend từ UC Đăng nhập

2.4 Các UC cho kế 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,...)

• Quản lý lương: Quản lý tổng số ngày công của nhân viên từ đó


đưa ra tiền lương mỗi nhân viên

UC Thống kê doanh thu và UC Quản lý lương được extend từ UC


Đăng nhập của kế toán

3, Xác định các yêu cầu phi chức năng

3.1 Ngôn ngữ lập trình:

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.

Sử dụng các thiết kế mẫu như Singleton, Factory, hoặc Dependency


Injection để tăng tính tái sử dụng của mã nguồn.

3.3 Tính khả chuyển (Portability):

Đả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.

IV, Xây dựng biểu đồ lớp thực thể

1, Phân tích và xác định các thực thể

Kĩ thuật trích danh từ để trích các lớp:

- Điện thoại nằm ngoài phạm vi của phần mềm → loại

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:

Thuộc tính: ID (int), name (String), starLevel (int), address (String),


description (String), rooms (Room[]).

- User:

Thuộc tính: ID (int), username (String), password (String), fullName


(String), birthday (Date), address (String), mail (String), role (String),
description (String)

- Client:

Thuộc tính: ID (int), idCardNumber (String), idCardType (String),


fullName (String), birthday (Date), address (String), role (String)

- Room:

Thuộc tính: ID (int), name (String), type (String), displayPrice(float),


description (String).

- Booking:

Thuộc tính: ID (int), room (Room), client (Client), checkin (Date),


checkout (Date), pricePerNight (float), note (String), services
(UsedServices[]), totalPrice (float), isCheckedIn (boolean)

- Bill:

Thuộc tính: ID, paymentDATE(Date), paymentAmount (float),


paymentType (String), note (String), receptionist(User),
booking(Booking)

- Service:

12
Thuộc tính: ID (int), name (String), type (String), displayPrice (float),
description (String)

- UsedService:

Thuộc tính: ID (int), service (Service), pricePerUnit (float), quantity (int),


totalPrice (float)

3, Vẽ biểu đồ lớp thực thể.

13
PHẦN 2: KẾT QUẢ TỪNG THÀNH VIÊN

Nông Triệu Lan Anh- B21DCCN157- UC xem thống kê

I. Vẽ biểu đồ use case

II. Viết đặc tả UC

Use Case Name Xem thống kê


Description Người quản lý đăng nhập vào hệ thống,
chọn giao diện xem thống kê, thực hiện
các chức năng xem thống kê
Actor Người quản lý
Priority: Must Have

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ể.

3.3 Người quản lý chọn khoảng thời gian


gồm ngày bắt đầu và ngày kết thúc.

3.4 Hệ thống tính toán và hiển thị kết quả

15
thống kê dựa trên các thông tin đã chọn.

Thống Kê Lượng Khách Hàng:

3.1 Người quản lý chọn tính năngˮxem thống


kê lượng khách hà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ể.

3.3 Người quản lý chọn khoảng thời gian


gồm ngày bắt đầu và ngày kết thúc.
3.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.

Đăng xuất

1. Người quản lý chọn đăng xuất


2. Hệ thống hiện thông báo để xác nhận đăng
xuất, người quản lý 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

Đổi mật khẩu

1. Người quản lý chọn đổi mật khẩu


2. Hệ thống hiện biểu mẫu để điền thông tin
mật khẩu mới
3. Người quản lý ấn xác nhận thay đổi
4. Hệ thống ghi nhận thông tin vào lưu vào

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.

Use Case Name xem thống kê doanh thu của khách


sạn
Description Người quản lý khách sạn có thể xem
thống kê doanh thu của khách sạn theo
loại phòng và khoảng thời gian.
Actor Người quản lý khách sạn
Priority: Must Have
Pre-Condition Người quản lý đăng nhập thành công
vào hệ thống
Tài khoản của người quản lý đã được
phân quyền
Post-Condition Hệ thống trả về kết quả thống kê doanh

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

7b. Người quản lý chọn xuất báo cáo


dạng pdf

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

7c. Người quản lý chọn xuất báo cáo


dạng excel
7c1. Hệ thống hiển thị bản excel để xem
trước
7c2. Người quản lý nhấn nút tải xuống
Use case tiếp tục bước 8
Exception Flow 5d. Hệ thống thông báo không có dữ
liệu doanh thu nào 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ê

6e.Trong trường hợp có lỗi kết nối tới


cơ sở dữ liệu: hệ thống thông báo không
thể hiển thị thông tin, yêu cầu người
quản lý thử lại sau
Business Rules Người quản lý chỉ có thể thống kê các
loại phòng mà khách sạn đang cung
cấp.
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

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ề.

Use Case Name xem thống kê lượng khách hàng của


khách sạn
Description Người quản lý khách sạn có thể xem
thống kê lượng khách của khách sạn dựa
trên loại phòng và khoảng thời gian.
Actor Người quản lý khách sạn
Priority: Must Have
Pre-Condition Người quản lý đăng nhập thành công vào
hệ thống
Tài khoản của người quản lý đã được
phân quyền
Post-Condition Hệ thống trả về kết quả thống kê lượng
khách
Basic Flow 1. Người quản lý chọn chức năng "Xem
Thống Kê Lượng khách hàng"trên giao
diện của hệ thống.
2. Hệ thống hiển thị giao diện cho

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ê

6e.Trong trường hợp có lỗi kết nối tới cơ


sở dữ liệu: hệ thống thông báo không thể
hiển thị thông tin, yêu cầu người quản lý
thử lại sau
Business Rules Người quản lý chỉ có thể thống kê các
loại phòng mà khách sạn đang cung cấp.

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ề.

III. Vẽ biểu đồ hoạt động


a. Biểu đồ hoạt động của UC xem thống kê doanh thu

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

V. Thuyết minh và vẽ biểu đồ lớp MVC cho UC.

1 Phân tích chi tiết chức năng xem thống kê doanh thu theo phòng

● Vào hệ thống→ Giao diện đăng nhập ( loginView)


○ inUserName
○ inPassword
○ subLogin

● 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.

6.1 Xác định các thành phần:

- 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

6.2 Xác định các thông điệp

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.

- CSDL trước khi test:


tblUser:

id name usernam password position


e
1 Mana manager manager manager
ger
2 Seller seller seller seller
3 Recep recept recept receptionist
tionist
tblHotel:

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:

id idHot name type price


el
1 1 101 Standard 800
2 1 102 Superior 1000
3 1 103 Deluxe 2000
4 1 201 Standard 800
5 1 202 Suite 1000

6 1 203 Deluxe 2000


7 1 301 Standard 800
8 1 302 Superior 1000
9 1 303 viDeluxe 2000
p
tblClient:

id name idcar addre email tel des


d ss
1 Lê Văn An 1111 Hà an@gmail.c 12345
Nội om 6
2 Trần Tiến 2222 Đà anh@gmail. 23456
Anh Nẵng com 7
3 Cao Thanh 3333 Sài ctt@gmail.c 34567

33
Thanh Gòn om 8
4 Hoàng Thị 4444 Cần htl@gmail.c 45678
Luyến Thơ om 9
tblBooking:

id idCre idClie booking saleo note


ator nt date ff
1 3 1 13/02/2024 0

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:

id idBookin idRoo checki checko price saleoff isCheckin


g m n ut
1 1 2 14/02/20 15/02/202 1200 0 1
24 4
2 2 4 14/02/20 15/02/202 1200 0 1
24 4
3 3 2 29/04/20 02/05/202 1000 0 1
24 4
4 3 3 29/04/20 02/05/202 1000 0 1
24 4

- Các bước thực hiện và kết quả

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.

Các bước thực hiện:

- 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

- Chọn chức năng đặt phòng cho khách hà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 đó.

TH1: Còn loại phòng mà khách hàng yêu cầu:

+ 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:

+ Hệ thống sẽ báo hết loại phòng đã chọn.

+ 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ý.

Mô tả các use case còn lại:

- 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 Name: Đặt Phòng

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.

Actor: Nhân viên lễ tân hoặc nhân viên bán hàng.

Priority: Cao

Trigger: Khách hàng yêu cầu đặt phòng.

Pre-Condition: Nhân viên đã đăng nhập vào hệ thống và có thông tin về


phòng và khách hàng.

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.

Non-Functional Requirement: Hệ thống phải có khả năng xử lý đồng thời


nhiều yêu cầu đặt phòng.

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).

Phương thức actionPerformed() của lớp HomeFrm được kích hoạt.

Phương thức actionPerformed() gọi lớp SearchFreeRoomFrm.

Phương thức SearchFreeRoomFrm() được kích hoạt

Giao diện tương ứng hiển thị.

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.

Nhân viên nhập ngày nhận/trả phòng và click tìm.

Phương thức actionPerformed() của lớp SearchFreeRoomFrm được kích hoạt.

Phương thức actionPerformed() gọi phương thức searchFreeRoom() của lớp


RoomDAO.

Phương thức searchFreeRoom() thực hiện tìm kiếm trong CSDL.

Phương thức searchFreeRoom() gọi lớp Room để đóng gói kết quả tìm kiếm
được.

Lớp Room đóng gói đối tượng

Lớp Room trả về cho phương thức searchFreeRoom().

Phương thức searchFreeRoom() trả kết quả về cho phương thức


actionPerformed()

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.

Khách hàng nêu yêu cầu về phòng cho nhân viên.

Nhân viên click vào phòng tương ứng.

Phương thức actionPerformed() của lớp SearchFreeRoomFrm lại được kích


hoạt.

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 các hàm đóng gói

Lớp Booking gọi lớp BookedRoom để đóng gói thuộc tính thành phần

Lớp BookedRoom đóng gói các thuộc tính của mình

Lớp BookedRoom trả lại lớp Booking.

Lớp Booking trả lại phương thức actionPerformed().

Phương thức actionPerformed() gọi lớp SearchClientFrm.

Phương thức SearchClientFrm() được kích hoạt

Giao diện tương ứng hiển thị.

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.

Nhân viên gõ tên khách hàng vào và click tìm kiếm.

Phương thức actionPerformed() của lớp SearchClientFrm được kích hoạt.

Phương thức actionPerformed() gọi phương thức searchClient() của lớp


ClientDAO.

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.

Lớp Client đóng gói các đối tượng

Lớp Client trả về cho phương thức searchClient().

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

Lớp Booking gọi hàm setClient()

Lớp Booking trả lại phương thức actionPerformed()

Phương thức actionPerformed() gọi lớp ConfirmFrm.

Phương thức ConfirmFrm() được kích hoạt

Giao diện tương ứng hiển thị.

Nhân viên xác nhận lại các thông tin đặt phòng với khách hàng.

Khách hàng xác nhận đúng và đồng ý đặt phòng.

Nhân viên click vào nút xác nhận.

Phương thức actionPerformed() của lớp ConfirmFrm được kích hoạt.

Phương thức actionPerformed() gọi phương thức addBooking() của lớp


BookingDAO.

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 click OK của thông báo.

Phương thức actionPerformed() gọi lại giao diện HomeFrm.

Giao diện HomeFrm được hiển thị.

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.

VII, Viết test case chuẩn cho UC.

Các trường hợp kiểm thử:

Không có phòng trố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)

CSDL trước khi test:

-tblUser:

id name username password position

49
1 Manager manager manager manager

2 Seller seller seller seller

3 Receptionist recept recept receptionist

- tblHotel:

id name address star des

1 Metropole 160 Nguyễn Văn Trỗi, Mộ 5


Lao, Hà Đông, Hà Nội

- tblRoom:

id idHotel name type price des

1 1 101 Standard 800 garden view

2 1 102 Deluxe 1000 garden view

3 1 103 Suite 1500 garden view

50
4 1 201 Standard 800 garden view

5 1 202 Deluxe 1000 garden view

6 1 203 Suite 1500 garden view

-tblClient:

id name idcard address email tel des

1 Lê Ngọc Quang 123123 Hà Nội an@gmail.co 091232


m 13

2 Trần Lâm Anh 456546 Đà anh@gmail.c 092323


Nẵng om 22

3 Cao Thanh 234234 Sài Gòn ctt@gmail.co 098888


Huyền m 8

4 Hoàng Thu 2342332 Hà htl@gmail.co 091232


Huyền 4 Giang m 13

- 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:

id idBooking idRoom checkin checkout price saleoff isChecki


n

1 1 2 14/04/2024 15/04/2024 1200 0 1

2 2 5 14/04/2024 15/04/2024 1200 0 1

3 3 2 29/04/2024 01/05/2024 1800 0 0

4 3 3 29/04/2024 01/05/2024 3500 0 0

52
5 4 1 28/04/2024 02/05/2024 2000 0 0

6 4 6 28/04/2024 02/05/2024 3500 0 0

7 5 1 05/05/2024 10/05/2024 2500 800 0

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

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

2. Nhập : Kết quả có các phòng trống hiện lên:

- 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

Và click vào nút Tìm

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

Và click vào nút


Search
id name idcard address email tel des

3 Cao 23423 Sài Gòn ctt@g 098888


Thanh 4 mail.c 8
Huyền om

4 Hoàng 23423 Hà Giang htl@g 091232


Thu 324 mail.c 13
Huyền om

5. 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:
Huyền
- tên: Cao Thanh Huyền,

- idcard: 234234

54
- địa chỉ: Sài Gòn

- email: ctt@gmail.com

- tel: 0988888

- Thông tin phòng đặt:

TT name type price des checkin checkout

1 202 Stand 1600 garde 30/04/20 01/05/20


ard n 24 24
view

- Thanh toán khi trả phòng

- Nút xác nhận và hủy bỏ

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

CSDL sau khi test:

- Các bảng khác không thay đổi, chỉ có bảng tblBooking và tblBookedRoom
thay đổi:

55
- tblBooking:

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

6 3 3 27/04/2024 0

- tblBookedRoom:

id idBookin idRoom checkin checkout price sale isChecki


g off n

1 1 2 14/02/2020 15/02/2024 1200 0 1

2 2 5 14/02/2020 15/02/2024 1200 0 1

56
3 3 2 29/04/2020 01/05/2024 1000 0 0

4 3 3 29/04/2020 01/05/2024 1000 0 0

5 4 1 28/04/2020 02/05/2024 800 0 0

6 4 6 28/04/2020 02/05/2024 1000 0 0

7 5 1 05/05/2020 10/05/2024 800 800 0

8 6 4 30/04/2020 01/05/2024 1000 0 0

+ Test case 2: Không có phòng trống

CSDL trước khi test:

-tblUser:

id name username password position

1 Manager manager manager manager

2 Seller seller seller seller

3 Receptionist recept recept receptionist

57
- tblHotel:

id name address star des

1 Metropole 160 Nguyễn Văn Trỗi, Mộ 5


Lao, Hà Đông, Hà Nội

- tblRoom:

id idHotel name type price des

1 1 101 Standard 800 garden view

2 1 102 Deluxe 1000 garden view

3 1 103 Suite 1500 garden view

4 1 201 Standard 800 garden view

5 1 202 Deluxe 1000 garden view

6 1 203 Suite 1500 garden view

-tblClient:

58
id name idcard address email tel des

1 Lê Ngọc Quang 123123 Hà Nội an@gmail.co 091232


m 13

2 Trần Lâm Anh 456546 Đà anh@gmail.c 092323


Nẵng om 22

3 Cao Thanh 234234 Sài Gòn ctt@gmail.co 098888


Huyền m 8

4 Hoàng Thu 2342332 Hà htl@gmail.co 091232


Huyền 4 Giang m 13

- tblBooking:

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

59
5 3 3 26/04/2024 0

6 3 3 27/04/2024 0

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

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

2. Nhập : Thông báo không còn phòng

- 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

- Loại phòng = Standard

Và click vào nút Tìm

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

CSDL sau khi test:

- Không có gì thay đổi

+ 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

CSDL trước khi test:

-tblUser:

id name username password position

1 Manager manager manager manager

2 Seller seller seller seller

3 Receptionist recept recept receptionist

- tblHotel:

id name address star des

61
1 Metropole 160 Nguyễn Văn Trỗi, Mộ 5
Lao, Hà Đông, Hà Nội

- tblRoom:

id idHotel name type price des

1 1 101 Standard 800 garden view

2 1 102 Deluxe 1000 garden view

3 1 103 Suite 1500 garden view

4 1 201 Standard 800 garden view

5 1 202 Deluxe 1000 garden view

6 1 203 Suite 1500 garden view

-tblClient:

id name idcard address email tel des

62
1 Lê Ngọc Quang 123123 Hà Nội an@gmail.co 091232
m 13

2 Trần Lâm Anh 456546 Đà anh@gmail.c 092323


Nẵng om 22

3 Cao Thanh 234234 Sài Gòn ctt@gmail.co 098888


Huyền m 8

4 Hoàng Thu 2342332 Hà htl@gmail.co 091232


Huyền 4 Giang m 13

- tblBooking:

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

63
5 3 3 26/04/2024 0

- tblBookedRoom:

id idBookin idRoom checkin checkout price saleoff isChec


g kin

1 1 2 14/04/2024 15/04/2024 1200 0 1

2 2 5 14/04/2024 15/04/2024 1200 0 1

3 3 2 29/04/2024 01/05/2024 1800 0 1

4 3 3 29/04/2024 01/05/2024 3500 0 1

5 4 1 28/04/2024 02/05/2024 2000 0 1

6 4 6 28/04/2024 02/05/2024 3500 0 1

7 5 1 05/05/2024 10/05/2024 2500 800 1

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

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

2. Nhập : Kết quả có các phòng trống hiện lên:

- 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

Và click vào nút Tìm

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

Và click vào nút


Search
id name idcard address email tel des

65
3 Cao 23423 Sài ctt@gm 0988
Thanh 4 Gòn ail.com 888
Huyền

4 Hoàng 23423 Hà htl@gm 0912


Thu 324 Giang ail.com 3213
Huyền

5. 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:
Huyền
- tên: Cao Thanh Huyền,

- idcard: 234234

- địa chỉ: Sài Gòn

- email: ctt@gmail.com

- tel: 0988888

- Thông tin phòng đặt::

TT name type price des checkin checkout

1 202 Stan 1600 gard 30/04/202 01/05/202

66
dard en 4 4
vie
w

- Thanh toán khi trả phòng

- Nút xác nhận và hủy bỏ

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

9. Nhập : Kết quả có các phòng trống hiện lên:

- 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

Và click vào nút Tìm

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

Và click vào nút


Search
id name idcard address email tel des

1 Lê 123123 Hà Nội an@gm 0912


Ngọc ail.com 3213
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

- địa chỉ: Hà Nội

- email: an@gmail.com

- tel: 09123213

68
- Thông tin phòng đặt::

TT name type price des checkin checkout

1 202 Stan 1600 garde 01/05/20 02/05/202


dard n 24 4
view

- Thanh toán khi trả phòng

- Nút xác nhận và hủy bỏ

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

CSDL sau khi test:

- Các bảng khác không thay đổi, chỉ có bảng tblBooking và tblBookedRoom
thay đổi:

- tblBooking:

id idCreator idClient bookingdate saleoff note

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:

id idBookin idRoom checkin checkout price sale isChecki


g off n

1 1 2 14/02/2020 15/02/2024 1200 0 1

2 2 5 14/02/2020 15/02/2024 1200 0 1

70
3 3 2 29/04/2020 01/05/2024 1000 0 1

4 3 3 29/04/2020 01/05/2024 1000 0 1

5 4 1 28/04/2020 02/05/2024 800 0 1

6 4 6 28/04/2020 02/05/2024 1000 0 1

7 5 1 05/05/2020 10/05/2024 800 800 1

8 6 4 30/04/2020 01/05/2024 1600 0 1

9 7 4 01/05/2024 02/05/2024 1600 0 0

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

Actor Nhân viên lễ tân, khách hàng


Priority Phải có
Trigger Nhân viên lễ tân muốn thực hiện quy trình check-out cho
khách hàng
Pre-conditions
Hệ thống đang ở trạng thái hoạt động.

Nhân viên đã đăng nhập vào hệ thố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

IV, Thiết kế giao diện

a. Giao diện ban đầu của nhân viên lễ tân.

b. Giao diện check-out.

74
c. Giao diện thông tin chi tiết phòng

d. Giao diện lập hóa đơn

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:

User, BookedRoom cần có lớp thành phần UsedService và Service, Bill,


Client

B. Biểu đồ lớp chi tiết theo mô hình MVC

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

Trường hợp kiểm thử: Thực hiện check-out phòng đã đặt

Các bảng dữ liệu trước khi test:

tblUser

I FullNam Usernam Password Role address email


D e e
1 Nguyễn manager manager manager Vĩnh Phúc manager@gmail.c
Văn A om
2 Trần Thị receptioni receptionist receptionis Vĩnh Phúc receptionist@gma
B st t il.com
3 Bùi Văn seller seller seller Vĩnh Phúc seller@gmail.com
C

tbl Client

Id fullName idCardNumb idCardTyp Birthday address not


er e e
1 Trần Văn D 111111 001 01/07/199 Vĩnh null
3 Phúc
2 Cao Thanh E 122233 002 02/08/199 Hà Nội null
8
3 Bùi Thị F 132233 003 12/06/199 Thái null
6 Bình
4 Hoàng Văn G 132323 004 10/06/199 Điện null
5 Biên

tbl BookedRoom

Id idRoo checkin checkout price saleof isChecki isCheckou idclien

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

Id paymentDat paymentAmou note idUser


e nt
1 15/02/2024 1200 null 2
2 15/02/2024 1200 null 2

Bắt đầu kiểm thử

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

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

Và trở về giao diện chi tiết phòng.

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

Và chuyển về giao diện check-out, kết thúc kiểm


thử

Các bảng dữ liệu bị thay đổi sau khi kiểm thử:

tblBookedRoom:

Id idRoo checkin checkout price saleof isChecki isChecko idclien


m f n ut t
1 2 14/02/202 30/05/202 1200 0 1 1 1

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:

Id paymentDat paymentAmou note idUser


e nt
1 15/02/2024 1200 null 2
2 15/02/2024 1200 null 2
3 09/05/2024 1500 null 2

85
D. Hà Trần Thế Anh - B21DCC145

I, Biểu đồ UC

II, Đặc tả UC

Đối tượng sử dụng: Người quản lý

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.

Các bước thực hiện:

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ê.

- Chọn chức năng quản lý thông tin phòng.

- Hiện ra 3 lựa chọn là thêm, sửa, xóa thông tin phòng.

Trường hợp thêm phòng:

- Chọn chức năng “add room”.

- 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í.

Trường hợp sửa phòng:

- Chọn chức năng “update room”.

- 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.

- Nhập tên phòng và click “search”.

- 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í.

Trường hợp xóa phòng:

- Chọn chức năng “delete room”.

- 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.

- Nhập tên phòng và click “search”.

- 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.

- Các lớp tầng thực thể liên quan: User, Room.

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ị.

VII, Viết test case chuẩn cho UC.

CSDL trước khi test (bỏ qua phần login):

tblUser:

tblHotel:

tblRoom:

97
Test case 1: Thêm phòng mới vào CSDL

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

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”.

Nhập: Phòng mới với các thông tin vừa


điền từ form được thêm vào bảng
Name: 304
tblRoom.
Type: vip

Price: 2300

Description: overlooking the West


lake

98
Click nút “add”

Sau khi test chỉ có bảng tblRoom thay đổi:

Test case 2: sửa thông tin phòng

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

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.

Nhập tên phòng: 20 Hiện lên các phòng:

Room 201

99
Room 202

Room 203

Và 2 nút “edit”, “delete” bên cạnh


tên mỗi phòng

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”.

Nhập: Phòng 202 với các thông tin vừa sửa


từ form được update trong bảng
Price: 650
tblRoom.
Click “save”.

Sau khi test chỉ có bảng tblRoom thay đổi:

100
Test case 3: xóa phòng khỏi CSDL

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

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.

Nhập tên phòng: 30 Hiện lên các phòng:

Room 301

Room 302

Room 303

Và 2 nút “edit”, “delete” bên cạnh


tên mỗi phòng

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

Click “delete” Phòng 301 được xóa khỏi bảng


tblRoom.

101
102
E. Dương Thùy An - B21DCCN132

I. Sơ đồ Use Case hủy phòng

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

Các bước thực hiện:

- 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

TH1: Khách đồng ý hủy phòng

- Nhân viên hỏi lý do hủy phòng và nhập lý do

- Nhân viên ấn nút xác nhận hủy phòng

- Hệ thống lưu thông tin đơn đặt phòng bị hủy

- 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

TH2: Khách không hủy phòng

- Nhân viên thoát chế độ hủy phòng

Đặc tả UC hủy phòng

Use Case Name Hủy phòng


Description Lễ tân hoặc nhân viên bán hàng đăng nhập
vào hệ thống, dùng chức năng hủy phòng
để hủy phòng khách yêu cầu
Actor Lễ tân, nhân viên bán hàng
Priority: Must Have

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

1. Nhân viên chọn đă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

Đổi mật khẩu

1. Nhân viên chọn đổi mật khẩu


2. Hệ thống hiện biểu mẫu để điền thông tin
mật khẩu mới
3. Nhân viên ấn xác nhận thay đổi
4. Hệ thống ghi nhận thông tin vào lưu vào
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ứ 10 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.

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

- SearchBookingRrm: trang tìm kiếm đơn đã đặt cần hủy

- DetailCancelFrm: trang thông tin chi tiết đơn đặt phòng và hủy phòng

- CancelConfirmFrm: xác nhận đã hủy phòng thành công

Tầng Control:

- BookingDAO: tìm kiếm đơn đặt phòng

- PolicyDAO: đối chiếu thông tin chính sách hủy phòng

- CancelDAO: thêm đơn đặt phòng vào danh sách đã hủy

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 Booking (gồm Client, User), Policy, CanceledBooking

109
110
VI, Thuyết minh và vẽ biểu đồ tuần tự cho UC.

· 2 nhãn bị khuất là Policy và CanceledBooking

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

VII, Viết test case chuẩn cho UC.

CSDL trước khi test:

-tblUser:

id name username password position

1 Manager manager manager manager

2 Seller seller seller seller

3 Receptionist recept recept receptionist

-tblClient:

id name idcard address email tel des

113
1 Lê Ngọc 123123 Hà Nội an@gmail.co 0912321
Quang m 3

2 Trần Lâm Anh 456546 Đà anh@gmail.co 0923232


Nẵng m 2

3 Cao Thanh 234234 Sài Gòn ctt@gmail.co 0988888


Huyền m

4 Hoàng Thu 2342332 Hà htl@gmail.co 0912321


Huyền 4 Giang m 3

- tblBooking:

id idUse idClien bookday checkind Total note


r t ay
Fee

1 3 1 13/04 9/5 120000 None


0

2 4 3 13/04 9/5 100000 None

3 3 2 21/04 10/5 400000 None


0

114
4 4 4 25/04 9/5 150000 None
0

5 3 3 26/04 9/5 200000 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

=> Giao diện tìm phòng trống hiện ra. Có ô nhập:

ID booking

Nút tìm

2. Nhập 1 ô ID booking :

Và click vào nút Tìm

Kết quả chi tiết đơn đặt phòng

id idUse idClient bookda checkind Total note


r y ay
Amoun
t

1 3 1 13/04 9/5 120000 None

115
0

3. Click chuột vào bảng trên

Kết quả ra trang chi tiết hủy phòng

Chi tiết booking

Booking ID: 1

Tên khách hàng: Cao Thanh


Huyền

Ngày đặt phòng: 13/04

Ngày checkin: 9/5

Đã thanh toán: 1200000

Nhân viên tạo: Receptionist

Thông tin hủy phòng:

Phí hủy phòng: 0 VNĐ

Lý do hủy: ………

Ví dụ ngày hủy phòng là 7/5

4. Nhân viên ấn nút hủy phòng

116
Hệ thống hiện màn hình xác nhận đã hủy phòng thành

Các bước thực hiện TH2: Khách không hủy phòng

1. Nhân viên có id=1 đang nhập, chọn chức năng hủy phòng

=> Giao diện tìm phòng trống hiện ra. Có ô nhập:

ID booking

Nút tìm

2. Nhập 3 ô ID booking :

Và click vào nút Tìm

Hiện ra bảng sau:

id idUse idClient bookda checkind Total note


r y ay
Amoun
t

3 3 2 21/04 10/5 400000 None


0

3. Click chuột vào bảng trên

Kết quả ra trang chi tiết hủy phòng

Chi tiết booking

117
Booking ID: 3

Tên khách hàng: Trần Lâm Anh

Ngày đặt phòng: 21/04

Ngày checkin: 10/5

Đã thanh toán: 4000000

Nhân viên tạo: Receptionist

Thông tin hủy phòng:

Phí hủy phòng: 200.000 VNĐ

Lý do hủy: ………

Giải sử ngày nhân viên đang nhập để hủy là ngày 10/5

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

3. Nhân viên thoát chế độ hủy phòng

118
119

You might also like