lOMoARcPSD| 58647650
BỘ GIÁO DỤC VÀ ĐÀO TẠO
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ 2
--- ---
MÔN HỌC: KIẾN TRÚC THIẾT KẾ PHẦN MỀM
Đề tài:
TRANG WEB ĐẶT PHÒNG KHÁCH SẠN
Lớp: D21CQCNPM01-N.
Nhóm: 19
Giảng viên hướng dẫn: Thầy Nguyễn Văn Hữu Hoàng
Sinh viên thực hiện: Võ Anh Kiệt – N21DCCN045
Ngô Cao Hy – N21DCCN040
Nguyễn Quang Linh – N21DCCN047
Thành phố Hồ Chí Minh, tháng năm 2025
lOMoARcPSD| 58647650
MỤC LỤC:
LỜI CẢM ƠN.......................................................................................................................1
BẢNG PHÂN CÔNG...........................................................................................................2
I. MỤC ĐÍCH MỤC
TIÊU....................................................................................................3
1. Mục đích (Nhu cầu sử dụng ứng
dụng)........................................................................3
2. Mục tiêu (Kết quả cần đạt
được)...................................................................................3
3. Phương pháp tiến
hành..................................................................................................3
II. TẢ KIẾN TRÚC THỰC
HIỆN.................................................................................5
1. Mô hình kiến trúc: MVC (Model - View - Controller)............................................5
2. Lý do chọn mô hình MVC.......................................................................................6
3. Ai dùng và cần gì ở phần
mềm.....................................................................................6
4. Nhận định yêu cầu đối với sản phẩm của
project.........................................................7
5. Usecase tổng
quát..........................................................................................................8
6. Vẽ biểu đồ tuần tự tương
ứng.......................................................................................8
7. Vẽ biểu đồ hoạt
động..................................................................................................16
8. Vẽ biểu đồ triển
khai...................................................................................................25
III. CÁC MẪU DESIGN PATTERN SỬ DỤNG VÀ LÍ DO CHỌN................................26
I. Các mẫu design pattern sử dụng và lí do chọn............................................................26
1. Singleton Design Pattern.......................................................................................26
2. Factory Method......................................................................................................28
3. Chain of Responsibility Design Pattern.................................................................33
4. Facade Design Pattern..........................................................................................38
lOMoARcPSD| 58647650
5. Decorator Design Pattern.....................................................................................42
6. Observer Design Pattern.......................................................................................48
7. Strategy Design Pattern.........................................................................................51
8. Visitor Design Pattern...........................................................................................58
II. Thiết kế giao diện.......................................................................................................66
III. KẾT LUẬN...................................................................................................................75
lOMoARcPSD| 58647650
LỜI CẢM ƠN
Lời đầu tiên, nhóm em xin gửi lời cảm ơn chân thành đến Thầy Nguyễn Văn Hữu
Hoàng. Trong quá trình học tập nghiên cứu bộ môn Chuyên đề Công Nghệ Phần
mềm, chúng em đã nhận được sựớng dẫn, giảng dạy tận tâm nhiệt huyết từ thầy.
Thầy đã giúp chúng em hiểu hơn về những kiến thức quan trọng và thực tế trong lĩnh
vực quản lý dự án, từ đó tích lũy thêm nhiều kinh nghiệm bổ ích và kỹ năng cần thiết.
Từ những kiến thức thầy truyền đạt, nhóm em đã áp dụng vào việc hoàn thành
bài tiểu luận cuối kỳ của môn học. Tuy nhiên, do vẫn còn những hạn chế về kinh nghiệm
và hiểu biết trong lĩnh vực này, bài tiểu luận của chúng em khó tránh khỏi những thiếu
sót. Rất mong thầy xem xét, đánh giá góp ý để bài tiểu luận của chúng em được hoàn
thiện hơn.
Nhóm em kính chúc thầy luôn dồi dào sức khỏe, thành công trong sự nghiệp
giảng dạy, tiếp tục dìu dắt các thế hệ sinh viên đến với những thành tựu mới trên con
đường học tập và phát triển bản thân. Nhóm em xin chân thành cảm ơn!
lOMoARcPSD| 58647650
BẢNG PHÂN CÔNG
Tên thành viên
Nhiệm vụ
Anh Kiệt
Ngô Cao Hy
Nguyễn Quang
Linh
I. MỤC ĐÍCH MỤC TIÊU
1. Mục đích (Nhu cầu sử dụng ứng dụng)
Trong những năm gần đây, cùng với sự phát triển của nền kinh tế, mức sống của
con người ngày càng được nâng cao. Du lịch không còn là một nhu cầu xa xỉ mà đã
trở thành một phần quan trọng trong cuộc sống, giúp con người thư giãn, khám phá
những vùng đất mới và tận hưởng những khoảnh khắc đáng nhớ bên gia đình, bạn bè.
Tuy nhiên, mỗi khi mùa du lịch đến, việc tìm kiếm và đặt phòng khách sạn trở
thành một vấn đề không hề đơn giản. Nhiều du khách gặp khó khăn trong việc tìm
được phòng ưng ý với mức giá phù hợp, đặc biệt là vào những thời điểm cao điểm khi
nguồn cung hạn chế. Ngoài ra, các phương thức đặt phòng truyền thống thường tốn
nhiều thời gian, thiếu sự minh bạch về giá cả, chất lượng dịch vụ và không đáp ứng
được nhu cầu đặt phòng nhanh chóng, tiện lợi.
Chính vì vậy, một hệ thống đặt phòng trực tuyến hiện đại, dễ sử dụng và đáng tin
cậy sẽ giúp khách hàng dễ dàng tìm kiếm, so sánh và đặt phòng một cách thuận tiện.
Không chỉ tiết kiệm thời gian, hệ thống còn giúp khách hàng có được trải nghiệm du
lịch trọn vẹn hơn, đồng thời hỗ trợ các khách sạn tối ưu hóa công suất phòng và nâng
cao chất lượng dịch vụ.
2. Mục tiêu (Kết quả cần đạt được)
Đề tài “Xây dựng website đặt phòng khách sạn” được triển khai nhằm:
- Phát triển một hệ thống đặt phòng khách sạn trực tuyến, cho phép người dùng
tìm kiếm, xem chi tiết và đặt phòng nhanh chóng.
- Hỗ trợ quản lý các thông tin khách sạn, phòng, tình trạng đặt phòng, người dùng
và thanh toán.
- Cung cấp giao diện quản trị để nhân viên khách sạn quản lý đơn đặt phòng,
duyệt/gửi xác nhận và kiểm soát doanh thu.
- Ứng dụng các kiến trúc phần mềm hiện đại (MVC, Layered Architecture) và
mẫu thiết kế (Design Patterns) nhằm đảm bảo khả năng mở rộng, bảo trì và tối
ưu hiệu năng hệ thống.
lOMoARcPSD| 58647650
- Đảm bảo hệ thống vận hành ổn định, an toàn và thân thiện với người sử dụng
cuối.
3. Phương pháp tiến hành
Khảo sát thực tế:
- Phân tích quy trình đặt phòng truyền thống và các hệ thống đặt phòng điện tử
hiện có (Booking, Agoda, Traveloka), nhận diện nhu cầu thực tế và các vấn đề
tồn tại như thiếu tính linh hoạt, trải nghiệm người dùng chưa tối ưu, khó kiểm
soát phòng trống theo thời gian thực.
Thu thập và phân tích yêu cầu:
- Xác định rõ các đối tượng sử dụng hệ thống (khách hàng, nhân viên khách sạn,
quản trị viên), nghiệp vụ cần thực hiện (tra cứu phòng, đặt phòng, xác nhận đơn,
hủy đặt, thanh toán, quản lý doanh thu,...), phân quyền hệ thống.
Nghiên cứu kiến trúc phần mềm phù hợp:
- Chọn mô hình kiến trúc MVC kết hợp với Layered Architecture để tách biệt
giao diện, xử lý nghiệp vụ và dữ liệu.
Ứng dụng các Design Patterns:
- Chain of Responsibility: xử lý đăng nhập (kiểm tra thông tin nhập, xác thực, lưu
session) và kiểm tra đặt phòng (kiểm tra trường, xác thực, phòng trống, đặt
phòng) trong gói handler
- Singleton: quản lý kết nối database (DAO).
- Factory: khởi tạo các đối tượng thành phố,khách sạn,loại khách sạn,phòng.
- Observer: Gửi thông báo email khi trạng thái đặt phòng thay đổi (ví dụ, "Đã xác
nhận") trong gói observer.
- Strategy: Lọc khách sạn theo tiêu chí (thành phố, xếp hạng, bữa ăn, giáp biển)
trong gói strategy
- Visitor: Thực hiện báo cáo thống kê (doanh thu, số phòng, đặt phòng hủy) trên
DatPhong và Phong trong gói visitor.
- Decorator: Thêm dịch vụ bổ sung (bữa ăn, spa) vào đặt phòng, tính chi phí động
trong gói decorator
- Facade: Cung cấp giao diện đơn giản cho logic đặt phòng phức tạp
(HotelBookingFacade) trong gói facade.
Phân tích và thiết kế hệ thống:
lOMoARcPSD| 58647650
- Vẽ sơ đồ Use Case, Biểu đồ lớp (Class Diagram), Biểu đồ tuần tự(Sequence
Diagram) ,Biểu đồ hoạt động (Activity Diagram) bằng UML.
- Thiết kế giao diện người dùng thân thiện, đảm bảo UX tốt (Responsive UI với
PrimeFaces).
- Thiết kế cơ sở dữ liệu SQL Server chuẩn hóa theo mô hình thực thể - quan hệ
(ERD).
II. MÔ TẢ KIẾN TRÚC THỰC HIỆN
1. Mô hình kiến trúc: MVC (Model - View - Controller)
Hệ thống website đặt phòng khách sạn được thiết kế và phát triển dựa trên mô hình
kiến trúc MVC (Model - View - Controller). Đây là một trong những mô hình phổ
biến và hiệu quả nhất hiện nay cho các ứng dụng web, đặc biệt khi kết hợp với công
nghệ JSF (JavaServer Faces) trong môi trường Java EE.
Model:
Chức năng: Đảm nhận việc quản lý dữ liệu và xử lý các nghiệp vụ liên quan đến dữ
liệu.
Thành phần: Bao gồm các lớp entity như TaiKhoan, DatPhong, KhachSan,
Phong,... đại diện cho các thực thể trong hệ thống, được ánh xạ (mapping) với cơ sở
dữ liệu.
Ngoài ra, lớp DAO (Data Access Object) cũng nằm trong Model, chịu trách nhiệm
truy xuất, cập nhật và xóa dữ liệu từ/đến cơ sở dữ liệu MySQL.
View:
Chức năng: Hiển thị giao diện người dùng, tiếp nhận các hành động (event) từ phía
client.
Thành phần: Các trang giao diện web được xây dựng bằng JSF, định dạng .xhtml.
Kết hợp PrimeFaces để tạo ra các giao diện trực quan, dễ sử dụng, thân thiện với
người dùng, đồng thời hỗ trợ responsive cho đa thiết bị (desktop, tablet, mobile).
Controller (Bean):
Chức năng: Là cầu nối giữa View và Model. Controller nhận dữ liệu từ View, xử
các yêu cầu nghiệp vụ, gọi các phương thức trong Model để thực thi logic, và trả kết
quả ngược lại cho View.
Thành phần: Các ManagedBean như BeanNguoiDung, BeanPhong,
BeanKhachSan, BeanDatPhong,... được quản lý vòng đời bởi JSF. Các bean này đảm
nhiệm việc nhận request, gọi service, DAO và cập nhật giao diện theo yêu cầu.
lOMoARcPSD| 58647650
2. Lý do chọn mô hình MVC
- Phân chia rõ ràng các tầng: Giúp tách biệt logic giao diện (View), nghiệp vụ
(Controller) và dữ liệu (Model). Nhờ đó dễ dàng quản lý, bảo trì và phát triển
mở rộng các thành phần hệ thống mà không làm ảnh hưởng đến phần còn lại.
- Phù hợp với công nghệ JSF: JSF hỗ trợ bản chất mô hình MVC một cách tự
nhiên thông qua cơ chế Managed Bean, Navigation Rule và Event Handling.
Điều này giúp việc phát triển giao diện web động trở nên đơn giản và mạch lạc
hơn.
- Dễ dàng mở rộng và bảo trì: Khi có thay đổi nghiệp vụ hoặc giao diện, chỉ cần
điều chỉnh ở tầng tương ứng. Ví dụ: cập nhật giao diện không cần thay đổi
Model hay nghiệp vụ xử lý.
- Tối ưu hóa quy trình phát triển nhóm: Nhóm lập trình viên có thể làm việc song
song: một nhóm phát triển View (frontend), một nhóm phát triển
Controller/Model (backend), giúp rút ngắn thời gian hoàn thành dự án.
- Đáp ứng yêu cầu thực tiễn của hệ thống đặt phòng:
Hệ thống yêu cầu sự linh hoạt trong tìm kiếm phòng, đặt phòng theo thời gian
thực, quản lý nhiều đối tượng khác nhau (khách hàng, nhân viên, quản lý khách
sạn), nên mô hình MVC là lựa chọn phù hợp để đảm bảo tổ chức hệ thống khoa
học và hiệu quả.
3. Ai dùng và cần gì ở phần mềm
Khách hàng (Người đặt phòng)
- Tìm kiếm phòng nhanh chóng theo địa điểm, loại phòng, tiện ích, đánh giá
khách hàng.
- Đặt phòng và nhận thông báo về mail khi được xác nhận dễ dàng với quy trình
đơn giản, trực quan.
- Kiểm tra tình trạng phòng trống theo ngày và số lượng khách.
- Xem thông tin chi tiết về khách sạn bao gồm hình ảnh, mô tả dịch vụ, tiện nghi,
vị trí trên bản đồ, chính sách hủy phòng.
- Quản lý đặt phòng cá nhân: xem lịch sử đặt phòng, chỉnh sửa hoặc hủy đặt
phòng khi cần.
- Đánh giá phòng:sau khi đã sử dụng phòng thì có thể tiến hành chấm điểm
phòng và đánh giá chất lượng phòng
- Đăng ký, đăng nhập và quản lý tài khoản cá nhân.
- Chỉnh sửa thông tin cá nhân, cập nhật số điện thoại, email, mật khẩu.
lOMoARcPSD| 58647650
Admin ( Quản trị viên )
- Quản lý danh sách khách sạn: thêm mới, cập nhật thông tin, xóa khách sạn khỏi
hệ thống khi cần.
- Quản lý phòng: thêm phòng mới cho từng khách sạn, chỉnh sửa thông tin
phòng (loại phòng, giá, số lượng, tình trạng), xóa phòng.
- Quản lý tài khoản người dùng: xem danh sách tài khoản khách hàng, khóa/mở
khóa tài khoản nếu phát hiện vi phạm quy định.
- Quản lý đơn đặt phòng: theo dõi trạng thái các đơn đặt phòng (mới, đã xác
nhận, đã hủy), can thiệp xử lý khi có lỗi hoặc khiếu nại.
- Quản lý thanh toán: sau khi xác nhận đặt phòng thì tiến hành xác nhận thanh
toán toán phòng ,theo dõi các trạng thái thanh toán
- Báo cáo thống kê:theo dõi tổng số phồng,loại phòng,phòng đang đặt,phòng
trống,doanh thu, đánh giá,..
- Quản lý nội dung trang web: cập nhật thông tin chính sách, hướng dẫn đặt
phòng, điều khoản sử dụng.
- Phân quyền hệ thống: quản lý vai trò người dùng (admin, nhân viên hỗ trợ,
khách hàng), đảm bảo an toàn hệ thống.
4. Nhận định yêu cầu đối với sản phẩm của project
4.1. Công cụ sử dụng
Trong quá trình phát triển hệ thống đặt phòng khách sạn trực tuyến, nhóm đã sử
dụng các công cụ và nền tảng hỗ trợ nhằm đảm bảo quá trình xây dựng, thiết kế
kiểm thử diễn ra hiệu quả. Dưới đây là các công cụ chính được sử dụng trong đồ án:
NetBeans: Môi trường phát triển tích hợp (IDE) được sử dụng để viết mã nguồn và
phát triển ứng dụng web. NetBeans hỗ trợ nhiều ngôn ngữ lập trình, giúp nhóm dễ
dàng tổ chức và quản lý mã nguồn trong quá trình phát triển.
SQL Server: Hệ quản trị cơ sở dữ liệu quan hệ được sử dụng để lưu trữ và quản lý
thông tin về người dùng, khách sạn, phòng, đơn đặt phòng,... SQL Server giúp đảm
bảo tính toàn vẹn dữ liệu và hiệu suất truy vấn cao.
Penpot: Công cụ thiết kế giao diện trực tuyến, được sử dụng để tạo prototype (bản
mẫu) của trang web trước khi triển khai thực tế. Penpot giúp nhóm dễ dàng hình dung
và điều chỉnh thiết kế nhằm tạo ra giao diện trực quan, thân thiện với người dùng.
Selenium WebDriver: Công cụ kiểm thử tự động, được sử dụng để kiểm tra hoạt
động của trang web. Selenium giúp mô phỏng hành vi người dùng, kiểm tra tính chính
xác của các chức năng và đảm bảo hệ thống hoạt động ổn định trên trình duyệt web.
lOMoARcPSD| 58647650
4.2. Phần cơ sở dữ liệu
5. Usecase tổng quát
6. Vẽ biểu đồ tuần tự tương ứng
6.1. Ca sử dụng “ Đăng kí “
lOMoARcPSD| 58647650
6.2. Ca sử dụng “ Đăng nhập “
6.3. Ca sử dụng “ Đăng xuất “
lOMoARcPSD| 58647650
6.4. Ca sử dụng “ Tìm kiếm sản phẩm
6.5 . Ca sử dụng “ sửa thông tin cá nhân
lOMoARcPSD| 58647650
6.6. Ca sử dụng “ Khách h à ng xem chi tiết khách sạn “
lOMoARcPSD| 58647650
6.7. Ca sử dụng “ Đặt phòng khách sạn “
6.7. Ca sử dụng “ Đánh giá khách sạn
6. 8 . Ca sử dụng “ Hủy dặt phòng “
lOMoARcPSD| 58647650
6. 9 . Ca sử dụng “ Quản lý thêm khách sạn “
6. 10 . Ca sử dụng “ Quản lý sửa khách sạn “
lOMoARcPSD| 58647650
6. 11 . Ca sử dụng “ Quản lý xóa khách sạn “
6. 12 . Ca sử dụng “ Quản lý khóa mở tài khoản “
lOMoARcPSD| 58647650
6. 13 . Ca sử dụng “ Quản lý xác nhận phòng và thanh toán
6. 13 . Ca sử dụng “ Quản lý thống kê
lOMoARcPSD| 58647650
7. Vẽ biểu đồ hoạt động
7.1. Ca sử dụng “ Đăng ký tài khoản “
7.2. Ca sử dụng “ Đăng nhập tài khoản
lOMoARcPSD| 58647650
7.3. Ca sử dụng “ Đăng xuất “
lOMoARcPSD| 58647650
7. 4 . Ca sử dụng “ Tìm kiếm “

Preview text:

lOMoAR cPSD| 58647650
BỘ GIÁO DỤC VÀ ĐÀO TẠO
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ 2 --- ---
MÔN HỌC: KIẾN TRÚC VÀ THIẾT KẾ PHẦN MỀM Đề tài:
TRANG WEB ĐẶT PHÒNG KHÁCH SẠN
Lớp: D21CQCNPM01-N. Nhóm: 19
Giảng viên hướng dẫn: Thầy Nguyễn Văn Hữu Hoàng
Sinh viên thực hiện: Võ Anh Kiệt – N21DCCN045
Ngô Cao Hy – N21DCCN040
Nguyễn Quang Linh – N21DCCN047
Thành phố Hồ Chí Minh, tháng năm 2025 lOMoAR cPSD| 58647650 MỤC LỤC:
LỜI CẢM ƠN.......................................................................................................................1
BẢNG PHÂN CÔNG...........................................................................................................2 I. MỤC ĐÍCH MỤC
TIÊU....................................................................................................3 1.
Mục đích (Nhu cầu sử dụng ứng
dụng)........................................................................3 2.
Mục tiêu (Kết quả cần đạt
được)...................................................................................3 3. Phương pháp tiến
hành..................................................................................................3
II. MÔ TẢ KIẾN TRÚC THỰC
HIỆN.................................................................................5 1.
Mô hình kiến trúc: MVC (Model - View - Controller)............................................5 2.
Lý do chọn mô hình MVC.......................................................................................6 3.
Ai dùng và cần gì ở phần
mềm.....................................................................................6 4.
Nhận định yêu cầu đối với sản phẩm của
project.........................................................7 5. Usecase tổng
quát..........................................................................................................8 6.
Vẽ biểu đồ tuần tự tương
ứng.......................................................................................8 7. Vẽ biểu đồ hoạt
động..................................................................................................16 8. Vẽ biểu đồ triển
khai...................................................................................................25
III. CÁC MẪU DESIGN PATTERN SỬ DỤNG VÀ LÍ DO CHỌN................................26
I. Các mẫu design pattern sử dụng và lí do chọn............................................................26 1.
Singleton Design Pattern.......................................................................................26 2.
Factory Method......................................................................................................28 3.
Chain of Responsibility Design Pattern.................................................................33 4.
Facade Design Pattern..........................................................................................38 lOMoAR cPSD| 58647650 5.
Decorator Design Pattern.....................................................................................42 6.
Observer Design Pattern.......................................................................................48 7.
Strategy Design Pattern.........................................................................................51 8.
Visitor Design Pattern...........................................................................................58
II. Thiết kế giao diện.......................................................................................................66
III. KẾT LUẬN...................................................................................................................75 lOMoAR cPSD| 58647650 LỜI CẢM ƠN
Lời đầu tiên, nhóm em xin gửi lời cảm ơn chân thành đến Thầy Nguyễn Văn Hữu
Hoàng. Trong quá trình học tập và nghiên cứu bộ môn Chuyên đề Công Nghệ Phần
mềm, chúng em đã nhận được sự hướng dẫn, giảng dạy tận tâm và nhiệt huyết từ thầy.
Thầy đã giúp chúng em hiểu rõ hơn về những kiến thức quan trọng và thực tế trong lĩnh
vực quản lý dự án, từ đó tích lũy thêm nhiều kinh nghiệm bổ ích và kỹ năng cần thiết.
Từ những kiến thức mà thầy truyền đạt, nhóm em đã áp dụng vào việc hoàn thành
bài tiểu luận cuối kỳ của môn học. Tuy nhiên, do vẫn còn những hạn chế về kinh nghiệm
và hiểu biết trong lĩnh vực này, bài tiểu luận của chúng em khó tránh khỏi những thiếu
sót. Rất mong thầy xem xét, đánh giá và góp ý để bài tiểu luận của chúng em được hoàn thiện hơn.
Nhóm em kính chúc thầy luôn dồi dào sức khỏe, thành công trong sự nghiệp
giảng dạy, và tiếp tục dìu dắt các thế hệ sinh viên đến với những thành tựu mới trên con
đường học tập và phát triển bản thân. Nhóm em xin chân thành cảm ơn! lOMoAR cPSD| 58647650 BẢNG PHÂN CÔNG Tên thành viên Nhiệm vụ Võ Anh Kiệt Ngô Cao Hy Nguyễn Quang Linh
I. MỤC ĐÍCH MỤC TIÊU
1. Mục đích (Nhu cầu sử dụng ứng dụng)
Trong những năm gần đây, cùng với sự phát triển của nền kinh tế, mức sống của
con người ngày càng được nâng cao. Du lịch không còn là một nhu cầu xa xỉ mà đã
trở thành một phần quan trọng trong cuộc sống, giúp con người thư giãn, khám phá
những vùng đất mới và tận hưởng những khoảnh khắc đáng nhớ bên gia đình, bạn bè.
Tuy nhiên, mỗi khi mùa du lịch đến, việc tìm kiếm và đặt phòng khách sạn trở
thành một vấn đề không hề đơn giản. Nhiều du khách gặp khó khăn trong việc tìm
được phòng ưng ý với mức giá phù hợp, đặc biệt là vào những thời điểm cao điểm khi
nguồn cung hạn chế. Ngoài ra, các phương thức đặt phòng truyền thống thường tốn
nhiều thời gian, thiếu sự minh bạch về giá cả, chất lượng dịch vụ và không đáp ứng
được nhu cầu đặt phòng nhanh chóng, tiện lợi.
Chính vì vậy, một hệ thống đặt phòng trực tuyến hiện đại, dễ sử dụng và đáng tin
cậy sẽ giúp khách hàng dễ dàng tìm kiếm, so sánh và đặt phòng một cách thuận tiện.
Không chỉ tiết kiệm thời gian, hệ thống còn giúp khách hàng có được trải nghiệm du
lịch trọn vẹn hơn, đồng thời hỗ trợ các khách sạn tối ưu hóa công suất phòng và nâng
cao chất lượng dịch vụ.
2. Mục tiêu (Kết quả cần đạt được)
Đề tài “Xây dựng website đặt phòng khách sạn” được triển khai nhằm:
- Phát triển một hệ thống đặt phòng khách sạn trực tuyến, cho phép người dùng
tìm kiếm, xem chi tiết và đặt phòng nhanh chóng.
- Hỗ trợ quản lý các thông tin khách sạn, phòng, tình trạng đặt phòng, người dùng và thanh toán.
- Cung cấp giao diện quản trị để nhân viên khách sạn quản lý đơn đặt phòng,
duyệt/gửi xác nhận và kiểm soát doanh thu.
- Ứng dụng các kiến trúc phần mềm hiện đại (MVC, Layered Architecture) và
mẫu thiết kế (Design Patterns) nhằm đảm bảo khả năng mở rộng, bảo trì và tối
ưu hiệu năng hệ thống. lOMoAR cPSD| 58647650
- Đảm bảo hệ thống vận hành ổn định, an toàn và thân thiện với người sử dụng cuối.
3. Phương pháp tiến hành Khảo sát thực tế:
- Phân tích quy trình đặt phòng truyền thống và các hệ thống đặt phòng điện tử
hiện có (Booking, Agoda, Traveloka), nhận diện nhu cầu thực tế và các vấn đề
tồn tại như thiếu tính linh hoạt, trải nghiệm người dùng chưa tối ưu, khó kiểm
soát phòng trống theo thời gian thực.
Thu thập và phân tích yêu cầu:
- Xác định rõ các đối tượng sử dụng hệ thống (khách hàng, nhân viên khách sạn,
quản trị viên), nghiệp vụ cần thực hiện (tra cứu phòng, đặt phòng, xác nhận đơn,
hủy đặt, thanh toán, quản lý doanh thu,...), phân quyền hệ thống.
Nghiên cứu kiến trúc phần mềm phù hợp:
- Chọn mô hình kiến trúc MVC kết hợp với Layered Architecture để tách biệt
giao diện, xử lý nghiệp vụ và dữ liệu.
Ứng dụng các Design Patterns:
- Chain of Responsibility: xử lý đăng nhập (kiểm tra thông tin nhập, xác thực, lưu
session) và kiểm tra đặt phòng (kiểm tra trường, xác thực, phòng trống, đặt phòng) trong gói handler
- Singleton: quản lý kết nối database (DAO).
- Factory: khởi tạo các đối tượng thành phố,khách sạn,loại khách sạn,phòng.
- Observer: Gửi thông báo email khi trạng thái đặt phòng thay đổi (ví dụ, "Đã xác nhận") trong gói observer.
- Strategy: Lọc khách sạn theo tiêu chí (thành phố, xếp hạng, bữa ăn, giáp biển) trong gói strategy
- Visitor: Thực hiện báo cáo thống kê (doanh thu, số phòng, đặt phòng hủy) trên
DatPhong và Phong trong gói visitor.
- Decorator: Thêm dịch vụ bổ sung (bữa ăn, spa) vào đặt phòng, tính chi phí động trong gói decorator
- Facade: Cung cấp giao diện đơn giản cho logic đặt phòng phức tạp
(HotelBookingFacade) trong gói facade.
Phân tích và thiết kế hệ thống: lOMoAR cPSD| 58647650
- Vẽ sơ đồ Use Case, Biểu đồ lớp (Class Diagram), Biểu đồ tuần tự(Sequence
Diagram) ,Biểu đồ hoạt động (Activity Diagram) bằng UML.
- Thiết kế giao diện người dùng thân thiện, đảm bảo UX tốt (Responsive UI với PrimeFaces).
- Thiết kế cơ sở dữ liệu SQL Server chuẩn hóa theo mô hình thực thể - quan hệ (ERD).
II. MÔ TẢ KIẾN TRÚC THỰC HIỆN
1. Mô hình kiến trúc: MVC (Model - View - Controller)
Hệ thống website đặt phòng khách sạn được thiết kế và phát triển dựa trên mô hình
kiến trúc MVC (Model - View - Controller). Đây là một trong những mô hình phổ
biến và hiệu quả nhất hiện nay cho các ứng dụng web, đặc biệt khi kết hợp với công
nghệ JSF (JavaServer Faces) trong môi trường Java EE. • Model:
Chức năng: Đảm nhận việc quản lý dữ liệu và xử lý các nghiệp vụ liên quan đến dữ liệu.
Thành phần: Bao gồm các lớp entity như TaiKhoan, DatPhong, KhachSan,
Phong,... đại diện cho các thực thể trong hệ thống, được ánh xạ (mapping) với cơ sở dữ liệu.
Ngoài ra, lớp DAO (Data Access Object) cũng nằm trong Model, chịu trách nhiệm
truy xuất, cập nhật và xóa dữ liệu từ/đến cơ sở dữ liệu MySQL. • View:
Chức năng: Hiển thị giao diện người dùng, tiếp nhận các hành động (event) từ phía client.
Thành phần: Các trang giao diện web được xây dựng bằng JSF, định dạng .xhtml.
Kết hợp PrimeFaces để tạo ra các giao diện trực quan, dễ sử dụng, thân thiện với
người dùng, đồng thời hỗ trợ responsive cho đa thiết bị (desktop, tablet, mobile). • Controller (Bean):
Chức năng: Là cầu nối giữa View và Model. Controller nhận dữ liệu từ View, xử lý
các yêu cầu nghiệp vụ, gọi các phương thức trong Model để thực thi logic, và trả kết
quả ngược lại cho View.
Thành phần: Các ManagedBean như BeanNguoiDung, BeanPhong,
BeanKhachSan, BeanDatPhong,... được quản lý vòng đời bởi JSF. Các bean này đảm
nhiệm việc nhận request, gọi service, DAO và cập nhật giao diện theo yêu cầu. lOMoAR cPSD| 58647650
2. Lý do chọn mô hình MVC
- Phân chia rõ ràng các tầng: Giúp tách biệt logic giao diện (View), nghiệp vụ
(Controller) và dữ liệu (Model). Nhờ đó dễ dàng quản lý, bảo trì và phát triển
mở rộng các thành phần hệ thống mà không làm ảnh hưởng đến phần còn lại.
- Phù hợp với công nghệ JSF: JSF hỗ trợ bản chất mô hình MVC một cách tự
nhiên thông qua cơ chế Managed Bean, Navigation Rule và Event Handling.
Điều này giúp việc phát triển giao diện web động trở nên đơn giản và mạch lạc hơn.
- Dễ dàng mở rộng và bảo trì: Khi có thay đổi nghiệp vụ hoặc giao diện, chỉ cần
điều chỉnh ở tầng tương ứng. Ví dụ: cập nhật giao diện không cần thay đổi
Model hay nghiệp vụ xử lý.
- Tối ưu hóa quy trình phát triển nhóm: Nhóm lập trình viên có thể làm việc song
song: một nhóm phát triển View (frontend), một nhóm phát triển
Controller/Model (backend), giúp rút ngắn thời gian hoàn thành dự án.
- Đáp ứng yêu cầu thực tiễn của hệ thống đặt phòng:
Hệ thống yêu cầu sự linh hoạt trong tìm kiếm phòng, đặt phòng theo thời gian
thực, quản lý nhiều đối tượng khác nhau (khách hàng, nhân viên, quản lý khách
sạn), nên mô hình MVC là lựa chọn phù hợp để đảm bảo tổ chức hệ thống khoa học và hiệu quả.
3. Ai dùng và cần gì ở phần mềm
Khách hàng (Người đặt phòng)
- Tìm kiếm phòng nhanh chóng theo địa điểm, loại phòng, tiện ích, đánh giá khách hàng.
- Đặt phòng và nhận thông báo về mail khi được xác nhận dễ dàng với quy trình đơn giản, trực quan.
- Kiểm tra tình trạng phòng trống theo ngày và số lượng khách.
- Xem thông tin chi tiết về khách sạn bao gồm hình ảnh, mô tả dịch vụ, tiện nghi,
vị trí trên bản đồ, chính sách hủy phòng.
- Quản lý đặt phòng cá nhân: xem lịch sử đặt phòng, chỉnh sửa hoặc hủy đặt phòng khi cần.
- Đánh giá phòng:sau khi đã sử dụng phòng thì có thể tiến hành chấm điểm
phòng và đánh giá chất lượng phòng
- Đăng ký, đăng nhập và quản lý tài khoản cá nhân.
- Chỉnh sửa thông tin cá nhân, cập nhật số điện thoại, email, mật khẩu. lOMoAR cPSD| 58647650 Admin ( Quản trị viên )
- Quản lý danh sách khách sạn: thêm mới, cập nhật thông tin, xóa khách sạn khỏi hệ thống khi cần.
- Quản lý phòng: thêm phòng mới cho từng khách sạn, chỉnh sửa thông tin
phòng (loại phòng, giá, số lượng, tình trạng), xóa phòng.
- Quản lý tài khoản người dùng: xem danh sách tài khoản khách hàng, khóa/mở
khóa tài khoản nếu phát hiện vi phạm quy định.
- Quản lý đơn đặt phòng: theo dõi trạng thái các đơn đặt phòng (mới, đã xác
nhận, đã hủy), can thiệp xử lý khi có lỗi hoặc khiếu nại.
- Quản lý thanh toán: sau khi xác nhận đặt phòng thì tiến hành xác nhận thanh
toán toán phòng ,theo dõi các trạng thái thanh toán
- Báo cáo thống kê:theo dõi tổng số phồng,loại phòng,phòng đang đặt,phòng
trống,doanh thu, đánh giá,..
- Quản lý nội dung trang web: cập nhật thông tin chính sách, hướng dẫn đặt
phòng, điều khoản sử dụng.
- Phân quyền hệ thống: quản lý vai trò người dùng (admin, nhân viên hỗ trợ,
khách hàng), đảm bảo an toàn hệ thống.
4. Nhận định yêu cầu đối với sản phẩm của project 4.1. Công cụ sử dụng
Trong quá trình phát triển hệ thống đặt phòng khách sạn trực tuyến, nhóm đã sử
dụng các công cụ và nền tảng hỗ trợ nhằm đảm bảo quá trình xây dựng, thiết kế và
kiểm thử diễn ra hiệu quả. Dưới đây là các công cụ chính được sử dụng trong đồ án:
NetBeans: Môi trường phát triển tích hợp (IDE) được sử dụng để viết mã nguồn và
phát triển ứng dụng web. NetBeans hỗ trợ nhiều ngôn ngữ lập trình, giúp nhóm dễ
dàng tổ chức và quản lý mã nguồn trong quá trình phát triển.
SQL Server: Hệ quản trị cơ sở dữ liệu quan hệ được sử dụng để lưu trữ và quản lý
thông tin về người dùng, khách sạn, phòng, đơn đặt phòng,... SQL Server giúp đảm
bảo tính toàn vẹn dữ liệu và hiệu suất truy vấn cao.
Penpot: Công cụ thiết kế giao diện trực tuyến, được sử dụng để tạo prototype (bản
mẫu) của trang web trước khi triển khai thực tế. Penpot giúp nhóm dễ dàng hình dung
và điều chỉnh thiết kế nhằm tạo ra giao diện trực quan, thân thiện với người dùng.
Selenium WebDriver: Công cụ kiểm thử tự động, được sử dụng để kiểm tra hoạt
động của trang web. Selenium giúp mô phỏng hành vi người dùng, kiểm tra tính chính
xác của các chức năng và đảm bảo hệ thống hoạt động ổn định trên trình duyệt web. lOMoAR cPSD| 58647650
4.2. Phần cơ sở dữ liệu
5. Usecase tổng quát
6. Vẽ biểu đồ tuần tự tương ứng
6.1. Ca sử dụng “ Đăng kí “
lOMoAR cPSD| 58647650
6.2. Ca sử dụng “ Đăng nhập “
6.3. Ca sử dụng “ Đăng xuất “ lOMoAR cPSD| 58647650
6.4. Ca sử dụng “ Tìm kiếm sản phẩm “
6.5 . Ca sử dụng “ sửa thông tin cá nhân “ lOMoAR cPSD| 58647650
6.6. Ca sử dụng “ Khách h à ng xem chi tiết khách sạn “ lOMoAR cPSD| 58647650
6.7. Ca sử dụng “ Đặt phòng khách sạn “
6.7. Ca sử dụng “ Đánh giá khách sạn “
6. 8 . Ca sử dụng “ Hủy dặt phòng “ lOMoAR cPSD| 58647650
6. 9 . Ca sử dụng “ Quản lý thêm khách sạn “
6. 10 . Ca sử dụng “ Quản lý sửa khách sạn “ lOMoAR cPSD| 58647650
6. 11 . Ca sử dụng “ Quản lý xóa khách sạn “
6. 12 . Ca sử dụng “ Quản lý khóa mở tài khoản “ lOMoAR cPSD| 58647650
6. 13 . Ca sử dụng “ Quản lý xác nhận phòng và thanh toán “
6. 13 . Ca sử dụng “ Quản lý thống kê “ lOMoAR cPSD| 58647650
7. Vẽ biểu đồ hoạt động
7.1. Ca sử dụng “ Đăng ký tài khoản “
7.2. Ca sử dụng “ Đăng nhập tài khoản “ lOMoAR cPSD| 58647650
7.3. Ca sử dụng “ Đăng xuất “ lOMoAR cPSD| 58647650
7. 4 . Ca sử dụng “ Tìm kiếm “