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

Trong bối cảnh ngành dịch vụ và du lịch ngày càng phát triển, nhu cầu tin học hóa quy trình quản trị tại các cơ sở lưu trú trở nên cấp thiết. Khảo sát thực tế từ nhóm tác giả cho thấy có sự phân hóa rõ rệt trong việc ứng dụng công nghệ thông tin theo quy mô doanh nghiệp:

  • Các khách sạn quy mô lớn (từ 2 sao trở lên, quy mô trên 50 phòng): Hầu hết đã trang bị các hệ thống phần mềm quản lý chuyên nghiệp và sẵn sàng chi trả chi phí lớn để vận hành các giải pháp toàn diện.
  • Các nhà nghỉ, khách sạn quy mô vừa và nhỏ: Đa số vẫn duy trì phương thức quản lý thủ công thông qua sổ sách hoặc bảng biểu ghi chép. Nguyên nhân chính là các phần mềm thương mại trên thị trường có chi phí bản quyền cao và tích hợp quá nhiều tính năng phức tạp vượt quá nhu cầu thực tế, dẫn đến lãng phí tài chính và tài nguyên sử dụng. Nhu cầu cốt lõi của phân khúc này chủ yếu tập trung vào việc quản lý trạng thái phòng và thanh toán nhanh chóng.

Xuất phát từ thực trạng trên, đề tài "Xây dựng phần mềm quản lý khách sạn" (sử dụng ngôn ngữ C#) được nhóm sinh viên Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh thực hiện nhằm cung cấp một công cụ quản lý tinh gọn, đáp ứng trực tiếp nhu cầu theo dõi phòng và chống thất thoát doanh thu cho các cơ sở lưu trú quy mô vừa và nhỏ.

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

  1. Mục tiêu tổng quát: 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ở lưu trú quy mô vừa và nhỏ.
  2. Nhiệm vụ cụ thể:
    • Khảo sát nhu cầu thực tế và đặc tả chi tiết các yêu cầu chức năng, phi chức năng của hệ thống.
    • Phân tích và mô hình hóa hệ thống bằng ngôn ngữ UML (Use Case Diagram, Class Diagram, kịch bản chi tiết).
    • Thiết kế cơ sở dữ liệu quan hệ hoàn chỉnh trên hệ quản trị Microsoft SQL Server 2019.
    • Lập trình giao diện và cài đặt hệ thống trên môi trường Visual Studio bằng ngôn ngữ C# theo kiến trúc 3 lớp (3-tier architecture).

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

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ quản lý phòng, lưu trú, sử dụng dịch vụ và thanh toán tại khách sạn.
  • Phạm vi ứng dụng: Mô hình khách sạn vừa và nhỏ với quy mô xây dựng khoảng 3 tầng, số lượng phòng dao động trên dưới 30 phòng.
  • Môi trường vận hành: Hệ điều hành Microsoft Windows trên máy tính cá nhân.
  • Giới hạn đề tài: Báo cáo dừng lại ở mức đồ án môn học Công nghệ phần mềm (thực hiện vào tháng 01/2021), chưa thực hiện giao dịch và chuyển giao bàn giao thực tế tại doanh nghiệp ngoài thị trường.

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

Đề tài áp dụng các nguyên lý công nghệ phần mềm chuẩn tắc trong phân tích, thiết kế và phát triển ứng dụng máy tính để bàn (Desktop Application).

Khung lý thuyết và mô hình ứng dụng

  • Phương pháp phân tích và thiết kế hướng đối tượng (OOAD): Sử dụng các biểu đồ chuẩn của ngôn ngữ mô hình hóa thống nhất (UML) để đặc tả hành vi và cấu trúc của hệ thống, bao gồm biểu đồ ca sử dụng (Use Case Diagram), biểu đồ lớp (Class Diagram) và các kịch bản tương tác.
  • Mô hình kiến trúc 3 lớp (3-Tier Architecture): Phân tách ứng dụng thành ba tầng độc lập nhằm tăng tính module hóa, dễ bảo trì và mở rộng:
    • Lớp giao diện (Presentation Layer): Xây dựng bằng Windows Forms (WinForms), đảm nhiệm việc nhận dữ liệu đầu vào, hiển thị thông tin và xác thực dữ liệu sơ bộ.
    • Tầng nghiệp vụ (Business Logic Layer): Xử lý các quy tắc nghiệp vụ, kiểm tra ràng buộc toàn vẹn và thực hiện tính toán trước khi chuyển dữ liệu xuống tầng lưu trữ.
    • Tầng dữ liệu (Data Access Layer): Đảm nhiệm việc kết nối, truy vấn và thực thi các thao tác đọc/ghi với hệ quản trị cơ sở dữ liệu.

Phương pháp nghiên cứu và công cụ sử dụng

Giai đoạn Phương pháp / Công cụ thực hiện Mục tiêu cụ thể
Khảo sát Thu thập thông tin, khảo sát thực tế và qua Internet Xác định quy trình nghiệp vụ và nhu cầu thực tế của khách sạn nhỏ
Phân tích thiết kế Phân tích hướng đối tượng, mô hình hóa UML Xây dựng bản đặc tả yêu cầu, Use Case và Class Diagram
Thiết kế CSDL Mô hình ERD, chuẩn hóa lược đồ quan hệ Thiết kế bảng dữ liệu, kiểu dữ liệu trên MS SQL Server 2019
Cài đặt hệ thống Lập trình C#, công nghệ ADO.NET, Visual Studio 2017 Xây dựng giao diện WinForms và hiện thực hóa các tầng xử lý

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 toàn bộ yêu cầu của hệ thống phần mềm quản lý khách sạn từ mức tổng quát đến chi tiết.

1. Đặc tả yêu cầu hệ thống

  • Yêu cầu chức năng:
    • Quản lý thuê phòng: Lập hợp đồng thuê phòng, lập và sắp xếp booking (đặt phòng trước), kiểm tra trạng thái phòng (trống, đang thuê, đang sửa chữa), thực hiện trả phòng và thanh toán, in ấn báo cáo doanh thu kinh doanh.
    • Quản lý khách hàng: Lưu trữ thông tin cá nhân, cập nhật danh sách, tra cứu hồ sơ khách hàng.
    • Quản lý phòng, thiết bị và dịch vụ: Thao tác thêm, xóa, sửa danh mục phòng, danh mục dịch vụ phát sinh (ăn uống, giặt ủi, thuê xe...), in ấn báo cáo trạng thái phòng và thiết bị.
    • Quản lý hệ thống: Cơ chế sao lưu (backup) và phục hồi (restore) dữ liệu, kết thúc chương trình.
  • Yêu cầu phi chức năng:
    • Hệ thống yêu cầu xác thực bằng tên đăng nhập (username) và mật khẩu (password).
    • Phân quyền người dùng chặt chẽ giữa Quản trị viên (Admin) và Nhân viên lễ tân (User) nhằm tránh các thao tác sai lệch thẩm quyền.
    • Hỗ trợ người dùng tự thay đổi mật khẩu tài khoản cá nhân.

2. Phân rã Actor và danh sách Use Case

Hệ thống xác định 3 tác nhân chính tham gia vào các tiến trình:

  1. Admin (Người quản lý): Sở hữu toàn quyền hệ thống; quản lý người dùng/nhân viên, danh mục phòng, danh mục dịch vụ, thống kê doanh thu phòng và dịch vụ, sao lưu phục hồi dữ liệu; đồng thời kế thừa toàn bộ quyền của Nhân viên.
  2. Nhân viên lễ tân: Thực hiện các chức năng tác nghiệp hàng ngày như quản lý khách hàng, lập phiếu đặt phòng, lập phiếu thuê phòng, cập nhật dịch vụ sử dụng, lập hóa đơn thanh toán và tra cứu phòng trống.
  3. Khách hàng: Tác nhân thụ động phát sinh các nhu cầu thuê phòng, thuê dịch vụ và thực hiện thanh toán qua nhân viên lễ tân.
STT Tên Use Case Actor thực hiện Mô tả tóm tắt
1 Đăng nhập / Đăng xuất Admin, Lễ tân Xác thực tài khoản người dùng và điều hướng giao diện theo phân quyền
2 QL Người dùng Admin Thêm, sửa, xóa, tra cứu thông tin nhân sự
3 QL Khách hàng Lễ tân Thêm, sửa, tra cứu khách hàng; tự động sinh mã theo cú pháp KH + Số thứ tự
4 QL Thuê phòng Lễ tân Lập phiếu thuê, cập nhật thông tin nhận phòng, tra cứu phiếu thuê
5 QL Thuê dịch vụ Lễ tân Lập phiếu dịch vụ, cập nhật số lượng sử dụng cho từng phòng
6 Lập HĐ Thanh toán Lễ tân Tổng hợp tiền phòng, tiền dịch vụ, chiết khấu khuyến mãi và kết xuất hóa đơn
7 QL Phòng Admin Thêm, sửa, xóa, tìm kiếm danh mục phòng và cấu hình giá
8 QL Dịch vụ Admin Thêm, sửa, xóa danh mục các dịch vụ đi kèm
9 Thống kê doanh thu Admin Báo cáo doanh thu theo phòng, theo dịch vụ trong khoảng thời gian tùy chọn
10 KT Tình trạng phòng Lễ tân, Admin Kiểm tra trực quan trạng thái phòng trống hoặc đang có khách lưu trú

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

Chương 2 trình bày chi tiết mô hình thực thể quan hệ (ERD), lược đồ quan hệ và từ điển dữ liệu của 12 bảng trong cơ sở dữ liệu.

1. Lược đồ cơ sở dữ liệu quan hệ

  • NHANVIEN (TENDANGNHAP, MATKHAU, HOTEN, DIACHI, SDT, EMAIL, PHANQUYEN)
  • KHACHHANG (MA_KH, HOTEN_KH, GIOITINH_KH, TINHTRANG, DIACHI_KH, SDT_KH, CMND)
  • PHONG (MA_PHONG, TEN, GIA, TINHTRANG, SONGUOITOIDA, PHONG_KM, MOTA)
  • PHIEUDATPHONG (MA_PDP, MA_KH, SONGUOI)
  • CTPHIEUDAT (MA_PDP, MA_PHONG, Ngay_DK, Ngay_Nhan, TienCoc)
  • PHIEUTHUEPHONG (MA_PTP, MA_PDP, SONGUOI)
  • CTPHIEUTHUE (MA_PTP, MA_PHONG, HOTEN_KH, CMND, NGAYNHAN, NGAYTRA_DK, NGAYTRA_TT)
  • DICHVU (MA_DV, TEN, GIA)
  • HOADONDV (MA_HOADONDV, MA_PTP, TONGTIEN)
  • CHITIETDV (MA_HOADONDV, MA_DV, SOLUONGSUDUNG, THANHTIEN)
  • GIAMGIA (MA_KM, TEN_KM, DISCOUNT, NGAY_BD, NGAY_KT)
  • HOADON (MA_HOADON, TENDANGNHAP, MA_KH, TONGTIEN, MA_PTP, NGAYLAP)
  • CHITIETHD (MA_HOADON, MA_HOADONDV, MA_PHONG, SONGAYTHUE, TIENTHUE, TIENDV, GIAMGIA_KH)

2. Chi tiết các bảng dữ liệu cốt lõi

Bảng NHANVIEN
Tên thuộc tính Kiểu dữ liệu Kích thước Mô tả
TENDANGNHAP varchar 20 Tên đăng nhập (Khóa chính)
MATKHAU varchar 20 Mật khẩu tài khoản
HOTEN nvarchar 50 Họ và tên nhân viên
DIACHI nvarchar 100 Địa chỉ cư trú
SDT varchar 10 Số điện thoại liên hệ
EMAIL varchar 50 Thư điện tử
PHANQUYEN nvarchar 10 Phân loại vai trò (Admin hoặc Users)
Bảng KHACHHANG
Tên thuộc tính Kiểu dữ liệu Kích thước Mô tả
MA_KH varchar 10 Mã định danh khách hàng (Khóa chính)
HOTEN_KH nvarchar 50 Họ và tên khách hàng
DIACHI_KH nvarchar 100 Địa chỉ liên hệ
SDT_KH varchar 10 Số điện thoại khách hàng
EMAIL_KH varchar 50 Địa chỉ email
CMND_KH varchar 13 Số chứng minh nhân dân / Căn cước
GIOITINH_KH nvarchar 6 Giới tính (Nam / Nữ)
Bảng PHONG
Tên thuộc tính Kiểu dữ liệu Kích thước Mô tả
MA_PHONG varchar 10 Mã định danh phòng (Khóa chính)
TEN nvarchar 50 Tên hoặc số hiệu phòng
GIA int - Đơn giá thuê phòng
TINHTRANG nvarchar 10 Trạng thái phòng (Trống / Đang thuê)
SONGUOITOIDA int - Sức chứa tối đa của phòng
PHONG_KM nvarchar 10 Xác định phòng thuộc diện khuyến mãi
MOTA nvarchar max Thông tin mô tả chi tiết phòng
Bảng HOADON và CHITIETHD
  • HOADON lưu trữ các thông tin chung: MA_HOADON (varchar(10)), TENDANGNHAP (varchar(20) - nhân viên thực hiện), MA_KH (varchar(10)), TONGTIEN (int), MA_PTP (varchar(10)), NGAYLAP (datetime).
  • CHITIETHD lưu trữ chi tiết từng khoản thanh toán: MA_HOADON, MA_HOADONDV, MA_PHONG, SONGAYTHUE (int), TIENTHUE (int), TIENDV (int), GIAMGIA_KH (int).

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

Chương 3 trình bày cấu trúc tổ chức mã nguồn và hiện thực hóa các giao diện chức năng trong hệ thống.


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

1. Kiến trúc phân tầng và tổ chức mã nguồn

Hệ thống được phát triển trên môi trường Microsoft Visual Studio 2017 với ngôn ngữ C# và công nghệ ADO.NET kết nối MS SQL Server 2019. Cấu trúc chương trình phân tách rõ ràng theo 3 tầng:

  • Tầng giao diện (Presentation Layer): Bao gồm tập hợp các Form giao diện Windows Forms đảm nhận tương tác người dùng:
    • FrmDangNhap.cs: Giao diện xác thực tài khoản.
    • FrmMain.cs: Giao diện điều hướng chính của hệ thống.
    • FrmDoiMatKhau.cs: Giao diện thay đổi mật khẩu người dùng.
    • FrmNhanVien.cs: Giao diện quản lý thông tin nhân viên (dành cho Admin).
    • FrmPhong.cs: Giao diện thiết lập và quản lý danh mục phòng.
    • FrmDichVu.cs: Giao diện cập nhật danh mục dịch vụ.
    • FrmKhachHang.cs: Giao diện quản lý thông tin khách lưu trú.
    • FrmPhieuDatPhong.cs: Giao diện xử lý đặt phòng trước.
    • FrmPhongTrong.cs: Giao diện trực quan hiển thị danh sách phòng chưa có người ở.
    • FrmPhongDaThue.cs: Giao diện theo dõi danh sách phòng đang có người ở.
    • FrmHoaDon.cs: Giao diện lập và in hóa đơn thanh toán tổng hợp.
    • FrmDoanhThu.cs: Giao diện thống kê doanh thu phòng theo mốc thời gian.
    • FrmDoanhThuDV.cs: Giao diện thống kê doanh thu phát sinh từ dịch vụ.
  • Tầng nghiệp vụ (Business Logic Layer): Kiểm tra tính hợp lệ của dữ liệu đầu vào (hợp lệ hóa thông tin số điện thoại, CMND, ràng buộc ngày nhận/ngày trả), tự động tính toán thành tiền cho các hóa đơn dịch vụ, tính tiền thuê phòng theo số ngày thực tế và áp dụng mã giảm giá (GIAMGIA).
  • Tầng dữ liệu (Data Access Layer): Chịu trách nhiệm thực thi các truy vấn SQL, quản lý kết nối ADO.NET, thực hiện các thao tác thêm, sửa, xóa, tra cứu và thủ tục lưu trữ trên cơ sở dữ liệu MS SQL Server 2019.

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

1. Kết quả chính đạt được

  • Hoàn thành tài liệu phân tích thiết kế phần mềm chi tiết với 10 ca sử dụng chính, bao quát đầy đủ quy trình quản lý khách sạn từ đặt phòng, nhận phòng, quản lý dịch vụ đến thanh toán và thống kê.
  • Thiết kế hoàn chỉnh cơ sở dữ liệu quan hệ gồm 12 bảng thực thể và bảng liên kết, đảm bảo tính toàn vẹn dữ liệu cho hoạt động lưu trú và tính tiền.
  • Xây dựng thành công ứng dụng Desktop trên nền C# WinForms với 12 giao diện chức năng chính, tích hợp hệ thống phân quyền 2 cấp (Admin và Nhân viên lễ tân).
  • Triển khai cơ chế sinh mã khách hàng tự động (KH + số thứ tự) và hệ thống hóa đơn liên kết giữa tiền thuê phòng, phí dịch vụ phát sinh và các chương trình giảm giá.

2. Đóng góp của đề tài

  • Tính thực tiễn cho phân khúc vừa và nhỏ: Đưa ra giải pháp phần mềm tập trung chính xác vào nhu cầu quản lý cốt lõi của các khách sạn quy mô khoảng 30 phòng, loại bỏ các tính năng dư thừa của các gói phần mềm lớn, từ đó tối ưu hóa thao tác cho người quản lý.
  • Tính chính xác và tốc độ xử lý: Giảm thiểu sai sót trong quy trình ghi chép sổ sách thủ công, hỗ trợ lễ tân cập nhật trạng thái phòng trống/đang thuê theo thời gian thực để không bỏ lỡ cơ hội cho thuê phòng.

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

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

  • Đề tài dừng lại ở quy mô báo cáo môn học Công nghệ phần mềm, chưa tiến hành thử nghiệm trực tiếp trên môi trường kinh doanh thực tế hoặc bàn giao cho các khách sạn ngoài thị trường.
  • Ứng dụng bị giới hạn môi trường vận hành trên hệ điều hành Microsoft Windows, hoạt động đơn máy và chưa hỗ trợ mô hình quản lý từ xa qua nền tảng Web hoặc ứng dụng di động.
  • Quy mô dữ liệu và quy trình nghiệp vụ mới chỉ tối ưu hóa cho cơ sở lưu trú dưới 30 phòng và 3 tầng, chưa hỗ trợ các nghiệp vụ phức tạp của khách sạn quy mô lớn (như quản lý chuỗi phòng, đặt phòng trực tuyến đa kênh, quản lý kho hàng chi tiết).

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

  • Tiến hành triển khai thực nghiệm tại các nhà nghỉ, khách sạn nhỏ để thu thập phản hồi người dùng thực tế và hoàn thiện các lỗi phát sinh.
  • Mở rộng hệ thống kết nối mạng cục bộ (LAN) hoặc chuyển đổi kiến trúc sang nền tảng Web/Cloud để hỗ trợ truy cập đa thiết bị.

Giá trị tham khảo

Tài liệu là nguồn tư liệu tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin / Kỹ thuật phần mềm: Tham khảo mẫu báo cáo môn học Công nghệ phần mềm hoàn chỉnh, từ việc lập ma trận đặc tả ca sử dụng (Use Case Specification), xây dựng biểu đồ lớp (Class Diagram) đến kỹ thuật thiết kế cơ sở dữ liệu quan hệ cho bài toán quản lý.
  • Người phát triển ứng dụng quản lý WinForms: Cung cấp tài liệu tham khảo thực tế về cách tổ chức ứng dụng Windows Forms theo mô hình 3 lớp sử dụng C# và ADO.NET kết nối MS SQL Server.

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

1. Hệ thống phần mềm này được thiết kế hướng đến đối tượng khách sạn nào?

Hệ thống được thiết kế chuyên biệt cho các nhà nghỉ hoặc 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ằm giải quyết nhu cầu quản lý phòng và thanh toán cốt lõi với chi phí vận hành thấp.

2. Hệ thống phân quyền cho những tác nhân nào và quyền hạn khác nhau ra sao?

Hệ thống phân chia 2 vai trò chính:

  • Admin: Quản lý toàn bộ nhân viên, thiết lập danh mục phòng, danh mục dịch vụ, xem báo cáo doanh thu phòng và dịch vụ, sao lưu và phục hồi dữ liệu hệ thống.
  • Nhân viên lễ tân: Quản lý danh sách khách hàng, lập phiếu đặt phòng, phiếu thuê phòng, ghi nhận dịch vụ phát sinh, kiểm tra phòng trống và kết xuất hóa đơn thanh toán.

3. Quy tắc sinh mã khách hàng tự động trong hệ thống hoạt động như thế nào?

Hệ thống áp dụng quy tắc tạo mã tự động theo công thức: Mã khách hàng = KH + Mã số (ví dụ: khách hàng có số thứ tự là 5 sẽ được tự động gán mã KH05), giúp chuẩn hóa việc quản lý mã định danh khách hàng mà không cần lễ tân nhập thủ công.

4. Cơ sở dữ liệu của phần mềm quản lý việc tính tiền phòng và dịch vụ qua những bảng nào?

Cơ sở dữ liệu quản lý qua các bảng: PHONG, DICHVU, PHIEUTHUEPHONG, CTPHIEUTHUE, HOADONDV, CHITIETDV, GIAMGIA, HOADON và CHITIETHD. Khi thanh toán, bảng CHITIETHD tổng hợp các thông tin SONGAYTHUE, TIENTHUE, TIENDV và GIAMGIA_KH để tính TONGTIEN lưu trong bảng HOADON.

5. Kiến trúc phần mềm và các công nghệ chính được nhóm tác giả sử dụng là gì?

Phần mềm được xây dựng theo kiến trúc 3 lớp (Presentation Layer, Business Logic Layer, Data Access Layer) trên môi trường Microsoft Visual Studio 2017, sử dụng ngôn ngữ lập trình C# (Windows Forms), công nghệ truy xuất dữ liệu ADO.NET và hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2019.


Kết luận

Đồ án môn học "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 đã hoàn thành việc khảo sát, phân tích thiết kế và hiện thực hóa một ứng dụng quản lý lưu trú trên nền tảng Windows. Ứng dụng tập trung giải quyết bài toán quản lý phòng, sử dụng dịch vụ và thanh toán cho các khách sạn quy mô vừa và nhỏ (khoảng 30 phòng) bằng kiến trúc 3 lớp trên nền C# và SQL Server 2019. Mặc dù còn dừng lại ở phạm vi đồ án môn học và chưa triển khai thực tế đa nền tảng, công trình đã thể hiện đầy đủ quy trình kỹ thuật phần mềm chuẩn mực và có giá trị tham khảo học thuật rõ ràng cho sinh viên chuyên ngành.