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

Trong chương trình đào tạo ngành Công nghệ thông tin tại Trường Đại học Xây dựng, học phần Phương pháp lập trình hướng đối tượng đóng vai trò then chốt trong việc trang bị kiến thức nền tảng và kỹ năng xây dựng phần mềm theo mô hình hướng đối tượng. Đồ án môn học của nhóm sinh viên lớp 64IT2 (thực hiện hoàn thành ngày 11/07/2022) lựa chọn đề tài "Quản lý khách sạn" nhằm giải quyết bài toán tin học hóa các quy trình vận hành, quản lý cơ sở lưu trú và dịch vụ đi kèm.

Bối cảnh thực tế cho thấy hoạt động quản trị khách sạn bao gồm nhiều nghiệp vụ phức tạp, từ việc tiếp nhận yêu cầu đặt phòng, đón tiếp khách lưu trú, cung cấp các dịch vụ phát sinh cho đến thanh toán, quản lý cơ sở vật chất và nhân sự. Nếu xử lý thủ công hoặc rời rạc, hệ thống dễ phát sinh sai sót trong việc theo dõi tình trạng phòng trống, tính toán hóa đơn và thống kê doanh thu.

Đồ án đặt ra các nhiệm vụ nghiên cứu và phát triển cụ thể sau:

  1. Khảo sát và mô tả chi tiết bài toán quản lý khách sạn thực tế, xác định rõ luồng thông tin giữa khách hàng, nhân viên lễ tân, nhân viên dịch vụ, nhân viên vệ sinh và cấp quản lý.
  2. Phân tích hệ thống thông qua việc xây dựng biểu đồ Use Case tổng quát và các ca sử dụng chi tiết (Đặt phòng, Đặt dịch vụ, Check Out).
  3. Thiết kế kiến trúc triển khai hệ thống thông qua biểu đồ Deployment.
  4. Hiện thực hóa các phân hệ chức năng trên giao diện người dùng, đáp ứng đầy đủ hai nhóm đối tượng: nhân viên nghiệp vụ (Lễ tân/Khách sạn) và người quản trị (Quản lý).
  5. Xây dựng cơ sở dữ liệu quan hệ, kết nối và thực hiện kiểm thử chức năng hoàn chỉnh cho toàn bộ hệ thống phần mềm.
  • Đối tượng nghiên cứu: Quy trình quản lý hoạt động lưu trú, dịch vụ, thông tin khách hàng, nhân viên và doanh thu trong mô hình khách sạn.
  • Phạm vi nghiên cứu: Ứng dụng quản lý dạng desktop xây dựng bằng ngôn ngữ Java (giao diện đồ họa), lưu trữ dữ liệu tập trung trên hệ quản trị Microsoft SQL Server; dữ liệu thực nghiệm được khởi tạo và kiểm thử trong phạm vi đề tài môn học tại Trường Đại học Xây dựng.

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

Đồ án vận dụng các cơ sở lý thuyết và phương pháp kỹ thuật công nghệ thông tin định hướng ứng dụng:

  • Khung lý thuyết và mô hình phân tích:
    • Phương pháp lập trình hướng đối tượng (Object-Oriented Programming - OOP): Áp dụng các nguyên lý hướng đối tượng để mô hình hóa các thực thể thực tế (Khách hàng, Nhân viên, Phòng, Dịch vụ, Hóa đơn) thành các lớp đối tượng tương ứng trong phần mềm.
    • Ngôn ngữ mô hình hóa thống nhất (Unified Modeling Language - UML): Sử dụng biểu đồ Use Case để phân tích yêu cầu chức năng và biểu đồ Deployment để thiết kế cấu trúc triển khai của ứng dụng.
  • Phương pháp phát triển và thực nghiệm:
    • Phân tích quy trình nghiệp vụ thực tế tại khách sạn: Xác định vòng đời của phòng, luồng xử lý đặt phòng trước, tiếp nhận khách trực tiếp, bổ sung dịch vụ trong quá trình lưu trú và thủ tục thanh toán trả phòng.
    • Thiết kế kiến trúc giao diện người dùng chia tách theo nhóm chức năng: Tab Khách sạn (nghiệp vụ lễ tân) và Tab Quản lý (quản trị hệ thống).
    • Phương pháp kiểm thử phần mềm: Thực hiện kiểm thử chức năng giao diện và kiểm thử tích hợp kết nối cơ sở dữ liệu qua các kịch bản thao tác thực tế.
  • Nguồn dữ liệu và công nghệ:
    • Ngôn ngữ lập trình: Java (tệp khởi chạy chính view/HomeLoginView.java).
    • Môi trường phát triển tích hợp: IDE NetBeans.
    • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server, quản trị qua công cụ Microsoft SQL Server Management Studio (SSMS).
    • Tệp dữ liệu khởi tạo cơ sở dữ liệu: DB_Hotel-Manegement.sql nằm trong thư mục database của dự án.

Thiết kế và triển khai hệ thống

Phân tích kiến trúc và vai trò người dùng

Hệ thống xác định hai nhóm đối tượng người dùng chính tham gia vận hành với các quyền hạn cụ thể:

Nhóm người dùng Quyền hạn và nghiệp vụ chính trong hệ thống
Nhân viên (Lễ tân) - Đăng ký, đăng nhập tài khoản làm việc.
- Tìm kiếm phòng trống, tiếp nhận và lưu thông tin đặt phòng.
- Thực hiện thủ tục Check-In (nhận phòng), lưu trữ thông tin cá nhân khách lưu trú.
- Tiếp nhận và cập nhật đặt dịch vụ phát sinh vào hóa đơn thuê phòng.
- Thực hiện thủ tục Check-Out (trả phòng), tính toán số đêm lưu trú, in hóa đơn thanh toán.
- Chuyển đổi trạng thái phòng sau khi nhân viên vệ sinh hoàn tất dọn dẹp.
- Quản lý danh sách khách hàng (thêm, sửa, xóa, tìm kiếm theo mã, tên, SĐT).
- Tra cứu danh sách đặt phòng và danh sách hóa đơn thuê phòng.
Quản lý - Toàn quyền sử dụng các chức năng của nhân viên lễ tân.
- Quản lý danh mục phòng khách sạn (thêm mới, chỉnh sửa giá/số giường, xóa, tìm kiếm, sắp xếp theo loại phòng).
- Quản lý danh mục dịch vụ (thêm mới, sửa giá, xóa, tra cứu theo mã/tên dịch vụ).
- Quản lý hồ sơ nhân viên (thêm mới, cập nhật thông tin cá nhân/chức vụ/lương, xóa, tìm kiếm, sắp xếp theo chức vụ).
- Xem báo cáo thống kê doanh thu theo phòng và theo dịch vụ theo khoảng thời gian tùy chọn.

Vòng đời trạng thái phòng

Hệ thống chuẩn hóa quy trình chuyển đổi trạng thái của phòng khách sạn qua 3 trạng thái cơ bản:

  1. Sẵn sàng: Trạng thái mặc định khi phòng trống, sạch sẽ và sẵn sàng đón khách đặt hoặc Check-In.
  2. Đang sử dụng: Kích hoạt tự động ngay sau khi nhân viên lễ tân hoàn tất thủ tục Check-In cho khách hàng.
  3. Chưa sẵn sàng: Kích hoạt tự động ngay sau khi khách hàng hoàn tất thủ tục Check-Out và thanh toán hóa đơn. Phòng ở trạng thái chờ dọn dẹp. Sau khi nhân viên vệ sinh hoàn tất công việc và báo lại, lễ tân bấm chọn phòng trên màn hình để chuyển trạng thái trở lại Sẵn sàng.

Nội dung chính theo từng phân hệ chức năng

1. Phân hệ Khởi động, Xác thực và Giao diện chính

  • Khởi động ứng dụng: Thực thi bằng cách chạy tệp view/HomeLoginView.java trong môi trường IDE NetBeans.
  • Xác thực người dùng: Hệ thống cung cấp biểu mẫu Đăng nhập (Login). Đối với nhân viên mới, hệ thống hỗ trợ chức năng Đăng ký (Sign up) tài khoản; sau khi điền đầy đủ thông tin và xác nhận thành công, giao diện sẽ điều hướng trực tiếp vào không gian làm việc chính.
  • Bố cục giao diện chính:
    • Khung điều hướng bên trái: Chia thành 2 Tab chức năng rõ rệt gồm Tab Khách sạn (chức năng nghiệp vụ hàng ngày) và Tab Quản lý (chức năng dành riêng cho cấp quản trị).
    • Khung hiển thị bên phải: Bảng trực quan hóa danh sách và trạng thái hiện tại của toàn bộ các phòng trong khách sạn.

2. Phân hệ Nghiệp vụ Đặt phòng và Quản lý Đặt phòng

  • Quy trình đặt phòng:
    • Lễ tân mở giao diện Đặt phòng tại Tab Khách sạn, bấm chọn khách hàng (chọn từ danh sách hiện có hoặc tạo mới hồ sơ khách hàng).
    • Nhập tiêu chí tìm phòng tại mục Tìm phòng: Ngày đặt, Loại phòng, Số giường.
    • Hệ thống lọc và hiển thị danh sách các phòng còn trống phù hợp; lễ tân chọn phòng trên bảng và bấm xác nhận để lưu thông tin đặt phòng vào hệ thống.
  • Quản lý danh sách đặt phòng:
    • Cung cấp giao diện tra cứu tổng thể các thông tin đặt phòng.
    • Hỗ trợ tìm kiếm theo từ khóa và bộ lọc trạng thái (Đã check in hoặc Chưa check in).
    • Cho phép Xóa thông tin đặt phòng hoặc Chỉnh sửa thông tin đặt phòng (thay đổi loại phòng, ngày đặt) và lưu cập nhật.

3. Phân hệ Nghiệp vụ Check-In (Nhận phòng)

  • Hệ thống hiển thị danh sách các đơn đặt phòng kèm bộ lọc trạng thái và công cụ tìm kiếm đa năng (theo Mã đặt phòng, Mã phòng, Mã khách hàng, Tên khách hàng, Số điện thoại).
  • Cho phép chỉnh sửa thông tin phòng đặt hoặc xóa đơn trước khi thực hiện nhận phòng.
  • Khi tiến hành Check-In:
    • Hệ thống tự động khởi tạo Mã hóa đơn mới.
    • Lễ tân chọn ngày và nhập giờ Check-In thực tế.
    • Bổ sung thông tin chi tiết của tất cả khách hàng thực tế lưu trú tại phòng bao gồm: Họ tên, Số Căn cước công dân (CCCD), Ngày sinh, Quốc tịch.
    • Bấm nút "Nhận Phòng" để hoàn tất: trạng thái phòng trên giao diện trang chủ lập tức chuyển từ Sẵn sàng sang Đang sử dụng.

4. Phân hệ Nghiệp vụ Đặt dịch vụ

  • Tiếp nhận các nhu cầu phát sinh trong thời gian khách lưu trú (ăn uống, di chuyển, giặt ủi...).
  • Lễ tân chọn hóa đơn của phòng tương ứng từ danh sách các phòng đang thuê.
  • Chọn loại dịch vụ, nhập ngày sử dụng, số lượng, ghi chú và các khoản đền bù phát sinh (nếu có).
  • Bấm "Thêm dịch vụ": hệ thống ghi nhận dịch vụ vào hóa đơn thuê phòng hiện hành và tự động tính toán, cập nhật lại tổng tiền dịch vụ hiển thị trên màn hình.

5. Phân hệ Nghiệp vụ Check-Out và Quản lý Hóa đơn

  • Quy trình Check-Out:
    • Lễ tân mở danh sách hóa đơn chưa Check-Out, tìm kiếm nhanh theo Mã phòng.
    • Giao diện Check-Out hiển thị đầy đủ thông tin hóa đơn và thông tin nhân viên đang trực tiếp xử lý (Mã nhân viên, Tên nhân viên).
    • Lễ tân chọn ngày và nhập giờ Check-Out thực tế, sau đó bấm nút "Tổng Tiền".
    • Hệ thống tự động tính toán số đêm lưu trú thực tế, tổng tiền thuê phòng, tổng tiền dịch vụ và kết xuất con số Thành Tiền chung cuộc.
    • Lễ tân xác nhận với khách hàng và bấm "Check Out" để in hóa đơn thanh toán; hệ thống tự động chuyển trạng thái phòng sang Chưa sẵn sàng.
  • Xem danh sách hóa đơn thuê phòng:
    • Hiển thị toàn bộ lịch sử hóa đơn cùng danh sách dịch vụ chi tiết của từng hóa đơn.
    • Cung cấp công cụ tìm kiếm theo Mã hóa đơn, Mã phòng, khoảng thời gian (Ngày Check In, Ngày Check Out) và lọc theo trạng thái (Đã thanh toán / Chưa thanh toán).

6. Phân hệ Quản lý Danh mục và Dữ liệu Khách hàng

  • Quản lý khách hàng: Quản lý thông tin hồ sơ gồm Tên khách hàng, Số điện thoại, Địa chỉ. Mã định danh (ID) được hệ thống sinh tự động, không cho phép chỉnh sửa thủ công nhằm đảm bảo toàn vẹn dữ liệu. Hỗ trợ tìm kiếm theo Mã, Tên hoặc Số điện thoại.
  • Quản lý phòng khách sạn (Tab Quản lý): Cho phép Quản lý thêm mới phòng, xóa phòng, chỉnh sửa thông tin (loại phòng, số giường, giá phòng — khóa trường Mã phòng khi sửa), tra cứu theo Mã phòng/Loại phòng/Số giường và sắp xếp danh sách theo Loại phòng.
  • Quản lý dịch vụ (Tab Quản lý): Cho phép thêm mới dịch vụ (nhập Tên dịch vụ, Đơn giá), sửa đổi giá, xóa dịch vụ và tìm kiếm theo Mã hoặc Tên dịch vụ.
  • Quản lý nhân viên (Tab Quản lý): Lưu trữ hồ sơ nhân viên gồm Mã nhân viên, Họ tên, Giới tính, Số điện thoại, Địa chỉ, Chức vụ, Lương. Hỗ trợ thêm mới (lưu trực tiếp vào CSDL), xóa, cập nhật thông tin (khóa trường Mã nhân viên khi sửa), tìm kiếm theo Mã/Họ/Tên/Chức vụ và sắp xếp theo Chức vụ.

7. Phân hệ Báo cáo Thống kê Doanh thu

Hệ thống cung cấp công cụ tổng hợp tài chính cho cấp quản lý theo hai chế độ:

  • Thống kê theo phòng: Lọc và tính tổng doanh thu tiền thuê phòng theo khoảng thời gian tùy chọn bằng cách chọn Ngày bắt đầu và Ngày kết thúc (ví dụ thực nghiệm trong tài liệu: thống kê từ ngày 20/04/2022 đến ngày 30/04/2022).
  • Thống kê theo dịch vụ: Lọc và tính tổng doanh thu từ các dịch vụ cung cấp theo khoảng thời gian tùy chọn (ví dụ thực nghiệm trong tài liệu: thống kê từ ngày 01/05/2022 đến ngày 20/05/2022).

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

Kết quả xây dựng hệ thống

Đồ án đã xây dựng hoàn chỉnh một ứng dụng quản lý khách sạn đáp ứng các yêu cầu đặt ra trong học phần Lập trình hướng đối tượng:

Nhóm chức năng Tình trạng hoàn thiện Chi tiết các chức năng đã hiện thực
Xác thực & Điều hướng Hoàn thành Đăng ký tài khoản, Đăng nhập hệ thống, Giao diện phân chia 2 Tab (Khách sạn / Quản lý).
Nghiệp vụ Lưu trú Hoàn thành Đặt phòng trước, Check-In, Check-Out, tự động tính số đêm và thành tiền, cập nhật trạng thái phòng 3 bước.
Nghiệp vụ Dịch vụ & Hóa đơn Hoàn thành Đặt dịch vụ theo phòng, tính phí dịch vụ, ghi nhận đền bù, tra cứu chi tiết hóa đơn theo bộ lọc.
Quản trị Danh mục Hoàn thành Quản lý thông tin Khách hàng, Phòng, Dịch vụ, Nhân viên (CRUD đầy đủ, khóa khóa chính khi sửa).
Báo cáo Thống kê Hoàn thành Thống kê doanh thu tiền phòng và doanh thu dịch vụ theo khoảng thời gian (Ngày bắt đầu - Ngày kết thúc).
Kiểm thử & Cơ sở dữ liệu Hoàn thành Xây dựng kịch bản SQL (DB_Hotel-Manegement.sql), kết nối cơ sở dữ liệu trên MS SQL Server, kiểm thử chức năng trên NetBeans.

Đóng góp của đồ án

  • Hiện thực hóa thành công các nguyên lý của phương pháp lập trình hướng đối tượng vào một bài toán quản lý thực tế có quy mô vừa và nhỏ.
  • Xây dựng được mô hình quy trình xử lý khép kín cho hoạt động của khách sạn: từ tiếp nhận khách, quản lý lưu trú, cung ứng dịch vụ đến thanh toán và thống kê tài chính.
  • Thiết kế giao diện thân thiện, phân định rõ ràng giữa tác vụ nghiệp vụ của nhân viên lễ tân và tác vụ quản trị hệ thống của cấp quản lý, hạn chế các lỗi thao tác dữ liệu (như tự động sinh mã hóa đơn/khách hàng, ngăn sửa đổi khóa chính).

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

  • Hạn chế được nhóm tác giả nêu trong báo cáo:
    • Nhóm sinh viên thừa nhận do kiến thức chuyên ngành còn hạn hẹp nên phần mềm vẫn còn những thiếu sót nhất định trong việc tối ưu hóa để có thể đưa vào vận hành thực tế tại các khách sạn quy mô lớn.
    • Ứng dụng mới chỉ dừng lại ở phạm vi một bài tập lớn/đồ án môn học, triển khai trên môi trường máy đơn (desktop application) kết nối cơ sở dữ liệu cục bộ.
  • Hướng hoàn thiện và phát triển tiếp:
    • Tiếp thu các góp ý chuyên môn từ giảng viên hướng dẫn để tối ưu hóa mã nguồn, chuẩn hóa cấu trúc dữ liệu và xử lý triệt để các trường hợp ngoại lệ phát sinh trong quá trình vận hành.
    • Nâng cấp và mở rộng tính năng để ứng dụng đạt độ hoàn thiện cao hơn, hướng tới khả năng ứng dụng thực tế trong quản lý khách sạn.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo hữu ích cho các đối tượng sau:

  • Sinh viên ngành Công nghệ thông tin: Đặc biệt là sinh viên đang theo học môn Phương pháp lập trình hướng đối tượng, Lập trình Java, Phân tích thiết kế hệ thống thông tin hoặc Đồ án cơ sở ngành.
  • Người học cần tài liệu mẫu về xây dựng ứng dụng Java Desktop: Cung cấp tài liệu trực quan về cách thiết kế biểu mẫu giao diện người dùng (UI Form), tổ chức mã nguồn giao diện (view/HomeLoginView.java), tích hợp cơ sở dữ liệu Microsoft SQL Server thông qua tệp mã nguồn SQL mẫu (DB_Hotel-Manegement.sql).
  • Nội dung có giá trị tham khảo cao nhất trong đồ án:
    • Quy trình mô hình hóa trạng thái phòng và logic nghiệp vụ Check-In / Check-Out kèm tính toán tự động số đêm lưu trú và tổng tiền dịch vụ.
    • Cách thức phân chia phân quyền người dùng và thiết kế giao diện dạng 2 Tab nghiệp vụ (Khách sạn và Quản lý).

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

1. Ứng dụng quản lý khách sạn trong đồ án được khởi động bằng tệp tin nào và sử dụng công cụ gì?
Chương trình được phát triển trên môi trường IDE NetBeans, khởi động bằng cách chạy tệp tin view/HomeLoginView.java. Cơ sở dữ liệu được quản lý bằng Microsoft SQL Server Management Studio (SSMS) thông qua tệp khởi tạo DB_Hotel-Manegement.sql.

2. Trạng thái của một phòng khách sạn trong hệ thống chuyển đổi qua các bước cụ thể như thế nào?
Trạng thái phòng mặc định là Sẵn sàng. Sau khi nhân viên thực hiện thủ tục Check-In cho khách, phòng chuyển sang trạng thái Đang sử dụng. Khi khách làm thủ tục Check-Out và thanh toán, phòng chuyển sang trạng thái Chưa sẵn sàng. Sau khi nhân viên vệ sinh dọn dẹp xong và báo lại lễ tân, lễ tân thao tác trên màn hình để chuyển phòng trở lại trạng thái Sẵn sàng.

3. Khi thực hiện thủ tục Check-In, nhân viên lễ tân cần nhập những thông tin nào của khách lưu trú tại phòng?
Ngoài việc hệ thống tự động sinh Mã hóa đơn và lễ tân chọn ngày, nhập giờ Check-In, lễ tân cần nhập đầy đủ thông tin của từng khách ở tại phòng gồm: Họ tên, Số CCCD, Ngày sinh và Quốc tịch. Hệ thống cho phép thêm nhiều khách hàng lưu trú trong cùng một phòng.

4. Khi nhân viên thực hiện chỉnh sửa thông tin Khách hàng, Phòng hoặc Nhân viên, hệ thống có những ràng buộc gì?
Để đảm bảo toàn vẹn dữ liệu: đối với khách hàng, trường ID được hệ thống tự động sinh và không cho phép người dùng tự điền; đối với phòng khách sạn, khi chỉnh sửa không được phép sửa đổi trường Mã phòng; đối với nhân viên, khi chỉnh sửa thông tin cá nhân cũng không được phép sửa đổi trường Mã Nhân Viên.

5. Chức năng thống kê trong hệ thống hỗ trợ cấp quản lý xem những loại doanh thu nào và theo tiêu chí gì?
Hệ thống cung cấp hai chức năng thống kê: Thống kê doanh thu theo phòng và Thống kê doanh thu theo dịch vụ. Cả hai chức năng đều cho phép người quản lý lọc dữ liệu và tính tổng doanh thu theo khoảng thời gian tùy chọn thông qua việc chọn Ngày bắt đầu và Ngày kết thúc.


Kết luận

Đồ án "Quản lý khách sạn" của nhóm sinh viên lớp 64IT2 - Khoa Công nghệ thông tin, Trường Đại học Xây dựng là một công trình học thuật hoàn chỉnh thuộc học phần Phương pháp lập trình hướng đối tượng. Báo cáo đã thể hiện rõ ràng từ khâu mô tả bài toán, thiết kế biểu đồ Use Case/Deployment, xây dựng giao diện ứng dụng trên nền tảng Java đến thiết kế cơ sở dữ liệu quan hệ trên Microsoft SQL Server. Hệ thống giải quyết tốt các bài toán nghiệp vụ cốt lõi từ lưu trú, dịch vụ, hóa đơn cho đến quản trị danh mục và thống kê doanh thu, đóng vai trò là một tài liệu tham khảo thực hành hữu ích cho sinh viên công nghệ thông tin.