Giới thiệu dự án
Ngành du lịch và khách sạn (Hospitality Industry) đóng vai trò mũi nhọn trong nền kinh tế số hiện nay. Theo báo cáo thống kê từ Tổng cục Du lịch, tốc độ tăng trưởng lượng khách lưu trú tại các trung tâm đô thị lớn như Hà Nội và TP. Hồ Chí Minh đạt mức bình quân 18–22%/năm giai đoạn 2022–2025. Tuy nhiên, hơn 65% khách sạn vừa và nhỏ (phân khúc 2–3 sao, khách sạn boutique) vẫn đang vận hành các tác nghiệp quản trị bằng phương pháp thủ công hoặc bảng tính rời rạc.
Khách sạn Hanoi Golden Hotel (địa chỉ tại số 12 Ngõ Gạch, phường Hàng Buồm, quận Hoàn Kiếm, TP. Hà Nội) là mô hình kinh doanh lưu trú 3 sao tiêu biểu tại khu phố cổ, sở hữu quy mô kiến trúc 5 tầng với 32 phòng nghỉ cao cấp được phân bổ thành 4 hạng phòng chính: Suite, Deluxe, Superior, và Standard. Hiện trạng công tác vận hành tại cơ sở đang đối mặt với các nút thắt cổ chai (bottlenecks) nghiêm trọng:
[Khách Check-in] ──> [Ghi sổ giấy / Phôi in] ──> [Tra cứu bảng buồng phòng thủ công]
│
▼ (Nguy cơ xếp trùng phòng)
[Khách Check-out] ──> [Thu thập giấy dịch vụ lẻ] ──> [Tính toán tay / Lập hóa đơn]
│
▼ (Thời gian xử lý: 15-20 phút/khách)
[Báo cáo doanh thu cuối tháng] ◄── [Mất 5-7 ngày đối soát thủ công hàng nghìn hóa đơn]
Điểm nghẽn vận hành (Problem Statement & Pain Points)
- Tắc nghẽn quy trình Check-in/Check-out: Lễ tân mất từ 12–18 phút cho một lượt làm thủ tục do phải đối soát giấy tờ, kiểm tra chéo sổ sách tình trạng phòng và ghi biên nhận dịch vụ giặt là, ẩm thực thủ công.
- Rủi ro xung đột buồng phòng (Overbooking / Double Booking): Việc cập nhật trạng thái phòng bằng bảng giấy ghi chú dẫn đến tỷ lệ xếp nhầm phòng hoặc trùng lịch lên đến 8.5% vào các mùa cao điểm du lịch.
- Thất thoát doanh thu và sai số hóa đơn: Việc tổng hợp chi phí dịch vụ phát sinh (minibar, giặt ủi, ẩm thực buffet, cước phát sinh) từ các bộ phận buồng phòng gửi về quầy lễ tân qua giấy viết tay gây sai lệch doanh thu từ 3–5%/tháng.
- Chậm trễ trong báo cáo quản trị: Ban quản lý mất từ 5–7 ngày vào cuối mỗi tháng để thống kê doanh thu, hiệu suất sử dụng buồng phòng (Occupancy Rate) và phân tích thị trường khách hàng.
Mục tiêu dự án
- Mục tiêu 1: Xây dựng phần mềm quản lý khách sạn tập trung, tự động hóa 100% quy trình tiếp nhận đặt phòng (Reservation), nhận phòng (Check-in), trả phòng (Check-out) và thanh toán (Billing).
- Mục tiêu 2: Thiết kế cơ sở dữ liệu quan hệ đồng bộ, quản lý chi tiết 32 buồng phòng, thông tin khách hàng, danh mục dịch vụ và phân quyền người dùng chặt chẽ.
- Mục tiêu 3: Rút ngắn thời gian xử lý giao dịch tại quầy lễ tân xuống dưới 3 phút/lượt, triệt tiêu 100% tình trạng trùng phòng (Double Booking).
- Mục tiêu 4: Tự động hóa quá trình lập hóa đơn thanh toán kèm phụ phí linh hoạt (quy định trả phòng trễ: phụ thu 50% trước 17h00 và 100% sau 17h00).
- Mục tiêu 5: Tích hợp module báo cáo thống kê động, cho phép kết xuất số liệu doanh thu, công suất buồng phòng theo thời gian thực (Real-time) chỉ với 01 thao tác nhấp chuột.
Phương pháp tiếp cận và kết quả kỳ vọng
Dự án tiếp cận bài toán theo hướng chuẩn hóa nghiệp vụ khách sạn chuẩn quốc tế, ứng dụng mô hình kiến trúc phân tầng (N-Tier Architecture) kết hợp hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2019 nhằm đảm bảo tính toàn vẹn dữ liệu (ACID), an toàn bảo mật và khả năng mở rộng linh hoạt.
| Chỉ số đo lường (KPI) |
Hiện trạng thủ công |
Mục tiêu sau triển khai phần mềm |
Mức cải thiện |
| Thời gian Check-in trung bình |
15.0 phút |
2.5 phút |
Giảm 83.3% |
| Thời gian Check-out & Lập bill |
18.0 phút |
3.0 phút |
Giảm 83.3% |
| Tỷ lệ xung đột/xếp trùng phòng |
8.5% |
0.0% (Khóa tự động) |
Triệt tiêu hoàn toàn |
| Thời gian lập báo cáo doanh thu |
5 – 7 ngày (120h) |
< 2 giây (01 click) |
Nhanh hơn 99.9% |
| Độ chính xác số liệu thanh toán |
94.5% |
99.99% |
Tăng 5.49% |
Phạm vi và giới hạn dự án
- Phạm vi (In-Scope): Quản lý buồng phòng, quản lý thông tin khách hàng lưu trú, quản lý giao dịch thuê phòng/trả phòng, quản lý sử dụng dịch vụ nội bộ (giặt ủi, ăn uống, minibar, đón tiễn sân bay), lập hóa đơn thanh toán, báo cáo thống kê doanh thu và phân quyền người dùng.
- Giới hạn (Out-of-Scope): Không can thiệp vào nghiệp vụ quản lý nhân sự chuyên sâu (tính lương, chấm công chi tiết qua máy chấm công sinh trắc học), không tích hợp cổng thanh toán trực tuyến quốc tế và hệ thống kiểm soát điện thông minh (IoT Room Control).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
MA TRẬN ĐÁNH GIÁ GIẢI PHÁP
100 ┌─────────────────────────────────────────────────────────────┐
│ [EzCloud] │
│ │
Chi phí │ [Smile PMS] │
triển khai │ │
(Triệu VNĐ)│ [Phần mềm Hanoi Golden Hotel] │
│ (Tối ưu chi phí & nghiệp vụ) │
│ [Sổ sách giấy] │
0 └─────────────────────────────────────────────────────────────┘
0 (Kém) Hiệu quả tùy biến 10 (Cao)
| Tiêu chí so sánh |
Quản lý sổ sách truyền thống |
Smile PMS / EzCloudhotel |
Phần mềm Hanoi Golden Hotel |
| Chi phí đầu tư ban đầu |
Rất thấp (giấy in, sổ sách) |
Rất cao (50 – 120 triệu VNĐ) |
Thấp (Tối ưu theo ngân sách dự án 46.8M) |
| Tốc độ tra cứu thông tin |
Chậm (5–10 phút/hồ sơ) |
Nhanh (< 1s) |
Rất nhanh (< 0.5s trên mạng nội bộ) |
| Độ phức tạp khi sử dụng |
Đơn giản nhưng dễ sai sót |
Phức tạp, cần đào tạo 2–4 tuần |
Giao diện tối ưu, làm quen sau 1–2 buổi |
| Khả năng tùy biến nghiệp vụ |
Không thể tự động |
Khó can thiệp logic riêng |
Tùy biến hoàn toàn theo chính sách khách sạn |
| Tính toàn vẹn dữ liệu |
Kém (mối mọt, thất lạc) |
Cao (Cloud/On-premise) |
Tuyệt đối (RDBMS SQL Server 2019) |
Phân tích yêu cầu theo mô hình MoSCoW
- Must Have (Bắt buộc phải có):
- Module xác thực người dùng và phân quyền nhóm (Quản lý, Lễ tân).
- Module quản lý phòng: Trạng thái buồng phòng (Trống, Đang thuê, Đang sửa chữa, Đã đặt).
- Module Check-in/Check-out: Khóa phòng tự động khi khách nhận phòng, tự động giải phóng phòng khi thanh toán.
- Module tính toán chi phí tự động: Áp dụng công thức phụ thu quá giờ và chi phí dịch vụ đính kèm.
- Should Have (Nên có):
- Module tìm kiếm nâng cao đa tiêu chí (theo ngày đến, ngày đi, loại phòng Suite/Deluxe/Superior/Standard, khoảng giá).
- Kết xuất báo cáo doanh thu dưới dạng biểu đồ và file in ấn (hóa đơn PDF/Excel).
- Could Have (Có thể có):
- Quản lý chính sách khách hàng thân thiết (Loyalty Program), tích lũy điểm thưởng.
- Giao diện hỗ trợ song ngữ (Tiếng Việt - Tiếng Anh).
- Won't Have (Chưa phát triển ở giai đoạn này):
- Kết nối hệ thống Channel Manager đồng bộ OTA (Agoda, Booking.com) thời gian thực.
Thiết kế hệ thống
Kiến trúc hệ thống tổng thể (Component Architecture)
graph TD
subgraph UI_Layer ["Tầng Giao Diện (Presentation Layer)"]
UI1["Giao diện Đăng nhập / Phân quyền"]
UI2["Giao diện Quản lý Sơ đồ buồng phòng"]
UI3["Giao diện Lễ tân (Check-in / Check-out)"]
UI4["Giao diện Dịch vụ & Hóa đơn"]
UI5["Giao diện Thống kê & Báo cáo"]
end
subgraph BLL_Layer ["Tầng Nghiệp Vụ (Business Logic Layer - BLL)"]
BLL1["Auth & Permission Service"]
BLL2["Room Status & Allocation Engine"]
BLL3["Booking & Reservation Manager"]
BLL4["Billing & Surcharge Calculator"]
BLL5["Reporting Engine"]
end
subgraph DAL_Layer ["Tầng Truy Cập Dữ Liệu (Data Access Layer - DAL)"]
DAL1["Database Connection Provider"]
DAL2["SQL Query / Stored Procedures Executor"]
DAL3["Data Mapping & Entity Hydrator"]
end
subgraph DB_Layer ["Tầng Lưu Trữ (Database Layer - SQL Server 2019)"]
DB1[("tbl_NhanVien")]
DB2[("tbl_KhachHang")]
DB3[("tbl_Phong & tbl_LoaiPhong")]
DB4[("tbl_PhieuThue & tbl_ChiTietDichVu")]
DB5[("tbl_HoaDon")]
end
UI_Layer --> BLL_Layer
BLL_Layer --> DAL_Layer
DAL_Layer --> DB_Layer
Thiết kế cơ sở dữ liệu quan hệ (Database Schema Design)
Hệ thống được thiết kế chuẩn hóa đạt chuẩn 3NF (Third Normal Form) nhằm loại bỏ dư thừa dữ liệu và đảm bảo toàn vẹn tham chiếu.
-- DDL: Tạo cấu trúc bảng quản lý danh mục phòng và loại phòng
CREATE TABLE tbl_LoaiPhong (
MaLoaiPhong VARCHAR(10) PRIMARY KEY,
TenLoaiPhong NVARCHAR(50) NOT NULL, -- Standard, Superior, Deluxe, Suite
DonGiaTieuChuan DECIMAL(18, 2) NOT NULL,
SoNguoiToiDa INT DEFAULT 2,
MoTa NVARCHAR(255)
);
CREATE TABLE tbl_Phong (
MaPhong VARCHAR(10) PRIMARY KEY,
TenPhong NVARCHAR(50) NOT NULL,
MaLoaiPhong VARCHAR(10) NOT NULL,
Tang INT NOT NULL,
TrangThai NVARCHAR(20) DEFAULT N'Trống', -- Trống, Đang ở, Đã đặt, Bảo trì
CONSTRAINT FK_Phong_LoaiPhong FOREIGN KEY (MaLoaiPhong) REFERENCES tbl_LoaiPhong(MaLoaiPhong)
);
CREATE TABLE tbl_KhachHang (
MaKhachHang VARCHAR(10) PRIMARY KEY,
HoTen NVARCHAR(100) NOT NULL,
SoCMND_CCCD_Passport VARCHAR(25) UNIQUE NOT NULL,
SoDienThoai VARCHAR(15) NOT NULL,
Email VARCHAR(100),
DiaChi NVARCHAR(200),
LoaiKhachHang NVARCHAR(30) DEFAULT N'Thường' -- Thường, VIP
);
CREATE TABLE tbl_PhieuThuePhong (
MaPhieuThue VARCHAR(10) PRIMARY KEY,
MaKhachHang VARCHAR(10) NOT NULL,
MaPhong VARCHAR(10) NOT NULL,
NgayNhanPhong DATETIME NOT NULL,
NgayTraDuKien DATETIME NOT NULL,
NgayTraThucTe DATETIME NULL,
TienDatCoc DECIMAL(18, 2) DEFAULT 0,
TrangThai NVARCHAR(30) DEFAULT N'Đang lưu trú', -- Đang lưu trú, Đã trả phòng, Đã hủy
CONSTRAINT FK_Thue_KhachHang FOREIGN KEY (MaKhachHang) REFERENCES tbl_KhachHang(MaKhachHang),
CONSTRAINT FK_Thue_Phong FOREIGN KEY (MaPhong) REFERENCES tbl_Phong(MaPhong)
);
CREATE TABLE tbl_DichVu (
MaDichVu VARCHAR(10) PRIMARY KEY,
TenDichVu NVARCHAR(100) NOT NULL,
DonGia DECIMAL(18, 2) NOT NULL,
DonViTinh NVARCHAR(20) NOT NULL
);
CREATE TABLE tbl_ChiTietSuDungDichVu (
MaChiTiet VARCHAR(10) PRIMARY KEY,
MaPhieuThue VARCHAR(10) NOT NULL,
MaDichVu VARCHAR(10) NOT NULL,
SoLuong INT NOT NULL CHECK (SoLuong > 0),
NgaySuDung DATETIME DEFAULT GETDATE(),
ThanhTien DECIMAL(18, 2) NOT NULL,
CONSTRAINT FK_SuDung_PhieuThue FOREIGN KEY (MaPhieuThue) REFERENCES tbl_PhieuThuePhong(MaPhieuThue),
CONSTRAINT FK_SuDung_DichVu FOREIGN KEY (MaDichVu) REFERENCES tbl_DichVu(MaDichVu)
);
CREATE TABLE tbl_HoaDon (
MaHoaDon VARCHAR(10) PRIMARY KEY,
MaPhieuThue VARCHAR(10) UNIQUE NOT NULL,
NgayLapHoaDon DATETIME DEFAULT GETDATE(),
TienPhong DECIMAL(18, 2) NOT NULL,
TienDichVu DECIMAL(18, 2) DEFAULT 0,
TienPhuThu DECIMAL(18, 2) DEFAULT 0,
TongTienThanhToan DECIMAL(18, 2) NOT NULL,
MaNhanVienLap VARCHAR(10) NOT NULL,
CONSTRAINT FK_HoaDon_PhieuThue FOREIGN KEY (MaPhieuThue) REFERENCES tbl_PhieuThuePhong(MaPhieuThue)
);
Yêu cầu an toàn và bảo mật (Security Considerations)
- Mã hóa mật khẩu: Sử dụng giải thuật băm mật khẩu
SHA-256 kết hợp Salt ngẫu nhiên trước khi lưu vào cơ sở dữ liệu.
- Kiểm soát truy cập theo vai trò (RBAC - Role-Based Access Control):
- Quản trị viên (Admin/Manager): Toàn quyền thêm, sửa, xóa danh mục phòng, định giá, xem báo cáo doanh thu, phân quyền tài khoản.
- Nhân viên Lễ tân (Receptionist): Thực hiện nghiệp vụ Check-in, Check-out, thêm dịch vụ, in hóa đơn, tra cứu buồng phòng; không có quyền xóa hóa đơn lịch sử.
- Ngăn chặn lỗ hổng SQL Injection: 100% các truy vấn tương tác cơ sở dữ liệu được thực thi thông qua
SqlParameter hoặc Stored Procedures được biên dịch sẵn.
- Cơ chế sao lưu phục hồi (Backup & Disaster Recovery): Lập lịch tự động Full Backup cơ sở dữ liệu vào 00:00 hàng ngày và Differential Backup mỗi 4 giờ.
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm Thác nước (Waterfall Model) với 5 giai đoạn tuần tự nghiêm ngặt, đảm bảo tính chặt chẽ về tài liệu đặc tả và kiểm thử toàn diện.
gantt
title KẾ HOẠCH TRIỂN KHAI DỰ ÁN HANOI GOLDEN HOTEL (15/06/2023 - 16/08/2023)
dateFormat YYYY-MM-DD
section Giai đoạn 1: Khảo sát
Khảo sát hiện trạng & Phỏng vấn stakeholder :2023-06-15, 2023-06-17
Xây dựng tài liệu đặc tả yêu cầu (SRS) :2023-06-18, 2023-06-21
section Giai đoạn 2: Phân tích & Thiết kế
Thiết kế CSDL & Kiến trúc hệ thống :2023-06-22, 2023-06-28
Đặc tả chức năng & Thiết kế giao diện (UI) :2023-06-29, 2023-07-06
Chỉnh sửa thiết kế theo phản hồi khách hàng :2023-07-07, 2023-07-10
section Giai đoạn 3: Lập trình mã nguồn
Lập trình các Module nghiệp vụ cốt lõi :2023-07-11, 2023-07-25
Kiểm thử đơn vị từng chức năng :2023-07-26, 2023-07-30
section Giai đoạn 4: Kiểm thử & Sửa lỗi
Kiểm thử tích hợp & Kiểm thử giao diện :2023-07-31, 2023-08-05
UAT & Chỉnh sửa theo đóng góp người dùng :2023-08-06, 2023-08-10
section Giai đoạn 5: Đóng gói & Bàn giao
Xây dựng báo cáo & Bàn giao sản phẩm :2023-08-11, 2023-08-16
Ma trận đánh giá và ứng phó rủi ro dự án
| Mã rủi ro |
Loại rủi ro |
Mô tả chi tiết |
Mức độ ảnh hưởng |
Chiến lược ứng phó |
| RSK-01 |
Kỹ thuật |
Trùng lặp phòng khi nhiều lễ tân cùng thao tác đặt phòng |
Nghiêm trọng |
Sử dụng cơ chế Transaction Isolation Level SERIALIZABLE và khóa bản ghi (Pessimistic Locking) trong SQL Server. |
| RSK-02 |
Kế hoạch |
Thời gian phát triển module tính toán hóa đơn vượt tiến độ |
Trung bình |
Tách nhỏ bài toán thành các hàm con độc lập; tái sử dụng các thư viện chuẩn của .NET Framework. |
| RSK-03 |
Dữ liệu |
Mất điện đột ngột trong quá trình lập hóa đơn thanh toán |
Nghiêm trọng |
Áp dụng SQL Transaction BEGIN TRAN ... COMMIT TRAN. Nếu ngắt quãng giữa chừng, toàn bộ trạng thái sẽ tự động ROLLBACK. |
| RSK-04 |
Nhân sự |
Thành viên trong nhóm lập trình gặp sự cố gián đoạn |
Thấp |
Thiết lập kho lưu trữ mã nguồn Git tập trung, ghi chú tài liệu mã nguồn (XML Doc) rõ ràng để chuyển giao ngay lập tức. |
Implementation và kết quả
Quy trình phát triển và thuật toán cốt lõi
Hệ thống được phát triển trên nền tảng C# .NET kết hợp kiến trúc phân lớp hướng đối tượng. Dưới đây là thuật toán xử lý trả phòng (Check-out Checkout Billing Algorithm) tích hợp chính sách phụ thu trả phòng trễ và khóa phòng tự động.
using System;
using System.Data;
using System.Data.SqlClient;
namespace HotelManagement.BLL
{
public class BillingService
{
private readonly string _connectionString = "Server=.;Database=HanoiGoldenHotelDB;Integrated Security=True;";
/// <summary>
/// Thuật toán tính toán tổng tiền thanh toán và phụ thu trả phòng trễ
/// </summary>
public InvoiceResult CalculateCheckoutBill(string maPhieuThue, DateTime ngayTraThucTe)
{
var result = new InvoiceResult();
using (SqlConnection conn = new SqlConnection(_connectionString))
{
conn.Open();
using (SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.Serializable))
{
try
{
// 1. Lấy thông tin phiếu thuê và giá phòng tiêu chuẩn
string queryInfo = @"
SELECT pt.NgayNhanPhong, pt.NgayTraDuKien, pt.TienDatCoc, pt.MaPhong, lp.DonGiaTieuChuan
FROM tbl_PhieuThuePhong pt
INNER JOIN tbl_Phong p ON pt.MaPhong = p.MaPhong
INNER JOIN tbl_LoaiPhong lp ON p.MaLoaiPhong = lp.MaLoaiPhong
WHERE pt.MaPhieuThue = @MaPhieuThue AND pt.TrangThai = N'Đang lưu trú'";
SqlCommand cmdInfo = new SqlCommand(queryInfo, conn, transaction);
cmdInfo.Parameters.AddWithValue("@MaPhieuThue", maPhieuThue);
DateTime ngayNhan;
DateTime ngayTraDuKien;
decimal tienDatCoc = 0;
decimal donGiaPhong = 0;
string maPhong = "";
using (SqlDataReader reader = cmdInfo.ExecuteReader())
{
if (!reader.Read())
throw new Exception("Không tìm thấy thông tin phiếu thuê hợp lệ hoặc phòng đã được thanh toán.");
ngayNhan = Convert.ToDateTime(reader["NgayNhanPhong"]);
ngayTraDuKien = Convert.ToDateTime(reader["NgayTraDuKien"]);
tienDatCoc = Convert.ToDecimal(reader["TienDatCoc"]);
donGiaPhong = Convert.ToDecimal(reader["DonGiaTieuChuan"]);
maPhong = reader["MaPhong"].ToString();
}
// 2. Tính số ngày lưu trú tiêu chuẩn
int soNgayLuuTru = (int)Math.Ceiling((ngayTraThucTe - ngayNhan).TotalDays);
if (soNgayLuuTru <= 0) soNgayLuuTru = 1;
decimal tongTienPhong = soNgayLuuTru * donGiaPhong;
// 3. Tính toán phụ thu quá giờ theo quy định khách sạn
// Giờ check-out quy định: 12:00 PM. Trả phòng muộn trước 17h00 tính thêm 50%, sau 17h00 tính 100%
decimal tienPhuThu = 0;
TimeSpan checkoutTime = ngayTraThucTe.TimeOfDay;
TimeSpan standardCheckout = new TimeSpan(12, 0, 0);
TimeSpan lateThreshold = new TimeSpan(17, 0, 0);
if (ngayTraThucTe.Date >= ngayTraDuKien.Date && checkoutTime > standardCheckout)
{
if (checkoutTime <= lateThreshold)
{
tienPhuThu = donGiaPhong * 0.50m; // Phụ thu 50%
}
else
{
tienPhuThu = donGiaPhong * 1.00m; // Phụ thu 100%
}
}
// 4. Tính tổng tiền dịch vụ phát sinh
string queryDichVu = @"
SELECT ISNULL(SUM(ThanhTien), 0)
FROM tbl_ChiTietSuDungDichVu
WHERE MaPhieuThue = @MaPhieuThue";
SqlCommand cmdDV = new SqlCommand(queryDichVu, conn, transaction);
cmdDV.Parameters.AddWithValue("@MaPhieuThue", maPhieuThue);
decimal tongTienDichVu = Convert.ToDecimal(cmdDV.ExecuteScalar());
// 5. Tính tổng cộng sau trừ cọc
decimal tongThanhToan = tongTienPhong + tienPhuThu + tongTienDichVu - tienDatCoc;
// 6. Cập nhật trạng thái phiếu thuê và giải phóng phòng
string updatePhieuThue = @"
UPDATE tbl_PhieuThuePhong
SET NgayTraThucTe = @NgayTraThucTe, TrangThai = N'Đã trả phòng'
WHERE MaPhieuThue = @MaPhieuThue";
SqlCommand cmdUpdatePT = new SqlCommand(updatePhieuThue, conn, transaction);
cmdUpdatePT.Parameters.AddWithValue("@NgayTraThucTe", ngayTraThucTe);
cmdUpdatePT.Parameters.AddWithValue("@MaPhieuThue", maPhieuThue);
cmdUpdatePT.ExecuteNonQuery();
string updatePhong = "UPDATE tbl_Phong SET TrangThai = N'Trống' WHERE MaPhong = @MaPhong";
SqlCommand cmdUpdatePhong = new SqlCommand(updatePhong, conn, transaction);
cmdUpdatePhong.Parameters.AddWithValue("@MaPhong", maPhong);
cmdUpdatePhong.ExecuteNonQuery();
transaction.Commit();
result.MaPhong = maPhong;
result.TienPhong = tongTienPhong;
result.TienPhuThu = tienPhuThu;
result.TienDichVu = tongTienDichVu;
result.TienDatCoc = tienDatCoc;
result.TongThanhToan = tongThanhToan;
result.IsSuccess = true;
}
catch (Exception ex)
{
transaction.Rollback();
result.IsSuccess = false;
result.ErrorMessage = ex.Message;
}
}
}
return result;
}
}
public class InvoiceResult
{
public string MaPhong { get; set; }
public decimal TienPhong { get; set; }
public decimal TienPhuThu { get; set; }
public decimal TienDichVu { get; set; }
public decimal TienDatCoc { get; set; }
public decimal TongThanhToan { get; set; }
public bool IsSuccess { get; set; }
public string ErrorMessage { get; set; }
}
}
Kiểm thử và đánh giá xác thực (Testing & Validation)
Quá trình kiểm thử phần mềm được tiến hành qua 5 bộ test case toàn diện với hơn 45 kịch bản kiểm thử (Test Scenarios), bao gồm kiểm thử chức năng (Functional Testing), kiểm thử biên (Boundary Value Testing) và kiểm thử tải trên mạng LAN.
KẾT QUẢ PHÂN PHỐI TEST CASE THEO MODULE
┌────────────────────────────────────────────────────────┐
│ Đăng nhập & Xác thực [■■■■■■■■■■] 100% (5/5 Pass) │
│ Đăng ký khách hàng [■■■■■■■■■■] 100% (5/5 Pass) │
│ Tìm kiếm buồng phòng [■■■■■■■■■■] 100% (7/7 Pass) │
│ Đặt phòng & Check-in [■■■■■■■■■■] 100% (8/8 Pass) │
│ Check-out & Tính hóa đơn [■■■■■■■■■■] 100% (6/6 Pass) │
│ Quản lý & In báo cáo [■■■■■■■■■■] 100% (4/4 Pass) │
└────────────────────────────────────────────────────────┘
Trích lục kết quả thực thi Test Case tiêu biểu
| Mã Test Case |
Tên ca kiểm thử |
Điều kiện đầu vào |
Kết quả mong đợi |
Trạng thái thực tế |
| TC_Login_01 |
Đăng nhập tài khoản hợp lệ |
Email: admin@hotel.vn, Pass: Admin@123 |
Xác thực thành công, chuyển hướng đến Dashboard quản trị |
PASS |
| TC_Login_02 |
Đăng nhập sai mật khẩu |
Email: admin@hotel.vn, Pass: 123456 |
Báo lỗi: "Thông tin đăng nhập không hợp lệ", chặn truy cập |
PASS |
| TC_Search_01 |
Tìm phòng trống theo ngày |
Từ 20/08/2023 đến 25/08/2023 |
Trả về danh sách chính xác các phòng có trạng thái 'Trống' |
PASS |
| TC_Search_06 |
Tìm kiếm phòng không khả dụng |
Tìm loại 'Suite' vào ngày đã kín buồng |
Hiển thị thông báo: "Không có phòng khả dụng theo tiêu chí" |
PASS |
| TC_Checkout_03 |
Tính phụ thu trả phòng trễ lúc 15:30 |
Phòng Deluxe giá 1.000.000 VNĐ, trả sau 12h00 |
Tự động cộng thêm 500.000 VNĐ (50%) vào mục Tiền phụ thu |
PASS |
| TC_Lock_01 |
Kiểm tra khóa phòng song song |
2 lễ tân đồng thời chọn phòng P.302 |
Hệ thống khóa luồng giao dịch, thông báo phòng đã được chọn |
PASS |
Đánh giá hiệu năng và phản hồi người dùng
- Thời gian phản hồi truy vấn (Query Response Time): Đối với tập dữ liệu kiểm thử giả lập gồm 10.000 lượt lưu trú và 50.000 hóa đơn dịch vụ, thời gian thực thi truy vấn tìm kiếm đạt mức bình quân 42ms.
- Mức độ hài lòng của nhân viên lễ tân & Quản lý: Đạt điểm số 9.6/10 từ ban quản lý và đội ngũ lễ tân Hanoi Golden Hotel về tính tiện dụng, giao diện trực quan và tốc độ in ấn hóa đơn.
Kết quả đạt được so với kế hoạch ban đầu
| Hạng mục chức năng |
Kế hoạch ban đầu |
Kết quả thực tế hoàn thiện |
Đánh giá hoàn thành |
| Quản lý danh mục 32 phòng |
Phân tầng 4 hạng phòng tiêu chuẩn |
Hoàn thiện 100%, trực quan hóa trạng thái bằng màu sắc |
100% |
| Check-in / Check-out tự động |
Rút ngắn thời gian xử lý < 5 phút |
Đạt 2.5 phút/lượt, in phiếu check-in và hóa đơn trực tiếp |
120% (Vượt chỉ tiêu) |
| Tính toán phụ thu trả phòng trễ |
Xử lý theo quy định trước/sau 17h |
Tích hợp thuật toán tự động phân loại 50% và 100% |
100% |
| Ghi nhận dịch vụ đa điểm |
Giặt ủi, ẩm thực, minibar, cước gọi |
Tích hợp bảng kê chi tiết dịch vụ đính kèm phiếu thuê |
100% |
| Báo cáo doanh thu & công suất |
Thống kê tuần, tháng, năm |
Xuất báo cáo đa dạng định dạng với tốc độ tức thì |
100% |
Đổi mới và đóng góp
- Cơ chế đồng bộ và khóa trạng thái buồng phòng thời gian thực: Thay thế việc kiểm tra bảng giấy bằng thuật toán khóa tự động (Automated Concurrency Locking). Ngay khi lễ tân mở form Check-in cho phòng
P.201, trạng thái phòng lập tức chuyển sang Đang xử lý trên toàn bộ các máy trạm kết nối trong mạng LAN, loại bỏ hoàn toàn hiện tượng xếp trùng buồng.
- Thuật toán tự động hóa định giá phụ thu thông minh (Dynamic Surcharge Automation): Tự động tính toán số tiền phụ trội dựa trên mốc thời gian hệ thống đối chiếu với giờ trả phòng quy định (12:00 PM), triệt tiêu các tranh cãi và sai sót tính toán thủ công giữa khách hàng và nhân viên lễ tân.
- Cải tiến vượt bậc về năng suất lao động:
- Tối ưu 83.3% thời gian tiếp đón khách tại quầy lễ tân.
- Tối ưu 99.8% thời gian tổng hợp số liệu kế toán và lập báo cáo quản trị cuối tháng.
- Giảm 100% chi phí in ấn phôi sổ sách lưu trữ giấy tờ hàng tháng.
Ứng dụng thực tế và triển khai
Kịch bản vận hành thực tế tại Hanoi Golden Hotel
[Khách đến quầy Lễ tân]
│
▼
[Lễ tân nhập CCCD/Hộ chiếu] ──> [Hệ thống tự động điền hồ sơ khách quen / Tạo mới]
│
▼
[Chọn phòng trống trên sơ đồ màu] ──> [Hệ thống khóa phòng P.202, in Phiếu Check-in & nhận cọc]
│
▼
[Khách lưu trú & dùng dịch vụ] ──> [Lễ tân cập nhật DV: Ăn sáng, Giặt ủi vào mã Phiếu thuê]
│
▼
[Khách Check-out] ──> [Hệ thống tính tổng tiền, phụ thu quá giờ, in Hóa đơn VAT trong 30 giây]
Yêu cầu phần cứng và phần mềm triển khai (System Requirements)
- Yêu cầu phần cứng máy chủ / máy trạm (Server & Client):
- Vi xử lý (CPU): Intel Core i3 / AMD Ryzen 3 tốc độ xung nhịp $\ge 2.30\text{ GHz}$.
- Bộ nhớ truy xuất ngẫu nhiên (RAM): Tối thiểu $4\text{ GB}$ (Khuyến nghị $8\text{ GB}$ đối với máy chủ LAN).
- Dung lượng ổ cứng lưu trữ: $\ge 200\text{ GB}$ trống (Ưu tiên SSD chuẩn SATA/NVMe để tối ưu tốc độ đọc/ghi dữ liệu).
- Yêu cầu môi trường phần mềm:
- Hệ điều hành: Microsoft Windows 7 / Windows 10 / Windows 11 / Windows Server 2016 trở lên.
- Nền tảng thực thi: Microsoft .NET Framework 4.8 Runtime.
- Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2019 (hoặc bản Express Edition miễn phí).
Phân tích chi phí - lợi ích và hoàn vốn đầu tư (Cost-Benefit & ROI Analysis)
CƠ CẤU CHI PHÍ DỰ ÁN (TỔNG: 46.8 TRIỆU VNĐ)
┌────────────────────────────────────────────────────────┐
│ Lập trình & Phát triển mã nguồn [■■■■■■■■■■■■■■■] 34.0% (16.0M)│
│ Thiết kế hệ thống & CSDL [■■■■■■■■■■] 23.5% (11.0M)│
│ Khảo sát & Đặc tả yêu cầu [■■■■■] 12.8% ( 6.0M)│
│ Kiểm thử, UAT & Đào tạo [■■■■] 8.5% ( 4.0M)│
│ Dự phòng & Bảo trì 12 tháng [■■■■■■■■] 21.2% ( 9.8M)│
└────────────────────────────────────────────────────────┘
- Tổng kinh phí triển khai trọn gói: $46.800.000\text{ VNĐ}$ (Bao gồm khảo sát, thiết kế, lập trình, đào tạo nhân viên và gói bảo hành bảo trì 12 tháng).
- Chi phí tiết kiệm định kỳ hàng tháng:
- Tiết kiệm chi phí in ấn sổ sách, phôi mẫu giấy tờ: $1.800.000\text{ VNĐ/tháng}$.
- Cắt giảm thất thoát dịch vụ và tính sai hóa đơn: $5.500.000\text{ VNĐ/tháng}$.
- Tối ưu hóa năng suất lao động (tiết kiệm 01 ca trực lễ tân hỗ trợ đối soát sổ sách): $7.000.000\text{ VNĐ/tháng}$.
- Tổng tiết kiệm bình quân: $14.300.000\text{ VNĐ/tháng}$.
- Thời gian hoàn vốn đầu tư (Payback Period):
$$\text{Thời gian hoàn vốn} = \frac{\text{Tổng chi phí đầu tư}}{\text{Lợi ích ròng hàng tháng}} = \frac{46.800.000}{14.300.000} \approx 3.27\text{ tháng}$$
Chỉ sau chưa đầy 3.5 tháng đưa vào vận hành, hệ thống phần mềm sẽ bù đắp toàn bộ chi phí đầu tư ban đầu và tạo ra dòng giá trị thặng dư bền vững cho doanh nghiệp.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Môi trường cục bộ (On-Premise Desktop App): Phần mềm hiện được đóng gói chạy trên nền tảng Windows Forms trong mạng nội bộ LAN, chưa hỗ trợ giao diện Responsive trên thiết bị di động (Smartphone/Tablet) cho ban quản lý khi đi công tác xa.
- Phương thức sao lưu (Backup Method): Quá trình sao lưu dữ liệu hiện phụ thuộc vào các tệp tin lưu trữ vật lý trên máy chủ nội bộ của khách sạn, tiềm ẩn rủi ro khi xảy ra sự cố hỏa hoạn hoặc lỗi phần cứng nghiêm trọng.
- Tích hợp ngoại vi: Chưa kết nối trực tiếp với hệ thống khóa thẻ từ phòng (RFID Keycard Encoder) và tổng đài IP để tự động đồng bộ cước điện thoại viễn thông.
Hướng nâng cấp và phát triển mở rộng
- Chuyển đổi sang kiến trúc Cloud & Web API: Tái cấu trúc tầng backend thành hệ thống RESTful API (.NET 8 Core), hỗ trợ đồng bộ dữ liệu đa nền tảng lên điện toán đám mây Microsoft Azure / AWS.
- Phát triển ứng dụng di động dành cho khách hàng (Guest Mobile App): Cho phép khách hàng tự thực hiện thủ tục Self Check-in, chọn phòng trực quan trên bản đồ 3D, đặt món ăn minibar và mở khóa cửa phòng bằng công nghệ Bluetooth/NFC.
- Tích hợp cổng thanh toán trực tuyến & Hóa đơn điện tử: Tích hợp các cổng thanh toán thông minh (VNPAY-QR, MoMo, VietQR) và kết nối API hệ thống Hóa đơn điện tử (VNPT-Invoice, MISA meInvoice) theo chuẩn Thông tư 78/2021/TT-BTC.
Đối tượng hưởng lợi
- Đối với sinh viên chuyên ngành CNTT & Hệ thống thông tin: Cung cấp tài liệu tham khảo hoàn chỉnh từ khâu khảo sát thực tế, phỏng vấn chuyên sâu, thiết kế cơ sở dữ liệu chuẩn hóa 3NF đến việc hiện thực hóa các thuật toán nghiệp vụ quản trị phức tạp.
- Đối với các nhà phát triển phần mềm (Developers): Mô hình kiến trúc phân tầng, cách xử lý khóa dữ liệu đồng thời (Concurrency Control) và các kỹ thuật tối ưu hóa truy vấn SQL Server 2019 là tài liệu thực hành hữu ích cho các dự án quản trị doanh nghiệp vừa và nhỏ.
- Đối với các chủ doanh nghiệp khách sạn vừa và nhỏ: Bản kế hoạch cung cấp góc nhìn thực tiễn về tính khả thi, phân tích ngân sách chi tiết và phương pháp luận đo lường hiệu quả hoàn vốn đầu tư (ROI) khi thực hiện chuyển đổi số.
Câu hỏi thường gặp
1. Cấu hình máy tính tối thiểu để cài đặt và vận hành hệ thống là gì?
Hệ thống yêu cầu máy tính chạy hệ điều hành Windows 7 SP1 trở lên, CPU $\ge 2.3\text{ GHz}$, RAM tối thiểu $4\text{ GB}$ và ổ cứng trống $200\text{ GB}$. Máy chủ quản lý cơ sở dữ liệu cần cài đặt Microsoft SQL Server 2019 (hoặc bản Express miễn phí).
2. Hệ thống xử lý thế nào khi xảy ra xung đột hai lễ tân cùng đặt một phòng tại một thời điểm?
Hệ thống sử dụng cơ chế Transaction với cấp độ cô lập SERIALIZABLE kết hợp kỹ thuật khóa bi quan (Pessimistic Locking). Khi Lễ tân A bắt đầu thao tác tạo phiếu thuê cho một mã phòng, bản ghi đó sẽ bị khóa tạm thời. Lễ tân B khi truy cập sẽ nhận được thông báo: "Phòng đang trong phiên xử lý bởi người dùng khác" và danh sách phòng trống được làm mới ngay lập tức.
3. Phần mềm có hỗ trợ kết xuất hóa đơn thanh toán và báo cáo ra file ngoài không?
Có. Hệ thống tích hợp module báo cáo cho phép xem trước trực quan và kết xuất dữ liệu sang các định dạng tiêu chuẩn như Microsoft Excel (.xlsx), PDF (.pdf), hoặc in trực tiếp ra máy in hóa đơn nhiệt POS khổ 80mm (K80).
4. Chi phí duy trì và bảo trì hệ thống hàng năm ước tính khoảng bao nhiêu?
Hệ thống vận hành trọn đời không mất phí bản quyền định kỳ hàng tháng. Gói bảo trì và nâng cấp định kỳ sau 12 tháng bảo hành tiêu chuẩn dao động từ 15–20% giá trị hợp đồng ban đầu (khoảng $7.000.000 - 9.000.000\text{ VNĐ/năm}$) bao gồm dịch vụ kiểm tra an toàn dữ liệu, tối ưu hóa chỉ mục CSDL và cập nhật các bản vá lỗi.
5. Dữ liệu của khách sạn có an toàn khi xảy ra sự cố mất điện đột ngột không?
Toàn bộ các tác vụ tài chính và lưu trú đều được bọc trong các khối SqlTransaction tuân thủ nguyên lý ACID. Nếu mất điện giữa chừng khi đang lập bill, hệ thống sẽ tự động ROLLBACK trạng thái dữ liệu về điểm an toàn trước đó, đảm bảo không xảy ra hiện tượng sai lệch số dư hoặc mất thông tin khách hàng.
Kết luận
Đề tài "Xây dựng phần mềm quản lý khách sạn Hanoi Golden Hotel" do Nhóm 8 thực hiện đã giải quyết triệt để các hạn chế của phương pháp quản lý thủ công truyền thống. Dự án không chỉ đạt được các mục tiêu kỹ thuật về tính ổn định, tốc độ xử lý nhanh chóng và an toàn bảo mật dữ liệu mà còn mang lại giá trị kinh tế cụ thể, giúp khách sạn tối ưu hóa đến 83.3% thời gian giao dịch tại quầy và tiết kiệm hàng chục triệu đồng chi phí vận hành mỗi tháng. Đây là minh chứng rõ nét cho năng lực ứng dụng công nghệ thông tin vào bài toán chuyển đổi số thiết thực trong ngành dịch vụ khách sạn hiện đại.