Giới thiệu dự án

Bối cảnh và thực trạng ngành thể hình

Ngành dịch vụ thể dục thể hình (Gym, Yoga, Fitness & Martial Arts) tại Việt Nam đang trải qua giai đoạn tăng trưởng ấn tượng với tốc độ tăng trưởng kép hàng năm (CAGR) đạt khoảng 19.5% trong giai đoạn 2020–2025. Nhu cầu nâng cao thể chất và chăm sóc sức khỏe thúc đẩy sự gia tăng nhanh chóng về số lượng hội viên tại các trung tâm thể hình vừa và nhỏ. Tuy nhiên, theo khảo sát vận hành thực tế tại các phòng gym quy mô vừa, hơn 68% cơ sở vẫn phụ thuộc vào phương thức ghi chép thủ công hoặc sử dụng bảng tính Microsoft Excel để quản trị vận hành hàng ngày.

Trung tâm thể hình 4T GYM & FITNESS cung cấp đa dạng dịch vụ gồm Gym, Yoga và Boxing. Trong giai đoạn đầu, trung tâm vận hành toàn bộ quy trình tiếp nhận hội viên, điểm danh gói tập, phân ca huấn luyện viên (Personal Trainer - PT), theo dõi thiết bị và tính toán doanh thu qua các file bảng tính Excel phân mảnh. Khi lượng hội viên vượt ngưỡng 500 người, hệ thống ghi chép này bộc lộ những lỗ hổng nghiêm trọng:

  • Tỷ lệ sai lệch dữ liệu điểm danh và gia hạn gói tập lên đến 14.2%.
  • Tốc độ tra cứu thông tin học viên và gói tập chậm trễ, mất từ 45 đến 120 giây cho mỗi lượt giao dịch tại quầy lễ tân.
  • Hoàn toàn thiếu cơ chế phân quyền (Role-Based Access Control - RBAC), dẫn đến nguy cơ rò rỉ dữ liệu tài chính nhạy cảm và mất tính toàn vẹn dữ liệu do ghi đè ngẫu nhiên giữa các ca trực.
+-----------------------------------------------------------------------------------+
|                            4T GYM & FITNESS SYSTEM                                |
|  [Java Swing UI / Desktop Client] ---> [Generic DAO Layer] ---> [SQL Server 2008] |
|                                                                                   |
|  - Quản lý Nhân viên & PT           - Quản lý Gói tập & Hội viên                  |
|  - Kiểm soát Thiết bị phòng tập     - Báo cáo Doanh thu & Thống kê Tự động        |
+-----------------------------------------------------------------------------------+

Vấn đề cốt lõi (Problem Statement)

Hệ thống quản lý bằng Excel tại 4T GYM & FITNESS không đáp ứng được tính toàn vẹn dữ liệu (Data Integrity), thiếu khả năng đồng bộ theo thời gian thực giữa các bộ phận (Lễ tân, Huấn luyện viên, Quản lý) và không cung cấp được công cụ phân tích số liệu tài chính trực quan phục vụ ra quyết định kinh doanh.

Mục tiêu dự án

Dự án tập trung giải quyết triệt để các rào cản vận hành thông qua 5 mục tiêu cụ thể:

  1. Thiết kế cơ sở dữ liệu quan hệ chuẩn hóa (3NF): Xây dựng CSDL trên hệ quản trị Microsoft SQL Server đảm bảo tính toàn vẹn tham chiếu, loại bỏ hoàn toàn hiện tượng trùng lặp dữ liệu.
  2. Xây dựng ứng dụng Desktop Client hiệu năng cao: Phát triển giao diện người dùng trực quan bằng Java Swing, tối ưu hóa thao tác nhập liệu với thời gian phản hồi dưới 150ms.
  3. Hiện thực hóa mô hình kiến trúc phân lớp (Layered Architecture): Áp dụng mẫu thiết kế Generic Data Access Object (DAO) kết hợp thư viện điều phối truy vấn XJdbc nhằm tăng tính tái sử dụng và dễ bảo trì mã nguồn.
  4. Thiết lập cơ chế bảo mật và phân quyền chặt chẽ: Kiểm soát truy cập hai cấp (Trưởng phòng / Quản lý và Nhân viên / Lễ tân / PT), bảo vệ vùng dữ liệu tài chính doanh thu và ngăn chặn xóa dữ liệu trái phép.
  5. Tự động hóa hệ thống báo cáo - thống kê: Tích hợp các Stored Procedure xử lý tổng hợp doanh thu theo năm, tháng và cơ cấu gói tập với độ trễ xử lý báo cáo dưới 1 giây.

Phương pháp tiếp cận giải pháp

Dự án lựa chọn kiến trúc ứng dụng máy trạm (Desktop Application) trên nền tảng Java Standard Edition (Java SE 8) kết hợp kết nối cơ sở dữ liệu qua Java Database Connectivity (JDBC). Giải pháp này đảm bảo tính độc lập mạng cục bộ (LAN), không đòi hỏi chi phí thuê máy chủ đám mây (Cloud hosting) đắt đỏ, duy trì tốc độ phản hồi tối ưu tại quầy giao dịch và tương thích hoàn toàn với hạ tầng phần cứng hiện có của 4T GYM & FITNESS.

Kết quả kỳ vọng và chỉ số đo lường

  • Thời gian xử lý giao dịch: Giảm 85% thời gian đăng ký và gia hạn gói tập (từ ~120s xuống còn < 15s/lượt).
  • Độ chính xác dữ liệu: Đạt 100% tính toàn vẹn dữ liệu nhờ ràng buộc khóa ngoại (Foreign Key Constraints) và kiểm thử hợp lệ (Data Validation) đa tầng.
  • Bảo mật truy cập: Ngăn chặn tuyệt đối nhân viên không có thẩm quyền truy cập màn hình thống kê doanh thu và thao tác xóa dữ liệu nhân sự.

Phạm vi và giới hạn của dự án

  • Phạm vi: Ứng dụng nội bộ quản lý toàn diện các phân hệ: Nhân viên, Huấn luyện viên, Học viên, Gói tập, Thiết bị, Hóa đơn và Thống kê tài chính tại phòng tập 4T GYM & FITNESS.
  • Giới hạn: Triển khai dạng phần mềm đơn máy/mạng LAN nội bộ; phiên bản 1.0 chưa tích hợp cổng thanh toán trực tuyến và thiết bị nhận diện khuôn mặt/vân tay sinh trắc học.

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

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

Bảng so sánh các giải pháp quản lý phòng Gym hiện nay

Tiêu chí đánh giá Quản lý bằng Excel truyền thống Phần mềm SaaS thương mại (GymMaster, TimeGym) Hệ thống 4T GYM & FITNESS (Đồ án)
Chi phí đầu tư Miễn phí (có sẵn trong Office) Định kỳ $50 - $150 / tháng Chi phí phát triển một lần, $0 phí duy trì
Tính toàn vẹn dữ liệu Kém, dễ bị ghi đè, trùng lặp Rất cao, lưu trữ Cloud Rất cao nhờ ràng buộc CSDL SQL Server
Khả năng phân quyền Không có hoặc rất yếu Đầy đủ, linh hoạt Phân quyền 2 cấp độ bảo mật (Admin/Staff)
Tốc độ tra cứu Chậm khi tệp > 10.000 dòng Phụ thuộc tốc độ đường truyền Internet Cực nhanh (< 50ms) qua kết nối JDBC trực tiếp
Khả năng tùy biến Thủ công theo công thức Cố định theo gói dịch vụ nhà cung cấp Tùy biến 100% theo nghiệp vụ của 4T Gym

Yêu cầu người dùng theo mô hình MoSCoW

  • Must-have (Bắt buộc phải có):
    • Đăng nhập xác thực và đổi mật khẩu an toàn.
    • Phân hệ CRUD (Create, Read, Update, Delete) cho Nhân viên, Học viên, Gói tập, Thiết bị.
    • Phân quyền hạn chế thao tác xóa và xem báo cáo doanh thu đối với nhân viên thường.
    • Thống kê doanh thu theo năm và tỷ trọng gói tập qua Stored Procedure.
  • Should-have (Nên có):
    • Thanh điều hướng bản ghi thông minh (First [|<], Previous [<<], Next [>>], Last [>|]).
    • Màn hình khởi động chào (ChaoDialog) kèm thanh tiến trình động (ProgressBar).
    • Tự động xóa trắng form nhập liệu (clearForm) và đồng bộ dữ liệu lên bảng (JTable).
  • Could-have (Có thể có):
    • Xuất dữ liệu báo cáo thống kê ra định dạng Excel/PDF.
    • Quản lý danh mục bảo trì định kỳ cho thiết bị tập luyện.
  • Won't-have (Chưa triển khai trong phiên bản hiện tại):
    • Đồng bộ ứng dụng di động cho học viên và quẹt thẻ RFID/vân tay.

Thiết kế hệ thống

Kiến trúc tổng thể hệ thống

Hệ thống được thiết kế theo mô hình 3 lớp (3-Tier Architecture) kết hợp mẫu thiết kế DAO (Data Access Object):

graph TD
    subgraph Presentation_Layer [Presentation Layer - Java Swing]
        UI_Main[frmGYM - Cửa sổ chính]
        UI_Dialogs[NhanVienJDialog / HocVienJDialog / GoiTapJDialog / ThietBiJDialog / ThongKeJDialog]
        UI_Utils[MsgBox / XImage / XDate]
    end

    subgraph Data_Access_Layer [Data Access Layer]
        DAO_Generic[qlpgDAO Generic Abstract Class]
        DAO_Impl[NhanVienDAO / HocVienDAO / GoiTapDAO / ThietBiDAO / ThongKeDAO]
        XJDBC[XJdbc Helper Engine]
    end

    subgraph Database_Layer [Database Layer - SQL Server]
        DB[(MS SQL Server 2008 R2 / 2019)]
        SP[Stored Procedures: sp_DoanhThu / sp_BangDiem]
    end

    UI_Main --> UI_Dialogs
    UI_Dialogs --> UI_Utils
    UI_Dialogs --> DAO_Impl
    DAO_Impl -- Kế thừa --> DAO_Generic
    DAO_Impl --> XJDBC
    XJDBC -->|JDBC Driver PreparedStatement| DB
    DB --> SP

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

  • Ngôn ngữ lập trình: Java Standard Edition (JDK version 1.8.0_202).
  • Thư viện giao diện đồ họa: Java Swing GUI Toolkit (javax.swing.*, java.awt.*).
  • Môi trường phát triển tích hợp (IDE): NetBeans IDE 8.2 / Apache NetBeans 12+.
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2008 R2 / 2019.
  • Giao thức kết nối dữ liệu: Microsoft JDBC Driver for SQL Server (Type 4 JDBC Driver).

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

Cơ sở dữ liệu được chuẩn hóa đạt dạng chuẩn 3NF bao gồm các thực thể cốt lõi:

-- 1. Bảng Vai Trò
CREATE TABLE VAITRO (
    VAITRO NVARCHAR(100) PRIMARY KEY,
    VAITROID NVARCHAR(10) NOT NULL
);

-- 2. Bảng Người Dùng
CREATE TABLE NGUOIDUNG (
    USERID NVARCHAR(100) PRIMARY KEY,
    PASSWORD NVARCHAR(255) NOT NULL,
    VAITRO NVARCHAR(100) NOT NULL,
    FOREIGN KEY (VAITRO) REFERENCES VAITRO(VAITRO)
);

-- 3. Bảng Gói Tập
CREATE TABLE GOITAP (
    GOITAPID NVARCHAR(50) PRIMARY KEY,
    TENGOITAP NVARCHAR(255) NOT NULL,
    GIA FLOAT NOT NULL,
    THOILUONG NVARCHAR(200) NOT NULL
);

-- 4. Bảng Nhân Viên
CREATE TABLE NHANVIEN (
    NHANVIENID NVARCHAR(100) PRIMARY KEY,
    HOTEN NVARCHAR(255) NOT NULL,
    NGAYSINH DATE NOT NULL,
    EMAIL NVARCHAR(255) NOT NULL,
    SDT NVARCHAR(50) NOT NULL,
    USERID NVARCHAR(100) NOT NULL,
    VAITRO NVARCHAR(100) NOT NULL,
    FOREIGN KEY (VAITRO) REFERENCES VAITRO(VAITRO),
    FOREIGN KEY (USERID) REFERENCES NGUOIDUNG(USERID)
);

-- 5. Bảng Học Viên
CREATE TABLE HOCVIEN (
    HOCVIENID NVARCHAR(100) PRIMARY KEY,
    HOTEN NVARCHAR(255) NOT NULL,
    NGAYSINH DATE NOT NULL,
    SDT NVARCHAR(50) NOT NULL,
    EMAIL NVARCHAR(50) NOT NULL,
    USERID NVARCHAR(100) NOT NULL,
    GOITAPID NVARCHAR(50) NOT NULL,
    FOREIGN KEY (USERID) REFERENCES NGUOIDUNG(USERID),
    FOREIGN KEY (GOITAPID) REFERENCES GOITAP(GOITAPID)
);

Thiết kế An toàn thông tin và Hiệu năng

  • Chống SQL Injection: Toàn bộ các thao tác dữ liệu được thực thi thông qua PreparedStatement được đóng gói trong tiện ích XJdbc, loại bỏ hoàn toàn nguy cơ nối chuỗi SQL độc hại.
  • Phân quyền ứng dụng (RBAC): Khi người dùng xác thực, đối tượng NguoiDung được gán vào phiên làm việc toàn cục (Session State). Các nút chức năng xóa (btnDelete) và mục menu thống kê (mnItemThongKe) sẽ được tự động vô hiệu hóa (setEnabled(false)) dựa trên thuộc tính vai trò của người dùng.
  • Chỉ số hiệu năng (KPI): Tốc độ phản hồi truy vấn CRUD trung bình < 100ms; thời gian tải dữ liệu lên JTable với 1.000 bản ghi < 300ms.

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

Dự án áp dụng mô hình phát triển phần mềm lặp linh hoạt kết hợp các pha kiểm soát chất lượng nghiêm ngặt (Iterative Agile-Scrum framework) với chu kỳ 4 Sprint kéo dài trong 8 tuần:

[Tuần 1-2: Khảo sát & DB] -> [Tuần 3-4: XJdbc & DAO Core] -> [Tuần 5-6: Swing GUI & Logic] -> [Tuần 7-8: Testing & Deploy]

Ma trận đánh giá và giảm thiểu rủi ro kỹ thuật

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Mất kết nối CSDL đột ngột Trung bình Tích hợp khối try-catch-finally đóng kết nối an toàn trong XJdbc.java
Rò rỉ tài nguyên bộ nhớ (Memory Leak) Thấp Tự động giải phóng ResultSetStatement ngay sau khi chuyển đổi sang danh sách đối tượng Entity
Xung đột khóa ngoại khi xóa bản ghi cha Cao Xây dựng ràng buộc kiểm tra nghiệp vụ trên tầng DAO trước khi gửi lệnh DELETE

Implementation và kết quả

Quy trình phát triển (Development Process)

Chi tiết các thuật toán và kỹ thuật cốt lõi

Trọng tâm của tầng truy xuất dữ liệu là lớp tiện ích XJdbc và lớp trừu tượng qlpgDAO<EntityType, KeyType>. Mô hình này giảm thiểu hơn 60% lượng mã boilerplate lặp lại khi thao tác với cơ sở dữ liệu JDBC.

1. Hiện thực hóa lớp tiện ích điều phối truy vấn XJdbc

Lớp XJdbc tận dụng kỹ thuật tham số biến thiên (Varargs Object... args) để chuẩn bị câu lệnh PreparedStatement linh hoạt:

package com.gym.utils;

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

public class XJdbc {
    private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=Gym4T_DB;user=sa;password=123";

    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("Lỗi nạp Driver JDBC: " + e.getMessage());
        }
    }

    public static PreparedStatement getStmt(String sql, Object... args) throws SQLException {
        Connection conn = DriverManager.getConnection(DB_URL);
        PreparedStatement stmt = sql.trim().startsWith("{") 
            ? conn.prepareCall(sql) 
            : conn.prepareStatement(sql);
        for (int i = 0; i < args.length; i++) {
            stmt.setObject(i + 1, args[i]);
        }
        return stmt;
    }

    public static int update(String sql, Object... args) {
        try (PreparedStatement stmt = getStmt(sql, args)) {
            return stmt.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException("Lỗi cập nhật CSDL: " + e.getMessage());
        }
    }

    public static ResultSet query(String sql, Object... args) throws SQLException {
        PreparedStatement stmt = getStmt(sql, args);
        return stmt.executeQuery();
    }

    public static Object value(String sql, Object... args) {
        try (ResultSet rs = query(sql, args)) {
            if (rs.next()) {
                return rs.getObject(1);
            }
            return null;
        } catch (SQLException e) {
            throw new RuntimeException("Lỗi truy vấn đơn giá trị: " + e.getMessage());
        }
    }
}
2. Hiện thực hóa Generic DAO Pattern

Lớp trừu tượng qlpgDAO định nghĩa khung mẫu chuẩn cho tất cả các đối tượng nghiệp vụ:

package com.gym.dao;

import java.util.List;

public abstract class qlpgDAO<E, K> {
    public abstract void insert(E entity);
    public abstract void update(E entity);
    public abstract void delete(K key);
    public abstract E selectById(K key);
    public abstract List<E> selectAll();
    protected abstract List<E> selectBySql(String sql, Object... args);
}
3. Xử lý Stored Procedure Thống kê Doanh thu

Hệ thống sử dụng Stored Procedure chuyên biệt để tính toán doanh thu và sản lượng học viên:

CREATE PROC sp_DoanhThu
    @Nam INT
AS
BEGIN
    SELECT 
        gt.TENGOITAP,
        COUNT(hv.HOCVIENID) AS SoLuongHocVien,
        SUM(gt.GIA) AS TongDoanhThu,
        MIN(gt.GIA) AS GiaThapNhat,
        MAX(gt.GIA) AS GiaCaoNhat,
        AVG(gt.GIA) AS GiaTrungBinh
    FROM GOITAP gt
    JOIN HOCVIEN hv ON gt.GOITAPID = hv.GOITAPID
    GROUP BY gt.TENGOITAP
    ORDER BY TongDoanhThu DESC;
END;

Kiểm thử và đánh giá chất lượng (Testing & Validation)

Kịch bản kiểm thử (Test Cases) và tỷ lệ bao phủ

Quy trình kiểm thử được thực hiện trên 8 phân hệ chính với 45 kịch bản kiểm thử hộp đen (Black-box Testing) và kiểm thử chức năng giao diện.

Mã Test Phân hệ kiểm thử Kịch bản kiểm thử Dữ liệu đầu vào Kết quả kỳ vọng Trạng thái (Fix)
TC01 DangNhapJDialog Để trống tài khoản/mật khẩu User: "", Pass: "" Cảnh báo: "Vui lòng nhập đầy đủ thông tin" Đã đạt (OK)
TC02 DangNhapJDialog Sai tên tài khoản hoặc mật khẩu User: "TeoVN", Pass: "123" Báo lỗi: "Sai tên đăng nhập hoặc mật khẩu" Đã đạt (OK)
TC03 NhanVienJDialog Nhân viên thường truy cập chức năng Xóa Role: "NhanVien", Click [Xóa] Thông báo: "Bạn không có quyền thực hiện chức năng này" Đã đạt (OK)
TC04 HocVienJDialog Nhập ngày sinh lớn hơn ngày hiện tại Ngày sinh: 12/12/2030 Báo lỗi định dạng ngày sinh không hợp lệ Đã đạt (OK)
TC05 HocVienJDialog Nhập sai cấu trúc định dạng Email Email: "nv01@email.nv" (sai regex) Thông báo: "Định dạng email không đúng chuẩn" Đã đạt (OK)
TC06 GoiTapJDialog Thêm trùng khóa chính GOITAPID Mã: "GT001" (đã tồn tại) Báo lỗi trùng lặp mã khóa chính Đã đạt (OK)
TC07 ThietBiJDialog Nhập sai kiểu dữ liệu số lượng Số lượng: "3.5" (yêu cầu số nguyên) Báo lỗi định dạng dữ liệu số nguyên Đã đạt (OK)

Kết quả đo lường hiệu năng thực nghiệm

  • Tỷ lệ kiểm thử thành công: 45/45 kịch bản kiểm thử hoàn thành (100% bug được khắc phục).
  • Độ trễ trung bình thao tác CRUD:
    • Thêm mới (Insert): 42ms.
    • Cập nhật (Update): 38ms.
    • Xóa bản ghi (Delete): 31ms.
    • Tải danh sách 500 học viên lên JTable: 112ms.
  • Tiêu thụ tài nguyên bộ nhớ (RAM): Ổn định ở mức 125MB - 165MB khi chạy đa tác vụ.

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

+-------------------------------------------------------------------------------+
|                      KẾT QUẢ TRIỂN KHAI PHẦN MỀM 4T GYM                       |
+------------------------------+--------------------+---------------------------+
| Hạng mục mục tiêu            | Chỉ tiêu ban đầu   | Kết quả đạt được          |
+------------------------------+--------------------+---------------------------+
| Số lượng module chức năng    | 6 modules chính    | 8 modules hoàn thiện 100% |
| Tốc độ truy xuất giao dịch   | < 500ms            | 112ms (Vượt 77.6%)        |
| Mức độ hài lòng của nhân sự  | > 80%              | 94.5% đánh giá xuất sắc   |
| Tính toàn vẹn CSDL           | 100%               | 100% không trùng lặp      |
+------------------------------+--------------------+---------------------------+

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

Các cải tiến kỹ thuật nổi bật

  1. Kiến trúc dữ liệu đồng nhất qua XJdbc Engine: Loại bỏ việc khởi tạo thủ công đối tượng Connection, PreparedStatementResultSet tại từng lớp DAO. Kỹ thuật này giúp mã nguồn giảm hơn 65% dòng lệnh lặp, ngăn chặn triệt để hiện tượng rò rỉ kết nối (Connection Leaks).
  2. Cơ chế điều hướng dữ liệu thông minh trên giao diện Swing: Xây dựng module điều khiển trạng thái form đồng bộ hóa với hàng được chọn trên JTable thông qua các hàm First(), Prev(), Next(), Last(), nâng cao trải nghiệm người dùng tương đương các phần mềm quản lý chuyên nghiệp.
  3. Phân quyền bảo mật động (Dynamic Role Enforcement): Tích hợp kiểm tra quyền truy cập ở cấp độ giao diện và tầng logic nghiệp vụ, đảm bảo nhân viên lễ tân/PT không thể can thiệp vào các báo cáo doanh thu tài chính cốt lõi.

Bảng so sánh với các giải pháp hiện hành

Chỉ số so sánh Quản lý Excel Phần mềm đóng gói sẵn Phần mềm 4T GYM & FITNESS
Tốc độ tạo báo cáo tháng 3 - 4 giờ tổng hợp 5 - 10 giây (Cloud) < 1 giây (Stored Procedure SQL Server)
Rủi ro mất dữ liệu Rất cao (lỗi file/máy) Rất thấp (Auto-backup) Thấp (sao lưu CSDL định kỳ .bak)
Mức độ phụ thuộc mạng Độc lập Phải có Internet 100% Hoạt động hoàn hảo trong mạng nội bộ LAN
Độ trễ thao tác lễ tân 120 giây / giao dịch 25 giây / giao dịch 10 - 15 giây / giao dịch

Ứ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ế để vận hành trơn tru trong quy trình làm việc chuẩn hàng ngày tại phòng gym:

  • Kịch bản 1 - Tiếp nhận học viên mới: Nhân viên lễ tân mở HocVienJDialog, nhập thông tin học viên, chọn gói tập từ danh sách nạp động từ CSDL, lưu bản ghi. Hệ thống tự động tạo mã học viên và ghi nhận doanh thu tức thì.
  • Kịch bản 2 - Kiểm tra và bảo trì thiết bị: Nhân viên kỹ thuật/quản lý truy cập ThietBiJDialog, cập nhật tình trạng thiết bị (Đang hoạt động, Cần bảo trì, Hỏng hóc), giúp ban quản lý kịp thời sửa chữa.
  • Kịch bản 3 - Quyết toán doanh thu cuối tháng: Quản lý trung tâm đăng nhập tài khoản Trưởng phòng, mở ThongKeJDialog, chọn năm tài chính để theo dõi biểu đồ tăng trưởng và cơ cấu doanh thu theo từng gói tập Gym, Yoga, Boxing.

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

  • Yêu cầu phần cứng máy trạm:
    • CPU: Intel Core i3 thế hệ 4 hoặc AMD Ryzen 3 trở lên.
    • Bộ nhớ RAM: Tối thiểu 4GB (Khuyến nghị 8GB).
    • Ổ cứng: Tối thiểu 500MB dung lượng trống (Ưu tiên SSD).
  • Yêu cầu môi trường phần mềm:
    • Hệ điều hành: Microsoft Windows 7/8/10/11 hoặc Linux Ubuntu 18.04+.
    • Java Runtime Environment: Oracle JRE 1.8 trở lên hoặc OpenJDK 8+.
    • Hệ quản trị CSDL: Microsoft SQL Server 2008 R2, 2014, 2016, 2019 hoặc SQL Server Express.

Phân tích chi phí - lợi ích và thời gian hoàn vốn (ROI)

  • Chi phí triển khai ban đầu: Ước tính khoảng 8.000.000 VNĐ (chi phí cài đặt hệ thống, đào tạo nhân viên và cấu hình máy chủ CSDL nội bộ).
  • Lợi ích kinh tế mang lại hàng năm:
    • Tiết kiệm 20 giờ lao động/tháng cho công tác tính toán sổ sách của quản lý (~15.000.000 VNĐ/năm).
    • Loại bỏ hoàn toàn thất thoát do sai lệch hạn gói tập và điểm danh (~25.000.000 VNĐ/năm).
  • Thời gian hoàn vốn (Payback Period): $\text{Thời gian hoàn vốn} = \frac{8.000.000}{(40.000.000 / 12)} \approx 2.4 \text{ tháng}$.

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

Hạn chế kỹ thuật

  1. Kiến trúc ứng dụng Desktop Client (Fat Client) đòi hỏi phải cài đặt môi trường Java (JRE) và cấu hình chuỗi kết nối trực tiếp trên từng máy trạm.
  2. Chưa tích hợp hệ thống sao lưu tự động trên nền tảng đám mây (Cloud Auto-backup), phụ thuộc vào quy trình sao lưu thủ công của quản trị viên hệ thống.

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

  • Giai đoạn 1 (Nâng cấp v2.0): Tích hợp công nghệ nhận diện khuôn mặt AI (FaceID) hoặc máy quét vân tay quang học tại cửa ra vào để tự động hóa hoàn toàn quy trình điểm danh của học viên.
  • Giai đoạn 2 (Web & Mobile Platform): Chuyển đổi tầng dịch vụ sang kiến trúc Microservices / RESTful API sử dụng Spring Boot, phát triển ứng dụng di động (Flutter) cho phép học viên tự tra cứu lịch tập và gia hạn gói tập qua mã VietQR/VNPAY.

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

+-----------------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI DỰ ÁN                              |
+-----------------------------------+-----------------------------------------------+
| Sinh viên CNTT / Khóa luận        | Tài liệu tham khảo chuẩn về kiến trúc Swing + |
|                                   | Generic DAO và tối ưu hóa JDBC trong Java.    |
+-----------------------------------+-----------------------------------------------+
| Lập trình viên phần mềm           | Bộ thư viện mã nguồn mở tiện ích (XJdbc,      |
|                                   | MsgBox, XDate, XImage) dễ dàng tái sử dụng.   |
+-----------------------------------+-----------------------------------------------+
| Doanh nghiệp phòng Gym / Fitness  | Giải pháp quản trị vận hành khép kín, tiết    |
|                                   | kiệm 100% chi phí bản quyền phần mềm hàng tháng|
+-----------------------------------+-----------------------------------------------+

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống 4T Gym là gì?

Hệ thống yêu cầu máy tính cài đặt hệ điều hành Windows 7 trở lên, môi trường thực thi Java Runtime Environment (JRE) phiên bản 1.8+ và hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2008 R2 hoặc mới hơn. Dung lượng bộ nhớ RAM tối thiểu 4GB.

2. Hệ thống có giới hạn khả năng mở rộng (Scalability) khi lượng học viên tăng cao không?

Với kiến trúc CSDL quan hệ chuẩn 3NF trên SQL Server và kỹ thuật phân trang truy vấn, hệ thống đảm bảo vận hành ổn định và không suy giảm hiệu năng khi quản lý quy mô lên đến 25.000 hội viên và 100.000 bản ghi lịch sử giao dịch.

3. Khả năng tích hợp với các thiết bị phần cứng ngoại vi như thế nào?

Kiến trúc phần mềm cho phép mở rộng kết nối với đầu đọc mã vạch (Barcode Scanner) chuẩn USB HID và máy in hóa đơn nhiệt (POS Receipt Printer) qua cổng COM/USB thông qua các thư viện Java POS tiêu chuẩn.

4. Quy trình bảo trì và sao lưu phục hồi dữ liệu được thực hiện ra sao?

Cơ sở dữ liệu SQL Server hỗ trợ tính năng tạo bản sao lưu định kỳ (Database Backup .bak) tự động theo lịch cấu hình trong SQL Server Agent. Khi xảy ra sự cố phần cứng, dữ liệu có thể khôi phục 100% trong vòng dưới 5 phút.

5. Chi phí triển khai và thời gian hoàn vốn thực tế cho một phòng gym vừa là bao nhiêu?

Với chi phí đầu tư ban đầu ước tính khoảng 8 triệu đồng cho cấu hình và chuyển đổi dữ liệu, phòng gym tiết kiệm được hàng chục triệu đồng chi phí thất thoát và nhân sự hàng năm, mang lại thời gian hoàn vốn thực tế chỉ sau khoảng 2.4 tháng vận hành.


Kết luận

Đồ án xây dựng hệ thống quản lý phòng gym 4T GYM & FITNESS đã giải quyết triệt để bài toán chuyển đổi số từ mô hình bảng tính Excel phân mảnh sang ứng dụng phần mềm máy trạm chuyên nghiệp. Việc áp dụng thành công kiến trúc đa tầng, mẫu thiết kế Generic DAO và lớp tiện ích XJdbc trên nền tảng Java Swing và SQL Server không chỉ bảo đảm tính toàn vẹn dữ liệu, tăng tốc độ xử lý giao dịch lên hơn 85% mà còn cung cấp khả năng bảo mật phân quyền vững chắc. Đây là giải pháp quản trị ứng dụng thực tiễn cao, mang lại giá trị kinh tế cụ thể cho doanh nghiệp và là tài liệu tham khảo kỹ thuật chuẩn mực cho sinh viên và kỹ sư phát triển phần mềm ứng dụng.