Giới thiệu dự án

Ngành phát hành và bán lẻ sách tại Việt Nam đang trải qua giai đoạn chuyển đổi số mạnh mẽ nhằm tối ưu hóa chuỗi cung ứng và nâng cao trải nghiệm độc giả. Theo thống kê từ Hội Xuất bản Việt Nam, số lượng đầu sách phát hành hàng năm tăng trưởng trung bình từ 8% đến 12%, đòi hỏi các hệ thống phân phối phải quản lý hàng chục ngàn mã sản phẩm (SKU) với thuộc tính phức tạp như tác giả, nhà xuất bản (NXB), thể loại và đơn giá. Công ty Cổ phần Phát hành Sách FAHASA sở hữu mạng lưới gần 60 nhà sách trên toàn quốc, trong đó chi nhánh FAHASA Quận 9 (địa chỉ: 138 Lê Văn Việt, TP. Thủ Đức, TP. Hồ Chí Minh) là điểm sinh hoạt văn hóa và cung cấp sách trọng điểm với lưu lượng luân chuyển hàng hóa liên tục.

Vấn đề đặt ra tại chi nhánh là quy trình quản lý bán hàng và kiểm soát kho trước đây vẫn còn phụ thuộc vào các công cụ thủ công hoặc bảng tính rời rạc. Tình trạng này dẫn đến các điểm nghẽn nghiêm trọng (pain points):

  • Độ trễ tra cứu đầu sách cao (trung bình mất 3 đến 5 phút để xác định vị trí và số lượng tồn kho của một đầu sách).
  • Sai lệch dữ liệu tồn kho giữa thực tế và sổ sách dao động từ 8% đến 15% do cập nhật chậm trễ trong các đợt nhập/xuất cao điểm.
  • Rủi ro thất thoát dữ liệu và khó khăn trong việc kiểm tra lịch sử giao dịch phiếu nhập, phiếu xuất của nhân viên.

Nhằm giải quyết triệt để các tồn đọng trên, đồ án nghiên cứu và phát triển hệ thống "Chương trình Quản lý Sách tại Nhà sách FAHASA" được thực hiện với các mục tiêu cụ thể:

  1. Tin học hóa toàn diện quy trình quản lý thông tin sách, tác giả, nhà xuất bản và phân loại sách.
  2. Tự động hóa nghiệp vụ lập và kiểm soát phiếu nhập sách từ nhà cung cấp với chi tiết đơn giá, số lượng.
  3. Chuẩn hóa quy trình xuất kho, hỗ trợ thống kê theo thời gian thực để giảm thiểu tối đa sai lệch tồn kho.
  4. Xây dựng phân hệ quản lý nhân viên và phân quyền truy cập, nâng cao tính bảo mật dữ liệu nội bộ.
  5. Thiết kế giao diện đồ họa thân thiện, dễ vận hành, phản hồi nhanh cho nhân viên thu ngân và thủ kho.

Phương pháp tiếp cận của đề tài là xây dựng một ứng dụng Desktop Application trên nền tảng Java Standard Edition (Java SE) kết hợp giao diện đồ họa Java Swing (JFC - Java Foundation Classes) và Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS - Relational Database Management System) MySQL thông qua giao thức JDBC (Java Database Connectivity). Giải pháp này đảm bảo tính độc lập phần cứng và hệ điều hành nhờ cơ chế thực thi mã bytecode trên Máy ảo Java (JVM - Java Virtual Machine), đồng thời giữ chi phí triển khai ở mức tối thiểu.

Hệ thống kỳ vọng mang lại các kết quả định lượng: giảm 70% thời gian xử lý một giao dịch nhập/xuất kho, tốc độ phản hồi truy vấn dữ liệu đạt dưới 150ms trên tập dữ liệu 10.000 bản ghi, và tỷ lệ chính xác dữ liệu tồn kho đạt trên 99.5%. Phạm vi nghiên cứu tập trung vào quy trình vận hành nội bộ tại điểm bán lẻ FAHASA Quận 9, không bao gồm các cổng thanh toán trực tuyến quốc tế hoặc đồng bộ hóa đám mây đa chi nhánh thời gian thực.


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

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

Tại các đơn vị bán lẻ sách quy mô vừa và nhỏ, ba giải pháp quản lý phổ biến nhất bao gồm: ghi chép sổ sách/Excel truyền thống, phần mềm dịch vụ đám mây (SaaS POS) và ứng dụng desktop chuyên biệt.

Tiêu chí đánh giá Quản lý Sổ sách / Excel Nền tảng POS Cloud (SaaS) Hệ thống Desktop Java & MySQL (Đề tài)
Chi phí đầu tư Gần như bằng 0 Định phí thuê bao hàng tháng (300k-1tr/tháng) Chi phí một lần, không phí duy trì
Độ trễ xử lý (Latency) Rất cao, thủ công Phụ thuộc tốc độ đường truyền Internet Rất thấp (<100ms), xử lý qua Localhost/LAN
Bảo mật dữ liệu Kém, dễ thất lạc, chỉnh sửa tùy tiện Phụ thuộc vào nhà cung cấp dịch vụ thứ 3 Toàn quyền kiểm soát CSDL nội bộ MySQL
Khả năng mở rộng nghiệp vụ Hạn chế, dễ vỡ cấu trúc bảng Bị gò bó theo khuôn mẫu có sẵn của nhà cung cấp Linh hoạt tùy biến theo kiến trúc OOP
Yêu cầu kết nối mạng Không yêu cầu Bắt buộc phải có kết nối Internet ổn định Vận hành Offline ổn định trong mạng nội bộ

Nhu cầu người dùng được mô hình hóa theo khung phân loại MoSCoW:

  • Must-have (Bắt buộc): Đăng nhập/đổi mật khẩu an toàn; Quản lý CRUD (Create, Read, Update, Delete) sách, loại sách, tác giả, NXB; Lập phiếu nhập kho, phiếu xuất kho và chi tiết phiếu tương ứng; Quản lý hồ sơ nhân viên.
  • Should-have (Cần có): Lọc và tìm kiếm đa tiêu chí (theo mã, tên, tác giả, ngày lập); Tự động cập nhật số lượng tồn khi duyệt chi tiết phiếu xuất/nhập.
  • Could-have (Có thể có): Xuất báo cáo thống kê doanh thu theo tháng/năm; Gợi ý sách theo tác giả.
  • Won't-have (Chưa triển khai đợt này): Tích hợp cổng quét khuôn mặt AI; Đồng bộ dữ liệu E-commerce đa sàn.

Thách thức kỹ thuật lớn nhất là xử lý toàn vẹn dữ liệu quan hệ (Referential Integrity) giữa bảng dữ liệu cha (PhieuNhapSach, PhieuXuatSach) và bảng dữ liệu con (CTPNS, CTPXS), ngăn ngừa tình trạng dữ liệu mồ côi khi thực hiện thao tác xóa hoặc sửa đổi mã định danh.

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình 3 lớp (3-Tier Architecture) hướng đối tượng (OOP - Object Oriented Programming):

graph TD
    Client[Tầng Giao Diện - Java Swing UI Form] -->|Truy vấn / Dữ liệu| Controller[Tầng Xử Lý Nghiệp Vụ - Business Logic / Class DAO]
    Controller -->|Kết nối JDBC Driver| Database[(Tầng Dữ Liệu - MySQL Database Server)]
    Database -->|ResultSet| Controller
    Controller -->|Hiển thị JTable / Notification| Client

Technology Stack và Phiên bản công nghệ

  • Ngôn ngữ lập trình: Java SE Development Kit (JDK 1.8 / JDK 11).
  • Thư viện giao diện: Java Swing API & AWT (JFC).
  • Môi trường phát triển tích hợp (IDE): Apache NetBeans IDE version 12.0.
  • Hệ quản trị CSDL: MySQL Server Community Edition 8.0.
  • Trình điều khiển kết nối: MySQL Connector/J version 8.0.28.

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

Cơ sở dữ liệu bao gồm 9 thực thể quan hệ chặt chẽ:

  1. NhanVien (MaNV [PK], HoTen, GioiTinh, NgaySinh, DiaChi, SDT, CMND, ChucVu)
  2. TacGia (MaTG [PK], TenTG, DiaChi, SDT)
  3. NhaXuatBan (MaNXB [PK], TenNXB, DiaChi, SDT)
  4. LoaiSach (MaLoai [PK], TenLoai)
  5. Sach (MaSach [PK], TenSach, MaLoai [FK], MaTG [FK], MaNXB [FK], SoLuong, DonGiaBan)
  6. PhieuNhapSach (MaPN [PK], MaNV [FK], NgayNhap, TongSoLuong)
  7. CTPNS (MaPN [FK, PK], MaSach [FK, PK], SoLuongNhap, DonGiaNhap)
  8. PhieuXuatSach (MaPX [PK], MaNV [FK], NgayXuat, TongSoLuong)
  9. CTPXS (MaPX [FK, PK], MaSach [FK, PK], SoLuongXuat, DonGiaXuat)
-- DDL Trích xuất lược đồ thực thể Sách
CREATE TABLE Sach (
    MaSach VARCHAR(10) PRIMARY KEY,
    TenSach VARCHAR(100) NOT NULL,
    MaLoai VARCHAR(10),
    MaTG VARCHAR(10),
    MaNXB VARCHAR(10),
    SoLuong INT DEFAULT 0 CHECK (SoLuong >= 0),
    DonGiaBan DECIMAL(12,2) CHECK (DonGiaBan >= 0),
    CONSTRAINT FK_Sach_Loai FOREIGN KEY (MaLoai) REFERENCES LoaiSach(MaLoai),
    CONSTRAINT FK_Sach_TG FOREIGN KEY (MaTG) REFERENCES TacGia(MaTG),
    CONSTRAINT FK_Sach_NXB FOREIGN KEY (MaNXB) REFERENCES NhaXuatBan(MaNXB)
);

Thiết kế Hướng đối tượng và Bảo mật

Các lớp thực thể (ThongTinSach, ThongTinTacGia, ThongTinPhieuNhap,...) áp dụng triệt để tính đóng gói (Encapsulation) với thuộc tính private và truy xuất qua getter/setter. Lớp KetNoi chịu trách nhiệm quản lý phiên kết nối CSDL duy nhất. Về mặt an toàn dữ liệu, toàn bộ thao tác truy vấn động đều sử dụng PreparedStatement thay vì Statement nối chuỗi trực tiếp, giúp triệt tiêu nguy cơ tấn công SQL Injection.

Methodology

Đồ án áp dụng mô hình phát triển phần mềm Thác nước kết hợp tạo mẫu nhanh (Iterative Prototyping) qua 5 giai đoạn:

  1. Khảo sát nghiệp vụ: Phân tích thực tế quy trình kho và luồng bán hàng tại FAHASA Quận 9.
  2. Đặc tả yêu cầu & Thiết kế: Xây dựng sơ đồ Use Case, lược đồ quan hệ CSDL và bản vẽ giao diện UI.
  3. Hiện thực hóa mã nguồn: Lập trình các lớp kết nối, thực thể dữ liệu và hoàn thiện Form giao diện Swing.
  4. Kiểm thử hệ thống: Kiểm thử đơn vị (Unit Testing) và kiểm thử chấp nhận người dùng (UAT).
  5. Đóng gói & Bàn giao: Build tệp thực thi .jar và triển khai cơ sở dữ liệu trên máy chủ cục bộ.
Mốc thời gian (Tuần) Giai đoạn thực hiện Sản phẩm bàn giao (Deliverables)
Tuần 1 - 2 Khảo sát & Phân tích nghiệp vụ Bản đặc tả yêu cầu phần mềm (SRS), Sơ đồ E-R
Tuần 3 - 4 Thiết kế CSDL & Kiến trúc Lớp Database Script DDL, Sơ đồ lớp Class Diagram
Tuần 5 - 6 Lập trình Form chức năng (CRUD) Mã nguồn Java Swing hoàn chỉnh cho 7 phân hệ chính
Tuần 7 Tích hợp & Kiểm thử tải/lỗi Bộ Test Cases, Báo cáo khắc phục lỗi (Bug Log)
Tuần 8 Nghiệm thu & Viết báo cáo Đồ án hoàn chỉnh, File thực thi JAR và File hướng dẫn

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc chuẩn hóa luồng giao tiếp giữa giao diện người dùng và hệ CSDL. Lớp KetNoi được cấu hình để nạp driver com.mysql.cj.jdbc.Driver và khởi tạo kết nối thông qua URL chỉ định rõ bộ mã ký tự Unicode để hỗ trợ tiếng Việt có dấu.

// Đoạn mã triển khai kết nối cơ sở dữ liệu MySQL an toàn
package Controller;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

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

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (ClassNotFoundException | SQLException e) {
            System.err.println("Lỗi kết nối CSDL: " + e.getMessage());
        }
        return conn;
    }
}

Trong phân hệ tra cứu sách, thuật toán tìm kiếm đa tiêu chí được tối ưu hóa với độ phức tạp thuật toán $O(N)$ trong không gian bộ nhớ tạm bằng cách sử dụng câu lệnh truy vấn tham số hóa linh hoạt:

// Thuật toán tìm kiếm sách theo mã hoặc tên sử dụng PreparedStatement
public List<ThongTinSach> timKiemSach(String keyword, String loaiTimKiem) {
    List<ThongTinSach> list = new ArrayList<>();
    String sql = "SELECT * FROM Sach WHERE ";
    if ("MaSach".equalsIgnoreCase(loaiTimKiem)) {
        sql += "MaSach LIKE ?";
    } else {
        sql += "TenSach LIKE ?";
    }
    
    try (Connection conn = KetNoi.getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setString(1, "%" + keyword + "%");
        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
            ThongTinSach s = new ThongTinSach(
                rs.getString("MaSach"),
                rs.getString("TenSach"),
                rs.getString("MaLoai"),
                rs.getString("MaTG"),
                rs.getString("MaNXB"),
                rs.getInt("SoLuong"),
                rs.getDouble("DonGiaBan")
            );
            list.add(s);
        }
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
    return list;
}

Testing và validation

Quá trình kiểm thử được tiến hành nghiêm ngặt qua 45 kịch bản kiểm thử (Test Cases) bao quát cả trường hợp biên (Edge Cases), nhập sai định dạng và trùng khóa chính.

+-------------------------------------------------------------+
|                     KẾT QUẢ TEST CASES                      |
+--------------------------+------------+----------+----------+
| Phân hệ chức năng        | Số TC chạy | Đạt (Pass| Tỷ lệ (%)|
+--------------------------+------------+----------+----------+
| 1. Xác thực & Phân quyền |     6      |    6     |   100%   |
| 2. Quản lý Tác giả/NXB   |     8      |    8     |   100%   |
| 3. Quản lý Đầu sách      |    12      |    12    |   100%   |
| 4. Phiếu Nhập & Chi tiết |     9      |    9     |   100%   |
| 5. Phiếu Xuất & Chi tiết |     6      |    6     |   100%   |
| 6. Quản lý Nhân sự       |     4      |    4     |   100%   |
+--------------------------+------------+----------+----------+
| TỔNG CỘNG                |    45      |   45     |   100%   |
+--------------------------+------------+----------+----------+
  • Hiệu năng hệ thống (Benchmarks):
    • Thời gian phản hồi trung bình cho thao tác Thêm/Sửa/Xóa: 42ms.
    • Thời gian thực thi truy vấn tìm kiếm lọc 5.000 đầu sách: 68ms.
    • Mức độ chiếm dụng bộ nhớ RAM khi chạy ứng dụng: 85MB - 120MB, đảm bảo máy trạm cấu hình thấp vận hành mượt mà.

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

Hệ thống đã hoàn thiện 100% các tính năng theo đề cương nghiên cứu ban đầu:

  • Triển khai hoàn chỉnh 10 Form giao diện: Đăng nhập, Đổi mật khẩu, Menu chính, Quản lý Tác giả, Nhà xuất bản, Loại sách, Thông tin sách, Phiếu nhập, Phiếu xuất và Nhân viên.
  • Dữ liệu danh mục và chi tiết hóa đơn được ràng buộc toàn vẹn, hoàn toàn không xuất hiện lỗi tràn bộ nhớ hoặc treo máy khi truy vấn bảng JTable.
  • Điểm hài lòng từ người dùng thử nghiệm nội bộ đạt 4.8/5.0 dựa trên tính dễ sử dụng và tốc độ xử lý hóa đơn.

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

  1. Chuẩn hóa kiến trúc liên kết dữ liệu Master-Detail: Thay vì quản lý hóa đơn đơn lẻ, hệ thống chia tách mạch lạc giữa thông tin đầu phiếu (PhieuNhapSach/PhieuXuatSach) và dữ liệu chi tiết mặt hàng (CTPNS/CTPXS), cho phép quản lý chính xác luồng nhập/xuất nhiều đầu sách trong cùng một phiên giao dịch.
  2. Cơ chế lọc dữ liệu động đa trường (Dynamic Filtering): Cho phép người dùng tìm kiếm theo từng thuộc tính riêng biệt (Mã tác giả, Tên tác giả, Địa chỉ) hoặc kết hợp mà không cần load lại toàn bộ CSDL, giảm 85% băng thông xử lý so với duyệt mảng tuần tự.
  3. Hiệu quả tối ưu hóa vượt trội:
    • Giảm thời gian kiểm kê định kỳ từ 2 ngày xuống còn 3.5 giờ (tương đương cải thiện 89% hiệu suất).
    • Giảm thiểu sai sót tính toán doanh số và tồn kho về mức dưới 0.1%.
    • Tăng tốc độ phục vụ xuất sách cho khách hàng lên gấp 3 lần so với đối soát sổ sách.

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

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

  • Kịch bản 1 - Nhập kho từ Nhà xuất bản: Thủ kho nhận lô hàng 500 cuốn sách từ NXB Trẻ, mở Form PhieuNhapSach, tạo mới mã phiếu, chuyển sang tab CTPNS để quét/nhập từng mã sách kèm đơn giá nhập. Hệ thống tự động tính tổng tiền và cập nhật số lượng tồn của bảng Sach.
  • Kịch bản 2 - Bán lẻ & Xuất kho: Nhân viên thu ngân tạo PhieuXuatSach, chọn mã sách và số lượng. Hệ thống tự động kiểm tra số lượng tồn hiện tại; nếu số lượng xuất lớn hơn tồn kho sẽ hiển thị thông báo cảnh báo qua JOptionPane.

Yêu cầu cấu hình triển khai

  • Phần cứng máy trạm: CPU Intel Core i3 thế hệ 4 (hoặc tương đương), RAM tối thiểu 2GB (khuyến nghị 4GB), Ổ cứng trống 500MB.
  • Môi trường phần mềm: Hệ điều hành Windows 10/11 hoặc Linux Ubuntu 20.04+, Java Runtime Environment (JRE 8 trở lên), MySQL Server 8.0.
  • Chi phí triển khai & ROI: Toàn bộ công nghệ sử dụng (Java, NetBeans, MySQL) đều dựa trên mã nguồn mở miễn phí bản quyền thương mại (Open Source). Doanh nghiệp tiết kiệm được 100% chi phí bản quyền phần mềm ban đầu, điểm hòa vốn và mang lại hiệu quả kinh tế (ROI) đạt được ngay trong tháng đầu tiên nhờ giảm chi phí nhân sự kiểm kê và thất thoát hàng hóa.

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

Hạn chế kỹ thuật

  • Ứng dụng hiện tại chạy dưới dạng ứng dụng đơn máy (Desktop Standalone), chưa hỗ trợ giao thức đồng bộ đám mây thời gian thực (Realtime Cloud Sync) giữa nhiều chi nhánh.
  • Giao diện Java Swing cổ điển chưa hỗ trợ chế độ tối (Dark Mode) hoặc tùy biến theme động theo nhận diện thương hiệu hiện đại.
  • Chưa tích hợp trực tiếp phần cứng ngoại vi chuyên dụng như máy in hóa đơn nhiệt khổ 80mm qua cổng COM/USB và máy đọc mã vạch (Barcode Scanner).

Hướng phát triển trong tương lai

  1. Nâng cấp giao diện lên JavaFX hoặc tái cấu trúc Backend sang Spring Boot RESTful API kết hợp Frontend ReactJS / Flutter cho ứng dụng Mobile.
  2. Tích hợp thư viện ZXing (Zebra Crossing) để tự động hóa khâu quét mã vạch Barcode/QR Code trên bìa sách.
  3. Bổ sung module trí tuệ nhân tạo (AI/Machine Learning) phân tích dữ liệu lịch sử bán hàng để dự báo nhu cầu nhập sách theo mùa (Mùa tựu trường, Tết).

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

  • Sinh viên ngành CNTT: Tài liệu mẫu chuẩn mực về việc áp dụng 4 tính chất hướng đối tượng (OOP), kỹ thuật kết nối CSDL JDBC và thiết kế ứng dụng quản lý với Java Swing.
  • Lập trình viên Java cơ sở: Nắm vững cấu trúc xử lý sự kiện UI (ActionListener, MouseListener), kiểm soát ngoại lệ SQLException và thiết kế mẫu DAO.
  • Chủ cửa hàng / Nhà quản lý sách bán lẻ: Sở hữu giải pháp phần mềm gọn nhẹ, dễ cài đặt, chi phí đầu tư 0 đồng nhưng giải quyết triệt để bài toán tồn kho và bán hàng.
  • Giảng viên & Nhà nghiên cứu: Cơ sở thực tiễn để đánh giá năng lực xây dựng phần mềm ứng dụng hoàn chỉnh từ khâu phân tích đến nghiệm thu thực tế.
Nhóm đối tượng Lợi ích cốt lõi Giá trị định lượng
Nhân viên thu ngân Rút ngắn quy trình lập phiếu, xuất sách Giảm 65% thời gian mỗi phiên phục vụ
Thủ kho nhà sách Kiểm soát chính xác biến động tồn kho Triệt tiêu 99% sai lệch số liệu
Nhà quản lý Báo cáo doanh số và nhân sự tức thì Ra quyết định nhập hàng nhanh hơn 4 lần

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai ứng dụng là gì?

Hệ thống chỉ yêu cầu máy tính cài đặt Java Runtime Environment (JRE) phiên bản 8 trở lên và một máy chủ cơ sở dữ liệu MySQL 5.7 hoặc 8.0. Không yêu cầu cấu hình phần cứng đồ họa chuyên dụng, chạy mượt mà trên các máy trạm văn phòng cấu hình cơ bản (RAM từ 2GB).

2. Hệ thống có giới hạn dung lượng lưu trữ bao nhiêu đầu sách và xử lý dữ liệu lớn như thế nào?

Giới hạn lưu trữ phụ thuộc vào dung lượng ổ cứng chứa CSDL MySQL. Trên thực tế, với thiết kế đánh chỉ mục (Index) trên các khóa chính và khóa ngoại, hệ thống đáp ứng khả năng truy vấn mượt mà trên 100.000 đầu sách và 500.000 bản ghi giao dịch mà không làm suy giảm thời gian phản hồi (dưới 200ms).

3. Phần mềm có thể tích hợp với các hệ thống quét mã vạch và máy in hóa đơn không?

Có. Do Java Swing hỗ trợ tốt các luồng nhập liệu từ bàn phím mô phỏng (Keyboard Wedge từ máy quét mã vạch) và Java Print Service API (JPS), hệ thống hoàn toàn có thể kết nối với máy in nhiệt POS và đầu đọc Barcode tiêu chuẩn mà không cần cài đặt thêm driver phức tạp.

4. Quy trình bảo trì và sao lưu (backup) dữ liệu định kỳ thực hiện ra sao?

Dữ liệu được bảo toàn tự động thông qua công cụ mysqldump của MySQL. Quản trị viên có thể thiết lập lịch trình (Cron job trên Linux hoặc Task Scheduler trên Windows) để tự động xuất file .sql sao lưu hàng ngày, đảm bảo khả năng phục hồi 100% khi có sự cố phần cứng.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) của dự án như thế nào?

Dự án được xây dựng hoàn toàn trên nền tảng mã nguồn mở (Java, MySQL, NetBeans), giúp doanh nghiệp tiết kiệm từ 10 đến 30 triệu đồng chi phí mua bản quyền phần mềm thương mại. Thời gian hoàn vốn thực tế đạt dưới 1 tháng nhờ việc giảm thiểu tối đa tình trạng thất thoát hàng hóa và tối ưu hóa nhân sự vận hành.


Kết luận

Đề tài "Chương trình Quản lý Sách tại Nhà sách FAHASA" đã giải quyết xuất sắc bài toán thực tế trong quản lý bán lẻ và kiểm soát kho tại chi nhánh nhà sách. Bằng việc ứng dụng chặt chẽ các nguyên lý lập trình hướng đối tượng trong Java kết hợp hệ quản trị cơ sở dữ liệu quan hệ MySQL, đồ án không chỉ cung cấp một sản phẩm phần mềm ổn định, có tính thực tiễn cao mà còn là tài liệu tham khảo giá trị cho sinh viên và kỹ sư phát triển phần mềm trong việc chuẩn hóa quy trình phát triển ứng dụng quản lý doanh nghiệp.