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

Khách sạn là loại hình kinh doanh dịch vụ tổng hợp với khối lượng nghiệp vụ đa dạng và phức tạp, bao gồm lưu trú, ẩm thực, vận chuyển và các hoạt động giải trí. Trong mô hình vận hành này, bộ phận lễ tân đóng vai trò tiếp nhận, xử lý toàn bộ các yêu cầu từ khách lưu trú và là trung tâm luân chuyển thông tin của cơ sở. Việc quản lý thủ công hoặc sử dụng các công cụ rời rạc bộc lộ nhiều bất cập trong theo dõi dữ liệu, kiểm soát hóa đơn và điều hành hoạt động kinh doanh, đặc biệt trong các môi trường lưu trú đòi hỏi tính chuyên nghiệp cao.

Đề tài "Phần mềm quản lý khách sạn VinCT" được thực hiện trong khuôn khổ học phần Dự án 1 thuộc Bộ môn Công nghệ Thông tin, Trường Cao đẳng FPT Polytechnic (Cơ sở Cần Thơ), hoàn thành vào tháng 03/2023 bởi Nhóm 4 (gồm các sinh viên: Nguyễn Quang Thắng, Đặng Liên Dũng, DP.Quang Nghĩa, Hồ Phủ Vàng, Hồ Minh Khoa, Võ Đình Thái) dưới sự hướng dẫn của giảng viên Trần Văn Nhuộm.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Khảo sát hiện trạng và xác định các yêu cầu nghiệp vụ cốt lõi trong hoạt động quản lý khách sạn.
  2. Phân tích yêu cầu hệ thống thông qua sơ đồ phân rã chức năng, sơ đồ ca sử dụng (Use Case) và xây dựng tài liệu đặc tả yêu cầu phần mềm (SRS).
  3. Thiết kế kiến trúc phần mềm, mô hình cơ sở dữ liệu quan hệ (ERD) và hệ thống giao diện người dùng.
  4. Lập trình và triển khai ứng dụng quản lý khách sạn trên nền tảng Java Desktop kết nối cơ sở dữ liệu SQL Server.

Đối tượng nghiên cứu là quy trình quản trị hoạt động lưu trú tại khách sạn (quản lý phòng, đặt phòng, khách hàng, nhân viên, hóa đơn và thống kê doanh thu). Phạm vi triển khai của đồ án là ứng dụng máy trạm phục vụ nội bộ cơ sở lưu trú.


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

Đồ án áp dụng quy trình phân tích và thiết kế hệ thống thông tin theo hướng đối tượng kết hợp với mô hình dữ liệu quan hệ:

  • Khung phân tích nghiệp vụ và chức năng: Đồ án sử dụng kỹ thuật phân rã chức năng và mô hình hóa Use Case đa cấp (Level 1, Level 2) để phân định vai trò của từng tác nhân tương tác với hệ thống. Tài liệu đặc tả yêu cầu hệ thống (SRS) được lập chi tiết cho từng màn hình và luồng nghiệp vụ.
  • Mô hình kiến trúc ứng dụng: Hệ thống được tổ chức theo mô hình kiến trúc phân tầng:
    • Tầng giao diện người dùng (Graphic User Interface - GUI): Xây dựng bằng thư viện Java Swing.
    • Tầng xử lý nghiệp vụ (Business Logic Programming): Bao gồm các bộ điều khiển (Controllers) tiếp nhận và xử lý logic.
    • Tầng truy xuất dữ liệu (Data Access Layer): Sử dụng cấu trúc Entity và DAO (Data Access Object), kết nối qua cầu nối JDBC (Java Database Connectivity).
    • Tầng cơ sở dữ liệu (Database): Lưu trữ và xử lý truy vấn trên hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server.
  • Mô hình hóa dữ liệu: Sử dụng sơ đồ quan hệ thực thể (ERD) để biểu diễn các thực thể, thuộc tính và mối quan hệ giữa các bảng dữ liệu.

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

1. Kiến trúc công nghệ và môi trường triển khai

Hệ thống được thiết kế theo mô hình Client-Server phục vụ mạng nội bộ:

Thành phần Công nghệ / Yêu cầu hệ thống
Giao diện & Logic Java SE (JDK 1.8+), Java Swing
Giao tiếp CSDL Java Database Connectivity (JDBC)
Hệ quản trị CSDL Microsoft SQL Server 2008+ / SQL Server 2016
Máy chủ (Server) Hệ điều hành Windows
Máy trạm (Client) Hệ điều hành tương thích hỗ trợ Java Runtime (JDK 1.8+)

2. Ma trận phân quyền người dùng

Hệ thống thiết lập cơ chế kiểm soát truy cập và bảo mật bắt buộc đăng nhập, chia thành ba nhóm vai trò chính:

Nhóm quyền Phạm vi chức năng được phép Giới hạn quyền
Admin Toàn quyền thao tác trên mọi phân hệ: phòng, tài khoản, nhân viên, khách hàng, hóa đơn, thống kê. Không có giới hạn
Quản lý / Trưởng phòng Quản lý phòng, loại phòng, nhân viên, khách hàng, hóa đơn; duyệt xóa dữ liệu khách hàng/nhân viên. Không có quyền xem thống kê và quản lý phân quyền tài khoản cấp cao
Lễ tân / Nhân viên Tra cứu phòng, đặt phòng, check-in, check-out, xem hóa đơn, cập nhật thông tin khách hàng. Không được xóa dữ liệu khách hàng, không can thiệp cấu hình hệ thống, không xem thống kê

3. Cấu trúc cơ sở dữ liệu

Cơ sở dữ liệu của phần mềm VinCT được chuẩn hóa thành các bảng quan hệ tương ứng với các thực thể trong mô hình ERD:

  • Khách hàng: Lưu trữ thông tin cá nhân và định danh của khách lưu trú.
  • Phòng đặt: Quản lý các giao dịch đặt phòng, thời gian nhận/trả phòng và trạng thái lưu trú.
  • Phòng: Quản lý danh mục phòng vật lý, trạng thái phòng (trống, đã đặt, đang sử dụng).
  • Loại phòng: Phân loại phòng (phòng thường, phòng VIP) và đơn giá tương ứng.
  • Nhân viên: Thông tin hồ sơ nhân sự (mã nhân viên, họ tên, email, vai trò, địa chỉ, ngày sinh, giới tính).
  • Chức vụ: Danh mục chức danh và quyền hạn nội bộ.
  • Tài khoản: Lưu trữ thông tin xác thực (tên đăng nhập, mật khẩu, mã phân quyền).
  • Hóa đơn chi tiết: Ghi nhận chi tiết thanh toán tiền phòng và các dịch vụ đi kèm.

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

1. Giới thiệu phần mềm

Chương này phản ánh hiện trạng hoạt động của ngành kinh doanh lưu trú, nêu rõ vai trò tiếp nhận thông tin của bộ phận lễ tân và sự cần thiết của một công cụ tin học hóa trong quản lý. Nhóm tác giả xác định các yêu cầu nghiệp vụ căn bản (quản lý phòng, hóa đơn, khách hàng, loại phòng, tài khoản, nhân viên, thống kê doanh thu phòng/dịch vụ theo tháng), yêu cầu bảo mật thông qua xác thực phân quyền và yêu cầu nền tảng công nghệ (Swing, JDBC, SQL Server 2016, JDK).

2. Phân tích yêu cầu khách hàng

Nội dung chương tập trung vào việc mô hình hóa yêu cầu người dùng:

  • Sơ đồ phân rã chức năng và Sơ đồ Use Case: Trình bày chi tiết Use Case tổng thể Level 1 và các Use Case Level 2 cho từng phân hệ (Quản lý đặt phòng, Quản lý phòng, Quản lý loại phòng, Quản lý nhân viên, Quản lý khách hàng, Quản lý tài khoản, Quản lý thống kê, Quản lý hóa đơn và Chi tiết hóa đơn).
  • Đặc tả yêu cầu hệ thống (SRS): Quy định rõ mô tả chức năng, dữ liệu đầu vào/đầu ra và đối tượng sử dụng cho từng module:
    • Cửa sổ chính: Đóng vai trò điều hướng menu và phân quyền giao diện.
    • Quản lý phòng & đặt phòng: Tiếp nhận đặt phòng thường/VIP, tìm kiếm phòng trống/đã đặt, thực hiện check-in, check-out.
    • Quản lý khách hàng & nhân viên: Quản lý thông tin hồ sơ, phân cấp quyền thêm/sửa/xóa giữa nhân viên và trưởng phòng.
    • Quản lý hóa đơn & thống kê: Theo dõi doanh thu phòng, dịch vụ, số lượng nhân viên và khách hàng theo tháng.

3. Thiết kế ứng dụng

Chương này chuyển hóa các yêu cầu phân tích thành tài liệu kỹ thuật:

  • Thiết lập mô hình công nghệ phân tầng (GUI, Business Logic - Controllers, Entity/DAO, JDBC, Database).
  • Xây dựng sơ đồ thực thể liên kết (ERD) và chi tiết các thuộc tính cho các thực thể: tài khoản, chức vụ, phòng, khách hàng, nhân viên.
  • Thiết kế luồng giao diện: Ứng dụng khởi động từ Cửa sổ chào (LoadJFrame) $\rightarrow$ Cửa sổ đăng nhập (DangNhapJFrame) $\rightarrow$ Cửa sổ chính (MainJFrame) $\rightarrow$ Các cửa sổ chức năng con.
  • Lập bảng đặc tả sự kiện và bộ điều khiển cho các giao diện:
Cửa sổ Thành phần điều khiển Sự kiện Mô tả hoạt động
Cửa sổ chính Cửa sổ Initialize Đưa cửa sổ ra vị trí giữa màn hình
Các nút Quản lý Click Mở các giao diện chức năng tương ứng (Phòng, Khách hàng, Nhân viên, Thống kê)
Cửa sổ đặt phòng Bảng danh sách Initialize Hiển thị toàn bộ dữ liệu khách hàng lên bảng
Các ô nhập liệu Click / Input Nhập họ tên, quốc tịch, số khách, chọn ngày đến, ngày đi, trạng thái
Nút Đặt phòng Click Lưu thông tin đặt phòng vào hệ thống
Quản lý khách hàng Danh sách Click Hiển thị thông tin khách hàng, ngày đặt, ngày đi, trạng thái
Quản lý nhân viên Nút chức năng Click Thực hiện Thêm, Sửa, Xóa thông tin nhân sự (Họ tên, chức vụ, giới tính)

4. Thực hiện dự án

Chương cuối trình bày việc hiện thực hóa phần mềm thành mã nguồn và cơ sở dữ liệu:

  • Xây dựng giao diện bằng Java Swing: Hiện thực các lớp giao diện kế thừa JFrame: MainJFrame (giao diện chính), LoadJFrame (giao diện chào), DangNhapJFrame (đăng nhập), QLKhachHang (quản lý khách hàng), QLPhong (quản lý phòng), QLLoaiPhong (quản lý loại phòng), QLNhanVien (quản lý nhân viên), QLTaiKhoan (quản lý tài khoản), ThongKeJFrame (thống kê), CNDatPhongFrame (chức năng đặt phòng), GioiThieuJFrame (thông tin giới thiệu).
  • Hiện thực cơ sở dữ liệu SQL Server: Tạo lập các bảng dữ liệu vật lý với đầy đủ khóa chính, khóa ngoại bao gồm bảng khách hàng, bảng phòng đặt, bảng phòng, bảng loại phòng, bảng hóa đơn chi tiết, bảng nhân viên, bảng chức vụ và bảng tài khoản.

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

  • Kết quả thực nghiệm: Đồ án đã hoàn thiện bộ phần mềm quản lý khách sạn VinCT dạng ứng dụng Desktop hoàn chỉnh, tích hợp đầy đủ các chức năng nghiệp vụ từ quản lý danh mục, xử lý đặt/nhận/trả phòng đến lập hóa đơn chi tiết và thống kê doanh thu theo tháng.
  • Kiểm soát bảo mật: Ứng dụng triển khai thành công cơ chế phân quyền 3 cấp độ (Admin, Quản lý/Trưởng phòng, Lễ tân/Nhân viên), đảm bảo tính an toàn dữ liệu và phân định rõ trách nhiệm của từng bộ phận trong cơ sở lưu trú.
  • Đóng góp kỹ thuật: Cung cấp tài liệu phân tích thiết kế hệ thống hoàn chỉnh từ Use Case, SRS, ERD đến chi tiết cài đặt Java Swing và SQL Server, đóng vai trò như một sản phẩm mẫu cho việc ứng dụng kiến thức lập trình hướng đối tượng vào bài toán thực tế.

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

  • Hạn chế: Phần mềm được xây dựng dưới dạng ứng dụng desktop truyền thống (Java Swing) hoạt động trên mạng cục bộ (LAN), chưa hỗ trợ giao diện nền tảng web hoặc ứng dụng di động để khách hàng có thể chủ động đặt phòng trực tuyến từ xa. Hệ thống phụ thuộc vào môi trường cài đặt Java Runtime (JDK 1.8+) trên từng máy trạm.
  • Hướng phát triển: Mở rộng kiến trúc phần mềm sang mô hình Web Application hoặc kiến trúc Microservices; tích hợp các cổng thanh toán trực tuyến và phát triển ứng dụng di động dành cho khách hàng tự phục vụ (self-service booking).

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên các khối ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Hệ thống Thông tin đang thực hiện đồ án môn học (như Dự án 1, Dự án mẫu, Lập trình Java Desktop, Cơ sở dữ liệu).

Các nội dung có giá trị tham khảo cao gồm:

  • Mẫu tài liệu đặc tả yêu cầu hệ thống (SRS) rõ ràng giữa tác nhân, dữ liệu và mô tả chức năng.
  • Bảng mô tả thiết kế sự kiện giao diện người dùng trên nền tảng Java Swing.
  • Mô hình tổ chức phân tầng kết nối CSDL sử dụng mô hình DAO và JDBC kết nối SQL Server.

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

1. Phần mềm VinCT phân quyền cho nhân viên lễ tân những thao tác nào?
Nhân viên lễ tân chỉ được quyền truy cập các chức năng cơ bản như: xem danh mục phòng, thực hiện nghiệp vụ đặt phòng, check-in, check-out, xem danh sách hóa đơn và quản lý thông tin khách hàng. Lễ tân không có quyền xóa dữ liệu khách hàng, không được xem báo cáo thống kê và không thể truy cập các menu quản lý tài khoản, nhân viên.

2. Công nghệ và môi trường nào là bắt buộc để triển khai phần mềm?
Hệ thống yêu cầu máy chủ cơ sở dữ liệu cài đặt Microsoft SQL Server (bản 2008 trở lên hoặc SQL Server 2016) chạy trên hệ điều hành Windows. Các máy trạm của nhân viên cần cài đặt môi trường Java Runtime (JDK 1.8 trở lên) trên bất kỳ hệ điều hành nào hỗ trợ Java.

3. Luồng tương tác giao diện khi khởi động ứng dụng diễn ra theo thứ tự nào?
Khi người dùng mở ứng dụng, luồng tương tác bắt đầu bằng Màn hình chào (LoadJFrame), tiếp theo chuyển đến Màn hình đăng nhập (DangNhapJFrame) để xác thực tài khoản và vai trò. Sau khi đăng nhập thành công, hệ thống mở Cửa sổ chính (MainJFrame), từ đó phân phối quyền để truy cập các cửa sổ nghiệp vụ con.

4. Dữ liệu liên quan trong nghiệp vụ Quản lý đặt phòng gồm những thông tin gì?
Theo tài liệu SRS của đồ án, dữ liệu liên quan đến phân hệ quản lý đặt phòng bao gồm: Mã phòng, mã khách hàng, mã check-in, mã check-out, ngày đặt phòng và loại phòng đã đặt.

5. Báo cáo thống kê của hệ thống quản lý những nội dung nào và ai có quyền xem?
Phân hệ thống kê quản lý các chỉ số về doanh thu phòng theo tháng, doanh thu dịch vụ theo tháng, tổng số lượng khách hàng và số lượng nhân viên. Chức năng xem và quản lý thống kê này chỉ dành riêng cho tài khoản thuộc nhóm quyền Admin.


Kết luận

Đồ án "Phần mềm quản lý khách sạn VinCT" của nhóm sinh viên Trường Cao đẳng FPT Polytechnic đã giải quyết trọn vẹn bài toán số hóa quy trình quản lý lưu trú khách sạn quy mô vừa và nhỏ. Thông qua việc phân tích Use Case, xây dựng SRS chi tiết, thiết kế mô hình dữ liệu ERD và lập trình trên nền tảng Java Swing kết nối SQL Server, đề tài đã tạo ra một sản phẩm phần mềm hoàn chỉnh và có tính ứng dụng thực tế. Đây là công trình học thuật tiêu biểu thể hiện phương pháp xây dựng phần mềm phân tầng chuẩn mực trong đào tạo công nghệ thông tin ứng dụng.