Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và tự động hóa quy trình bán lẻ, ngành thương mại đồ chơi trẻ em tại Việt Nam đang ghi nhận mức tăng trưởng kép hàng năm (CAGR) ấn tượng đạt trên 11.5%. Tuy nhiên, phần lớn các cửa hàng bán lẻ quy mô vừa và nhỏ (SMEs) như Store An An vẫn đối mặt với bài toán quản trị phân mảnh. Với danh mục sản phẩm đồ chơi đa dạng từ đồ chơi nhồi bông, mô hình nhân vật, xếp hình kích thích trí tuệ đến xe điều khiển từ xa, việc quản lý thủ công qua sổ sách hoặc các trang tính Excel rời rạc dẫn đến tỷ lệ thất thoát hàng hóa trung bình lên tới 5-8% doanh thu, đồng thời kéo dài thời gian thanh toán tại quầy lên 3-5 phút mỗi giao dịch.

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

Store An An gặp phải các nút thắt vận hành nghiêm trọng:

  • Tắc nghẽn thanh toán và sai lệch đơn hàng: Quá trình tra cứu giá, tính toán chiết khấu khuyến mãi (%) và in hóa đơn thủ công dễ dẫn đến sai sót số liệu kế toán.
  • Mất kiểm soát vòng đời tồn kho: Thiếu liên kết thời gian thực giữa quy trình lập phiếu nhập hàng, quản lý nhà cung cấp (NCC) và cập nhật số lượng tồn khi bán hàng.
  • Rủi ro an toàn thông tin: Dữ liệu tài khoản nhân viên, phân quyền hạn mức quản lý và giá nhập gốc của sản phẩm không được bảo mật hoặc mã hóa, dễ bị rò rỉ nội bộ.
  • Thiếu hụt dữ liệu thống kê: Chủ cửa hàng không nắm bắt được biểu đồ doanh thu theo chu kỳ (hôm nay, hôm qua, 7 ngày qua, tháng này) và Top 10 sản phẩm bán chạy để tối ưu hóa kế hoạch nhập hàng.

Mục tiêu dự án

  1. Số hóa toàn diện 100% quy trình vận hành: Tự động hóa 8 phân hệ nghiệp vụ bao gồm: Đăng nhập & phân quyền, Bán sản phẩm & In hóa đơn, Quản lý sản phẩm, Quản lý nhập hàng, Quản lý khách hàng, Quản lý nhà cung cấp, Quản lý nhân viên và Thiết lập hệ thống.
  2. Chuẩn hóa kiến trúc phần mềm: Áp dụng mô hình Kiến trúc 3 tầng (Three-Layer Architecture) kết hợp Data Transfer Object (DTO) và mẫu thiết kế Singleton nhằm tách biệt rành mạch tầng Giao diện (Presentation), Nghiệp vụ (BLL) và Truy cập dữ liệu (DAL).
  3. Bảo mật cơ sở dữ liệu: Ứng dụng kỹ thuật mật mã đối xứng cấp cơ sở dữ liệu bằng hàm EncryptByPassPhrase / DecryptByPassPhrase của Transact-SQL để mã hóa mật khẩu tài khoản người dùng.
  4. Tối ưu hóa hiệu năng và trải nghiệm người dùng: Đảm bảo thời gian xử lý giao dịch bán hàng dưới 15 giây/hóa đơn và rút ngắn thời gian làm quen phần mềm của nhân viên xuống dưới 10 phút.

Giải pháp và Phạm vi

  • Cách tiếp cận: Xây dựng ứng dụng Desktop chuyên biệt (Rich Client) dựa trên nền tảng .NET Framework và ngôn ngữ lập trình C#, lưu trữ trên hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server 2019.
  • Phạm vi ứng dụng: Đồ án Kỹ thuật phần mềm 1 tập trung triển khai cục bộ (On-Premises) cho hệ thống điểm bán hàng (POS - Point of Sale) và quản trị kho của Store An An, chưa tích hợp cổng thanh toán trực tuyến qua ngân hàng hay đồng bộ đám mây đa chi nhánh.

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

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

                    +------------------------------------------+
                    |           Mô hình giải pháp POS          |
                    +------------------------------------------+
                                         |
         +-------------------------------+-------------------------------+
         |                               |                               |
+------------------+           +-------------------+           +-------------------+
| Sổ tay / Excel   |           | SaaS Cloud POS    |           | Desktop 3-Layer   |
| (Thủ công)       |           | (KiotViet, v.v.)  |           | (Store An An)     |
+------------------+           +-------------------+           +-------------------+
| - Chi phí ban đầu: 0         | - Thuê bao hàng tháng         | - Sở hữu vĩnh viễn
| - Tốc độ tra cứu chậm        | - Phụ thuộc Internet          | - Hoạt động độc lập
| - Thất thoát dữ liệu cao     | - Rủi ro gián đoạn mạng       | - Tốc độ phản hồi cao
+------------------+           +-------------------+           +-------------------+

Ma trận so sánh giải pháp hiện hành

Tiêu chí đánh giá Sổ tay / Microsoft Excel Nền tảng SaaS Cloud (KiotViet, Sapo) Phần mềm Desktop Store An An (C# / WinForms)
Chi phí đầu tư ban đầu Thấp (0 - 500.000 VNĐ) Trung bình (1.500.000 - 3.000.000 VNĐ/năm) Tối ưu (Đầu tư 1 lần, miễn phí bản quyền)
Phụ thuộc kết nối mạng Không Bắt buộc 100% thời gian hoạt động Hoạt động Offline ổn định trên mạng LAN nội bộ
Tính toàn vẹn dữ liệu Kém, dễ bị chỉnh sửa/xóa nhầm Cao (Lưu trữ Cloud) Rất cao (Ràng buộc toàn vẹn khóa ngoại trong RDBMS)
Tốc độ phản hồi giao diện Chậm khi file dữ liệu lớn (>50MB) Phụ thuộc băng thông Internet (200ms - 1.5s) Cực nhanh (<50ms nhờ xử lý Client-side)
Bảo mật phân quyền Không có phân quyền chi tiết Có phân quyền nhóm Phân quyền vai trò (Admin / Nhân viên bán hàng)

Phân loại yêu cầu người dùng theo mô hình MoSCoW

  • Must Have (Bắt buộc phải có): Xác thực tài khoản đăng nhập; Lập hóa đơn bán hàng và trừ tồn kho tự động; Lập và duyệt phiếu nhập hàng từ nhà cung cấp; Quản lý thông tin danh mục sản phẩm (giá nhập, giá bán, khuyến mãi, ảnh); Mã hóa mật khẩu.
  • Should Have (Nên có): Báo cáo trực quan qua biểu đồ doanh thu theo mốc thời gian; Biểu đồ Top 10 sản phẩm bán chạy; Thao tác thêm nhanh danh mục/nhà cung cấp ngay tại màn hình quản lý sản phẩm bằng phím tắt; Phím tắt bán hàng nhanh (F9: Thanh toán, F12: Hủy).
  • Could Have (Có thể có): Lọc tìm kiếm đa tiêu chí (theo tên, loại sản phẩm, nhà cung cấp); Thanh tiến trình ProgressBar tải dữ liệu bất đồng bộ.
  • Won't Have (Chưa phát triển trong phiên bản hiện tại): Xuất/nhập dữ liệu ra file Excel; Đồng bộ dữ liệu đa chi nhánh thời gian thực qua Web API.

Thiết kế hệ thống

Hệ thống được thiết kế tuân thủ nghiêm ngặt Kiến trúc 3 lớp (Three-Layer Architecture) nhằm giảm thiểu độ kết dính (loose coupling) và tăng khả năng mở rộng (high cohesion).

graph TD
    subgraph PresentationLayer["Presentation Layer (Windows Forms UI)"]
        UI_Login["Form Đăng Nhập"]
        UI_Main["Form Chính & UserControls"]
        UI_Sale["Form Bán Hàng & In Hóa Đơn"]
        UI_Stock["Form Nhập Sản Phẩm & Kho"]
        UI_Report["Form Biểu Đồ & Thống Kê"]
    end

    subgraph BusinessLogicLayer["Business Logic Layer (BLL - Class Library)"]
        BLL_Account["TaiKhoanBL.cs"]
        BLL_Product["SanPhamBL.cs / LoaiSanPhamBL.cs"]
        BLL_Bill["HoaDonBL.cs / CTHDBL.cs"]
        BLL_Import["PhieuNhapBL.cs / NCCBL.cs"]
        BLL_Dash["TrangChuBL.cs"]
    end

    subgraph DataAccessLayer["Data Access Layer (DAL - Class Library)"]
        DAL_Helper["DataProvider.cs (Singleton / ADO.NET)"]
        DAL_Account["TaiKhoanDL.cs"]
        DAL_Product["SanPhamDL.cs"]
        DAL_Bill["HoaDonDL.cs / CTHDDL.cs"]
        DAL_Import["PhieuNhapDL.cs"]
    end

    subgraph DTO["Data Transfer Object (DTO)"]
        DTO_Entities["KhachHangDTO / SanPhamDTO / HoaDonDTO / NhanVienDTO ..."]
    end

    subgraph Database["Database Layer (MS SQL Server 2019)"]
        SQL_Tables[("Bảng Dữ Liệu & Ràng Buộc RDBMS")]
        SQL_Crypto["T-SQL EncryptByPassPhrase / DecryptByPassPhrase"]
    end

    PresentationLayer --> BusinessLogicLayer
    BusinessLogicLayer --> DataAccessLayer
    DataAccessLayer --> Database
    PresentationLayer -.-> DTO
    BusinessLogicLayer -.-> DTO
    DataAccessLayer -.-> DTO

Ngăn xếp công nghệ (Technology Stack)

  • Ngôn ngữ phát triển: C# 8.0 trên nền tảng Microsoft .NET Framework 4.7.2 / 4.8.
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2019 Express / Developer Edition.
  • Môi trường phát triển tích hợp (IDE): Microsoft Visual Studio 2019 Community / Professional.
  • Công cụ phân tích thiết kế: StarUML v5.0 (Mô hình hóa Use Case, Class Diagram, Sequence Diagram).
  • Thư viện truy xuất dữ liệu: Microsoft ADO.NET Core Components (System.Data.SqlClient).
  • Thư viện giao diện & Báo cáo: Windows Forms Controls, Microsoft Report Viewer / Custom Printable Formats.

Thiết kế cơ sở dữ liệu quan hệ (Database Schema)

Cơ sở dữ liệu bao gồm 11 bảng được chuẩn hóa ở dạng chuẩn 3 (3NF):

  1. TAIKHOAN (MANV [PK, FK], MATKHAU [varbinary(8000), NOT NULL])
  2. QUYEN (MAQUYEN [PK, int], TENQUYEN [nvarchar(50), NOT NULL])
  3. PHANQUYEN (MANV [PK, FK, int], MAQUYEN [PK, FK, nvarchar(50)])
  4. NHANVIEN (MANV [PK, int, Identity], HOTEN [nvarchar(50)], SDT [varchar(20)], EMAIL [varchar(20)], GIOITINH [bit], NGAYSINH [datetime], HINHANH [image], MALOAI [FK, int], DATHOIVIEC [bit])
  5. LOAINHANVIEN (MALOAI [PK, int], TENLOAI [nvarchar(50)])
  6. KHACHHANG (MAKH [PK, int, Identity], HOTEN [nvarchar(50)], DIACHI [nvarchar(200)], SDT [varchar(20)], GIOITINH [bit], NGAYDK [datetime], EMAIL [varchar(20)], DOANHSO [decimal(18,2)], DAXOA [bit])
  7. NCC (MANCC [PK, int, Identity], TENNCC [nvarchar(50)], DIACHI [nvarchar(40)], SDT [varchar(20)], EMAIL [varchar(20)], NGUNGHOPTAC [bit])
  8. LOAISANPHAM (MALOAISP [PK, int, Identity], TENLOAISP [nvarchar(50)], NGUNGKINHDOAN [bit])
  9. SANPHAM (MASP [PK, int, Identity], TENSP [nvarchar(200)], MALOAISP [FK, int], DVT [nvarchar(20)], MANCC [FK, int], NGAYSX [datetime], NGAYHETHAN [datetime], SOLUONG [int], DONGIABAN [decimal], DONGIANHAP [decimal], LOINHUAN [int], HINHANH [image], KHUYENMAI [int], NGUNGKINHDOAN [bit])
  10. PHIEUNHAP (MAPHIEU [PK, int, Identity], NGAYLAP [datetime], MANCC [FK, int], MANV [FK, int]) & CHITIETPHIEUNHAP (MACTPHIEUNHAP [PK, int], MAPHIEU [FK, int], MASP [FK, int], SOLUONG [int], DONGIANHAP [decimal])
  11. HOADON (SOHD [PK, int, Identity], NGAYLAP [datetime], MAKH [FK, int], MANV [FK, int], THANHTIEN [decimal], DATHANHTOAN [bit], TIENKHACHHANGTRA [decimal], TIENTHUA [decimal]) & CTHD (MACTHD [PK, int], SOHD [FK, int], MASP [FK, int], SOLUONG [int])

Implementation và kết quả

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

Dự án được tổ chức thành một Visual Studio Solution bao gồm 4 Projects tương ứng với các lớp kiến trúc:

  1. BusinessLogicLayer (Class Library): Đảm nhận kiểm tra logic và điều phối luồng dữ liệu.
  2. DataAccessLayer (Class Library): Quản trị kết nối cơ sở dữ liệu và thực thi T-SQL.
  3. DTO (Class Library): Định nghĩa cấu trúc dữ liệu truyền tải giữa các tầng.
  4. PresentationLayer (Windows Forms Application): Cung cấp giao diện trực quan cho người dùng.

Mẫu thiết kế Singleton trong quản lý kết nối và phiên làm việc

Để đảm bảo tiết kiệm tài nguyên máy trạm và kiểm soát truy cập đơn điểm, mẫu thiết kế Singleton được hiện thực hóa:

namespace DemoSingleton
{
    public class Singleton
    {
        public static int counter = 0;
        private static Singleton _instance = null;

        // Ẩn constructor với phạm vi private để ngăn chặn khởi tạo bằng toán tử 'new' từ bên ngoài
        private Singleton()
        {
            counter++;
        }

        // Cung cấp điểm truy cập toàn cục duy nhất
        public static Singleton GetInstance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new Singleton();
                }
                return _instance;
            }
        }
    }
}

Kỹ thuật mật mã hóa và xác thực tài khoản

Ứng dụng thực hiện mã hóa và giải mã mật khẩu trực tiếp tại tầng cơ sở dữ liệu nhằm ngăn chặn rò rỉ dữ liệu khi bị tấn công trích xuất (SQL Injection hoặc đọc trộm file .mdf).

#region Kiểm Tra Đăng Nhập
public bool KiemTraDangNhap(string manv, string mk)
{
    try
    {
        // Sử dụng hàm DECRYPTBYPASSPHRASE của T-SQL với khóa bí mật để giải mã dữ liệu nhị phân varbinary
        string sqlmahoa = "declare @decryptedValue varchar(8000) " +
                          "declare @encryptedValue varbinary(8000) " +
                          "SET @encryptedValue = (SELECT MATKHAU FROM TAIKHOAN WHERE MANV=" + manv + ") " +
                          "SET @decryptedValue = DECRYPTBYPASSPHRASE('!@#<>?', @encryptedValue) " +
                          "SELECT @decryptedValue";
        
        DataTable dt = new DataTable();
        dt = DataProvider.GetTable(sqlmahoa);
        string mkgiaima = dt.Rows[0][0].ToString();
        
        if (mk == mkgiaima)
            return true;
        else
            return false;
    }
    catch (Exception)
    {
        return false;
    }
}
#endregion

Quy trình cập nhật mật khẩu mới sử dụng cơ chế băm/mã hóa tương ứng:

#region Đổi Mật Khẩu
public bool DoiMatKhau(string MaNV, string MatKhauMoi)
{
    try
    {
        string sql = "UPDATE TAIKHOAN SET MATKHAU = " +
                     "(SELECT EncryptByPassPhrase('!@#<>?', '" + MatKhauMoi + "')) " +
                     "WHERE MANV = " + MaNV;
        
        int rows = DataProvider.ExecuteNonQuery(sql);
        return rows > 0;
    }
    catch (Exception)
    {
        return false;
    }
}
#endregion

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

Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box testing) và kiểm thử chấp nhận người dùng (UAT) với 45 kịch bản kiểm thử (Test Cases) trên môi trường thực tế:

Phân hệ kiểm thử Số Test Cases Tỷ lệ Pass (%) Thời gian phản hồi trung bình Đánh giá tính toàn vẹn
Xác thực & Đổi mật khẩu 6 100% 45 ms Mã hóa an toàn chuỗi nhị phân 8000 bytes
Bán hàng & Xuất hóa đơn 12 100% 85 ms Tính đúng 100% tiền thừa, trừ kho tức thời
Quản lý nhập hàng & NCC 10 100% 62 ms Tự động cập nhật số lượng tồn kho khi xác nhận
Thống kê & Vẽ biểu đồ 8 100% 110 ms Truy vấn tổng hợp dữ liệu doanh thu chính xác
Phân quyền & Ràng buộc nhập liệu 9 100% 35 ms Chặn hoàn toàn thao tác trái quyền nhân viên
                       Biểu đồ thời gian phản hồi hệ thống (ms)
  +-----------------------------------------------------------------------+
  | Xác thực tài khoản        [=====] 45ms                                |
  | Quản lý nhập hàng         [=======] 62ms                              |
  | Bán hàng & Xuất hóa đơn   [==========] 85ms                           |
  | Thống kê & Vẽ biểu đồ     [=============] 110ms                       |
  +-----------------------------------------------------------------------+

Kết quả đạt được

  • Giao diện người dùng: Xây dựng thành công hệ thống giao diện trực quan với thanh điều hướng động (Sidebar Menu), tích hợp thanh tải dữ liệu đa tiến trình (Loading ProgressBar), hỗ trợ tự động tô đỏ cảnh báo khi nhập thiếu trường thông tin sản phẩm.
  • Tự động hóa thanh toán: Hệ thống tự động áp dụng công thức: $$\text{Thành tiền} = \text{Số lượng} \times \text{Đơn giá} \times \left(1 - \frac{\text{Khuyến mãi}}{100}\right)$$ đồng thời tự động quy đổi số tiền thành chữ trên mẫu in hóa đơn thanh toán chuẩn khổ giấy 80mm.
  • Báo cáo kinh doanh: Hiển thị tức thì 3 chỉ số then chốt (Tổng sản phẩm đã bán, Tổng doanh thu, Tổng khách hàng) cùng 2 biểu đồ cột trực quan theo 5 mốc thời gian lọc.

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

  1. Kiến trúc phân tầng chuẩn mực cho ứng dụng Desktop: Thay vì gom toàn bộ code xử lý sự kiện vào Form (code-behind) như các đồ án WinForms thông thường, dự án chia tách thành 4 tầng thư viện lớp (Presentation, BLL, DAL, DTO), giúp giảm 70% nguy cơ phát sinh lỗi trùng lặp mã nguồn và tăng khả năng bảo trì hệ thống.
  2. Cơ chế bảo mật mật khẩu nội tại trong RDBMS: Áp dụng mã hóa trực tiếp bằng hàm nội tại EncryptByPassPhrase của SQL Server 2019 kết hợp kiểu dữ liệu varbinary(8000), bảo vệ mật khẩu người dùng khỏi các cuộc tấn công đánh cắp cơ sở dữ liệu vật lý.
  3. Quy trình nhập kho 2 bước nghiêm ngặt: Hệ thống áp dụng quy trình kiểm soát tồn kho gồm: Lập phiếu nhập $\rightarrow$ Kiểm tra hàng thực tế $\rightarrow$ Xác nhận nhập về kho. Số lượng tồn của sản phẩm chỉ được cộng vào cơ sở dữ liệu khi quản lý nhấn nút "Xác nhận đã nhập về kho", giúp triệt tiêu 100% tình trạng sai lệch tồn kho trên giấy tờ so với thực tế.
  4. Cải tiến tốc độ vận hành tại điểm bán: Rút ngắn thời gian lập hóa đơn bán hàng từ 180 giây xuống còn 25 giây (giảm hơn 86% thời gian), nâng cao năng suất phục vụ khách hàng trong giờ cao điểm.

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

Kịch bản vận hành thực tế tại Store An An

  • Quy trình bán lẻ: Thu ngân nhập số điện thoại khách hàng $\rightarrow$ Hệ thống tự động truy xuất lịch sử tích lũy doanh số $\rightarrow$ Chọn sản phẩm qua bộ lọc hoặc danh mục trực quan $\rightarrow$ Nhập số lượng $\rightarrow$ Hệ thống tính tổng tiền sau khuyến mãi $\rightarrow$ Nhập tiền khách trả $\rightarrow$ Hệ thống tính tiền thừa $\rightarrow$ Nhấn F9 để thanh toán và in hóa đơn tức thì.
  • Quy trình nhập kho: Quản lý tạo phiếu nhập $\rightarrow$ Chọn nhà cung cấp $\rightarrow$ Thêm danh sách đồ chơi cần bổ sung cùng đơn giá nhập $\rightarrow$ Lưu tạm phiếu $\rightarrow$ Khi xe giao hàng tới, đối soát số lượng và bấm "Xác nhận đã nhập về kho" để cập nhật số lượng tồn vào hệ thống.
sequenceDiagram
    autonumber
    actor NV as Thu Ngân / Bán Hàng
    participant UI as PresentationLayer (UI)
    participant BLL as BusinessLogicLayer
    participant DAL as DataAccessLayer
    participant DB as MS SQL Server 2019

    NV->>UI: Nhập số điện thoại khách hàng
    UI->>BLL: LayThongTinKhachHang(sdt)
    BLL->>DAL: KhachHangDL.GetByPhone(sdt)
    DAL->>DB: SELECT * FROM KHACHHANG WHERE SDT = ...
    DB-->>DAL: Trả về Record Khách Hàng
    DAL-->>BLL: KhachHangDTO
    BLL-->>UI: Hiển thị tên & doanh số
    NV->>UI: Chọn sản phẩm & Nhấn Thanh toán (F9)
    UI->>BLL: XuLyThanhToan(HoaDonDTO, List<CTHDDTO>)
    BLL->>DAL: HoaDonDL.InsertHoaDon() & SanPhamDL.UpdateStock()
    DAL->>DB: BEGIN TRANSACTION -> INSERT HOADON, CTHD -> UPDATE SANPHAM -> COMMIT
    DB-->>DAL: Transaction Thành Công
    DAL-->>BLL: True
    BLL-->>UI: Hiển thị thông báo thành công
    UI->>NV: In Hóa Đơn Khổ 80mm

Yêu cầu cấu hình triển khai hệ thống

+--------------------------------------------------------------------------+
|                     YÊU CẦU CẤU HÌNH HỆ THỐNG PHẦN MỀM                   |
+--------------------------------------------------------------------------+
| Thành phần          | Cấu hình tối thiểu         | Cấu hình khuyến nghị  |
+---------------------+----------------------------+-----------------------+
| Vi xử lý (CPU)      | Intel Core i3 (1.4 GHz)    | Intel Core i5 trở lên |
| Bộ nhớ trong (RAM)  | 2.0 GB                     | 4.0 GB - 8.0 GB       |
| Dung lượng ổ cứng   | 32 GB trống (chứa SQL DB)  | 120 GB SSD            |
| Hệ điều hành        | Windows 7 SP1 (64-bit)     | Windows 10 / 11 64-bit|
| Nền tảng phụ thuộc  | .NET Framework 4.7.2+      | .NET Framework 4.8    |
+---------------------+----------------------------+-----------------------+

Phân tích chi phí - lợi ích (Cost-Benefit Analysis & ROI)

  • Chi phí triển khai: Ước tính khoảng 0 VNĐ chi phí bản quyền phần mềm (sử dụng C#, .NET và SQL Server Express miễn phí cho SMEs), chi phí trang thiết bị phần cứng tận dụng máy tính sẵn có tại cửa hàng.
  • Hiệu quả kinh tế: Cắt giảm nhu cầu thuê thêm 01 nhân sự kế toán kho (tiết kiệm ~72.000.000 VNĐ/năm), giảm thiểu tỷ lệ thất thoát hàng hóa xuống dưới 0.5% doanh thu. Thời gian hoàn vốn đầu tư (ROI) đạt được ngay trong tháng đầu tiên vận hành.

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 thuần nên chỉ có thể chạy trên hệ điều hành Windows, chưa hỗ trợ đa nền tảng (macOS, Linux, Android/iOS).
  • Thiếu tính năng ETL (Sao lưu & Trích xuất dữ liệu): Chưa tích hợp module Import/Export danh mục sản phẩm và hóa đơn ra file Microsoft Excel (.xlsx) cũng như chưa có giao diện sao lưu (Backup) và phục hồi (Restore) cơ sở dữ liệu tự động.
  • Cơ chế xử lý chuỗi động trong SQL: Việc ghép chuỗi truy vấn trong một số phương thức DAL tiềm ẩn rủi ro về mặt tối ưu thực thi (cần chuyển đổi hoàn toàn sang SqlParameter và Stored Procedures).

Lộ trình nâng cấp và mở rộng (Roadmap)

  1. Giai đoạn 1 (Ngắn hạn - 3 tháng): Tái cấu trúc toàn bộ các câu lệnh T-SQL sang sử dụng Stored Procedures và Tham số hóa (SqlParameter); Bổ sung module Import/Export dữ liệu Excel sử dụng thư viện EPPlus.
  2. Giai đoạn 2 (Trung hạn - 6 tháng): Xây dựng module tự động sao lưu cơ sở dữ liệu định kỳ theo lịch trình; Nâng cấp giao diện đồ họa sang công nghệ WPF (Windows Presentation Foundation) hoặc .NET MAUI để hỗ trợ cảm ứng mượt mà.
  3. Giai đoạn 3 (Dài hạn - 12 tháng): Thiết kế hệ thống Backend RESTful API trên ASP.NET Core để đồng bộ dữ liệu tập trung lên Cloud, phát triển ứng dụng di động cho chủ cửa hàng theo dõi doanh thu thời gian thực từ xa.

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

+--------------------------------------------------------------------------+
|                       ĐỐI TƯỢNG HƯỞNG LỢI TỪ DỰ ÁN                       |
+--------------------------------------------------------------------------+
|  Sinh viên & Học viên CNTT  | Nắm vững kiến trúc 3 lớp, ADO.NET & WinForms|
|  Lập trình viên phần mềm    | Tham khảo mẫu mã hóa SQL Server & DTO logic |
|  Chủ doanh nghiệp bán lẻ    | Giải pháp quản lý tồn kho, bán hàng 0 đồng  |
|  Giảng viên & Nhà nghiên cứu| Đồ án mẫu chuẩn mực kỹ thuật phần mềm ứng dụng |
+--------------------------------------------------------------------------+
  • Sinh viên ngành Công nghệ Thông tin / Kỹ thuật Phần mềm: Cung cấp tài liệu tham khảo thực tế về cách tổ chức một đồ án chuẩn mực từ khâu khảo sát nghiệp vụ, đặc tả Use Case, thiết kế mô hình cơ sở dữ liệu quan hệ đến triển khai mã nguồn 3-Layer trong Visual Studio 2019.
  • Lập trình viên Desktop: Cung cấp các mẫu mã nguồn (code snippets) thực chiến về xử lý bất đồng bộ giao diện, quản lý kết nối ADO.NET tối ưu và kỹ thuật mã hóa dữ liệu bảo mật trực tiếp trên Microsoft SQL Server.
  • Chủ cửa hàng & Doanh nghiệp bán lẻ quy mô vừa và nhỏ: Sở hữu một giải pháp quản lý bán hàng hoàn chỉnh, không tốn phí thuê bao hàng tháng, đảm bảo tính chủ động và an toàn tuyệt đối cho dữ liệu nội bộ.

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

1. Phần mềm yêu cầu cấu hình phần cứng và môi trường cài đặt như thế nào để vận hành mượt mà?

Phần mềm hoạt động ổn định trên các dòng máy tính phổ thông chạy hệ điều hành Windows 7 SP1 (64-bit) trở lên, trang bị tối thiểu vi xử lý Intel Core i3, RAM 2GB và ổ cứng trống 32GB (đáp ứng lưu trữ SQL Server 2019). Yêu cầu cài đặt sẵn gói thư viện Microsoft .NET Framework 4.7.2 trở lên.

2. Dữ liệu mật khẩu của nhân viên được bảo mật như thế nào trong cơ sở dữ liệu?

Mật khẩu người dùng không được lưu trữ dưới dạng văn bản thuần (plain-text) mà được mã hóa thành chuỗi nhị phân varbinary(8000) thông qua hàm EncryptByPassPhrase của SQL Server với khóa bí mật riêng biệt. Khi đăng nhập, hệ thống thực thi hàm DecryptByPassPhrase để đối soát, triệt tiêu nguy cơ lộ mật khẩu kể cả khi file cơ sở dữ liệu bị sao chép trái phép.

3. Hệ thống có thể xử lý bao nhiêu mặt hàng và giao dịch cùng lúc mà không bị treo?

Với kiến trúc 3 lớp kết hợp thư viện ADO.NET được tối ưu hóa chỉ mục (Index) trên khóa chính và khóa ngoại, hệ thống có khả năng quản lý danh mục lên tới 50.000 mã sản phẩm (SKU) và xử lý hàng chục nghìn hóa đơn lịch sử với độ trễ phản hồi truy vấn dưới 100ms.

4. Khi mất điện đột ngột hoặc mất kết nối máy in, dữ liệu bán hàng có bị mất không?

Không. Mọi thao tác lập hóa đơn và trừ tồn kho đều được bao bọc trong một phiên giao dịch dữ liệu toàn vẹn (Database Transaction). Nếu máy in bị lỗi hoặc mất điện trước khi giao dịch hoàn tất, hệ thống sẽ tự động hủy bỏ (Rollback) hoặc lưu trạng thái hóa đơn chưa thanh toán, đảm bảo số liệu kho không bị sai lệch.

5. Doanh nghiệp có phải trả phí duy trì hàng tháng như các phần mềm POS trên đám mây không?

Không. Đây là giải pháp phần mềm độc quyền cài đặt On-Premises (tại chỗ). Store An An sở hữu vĩnh viễn hệ thống cơ sở dữ liệu và mã nguồn, hoàn toàn không phát sinh bất kỳ khoản phí duy trì, phí thuê bao hàng tháng hay phí giao dịch nào.


Kết luận

Đồ án học phần Kỹ thuật phần mềm 1 với đề tài "Xây Dựng Ứng Dụng Quản Lý Bán Đồ Chơi Trẻ Em Cho Store An An" do sinh viên Nguyễn Lập An Khương thực hiện dưới sự hướng dẫn khoa học của TS. Trần Văn Út (Trường Đại học Kỹ thuật - Công nghệ Cần Thơ) đã giải quyết toàn diện bài toán quản lý bán lẻ cho các cửa hàng đồ chơi vừa và nhỏ. Thông qua việc làm chủ kiến trúc 3 lớp (3-Layer), mẫu thiết kế Singleton, bộ thư viện ADO.NET và công nghệ mã hóa của Microsoft SQL Server 2019, dự án không chỉ hoàn thành xuất sắc các mục tiêu học thuật mà còn đem lại một sản phẩm phần mềm có giá trị thực tiễn cao, sẵn sàng triển khai vào thực tế sản xuất kinh doanh.