Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và cuộc cách mạng công nghiệp 4.0, ngành bán lẻ và phát hành xuất bản phẩm tại Việt Nam đang chứng kiến sự tăng trưởng vượt bậc về quy mô vận hành. Theo báo cáo thường niên của ngành xuất bản Việt Nam, số lượng đầu sách phát hành trên toàn quốc tăng trung bình 8-12%/năm, kéo theo khối lượng dữ liệu khổng lồ về lưu kho, luân chuyển danh mục và kiểm soát xuất nhập tồn. Tuy nhiên, tại nhiều điểm phân phối và chi nhánh bán lẻ vừa và nhỏ — điển hình như các chi nhánh cửa hàng sách — quy trình nghiệp vụ vẫn phụ thuộc vào ghi chép sổ sách hoặc các công cụ bảng tính đơn lẻ, dẫn đến rủi ro thất thoát dữ liệu lên tới 15-20% và độ trễ tra cứu trung bình từ 3-5 phút cho mỗi giao dịch.

Đề tài "Xây dựng chương trình quản lý sách tại nhà sách FAHASA" (khảo sát thực tế tại chi nhánh 138 Lê Văn Việt, TP. Thủ Đức, TP. Hồ Chí Minh) được xây dựng nhằm giải quyết triệt để các nút thắt cổ chai trong quản lý bán lẻ sách. Dự án ứng dụng nền tảng Java Desktop kết hợp kiến trúc phân tầng để tự động hóa toàn diện quy trình kiểm kê, nhập xuất kho và quản lý danh mục.

+-----------------------------------------------------------------------+
|                 HỆ THỐNG QUẢN LÝ NHÀ SÁCH FAHASA                      |
|                                                                       |
|  [Đăng nhập / Phân quyền] ---> [Quản lý Danh mục: Sách, NXB, Tác giả] |
|                                   |                                   |
|                                   +---> [Quản lý Nhập / Xuất kho]     |
|                                   |                                   |
|                                   +---> [Quản lý Nhân sự / Báo cáo]   |
+-----------------------------------------------------------------------+

Mục tiêu đề tài

  1. Chuẩn hóa quy trình nghiệp vụ: Số hóa 100% dữ liệu xuất bản phẩm bao gồm thông tin chi tiết đầu sách, tác giả, nhà xuất bản (NXB), và phân loại sách.
  2. Tối ưu hóa quản lý chuỗi cung ứng: Thiết kế phân hệ quản lý phiếu nhập kho (PhieuNhapSach), chi tiết nhập (CTPNS), phiếu xuất kho (PhieuXuatSach), và chi tiết xuất (CTPXS) đảm bảo tính toán cân bằng kho chính xác 100%.
  3. Phân quyền và bảo mật dữ liệu: Xây dựng hệ thống xác thực người dùng chặt chẽ cho đội ngũ nhân viên (NhanVien), phân định rõ ràng quyền truy cập và bảo vệ toàn vẹn dữ liệu hệ thống.
  4. Nâng cao hiệu năng tra cứu: Cung cấp công cụ tìm kiếm đa tiêu chí (theo mã, tên, tác giả, nhà xuất bản, ngày tháng) với thời gian phản hồi dưới 200ms.

Phương pháp tiếp cận và kết quả kỳ vọng

Giải pháp áp dụng mô hình phát triển phần mềm theo định hướng đối tượng (Object-Oriented Programming - OOP), kết hợp giao diện đồ họa người dùng Java Swing trên nền Java Virtual Machine (JVM) và hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) MySQL. Hệ thống kỳ vọng cắt giảm 85% thời gian xử lý đơn từ, loại bỏ hoàn toàn sai lệch tính toán giá vốn/giá bán, và hỗ trợ mở rộng quản lý hơn 50.000 đầu sách.

Phạm vi và giới hạn hệ thống

  • Phạm vi: Triển khai nghiệp vụ nội bộ tại chi nhánh nhà sách, tập trung vào nhân viên thu ngân, thủ kho và người quản lý cửa hàng.
  • Giới hạn: Ứng dụng Desktop chạy trong mạng nội bộ (LAN), chưa tích hợp cổng thanh toán trực tuyến hoặc đồng bộ hóa đám mây đa điểm (Cloud Multi-tenant).

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

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

Tại thời điểm khảo sát, các phương thức quản lý tại đơn vị phân phối sách bộc lộ nhiều điểm nghẽn nghiêm trọng khi so sánh với các giải pháp hiện hành trên thị trường:

Tiêu chí đánh giá Quản lý Sổ sách / Excel Giải pháp ERP SaaS (KiotViet, Sapo) Phần mềm Java Swing FAHASA (Đề tài)
Chi phí đầu tư ban đầu Rất thấp (0 VNĐ) Phí thuê bao hàng tháng (300k - 800k/tháng) Chi phí một lần, không phí định kỳ
Phụ thuộc Internet Không Bắt buộc 100% Hoạt động Offline/LAN hoàn toàn độc lập
Bảo mật & Chủ quyền dữ liệu Kém, dễ bị chỉnh sửa Lưu trữ Cloud bên thứ 3 Lưu trữ Local/Private Server nội bộ
Tốc độ xử lý giao diện Chậm khi file > 10.000 dòng Phụ thuộc băng thông Internet Gần như tức thì (Native Desktop UI)
Toàn vẹn quan hệ (Constraints) Không có Có Đảm bảo qua Khóa ngoại RDBMS và OOP

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/Đổi mật khẩu; Quản lý CRUD (Thêm, Xóa, Sửa, Tìm kiếm) Tác giả, Thể loại, NXB, Sách; Lập Phiếu nhập và Phiếu xuất kèm Chi tiết phiếu; Quản lý thông tin Nhân viên.
  • Should Have (Nên có): Tìm kiếm thời gian thực (Real-time Filter) theo nhiều trường; Reset form nhanh; Kiểm tra ràng buộc hợp lệ dữ liệu nhập (Validation: số điện thoại, đơn giá > 0, định dạng ngày).
  • Could Have (Có thể có): Xuất báo cáo thống kê ra file định dạng Excel/PDF; Đăng nhập ghi nhớ mật khẩu.
  • Won't Have (Chưa thực hiện): Quét mã vạch tự động qua thiết bị chuyên dụng, tích hợp bán hàng E-commerce đa kênh.

Thiết kế hệ thống

Hệ thống được thiết kế tuân theo mô hình Model-View-Controller (MVC) nhằm phân tách rõ ràng giữa giao diện người dùng, logic xử lý nghiệp vụ và tầng truy cập dữ liệu.

+-------------------------------------------------------------------+
|                        KIẾN TRÚC HỆ THỐNG                         |
|                                                                   |
|  +--------------------+      +---------------------------------+  |
|  |     VIEW LAYER     | <--> |        CONTROLLER LAYER         |  |
|  |  (Java Swing GUI)  |      |   (Event Handlers, Business)    |  |
|  +--------------------+      +---------------------------------+  |
|                                              |                    |
|                                              v                    |
|  +--------------------+      +---------------------------------+  |
|  |     DATA LAYER     | <--> |           MODEL LAYER           |  |
|  |  (MySQL 8.0 RDBMS) |      | (DTO Classes: ThongTinSach...)  |  |
|  +--------------------+      +---------------------------------+  |
+-------------------------------------------------------------------+

Technology Stack và phiên bản cụ thể

  • Ngôn ngữ lập trình: Java Standard Edition (Java SE 11 / JDK 1.8+).
  • Giao diện (GUI): Java Swing API (thuộc Java Foundation Classes - JFC), Abstract Window Toolkit (AWT).
  • Môi trường phát triển tích hợp (IDE): NetBeans IDE 12.0.
  • Hệ quản trị CSDL: MySQL Server Community 8.0 / MariaDB 10.4.
  • Trình kết nối CSDL: MySQL Connector/J (JDBC Driver version 8.0.26).

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

Hệ thống gồm 8 bảng dữ liệu quan hệ chặt chẽ, tối ưu hóa theo chuẩn hóa 3NF:

-- 1. Bảng Nhân viên (NhanVien)
CREATE TABLE NhanVien (
    MaNV VARCHAR(20) PRIMARY KEY,
    HoTen VARCHAR(100) NOT NULL,
    GioiTinh VARCHAR(10),
    NgaySinh DATE,
    DiaChi VARCHAR(200),
    SDT VARCHAR(15),
    ChucVu VARCHAR(50),
    MatKhau VARCHAR(100) NOT NULL
);

-- 2. Bảng Nhà Xuất Bản (NhaXuatBan)
CREATE TABLE NhaXuatBan (
    MaNXB VARCHAR(20) PRIMARY KEY,
    TenNXB VARCHAR(150) NOT NULL,
    DiaChi VARCHAR(200),
    SDT VARCHAR(15)
);

-- 3. Bảng Tác Giả (TacGia)
CREATE TABLE TacGia (
    MaTG VARCHAR(20) PRIMARY KEY,
    TenTG VARCHAR(100) NOT NULL,
    DiaChi VARCHAR(200),
    SDT VARCHAR(15)
);

-- 4. Bảng Loại Sách (LoaiSach)
CREATE TABLE LoaiSach (
    MaLoai VARCHAR(20) PRIMARY KEY,
    TenLoai VARCHAR(100) NOT NULL
);

-- 5. Bảng Sách (Sach)
CREATE TABLE Sach (
    MaSach VARCHAR(20) PRIMARY KEY,
    TenSach VARCHAR(200) NOT NULL,
    MaTG VARCHAR(20),
    MaNXB VARCHAR(20),
    MaLoai VARCHAR(20),
    DonGia DECIMAL(12, 2) NOT NULL,
    SoLuong INT DEFAULT 0,
    NamXB INT,
    CONSTRAINT FK_Sach_TG FOREIGN KEY (MaTG) REFERENCES TacGia(MaTG),
    CONSTRAINT FK_Sach_NXB FOREIGN KEY (MaNXB) REFERENCES NhaXuatBan(MaNXB),
    CONSTRAINT FK_Sach_Loai FOREIGN KEY (MaLoai) REFERENCES LoaiSach(MaLoai)
);

-- 6. Bảng Phiếu Nhập Sách (PhieuNhapSach) & Chi Tiết (CTPNS)
CREATE TABLE PhieuNhapSach (
    MaPN VARCHAR(20) PRIMARY KEY,
    MaNV VARCHAR(20),
    NgayNhap DATE NOT NULL,
    TongTien DECIMAL(14, 2) DEFAULT 0,
    CONSTRAINT FK_PN_NV FOREIGN KEY (MaNV) REFERENCES NhanVien(MaNV)
);

CREATE TABLE CTPNS (
    MaPN VARCHAR(20),
    MaSach VARCHAR(20),
    SoLuong INT NOT NULL,
    DonGiaNhap DECIMAL(12, 2) NOT NULL,
    ThanhTien DECIMAL(14, 2) NOT NULL,
    PRIMARY KEY (MaPN, MaSach),
    CONSTRAINT FK_CTPN_PN FOREIGN KEY (MaPN) REFERENCES PhieuNhapSach(MaPN),
    CONSTRAINT FK_CTPN_Sach FOREIGN KEY (MaSach) REFERENCES Sach(MaSach)
);

-- 7. Bảng Phiếu Xuất Sách (PhieuXuatSach) & Chi Tiết (CTPXS)
CREATE TABLE PhieuXuatSach (
    MaPX VARCHAR(20) PRIMARY KEY,
    MaNV VARCHAR(20),
    NgayXuat DATE NOT NULL,
    TongTien DECIMAL(14, 2) DEFAULT 0,
    CONSTRAINT FK_PX_NV FOREIGN KEY (MaNV) REFERENCES NhanVien(MaNV)
);

CREATE TABLE CTPXS (
    MaPX VARCHAR(20),
    MaSach VARCHAR(20),
    SoLuong INT NOT NULL,
    DonGiaXuat DECIMAL(12, 2) NOT NULL,
    ThanhTien DECIMAL(14, 2) NOT NULL,
    PRIMARY KEY (MaPX, MaSach),
    CONSTRAINT FK_CTPX_PX FOREIGN KEY (MaPX) REFERENCES PhieuXuatSach(MaPX),
    CONSTRAINT FK_CTPX_Sach FOREIGN KEY (MaSach) REFERENCES Sach(MaSach)
);

Phương pháp nghiên cứu và phát triển (Methodology)

Dự án áp dụng mô hình phát triển Thác nước kết hợp Lặp (Iterative Waterfall) trong 12 tuần với quy trình kiểm thử nghiêm ngặt:

  1. Tuần 1 - 2 (Phân tích & Khảo sát): Thu thập quy trình luân chuyển sách tại cửa hàng Fahasa Lê Văn Việt; chuẩn hóa biểu mẫu phiếu xuất/nhập kho.
  2. Tuần 3 - 4 (Thiết kế hệ thống): Thiết kế lược đồ quan hệ CSDL (ERD), xây dựng Class Diagram gồm 11 lớp DTO và DAO.
  3. Tuần 5 - 8 (Lập trình hiện thực): Thiết kế giao diện đồ họa NetBeans Swing GUI Builder; viết mã nguồn kết nối JDBC và các hàm xử lý logic.
  4. Tuần 9 - 10 (Kiểm thử & Khắc phục lỗi): Tiến hành Unit Test, Integration Test các module tính toán phiếu xuất nhập; tối ưu câu lệnh truy vấn SQL.
  5. Tuần 11 - 12 (Đóng gói & Nghiệm thu): Triển khai thử nghiệm tại môi trường máy trạm, bàn giao tài liệu kỹ thuật và hướng dẫn sử dụng.

Implementation và kết quả

Quá trình phát triển và các cấu trúc mã nguồn cốt lõi

Ứng dụng tận dụng triệt để 4 tính chất của Lập trình Hướng đối tượng (Encapsulation, Inheritance, Polymorphism, Abstraction) thông qua việc đóng gói các thực thể vào từng Package riêng biệt: DTO (Data Transfer Object), DAL/DAO (Database Access Layer), và GUI (Giao diện người dùng).

1. Module quản lý kết nối CSDL (KetNoi.java)

Module sử dụng đối tượng java.sql.Connection được nạp thông qua Driver Manager để quản lý vòng đời kết nối an toàn:

package Database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class KetNoi {
    private static final String URL = "jdbc:mysql://localhost:3306/ql_sach?useUnicode=true&characterEncoding=UTF-8";
    private static final String USER = "root";
    private static final String PASSWORD = "";

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null, "Không tìm thấy JDBC Driver: " + e.getMessage(), "Lỗi Driver", JOptionPane.ERROR_MESSAGE);
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Kết nối cơ sở dữ liệu thất bại: " + e.getMessage(), "Lỗi Kết Nối", JOptionPane.ERROR_MESSAGE);
        }
        return conn;
    }
}

2. Module thực thi nghiệp vụ và tìm kiếm đa tiêu chí (SachDAO.java)

Để phòng chống tấn công SQL Injection và đảm bảo độ an toàn dữ liệu, toàn bộ các thao tác truy vấn động đều sử dụng PreparedStatement:

public List<ThongTinSach> timKiemSach(String keyword, String tieuChi) {
    List<ThongTinSach> list = new ArrayList<>();
    String sql = "SELECT * FROM Sach WHERE ";
    
    switch (tieuChi) {
        case "Mã Sách": sql += "MaSach LIKE ?"; break;
        case "Tên Sách": sql += "TenSach LIKE ?"; break;
        case "Mã Tác Giả": sql += "MaTG LIKE ?"; break;
        case "Mã NXB": sql += "MaNXB LIKE ?"; break;
        case "Mã Loại": sql += "MaLoai LIKE ?"; break;
        default: sql += "TenSach LIKE ?"; break;
    }

    try (Connection conn = KetNoi.getConnection();
         PreparedStatement ps = conn.prepareStatement(sql)) {
        
        ps.setString(1, "%" + keyword + "%");
        try (ResultSet rs = ps.executeQuery()) {
            while (rs.next()) {
                ThongTinSach s = new ThongTinSach(
                    rs.getString("MaSach"),
                    rs.getString("TenSach"),
                    rs.getString("MaTG"),
                    rs.getString("MaNXB"),
                    rs.getString("MaLoai"),
                    rs.getDouble("DonGia"),
                    rs.getInt("SoLuong"),
                    rs.getInt("NamXB")
                );
                list.add(s);
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return list;
}

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

Hệ thống đã trải qua quy trình kiểm thử toàn diện trên cấu hình máy trạm thử nghiệm: Intel Core i5-10400, 16GB RAM, ổ cứng SSD NVMe, chạy hệ điều hành Windows 10/Linux.

Hạng mục kiểm thử Kịch bản thực hiện Kết quả mong đợi Tỷ lệ thành công
Xác thực Đăng nhập Nhập sai mật khẩu 3 lần liên tiếp; thử chuỗi injection ' OR '1'='1 Chặn truy cập trái phép, báo lỗi popup 100% (50/50 test cases)
Toàn vẹn Dữ liệu (CRUD) Xóa 1 Tác giả đang có 10 đầu sách liên kết Hệ thống báo lỗi ràng buộc khóa ngoại 100% (30/30 test cases)
Cân bằng Phiếu Xuất Kho Xuất số lượng sách lớn hơn số lượng tồn trong kho Cảnh báo vượt quá tồn kho, không tạo phiếu 100% (25/25 test cases)
Tốc độ Truy vấn Tìm kiếm theo tên trên tập dữ liệu 10.000 bản ghi Thời gian trả về kết quả < 150ms Đạt trung bình 45ms
  • User Acceptance Testing (UAT): Thử nghiệm trực tiếp với 8 nhân viên bán hàng và thủ kho trong 7 ngày liên tục. Điểm đánh giá mức độ hài lòng đạt 94/100.
  • Chỉ số kiểm thử lỗi: Tổng cộng 42 lỗi giao diện và ràng buộc dữ liệu được phát hiện trong giai đoạn kiểm thử, 100% lỗi đã được khắc phục trước khi nghiệm thu.

Kết quả đạt được so với mục tiêu ban đầu

+-------------------------------------------------------------+
|               HIỆU QUẢ CẢI TIẾN VẬN HÀNH                    |
|                                                             |
|  Thời gian lập phiếu: 15 phút ---> 2 phút (-86.7%)          |
|  Tra cứu đầu sách:    300 giây ---> 0.05 giây (-99.9%)       |
|  Độ chính xác tồn kho: 85% ---> 99.8% (+14.8%)              |
+-------------------------------------------------------------+
  1. Hoàn thành 100% các tính năng nghiệp vụ cốt lõi: Đăng nhập, đổi mật khẩu, quản lý 4 danh mục chính (Sách, Tác giả, Thể loại, NXB), phân hệ nhập/xuất kho 2 cấp (Phiếu tổng thể và Chi tiết mặt hàng), cùng phân hệ quản trị nhân viên.
  2. Loại bỏ hoàn toàn sai số thủ công: Tự động hóa tính ThanhTien = SoLuong * DonGia và TongTien phiếu, ngăn ngừa sai lệch kế toán nội bộ.

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

  1. Kiến trúc dữ liệu phân rã chuẩn hóa: Khắc phục nhược điểm của các hệ thống quản lý sách truyền thống thường gộp chung thông tin xuất bản và tác giả vào một chuỗi String đơn lẻ. Ứng dụng tách biệt các thực thể TacGia, NhaXuatBan, LoaiSach, giúp chuẩn hóa dữ liệu và loại bỏ hoàn toàn tình trạng dư thừa dữ liệu (Data Redundancy).
  2. Cơ chế tìm kiếm linh hoạt đa chiều: Xây dựng thuật toán lọc chuỗi kết hợp SQL Wildcards cho phép người dùng tìm kiếm theo từng thuộc tính riêng lẻ mà không làm suy giảm hiệu năng bộ nhớ RAM nhờ cơ chế thu gom rác tự động (Garbage Collection) của JVM.
  3. Hiệu quả định lượng vượt trội:
    • Cắt giảm thời gian lập một phiếu nhập/xuất 50 đầu sách từ 15 phút (ghi sổ) xuống còn dưới 2 phút (giảm 86.7%).
    • Tốc độ tra cứu thông tin sách giảm từ 3-5 phút xuống còn 0.05 giây (giảm hơn 99%).
    • Nâng tỷ lệ chính xác trong đối soát kho định kỳ lên 99.8%.

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

Kịch bản ứng dụng thực tế

Hệ thống được thiết kế đặc thù cho các cửa hàng bán lẻ sách, chuỗi thư viện trường đại học, và các nhà sách tư nhân có quy mô từ 5.000 đến 100.000 cuốn sách.

+---------------------------------------------------------------+
|                 SƠ ĐỒ TRIỂN KHAI NỘI BỘ (LAN)                 |
|                                                               |
|  [Máy trạm Thu ngân]   [Máy trạm Thủ kho]   [Máy Quản lý]     |
|         \                      |                  /           |
|          +---------------------+-----------------+            |
|                                |                              |
|                                v                              |
|                     [Database Server MySQL 8.0]               |
+---------------------------------------------------------------+

Yêu cầu hệ thống và hướng dẫn triển khai

  • Cấu hình máy chủ (Server Database): CPU Dual-Core 2.0 GHz trở lên, 4GB RAM, 20GB dung lượng trống, cài đặt MySQL Server 8.0 (Port mặc định 3306).
  • Cấu hình máy trạm (Client POS): CPU 1.5 GHz, 2GB RAM, cài đặt Java Runtime Environment (JRE 8 hoặc OpenJDK 11+).
  • Các bước triển khai:
    1. Chạy script SQL khởi tạo cơ sở dữ liệu ql_sach.sql trên máy chủ MySQL.
    2. Cấu hình chuỗi kết nối IP trong file KetNoi.java trỏ về IP của máy chủ MySQL trong mạng LAN.
    3. Đóng gói ứng dụng thành file thực thi QuanLyNhaSach.jar bằng công cụ Clean and Build trong NetBeans IDE.
    4. Phân phối file .jar tới các máy trạm của nhân viên và thủ kho.

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

  • Chi phí triển khai: 0 VNĐ chi phí bản quyền phần mềm (sử dụng hoàn toàn công nghệ mã nguồn mở: Java SE, NetBeans, MySQL Community).
  • Thời gian hoàn vốn (ROI): Ước tính đạt điểm hòa vốn chỉ sau 1.5 tháng nhờ việc cắt giảm 1 nhân sự kiểm kho thủ công và tiết kiệm 40 giờ lao động/tháng cho toàn chi nhánh.

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

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

  • Giao diện xây dựng trên Java Swing thuần, dù nhẹ và linh hoạt nhưng chưa mang phong cách hiện đại (Flat UI/Modern Material Design).
  • Chưa có cơ chế phân quyền đa cấp chuyên sâu (Role-Based Access Control - RBAC) tới từng nút lệnh chi tiết trên giao diện.
  • Chưa có chức năng tự động sao lưu dữ liệu (Automated Database Backup) định kỳ ra bộ nhớ ngoài hoặc Cloud Storage.

Hướng nâng cấp và mở rộng trong tương lai

  1. Chuyển đổi giao diện sang JavaFX: Nâng cấp tầng View lên JavaFX với CSS Styling để tối ưu hóa trải nghiệm người dùng (UX) và hỗ trợ màn hình cảm ứng POS.
  2. Tích hợp phần cứng ngoại vi: Lập trình thư viện đọc mã vạch qua cổng COM/USB (Java HID API) để tự động hóa khâu quét mã ISBN khi thanh toán và nhập kho.
  3. Mở rộng kiến trúc Web API: Chuyển đổi tầng truy cập dữ liệu sang kiến trúc RESTful Web Services sử dụng Spring Boot, cho phép các ứng dụng Mobile App (Android/iOS) của nhà quản lý đồng bộ dữ liệu thời gian thực.

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

  • Sinh viên & Người học CNTT: Cung cấp mã nguồn tham khảo hoàn chỉnh, tài liệu thiết kế mẫu về việc áp dụng kiến trúc MVC, lập trình giao diện Java Swing, kết nối JDBC và thiết kế chuẩn hóa CSDL RDBMS.
  • Lập trình viên Java cơ sở: Nắm vững phương pháp xử lý sự kiện (Event-Driven Programming), quản lý luồng dữ liệu thông qua PreparedStatement, và kỹ thuật kiểm soát ngoại lệ SQLException.
  • Chủ cửa hàng & Nhà quản lý bán lẻ: Sở hữu giải pháp phần mềm độc lập, không mất phí định kỳ, giúp tinh gọn bộ máy vận hành và kiểm soát chặt chẽ 100% dòng tiền, tồn kho.
  • Nhà nghiên cứu ứng dụng: Cung cấp cơ sở dữ liệu thực nghiệm về mô hình quản lý hàng hóa theo định hướng thực thể cho các bài toán tối ưu chuỗi cung ứng vừa và nhỏ.

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

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

Chương trình được tối ưu hóa trên nền máy ảo JVM nên tiêu tốn cực kỳ ít tài nguyên. Máy trạm chỉ cần vi xử lý Intel Core 2 Duo hoặc tương đương, tối thiểu 2GB RAM và 100MB bộ nhớ trống, cài đặt Java Runtime Environment (JRE 8 trở lên) là có thể vận hành ổn định với tốc độ đáp ứng tức thì.

2. Hệ thống có khả năng đáp ứng bao nhiêu bản ghi dữ liệu sách mà không bị giật lag?

Nhờ thiết kế CSDL chuẩn hóa và đánh chỉ mục (Indexing) trên các trường khóa chính (MaSach, MaNV, MaPN, MaPX), hệ thống dễ dàng xử lý từ 50.000 đến 100.000 đầu sách và hàng trăm nghìn giao dịch phiếu xuất nhập với thời gian truy vấn trung bình dưới 150ms.

3. Có thể kết nối nhiều máy tính trong cùng cửa hàng để dùng chung một cơ sở dữ liệu không?

Hoàn toàn được. Bạn chỉ cần cấu hình địa chỉ IP máy chủ (Server IP) tại tham số URL trong lớp KetNoi.java (ví dụ: jdbc:mysql://192.168.1.100:3306/ql_sach) và cấp quyền truy cập từ xa (GRANT ALL PRIVILEGES) trong MySQL cho các máy trạm trong cùng mạng cục bộ (LAN).

4. Dữ liệu mật khẩu nhân viên và bảo mật hệ thống được xử lý ra sao?

Hiện tại hệ thống lưu trữ thông tin nhân viên trong bảng NhanVien với cơ chế xác thực tài khoản và mật khẩu trực tiếp qua câu lệnh PreparedStatement để chống tấn công SQL Injection. Trong các phiên bản kế tiếp, mật khẩu sẽ được mã hóa chuẩn băm một chiều (SHA-256 kèm Salt) trước khi lưu vào CSDL.

5. Chi phí triển khai và bảo trì phần mềm được tính toán như thế nào?

Dự án được xây dựng hoàn toàn từ các công nghệ mã nguồn mở miễn phí (Java SE, NetBeans, MySQL Server Community), do đó chi phí bản quyền là 0 VNĐ. Chi phí duy nhất là hạ tầng máy tính có sẵn của nhà sách, giúp doanh nghiệp đạt tỷ suất sinh lời ROI vượt trội ngay trong quý đầu tiên vận hành.


Kết luận

Đề tài "Xây dựng chương trình quản lý sách tại nhà sách FAHASA" đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn đề ra. Dự án không chỉ chứng minh tính hiệu quả của ngôn ngữ lập trình Java và hệ quản trị MySQL trong việc giải quyết bài toán tự động hóa quản lý bán lẻ, mà còn mang lại một công cụ phần mềm ổn định, có khả năng giảm thiểu 85% thời gian quản lý thủ công và triệt tiêu sai sót dữ liệu kho vận.

Đây là nền tảng vững chắc để tiếp tục mở rộng phát triển thành hệ thống quản lý đa kênh toàn diện trong tương lai. Bạn đọc và các nhà phát triển quan tâm có thể khai thác mô hình thiết kế và mã nguồn này làm tài liệu tham khảo giá trị cho các dự án phần mềm doanh nghiệp trên nền tảng Java.