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

Trong bối cảnh ngành dịch vụ - du lịch tăng trưởng mạnh mẽ, việc ứng dụng công nghệ thông tin vào công tác quản lý khách sạn đã trở thành một nhu cầu thiết yếu. Khảo sát thực tế được nhóm tác giả thực hiện cho thấy sự phân hóa rõ rệt trong việc ứng dụng phần mềm tại các cơ sở lưu trú:

  • Khách sạn quy mô lớn (từ 2 sao trở lên, số lượng trên 50 phòng): Đa phần đã trang bị các hệ thống phần mềm quản lý toàn diện với mức đầu tư kinh phí lớn.
  • Khách sạn và nhà nghỉ quy mô vừa và nhỏ: Phần lớn vẫn duy trì phương thức quản lý thủ công qua sổ sách hoặc các bảng biểu đơn giản. Những cơ sở này có nhu cầu quản lý không quá phức tạp, trọng tâm chủ yếu xoay quanh việc theo dõi tình trạng phòng và thực hiện thanh toán. Việc đầu tư các gói phần mềm thương mại đa chức năng dẫn đến sự lãng phí về mặt chi phí lẫn tài nguyên tính năng không sử dụng đến.

Xuất phát từ thực tiễn trên, đề tài "Xây dựng phần mềm quản lý khách sạn" được nhóm sinh viên ngành Công nghệ Thông tin thuộc Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh thực hiện nhằm xây dựng một giải pháp phần mềm chuyên biệt bằng ngôn ngữ C#, tập trung vào việc cập nhật và xử lý thông tin phòng nhanh chóng, tối ưu hóa năng lực kinh doanh phòng cho các cơ sở lưu trú vừa và nhỏ.

Mục tiêu của đề tài:

  1. Xây dựng hoàn chỉnh một chương trình ứng dụng quản lý khách sạn có khả năng đưa vào triển khai thực nghiệm cho các cơ sở có quy mô vừa và nhỏ.
  2. Tin học hóa các quy trình nghiệp vụ cốt lõi: quản lý nhân viên, quản lý khách hàng, theo dõi phòng, đặt - nhận phòng, quản lý dịch vụ đi kèm và lập hóa đơn thanh toán.

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

  • Đối tượng nghiên cứu: Quy trình quản lý nghiệp vụ khách sạn quy mô vừa và nhỏ.
  • Phạm vi không gian và quy mô áp dụng: Mô hình khách sạn có quy mô khoảng 3 tầng với số lượng trên dưới 30 phòng.
  • Môi trường vận hành: Ứng dụng desktop vận hành trên nền tảng hệ điều hành Microsoft Windows.
  • Thời gian và bối cảnh thực hiện: Đồ án môn học Công nghệ phần mềm (Mã lớp: SOEN330679_01), hoàn thành vào tháng 01/2021 tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh dưới sự hướng dẫn của TS. Nguyễn Trường Hải.

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

Đề tài sử dụng quy trình phát triển phần mềm theo định hướng công nghệ phần mềm hiện đại với các phương pháp và công cụ cụ thể:

  • Phương pháp khảo sát: Thu thập, phân tích thông tin và tình hình ứng dụng phần mềm quản lý khách sạn thông qua khảo sát dữ liệu trên môi trường Internet.
  • Phương pháp phân tích và thiết kế: Áp dụng phương pháp phân tích thiết kế hướng đối tượng (Object-Oriented Analysis and Design - OOAD), kết hợp ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng hệ thống biểu đồ Use Case, biểu đồ lớp (Class Diagram) và biểu đồ tuần tự.
  • Phương pháp thiết kế và xây dựng cơ sở dữ liệu: Mô hình hóa thực thể quan hệ (ERD), chuẩn hóa quan hệ và cài đặt cơ sở dữ liệu trên hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server 2019.
  • Phương pháp cài đặt và công nghệ phát triển: Sử dụng ngôn ngữ lập trình C# trên nền tảng .NET Framework, công nghệ kết nối và truy xuất dữ liệu ADO.NET, kết hợp môi trường phát triển tích hợp (IDE) Microsoft Visual Studio 2017.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc 3 lớp (3-tier architecture) nhằm phân tách rõ ràng giữa giao diện, xử lý nghiệp vụ và truy xuất dữ liệu, giúp mã nguồn tường minh và dễ bảo trì.

+-------------------------------------------------------------+
|              Lớp Giao diện (Presentation Layer)             |
|   Các Form Windows (.cs): FrmMain, FrmPhong, FrmHoaDon...   |
+-------------------------------------------------------------+
+-------------------------------------------------------------+
|               Tầng Nghiệp vụ (Business Layer)               |
|      Kiểm tra ràng buộc, tính hợp lệ và xử lý logic         |
+-------------------------------------------------------------+
+-------------------------------------------------------------+
|                Tầng Dữ liệu (Data Access Layer)             |
|        Kết nối ADO.NET, thực thi truy vấn SQL Server        |
+-------------------------------------------------------------+
+-------------------------------------------------------------+
|         Hệ quản trị CSDL: Microsoft SQL Server 2019         |
+-------------------------------------------------------------+

Kiến trúc các tầng trong chương trình

  1. Lớp giao diện (Presentation Layer): Bao gồm các biểu mẫu WinForms thực hiện nhiệm vụ tiếp nhận dữ liệu nhập từ người dùng, hiển thị thông tin phản hồi và kiểm tra sơ bộ tính đúng đắn trước khi chuyển tiếp xuống tầng nghiệp vụ.
  2. Tầng nghiệp vụ (Business Logic Layer): Tiếp nhận yêu cầu từ lớp giao diện, kiểm tra các quy tắc nghiệp vụ, tính toàn vẹn dữ liệu, thực hiện các phép tính toán doanh thu/giảm giá và điều phối dữ liệu qua lại với tầng truy xuất dữ liệu.
  3. Tầng dữ liệu (Data Access Layer): Sử dụng ADO.NET để kết nối trực tiếp với Microsoft SQL Server 2019, thực thi các câu lệnh truy vấn, thêm, xóa, sửa dữ liệu.

Danh mục các lớp giao diện chính

Chương trình hiện thực hóa các chức năng thông qua danh sách các file giao diện WinForms cụ thể:

Tên File Lớp Giao Diện Chức Năng Nghiệp Vụ Tương Ứng
FrmDangNhap.cs Xác thực tài khoản người dùng truy cập hệ thống
FrmMain.cs Màn hình giao diện chính điều hướng toàn bộ hệ thống
FrmDoiMatKhau.cs Cho phép người dùng tự cập nhật mật khẩu cá nhân
FrmNhanVien.cs Quản lý thông tin tài khoản và danh sách nhân viên
FrmPhong.cs Quản lý danh mục thông tin phòng (thêm, xóa, sửa, tra cứu)
FrmPhongTrong.cs Theo dõi và lọc danh sách các phòng chưa có người ở
FrmPhongDaThue.cs Quản lý danh sách các phòng hiện đang có khách lưu trú
FrmPhieuDatPhong.cs Lập và cập nhật thông tin phiếu đặt phòng trước
FrmDichVu.cs Quản lý danh mục các dịch vụ của khách sạn
FrmHoaDon.cs Quản lý danh sách khách hàng và lập hóa đơn thanh toán
FrmDoanhThu.cs Báo cáo thống kê tổng hợp doanh thu phòng theo thời gian
FrmDoanhThuDV.cs Báo cáo thống kê doanh thu từ các dịch vụ phát sinh

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

Chương 1: Phân tích thiết kế hệ thống

Chương này tập trung vào việc mô hình hóa yêu cầu và xây dựng kịch bản tương tác của toàn bộ hệ thống:

  • Đặc tả yêu cầu:
    • Yêu cầu chức năng: Quản lý thuê phòng (hợp đồng, booking, sắp xếp, thanh toán, báo cáo doanh thu); quản lý thông tin khách hàng; quản lý danh mục phòng, thiết bị, dịch vụ; quản lý dữ liệu hệ thống (sao lưu, phục hồi).
    • Yêu cầu phi chức năng: Phân quyền chặt chẽ giữa các vai trò người dùng (Admin, Nhân viên lễ tân); cấp phát tài khoản định danh (username, password); bảo mật dữ liệu và cho phép người dùng tự đổi mật khẩu cá nhân.
  • Xác định tác nhân (Actors):
    • Admin: Toàn quyền quản trị người dùng, quản lý danh mục phòng, quản lý dịch vụ, xem thống kê báo cáo doanh thu, sao lưu/phục hồi dữ liệu và kế thừa toàn bộ quyền hạn của nhân viên lễ tân.
    • Nhân viên lễ tân: Thực hiện quản lý khách hàng, lập phiếu thuê phòng, cập nhật dịch vụ sử dụng và xuất hóa đơn thanh toán.
    • Khách hàng: Tác nhân gián tiếp thông qua các giao dịch thuê phòng, thuê dịch vụ và thanh toán.
  • Đặc tả Use Case chi tiết: Xây dựng đầy đủ các luồng sự kiện (luồng chính, luồng phụ, ngoại lệ) cho các nhóm chức năng:
    • Nhóm quản lý phòng & dịch vụ: Thêm, sửa, xóa, tìm kiếm phòng và dịch vụ.
    • Nhóm quản lý người dùng: Thêm, cập nhật quyền hạn, xóa và tra cứu tài khoản nhân viên.
    • Nhóm báo cáo thống kê: Thống kê doanh thu phòng, doanh thu dịch vụ theo mốc thời gian tra cứu.
    • Nhóm quản lý khách hàng: Tự động sinh mã khách hàng theo nguyên tắc định dạng KH kèm mã số thứ tự (ví dụ: KH05 cho khách hàng số 5).

Chương 2: Thiết kế cơ sở dữ liệu

Chương này mô tả chi tiết mô hình dữ liệu quan hệ gồm 11 bảng được thiết kế trên hệ quản trị Microsoft SQL Server 2019:

Tên Bảng Khóa Chính Mô Tả Ý Nghĩa Nghiệp Vụ
NHANVIEN TENDANGNHAP Lưu trữ thông tin định danh, mật khẩu, thông tin cá nhân và phân quyền (PHANQUYEN)
KHACHHANG MA_KH Lưu thông tin khách hàng (HOTEN_KH, CMND_KH, SDT_KH, DIACHI_KH, EMAIL_KH, GIOITINH_KH)
PHONG MA_PHONG Thông tin phòng, giá thuê, tình trạng (TINHTRANG), số người tối đa, cờ khuyến mãi (PHONG_KM)
PHIEUDATPHONG MA_PDP Lưu thông tin đặt phòng trước của khách hàng (MA_KH, SONGUOI)
CTPHIEUDAT MA_PDP, MA_PHONG Chi tiết phòng đặt, ngày đăng ký (Ngay_DK), ngày nhận (Ngay_Nhan), tiền cọc (TienCoc)
PHIEUTHUEPHONG MA_PTP Phiếu tiếp nhận nhận phòng thực tế, liên kết MA_PDP và MA_KH
CTPHIEUTHUE MA_PTP, MA_PHONG Chi tiết thuê phòng, lưu ngày nhận, ngày trả dự kiến (NGAYTRA_DK), ngày trả thực tế (NGAYTRA_TT)
DICHVU MA_DV Danh mục dịch vụ (Tên dịch vụ TEN, đơn giá GIA)
HOADONDV MA_HOADONDV Hóa đơn dịch vụ phát sinh gắn với phiếu thuê phòng (MA_PTP), tổng tiền dịch vụ
CHITIETDV MA_HOADONDV, MA_DV Chi tiết dịch vụ sử dụng, số lượng dùng (SOLUONGSUDUNG), thành tiền (THANHTIEN)
HOADON MA_HOADON Hóa đơn tổng kết thanh toán khi trả phòng, lưu TENDANGNHAP lập, MA_KH, MA_PTP, TONGTIEN, NGAYLAP
CTHOADON MA_HOADON, MA_PHONG Chi tiết tính tiền: số ngày thuê, tiền thuê phòng, tiền dịch vụ, giảm giá khách hàng
GIAMGIA MA_KM Danh mục mã khuyến mãi, tỷ lệ chiết khấu (DISCOUNT), ngày bắt đầu và kết thúc

Chương 3: Cài đặt chương trình

Chương này trình bày quá trình chuyển hóa thiết kế thành phần mềm chạy trên thực tế:

  • Môi trường phát triển: Lựa chọn Microsoft Visual Studio 2017 nhờ các tính năng hỗ trợ gỡ lỗi mạnh mẽ, điều hướng mã nguồn (Go To Definition) và quản lý gói thư viện tiện lợi qua NuGet.
  • Công nghệ nền tảng: Sử dụng C# kết hợp ADO.NET giúp tương tác tối ưu với cơ sở dữ liệu SQL Server, hỗ trợ triển khai chuẩn xác mô hình 3 lớp.
  • Xây dựng giao diện: Cài đặt toàn bộ hệ thống giao diện người dùng bằng WinForms, hoàn thiện các màn hình đăng nhập, sơ đồ trạng thái phòng trực quan (phòng trống, phòng đang ở), giao diện gọi dịch vụ, lập phiếu đặt phòng, bảng biểu thanh toán và thống kê doanh thu.

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

Kết quả chính

  1. Hoàn thiện giải pháp phần mềm: Xây dựng thành công ứng dụng "Quản lý khách sạn với C#" vận hành trên hệ điều hành Windows, đáp ứng đầy đủ các quy trình quản lý lưu trú cơ bản.
  2. Chuẩn hóa cơ sở dữ liệu: Thiết kế và liên kết logic 11 bảng dữ liệu, đảm bảo tính toàn vẹn quan hệ giữa đặt phòng, nhận phòng, sử dụng dịch vụ và kết xuất hóa đơn thanh toán.
  3. Phân quyền và bảo mật: Tách biệt rõ ràng phạm vi thao tác giữa người quản lý (Admin) và nhân viên tiếp tân (Users), có cơ chế kiểm tra tính hợp lệ dữ liệu đầu vào và tự động sinh mã khách hàng.

Đóng góp thực tiễn

  • Đưa ra một giải pháp công nghệ vừa đủ, gọn nhẹ cho phân khúc nhà nghỉ và khách sạn quy mô nhỏ (dưới 30 phòng), giải quyết tình trạng lãng phí tính năng và kinh phí khi sử dụng các phần mềm thương mại cồng kềnh.
  • Cung cấp tài liệu phân tích thiết kế hệ thống hoàn chỉnh từ Use Case, Class Diagram, ERD đến hiện thực hóa mã nguồn 3 lớp trên C#/WinForms.

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

  • Hạn chế:
    • Đề tài được thực hiện trong khuôn khổ đồ án môn học với giới hạn về mặt thời gian và kinh nghiệm thực tế, do đó chưa triển khai giao dịch và bàn giao chạy thực tế tại một khách sạn ngoài đời thực.
    • Phần mềm chỉ hỗ trợ cài đặt cục bộ trên hệ điều hành Microsoft Windows, chưa tích hợp nền tảng web hoặc ứng dụng di động.
    • Quy mô hệ thống mới dừng lại ở mức hỗ trợ mô hình khách sạn khoảng 3 tầng với trên dưới 30 phòng.
  • Hướng phát triển:
    • Mở rộng kết nối và thử nghiệm trực tiếp tại các cơ sở lưu trú thực tế để hiệu chỉnh các phát sinh nghiệp vụ.
    • Nâng cấp phần mềm để hỗ trợ quy mô phòng lớn hơn và tích hợp các nền tảng đa thiết bị.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo phù hợp cho:

  • Sinh viên chuyên ngành Công nghệ phần mềm, Hệ thống thông tin hoặc Công nghệ thông tin đang thực hiện đồ án môn học phân tích thiết kế hệ thống hoặc lập trình ứng dụng desktop.
  • Lập trình viên đang tìm hiểu phương pháp thiết kế phần mềm quản lý theo mô hình 3 lớp sử dụng C#, WinForms, ADO.NET và MS SQL Server 2019.
  • Người nghiên cứu có thể tham khảo trực tiếp cấu trúc phân rã Use Case, bảng đặc tả kịch bản tương tác và thiết kế cơ sở dữ liệu quan hệ cho bài toán quản lý lưu trú.

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

1. Phần mềm được thiết kế dành riêng cho đối tượng khách sạn nào?

Phần mềm hướng tới các nhà nghỉ, khách sạn có quy mô vừa và nhỏ (khoảng 3 tầng, quy mô trên dưới 30 phòng) - những nơi chủ yếu có nhu cầu theo dõi tình trạng phòng và thanh toán nhanh chóng, tránh lãng phí chi phí mua các phần mềm thương mại phức tạp.

2. Hệ thống phân chia quyền hạn của các Actor như thế nào?

Hệ thống xác định hai nhóm quyền chính trên giao diện:

  • Admin (Quản trị viên): Có toàn quyền thêm, sửa, xóa người dùng, phòng, dịch vụ, xem báo cáo doanh thu và sao lưu dữ liệu.
  • Nhân viên lễ tân: Chỉ thao tác trên các nghiệp vụ tiếp đón khách: tra cứu phòng, lập phiếu thuê phòng, cập nhật dịch vụ sử dụng, xem/sửa thông tin khách hàng và lập hóa đơn thanh toán (không có quyền xóa khách hàng hoặc chỉnh sửa cấu hình hệ thống).

3. Mã khách hàng trong cơ sở dữ liệu được quy định sinh tự động như thế nào?

Mã khách hàng được sinh tự động theo nguyên tắc tiền tố KH kết hợp với số thứ tự định danh (ví dụ: khách hàng có mã số thứ tự là 5 sẽ được cấp mã định danh là KH05).

4. Cơ sở dữ liệu của phần mềm sử dụng những bảng nào để xử lý việc đặt và thuê phòng?

Quy trình đặt và thuê phòng được tách bạch qua các bảng:

  • PHIEUDATPHONG và CTPHIEUDAT: Xử lý việc khách đặt phòng trước, ghi nhận ngày đăng ký, ngày nhận dự kiến và tiền đặt cọc.
  • PHIEUTHUEPHONG và CTPHIEUTHUE: Xử lý khi khách đến nhận phòng lưu trú thực tế, theo dõi ngày nhận, ngày trả dự kiến và ngày trả phòng thực tế.

Kết luận

Đồ án "Xây dựng phần mềm quản lý khách sạn" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh đã giải quyết tốt bài toán tin học hóa quản lý cho các cơ sở lưu trú quy mô vừa và nhỏ. Bằng việc kết hợp phương pháp phân tích hướng đối tượng UML, kiến trúc phần mềm 3 lớp và hệ quản trị cơ sở dữ liệu MS SQL Server 2019, phần mềm đã hiện thực hóa đầy đủ các chức năng từ theo dõi phòng trống, gọi dịch vụ đến xuất hóa đơn và thống kê doanh thu. Đây là tài liệu đồ án mang tính chuẩn mực về mặt quy trình kỹ thuật phần mềm, có giá trị tham khảo thiết thực cho học tập và nghiên cứu ứng dụng.