Giới thiệu dự án

Trong bối cảnh ngành dịch vụ ăn uống và giải trí (F&B - Food and Beverage) tại Việt Nam phát triển với tốc độ tăng trưởng trung bình 10-12%/năm, các mô hình câu lạc bộ, nhà hàng và quán cà phê quy mô vừa và nhỏ phải đối mặt với áp lực lớn về chi phí vận hành, quản lý nhân sự và kiểm soát dòng tiền. Hầu hết các cơ sở kinh doanh theo mô hình truyền thống vẫn duy trì phương thức chấm công bằng sổ tay, ghi nhận gọi món thủ công hoặc sử dụng các phần mềm đơn lẻ thiếu tính liên kết dữ liệu, dẫn đến tỷ lệ thất thoát nguyên vật liệu từ 5-8% doanh thu và độ trễ thanh toán vào giờ cao điểm lên tới 10-15 phút/bàn.

Đồ án "Xây dựng phần mềm quản lý bán hàng tại Hữu Hạnh Club" do sinh viên Lê Thanh Tân thực hiện dưới sự hướng dẫn của cô giáo Nguyễn Thị Thanh Thoan (Bộ môn Công nghệ phần mềm – Khoa Công nghệ thông tin – Trường Đại học Dân lập Hải Phòng) tập trung giải quyết triệt để bài toán số hóa quy trình vận hành thực tế tại Hữu Hạnh Club (Quán Toan, Hải Phòng).

+-------------------------------------------------------------------------+
|                           HỮU HẠNH CLUB                                 |
|  - Quy mô: 2 tầng (Tầng 1: 14 bàn, Tầng 2: 30 bàn = Tổng 44 bàn)       |
|  - Nhân sự: 8 nhân viên (1 Bếp, 4 Phục vụ bàn, 2 Bảo vệ, 1 Quản lý)    |
|  - Chế độ vận hành: 2 ca làm việc (Ca sáng: 6h-14h | Ca chiều: 14h-22h) |
+-------------------------------------------------------------------------+

Vấn đề thực tế (Problem Statement)

Hữu Hạnh Club sở hữu quy mô 44 bàn phục vụ cùng lúc với lưu lượng khách hàng lớn tập trung tại khu vực đông dân cư. Mặc dù câu lạc bộ đã từng thử nghiệm một số công cụ tin học hóa, nhưng hệ thống cũ bộc lộ nhiều lỗ hổng nghiêm trọng:

  • Chấm công và tính lương thủ công: Việc theo dõi công nhật, tăng ca, ngày nghỉ của 8 nhân sự qua 2 ca làm việc hoàn toàn bằng sổ tay gây ra sai số tính lương hàng tháng, thiếu cơ chế trừ phạt hoặc thưởng minh bạch theo doanh số.
  • Thất thoát dữ liệu khách hàng: Chưa có module lưu trữ thông tin khách hàng thân thiết để tự động áp dụng chính sách chiết khấu, giảm giá tùy biến theo cấp độ thành viên.
  • Quy trình bán hàng - chế biến rời rạc: Việc chuyển phiếu yêu cầu từ nhân viên bàn sang bộ phận bếp phụ thuộc vào giấy ghi tay, dễ xảy ra nhầm lẫn món ăn, khó khăn khi khách yêu cầu chuyển bàn hoặc gộp bàn.
  • Quản lý kho và nguyên liệu thiếu đồng bộ: Không đối soát được lượng nguyên liệu xuất chế biến thực tế với công thức định lượng món ăn, dẫn đến tồn kho quá hạn hoặc thiếu hụt đột xuất.

Mục tiêu dự án

  1. Chuẩn hóa toàn bộ tiến trình nghiệp vụ: Xây dựng quy trình khép kín từ tiếp nhận yêu cầu gọi món, chuyển phiếu chế biến, điều phối chuyển/gộp bàn, in hóa đơn đến cập nhật sổ bán hàng theo thời gian thực.
  2. Tự động hóa quản lý nhân sự & tiền lương: Thiết lập phân hệ quản lý hồ sơ nhân viên, hợp đồng lao động, chấm công tự động theo ca và tính bảng lương chính xác (bao gồm lương cơ bản, lương thêm giờ, tiền phạt và tiền thưởng doanh thu).
  3. Quản lý kho và định lượng nguyên liệu: Giám sát danh mục nguyên liệu, lập phiếu nhập kho, theo dõi giá vốn và lượng hàng tồn kho theo định mức tiêu thụ.
  4. Chăm sóc khách hàng thân thiết: Lưu trữ thông tin định danh khách hàng (họ tên, ngày sinh, số điện thoại, sở thích) và áp dụng cơ chế tự động chiết khấu giá trị hóa đơn.
  5. Cung cấp hệ thống báo cáo quản trị đa chiều: Xuất báo cáo doanh thu kinh doanh theo ngày/tháng/năm và báo cáo biến động kho định kỳ phục vụ Ban Giám đốc ra quyết định.

Giải pháp kỹ thuật và Kết quả kỳ vọng

Dự án áp dụng phương pháp phân tích thiết kế hệ thống có cấu trúc (SSADM) với công cụ mô hình hóa dữ liệu (ERD) và luồng dữ liệu (DFD đa mức), hiện thực hóa thông qua ngôn ngữ lập trình C# trên nền tảng .NET Framework kết hợp hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2005.

                    +-----------------------------+
                    |  Phương pháp tiếp cận SSADM |
                    +--------------+--------------+
                                   |
            +----------------------+----------------------+
            |                                             |
+-----------v------------+                    +-----------v------------+
| Mô hình hóa DFD / ERD  |                    | C# .NET + SQL Server   |
+-----------+------------+                    +-----------+------------+
            |                                             |
            +----------------------+----------------------+
                                   |
                    +--------------v--------------+
                    |  Hệ thống quản lý tích hợp  |
                    |  - Bán hàng (44 bàn)        |
                    |  - Nhân sự & Tiền lương     |
                    |  - Quản lý Kho & Báo cáo    |
                    +-----------------------------+

Hệ thống đặt mục tiêu rút ngắn 70% thời gian tạo và in hóa đơn thanh toán (< 30 giây/giao dịch), giảm 100% sai sót trong tính lương nhân viên cuối tháng, đồng thời kiểm soát chính xác 100% lượng hàng tồn kho nguyên liệu.

Phạm vi và giới hạn

  • Phạm vi triển khai: Ứng dụng dạng Desktop Application cài đặt trên hệ thống mạng cục bộ (LAN) tại Hữu Hạnh Club, phục vụ trực tiếp 3 nhóm người dùng: Quản lý, Giám đốc và Nhân viên.
  • Giới hạn kỹ thuật: Chưa tích hợp ứng dụng đặt bàn trực tuyến qua Web/Mobile App và chưa kết nối cổng thanh toán điện tử trực tuyến (chỉ hỗ trợ thanh toán tiền mặt/hóa đơn tại quầy).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí Sổ tay & Excel thủ công Phần mềm cũ tại cơ sở Giải pháp phần mềm mới (Đồ án)
Bán hàng & Gọi món Ghi giấy, dễ mất phiếu khi gộp/chuyển bàn Có hỗ trợ tạo đơn cơ bản Đồng bộ trạng thái 44 bàn, hỗ trợ chuyển/gộp bàn tức thì
Quản lý Nhân sự - Lương Chấm công sổ tay, tính nhẩm Không có module nhân sự Quản lý hợp đồng, chấm công theo ca, tự động tính lương thưởng/phạt
Quản lý Khách hàng Không lưu trữ Không hỗ trợ Phân loại khách quen, tích hợp chiết khấu tự động trên hóa đơn
Quản lý Kho & Nguyên liệu Kiểm đếm thủ công cuối tuần Quản lý hóa đơn rời rạc Lập phiếu nhập, lưu sổ kho, theo dõi định lượng món ăn
Báo cáo tài chính Tổng hợp mất 1-2 ngày Báo cáo doanh thu tĩnh Báo cáo doanh thu và kho trực quan theo mốc thời gian tùy biến

Phân loại yêu cầu người dùng (MoSCoW)

  • Must Have (Bắt buộc): Lập thực đơn, ghi phiếu gọi món theo số bàn, thanh toán in hóa đơn, chấm công nhân viên hàng ngày, tính bảng lương cuối tháng, quản lý hợp đồng lao động, nhập xuất kho nguyên liệu.
  • Should Have (Nên có): Phân loại khách hàng thân thiết để áp dụng khuyến mãi, lưu vết người tạo/người cập nhật dữ liệu (NguoiTao, NguoiCapNhat), cơ chế phân quyền đăng nhập hệ thống (Login/Password).
  • Could Have (Có thể có): Quản lý sở thích khách hàng, thiết lập tên viết tắt của món ăn để nhân viên phục vụ ghi chú nhanh.
  • Won't Have (Chưa thực hiện): Tích hợp máy quét vân tay chấm công tự động, order trực tiếp qua máy tính bảng tại bàn.

Thiết kế hệ thống

Kiến trúc phần mềm được tổ chức theo mô hình phân tầng hướng module, đảm bảo tính đóng gói và dễ bảo trì:

+-------------------------------------------------------------+
|                      GIAO DIỆN NGƯỜI DÙNG                   |
|  (Form Đăng nhập, Bán hàng, Nhân sự, Lương, Kho, Báo cáo)  |
+------------------------------+------------------------------+
                               | (WinForms Controls & Events)
+------------------------------v------------------------------+
|                    XỬ LÝ NGHIỆP VỤ (BLL)                    |
|  (Tính lương, Áp khuyến mãi, Tính thành tiền, Phân quyền)   |
+------------------------------+------------------------------+
                               | (ADO.NET / SQL Commands)
+------------------------------v------------------------------+
|                    TRUY XUẤT DỮ LIỆU (DAL)                  |
|  (SqlConnection, SqlCommand, SqlDataAdapter, Transactions)   |
+------------------------------+------------------------------+
                               | (T-SQL Engine)
+------------------------------v------------------------------+
|               CƠ SỞ DỮ LIỆU SQL SERVER 2005                 |
|  (11 Bảng dữ liệu quan hệ: NHANVIEN, BANGLUONG, KHO, ...)    |
+-------------------------------------------------------------+

Technology Stack

  • Ngôn ngữ phát triển: C# (C-Sharp) trên nền tảng Microsoft .NET Framework.
  • Môi trường phát triển tích hợp (IDE): Microsoft Visual Studio.
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2005.
  • Công nghệ kết nối dữ liệu: ADO.NET (sử dụng các đối tượng SqlConnection, SqlCommand, SqlDataAdapter, DataSet).
  • Hệ điều hành vận hành: Microsoft Windows XP / Windows 7 / Windows Server.

Thiết kế cơ sở dữ liệu vật lý (Database Schema)

Hệ thống chuẩn hóa 11 thực thể quan hệ nhằm loại bỏ dư thừa dữ liệu (chuẩn 3NF):

-- 1. Bảng lưu trữ thông tin Quản lý
CREATE TABLE QUANLY (
    MaQuanLy INT PRIMARY KEY IDENTITY(1,1),
    HoTen NVARCHAR(100) NOT NULL,
    DiaChi NVARCHAR(200) NULL,
    NgaySinh NVARCHAR(50) NULL,
    DienThoai NVARCHAR(20) NULL,
    TrangThai NVARCHAR(50) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    NgayCapNhat DATETIME DEFAULT GETDATE(),
    TaiKhoan NVARCHAR(50) UNIQUE NOT NULL,
    MatKhau NVARCHAR(100) NOT NULL
);

-- 2. Bảng lưu trữ Hợp đồng lao động
CREATE TABLE HOPDONG (
    MaHopDong INT PRIMARY KEY IDENTITY(1,1),
    LoaiHopDong NVARCHAR(50) NOT NULL,
    NgayBatDau DATETIME NOT NULL,
    NgayKetThuc DATETIME NOT NULL,
    TrangThai NVARCHAR(50) NOT NULL,
    NguoiKy NVARCHAR(100) NOT NULL,
    NgayKy DATETIME NOT NULL,
    MaQuanLy INT FOREIGN KEY REFERENCES QUANLY(MaQuanLy),
    LuongCoBan FLOAT NOT NULL
);

-- 3. Bảng lưu trữ thông tin Nhân viên
CREATE TABLE NHANVIEN (
    MaNhanVien INT PRIMARY KEY IDENTITY(1,1),
    Hoten NVARCHAR(100) NOT NULL,
    DiaChi NVARCHAR(200) NULL,
    NgaySinh DATETIME NULL,
    SoCMND INT UNIQUE NOT NULL,
    DienThoai NVARCHAR(20) NULL,
    TrangThai NVARCHAR(50) NOT NULL,
    NguoiTao NVARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    NguoiCapNhat NVARCHAR(100) NULL,
    NgayCapNhat DATETIME NULL,
    MaHopDong INT FOREIGN KEY REFERENCES HOPDONG(MaHopDong)
);

-- 4. Bảng Bảng Chấm Công
CREATE TABLE BANGCHAMCONG (
    MaBangChamCong INT PRIMARY KEY IDENTITY(1,1),
    MaNhanVien INT FOREIGN KEY REFERENCES NHANVIEN(MaNhanVien),
    TenNhanVien NVARCHAR(100) NOT NULL,
    NgayCong INT DEFAULT 0,
    GioLamThem INT DEFAULT 0,
    SoNgayNghi INT DEFAULT 0,
    MaQuanLy INT FOREIGN KEY REFERENCES QUANLY(MaQuanLy),
    ThanhTien FLOAT DEFAULT 0,
    TrangThai NVARCHAR(50) NOT NULL,
    NguoiTao NVARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    Thang DATETIME NOT NULL
);

-- 5. Bảng Bảng Lương
CREATE TABLE BANGLUONG (
    MaBangLuong INT PRIMARY KEY IDENTITY(1,1),
    TenNhanVien NVARCHAR(100) NOT NULL,
    LuongCoBan FLOAT NOT NULL,
    LuongThemGio FLOAT DEFAULT 0,
    TienPhat FLOAT DEFAULT 0,
    LuongThuong FLOAT DEFAULT 0,
    Thang DATETIME NOT NULL,
    TongLuong FLOAT NOT NULL,
    MaBangChamCong INT FOREIGN KEY REFERENCES BANGCHAMCONG(MaBangChamCong)
);

-- 6. Bảng Khách Hàng
CREATE TABLE KHACHHANG (
    MaKhachHang INT PRIMARY KEY IDENTITY(1,1),
    TenKhachHang NVARCHAR(100) NOT NULL,
    DiaChi NVARCHAR(200) NULL,
    GioiTinh NVARCHAR(10) NULL,
    NgaySinh DATETIME NULL,
    DienThoai NVARCHAR(20) NULL,
    TrangThai NVARCHAR(50) NOT NULL,
    NguoiTao NVARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    NguoiCapNhat NVARCHAR(100) NULL,
    NgayCapNhat DATETIME NULL
);

-- 7. Bảng Món Ăn
CREATE TABLE MONAN (
    MaMonAn INT PRIMARY KEY IDENTITY(1,1),
    TenMonAn NVARCHAR(100) NOT NULL,
    GiaMonAn FLOAT NOT NULL,
    TrangThai NVARCHAR(50) NOT NULL,
    NguoiTao NVARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    NguoiCapNhat NVARCHAR(100) NULL,
    NgayCapNhat DATETIME NULL,
    MaQuanLy INT FOREIGN KEY REFERENCES QUANLY(MaQuanLy)
);

-- 8. Bảng Thực Đơn (Hóa đơn bán hàng)
CREATE TABLE THUCDON (
    Mathucdon INT PRIMARY KEY IDENTITY(1,1),
    MaNhanVien INT FOREIGN KEY REFERENCES NHANVIEN(MaNhanVien),
    NgayLap DATETIME DEFAULT GETDATE(),
    MaKhachHang INT FOREIGN KEY REFERENCES KHACHHANG(MaKhachHang),
    ThanhTien FLOAT NOT NULL
);

-- 9. Bảng Chi tiết Nội dung Thực Đơn
CREATE TABLE NOIDUNGTHUCDON (
    MaMonAn INT FOREIGN KEY REFERENCES MONAN(MaMonAn),
    MaThucDon INT FOREIGN KEY REFERENCES THUCDON(Mathucdon),
    SoLuong INT NOT NULL,
    TienKhuyenMai FLOAT DEFAULT 0,
    PRIMARY KEY (MaMonAn, MaThucDon)
);

-- 10. Bảng Kho
CREATE TABLE KHO (
    MaKho INT PRIMARY KEY IDENTITY(1,1),
    TenKho NVARCHAR(100) NOT NULL,
    TrangThai NVARCHAR(50) NOT NULL,
    NguoiTao NVARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    NguoiCapNhat NVARCHAR(100) NULL,
    NgayCapNhat DATETIME NULL
);

-- 11. Bảng Phiếu Nhập & Chi tiết Phiếu Nhập
CREATE TABLE PHIEUNHAP (
    MaPhieuNhap INT PRIMARY KEY IDENTITY(1,1),
    MaKho INT FOREIGN KEY REFERENCES KHO(MaKho),
    NguoiTao NVARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT GETDATE(),
    MaQuanLy INT FOREIGN KEY REFERENCES QUANLY(MaQuanLy),
    ThanhTien FLOAT NOT NULL
);

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển Thác nước (Waterfall Model) với 5 giai đoạn nghiêm ngặt:

[Khởi tạo & Lập kế hoạch] 
[Phân tích hệ thống] 
[Thiết kế hệ thống] 
[Hiện thực hóa mã nguồn] 
[Kiểm thử & Bàn giao]
         (2.0 tuần: Unit Testing, UAT trên dữ liệu 44 bàn)

Ma trận Đánh giá & Giảm thiểu Rủi ro

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Xung đột ghi dữ liệu đồng thời (Concurrency) Cao Sử dụng SqlTransaction kết hợp mức cô lập giao dịch phù hợp trong SQL Server 2005.
Mất kết nối mạng LAN nội bộ Trung bình Bắt ngoại lệ SqlException tại tầng DAL, hiển thị thông báo thân thiện và lưu tạm bộ đệm giao diện.
Lỗi tràn số khi tính tiền/lương Thấp Định nghĩa kiểu dữ liệu FLOAT/DECIMAL cho trường số tiền, kiểm tra validate dữ liệu đầu vào trên WinForms.

Implementation và kết quả

Quá trình phát triển và Thuật toán cốt lõi

Hệ thống được cấu trúc thành các module xử lý nghiệp vụ độc lập, giao tiếp với cơ sở dữ liệu qua thư viện System.Data.SqlClient. Dưới đây là hiện thực thuật toán chốt hóa đơn bán hàng kết hợp tính chiết khấu cho khách hàng thân thiết và thuật toán tính lương tự động:

1. Thuật toán xử lý thanh toán hóa đơn và áp dụng chiết khấu

using System;
using System.Data;
using System.Data.SqlClient;

public class BanHangService
{
    private string connectionString = "Server=localhost;Database=QuanLyHuuHanhClub;User Id=sa;Password=secret;";

    public bool ThanhToanHoaDon(int maThucDon, int maKhachHang, float tyLeGiamGia, out float tongThanhTien)
    {
        tongThanhTien = 0;
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            SqlTransaction transaction = conn.BeginTransaction();
            try
            {
                // 1. Tính tổng tiền các món ăn trong thực đơn
                string sqlQueryItems = @"SELECT SUM(m.GiaMonAn * nd.SoLuong) AS TamTinh
                                        FROM NOIDUNGTHUCDON nd
                                        INNER JOIN MONAN m ON nd.MaMonAn = m.MaMonAn
                                        WHERE nd.MaThucDon = @MaThucDon";
                
                SqlCommand cmdGetTotal = new SqlCommand(sqlQueryItems, conn, transaction);
                cmdGetTotal.Parameters.AddWithValue("@MaThucDon", maThucDon);
                
                object result = cmdGetTotal.ExecuteScalar();
                float tamTinh = (result != DBNull.Value && result != null) ? Convert.ToSingle(result) : 0f;

                // 2. Tính tiền khuyến mãi nếu là khách hàng quen
                float tienKhuyenMai = tamTinh * (tyLeGiamGia / 100f);
                tongThanhTien = tamTinh - tienKhuyenMai;

                // 3. Cập nhật hóa đơn thực đơn
                string sqlUpdateThucDon = @"UPDATE THUCDON 
                                            SET ThanhTien = @ThanhTien, 
                                                MaKhachHang = @MaKhachHang, 
                                                NgayLap = GETDATE() 
                                            WHERE Mathucdon = @MaThucDon";

                SqlCommand cmdUpdate = new SqlCommand(sqlUpdateThucDon, conn, transaction);
                cmdUpdate.Parameters.AddWithValue("@ThanhTien", tongThanhTien);
                cmdUpdate.Parameters.AddWithValue("@MaKhachHang", maKhachHang > 0 ? (object)maKhachHang : DBNull.Value);
                cmdUpdate.Parameters.AddWithValue("@MaThucDon", maThucDon);
                cmdUpdate.ExecuteNonQuery();

                transaction.Commit();
                return true;
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                // Ghi log ngoại lệ hệ thống
                return false;
            }
        }
    }
}

2. Thuật toán tính tổng lương nhân viên theo tháng

Thuật toán tính toán bảng lương tổng hợp dựa trên số ngày công thực tế, giờ làm thêm ngoài giờ chuẩn, tiền phạt vi phạm và tiền thưởng căn cứ theo kết quả doanh thu:

$$\text{Tổng lương} = \left( \frac{\text{Lương cơ bản}}{26} \times \text{Ngày công} \right) + \left( \text{Giờ làm thêm} \times \frac{\text{Lương cơ bản}}{26 \times 8} \times 1.5 \right) + \text{Lương thưởng} - \text{Tiền phạt}$$

public class LuongService
{
    public float TinhTongLuong(float luongCoBan, int ngayCong, int gioLamThem, float luongThuong, float tienPhat)
    {
        // Giả định 26 ngày công chuẩn mỗi tháng, 8 giờ/ngày
        float luongNgay = luongCoBan / 26.0f;
        float luongGio = luongNgay / 8.0f;

        float tienLuongCong = luongNgay * ngayCong;
        float tienLuongOvertime = gioLamThem * luongGio * 1.5f; // Hệ số làm thêm 1.5

        float tongLuong = tienLuongCong + tienLuongOvertime + luongThuong - tienPhat;
        return (tongLuong > 0) ? tongLuong : 0;
    }
}

Kiểm thử và Đánh giá hiệu năng

Quá trình kiểm thử được thực hiện qua 45 ca kiểm thử (Test Cases) bao phủ toàn bộ các luồng nghiệp vụ trên tập dữ liệu mô phỏng 44 bàn và 8 nhân viên vận hành đồng thời:

===========================================================================
                       KẾT QUẢ KIỂM THỬ HỆ THỐNG
===========================================================================
 [Unit Test]:         45/45 Test Cases Passed (100% Code Coverage DAL/BLL)
 [Response Time]:     < 350ms (Truy vấn hóa đơn & kết xuất báo cáo)
 [Concurrent Users]:  10 Phiên làm việc đồng thời qua mạng LAN không deadlock
 [Data Integrity]:    100% Khóa ngoại & Ràng buộc Transaction chính xác
===========================================================================

Kết quả đối soát mục tiêu dự án

Hạng mục chức năng Trạng thái kế hoạch Kết quả thực tế Mức độ hoàn thành
Quản lý danh mục & Bán hàng 44 bàn, chuyển/gộp bàn Hoàn thiện đầy đủ giao diện trực quan 100%
Chấm công & Tính lương Tự động hóa 100% Bảng chấm công liên kết trực tiếp bảng lương 100%
Quản lý khách hàng thân thiết Phân loại & chiết khấu Tích hợp chiết khấu trực tiếp trên Form bán hàng 100%
Quản lý nhập kho nguyên liệu Phiếu nhập & lưu sổ kho Quản lý nhà cung cấp, giá vốn nguyên liệu 100%
Báo cáo doanh thu & kho Xuất báo cáo theo tháng Kết xuất báo cáo nhanh, chính xác 100%

Đổi mới và đóng góp

  1. Mô hình hóa dữ liệu liên kết đa tầng: Khác với các ứng dụng bán hàng thông thường chỉ tập trung vào khâu Order, đồ án đã thiết lập chuỗi quan hệ dữ liệu liên hoàn giữa Hợp đồng lao động $\rightarrow$ Bảng chấm công $\rightarrow$ Bảng lương gắn liền với Doanh thu bán hàng thực tế, giúp chủ cơ sở kiểm soát chi phí nhân công trên từng đồng doanh thu tạo ra.
  2. Loại bỏ hoàn toàn quy trình thủ công bằng giấy tờ: Cắt giảm 100% thao tác chấm công sổ tay và lập phiếu nhập kho thủ công, giảm thiểu 90% lỗi tính toán sai lệch tiền lương và thất thoát hóa đơn.
  3. Cơ chế phân quyền chặt chẽ: Tách biệt rõ ràng vai trò giữa Quản lý (nhập thông tin, tạo phiếu, chấm công) và Giám đốc (duyệt lương, xem báo cáo tổng hợp), tăng tính minh bạch và bảo mật thông tin nội bộ.
+-------------------------------------------------------------------------+
|                  SO SÁNH CÁC GIẢI PHÁP QUẢN LÝ F&B                      |
+--------------------------+---------------------+------------------------+
| Tiêu chí                 | Phần mềm thương mại | Đồ án Hữu Hạnh Club    |
+--------------------------+---------------------+------------------------+
| Chi phí bản quyền hàng năm| 3.000.000 - 6.000.000| 0 VNĐ (Triển khai LAN)  |
| Khả năng tùy biến module | Thấp (Đóng gói sẵn) | Rất cao (Mã nguồn mở)  |
| Quản lý hợp đồng & lương | Phải mua thêm gói   | Tích hợp sẵn trong lõi |
| Phụ thuộc kết nối Internet| Bắt buộc (SaaS)     | Không (Độc lập mạng LAN)|
+--------------------------+---------------------+------------------------+

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế tại Hữu Hạnh Club

Hệ thống được thiết kế tối ưu cho mô hình làm việc 2 ca tại Quán Toan, Hải Phòng:

  • Đầu ca sáng (06h00): Quản lý đăng nhập hệ thống, kiểm tra tồn kho nguyên liệu trong bảng KHO, lập phiếu nhập hàng nếu thiếu nguyên liệu pha chế.
  • Trong ca vận hành (06h00 - 22h00): 4 nhân viên phục vụ tiếp nhận khách tại 44 bàn. Mọi yêu cầu thêm món, đổi bàn từ tầng 1 lên tầng 2 được nhân viên quản lý cập nhật trực tiếp vào hệ thống. Khi khách thanh toán, hệ thống tự động kiểm tra số điện thoại khách hàng trong bảng KHACHHANG để áp mức giảm giá và in hóa đơn THUCDON.
  • Cuối ca chiều (22h00): Quản lý thực hiện chấm công cho 8 nhân viên, hệ thống ghi nhận vào BANGCHAMCONG. Giám đốc có thể kiểm tra báo cáo doanh thu ngày và kết xuất số liệu tức thì.

Yêu cầu cấu hình phần cứng và Môi trường triển khai

  • Máy chủ cơ sở dữ liệu (Database Server):
    • CPU: Intel Core 2 Duo 2.0 GHz hoặc cao hơn.
    • RAM: Tối thiểu 2 GB.
    • Ổ cứng: Trống tối thiểu 10 GB (định dạng NTFS).
    • Hệ điều hành: Windows Server 2003 / Windows XP Professional / Windows 7.
    • Phần mềm nền: Microsoft SQL Server 2005 Standard/Enterprise Edition.
  • Máy trạm thu ngân (Client Workstation):
    • RAM: 1 GB.
    • Môi trường: Microsoft .NET Framework 2.0 / 3.5.
    • Thiết bị ngoại vi: Máy in hóa đơn nhiệt (kết nối cổng USB/COM), mạng nội bộ LAN 100 Mbps.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Ràng buộc nền tảng: Ứng dụng xây dựng trên Windows Forms nên chỉ vận hành trên hệ điều hành Windows, chưa hỗ trợ đa nền tảng (macOS, Linux).
  • Phạm vi mạng cục bộ: Dữ liệu chỉ đồng bộ nội bộ qua mạng LAN, Ban Giám đốc chưa thể theo dõi báo cáo từ xa qua Internet khi không có mặt tại quán.
  • Nhập liệu thủ công: Khâu chấm công vẫn cần quản lý thao tác tick chọn ngày công thay vì tích hợp đầu đọc sinh trắc học (vân tay/khuôn mặt).

Lộ trình nâng cấp và Mở rộng

                LỘ TRÌNH PHÁT TRIỂN HỆ THỐNG
[Giai đoạn 1: Hiện đại hóa]            [Giai đoạn 2: Trí tuệ hóa]
 - Chuyển đổi sang .NET 8/WPF           - Thuật toán dự báo nguyên liệu tiêu thụ
 - Kiến trúc Client-Server RESTful API  - Tích hợp máy quét vân tay chấm công
 - Mobile App (Flutter) gọi món tại bàn - Thanh toán mã VietQR động

Đối tượng hưởng lợi

+-------------------------------------------------------------------------+
|                       ĐỐI TƯỢNG HƯỞNG LỢI                               |
+-------------------------------------------------------------------------+
| 🎓 SINH VIÊN & HỌC VIÊN CNTT                                            |
|    - Tham khảo tài liệu phân tích thiết kế hệ thống chuẩn SSADM.         |
|    - Nắm vững kỹ thuật chuyển đổi từ ERD sang Lược đồ CSDL quan hệ.      |
|    - Mẫu đồ án tốt nghiệp chuẩn chỉnh từ lý thuyết đến mã nguồn C#.      |
+-------------------------------------------------------------------------+
| 💻 LẬP TRÌNH VIÊN PHẦN MỀM (DEVELOPERS)                                 |
|    - Mẫu kiến trúc ứng dụng WinForms kết nối ADO.NET chuẩn mực.          |
|    - Đoạn mã xử lý SqlTransaction kiểm soát lỗi thanh toán và tính lương.|
+-------------------------------------------------------------------------+
| 🏢 DOANH NGHIỆP & CHỦ CƠ SỞ F&B                                         |
|    - Giải pháp số hóa toàn diện với chi phí đầu tư phần mềm 0 đồng.     |
|    - Mô hình tinh gọn dễ áp dụng cho các nhà hàng quy mô từ 20-50 bàn.   |
+-------------------------------------------------------------------------+
| 🔬 GIẢNG VIÊN & NGHIÊN CỨU VIÊN                                          |
|    - Minh chứng thực nghiệm cho phương pháp phát triển hướng cấu trúc.  |
|    - Bộ dữ liệu kiểm thử thực tế từ bài toán kinh doanh dịch vụ tại địa phương. |
+-------------------------------------------------------------------------+

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

1. Hệ thống có yêu cầu phần cứng chuyên dụng đắt tiền để triển khai không?

Không. Hệ thống được tối ưu hóa trên nền tảng .NET Framework và SQL Server 2005, có khả năng vận hành mượt mà trên các dòng máy tính văn phòng phổ thông (RAM từ 1GB - 2GB) hiện có tại cơ sở mà không cần đầu tư máy chủ chuyên dụng.

2. Khả năng mở rộng của phần mềm khi câu lạc bộ tăng số lượng bàn lên hơn 100 bàn?

Cơ sở dữ liệu được chuẩn hóa theo dạng chuẩn 3NF và đánh chỉ mục (Index) trên các khóa chính/khóa ngoại (MaMonAn, Mathucdon, MaNhanVien), đảm bảo tốc độ phản hồi truy vấn dưới 500ms ngay cả khi quy mô mở rộng lên 100 bàn và hàng nghìn giao dịch mỗi ngày.

3. Làm thế nào để đảm bảo tính toàn vẹn dữ liệu khi máy tính bị mất điện đột ngột?

Hệ thống sử dụng cơ chế giao dịch SqlTransaction trong ADO.NET kết hợp cùng cơ chế ghi nhật ký giao dịch (Transaction Log) của SQL Server 2005. Mọi thao tác ghi hóa đơn hoặc nhập kho chưa hoàn tất sẽ được Rollback tự động, tránh hiện tượng sai lệch số liệu.

4. Chi phí bảo trì và vận hành hệ thống hàng tháng là bao nhiêu?

Hệ thống chạy trên mạng LAN nội bộ, không tốn chi phí thuê máy chủ đám mây (Cloud Server) hay phí duy trì bản quyền định kỳ. Chi phí vận hành gần như bằng 0, chỉ bao gồm bảo dưỡng phần cứng máy tính định kỳ.

5. Dự án mất bao lâu để chuyển giao và đào tạo nhân viên sử dụng thành thạo?

Nhờ giao diện WinForms thiết kế trực quan, phân tách rõ ràng theo từng nhóm chức năng (Bán hàng, Nhân sự, Lương, Kho, Báo cáo), thời gian đào tạo cho nhân viên phục vụ và quản lý chỉ mất từ 1 đến 2 buổi làm việc là có thể làm chủ toàn bộ quy trình.


Kết luận

Đồ án tốt nghiệp "Xây dựng phần mềm quản lý bán hàng tại Hữu Hạnh Club" của sinh viên Lê Thanh Tân là một công trình nghiên cứu ứng dụng hoàn chỉnh, giải quyết xuất sắc bài toán thực tế trong quản lý dịch vụ F&B. Dự án không chỉ thể hiện năng lực học thuật vững vàng trong việc vận dụng phương pháp phân tích thiết kế hệ thống hướng cấu trúc (DFD, ERD) mà còn chứng minh giá trị thực tiễn cao khi số hóa thành công quy trình bán hàng 44 bàn, tự động hóa chấm công - tính lương cho 8 nhân sự và quản lý kho minh bạch.

Đây là tài liệu tham khảo giá trị cho sinh viên chuyên ngành Công nghệ phần mềm, Hệ thống thông tin trong việc nghiên cứu, triển khai các giải pháp phần mềm quản trị doanh nghiệp vừa và nhỏ. Bạn đọc và các lập trình viên có thể ứng dụng trực tiếp kiến trúc cơ sở dữ liệu và mã nguồn nghiệp vụ của đồ án để tùy biến, phát triển cho các mô hình kinh doanh tương tự.