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

Sự phát triển của ngành công nghệ thông tin cùng áp lực công việc ngày càng tăng trong đời sống xã hội đã kéo theo nhu cầu du lịch, nghỉ dưỡng và tìm kiếm nơi lưu trú chất lượng của người dân. Trong lĩnh vực quản trị khách sạn, các doanh nghiệp thường sử dụng những hệ thống phần mềm quản lý hoặc các kênh trung gian đặt phòng trực tuyến. Tuy nhiên, qua khảo sát thực tế của nhóm tác giả, nhiều hệ thống hiện hành bộc lộ các rào cản như giao diện phức tạp, thiếu tính linh hoạt, thao tác xử lý kéo dài và người dùng dễ rơi vào tình trạng "bội thực thông tin" do lượng dữ liệu hiển thị dày đặc nhưng thiếu hướng dẫn rõ ràng.

Để giải quyết các bất cập trên, đề tài "Website đặt phòng khách sạn trực tuyến" (xây dựng hệ thống mang tên P4nthers) được thực hiện trong khuôn khổ đồ án môn Phát triển ứng dụng Web với NodeJS tại Khoa Công nghệ Thông tin, Trường Đại học Tôn Đức Thắng. Mục tiêu và nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Nghiên cứu, xây dựng website đặt phòng khách sạn có giao diện tinh gọn, quy trình trực quan, lượng thông tin vừa đủ, khắc phục tình trạng khó thao tác và quá tải thông tin trên các nền tảng thương mại hiện nay.
  2. Cung cấp cho khách hàng khả năng tra cứu phòng, cập nhật bảng giá và kiểm tra trạng thái phòng trống theo thời gian thực nhằm chủ động lựa chọn nơi lưu trú mà không lo ngại sự cố hết phòng.
  3. Hỗ trợ đơn vị kinh doanh khách sạn quản lý tập trung và kiểm soát chặt chẽ hoạt động vận hành, lượng khách lưu trú, đơn đặt phòng và doanh thu.
  4. Xây dựng kênh tiếp nhận phản hồi từ khách hàng về chất lượng phòng và quy trình dịch vụ nhằm nâng cao năng lực phục vụ.
  5. Rèn luyện kỹ năng lập trình web toàn diện từ Backend đến Frontend, áp dụng quy chuẩn viết mã sạch (Clean code) và quy ước lập trình chuẩn (Coding convention).

Đối tượng và phạm vi nghiên cứu của đồ án được xác định rõ:

  • Đối tượng nghiên cứu: Người dùng có nhu cầu đặt phòng khách sạn trực tuyến; các công cụ và công nghệ lập trình phần mềm bao gồm Visual Studio Code (HTML, CSS, JavaScript), NodeJS, Express, MongoDB, cùng các công cụ hỗ trợ thiết kế hệ thống như Figma, Draw.io, Font Awesome.
  • Đối tượng khảo sát: Nhà quản lý và nhân viên lễ tân tại các khách sạn; phân tích viên thu thập dữ liệu thông qua phỏng vấn trực tiếp nhân sự quản lý khách sạn 4 sao.
  • Phạm vi không gian: Khảo sát tập trung tại các cơ sở lưu trú trên địa bàn Thành phố Hồ Chí Minh và tham khảo mô hình từ các khách sạn thực tế như Mường Thanh Luxury Nha Trang, Đá Đĩa Beach House.
  • Phạm vi thời gian: Quá trình đăng ký đề tài bắt đầu từ ngày 02/02/2023 đến 05/02/2023; giai đoạn phân tích, thiết kế và lập trình triển khai kéo dài từ ngày 10/02/2023 đến ngày 22/04/2023 (báo cáo hoàn thành ngày 14/03/2023).

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

Đồ án ứng dụng mô hình kiến trúc MVC (Model - View - Controller) để tách biệt các tầng xử lý dữ liệu, điều hướng logic và hiển thị giao diện người dùng. Về mặt kỹ thuật, hệ thống vận hành trên nền tảng môi trường thực thi NodeJS kết hợp framework Express để xây dựng hệ thống xử lý phía máy chủ (Backend), xử lý tải tập tin hình ảnh (upload ảnh) và điều phối các yêu cầu HTTP. Phía cơ sở dữ liệu, nhóm tác giả lựa chọn hệ quản trị cơ sở dữ liệu hướng tài liệu MongoDB (NoSQL) để tổ chức và lưu trữ dữ liệu dưới dạng các collection linh hoạt.

Phương pháp nghiên cứu kết hợp giữa nghiên cứu lý thuyết, khảo sát thực nghiệm và phân tích thiết kế phần mềm theo chuẩn công nghệ thông tin:

  • Phương pháp thu thập và tổng hợp tài liệu: Thu thập tài liệu chuyên sâu về lập trình NodeJS, kiến trúc MVC, cơ chế tải tệp dữ liệu, các chuẩn đặc tả UML và tài liệu hướng dẫn cơ sở dữ liệu MongoDB.
  • Phương pháp phân tích hệ thống đối sánh: Khảo sát các cổng thông tin và dịch vụ đặt phòng trực tuyến có sẵn trên thị trường (như Agoda, Traveloka) để nhận diện các điểm nghẽn nghiệp vụ, từ đó rút ra các yêu cầu chức năng tối ưu.
  • Phương pháp khảo sát thực tế bằng phỏng vấn sâu: Lập kế hoạch phỏng vấn thực địa từ ngày 12/03/2023 đến 17/03/2023; tiến hành phỏng vấn trực tiếp ông Nguyễn Tiến Thanh (quản lý khách sạn 4 sao) vào ngày 20/03/2023 (từ 8h30 đến 10h45) tại trường học để làm rõ 5 nhóm nghiệp vụ: quản lý phòng, hoạch định khuyến mãi, quản lý thuê/trả phòng, quy trình thống kê báo cáo và trang thiết bị dịch vụ.
  • Phương pháp phân tích và thiết kế hệ thống (UML): Chuyển hóa các yêu cầu nghiệp vụ thành các mô hình kỹ thuật gồm biểu đồ phân cấp chức năng, biểu đồ Use Case, biểu đồ hoạt động (Activity Diagram), biểu đồ tuần tự (Sequence Diagram), biểu đồ lớp (Class Diagram), mô hình quan hệ thực thể (ERD) và lược đồ cơ sở dữ liệu vật lý.
  • Phương pháp thiết kế mẫu giao diện (Wireframes): Sử dụng công cụ Figma để phác thảo các bản vẽ khung dây giao diện người dùng (UI/UX) dựa trên nguyên lý Material Design của Google trước khi lập trình.
Hạng mục khảo sát Nội dung chi tiết trong hệ thống P4nthers
Quy trình đặt phòng Khách hàng tìm kiếm phòng, chọn loại phòng, nhập thông tin cá nhân, chọn khuyến mãi và thanh toán (cho phép đặt phòng không cần tài khoản).
Chính sách lưu trú thu thập Nhận phòng từ 13:00, trả phòng trước 12:00; trả muộn trước 17:00 phụ thu 50%, sau 17:00 phụ thu 100%; miễn phí cho tối đa 2 trẻ dưới 8 tuổi ở cùng người lớn.
Phương thức phỏng vấn Phỏng vấn trực tiếp tại trường, ghi chép sổ tay qua 5 chủ đề chuyên môn.
Công cụ thiết kế & quản lý Figma, Draw.io, Visual Studio Code, GitLab Khoa Công nghệ Thông tin.

Thiết kế và triển khai

Hệ thống P4nthers được xây dựng theo kiến trúc hướng module, phân định ranh giới giữa giao diện người dùng phía máy khách (Client) và giao diện điều hành dành cho ban quản trị (Admin).

Cơ sở dữ liệu vật lý của ứng dụng được xây dựng trên nền tảng MongoDB với 4 collection chính, chịu trách nhiệm lưu trữ toàn bộ thông tin vận hành của hệ thống:

Tên Collection Chức năng lưu trữ dữ liệu Các trường thông tin cơ bản
User Quản lý thông tin định danh và tài khoản của người dùng, phân quyền truy cập hệ thống. _id, name, email, password, phone, role, thời gian khởi tạo.
Room type Phân loại các hạng mục phòng lưu trú theo tiêu chuẩn khách sạn (Suite, Deluxe, Superior, Standard). _id, name, description, price, capacity, danh mục hình ảnh minh họa.
Room Quản lý từng phòng vật lý cụ thể, trạng thái phòng và thiết bị tiện nghi. _id, room_number, room_type_id, status (trống, đang thuê), facilities.
Booking Room Lưu vết các giao dịch đặt phòng của khách hàng và tính toán thanh toán. _id, user_id/thông tin khách, room_id, check_in, check_out, total_price, booking_status.

Hệ thống phục vụ 2 nhóm tác nhân trực tiếp:

  • Khách hàng (Client): Có thể tra cứu thông tin phòng, xem chi tiết tiện nghi, đặt phòng trực tuyến (hỗ trợ cả người dùng vãng lai lẫn người dùng đã đăng ký), lựa chọn dịch vụ đi kèm, thực hiện thanh toán qua thẻ tín dụng/ghi nợ, kiểm tra thông tin cá nhân và tra cứu lịch sử đặt phòng.
  • Nhân viên / Quản lý (Admin): Đăng nhập vào khu vực quản trị để điều hành bảng điều khiển (Dashboard), thêm/sửa/xóa/tra cứu thông tin danh mục phòng và loại phòng, quản lý danh sách khách hàng, theo dõi đơn đặt phòng, tra cứu lịch đặt và kết xuất báo cáo thống kê doanh thu (theo tháng, quý, năm) cũng như tỷ lệ phòng trống.

Quá trình triển khai mã nguồn được quản lý phiên bản thông qua hệ thống GitLab của Khoa Công nghệ Thông tin. Toàn bộ mã nguồn Frontend và Backend tuân thủ nguyên tắc Clean code, chia tách thư mục theo chuẩn MVC và thiết kế giao diện đáp ứng linh hoạt (Responsive) trên nhiều kích thước màn hình hiển thị.


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

Chương 1 – Giới thiệu đề tài

Chương mở đầu tập trung trình bày tính cấp thiết của việc số hóa nghiệp vụ đặt phòng khách sạn trong bối cảnh du lịch phục hồi. Tác giả chỉ rõ các vấn đề thực tiễn mà khách hàng gặp phải: tốn thời gian đăng ký trực tiếp, rủi ro hết phòng vào mùa cao điểm và sự phức tạp của các giao diện đặt phòng hiện nay. Chương này xác định rõ 5 mục tiêu nghiên cứu cụ thể, chỉ định đối tượng khảo sát là nhân sự khách sạn và khoanh vùng phạm vi nghiên cứu tại khu vực Thành phố Hồ Chí Minh trong khoảng thời gian từ tháng 02/2023 đến tháng 04/2023. Đồng thời, tác giả khẳng định ý nghĩa thực tiễn của đề tài trong việc tối ưu hóa chi phí quảng bá cho chủ khách sạn, mang lại tiện ích thanh toán và tính linh hoạt khi đặt phòng cho khách lưu trú.

Chương 2 – Phân tích và thiết kế yêu cầu

Chương 2 là nội dung kỹ thuật trọng tâm của đồ án, bao gồm các khảo sát và mô hình phân tích chi tiết:

  • Xác định yêu cầu: Khảo sát hệ thống ghi nhận các tính năng cần có (đăng ký, đăng nhập mạng xã hội, đặt phòng 24/24, quản lý lịch sử, thống kê doanh thu). Khảo sát thực tế đưa ra kế hoạch phỏng vấn và biên bản trả lời chi tiết của quản lý khách sạn 4 sao với 4 hạng phòng (Suite, Deluxe, Superior, Standard), cùng quy định cụ thể về thời gian nhận/trả phòng và chính sách trẻ em.
  • Phân tích hiện trạng: Liệt kê bảng ưu điểm (giao diện bắt mắt, đầy đủ tính năng, đặt phòng dễ hiểu) và nhược điểm (đôi khi xử lý chậm, chưa hỗ trợ ví điện tử, thông tin chưa tối giản) của các hệ thống cũ.
  • Đặc tả yêu cầu chức năng và phi chức năng: Phân loại rõ ràng 10 yêu cầu chức năng (đăng ký, đăng nhập, đặt phòng, tra cứu phòng, sử dụng dịch vụ khác, quản lý thông tin cá nhân, quản lý phòng, quản lý khách hàng, quản lý lịch sử đặt phòng, thống kê thu nhập) và 5 yêu cầu phi chức năng (bảo mật dữ liệu, giao diện tối giản, tốc độ xử lý khi tải lớn, thao tác đơn giản, khả năng bảo trì).
  • Mô hình hóa UML: Xây dựng sơ đồ phân cấp chức năng; Biểu đồ Use Case tổng quát và 5 đặc tả Use Case chi tiết (Đặt phòng, Quản lý thông tin cá nhân, Quản lý phòng, Quản lý khách hàng, Quản lý thống kê doanh thu); Biểu đồ hoạt động (Activity Diagram) cho tác vụ đặt phòng và cập nhật thông tin cá nhân; Biểu đồ tuần tự (Sequence Diagram) cho quy trình chọn phòng; Biểu đồ lớp (Class Diagram); Mô hình ERD và cấu trúc vật lý 4 collection dữ liệu trong MongoDB.

Chương 3 – Giao diện người dùng UI/ UX

Nội dung chương 3 mô tả quá trình chuyển đổi các yêu cầu chức năng thành các bản phác thảo khung dây (Wireframes) trực quan thông qua công cụ Figma. Nhóm tác giả trình bày chi tiết các bản vẽ mẫu tương ứng với hành trình trải nghiệm của khách hàng:

  • Wireframes Trang chủ: Bố cục thanh tìm kiếm phòng nhanh, danh mục phòng nổi bật và thông tin ưu đãi.
  • Wireframes Danh sách phòng và Đặt phòng khách sạn: Cách thức hiển thị thẻ phòng, bộ lọc giá và tiện nghi.
  • Wireframes Đặt phòng chi tiết: Biểu mẫu nhập thông tin lưu trú, lựa chọn dịch vụ và chọn hình thức thanh toán.
  • Wireframes Đăng nhập và Đăng ký: Giao diện biểu mẫu thu gọn, hỗ trợ thao tác nhanh cho người dùng.

Chương 4: Hiện thực hóa chức năng

Chương 4 thuyết minh kết quả xây dựng hệ thống thực tế thông qua các hình ảnh chụp màn hình chức năng đã hoàn thiện, phân chia thành 2 phân hệ rõ rệt:

  • Phân hệ giao diện Client: Minh chứng việc lập trình hoàn tất các trang: Trang chủ hiển thị banner và thanh tìm kiếm; Trang danh mục phòng và Chi tiết phòng (thông tin diện tích, tiện ích, đơn giá); Biểu mẫu đặt phòng khách sạn và Màn hình thông báo đặt phòng thành công; Giao diện xác thực tài khoản (Đăng nhập, Đăng ký); Giao diện Xem và Chỉnh sửa thông tin hồ sơ cá nhân; Giao diện theo dõi Lịch sử đặt phòng của người dùng.
  • Phân hệ giao diện Admin: Minh chứng hệ thống quản trị vận hành trên Trang điều khiển (Dashboard) với các biểu đồ tổng quan; Module Quản lý khách hàng (xem danh sách, cập nhật, xóa tài khoản); Module Quản lý loại phòng; Module Quản lý danh sách phòng vật lý; Module Quản lý đơn đặt phòng và Giao diện theo dõi theo Lịch làm việc.

Chương 5: Kết quả nhận được

Chương cuối cùng tổng kết các kết quả kỹ thuật và đánh giá mức độ hoàn thành của đồ án. Nhóm tác giả phân tích các ưu điểm thực tế như khả năng hỗ trợ khách đặt phòng 24/24 tránh tình trạng hết phòng, giao diện hiện đại lấy cảm hứng từ Material Design, cơ chế bảo mật tài khoản, tốc độ xử lý nhanh và tính tương thích trên nhiều thiết bị. Đồng thời, văn bản chỉ rõ các mặt hạn chế còn tồn tại và vạch ra định hướng nâng cấp trong tương lai.


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

Đồ án đã xây dựng hoàn chỉnh website đặt phòng khách sạn trực tuyến P4nthers với đầy đủ các tính năng cho cả hai nhóm người dùng khách hàng và quản trị viên, đạt được các kết quả cụ thể sau:

  • Xây dựng thành công quy trình đặt phòng linh hoạt: Khách hàng có thể thực hiện tra cứu phòng trống, kiểm tra giá và hoàn tất đơn đặt phòng trực tuyến mà không bắt buộc phải đăng ký tài khoản trước, giúp giảm thiểu thời gian thao tác.
  • Số hóa toàn diện quy trình quản trị khách sạn: Cung cấp công cụ cho phép nhân viên lễ tân và nhà quản lý theo dõi danh sách khách hàng, cập nhật tình trạng từng phòng, phân loại hạng phòng (Standard, Superior, Deluxe, Suite), xử lý đơn đặt phòng và theo dõi lịch phòng trống.
  • Thiết lập hệ thống thống kê phục vụ kinh doanh: Cung cấp các biểu mẫu báo cáo doanh thu lưu trú theo chu kỳ (tháng, quý, năm), báo cáo doanh thu từ dịch vụ đi kèm và báo cáo rà soát tỷ lệ phòng còn trống theo thời gian thực.
  • Chuẩn hóa giao diện và cấu trúc lập trình: Ứng dụng ngôn ngữ thiết kế Material Design mang lại giao diện tối giản, hạn chế tình trạng quá tải thông tin; cấu trúc mã nguồn Backend và Frontend tuân thủ nghiêm ngặt chuẩn Coding convention, Clean code và mô hình MVC.

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

Dựa trên nội dung đánh giá khách quan tại Chương 5 và quá trình triển khai thực tế, đồ án còn tồn tại các hạn chế kỹ thuật sau:

  • Hệ thống dễ xảy ra hiện tượng chậm hoặc nghẽn mạng (lag) khi có lượng lớn người dùng cùng truy cập đồng thời vào hệ thống.
  • Chưa tích hợp thành công các cổng thanh toán qua ví điện tử phổ biến trên thị trường như MoMo, ZaloPay (hệ thống hiện tại mới dừng ở mức hỗ trợ thẻ tín dụng/ghi nợ).
  • Hệ thống chưa bổ sung được nhiều tính năng dịch vụ mở rộng và chưa hoàn thiện khu vực tư vấn, tương tác trực tiếp (chat) giữa khách hàng và nhân viên hỗ trợ.
  • Trong quá trình triển khai, nhóm gặp khó khăn khách quan: có thành viên học khác lớp gây cản trở trao đổi trực tiếp, thiếu hụt kinh nghiệm lọc nguồn tài liệu uy tín, và áp lực thời gian do phải hoàn thành song song nhiều đồ án chuyên ngành.

Hướng phát triển và mở rộng được nhóm tác giả xác định:

  • Tập trung rà soát, sửa lỗi và tối ưu hóa mã nguồn Backend nhằm nâng cao khả năng chịu tải của hệ thống.
  • Hoàn thiện module tích hợp cổng thanh toán trực tuyến qua các ví điện tử (MoMo, ZaloPay).
  • Mở rộng các chức năng nâng cao phục vụ chăm sóc khách hàng và bổ sung thêm các dịch vụ lưu trú gia tăng trên giao diện người dùng.

Giá trị tham khảo

Tài liệu đồ án mang lại giá trị học thuật và ứng dụng thực tiễn rõ ràng cho các nhóm đối tượng:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Là tài liệu tham khảo chi tiết cho các môn học như Lập trình Web, Phát triển ứng dụng với NodeJS, Phân tích thiết kế hệ thống thông tin và Quản trị cơ sở dữ liệu phi quan hệ (NoSQL).
  • Người nghiên cứu các đề tài thương mại điện tử và dịch vụ lưu trú: Cung cấp tài liệu mẫu về kế hoạch khảo sát thực địa, bao gồm bảng câu hỏi phỏng vấn thực tế nhà quản lý khách sạn 4 sao về quy trình nhận/trả phòng, tính phụ phí và quản lý dịch vụ.
  • Lập trình viên xây dựng hệ thống theo kiến trúc MVC: Cung cấp tài liệu tham khảo thực tế về cách thức mô hình hóa đặc tả Use Case, thiết kế cơ sở dữ liệu MongoDB cho nghiệp vụ khách sạn (4 collection: User, Room type, Room, Booking Room) và xây dựng giao diện dựa trên hệ thống Wireframes chuẩn Figma.

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

1. Hệ thống P4nthers sử dụng ngăn xếp công nghệ (tech stack) nào để hiện thực hóa?
Hệ thống sử dụng NodeJS kết hợp Express framework cho tầng Backend, giao tiếp với hệ quản trị cơ sở dữ liệu NoSQL MongoDB; tầng giao diện Frontend được xây dựng bằng HTML, CSS, JavaScript lấy cảm hứng từ ngôn ngữ thiết kế Material Design của Google; các công cụ hỗ trợ gồm Visual Studio Code, Figma (vẽ Wireframes), Draw.io và GitLab.

2. Khảo sát thực tế trong đồ án đã ghi nhận những quy định nghiệp vụ cụ thể nào từ phía khách sạn?
Khảo sát phỏng vấn quản lý khách sạn 4 sao (ngày 20/03/2023) ghi nhận hệ thống có 4 loại phòng chính (Suite, Deluxe, Superior, Standard); giờ nhận phòng từ 13:00, giờ trả phòng trước 12:00; trả phòng muộn trước 17:00 tính thêm 50% giá phòng, sau 17:00 tính 100% giá phòng; nhận phòng trước 12:00 tính thêm 50% giá phòng; miễn phí tiền phòng cho tối đa 2 trẻ em dưới 8 tuổi ở cùng người lớn; kiểm tra trang thiết bị phòng định kỳ 1 tháng/lần.

3. Cơ sở dữ liệu của hệ thống được tổ chức thành những collection nào trong MongoDB?
Cơ sở dữ liệu mức vật lý của hệ thống bao gồm 4 collection chính: Collection User (lưu trữ thông tin người dùng và phân quyền), Collection Room type (lưu trữ danh mục loại phòng), Collection Room (lưu trữ thông tin chi tiết từng phòng vật lý) và Collection Booking Room (lưu trữ dữ liệu các giao dịch đặt phòng).

4. Phân hệ quản trị (Admin) cung cấp những chức năng quản lý và báo cáo nào cho nhân viên?
Phân hệ Admin cung cấp Trang điều khiển (Dashboard), chức năng Quản lý danh sách khách hàng (xem, thêm, sửa, xóa), Quản lý loại phòng, Quản lý phòng vật lý, Quản lý đơn đặt phòng, theo dõi Lịch, cùng hệ thống báo cáo thống kê gồm: thống kê phòng còn trống, báo cáo doanh thu từ dịch vụ và thống kê tổng doanh thu khách sạn theo tháng, quý, năm.

5. Khách hàng chưa có tài khoản có thể thực hiện đặt phòng trên website được không?
Có. Hệ thống được thiết kế hỗ trợ khách hàng vãng lai có thể tìm kiếm, lựa chọn phòng và tiến hành đặt phòng trực tuyến 24/24 mà không bắt buộc phải tạo tài khoản trước, giúp giảm thiểu thời gian chờ đợi và tối ưu quy trình thao tác.


Kết luận

Đồ án "Website đặt phòng khách sạn trực tuyến" của nhóm sinh viên Trường Đại học Tôn Đức Thắng đã giải quyết cơ bản bài toán số hóa nghiệp vụ lưu trú bằng việc xây dựng hệ thống P4nthers hoàn chỉnh trên nền tảng NodeJS, Express và MongoDB. Nghiên cứu thể hiện quy trình công nghệ bài bản từ khâu phỏng vấn thực tế khách sạn 4 sao, mô hình hóa hệ thống bằng UML đến thiết kế giao diện theo chuẩn Material Design. Mặc dù vẫn còn những hạn chế về khả năng chịu tải và việc kết nối cổng thanh toán ví điện tử, hệ thống đã đáp ứng tốt các yêu cầu chức năng cốt lõi cho cả khách hàng và ban quản lý, tạo tiền đề vững chắc cho việc nâng cấp thành sản phẩm thương mại hoàn chỉnh.