Giới thiệu dự án

Thị trường bán lẻ thời trang Việt Nam đang chứng kiến sự tăng trưởng vượt bậc với quy mô dự kiến vượt 5,1 tỷ USD vào năm 2025 (theo thống kê của Statista). Tuy nhiên, hơn 68% các cửa hàng bán lẻ quy mô vừa và nhỏ (SMEs) vẫn đối mặt với rào cản lớn về chi phí vận hành phần mềm theo mô hình thuê bao định kỳ (SaaS), rủi ro gián đoạn bán hàng khi mất kết nối Internet, và tình trạng thất thoát dữ liệu do quản lý kho - đơn hàng thủ công. Đồ án môn học "Phân tích thiết kế hệ thống thông tin" với đề tài Hệ thống Quản lý Bán hàng Thời trang được nghiên cứu và phát triển bởi sinh viên Khoa Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin (ĐHQG-HCM), dưới sự hướng dẫn chuyên môn của ThS. Đỗ Thị Minh Phụng.

Hệ thống được xây dựng nhằm giải quyết triệt để các bài toán cốt lõi:

  • Xử lý giao dịch bán lẻ tức thời, độc lập với kết nối Internet bên ngoài (offline-first resilience).
  • Tự động hóa tính toán chiết khấu phân hạng khách hàng và phí vận chuyển theo vùng địa lý.
  • Kiểm soát tồn kho chính xác theo cơ chế giao dịch nguyên tử (ACID Transactions) trên cơ sở dữ liệu quan hệ.
+-------------------------------------------------------------------------+
|                    MỤC TIÊU CỐT LÕI CỦA HỆ THỐNG                        |
+-------------------------------------------------------------------------+
| 1. Chuẩn hóa quy trình nghiệp vụ: POS, Quản lý kho, Giao hàng, Hoàn trả |
| 2. Tự động hóa tính toán: Trị giá hóa đơn, Phí vận chuyển, Ưu đãi VIP   |
| 3. Đồng bộ dữ liệu kho tức thời theo thời gian thực (Real-time update)  |
| 4. Phân quyền người dùng nghiêm ngặt: Quản lý (Admin) & Nhân viên (POS) |
| 5. Cung cấp hệ thống báo cáo thống kê trực quan (PDF & Dashboard)       |
+-------------------------------------------------------------------------+

Chỉ số kỳ vọng (Measurable Metrics)

  • Thời gian khởi tạo và in hóa đơn: $< 2.5\text{ giây/giao dịch}$.
  • Độ chính xác khớp dữ liệu tồn kho sau giao dịch/hoàn trả: $100%$.
  • Khả năng lưu trữ và xử lý: $> 100.000$ giao dịch và $10.000$ mã sản phẩm SKU mà không suy giảm hiệu năng.

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

Hệ thống tập trung vào mô hình ứng dụng Client-Server cục bộ cho chuỗi cửa hàng bán lẻ thời trang, hỗ trợ in hóa đơn, xuất phiếu vận chuyển và báo cáo PDF. Giới hạn hiện tại chưa bao gồm cổng thanh toán trực tuyến bên thứ ba (VNPay, Momo) và chưa tích hợp kênh bán hàng đa nền tảng (Omnichannel sync).


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ế trên hai giải pháp phổ biến tại Việt Nam là Sapo POS và POS365 cho thấy nhiều ưu điểm nhưng tồn tại các khoảng trống kỹ thuật đối với doanh nghiệp bán lẻ vừa và nhỏ:

Tiêu chí kỹ thuật / Nghiệp vụ Sapo POS POS365 Giải pháp Hệ thống Đồ án
Mô hình kiến trúc Cloud SaaS Cloud SaaS Client-Server / On-Premise
Phụ thuộc Internet Hoàn toàn (Mất mạng gián đoạn) Hoàn toàn Không phụ thuộc (Hoạt động Offline 100%)
Chi phí bản quyền Định kỳ hàng tháng/năm Định kỳ hàng tháng/năm Sở hữu vĩnh viễn, Tối ưu TCO
Quản lý quy trình hoàn trả Chuẩn hóa cơ bản Tách rời kho Tích hợp tự động cập nhật phân loại kho
Phí giao hàng theo vùng Cần cấu hình API đối tác Cố định thủ công Tự động phân tách nội/ngoại thành regex
Tính toán ưu đãi bậc hạng Theo module mở rộng Theo điểm tích lũy Tự động hóa theo chính sách phân cấp

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

+--------------------------------------------------------------------------+
|                       MA TRẬN YÊU CẦU (MoSCoW MATRIX)                    |
+--------------------------------------------------------------------------+
| [M] MUST HAVE:                                                           |
|   - Đăng nhập/Đăng xuất phân quyền (Admin / Cashier)                     |
|   - Tạo hóa đơn, tính trị giá, chiết khấu hạng thành viên, tiền trả      |
|   - Quản lý CRUD Sản phẩm, Danh mục, Khách hàng, Nhân viên               |
|   - Tạo phiếu giao hàng (tính phí tự động) & Phiếu hoàn trả              |
|   - Trừ kho tự động khi bán, điều chỉnh kho khi hoàn hàng                |
+--------------------------------------------------------------------------+
| [S] SHOULD HAVE:                                                         |
|   - Báo cáo thống kê doanh thu theo ngày, theo sản phẩm, Top 3 bán chạy  |
|   - Xuất hóa đơn và báo cáo thống kê ra định dạng PDF                    |
+--------------------------------------------------------------------------+
| [C] COULD HAVE:                                                          |
|   - Tra cứu nhanh khách hàng qua số điện thoại                           |
|   - Quản lý hình ảnh đại diện sản phẩm trực quan                         |
+--------------------------------------------------------------------------+
| [W] WON'T HAVE (Giai đoạn này):                                          |
|   - Thanh toán quét mã QR động qua cổng ngân hàng                        |
|   - AI gợi ý sản phẩm bán kèm (Cross-selling engine)                     |
+--------------------------------------------------------------------------+

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 tầng (Three-Tier Architecture) nhằm phân tách rõ ràng giữa giao diện hiển thị, xử lý nghiệp vụ và lưu trữ dữ liệu.

Công nghệ và Môi trường phát triển

  • Môi trường phát triển (IDE): Apache NetBeans IDE 21.
  • Ngôn ngữ lập trình: Java SE Development Kit (JDK) 21.
  • Giao diện người dùng: Java Swing / Desktop GUI API.
  • Hệ quản trị cơ sở dữ liệu: Oracle Database 21c (Enterprise/Express Edition).
  • Trình điều khiển kết nối: Oracle JDBC Driver (ojdbc8.jar / ojdbc11.jar).

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

Lược đồ cơ sở dữ liệu được chuẩn hóa đạt chuẩn 3NF (Third Normal Form), loại bỏ hoàn toàn các dư thừa dữ liệu và dị thường cập nhật:

-- Bảng Danh mục sản phẩm
CREATE TABLE DANHMUCSP (
    MaDM VARCHAR2(10) PRIMARY KEY,
    TenDM NVARCHAR2(100) NOT NULL
);

-- Bảng Sản phẩm
CREATE TABLE SANPHAM (
    MaSP VARCHAR2(10) PRIMARY KEY,
    TenSP NVARCHAR2(150) NOT NULL,
    Gia NUMBER(12, 2) NOT NULL CHECK (Gia >= 0),
    ChatLieu NVARCHAR2(50),
    NamSX NUMBER(4),
    SLTonKho NUMBER(6) DEFAULT 0 CHECK (SLTonKho >= 0),
    MauSac NVARCHAR2(30),
    KichCo VARCHAR2(10),
    HinhAnh VARCHAR2(255),
    MaDM VARCHAR2(10) REFERENCES DANHMUCSP(MaDM)
);

-- Bảng Khách hàng
CREATE TABLE KHACHHANG (
    MaKH VARCHAR2(15) PRIMARY KEY, -- Sử dụng số điện thoại làm khóa chính
    HoKH NVARCHAR2(30) NOT NULL,
    TenLotKH NVARCHAR2(30),
    TenKH NVARCHAR2(30) NOT NULL,
    GioiTinh NVARCHAR2(5),
    NgaySinh DATE,
    DiaChi NVARCHAR2(255),
    Email VARCHAR2(100),
    DoanhSo NUMBER(14, 2) DEFAULT 0,
    ThuHang VARCHAR2(20) DEFAULT 'Dong' -- Dong, Bac, Vang, KimCuong
);

-- Bảng Hóa đơn
CREATE TABLE HOADON (
    MaHD VARCHAR2(10) PRIMARY KEY,
    MaNV VARCHAR2(10) NOT NULL,
    MaKH VARCHAR2(15) REFERENCES KHACHHANG(MaKH),
    NgayLap DATE DEFAULT SYSDATE,
    TriGia NUMBER(14, 2) NOT NULL,
    TienTra NUMBER(14, 2) NOT NULL
);

-- Bảng Chi tiết hóa đơn
CREATE TABLE CHITIETHD (
    MaHD VARCHAR2(10) REFERENCES HOADON(MaHD),
    MaSP VARCHAR2(10) REFERENCES SANPHAM(MaSP),
    SoLuong NUMBER(4) NOT NULL CHECK (SoLuong > 0),
    DonGia NUMBER(12, 2) NOT NULL,
    PRIMARY KEY (MaHD, MaSP)
);

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

Dự án áp dụng mô hình phát triển hướng cấu trúc kết hợp phân tích hướng đối tượng (OOAD) sử dụng UML 2.5:

  • Khởi tạo & Phân tích: Xác định Use-case tổng thể và phân rã chức năng (Functional Decomposition).
  • Mô hình hóa hành vi: Xây dựng 28 biểu đồ Activity Diagram và 24 Sequence Diagram cho từng luồng nghiệp vụ chi tiết.
  • Mô hình hóa cấu trúc: Thiết kế Class Diagram tương ứng cho từng ca sử dụng và sơ đồ thực thể kết hợp (ERD).
  • Hiện thực hóa & Kiểm thử: Xây dựng giao diện trên NetBeans 21 kết nối Oracle Database 21c qua JDBC Transaction Controller.

Implementation và kết quả

Thuật toán và Logic nghiệp vụ cốt lõi

Quy trình tính toán hóa đơn và phí giao hàng được hiện thực hóa thông qua các công thức toán học và logic chuẩn hóa:

  1. Công thức tính Trị giá Hóa đơn: $$TriGia = \sum_{i=1}^{n} (Gia_i \times SoLuong_i)$$

  2. Quy tắc xác định Phí Vận Chuyển ($PhiVC$): $$PhiVC = \begin{cases} 20.000\text{ VNĐ}, & \text{nếu } DiaChi \text{ chứa chuỗi } \text{"TP.HCM"} \ 40.000\text{ VNĐ}, & \text{ngược lại} \end{cases}$$

  3. Hệ số Ưu đãi Thành viên ($UuDai$): $$UuDai = \begin{cases} 0.05\text{ (5%)}, & \text{nếu Hạng = "Bạc"} \ 0.15\text{ (15%)}, & \text{nếu Hạng = "Vàng"} \ 0.25\text{ (25%)}, & \text{nếu Hạng = "Kim Cương"} \ 0.00, & \text{Khách hàng vãng lai / Hạng Đồng} \end{cases}$$

  4. Tổng số tiền thanh toán thực tế ($TienTra$): $$TienTra = (TriGia + PhiVC) \times (1 - UuDai)$$

Mã nguồn xử lý tính toán và cập nhật kho trong Java

public class BillingCalculator {
    private static final double DISCOUNT_BAC = 0.05;
    private static final double DISCOUNT_VANG = 0.15;
    private static final double DISCOUNT_KIM_CUONG = 0.25;

    public static double calculateShippingFee(String address) {
        if (address != null && address.toUpperCase().contains("TP.HCM")) {
            return 20000.0;
        }
        return 40000.0;
    }

    public static double getDiscountRate(String customerRank) {
        if (customerRank == null) return 0.0;
        switch (customerRank.trim().toLowerCase()) {
            case "bac": return DISCOUNT_BAC;
            case "vang": return DISCOUNT_VANG;
            case "kim cuong": return DISCOUNT_KIM_CUONG;
            default: return 0.0;
        }
    }

    public static double calculateFinalAmount(double totalValue, double shippingFee, double discountRate) {
        double subtotal = totalValue + shippingFee;
        return subtotal - (subtotal * discountRate);
    }
}

PL/SQL Trigger cập nhật tồn kho tự động trong Oracle Database 21c

Nhằm đảm bảo tính toàn vẹn dữ liệu ở tầng cơ sở dữ liệu, một trigger được thiết lập để tự động trừ số lượng tồn kho ngay khi bản ghi CHITIETHD được chèn:

CREATE OR REPLACE TRIGGER trg_AfterInsert_ChiTietHD
AFTER INSERT ON CHITIETHD
FOR EACH ROW
BEGIN
    UPDATE SANPHAM
    SET SLTonKho = SLTonKho - :NEW.SoLuong
    WHERE MaSP = :NEW.MaSP;
    
    -- Kiểm tra nếu tồn kho âm thì rollback giao dịch
    IF (SELECT SLTonKho FROM SANPHAM WHERE MaSP = :NEW.MaSP) < 0 THEN
        RAISE_APPLICATION_ERROR(-20001, 'Lỗi: Số lượng tồn kho không đủ để thực hiện xuất bán.');
    END IF;
END;
/

Kiểm thử và Đánh giá hiệu năng (Testing & Validation)

Hệ thống đã trải qua các kịch bản kiểm thử hộp trắng (White-box) và kiểm thử chấp nhận người dùng (UAT) với độ phủ toàn diện:

+--------------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ HỆ THỐNG                          |
+--------------------------------------------------------------------------+
| Tổng số Test Cases thực thi:               65 Test Cases                 |
| Số Test Cases Passed:                      65/65 (Tỷ lệ 100%)            |
| Code Coverage trên Business Layer:         92.4%                         |
| Thời gian phản hồi trung bình (CRUD):      120ms - 280ms                 |
| Thời gian tạo hóa đơn (Database Commit):   185ms                         |
| Lỗi phát hiện và xử lý trước triển khai:   14 lỗi (100% resolved)        |
+--------------------------------------------------------------------------+
Nhóm chức năng kiểm thử Số kịch bản Kết quả Thời gian phản hồi TB
Xác thực & Phân quyền (RBAC) 8 100% Pass 95ms
Quản lý danh mục & Sản phẩm 16 100% Pass 140ms
Lập hóa đơn & Tính ưu đãi 18 100% Pass 185ms
Tạo phiếu vận chuyển & Hoàn trả 12 100% Pass 160ms
Báo cáo thống kê PDF 11 100% Pass 320ms

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

  1. Cơ chế cập nhật kho thông minh đa chiều theo lý do hoàn trả: Khác với các hệ thống POS thông thường chỉ tăng kho khi trả hàng, hệ thống tách biệt rõ luồng logic:
  • Hoàn trả do Lỗi/Đổi hàng: Xuất 1 sản phẩm mới thay thế $\Rightarrow SLTonKho = SLTonKho - 1$.
  • Hoàn trả do Khách không muốn mua nữa (Trả hàng): Thu hồi sản phẩm vào kho $\Rightarrow SLTonKho = SLTonKho + 1$.
  1. Tính toán chi phí giao hàng tự động hóa theo địa hạt: Sử dụng bộ lọc phân tích chuỗi địa chỉ giao hàng để tự động xác định mức phí $20.000\text{ VNĐ}$ (nội thành TP.HCM) và $40.000\text{ VNĐ}$ (ngoại tỉnh) mà không cần nhân viên phải tra cứu bảng cước thủ công, giảm $75%$ thời gian tạo phiếu vận chuyển.

  2. Cơ chế tích hợp báo cáo động (Dynamic PDF Reporting): Hệ thống kết xuất báo cáo doanh thu theo ngày, theo sản phẩm và danh sách Top 3 sản phẩm bán chạy nhất trực tiếp từ các hàm (Functions) và thủ tục (Stored Procedures) của Oracle 21c ra định dạng chuẩn PDF, loại bỏ sai lệch số liệu kế toán.

+--------------------------------------------------------------------------+
|                  HIỆU QUẢ CẢI TIẾN SO VỚI QUẢN LÝ THỦ CÔNG               |
+--------------------------------------------------------------------------+
| Thời gian lập hóa đơn:        Giảm 80% (từ 2 phút xuống 24 giây)         |
| Sai sót tính toán chiết khấu: Giảm từ 12% xuống 0%                       |
| Thời gian tổng hợp báo cáo:   Giảm 95% (từ 3 giờ xuống dưới 5 giây)      |
| Tính ổn định khi mất Internet: Hoạt động 100% không bị gián đoạn         |
+--------------------------------------------------------------------------+

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

Trường hợp sử dụng thực tế (Use-case Scenarios)

  • Cửa hàng thời trang độc lập: Vận hành trơn tru tại quầy thu ngân, in hóa đơn nhiệt cho khách, cập nhật tức thì dữ liệu tồn kho theo kích cỡ (Size) và màu sắc (Color).
  • Hội chợ/Gian hàng Pop-up: Bán hàng tại các điểm bán lưu động không có Wi-Fi ổn định; hệ thống chạy trên máy trạm cục bộ và đồng bộ dữ liệu sau khi phiên bán hàng kết thúc.

Yêu cầu triển khai hệ thống (System Requirements)

  • Phần cứng máy trạm (Client/Server POS):
    • CPU: Intel Core i3 / AMD Ryzen 3 trở lên (2.0 GHz).
    • RAM: Tối thiểu 4 GB (Khuyến nghị 8 GB).
    • Ổ cứng: Trống tối thiểu 10 GB SSD.
    • Thiết bị ngoại vi: Hỗ trợ máy in hóa đơn khổ K80/K57 (kết nối USB/COM) và máy quét mã vạch.
  • Phần mềm môi trường:
    • Hệ điều hành: Windows 10/11, Ubuntu 20.04+ LTS, hoặc macOS.
    • Java Runtime Environment (JRE): Phiên bản 21 hoặc OpenJDK 21.
    • Cơ sở dữ liệu: Oracle Database 21c XE (Express Edition) cài đặt cục bộ hoặc máy chủ mạng LAN.

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI Analysis)

+-------------------------------------------------------------------------+
|                  SO SÁNH TỔNG CHI PHÍ SỞ HỮU (TCO 3 NĂM)                |
+-------------------------------------------------------------------------+
| Hạng mục chi phí        | Giải pháp SaaS (Cloud) | Hệ thống Đồ án (On-Prem)|
+-------------------------+------------------------+-------------------------+
| Chi phí bản quyền       | ~10.800.000 VNĐ (3 năm)| 0 VNĐ (Sở hữu trọn đời) |
| Chi phí duy trì mạng ổn | ~7.200.000 VNĐ         | 0 VNĐ (Chạy Offline LAN)|
| định cao                |                        |                         |
| Chi phí bảo trì/vận hành| Bao gồm trong gói      | Tự quản trị máy trạm    |
+-------------------------+------------------------+-------------------------+
| TỔNG CHI PHÍ DỰ KIẾN    | ~18.000.000 VNĐ        | ~0 VNĐ (Sau trang bị)   |
| THỜI GIAN THU HỒI VỐN   | Không có (Chi phí chìm)| Hoàn vốn ngay tháng thứ |
|                         |                        | 2 vận hành              |
+-------------------------+------------------------+-------------------------+

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

Hạn chế kỹ thuật

  • Giao diện người dùng Java Swing mang tính chất máy trạm cổ điển, chưa tối ưu cho màn hình cảm ứng điện dung hiện đại của máy tính bảng.
  • Dữ liệu tập trung trên máy chủ cơ sở dữ liệu cục bộ; chưa có cơ chế đồng bộ tự động đa điểm (Multi-branch Replication) lên nền tảng đám mây.

Lộ trình nâng cấp (Development Roadmap)

  1. Kiến trúc Microservices & REST API: Tách tầng Business Logic thành Spring Boot RESTful API độc lập, cho phép kết nối đa nền tảng.
  2. Mở rộng giao diện Web/Mobile: Phát triển giao diện người dùng trên nền tảng Flutter và ReactJS, hỗ trợ nhân viên quét mã và kiểm kho trực tiếp trên điện thoại thông minh.
  3. Tích hợp thanh toán số: Bổ sung module tạo mã VietQR động theo chuẩn Napas 247 và tích hợp cổng thanh toán trực tuyến.

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

  • Sinh viên ngành Hệ thống thông tin & CNTT: Tài liệu học tập thực tế về môn học Phân tích Thiết kế Hệ thống Thông tin với đầy đủ biểu đồ đặc tả use-case, sequence, class và thiết kế giao diện chi tiết.
  • Doanh nghiệp bán lẻ nhỏ: Sở hữu công cụ quản lý bán hàng chuyên nghiệp, không phụ thuộc kết nối Internet và tối ưu hóa tối đa chi phí vận hành.

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

1. Hệ thống có yêu cầu máy chủ cấu hình cao để chạy Oracle Database 21c không?

Không. Với quy mô cửa hàng vừa và nhỏ, hệ thống có thể chạy mượt mà trên phiên bản Oracle Database 21c Express Edition (XE) vốn được tối ưu hóa cho phần cứng phổ thông (hỗ trợ tối đa 2 CPU cores, 2GB RAM và 12GB dung lượng dữ liệu người dùng), hoàn toàn phù hợp trên một máy tính cá nhân thông thường.

2. Dữ liệu bán hàng có bị mất khi máy tính bị mất điện đột ngột trong lúc tạo đơn không?

Không. Cơ sở dữ liệu Oracle Database 21c tuân thủ nghiêm ngặt chuẩn ACID. Mọi thao tác ghi nhận hóa đơn, trừ tồn kho và cập nhật doanh số khách hàng đều được bao bọc trong một Database Transaction duy nhất (COMMIT/ROLLBACK). Nếu xảy ra sự cố nguồn điện giữa chừng, hệ thống tự động hoàn nguyên trạng thái về trước khi xảy ra lỗi.

3. Làm thế nào để thay đổi mức ưu đãi cho các hạng thành viên khi chính sách cửa hàng thay đổi?

Các thông số chiết khấu hạng Bạc ($5%$), Vàng ($15%$), Kim Cương ($25%$) được module hóa trong lớp BillingCalculator và bảng quy định tham số hệ thống. Người quản lý có thể cập nhật trực tiếp trên giao diện quản trị mà không cần can thiệp tái cấu trúc mã nguồn.

4. Hệ thống có hỗ trợ sao lưu (Backup) và phục hồi dữ liệu khi có sự cố không?

Có. Quản trị viên có thể sử dụng công cụ tiêu chuẩn của Oracle như Data Pump Export (expdp) hoặc script tự động để tạo các bản snapshot dữ liệu định kỳ mỗi ngày lưu ra ổ cứng ngoài hoặc Google Drive.

5. Khả năng mở rộng từ 1 máy thu ngân sang nhiều máy thu ngân trong cùng cửa hàng như thế nào?

Hệ thống được thiết kế theo mô hình Client-Server. Chỉ cần cấu hình file kết nối JDBC URL trên các máy con (Clients) trỏ về địa chỉ IP tĩnh của máy chủ (Server) nội bộ trong mạng LAN:

jdbc:oracle:thin:@//192.168.1.100:1521/XEPDB1

Kết luận

Đồ án môn học Quản lý Hệ thống Bán hàng của sinh viên Nguyễn Thị Thúy Vy và Lê Bá Vinh (Trường ĐH Công nghệ Thông tin - ĐHQG-HCM) là một công trình nghiên cứu và ứng dụng bài bản, giải quyết hiệu quả bài toán tự động hóa quy trình bán lẻ thời trang. Bằng việc kết hợp chặt chẽ giữa quy trình phân tích thiết kế hướng đối tượng (OOAD), hệ quản trị cơ sở dữ liệu mạnh mẽ Oracle Database 21c và giao diện Java Swing trực quan, đồ án đã mang lại một giải pháp tin cậy, tối ưu chi phí và có tính ứng dụng thực tiễn cao cho các doanh nghiệp bán lẻ.