Giới thiệu dự án
Ngành dịch vụ ăn uống (Food and Beverage - F&B) tại Việt Nam đang trải qua giai đoạn chuyển đổi số mạnh mẽ. Theo thống kê từ các hiệp hội bán lẻ và dịch vụ ẩm thực, hơn 70% các mô hình nhà hàng, quán ăn quy mô vừa và nhỏ (SMB) vẫn còn phụ thuộc vào quy trình ghi chép sổ sách thủ công hoặc các máy tính POS đơn lẻ không đồng bộ. Điều này gây ra độ trễ phục vụ trung bình từ 15 đến 20 phút mỗi lượt gọi món, tỷ lệ sai sót thực đơn khi chuyển giao giữa bồi bàn - thu ngân - bếp dao động từ 5% đến 8%, đồng thời gây thất thoát đáng kể trong việc kiểm soát nguyên vật liệu và doanh thu ca trực.
Đồ án tốt nghiệp "Xây dựng phần mềm quản lý quán ăn" được thực hiện bởi sinh viên Phạm Kim Hùng (MSSV: 16110346) và Lê Hoàng Hưng (MSSV: 16110348), dưới sự hướng dẫn khoa học của ThS. Nguyễn Trần Thi Văn tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE). Đề tài giải quyết trực tiếp bài toán vận hành thực tế tại Quán ăn Idol (đường số 18, phường Linh Trung, TP. Thủ Đức, TP.HCM) – một mô hình kinh doanh ăn uống quy mô 20 bàn với 1 quản lý, 2 thu ngân và 6 nhân viên chạy bàn.
+----------------------------------------------+
| HỆ THỐNG QUẢN LÝ |
+----------------------------------------------+
|
+-----------------------+-----------------------+
| |
v v
+---------------------------------+ +---------------------------------+
| WINFORMS CLIENT | | REACT NATIVE CLIENT |
| (Quản trị, Thu ngân, Kế toán) | | (Nhân viên Order di động) |
| - DevExpress UI Framework | | - Cross-platform (iOS/Android) |
| - Entity Framework / LINQ to SQL| | - RESTful API Requests |
+---------------------------------+ +---------------------------------+
| |
+-----------------------+-----------------------+
|
v
+-----------------------------------------------+
| MS SQL SERVER 2017 & NODEJS API |
| - Quản lý Thực đơn, Công thức, Nguyên liệu |
| - Xử lý Giao dịch, Gộp bàn, Chuyển bàn |
| - Chấm công, Phân ca, Thống kê Doanh thu |
+-----------------------------------------------+
Mục tiêu dự án
- Chuẩn hóa quy trình đặt bàn và order món: Số hóa 100% quy trình ghi phiếu thủ công (2 liên giấy) sang mô hình gọi món di động thời gian thực (Real-time Mobile Ordering) cho nhân viên phục vụ.
- Xây dựng hệ thống điều hành tập trung (Centralized POS): Phát triển ứng dụng Desktop (WinForms) dành cho quản lý và thu ngân với đầy đủ tính năng: điều phối sơ đồ bàn, gộp bàn, chuyển bàn, tính tiền, xuất hóa đơn VAT (10%), hủy món và chốt ca làm việc.
- Kiểm soát định lượng và nguyên vật liệu: Thiết lập cơ chế ánh xạ công thức cấu thành món ăn (
CONGTHUC), tự động liên kết dữ liệu thực đơn (THUCDON) với kho nguyên liệu (NGUYENLIEU) để hỗ trợ hoạch định tiêu hao.
- Tự động hóa nhân sự và kế toán nội bộ: Tích hợp module phân ca (
CA), chấm công hàng ngày (CHAMCONG), tính lương cơ bản (LuongCoBan) và báo cáo doanh thu đa chiều theo ngày, tuần, tháng, năm.
Giải pháp và phạm vi triển khai
Đề tài áp dụng mô hình kiến trúc phân tầng kết hợp đa nền tảng:
- Ứng dụng Desktop: Phát triển trên nền tảng .NET C# WinForms kết hợp bộ thư viện DevExpress 17.1, tối ưu hóa cho các thao tác tác vụ nặng của thu ngân và quản trị viên.
- Ứng dụng Mobile: Lập trình bằng framework React Native kết nối qua hệ thống RESTful API xây dựng trên nền tảng Node.js, phục vụ tính cơ động của nhân viên chạy bàn.
- Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server 2017 đảm bảo tính toàn vẹn dữ liệu (ACID) và khả năng lưu trữ vận hành dài hạn.
Phạm vi và giới hạn: Hệ thống tập trung tối ưu hóa quy trình nghiệp vụ nội bộ tại một địa điểm kinh doanh cụ thể, triển khai trong mạng cục bộ (LAN/WLAN) và Internet riêng của cơ sở, chưa bao gồm cổng thanh toán điện tử trực tuyến hay tích hợp sàn thương mại điện tử giao đồ ăn bên thứ ba.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Tại các cơ sở F&B truyền thống như Quán ăn Idol, quy trình thủ công tạo ra các điểm nghẽn nghiêm trọng:
| Tiêu chí |
Quản lý thủ công (Ghi giấy) |
Phần mềm SaaS thương mại |
Giải pháp đề tài (WinForms + Mobile) |
| Tốc độ xử lý Order |
Chậm (5-10 phút/lượt chạy bàn) |
Nhanh (< 3 giây qua Cloud) |
Tức thời (< 2 giây qua REST API LAN) |
| Độ chính xác thanh toán |
Thấp (Dễ nhầm lẫn máy tính tay) |
Rất cao (Tự động tính toán) |
Rất cao (Tự động tính VAT, giảm trừ) |
| Chi phí duy trì |
Chi phí giấy tờ, nhân công thất thoát |
Phí thuê bao hàng tháng/năm cao |
Đầu tư một lần, làm chủ mã nguồn |
| Kiểm soát định lượng |
Hầu như không có |
Có sẵn nhưng cấu hình phức tạp |
Tích hợp trực tiếp module CONGTHUC |
| Quản lý phân quyền |
Không kiểm soát được ca trực |
Phân quyền linh hoạt |
Phân quyền RBAC trực tiếp theo tài khoản |
Phân tích yêu cầu theo mô hình MoSCoW
+-----------------------------------------------------------------------------------+
| PHÂN LOẠI YÊU CẦU MoSCoW |
+-----------------------------------------------------------------------------------+
| MUST HAVE (Bắt buộc) | - Đăng nhập / Đăng xuất / Phân quyền (Admin, Thu ngân, Phục vụ) |
| | - Quản lý Bàn, Khu vực, Thực đơn, Loại món, Nhân viên |
| | - Thao tác bàn: Đặt món, Chuyển bàn, Gộp bàn, Tính tiền |
| | - Xuất hóa đơn thanh toán, Xuất bill tạm tính |
| | - Quản lý Chốt ca làm việc theo nhân sự |
+-------------------------+---------------------------------------------------------+
| SHOULD HAVE (Nên có) | - Gọi món di động qua App React Native |
| | - Quản lý Công thức & Định lượng nguyên vật liệu |
| | - Chấm công theo ca và Thống kê bảng lương |
| | - Thống kê doanh thu theo mốc thời gian linh hoạt |
+-------------------------+---------------------------------------------------------+
| COULD HAVE (Có thể có) | - In hóa đơn đỏ tự động cộng 10% thuế VAT |
| | - Đặt bàn trước kèm ghi nhận thông tin khách hàng |
| | - Bộ lọc và tìm kiếm nhanh nhân sự, thực đơn |
+-------------------------+---------------------------------------------------------+
| WON'T HAVE (Chưa làm) | - Thanh toán ví điện tử MoMo, VNPay (để ngỏ v2.0) |
| | - Quản lý chuỗi nhiều chi nhánh (Multi-branch) |
+-----------------------------------------------------------------------------------+
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc 3 tầng (3-Tier Architecture) cho ứng dụng WinForms kết hợp mô hình Client-Server cho ứng dụng Di động.
graph TD
subgraph Client Layer
A[WinForms Desktop Client<br/>DevExpress 17.1 UI]
B[Mobile App Client<br/>React Native Engine]
end
subgraph Service & Business Layer
C[WinForms BLL<br/>Business Logic Layer]
D[Node.js RESTful API Service<br/>Express Framework]
end
subgraph Data Access Layer
E[Data Access Layer<br/>LINQ to SQL / Entity Framework]
F[Database Controller<br/>Native SQL Driver]
end
subgraph Database Layer
G[(MS SQL Server 2017<br/>Relational Database)]
end
A --> C
C --> E
E --> G
B -->|HTTP/REST JSON| D
D --> F
F --> G
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Cơ sở dữ liệu bao gồm các thực thể cốt lõi phục vụ trọn vẹn chu trình quản lý nhà hàng:
-- Bảng Loại Tài Khoản
CREATE TABLE LOAITAIKHOAN (
MaLoaiTK INT PRIMARY KEY IDENTITY(1,1),
TenLoaiTK NVARCHAR(50) NOT NULL
);
-- Bảng Nhân Viên
CREATE TABLE NHANVIEN (
MaNV VARCHAR(10) PRIMARY KEY,
HoTen NVARCHAR(100) NOT NULL,
Phai NVARCHAR(10),
NgaySinh DATE,
DiaChi NVARCHAR(200),
SDT VARCHAR(15),
NgayVaoLam DATE,
LuongCoBan DECIMAL(18,2) DEFAULT 0
);
-- Bảng Tài Khoản Hệ Thống
CREATE TABLE TAIKHOAN (
TenDN VARCHAR(50) PRIMARY KEY,
MatKhau VARCHAR(256) NOT NULL,
MaNV VARCHAR(10) FOREIGN KEY REFERENCES NHANVIEN(MaNV) ON DELETE CASCADE,
MaLoaiTK INT FOREIGN KEY REFERENCES LOAITAIKHOAN(MaLoaiTK),
TrangThai BIT DEFAULT 1
);
-- Bảng Ca Làm Việc & Chấm Công
CREATE TABLE CA (
MaCa VARCHAR(10) PRIMARY KEY,
GioBatDau TIME NOT NULL,
GioKetThuc TIME NOT NULL
);
CREATE TABLE CHAMCONG (
MaNV VARCHAR(10) FOREIGN KEY REFERENCES NHANVIEN(MaNV),
NgayLam DATE NOT NULL,
MaCa VARCHAR(10) FOREIGN KEY REFERENCES CA(MaCa),
PRIMARY KEY (MaNV, NgayLam, MaCa)
);
-- Bảng Nguyên Liệu & Thực Đơn
CREATE TABLE NGUYENLIEU (
MaNL VARCHAR(10) PRIMARY KEY,
TenNL NVARCHAR(100) NOT NULL,
DVT NVARCHAR(20) NOT NULL,
SoLuong FLOAT DEFAULT 0
);
CREATE TABLE LOAIMON (
MaLoai VARCHAR(10) PRIMARY KEY,
TenLoai NVARCHAR(100) NOT NULL
);
CREATE TABLE THUCDON (
MaMon VARCHAR(10) PRIMARY KEY,
TenMon NVARCHAR(100) NOT NULL,
DonGia DECIMAL(18,2) NOT NULL,
DVT NVARCHAR(20),
MaLoai VARCHAR(10) FOREIGN KEY REFERENCES LOAIMON(MaLoai),
HinhAnh NVARCHAR(255)
);
-- Bảng Công Thức Định Lượng Món Ăn
CREATE TABLE CONGTHUC (
MaMon VARCHAR(10) FOREIGN KEY REFERENCES THUCDON(MaMon),
MaNL VARCHAR(10) FOREIGN KEY REFERENCES NGUYENLIEU(MaNL),
HamLuong FLOAT NOT NULL,
PRIMARY KEY (MaMon, MaNL)
);
-- Bảng Khu Vực & Bàn Ăn
CREATE TABLE KHUVUC (
MaKhuVuc VARCHAR(10) PRIMARY KEY,
TenKhuVuc NVARCHAR(50) NOT NULL
);
CREATE TABLE BAN (
MaBan VARCHAR(10) PRIMARY KEY,
TenBan NVARCHAR(50) NOT NULL,
SoNguoiToiDa INT DEFAULT 4,
MaKhuVuc VARCHAR(10) FOREIGN KEY REFERENCES KHUVUC(MaKhuVuc),
TrangThai NVARCHAR(30) DEFAULT N'Trống' -- 'Trống', 'Có người', 'Đã đặt'
);
Đặc tả API cho ứng dụng di động
Hệ thống cung cấp các endpoint RESTful chính:
POST /api/auth/login: Xác thực tài khoản nhân viên phục vụ, trả về mã trạng thái và phiên làm việc.
GET /api/tables: Lấy danh sách trạng thái toàn bộ bàn theo từng khu vực.
GET /api/menu: Truy xuất danh mục món ăn phân loại theo LOAIMON.
POST /api/orders/place: Gửi danh sách món gọi từ bàn di động về máy chủ POS.
POST /api/orders/request-temp-bill: Gửi cờ yêu cầu xuất hóa đơn tạm tính đến quầy thu ngân.
Phương pháp nghiên cứu và phát triển
Dự án áp dụng mô hình phát triển phần mềm lặp kết hợp kiểm thử liên tục trong thời gian 15 tuần (từ ngày 30/03/2020 đến 12/07/2020):
| Giai đoạn |
Thời gian |
Nhiệm vụ chính |
Sản phẩm bàn giao |
| Tuần 1 - 2 |
30/03 – 12/04/2020 |
Khảo sát thực tế Quán ăn Idol, mô hình hóa Use Case |
Tài liệu yêu cầu, Sơ đồ Use Case tổng thể |
| Tuần 3 - 5 |
13/04 – 03/05/2020 |
Thiết kế CSDL, nghiên cứu WinForms & React Native |
Sơ đồ ERD, Database Script, Wireframe UI |
| Tuần 6 - 8 |
04/05 – 24/05/2020 |
Xây dựng RESTful API Node.js, thiết kế giao diện |
Document API, Giao diện WinForms & Mobile hoàn chỉnh |
| Tuần 9 - 10 |
25/05 – 07/06/2020 |
Lập trình chức năng nghiệp vụ bàn, thực đơn, nhân sự |
Bản build Alpha chạy thông luồng Desktop - Mobile |
| Tuần 11 - 12 |
08/06 – 21/06/2020 |
Ghép nối module Thống kê, Báo cáo, Chốt ca, In bill |
Bản build Beta tích hợp hoàn chỉnh hệ thống |
| Tuần 13 - 14 |
22/06 – 05/07/2020 |
Kiểm thử chức năng, tối ưu hóa truy vấn SQL, sửa lỗi |
Bộ Test Cases, Báo cáo kết quả kiểm thử |
| Tuần 15 |
06/07 – 12/07/2020 |
Đóng gói sản phẩm, hoàn thiện tài liệu khóa luận |
Bản cài đặt phần mềm, Thuyết minh đồ án tốt nghiệp |
Triển khai và kết quả thực nghiệm
Quy trình phát triển và hiện thực mã nguồn
Hệ thống được phát triển với sự phân định rõ ràng giữa tầng hiển thị, tầng xử lý nghiệp vụ và tầng giao tiếp dữ liệu.
Xử lý nghiệp vụ chuyển bàn và gộp bàn (C# / WinForms)
Khi phát sinh yêu cầu chuyển bàn từ bàn $A$ sang bàn $B$ (yêu cầu bàn $B$ phải đang trống), hệ thống thực hiện cập nhật khóa ngoại mã bàn trong phiếu gọi món hiện hành và cập nhật lại trạng thái hiển thị của cả hai bàn trong cơ sở dữ liệu:
public bool ChuyenBan(string maBanNguon, string maBanDich)
{
using (var dbContext = new QuanLyQuanAnDataContext())
{
using (var transaction = dbContext.Connection.BeginTransaction())
{
try
{
dbContext.Transaction = transaction;
// 1. Kiểm tra trạng thái bàn đích
var banDich = dbContext.BANs.FirstOrDefault(b => b.MaBan == maBanDich);
if (banDich == null || banDich.TrangThai != "Trống")
{
return false;
}
// 2. Tìm hóa đơn chưa thanh toán của bàn nguồn
var hoaDonNguon = dbContext.HOADONs
.FirstOrDefault(hd => hd.MaBan == maBanNguon && hd.TrangThai == false);
if (hoaDonNguon != null)
{
// Chuyển mã bàn trên hóa đơn sang bàn đích
hoaDonNguon.MaBan = maBanDich;
// 3. Cập nhật trạng thái hai bàn
var banNguon = dbContext.BANs.FirstOrDefault(b => b.MaBan == maBanNguon);
if (banNguon != null) banNguon.TrangThai = "Trống";
banDich.TrangThai = "Có người";
dbContext.SubmitChanges();
transaction.Commit();
return true;
}
return false;
}
catch (Exception ex)
{
transaction.Rollback();
throw new Exception("Lỗi khi chuyển bàn: " + ex.Message);
}
}
}
}
Xử lý tiếp nhận Order di động trên Node.js Backend
Dịch vụ Node.js tiếp nhận request dạng JSON từ ứng dụng React Native, mở giao dịch lưu chi tiết món ăn và tự động kích hoạt cập nhật trạng thái bàn:
// Endpoint tiếp nhận đặt món từ Mobile Client
router.post('/api/orders/place', async (req, res) => {
const { maBan, maNV, danhSachMon } = req.body;
const pool = await sql.connect(dbConfig);
const transaction = new sql.Transaction(pool);
try {
await transaction.begin();
// 1. Tạo hoặc lấy hóa đơn hiện tại của bàn
const request = new sql.Request(transaction);
let resultHD = await request
.input('MaBan', sql.VarChar(10), maBan)
.input('MaNV', sql.VarChar(10), maNV)
.query(`
IF NOT EXISTS (SELECT 1 FROM HOADON WHERE MaBan = @MaBan AND TrangThai = 0)
BEGIN
INSERT INTO HOADON (MaBan, MaNV, NgayLap, TrangThai, TongTien)
OUTPUT INSERTED.MaHD
VALUES (@MaBan, @MaNV, GETDATE(), 0, 0);
END
ELSE
BEGIN
SELECT MaHD FROM HOADON WHERE MaBan = @MaBan AND TrangThai = 0;
END
`);
const maHD = resultHD.recordset[0].MaHD;
// 2. Thêm từng món vào Chi Tiết Hóa Đơn
for (const item of danhSachMon) {
const detailRequest = new sql.Request(transaction);
await detailRequest
.input('MaHD', sql.Int, maHD)
.input('MaMon', sql.VarChar(10), item.maMon)
.input('SoLuong', sql.Int, item.soLuong)
.input('DonGia', sql.Decimal(18, 2), item.donGia)
.query(`
INSERT INTO CHITIETHOADON (MaHD, MaMon, SoLuong, DonGia)
VALUES (@MaHD, @MaMon, @SoLuong, @DonGia);
`);
}
// 3. Đánh dấu bàn chuyển sang 'Có người'
const updateBanReq = new sql.Request(transaction);
await updateBanReq
.input('MaBan', sql.VarChar(10), maBan)
.query(`UPDATE BAN SET TrangThai = N'Có người' WHERE MaBan = @MaBan`);
await transaction.commit();
return res.status(200).json({ success: true, message: 'Đặt món thành công', maHD });
} catch (err) {
await transaction.rollback();
return res.status(500).json({ success: false, error: err.message });
}
});
Kiểm thử và đánh giá hiệu năng
Quá trình kiểm thử phần mềm được tiến hành qua các giai đoạn Unit Testing, Integration Testing và User Acceptance Testing (UAT) trực tiếp với nhân viên quán ăn.
+-----------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ VÀ ĐÁNH GIÁ HIỆU NĂNG |
+-----------------------------------------------------------------------------------+
| Tiêu chí đánh giá | Mục tiêu thiết kế | Kết quả thực nghiệm đạt được |
+---------------------------+--------------------+----------------------------------+
| Thời gian phản hồi UI POS | <= 1.0 giây | 0.25 - 0.45 giây (DevExpress) |
| Tốc độ xử lý API Mobile | <= 5.0 giây | 0.35 - 0.85 giây (Trong LAN Wi-Fi)|
| Độ chính xác tính toán bill| 100% | 100% (Khớp tuyệt đối doanh thu) |
| Tỷ lệ test case Passed | >= 95% | 98.4% (62/63 Test cases hợp lệ) |
| Tải đồng thời thiết bị di | >= 10 kết nối | Đáp ứng tốt 15 kết nối cùng lúc |
| Đảm bảo toàn vẹn dữ liệu | Không mất mát dữ | 100% nhờ cơ chế Transaction SQL |
+-----------------------------------------------------------------------------------+
Đổi mới và đóng góp kỹ thuật
- Kiến trúc đồng bộ lai giữa Desktop POS và Mobile App: Giải quyết triệt để sự phân tách giữa nghiệp vụ thu ngân cố định và nghiệp vụ phục vụ di động. Việc tích hợp Node.js REST API làm cầu nối cho phép cập nhật tức thời trạng thái 20 bàn mà không gây xung đột khóa (Lock contention) trên MS SQL Server.
- Kiểm soát vòng đời nguyên vật liệu theo định lượng thực đơn: Khác với các phần mềm bán hàng thông thường chỉ quản lý số lượng tồn kho thành phẩm, đề tài xây dựng bảng quan hệ n-n
CONGTHUC giữa THUCDON và NGUYENLIEU. Khi xuất hóa đơn món ăn, hệ thống có khả năng tự động truy xuất hàm lượng tiêu hao, tạo tiền đề tính toán chính xác giá vốn hàng bán (COGS).
- Quy trình đóng ca (Chốt ca) chặt chẽ: Tích hợp tính năng đối soát tiền mặt tức thì tại thời điểm giao ca. Người chốt ca phải bàn giao khớp số liệu tổng tiền bán được trong ca trực trước khi hệ thống cho phép tài khoản tiếp theo nhận ca, hạn chế tối đa thất thoát tài chính.
- Tích hợp quản trị nhân sự - chấm công - bảng lương: Tự động tổng hợp số công từ bảng
CHAMCONG và hệ số lương CA làm việc, xuất báo cáo chi phí lương trực tiếp mà không cần sử dụng phần mềm bảng tính Excel rời rạc.
Ứng dụng thực tế và triển khai
Kịch bản vận hành thực tế
Tại Quán ăn Idol, hệ thống hỗ trợ chu trình phục vụ khép kín:
- Tiếp khách: Khách đến bàn số 5, nhân viên phục vụ dùng điện thoại Android/iOS mở ứng dụng React Native, chọn Bàn 5 $\rightarrow$ Chọn món từ danh mục $\rightarrow$ Xác nhận đặt món.
- Xử lý & Chế biến: Hệ thống POS tại quầy thu ngân nhận dữ liệu tức thì, hiển thị bàn 5 chuyển sang màu đỏ ("Có người") và in phiếu chế biến cho bếp.
- Yêu cầu tính tiền: Khi khách yêu cầu thanh toán, nhân viên bấm "Xuất Bill Tạm" trên điện thoại. Thu ngân kiểm tra danh sách món, in hóa đơn tạm tính gửi khách kiểm tra.
- Thanh toán & Đóng bàn: Khách gửi tiền mặt, thu ngân nhập số tiền nhận, phần mềm tính tiền thừa, xuất hóa đơn VAT (nếu có yêu cầu), bàn 5 tự động chuyển về trạng thái màu xanh ("Trống").
+-----------------------------------------------------------------------------------+
| YÊU CẦU PHẦN CỨNG VÀ MÔI TRƯỜNG TRIỂN KHAI |
+-----------------------------------------------------------------------------------+
| Thành phần | Cấu hình tối thiểu đề xuất |
+---------------------+-------------------------------------------------------------+
| Máy chủ POS (Host) | Windows 10/11 64-bit, Intel Core i3 Gen 7+, 8GB RAM, SSD 120GB|
| Phần mềm máy chủ | MS SQL Server 2017 Express, Node.js runtime v12.x+, .NET 4.7|
| Thiết bị di động | Smartphone Android 7.0+ hoặc iOS 11.0+, RAM 2GB+ |
| Thiết bị ngoại vi | Máy in hóa đơn nhiệt khổ K80 (LAN/USB), Router Wi-Fi chuẩn AC|
+-----------------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (ROI)
- Tiết kiệm chi phí vận hành: Cắt giảm 100% chi phí in ấn cuốn order giấy 2 liên (~500.000 VNĐ/tháng).
- Tăng năng suất phục vụ: Rút ngắn thời gian di chuyển của nhân viên bồi bàn từ bàn ăn về quầy thu ngân và bếp, tăng năng lực phục vụ của quán trong giờ cao điểm lên 30 - 35%.
- Thời gian hoàn vốn đầu tư (Payback Period): Dự án phần mềm nội bộ giúp cơ sở tiết kiệm chi phí thuê dịch vụ SaaS định kỳ (khoảng 3 - 5 triệu VNĐ/năm), thời gian thu hồi toàn bộ chi phí trang bị phần cứng ước tính từ 3 đến 5 tháng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Chưa tích hợp cơ chế đồng bộ dữ liệu thời gian thực hai chiều thông qua WebSocket (Socket.io), hiện ứng dụng di động vẫn dựa trên cơ chế HTTP Request/Response chuẩn.
- Chưa hỗ trợ chế độ Offline-first hoàn chỉnh trên Mobile nếu kết nối Wi-Fi cục bộ bị gián đoạn đột ngột.
- Chưa kết nối trực tiếp với hệ thống hóa đơn điện tử có mã của Cơ quan Thuế theo thông tư mới.
Hướng nâng cấp mở rộng
- Kiến trúc Cloud & Multi-tenant: Chuyển đổi cơ sở dữ liệu lên đám mây (Azure SQL / AWS RDS) để hỗ trợ chuỗi cửa hàng quản lý tập trung nhiều chi nhánh.
- Tích hợp thanh toán số: Tích hợp cổng thanh toán mã VietQR động, ví MoMo, ZaloPay và VNPay.
- Áp dụng trí tuệ nhân tạo (AI): Phân tích xu hướng tiêu dùng món ăn theo mùa và dự báo lượng nguyên vật liệu cần nhập thông qua mô hình học máy (Machine Learning).
Đối tượng hưởng lợi
mindmap
root((Hệ Thống Quản Lý Quán Ăn))
Sinh Viên CNTT
Tham khảo đồ án tốt nghiệp chuẩn mực
Học hỏi thiết kế CSDL quan hệ chuẩn hóa 3NF
Mô hình hóa nghiệp vụ Use Case và DFD chi tiết
Lập Trình Viên
Pattern tích hợp .NET WinForms và Node.js REST API
Kỹ thuật tối ưu giao dịch Transaction trong C# LINQ
Mẫu code kết nối đa nền tảng với React Native
Chủ Doanh Nghiệp F&B
Giải pháp chuyển đổi số chi phí thấp
Minh bạch hóa dòng tiền và chốt ca làm việc
Kiểm soát hao hụt kho nguyên liệu theo định lượng
Giảng Viên & Nghiên Cứu
Tài liệu thực hành công nghệ phần mềm ứng dụng
Mẫu khảo sát nghiệp vụ thực tế tại doanh nghiệp SMB
Câu hỏi thường gặp
1. Hệ thống yêu cầu cấu hình phần cứng như thế nào để triển khai?
Hệ thống yêu cầu một máy tính để bàn hoặc laptop chạy hệ điều hành Windows 10/11 (RAM tối thiểu 4GB, khuyến nghị 8GB) đóng vai trò máy chủ cục bộ chứa MS SQL Server 2017 và chạy Node.js API Service. Nhân viên phục vụ chỉ cần điện thoại thông minh phổ thông (Android hoặc iOS) kết nối chung mạng Wi-Fi của quán ăn.
2. Khi mất kết nối mạng Internet, phần mềm có hoạt động được không?
Có. Hệ thống được thiết kế để triển khai trên hệ thống mạng nội bộ (LAN). Khi mất mạng Internet ra ngoài, các máy POS và điện thoại di động vẫn giao tiếp bình thường với máy chủ cơ sở dữ liệu qua mạng Wi-Fi nội bộ của quán, đảm bảo nghiệp vụ bán hàng không bao giờ bị gián đoạn.
3. Làm thế nào để đảm bảo tính chính xác giữa kho nguyên liệu và số lượng món ăn đã bán?
Thông qua bảng quan hệ CONGTHUC. Mỗi khi một món ăn được thanh toán thành công trên hóa đơn, hệ thống kích hoạt hàm tính toán nhân số lượng món bán ra với HamLuong từng thành phần trong công thức, sau đó trừ trực tiếp vào cột SoLuong của bảng NGUYENLIEU.
4. Hệ thống phân quyền nhân viên và bảo mật mật khẩu ra sao?
Hệ thống sử dụng cơ chế kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC). Quản trị viên/Chủ quán có toàn quyền truy cập cấu hình, xem doanh thu và tính lương; nhân viên phục vụ chỉ có quyền thao tác trên sơ đồ bàn và gọi món. Mật khẩu người dùng được mã hóa trước khi lưu trữ vào bảng TAIKHOAN.
5. Chi phí triển khai và khả năng mở rộng của phần mềm như thế nào?
Do sử dụng mã nguồn mở (Node.js, React Native) kết hợp với các phiên bản tiêu chuẩn của Microsoft SQL Server Express và .NET Framework, doanh nghiệp chỉ cần đầu tư chi phí phần cứng ban đầu. Hệ thống sẵn sàng mở rộng quy mô từ 20 bàn lên 100 bàn bằng cách nâng cấp router mạng và tối ưu chỉ mục (Index) trong cơ sở dữ liệu.
Kết luận
Đồ án tốt nghiệp "Xây dựng phần mềm quản lý quán ăn" của sinh viên Phạm Kim Hùng và Lê Hoàng Hưng tại Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết trọn vẹn bài toán số hóa nghiệp vụ F&B từ thực tế khảo sát tại Quán ăn Idol. Bằng sự kết hợp chặt chẽ giữa ứng dụng quản trị WinForms giao diện DevExpress chuyên nghiệp và ứng dụng di động React Native linh hoạt thông qua cầu nối Node.js REST API, đề tài không chỉ đạt được đầy đủ các tiêu chuẩn học thuật của một khóa luận kỹ sư Công nghệ phần mềm mà còn mang giá trị ứng dụng thực tiễn cao, giúp các đơn vị kinh doanh ẩm thực tối ưu hóa quy trình, loại bỏ sai sót và nâng cao năng lực cạnh tranh.