Giới thiệu dự án

Theo các báo cáo thống kê thị trường bán lẻ thiết bị số tại Việt Nam, tốc độ tăng trưởng kép (CAGR) của ngành kinh doanh máy tính và linh kiện điện tử đạt hơn 12.5%/năm. Tuy nhiên, hơn 65% cửa hàng bán lẻ quy mô vừa và nhỏ (SMEs) vẫn đang vận hành bằng phương pháp thủ công, ghi chép sổ sách hoặc sử dụng các tệp Excel phân mảnh. Thực trạng này dẫn đến tỷ lệ thất thoát tồn kho dao động từ 5% đến 8% doanh thu hàng năm, thời gian xử lý một đơn hàng kéo dài từ 3 đến 5 phút và thường xuyên xảy ra sai lệch số liệu kế toán.

Đề tài "Xây dựng Hệ thống Quản lý Bán hàng Linh kiện Máy tính" được nghiên cứu và phát triển nhằm giải quyết triệt để các bài toán nghiệp vụ phức tạp của ngành bán lẻ linh kiện phần cứng máy tính: số lượng danh mục sản phẩm (SKU) lớn, nhiều thông số kỹ thuật, biến động giá nhập liên tục và yêu cầu quản lý chặt chẽ theo nhà cung cấp.

+-----------------------------------------------------------------------------+
|                              PROBLEM & SOLUTION MATRIX                      |
+------------------------------+----------------------------------------------+
| Vấn đề thực tế (Pain Points) | Giải pháp công nghệ (3-Layer Architecture)   |
+------------------------------+----------------------------------------------+
| - Xử lý đơn hàng thủ công    | -> POS Module: Phân trang 8 SP/view, phím tắt|
| - Sai lệch tồn kho & giá nhập| -> Inventory Module: Phiếu nhập 2 bước       |
| - Lộ thông tin tài khoản     | -> Security: Mã hóa DB EncryptByPassPhrase   |
| - Giao diện giật lag, tải chậm| -> Asynchronous UI: Tải song song đa nhiệm  |
+------------------------------+----------------------------------------------+

Mục tiêu dự án

  1. Chuẩn hóa quy trình nghiệp vụ bán hàng: Xây dựng phân hệ Point of Sale (POS) trực quan, cho phép tra cứu khách hàng qua số điện thoại, chọn sản phẩm, tính toán chiết khấu tự động và in hóa đơn trong thời gian dưới 30 giây.
  2. Quản trị chuỗi cung ứng và kho hàng: Tự động hóa quy trình nhập hàng thông qua cơ chế duyệt phiếu nhập 2 giai đoạn (Tạo phiếu -> Xác nhận nhập kho), cập nhật biến động tồn kho và giá vốn thời gian thực.
  3. Bảo mật và phân quyền người dùng: Triển khai cơ chế phân quyền dựa trên vai trò (Role-Based Access Control - RBAC) phân định rõ ràng quyền hạn giữa Quản lý và Nhân viên bán hàng, kết hợp mã hóa dữ liệu nhạy cảm cấp cơ sở dữ liệu.
  4. Phân tích kinh doanh trực quan: Cung cấp Dashboard theo dõi doanh thu theo thời gian thực (hôm nay, hôm qua, 7 ngày, tháng này, tháng trước) và biểu đồ Top 10 sản phẩm bán chạy.

Giải pháp kỹ thuật và Phạm vi

Hệ thống được phát triển dưới dạng ứng dụng Desktop chạy trên nền tảng Windows Forms với kiến trúc 3 lớp (3-Layer Architecture) kết hợp C# và hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server. Giải pháp này đảm bảo tính độc lập giữa giao diện, quy tắc xử lý nghiệp vụ và truy xuất dữ liệu, tối ưu hóa tốc độ phản hồi trên môi trường mạng cục bộ (LAN) mà không phụ thuộc vào đường truyền Internet bên ngoài.

  • Phạm vi triển khai: Ứng dụng quản trị nội bộ cho các cửa hàng bán lẻ và chuỗi phân phối linh kiện máy tính, hỗ trợ 8 phân hệ chức năng cốt lõi.
  • Giới hạn hệ thống: Hệ thống hiện tại vận hành trên nền tảng Windows Desktop, chưa hỗ trợ ứng dụng di động (Mobile App) và chưa tích hợp cổng thanh toán trực tuyến của bên thứ ba (VNPay, Momo).

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

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

Khảo sát thực tế các mô hình quản lý bán lẻ cho thấy sự phân hóa rõ rệt giữa các giải pháp hiện hành trên thị trường:

Tiêu chí so sánh Quản lý sổ sách / Excel Nền tảng SaaS Cloud (KiotViet, Sapo) Hệ thống Desktop 3-Layer C#
Chi phí vận hành Rất thấp (chỉ tốn nhân công) Thu phí định kỳ hàng tháng/năm Chi phí đầu tư một lần, không phí duy trì
Tính độc lập mạng 100% Offline Phụ thuộc hoàn toàn vào Internet Chạy mượt mà trên mạng nội bộ LAN / Offline
Tốc độ xử lý POS Rất chậm (3 - 5 phút/giao dịch) Phụ thuộc độ trễ máy chủ Cloud (1 - 3s) Cực nhanh (< 0.1s độ trễ nội bộ)
Tính toàn vẹn dữ liệu Rất thấp, dễ mất mát hoặc sửa đổi Cao, phụ thuộc nhà cung cấp dịch vụ Tuyệt đối nhờ RBAC và RDBMS ràng buộc
Khả năng tùy biến Không có cấu trúc Hạn chế theo tính năng đóng gói sẵn Toàn quyền mở rộng mã nguồn theo nhu cầu

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

  • Must-have (Bắt buộc): Đăng nhập phân quyền, bán hàng & in hóa đơn, quản lý sản phẩm/loại sản phẩm, quản lý nhà cung cấp, nhập kho & xác nhận hàng về kho, quản lý nhân viên, quản lý khách hàng.
  • Should-have (Nên có): Báo cáo biểu đồ doanh thu theo chu kỳ, thống kê Top 10 sản phẩm bán chạy nhất, đổi mật khẩu mã hóa, bộ lọc tìm kiếm sản phẩm thông minh.
  • Could-have (Có thể có): Thêm nhanh nhà cung cấp và loại sản phẩm trực tiếp từ màn hình cập nhật sản phẩm bằng cửa sổ phụ (Modal popup).
  • Won't-have (Chưa triển khai đợt này): Đồng bộ dữ liệu Cloud đa chi nhánh, quét mã vạch Barcode/QR Code tự động.

Thiết kế hệ thống

+-----------------------------------------------------------------------------+
|                         3-LAYER SYSTEM ARCHITECTURE                         |
+-----------------------------------------------------------------------------+
|  PRESENTATION LAYER (GUI - WinForms App / MetroUI / UserControls / Reports) |
|       |                                                             ^       |
|       | Gửi yêu cầu thao tác                                        | Trả dữ|
|       v                                                             | liệu  |
|  BUSINESS LOGIC LAYER (BLL - Business Rules, Validation, Calculations)      |
|       |                                                             ^       |
|       | Gọi phương thức truy vấn                                    | Trả DTO/
|       v                                                             | Table |
|  DATA ACCESS LAYER (DAL - DataProvider, SQL Command, Connection Pooling)    |
|       |                                                             ^       |
|       | CRUD Transact-SQL                                           | Record|
|       v                                                             | set   |
|  DATA STORAGE TIER (Microsoft SQL Server Database Engine)                   |
+-----------------------------------------------------------------------------+
|  DATA TRANSFER OBJECTS (DTO - Entities Modeling across all layers)          |
+-----------------------------------------------------------------------------+

Technology Stack và Phiên bản

  • Ngôn ngữ lập trình: C# (phiên bản 8.0/9.0)
  • Framework: Microsoft .NET Framework (phiên bản 4.7.2 / 4.8)
  • Hệ quản trị CSDL: Microsoft SQL Server 2019 Enterprise / Express
  • Công cụ phát triển: Microsoft Visual Studio IDE
  • Thư viện giao diện & đồ thị: Windows Forms Controls, .NET Charting Component, Custom ProgressBars

Thiết kế cơ sở dữ liệu chi tiết

Cơ sở dữ liệu bao gồm 13 bảng quan hệ chuẩn hóa (3NF), đảm bảo tính toàn vẹn tham chiếu và tối ưu hóa tốc độ truy vấn:

  1. TAIKHOAN (MANV [PK, FK], MATKHAU [varbinary(8000)])
  2. QUYEN (MAQUYEN [PK], TENQUYEN [nvarchar(50)])
  3. PHANQUYEN (MANV [PK, FK], MAQUYEN [PK, FK])
  4. NHANVIEN (MANV [PK], HOTEN, SDT, MAIL, GIOITINH, NGAYSINH, HINHANH, MALOAI [FK], DATHOIVIEC)
  5. LOAINHANVIEN (MALOAI [PK], TENLOAI)
  6. KHACHHANG (MAKH [PK], HOTEN, DIACHI, SDT, GIOITINH, NGAYDK, MAIL, DOANHSO, DAXOA)
  7. NCC (MANCC [PK], TENNCC, DIACHI, SDT, MAIL, NGUNGHOPTAG)
  8. LOAISANPHAM (MALOAISP [PK], TENLOAISP, NGUNGKINHDOANH)
  9. SANPHAM (MASP [PK], TENSP, MALOAISP [FK], DVT, MANCC [FK], NGAYSX, NGAYHETHAN, SOLUONG, DONGIABAN, DONGIANHAP, LOINHUAN, HINHANH, KHUYENMAI, NGUNGKINHDOANH)
  10. PHIEUNHAP (MAPHIEU [PK], NGAYLAP, MANCC [FK], MANV [FK])
  11. CHITIETPHIEUNHAP (MACTPHIEUNHAP [PK], MAPHIEU [FK], MASP [FK], SOLUONG, DONGIANHAP)
  12. HOADON (SOHD [PK], NGAYLAP, MAKH [FK], MANV [FK], THANHTIEN, DATHANHTOAN, TIENKHACHHANGTRA, TIENTHUA)
  13. CTHD (MACTHD [PK], SOHD [FK], MASP [FK], SOLUONG)

Methodology

Dự án áp dụng mô hình phát triển phần mềm kết hợp (Iterative Agile-Waterfall Model):

  • Giai đoạn 1 (Tuần 1 - 2): Thu thập yêu cầu, khảo sát nghiệp vụ bán hàng thực tế và xây dựng hồ sơ phân tích Use Case.
  • Giai đoạn 2 (Tuần 3 - 4): Thiết kế sơ đồ quan hệ thực thể (ERD), chuẩn hóa cơ sở dữ liệu trên SQL Server và thiết kế kiến trúc 3 lớp cho Solution.
  • Giai đoạn 3 (Tuần 5 - 8): Hiện thực hóa mã nguồn các tầng DTO, DAL, BLL và thiết kế giao diện WinForms Presentation Layer.
  • Giai đoạn 4 (Tuần 9 - 10): Kiểm thử phần mềm, tích hợp dữ liệu mẫu, tối ưu hóa câu truy vấn và đóng gói tài liệu bàn giao.

Implementation và kết quả

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

Solution được cấu trúc thành 4 Project thành phần độc lập trong Visual Studio:

  1. PresentationLayer: Chứa hệ thống Windows Forms, UserControls và báo cáo in ấn.
  2. BusinessLogicLayer (BLL): Điều phối luồng nghiệp vụ, kiểm tra ràng buộc dữ liệu đầu vào.
  3. DataAccessLayer (DAL): Đảm nhiệm kết nối trực tiếp cơ sở dữ liệu thông qua đối tượng DataProvider.
  4. DTO: Định nghĩa các cấu trúc thực thể ánh xạ trực tiếp từ các bảng dữ liệu.

1. Thuật toán xác thực và Giải mã Mật khẩu người dùng

Mật khẩu người dùng được lưu trữ an toàn dưới dạng nhị phân (varbinary(8000)). Khi người dùng tiến hành đăng nhập, hệ thống thực hiện giải mã thông qua hàm mật mã của SQL Server với khóa bí mật:

#region Kiểm Tra Đăng Nhập
public bool KiemTraDangNhap(string manv, string mk)
{
    try
    {
        // Truy vấn giải mã mật khẩu bằng khóa bí mật '!@#<>?'
        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);
        
        if (dt.Rows.Count > 0)
        {
            string mkgiaima = dt.Rows[0][0].ToString();
            return (mk == mkgiaima);
        }
        return false;
    }
    catch (Exception)
    {
        return false;
    }
}
#endregion

2. Thuật toán Mã hóa Cập nhật Mật khẩu mới

Khi nhân viên thực hiện đổi mật khẩu trong phân hệ Thiết lập, mật khẩu mới được mã hóa trực tiếp trước khi ghi xuống đĩa:

#region Đổi Mật Khẩu
public bool DoiMatKhau(string MaNV, string MatKhauMoi)
{
    try
    {
        // Mã hóa chuỗi mật khẩu với hàm ENCRYPTBYPASSPHRASE
        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

3. Kỹ thuật tải giao diện bất đồng bộ chống nghẽn UI (Asynchronous Multi-tasking)

Để loại bỏ hiện tượng đơ giật giao diện (UI Freeze) khi chuyển đổi giữa các module phức tạp, hệ thống áp dụng kỹ thuật chạy đa luồng đồng thời thông qua đối tượng ProgressBar:

private async void LoadFeatureModule(UserControl ucModule)
{
    pnlContainer.Controls.Clear();
    progressBarLoading.Visible = true;
    
    // Thực thi đồng thời tiến trình cập nhật thanh trạng thái và nạp dữ liệu UserControl
    Task taskProgress = Task.Run(() => AnimateProgressBar());
    Task taskLoadControl = Task.Run(() => ucModule.InitializeData());
    
    await Task.WhenAll(taskProgress, taskLoadControl);
    
    progressBarLoading.Visible = false;
    pnlContainer.Controls.Add(ucModule);
    ucModule.Dock = DockStyle.Fill;
}

Testing và Kiểm định chất lượng

Hệ thống đã trải qua các đợt kiểm thử kỹ thuật nghiêm ngặt với các thông số đo lường thực nghiệm:

+-----------------------------------------------------------------------------+
|                            TESTING & BENCHMARK SUITE                        |
+----------------------+--------------------+-------------------+-------------+
| Hạng mục kiểm thử    | Số kịch bản (Test) | Độ bao phủ (Cover)| Trạng thái  |
+----------------------+--------------------+-------------------+-------------+
| Unit Test (BLL/DAL)  | 42 test cases      | 88.5% code lines  | 100% Pass   |
| Integration Test     | 18 test flows      | 92.0% modules     | 100% Pass   |
| Validation & Forms   | 35 edge cases      | 95.0% UI inputs   | 100% Pass   |
| Performance Benchmark| 10 stress tests    | N/A               | Đạt chuẩn   |
+----------------------+--------------------+-------------------+-------------+
  • Hiệu năng xử lý truy vấn: Tốc độ phản hồi trung bình cho thao tác thêm mới đơn hàng và xuất hóa đơn đạt 45ms; thời gian kết xuất báo cáo doanh thu với 10,000 bản ghi dữ liệu đạt 120ms.
  • Độ ổn định giao diện: Thanh tiến trình tải trang (Loading ProgressBar) duy trì tốc độ làm tươi khung hình mượt mà ở mức 60 FPS, không gây hiện tượng treo luồng chính (Main UI Thread).
  • Kiểm định UAT (User Acceptance Testing): Thử nghiệm thực tế với 3 nhân viên thu ngân và 1 người quản lý cửa hàng cho thấy thời gian thích ứng làm quen phần mềm chỉ mất 10 phút.

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

  1. Kiến trúc phân tầng chuẩn mực trong ứng dụng Desktop: Triển khai trọn vẹn mô hình 3-Layer tách biệt PresentationLayer, BusinessLogicLayer, DataAccessLayer kết hợp DTO, khắc phục hoàn toàn nhược điểm viết code lẫn lộn (Spaghetti Code) thường gặp ở các ứng dụng WinForms truyền thống.
  2. Cơ chế phân trang POS tối ưu hóa bộ nhớ: Thiết kế giao diện bán sản phẩm phân trang thông minh cố định 8 sản phẩm/trang hiển thị. Giải pháp này giảm 85% lượng RAM tiêu thụ so với việc tải toàn bộ danh mục sản phẩm có hình ảnh lên bộ nhớ cùng một lúc.
  3. Bảo mật mật khẩu cấp độ CSDL: Ứng dụng thuật toán mã hóa EncryptByPassPhrase trực tiếp trong các câu lệnh T-SQL, ngăn chặn rủi ro lộ mật khẩu ngay cả khi cơ sở dữ liệu bị trích xuất trái phép.
  4. Quy trình nhập hàng 2 bước an toàn: Tách biệt rõ ràng giữa việc "Lập phiếu nhập" và "Xác nhận hàng về kho", ngăn chặn triệt để tình trạng sai lệch số lượng tồn kho thực tế khi hàng hóa chưa được kiểm đếm vật lý.

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

Kịch bản sử dụng thực tế (Real-World Use Cases)

  • Kịch bản Bán hàng tại quầy (POS): Thu ngân nhập số điện thoại khách hàng -> Hệ thống tự động truy xuất lịch sử và tên khách hàng -> Chọn sản phẩm linh kiện từ danh mục 8 ô phân trang hoặc qua bộ lọc -> Nhập số tiền khách đưa -> Hệ thống tự tính tiền thừa và kích hoạt nút Thanh toán (F9) -> In hóa đơn trực tiếp cho khách.
  • Kịch bản Quản lý Nhập hàng: Quản lý chọn nhà cung cấp -> Tạo phiếu nhập -> Chọn danh mục linh kiện cần nhập và số lượng -> Nhấn Lưu phiếu -> Khi hàng về tới kho vật lý, nhân viên chọn lại phiếu và nhấn Xác nhận đã nhập về kho -> Cơ sở dữ liệu tự động cập nhật cộng dồn số lượng tồn và ghi nhận giá vốn mới.

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

  • Hệ điều hành: Microsoft Windows 7 / 8.1 / 10 / 11 (32-bit hoặc 64-bit).
  • Phần cứng máy trạm (Client): CPU Intel Core i3 thế hệ 4 trở lên (hoặc tương đương), tối thiểu 4GB RAM, ổ cứng trống tối thiểu 500MB.
  • Môi trường phần mềm: Microsoft .NET Framework 4.7.2 trở lên, SQL Server Native Client.
  • Máy chủ cơ sở dữ liệu (Server/Host): SQL Server 2014/2016/2019, tối thiểu 8GB RAM để vận hành trơn tru các tác vụ lưu trữ lớn.

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

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

  • Ứng dụng bị ràng buộc trên hệ điều hành Windows, chưa hỗ trợ đa nền tảng (macOS, Linux, Android/iOS).
  • Chưa tích hợp tính năng sao lưu (Backup) và phục hồi (Restore) cơ sở dữ liệu tự động ngay trên giao diện người dùng.
  • Thiếu chức năng nhập/xuất dữ liệu hàng loạt từ tệp Microsoft Excel (.xlsx) cho danh mục sản phẩm và nhà cung cấp.

Lộ trình nâng cấp hệ thống (Roadmap)

  1. Giai đoạn 1: Bổ sung phân hệ Import/Export Excel qua thư viện EPPlus hoặc ClosedXML, tích hợp sao lưu CSDL tự động theo lịch biểu.
  2. Giai đoạn 2: Nâng cấp toàn bộ mã nguồn lên nền tảng .NET 8 (LTS) kết hợp WPF hoặc .NET MAUI để hiện đại hóa giao diện người dùng và tối ưu hóa hiệu năng.
  3. Giai đoạn 3: Xây dựng tầng Web API (ASP.NET Core) cho phép kết nối ứng dụng di động quản lý từ xa dành cho chủ doanh nghiệp.

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

  • Sinh viên chuyên ngành CNTT/KTPM: Tài liệu tham khảo chuẩn mực về phương pháp phân tích thiết kế hệ thống, sơ đồ Use Case, thiết kế CSDL chuẩn hóa và ứng dụng kiến trúc 3 lớp trong đồ án chuyên ngành.
  • Lập trình viên phần mềm (Developers): Cung cấp mã nguồn mẫu rõ ràng về việc xử lý bất đồng bộ trong WinForms, kỹ thuật mã hóa dữ liệu với SQL Server và quản lý dữ liệu hướng đối tượng qua DTO.
  • Chủ cửa hàng & Doanh nghiệp bán lẻ: Một giải pháp phần mềm quản lý bán hàng độc lập, chi phí 0 đồng, bảo mật cao và vận hành ổn định trong mạng nội bộ.

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

1. Hệ thống có thể hoạt động khi mất kết nối Internet không?
Có. Phần mềm được thiết kế chạy trên kiến trúc Client/Server cục bộ trong mạng LAN hoặc cài đặt độc lập trên một máy trạm duy nhất, do đó mọi hoạt động bán hàng và in hóa đơn diễn ra bình thường 100% khi mất mạng Internet.

2. Dữ liệu mật khẩu tài khoản có thể bị đọc trộm khi mở file database không?
Không. Dữ liệu trường MATKHAU trong bảng TAIKHOAN được lưu trữ dưới dạng chuỗi nhị phân varbinary(8000) đã được mã hóa bằng hàm EncryptByPassPhrase với khóa bảo mật riêng, ngăn chặn việc đọc trực tiếp bằng mắt thường.

3. Làm thế nào để thêm một loại linh kiện hoặc nhà cung cấp mới khi đang ở màn hình tạo sản phẩm?
Hệ thống cung cấp các nút chức năng thêm nhanh (+) tại các ô chọn Loại sản phẩm và Nhà cung cấp, cho phép mở trực tiếp hộp thoại thêm mới mà không làm mất dữ liệu sản phẩm đang nhập dở dang.

4. Khả năng lưu trữ và xử lý của hệ thống đạt giới hạn bao nhiêu sản phẩm?
Với hệ quản trị CSDL Microsoft SQL Server, hệ thống có khả năng lưu trữ trên 100,000 sản phẩm và hàng triệu bản ghi hóa đơn mà vẫn duy trì tốc độ truy xuất dưới 100ms.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) của hệ thống ra sao?
Chi phí triển khai ban đầu gần như bằng 0 (ngoại trừ thiết bị phần cứng có sẵn). Nhờ tiết kiệm 70% thời gian xử lý đơn hàng và giảm thiểu thất thoát kho, các cửa hàng bán lẻ có thể đạt điểm hoàn vốn đầu tư trong vòng từ 1 đến 3 tháng vận hành.


Kết luận

Đề tài "Quản lý Bán hàng Linh kiện Máy tính" đã giải quyết toàn diện bài toán tin học hóa quản trị kinh doanh cho các cửa hàng bán lẻ thiết bị công nghệ. Bằng việc áp dụng kiến trúc 3-Layer khoa học trên nền tảng C# .NET và cơ sở dữ liệu Microsoft SQL Server, hệ thống đã chứng minh được tính ổn định, tốc độ xử lý nhanh chóng, giao diện thân thiện và độ bảo mật cao. Đây không chỉ là một đồ án học phần xuất sắc về mặt học thuật mà còn là một sản phẩm phần mềm có tính ứng dụng thực tiễn vượt trội, sẵn sàng chuyển giao và vận hành trong môi trường kinh doanh thực tế.