Bối cảnh và vấn đề nghiên cứu

Đề tài "Xây dựng website đặt phòng khách sạn và quản lý khách sạn" do sinh viên Nguyễn Văn Hiếu (Lớp D19CNPM1, Khoa Công nghệ Thông tin, Học viện Công nghệ Bưu chính Viễn thông) thực hiện dưới sự hướng dẫn của TS. Nguyễn Quang Hưng vào tháng 12 năm 2023.

Lý do chọn đề tài và bối cảnh thực tiễn

Ngành du lịch Việt Nam sở hữu tiềm năng lớn nhờ tài nguyên thiên nhiên, di sản văn hóa và ẩm thực phong phú. Sau giai đoạn chịu tác động nặng nề từ đại dịch Covid-19—với lượng khách quốc tế giảm gần 80% và lượng khách nội địa giảm gần 50% so với năm 2019—ngành du lịch đã từng bước phục hồi và tăng trưởng trở lại nhờ các chính sách hỗ trợ kịp thời. Song song với đó, sự phát triển của internet và các nền tảng công nghệ số đã làm thay đổi thói quen tiếp cận thông tin và hành vi tiêu dùng. Người dùng có xu hướng tra cứu, so sánh giá cả và đặt dịch vụ lưu trú trực tuyến nhằm tối ưu hóa thời gian và chi phí. Xuất phát từ bối cảnh đó, đề tài được triển khai nhằm cung cấp giải pháp kết nối trực tuyến giữa khách hàng có nhu cầu lưu trú và các cơ sở cung cấp dịch vụ khách sạn.

Mục tiêu và nhiệm vụ nghiên cứu

Mục tiêu cốt lõi của đồ án là xây dựng một hệ thống website thương mại điện tử phục vụ quy trình đặt phòng và quản trị dịch vụ khách sạn với 3 nhóm nhiệm vụ cụ thể:

  1. Đối với khách hàng: Cung cấp công cụ tìm kiếm, tra cứu phòng trống theo thời gian thực, xem thông tin chi tiết, đặt phòng, thanh toán trực tuyến hoặc trả sau, quản lý lịch sử đặt chỗ, hủy phòng và gửi đánh giá phản hồi.
  2. Đối với doanh nghiệp cho thuê phòng: Cung cấp giao diện quản trị cơ sở lưu trú, thiết lập thông tin khách sạn, quản lý danh mục loại phòng, tiện nghi đi kèm, cập nhật giá và theo dõi báo cáo thống kê doanh thu, lượt đặt phòng.
  3. Đối với quản trị viên (Admin): Quản lý trạng thái hoạt động của tài khoản người dùng (khóa/mở khóa), kiểm duyệt các yêu cầu đăng ký cơ sở khách sạn mới từ phía doanh nghiệp, chuẩn hóa danh mục tiện nghi dùng chung toàn hệ thống và giám sát báo cáo doanh thu từ phí hoa hồng.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ tìm kiếm, đặt phòng lưu trú trực tuyến, quản lý vận hành cơ sở khách sạn và kiểm duyệt dịch vụ trên nền tảng web.
  • Phạm vi không gian và đối tượng sử dụng: Hệ thống phục vụ các cơ sở lưu trú và khách hàng giao dịch nội địa tại Việt Nam.
  • Phạm vi kỹ thuật: Hệ thống được xây dựng và thử nghiệm với quy mô dữ liệu nhỏ, triển khai trên môi trường máy cục bộ (localhost).

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình công nghệ

Đồ án ứng dụng phương pháp phân tích và thiết kế hướng đối tượng (OOAD) thông qua ngôn ngữ mô hình hóa thống nhất (UML), kết hợp với mô hình kiến trúc phân tầng trong phát triển phần mềm web:

  • Kiến trúc backend: Nền tảng Java kết hợp Spring Boot Framework. Kiến trúc tận dụng cơ chế tiêm phụ thuộc (Dependency Injection - DI), cấu hình tự động dựa trên chú thích (Annotation-based configuration), máy chủ web nhúng (Embeddable web server như Tomcat/Jetty) và khả năng tích hợp linh hoạt với hệ sinh thái Spring (Spring Data, Spring Security).
  • Kiến trúc frontend: Nền tảng Single Page Application (SPA) xây dựng trên Vue.js với cấu trúc thành phần (Component-based architecture), kết hợp trình quản lý trạng thái, thư viện giao diện Ant Design Vue, Bootstrap và thư viện xử lý yêu cầu HTTP bất đồng bộ Axios.
  • Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ MySQL tuân thủ chuẩn SQL, hỗ trợ thiết lập toàn vẹn dữ liệu qua các liên kết khóa chính, khóa ngoại (quan hệ 1-N, N-N).

Phương pháp nghiên cứu và khảo sát thực tế

  • Phương pháp khảo sát thực tế: Tác giả tiến hành phân tích giao diện và luồng nghiệp vụ khách hàng từ 3 nền tảng đặt phòng trực tuyến phổ biến gồm Booking.com, Traveloka và Trip.com để đúc kết các chức năng tiêu chuẩn (tìm kiếm theo địa điểm, chọn ngày check-in/check-out, bộ lọc số lượng người/phòng, xem điểm đánh giá, chính sách hủy phòng và thanh toán thẻ tín dụng).
  • Phương pháp phân tích - thiết kế hệ thống: Sử dụng UML để xây dựng 1 biểu đồ use case tổng quát, 10 biểu đồ use case chi tiết, 17 bảng kịch bản use case tương ứng, 1 biểu đồ lớp phân tích (Class Diagram), 1 lược đồ cơ sở dữ liệu quan hệ (ERD) và 18 biểu đồ tuần tự (Sequence Diagram) mô tả chi tiết tương tác theo thời gian.

Thiết kế và triển khai

Kiến trúc công nghệ và môi trường thực thi

Hệ thống được thiết kế theo mô hình tách biệt giữa giao diện người dùng (Frontend) và logic xử lý nghiệp vụ (Backend), giao tiếp dữ liệu thông qua định dạng JSON qua các giao thức HTTP API:

Thành phần Công nghệ / Phiên bản sử dụng Vai trò trong hệ thống
Backend Language & Framework Java (JDK 17), Spring Boot Xử lý logic nghiệp vụ, xác thực, điều hướng luồng dữ liệu
Frontend Framework & UI Vue.js, Ant Design Vue, Bootstrap Xây dựng giao diện tương tác, quản lý component và trạng thái
HTTP Client Axios Gửi và nhận yêu cầu HTTP (GET, POST, PUT, DELETE) bất đồng bộ
Runtime Environment Node.js (Version 16.0) Môi trường biên dịch và chạy mã nguồn frontend
Hệ quản trị CSDL MySQL Lưu trữ dữ liệu người dùng, khách sạn, phòng, giao dịch
Cổng thanh toán tích hợp VNPay Xử lý thanh toán trực tuyến qua ví điện tử/thẻ nội địa
Hệ điều hành & Công cụ phát triển Windows, IntelliJ IDEA, MySQL Workbench Môi trường lập trình, quản lý CSDL và chạy máy chủ localhost

Thiết kế dữ liệu và tương tác tuần tự

  • Cơ sở dữ liệu: Lược đồ CSDL được chuẩn hóa từ biểu đồ lớp phân tích, bao gồm các thực thể chính như Người dùng (User/Account), Khách sạn (Hotel), Phòng (Room), Tiện nghi (Amenity), Đặt phòng (Booking), Đánh giá (Review), Danh sách yêu thích (Favorite). Các liên kết được cấu trúc chặt chẽ để đảm bảo tính toàn vẹn quan hệ giữa khách sạn với danh mục phòng và tiện nghi đi kèm.
  • Biểu đồ tuần tự: Mô tả chuỗi thông điệp giữa các lớp Boundary (Giao diện), Control (Bộ điều khiển/Dịch vụ) và Entity (Cơ sở dữ liệu) cho tất cả 17 chức năng chính, bao gồm xử lý đăng ký, đăng nhập, quên mật khẩu (gửi mã/link qua email), kiểm tra phòng trống, thanh toán qua cổng VNPay, xử lý hủy đặt phòng và các thao tác CRUD của doanh nghiệp/admin.

Nội dung chính theo từng chương

Chương 1: Khảo sát thực trạng và xác định yêu cầu hệ thống

Chương 1 trình bày tổng quan về thị trường du lịch trực tuyến hậu Covid-19 và phân tích các chức năng cốt lõi trên các trang web thương mại điện tử du lịch lớn (Booking.com, Traveloka, Trip.com). Do các hệ thống thương mại này không cung cấp quyền truy cập phía đối tác doanh nghiệp và quản trị, tác giả đã tự khảo sát nghiệp vụ thực tế để xác định hệ thống yêu cầu gồm 3 tác nhân chính: Khách hàng, Doanh nghiệp cho thuê phòng và Quản trị viên. Đồng thời, chương này phân tích cơ sở lý thuyết và lý do lựa chọn ngăn xếp công nghệ bao gồm Java, Spring Boot, MySQL, HTML/CSS/JavaScript, Vue.js, Ant Design Vue, Bootstrap và Axios.

Chương 2: Phân tích hệ thống

Chương 2 tập trung vào việc mô hình hóa chức năng và cấu trúc dữ liệu của hệ thống. Tác giả thiết lập biểu đồ use case tổng quát cùng các biểu đồ use case chi tiết cho từng nhóm tác nhân, sau đó xây dựng 17 bảng kịch bản chi tiết bao gồm tiền điều kiện, hậu điều kiện, luồng sự kiện chính và luồng ngoại lệ:

Mã UC Tên Use Case Tác nhân Tiền điều kiện / Luồng chính / Luồng ngoại lệ
UC1 Đăng ký Khách hàng Nhập họ tên, SĐT, email, mật khẩu; kiểm tra trùng lặp email; thông báo thành công
UC2 Đăng nhập Người dùng Nhập email, mật khẩu; kiểm tra thông tin; điều hướng theo vai trò (Role)
UC3 Quên mật khẩu Tất cả người dùng Nhập email nhận liên kết xác thực; mở giao diện đặt lại mật khẩu mới
UC4 Quản lý thông tin cá nhân Khách hàng Xem và cập nhật thông tin cá nhân; kiểm tra trùng lặp số điện thoại
UC5 Xem chi tiết khách sạn Khách hàng Tìm kiếm theo địa điểm, thời gian, số người; xem chi tiết phòng và chính sách
UC6 Đặt phòng và thanh toán Khách hàng Chọn phòng, nhập thông tin; chuyển hướng cổng thanh toán VNPay hoặc nhận xác nhận trả sau
UC7 Đánh giá khách sạn Khách hàng Yêu cầu đã đăng nhập và từng đặt phòng; nhập nội dung và chấm điểm
UC8 Quản lý khách sạn đã thích Khách hàng Thêm mới vào danh sách lưu, xem danh sách và xóa khỏi danh sách yêu thích
UC9 Xem lịch sử đặt phòng Khách hàng Xem danh sách các chuyến đi/phòng đã đặt trong tài khoản
UC10 Hủy đặt phòng Khách hàng Nhập lý do hủy; hệ thống khóa chức năng hủy nếu thời gian thuê thuộc về quá khứ
UC11 Quản lý khách sạn doanh nghiệp Doanh nghiệp Xem danh sách khách sạn sở hữu, sửa thông tin, xóa, thêm mới (chờ Admin duyệt)
UC12 Quản lý phòng của khách sạn Doanh nghiệp Thêm, sửa, xóa loại phòng, cập nhật giá, hình ảnh và gắn danh mục tiện nghi
UC13 Doanh nghiệp xem thống kê Doanh nghiệp Chọn khoảng thời gian (từ ngày - đến ngày); xem biểu đồ doanh thu và số lượt đặt
UC14 Quản lý tài khoản Admin Tra cứu danh sách người dùng; thực hiện khóa hoặc mở khóa tài khoản
UC15 Quản lý khách sạn của Admin Admin Xem danh sách đăng ký mới từ doanh nghiệp; duyệt hoặc từ chối chấp thuận
UC16 Quản lý tiện nghi Admin Thêm mới, chỉnh sửa hoặc xóa danh mục tiện nghi chuẩn dùng chung trên hệ thống
UC17 Admin xem thống kê Admin Thống kê tổng doanh thu toàn hệ thống, doanh thu hoa hồng và biểu đồ từng khách sạn

Chương 2 khép lại bằng việc xây dựng biểu đồ lớp phân tích (Class Diagram) làm cầu nối sang giai đoạn thiết kế kỹ thuật.

Chương 3: Thiết kế hệ thống

Chương 3 chi tiết hóa kiến trúc dữ liệu và hành vi động của hệ thống:

  1. Thiết kế cơ sở dữ liệu: Chuyển đổi biểu đồ lớp phân tích thành mô hình cơ sở dữ liệu quan hệ với đầy đủ các bảng, trường dữ liệu, kiểu dữ liệu, khóa chính (Primary Key) và khóa ngoại (Foreign Key), mô tả các mối liên kết 1-N và N-N giữa các thực thể nghiệp vụ.
  2. Thiết kế biểu đồ tuần tự: Xây dựng hệ thống 18 biểu đồ tuần tự tương ứng với các use case: đăng ký, đăng nhập, quên mật khẩu, sửa thông tin cá nhân, xem chi tiết khách sạn, đặt phòng và thanh toán, đánh giá khách sạn, hủy đặt phòng, quản lý khách sạn doanh nghiệp (chi tiết, thêm, sửa, xóa), doanh nghiệp xem thống kê, khóa/mở khóa tài khoản, duyệt khách sạn mới và quản lý tiện nghi (xem, thêm, sửa, xóa).

Chương 4: Cài đặt hệ thống

Chương 4 mô tả môi trường thực thi và kết quả triển khai giao diện người dùng trên thực tế:

  • Cấu hình môi trường: Backend chạy trên nền tảng Java JDK 17 với framework Spring Boot; Frontend chạy trên Node.js v16.0 với Vue.js; CSDL MySQL được quản lý qua MySQL Workbench trên hệ điều hành Windows. Toàn bộ hệ thống chạy thử nghiệm trên máy chủ cục bộ (localhost).
  • Kết quả giao diện hoàn thiện: Triển khai thành công 13 màn hình chức năng chính bao gồm: Trang chủ khách hàng, Giao diện tìm kiếm và bộ lọc khách sạn, Giao diện chi tiết khách sạn, Giao diện đăng nhập, Giao diện đăng ký, Giao diện lựa chọn phòng, Giao diện trang đặt phòng, Giao diện khách sạn đã thích, Giao diện chuyến đi đã đặt (lịch sử đặt phòng), Giao diện trang quản lý của doanh nghiệp, Giao diện chức năng xem thống kê doanh thu, Giao diện quản trị của Admin và Giao diện thêm mới khách sạn.

Kết quả và đóng góp

Kết quả kỹ thuật và chức năng đạt được

  1. Hoàn thiện đầy đủ quy trình nghiệp vụ 3 bên: Xây dựng thành công hệ thống web kết nối thông suốt giữa Khách hàng, Doanh nghiệp cung cấp phòng và Quản trị viên hệ thống.
  2. Tích hợp thanh toán trực tuyến: Triển khai thành công quy trình đặt phòng linh hoạt, hỗ trợ cả hình thức đặt giữ chỗ thanh toán sau tại khách sạn và thanh toán trực tuyến qua cổng VNPay.
  3. Quản trị và kiểm soát dữ liệu tập trung: Cung cấp công cụ quản lý danh mục phòng, tiện nghi và quy trình duyệt khách sạn chặt chẽ cho Admin; tích hợp tính năng khóa tài khoản vi phạm.
  4. Báo cáo thống kê trực quan: Doanh nghiệp có thể trích xuất biểu đồ doanh thu và lượt đặt theo khoảng thời gian tùy chọn; Admin theo dõi được tổng doanh thu và tỷ lệ hoa hồng toàn hệ thống.

Đóng góp thực tiễn của đề tài

  • Khảo sát và tổng hợp quy trình nghiệp vụ từ các hệ sinh thái OTA (Online Travel Agent) quốc tế để xây dựng mô hình phần mềm phù hợp với thị trường nội địa.
  • Đưa ra giải pháp phân quyền người dùng rõ ràng (Role-based access control) trên nền tảng Spring Boot và Vue.js, tối ưu hóa giao diện dựa trên thư viện thành phần Ant Design Vue.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

  • Môi trường triển khai: Hệ thống hiện chỉ được cấu hình, cài đặt và thử nghiệm trên môi trường máy cục bộ (localhost), chưa triển khai thực tế trên hạ tầng máy chủ đám mây (Cloud Server/Hosting).
  • Quy mô dữ liệu: Cơ sở dữ liệu thử nghiệm có dung lượng nhỏ, chưa được kiểm thử tải và đánh giá hiệu năng với lượng truy cập đồng thời lớn.
  • Rào cản ngôn ngữ: Giao diện hệ thống hiện tại mới chỉ hỗ trợ ngôn ngữ Tiếng Việt, chưa có tính năng đa ngôn ngữ (Multi-language).

Hướng phát triển tiếp theo

  • Nâng cấp và cấu hình mã nguồn để triển khai toàn diện hệ thống lên các nền tảng máy chủ trực tuyến nhằm phục vụ người dùng thực tế.
  • Tích hợp mô-đun đa ngôn ngữ nhằm mở rộng phạm vi phục vụ khách du lịch quốc tế khi đến Việt Nam.
  • Tối ưu hóa cơ sở dữ liệu và mở rộng các phương thức thanh toán điện tử khác.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin và Công nghệ phần mềm: Đặc biệt là những người đang thực hiện đồ án tốt nghiệp hoặc bài tập lớn về xây dựng ứng dụng web phân tầng sử dụng Java Spring Boot kết hợp Vue.js.
  • Người nghiên cứu phân tích thiết kế hệ thống: Cung cấp tài liệu mẫu hoàn chỉnh về quy trình mô hình hóa UML (từ biểu đồ use case tổng quát/chi tiết, 17 kịch bản use case chuẩn mẫu, biểu đồ lớp phân tích, thiết kế lược đồ quan hệ CSDL cho đến 18 biểu đồ tuần tự).
  • Lập trình viên phát triển ứng dụng thương mại điện tử / đặt chỗ: Tham khảo luồng nghiệp vụ kiểm tra phòng trống, xử lý ngoại lệ khi đặt phòng và tích hợp cổng thanh toán VNPay.

Câu hỏi thường gặp

1. Hệ thống sử dụng những công nghệ và phiên bản cụ thể nào cho Backend và Frontend?

Hệ thống sử dụng Java với JDK 17 và Spring Boot Framework cho tầng Backend. Tầng Frontend được xây dựng trên nền tảng Node.js (phiên bản 16.0) sử dụng Vue.js kết hợp cùng các thư viện hỗ trợ giao diện như Ant Design Vue, Bootstrap và thư viện HTTP Axios. Cơ sở dữ liệu được quản lý bởi MySQL.

2. Khách hàng có bắt buộc phải đăng nhập để tìm kiếm và đặt phòng trên website không?

Theo thiết kế kịch bản nghiệp vụ (UC5 và UC6), khách hàng không bắt buộc phải có tài khoản đăng nhập để thực hiện tra cứu thông tin chi tiết khách sạn hoặc thao tác đặt phòng và thanh toán. Tuy nhiên, khách hàng bắt buộc phải đăng nhập khi muốn sử dụng các tính năng cá nhân như: lưu danh sách khách sạn yêu thích (UC8), xem lịch sử đặt phòng (UC9), hủy phòng (UC10) hoặc viết đánh giá/chấm điểm khách sạn (UC7).

3. Quy trình thanh toán đặt phòng được hệ thống xử lý như thế nào?

Khi khách hàng chọn phòng và nhấn đặt phòng, hệ thống chuyển sang giao diện nhập thông tin cá nhân và lựa chọn phương thức thanh toán. Nếu khách hàng chọn thanh toán trực tuyến, hệ thống chuyển hướng sang cổng thanh toán VNPay để hoàn tất giao dịch. Trường hợp khách sạn có chính sách không yêu cầu thanh toán trước, hệ thống sẽ bỏ qua bước qua cổng thanh toán và chuyển thẳng đến trang xác nhận đặt phòng thành công.

4. Quản trị viên (Admin) có những quyền hạn và chức năng quản lý nào trong hệ thống?

Admin sở hữu các quyền hạn quản trị hệ thống bao gồm: quản lý tài khoản người dùng (thực hiện khóa hoặc mở khóa tài khoản - UC14), kiểm duyệt và chấp thuận các cơ sở khách sạn mới do doanh nghiệp đăng ký (UC15), quản lý danh mục tiện nghi chuẩn của toàn bộ hệ thống như thêm, sửa, xóa tiện nghi (UC16) và xem báo cáo thống kê doanh thu hoa hồng của tất cả các khách sạn (UC17).

5. Số liệu thực tế nào về tác động của Covid-19 đến ngành du lịch được tác giả trích dẫn trong bối cảnh đề tài?

Trong phần mở đầu, tác giả trích dẫn số liệu cụ thể: do ảnh hưởng của đại dịch Covid-19, lượng khách du lịch quốc tế đến Việt Nam đã giảm gần 80% và lượng khách du lịch nội địa giảm gần 50% so với thời điểm năm 2019, tạo tiền đề cho nhu cầu chuyển đổi số và phục hồi du lịch thông qua các nền tảng đặt phòng trực tuyến.


Kết luận

Đồ án tốt nghiệp "Xây dựng website đặt phòng khách sạn và quản lý khách sạn" của sinh viên Nguyễn Văn Hiếu đã giải quyết trọn vẹn bài toán kết nối dịch vụ lưu trú giữa khách hàng, doanh nghiệp và quản trị viên trên nền tảng web. Đề tài thể hiện tính chuẩn mực trong quy trình công nghệ phần mềm thông qua việc khảo sát thực tế, phân tích thiết kế hệ thống chi tiết bằng UML và cài đặt ứng dụng hoàn chỉnh bằng Java Spring Boot, Vue.js và MySQL. Mặc dù còn hạn chế về quy mô thử nghiệm cục bộ và hỗ trợ đơn ngữ, kết quả nghiên cứu và mã nguồn đồ án có giá trị tham khảo thiết thực cho các đề tài phát triển hệ thống thương mại điện tử và dịch vụ lưu trú trực tuyến.