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, hạ tầng cơ sở vật chất tại các cơ sở giáo dục đại học ngày càng mở rộng với quy mô lên tới hàng chục nghìn trang thiết bị: máy tính phòng lab, thiết bị đo lường chuyên dụng, máy chiếu, tài liệu học thuật và hóa chất thí nghiệm. Theo thống kê từ các khảo sát quản trị đại học tại Việt Nam, hơn 68% cơ sở giáo dục vẫn dựa vào hệ thống sổ sách phân mảnh hoặc file Excel ngoại tuyến để kiểm kê tài sản. Phương thức thủ công này dẫn đến tỷ lệ thất thoát và sai lệch số liệu tài sản trung bình từ 12% đến 18% mỗi năm tài chính, đồng thời gây lãng phí ít nhất 150 giờ làm việc của nhân sự quản trị trong mỗi kỳ kiểm kê định kỳ.

Đồ án tốt nghiệp "Xây dựng Website Quản lý Tài sản & Thiết bị cho Trường Đại học sử dụng PHP" do sinh viên Nguyễn Thành Vinh thực hiện dưới sự hướng dẫn của TS. Mai Xuân Tráng (Trường Đại học Phenikaa, 2023) giải quyết triệt để bài toán tự động hóa quản lý vòng đời tài sản trong môi trường học thuật.

+-------------------------------------------------------------------------+
|                VÒNG ĐỜI QUẢN LÝ TÀI SẢN & THIẾT BỊ ĐẠI HỌC              |
+-------------------------------------------------------------------------+
|                                                                         |
|   +----------------+       +-----------------+       +--------------+   |
|   | 1. Nhập kho &  | ----> | 2. Cấp phát &   | ----> | 3. Mượn / Trả|   |
|   |    Phân loại   |       |    Phòng ban    |       |    Sinh viên |   |
|   +----------------+       +-----------------+       +--------------+   |
|                                                              |          |
|                                                              v          |
|   +----------------+       +-----------------+       +--------------+   |
|   | 6. Thanh lý /  | <---- | 5. Kiểm tra     | <---- | 4. Báo hỏng  |   |
|   |    Xuất sổ     |       |    Định kỳ      |       |    & Sửa chữa|   |
|   +----------------+       +-----------------+       +--------------+   |
|                                                                         |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng nền tảng Web-based tập trung: Hợp nhất toàn bộ dữ liệu trang thiết bị toàn trường vào một cơ sở dữ liệu quan hệ đồng bộ, loại bỏ hoàn toàn tình trạng phân mảnh dữ liệu giữa các khoa và phòng ban.
  2. Tự động hóa quy trình mượn - trả: Số hóa 100% quy trình đăng ký, xét duyệt yêu cầu mượn thiết bị của sinh viên và giảng viên theo thời gian thực (Real-time).
  3. Quản lý bảo trì và kiểm định định kỳ: Thiết lập cơ chế phân công bảo dưỡng, ghi nhận nhật ký hỏng hóc và theo dõi tiến độ sửa chữa từ trạng thái "Chưa xử lý" đến "Hoàn thành".
  4. Tối ưu hóa khả năng truy vết và báo cáo: Cung cấp công cụ xuất báo cáo kiểm kê tài sản, lịch sử sử dụng và gửi cảnh báo tự động qua email cho người dùng.

Giải pháp kỹ thuật và kết quả kỳ vọng

Dự án triển khai mô hình kiến trúc MVC (Model-View-Controller) trên nền tảng ngôn ngữ PHP kết hợp hệ quản trị cơ sở dữ liệu MySQL. Sự kết hợp này mang lại hiệu năng ổn định, chi phí vận hành thấp và khả năng tương thích cao với hạ tầng máy chủ hiện có của các trường đại học.

Chỉ số kỳ vọng Trước khi triển khai Sau khi áp dụng hệ thống Mức độ cải thiện
Thời gian phê duyệt mượn thiết bị 24 - 48 giờ (ký giấy) < 5 phút (trực tuyến) Giảm 95%
Tỷ lệ thất thoát / sai lệch số liệu 12 - 18% < 0.5% Giảm ~97%
Thời gian lập báo cáo kiểm kê 3 - 5 ngày Xuất tức thì (< 3 giây) Tăng tốc độ 99%
Khả năng truy vết lịch sử bảo dưỡng Rời rạc, mất mát hồ sơ 100% định danh số hóa Đạt 100%

Phạm vi và giới hạn của đề tài

  • Phạm vi: Ứng dụng tập trung vào công tác quản trị nội bộ tại Trường Đại học Phenikaa, phục vụ ba nhóm tác nhân chính: Quản trị viên (Admin), Nhân viên kỹ thuật/bảo trì (Staff), và Giảng viên/Sinh viên (User).
  • Giới hạn: Hệ thống tập trung vào tầng ứng dụng web quản lý logic nghiệp vụ; chưa tích hợp trực tiếp phần cứng nhận diện tự động qua chip RFID hay quét mã vạch chuyên dụng qua máy quét cầm tay ngoại vi.

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ế tại các đơn vị trực thuộc cho thấy các giải pháp quản lý truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng. Bảng so sánh dưới đây phân tích sự khác biệt giữa hệ thống đề xuất và các giải pháp hiện hành:

Tiêu chí đánh giá Quản lý sổ sách / Excel Phần mềm ERP thương mại (SAP, Oracle) Website PHP Quản lý Tài sản (Đề tài)
Chi phí đầu tư Gần như bằng 0 Rất cao ($15,000 - $50,000/năm) Thấp (Mã nguồn mở, không phí bản quyền)
Độ phức tạp triển khai Đơn giản nhưng phân mảnh Rất phức tạp, cần đào tạo lâu dài Đơn giản, giao diện trực quan, gọn nhẹ
Tính sẵn sàng đa nền tảng Cục bộ trên máy tính cá nhân Web / Cloud nhưng nặng nề Web responsive, truy cập mọi thiết bị
Độ tùy biến theo đại học Thấp, dễ lỗi định dạng Khó tùy biến quy trình mượn lab Tùy biến sát với nghiệp vụ nhà trường
Phân quyền người dùng Không có hoặc rất yếu Chi tiết nhưng phức tạp Phân quyền 3 cấp (Admin - Staff - User) rõ ràng

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Xác thực người dùng (Đăng nhập/Đăng ký); Phân quyền RBAC (Role-Based Access Control); Quản lý danh mục thiết bị (CRUD); Quy trình gửi yêu cầu - duyệt mượn trả; Báo cáo sự cố và cập nhật trạng thái sửa chữa.
  • Should Have (Nên có): Cấp phát thiết bị theo bộ phận; Thiết lập lịch kiểm tra định kỳ; Gửi email thông báo tự động khi trạng thái mượn/sửa chữa thay đổi.
  • Could Have (Có thể có): Lọc nâng cao theo vị trí phòng học/kho bãi; Xuất dữ liệu báo cáo ra định dạng bảng tính.
  • Won't Have (Chưa thực hiện đợt này): Quét mã QR qua camera điện thoại; Đồng bộ trực tiếp với phần mềm kế toán tài chính quốc gia.

Thiết kế hệ thống

Kiến trúc tổng thể

Hệ thống tuân thủ nghiêm ngặt mô hình MVC 3 lớp, đảm bảo tính tách biệt giữa logic xử lý dữ liệu và giao diện hiển thị:

+---------------------------------------------------------------------------------+
|                        KIẾN TRÚC HỆ THỐNG DỰA TRÊN MÔ HÌNH MVC                  |
+---------------------------------------------------------------------------------+
|                                                                                 |
|   +-------------------------------------------------------------------------+   |
|   |                        CLIENT BROWSER (UI Layer)                        |   |
|   |             HTML5 / CSS3 / JavaScript (jQuery, AJAX) / Bootstrap        |   |
|   +-------------------------------------------------------------------------+   |
|                                        |                                        |
|                       HTTP Request     |     JSON / HTML Response               |
|                                        v                                        |
|   +-------------------------------------------------------------------------+   |
|   |                        CONTROLLER (Routing & Business)                  |   |
|   |   - AuthController.php          - DeviceController.php                  |   |
|   |   - BorrowController.php        - MaintenanceController.php             |   |
|   +-------------------------------------------------------------------------+   |
|                        |                                    ^                   |
|       Manipulate Data  |                                    | Send Data         |
|                        v                                    |                   |
|   +------------------------------------+   +--------------------------------+   |
|   |          MODEL (Data Layer)        |   |       VIEW (Presentation)      |   |
|   |  - UserModel.php                   |   |  - admin/devices/index.php     |   |
|   |  - DeviceModel.php                 |   |  - user/borrow_form.php        |   |
|   |  - BorrowModel.php                 |   |  - staff/repair_list.php       |   |
|   +------------------------------------+   +--------------------------------+   |
|                        |                                                        |
|         PDO / SQL Query|                                                        |
|                        v                                                        |
|   +-------------------------------------------------------------------------+   |
|   |                    DATABASE ENGINE (MySQL 8.0 / InnoDB)                 |   |
|   |          Relational Schema, Foreign Keys, ACID Transaction Support      |   |
|   +-------------------------------------------------------------------------+   |
|                                                                                 |
+---------------------------------------------------------------------------------+

Technology Stack và phiên bản

+-------------------+---------------------------------------------------------+
| Công nghệ         | Phiên bản & Mục đích sử dụng                            |
+-------------------+---------------------------------------------------------+
| Ngôn ngữ Backend  | PHP 8.2 (Strict Typing, PDO, OPcache)                    |
| Hệ quản trị CSDL  | MySQL 8.0 (InnoDB Engine, Foreign Key Constraints)      |
| Web Server        | Apache 2.4 / Nginx 1.24                                 |
| Frontend Core     | HTML5, CSS3, JavaScript ES6                             |
| Thư viện UI       | Bootstrap 5.3, DataTables.js                            |
| Giao tiếp Client  | AJAX (Asynchronous JavaScript and XML) qua jQuery 3.6   |
+-------------------+---------------------------------------------------------+

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

Cơ sở dữ liệu được chuẩn hóa ở dạng 3NF (Third Normal Form) nhằm đảm bảo toàn vẹn dữ liệu và triệt tiêu dư thừa thông tin. Dưới đây là lược đồ các bảng cốt lõi:

-- Bảng tài khoản người dùng
CREATE TABLE `users` (
    `user_id` INT AUTO_INCREMENT PRIMARY KEY,
    `username` VARCHAR(50) NOT NULL UNIQUE,
    `password_hash` VARCHAR(255) NOT NULL,
    `full_name` VARCHAR(100) NOT NULL,
    `email` VARCHAR(100) NOT NULL UNIQUE,
    `role` ENUM('admin', 'staff', 'user') DEFAULT 'user',
    `department_id` INT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng danh mục và thiết bị
CREATE TABLE `devices` (
    `device_id` INT AUTO_INCREMENT PRIMARY KEY,
    `device_code` VARCHAR(50) NOT NULL UNIQUE,
    `device_name` VARCHAR(150) NOT NULL,
    `category_id` INT NOT NULL,
    `quantity` INT NOT NULL DEFAULT 1,
    `available_quantity` INT NOT NULL DEFAULT 1,
    `location` VARCHAR(100) NOT NULL,
    `status` ENUM('available', 'borrowed', 'maintenance', 'liquidated') DEFAULT 'available',
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý mượn trả
CREATE TABLE `borrow_records` (
    `borrow_id` INT AUTO_INCREMENT PRIMARY KEY,
    `user_id` INT NOT NULL,
    `device_id` INT NOT NULL,
    `borrow_date` DATE NOT NULL,
    `expected_return_date` DATE NOT NULL,
    `actual_return_date` DATE NULL,
    `status` ENUM('pending', 'approved', 'rejected', 'returned', 'overdue') DEFAULT 'pending',
    `admin_note` TEXT NULL,
    FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE,
    FOREIGN KEY (`device_id`) REFERENCES `devices`(`device_id`) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý bảo trì và sửa chữa
CREATE TABLE `repair_logs` (
    `repair_id` INT AUTO_INCREMENT PRIMARY KEY,
    `device_id` INT NOT NULL,
    `reported_by` INT NOT NULL,
    `assigned_to` INT NULL,
    `issue_description` TEXT NOT NULL,
    `status` ENUM('pending', 'in_progress', 'completed', 'canceled') DEFAULT 'pending',
    `start_date` DATE NULL,
    `completion_date` DATE NULL,
    FOREIGN KEY (`device_id`) REFERENCES `devices`(`device_id`),
    FOREIGN KEY (`reported_by`) REFERENCES `users`(`user_id`),
    FOREIGN KEY (`assigned_to`) REFERENCES `users`(`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế an toàn và bảo mật (Security Considerations)

  1. Phòng chống SQL Injection: Triệt để sử dụng PHP Data Objects (PDO) cùng cơ chế Prepared Statements cho 100% các truy vấn tương tác cơ sở dữ liệu.
  2. Bảo vệ danh tính & mật khẩu: Sử dụng thuật toán băm BCRYPT thông qua hàm password_hash() với salt ngẫu nhiên chuẩn công nghiệp.
  3. Phòng chống XSS (Cross-Site Scripting): Mọi dữ liệu do người dùng nhập vào trước khi render ra màn hình đều được xử lý qua hàm lọc dữ liệu htmlspecialchars(..., ENT_QUOTES, 'UTF-8').
  4. Kiểm soát phiên và phân quyền RBAC: Triển khai middleware xác thực session tại Controller, ngăn chặn truy cập trái phép vào các endpoint quản trị qua kỹ thuật kiểm tra cờ phân quyền ($_SESSION['role'] === 'admin').

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 theo quy trình lặp dựa trên nguyên lý Agile/Scrum rút gọn, chia làm 4 giai đoạn rõ rệt kéo dài trong 12 tuần:

+-------------------------------------------------------------------------------+
| Giai đoạn    | Thời gian | Mục tiêu & Sản phẩm bàn giao (Deliverables)        |
+-------------------------------------------------------------------------------+
| Sprint 1     | Tuần 1-3  | Khảo sát nghiệp vụ Phenikaa, phân tích Use Case,   |
|              |           | thiết kế CSDL 3NF, hoàn thiện Kiến trúc MVC.       |
| Sprint 2     | Tuần 4-7  | Lập trình Module User, Module Thiết bị và phân     |
|              |           | quyền xác thực hệ thống.                           |
| Sprint 3     | Tuần 8-10 | Phát triển Module Mượn/Trả, Quản lý Cấp phát và     |
|              |           | Module Quản lý Sửa chữa / Bảo trì định kỳ.        |
| Sprint 4     | Tuần 11-12| Tích hợp Email notification, kiểm thử UAT, tối ưu   |
|              |           | hiệu năng SQL, viết tài liệu và triển khai.        |
+-------------------------------------------------------------------------------+

Implementation và kết quả

Quy trình phát triển và hiện thực hóa mã nguồn

Hệ thống được phát triển trên kiến trúc OOP thuần trong PHP 8.2 nhằm đảm bảo khả năng mở rộng và dễ bảo trì. Các luồng xử lý nghiệp vụ mượn - trả và sửa chữa đòi hỏi tính nhất quán dữ liệu cao được đóng gói trong các Database Transaction.

Thuật toán và đoạn mã xử lý đăng ký mượn thiết bị (Borrow Controller)

<?php
declare(strict_types=1);

namespace App\Controllers;

use App\Core\Database;
use PDO;
use Exception;

class BorrowController
{
    private PDO $db;

    public function __construct()
    {
        $this->db = Database::getInstance()->getConnection();
    }

    /**
     * Xử lý gửi yêu cầu mượn thiết bị với kiểm soát đồng thời (ACID Transaction)
     */
    public function requestBorrow(int $userId, int $deviceId, string $expectedReturnDate): array
    {
        try {
            $this->db->beginTransaction();

            // 1. Khóa bản ghi thiết bị để kiểm tra số lượng khả dụng (Pessimistic Locking)
            $stmt = $this->db->prepare(
                "SELECT available_quantity, status FROM devices WHERE device_id = :device_id FOR UPDATE"
            );
            $stmt->execute([':device_id' => $deviceId]);
            $device = $stmt->fetch(PDO::FETCH_ASSOC);

            if (!$device || $device['available_quantity'] < 1 || $device['status'] !== 'available') {
                $this->db->rollBack();
                return ['success' => false, 'message' => 'Thiết bị hiện không khả dụng để mượn.'];
            }

            // 2. Tạo bản ghi yêu cầu mượn mới
            $insertStmt = $this->db->prepare(
                "INSERT INTO borrow_records (user_id, device_id, borrow_date, expected_return_date, status) 
                 VALUES (:user_id, :device_id, CURDATE(), :expected_return, 'pending')"
            );
            $insertStmt->execute([
                ':user_id' => $userId,
                ':device_id' => $deviceId,
                ':expected_return' => $expectedReturnDate
            ]);

            // 3. Tạm trừ số lượng khả dụng của thiết bị
            $updateStmt = $this->db->prepare(
                "UPDATE devices 
                 SET available_quantity = available_quantity - 1,
                     status = IF(available_quantity - 1 = 0, 'borrowed', status)
                 WHERE device_id = :device_id"
            );
            $updateStmt->execute([':device_id' => $deviceId]);

            $this->db->commit();
            return ['success' => true, 'message' => 'Yêu cầu mượn thiết bị đã được gửi thành công, vui lòng chờ duyệt.'];
        } catch (Exception $e) {
            $this->db->rollBack();
            error_log("Lỗi xử lý mượn thiết bị: " . $e->getMessage());
            return ['success' => false, 'message' => 'Lỗi hệ thống trong quá trình tạo yêu cầu mượn.'];
        }
    }
}

Xử lý tương tác bất đồng bộ AJAX (Cập nhật trạng thái sửa chữa)

/**
 * Cập nhật trạng thái sửa chữa thiết bị không cần tải lại trang
 */
function updateRepairStatus(repairId, newStatus) {
    $.ajax({
        url: '/api/repairs/update_status.php',
        type: 'POST',
        dataType: 'json',
        data: {
            repair_id: repairId,
            status: newStatus
        },
        beforeSend: function() {
            $('#status-badge-' + repairId).html('<span class="spinner-border spinner-border-sm"></span> Đang xử lý...');
        },
        success: function(response) {
            if (response.status === 'success') {
                toastr.success(response.message);
                $('#status-badge-' + repairId).text(newStatus).removeClass().addClass('badge bg-success');
            } else {
                toastr.error(response.message);
            }
        },
        error: function(xhr, status, error) {
            toastr.error('Không thể kết nối đến máy chủ.');
            console.error('AJAX Error: ' + error);
        }
    });
}

Kiểm thử và đánh giá (Testing & Validation)

Hệ thống đã trải qua quá trình kiểm thử toàn diện với 3 cấp độ: Unit Testing, Integration Testing và User Acceptance Testing (UAT).

+---------------------------------------------------------------------------------+
| Loại kiểm thử           | Số ca kiểm thử (Test cases) | Tỷ lệ thành công (Pass) |
+---------------------------------------------------------------------------------+
| Unit Test (Logic PHP)   | 45 cases                    | 100%                    |
| Functional Integration  | 32 cases                    | 100%                    |
| Security & SQL Injection| 18 cases                    | 100%                    |
| User Acceptance (UAT)   | 15 kịch bản thực tế         | 96.6% (1 lỗi giao diện) |
+---------------------------------------------------------------------------------+

Kết quả đo lường hiệu năng (Benchmark Metrics)

  • Tốc độ phản hồi trung bình (Response Time): Đạt 142ms trên môi trường máy chủ cục bộ và 320ms qua đường truyền mạng trường học.
  • Tải đồng thời (Concurrency Test): Đã kiểm thử chịu tải với 150 người dùng đồng thời (Concurrent requests) gửi thao tác mượn/tìm kiếm thiết bị; không phát sinh hiện tượng Deadlock hoặc Race condition nhờ cơ chế SELECT ... FOR UPDATE trong Transaction.
  • Tỷ lệ xử lý bug: Tổng cộng 24 lỗi phát sinh trong quá trình phát triển (14 lỗi giao diện responsive, 7 lỗi logic kiểm tra ngày mượn/trả, 3 lỗi câu truy vấn SQL) đã được phân loại và khắc phục triệt để trước khi hoàn thành đồ án.

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

Hệ thống đã hoàn thiện đầy đủ 100% các chức năng cốt lõi theo đúng đề cương phê duyệt:

+---------------------------------------------------------------------------------+
| Hạng mục chức năng             | Đề ra ban đầu      | Thực tế đạt được          |
+---------------------------------------------------------------------------------+
| Phân hệ Quản lý tài khoản      | CRUD, Phân quyền   | Đạt (Phân quyền 3 vai trò)|
| Phân hệ Danh mục & Thiết bị    | Quản lý thông tin  | Đạt (Lọc, tìm kiếm AJAX)  |
| Phân hệ Mượn - Trả             | Đăng ký & Xét duyệt| Đạt (Transaction an toàn) |
| Phân hệ Bảo dưỡng, Sửa chữa    | Ghi nhận báo hỏng  | Đạt (Theo dõi 4 trạng thái)|
| Phân hệ Cấp phát phòng ban     | Phân bổ thiết bị   | Đạt (Lên lịch kiểm tra)   |
| Phân hệ Thông báo              | Gửi email          | Đạt (Tích hợp PHPMailer)  |
+---------------------------------------------------------------------------------+

Khảo sát người dùng thực tế từ 30 sinh viên và 5 cán bộ quản lý thiết bị tại Trường Đại học Phenikaa cho thấy điểm số hài lòng trung bình đạt 4.75/5.0, trong đó tốc độ tìm kiếm và sự thuận tiện trong gửi yêu cầu mượn thiết bị được đánh giá cao nhất.


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

  1. Chuẩn hóa chu trình khép kín của thiết bị giáo dục: Thay vì chỉ quản lý tĩnh danh sách tài sản như các phần mềm thông thường, hệ thống kết nối trạng thái liên hoàn: Nhập kho $\rightarrow$ Cấp phát đơn vị $\rightarrow$ Mượn sử dụng $\rightarrow$ Báo hỏng $\rightarrow$ Sửa chữa $\rightarrow$ Hoàn trả/Thanh lý.
  2. Cơ chế chống nghẽn và xung đột mượn thiết bị: Ứng dụng kỹ thuật khóa dòng dữ liệu tạm thời (Pessimistic Locking) trong MySQL InnoDB giúp giải quyết bài toán nhiều sinh viên cùng bấm mượn một thiết bị đơn lẻ tại cùng một phần nghìn giây mà không gây sai lệch số lượng tồn kho.
  3. Cắt giảm chi phí và nâng cao hiệu suất: Giúp nhà trường tiết kiệm hàng chục triệu đồng chi phí mua bản quyền phần mềm quản lý tài sản đóng gói hàng năm, đồng thời tăng năng suất xử lý thủ tục hành chính mượn trả lên hơn 70%.

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

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

  • Phòng Thực hành Máy tính (Khoa CNTT): Quản lý tình trạng 200+ máy tính, cấu hình phần cứng, chuột, bàn phím và ghi nhận ngay máy bị lỗi phần cứng để kỹ thuật viên tiếp nhận sửa chữa.
  • Phòng Thiết bị Truyền thông - Sự kiện: Quản lý lịch mượn máy ảnh, micro, loa kéo cho các câu lạc bộ sinh viên với thời hạn trả và cam kết trạng thái cụ thể.

Hướng dẫn triển khai hệ thống (Deployment Guide)

Hệ thống có thể được triển khai nhanh chóng trên môi trường LAMP/WAMP/XAMPP tiêu chuẩn theo các bước:

# 1. Clone mã nguồn vào thư mục web root
cd /var/www/html/
git clone https://github.com/vinh-phenikaa/asset-management-php.git .

# 2. Tạo cơ sở dữ liệu và import cấu trúc bảng
mysql -u root -p -e "CREATE DATABASE asset_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p asset_management < database/schema.sql

# 3. Cấu hình thông tin kết nối CSDL trong file config
cp config/database.example.php config/database.php
nano config/database.php

# 4. Phân quyền thư mục tải lên hình ảnh biên bản hỏng hóc
chmod -R 775 uploads/
chown -R www-data:www-data /var/www/html/

Phân tích Hiệu quả Đầu tư (Cost-Benefit & ROI)

  • Chi phí phát triển & vận hành: ~0 VNĐ tiền bản quyền phần mềm; chi phí duy trì chỉ bao gồm hạ tầng máy chủ nội bộ hoặc VPS Linux thông thường (~100.000 - 200.000 VNĐ/tháng).
  • Lợi ích kinh tế: Giảm thiểu 95% chi phí giấy tờ, sổ sách in ấn biểu mẫu mượn trả; triệt tiêu nguy cơ thất lạc thiết bị thí nghiệm có giá trị cao; thời gian hoàn vốn đầu tư công sức (ROI) đạt được ngay trong học kỳ đầu tiên đưa vào vận hành.

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

Hạn chế còn tồn tại

  • Hệ thống hoạt động hoàn toàn trực tuyến trên nền tảng Web, chưa hỗ trợ chế độ làm việc ngoại tuyến (Offline sync) khi nhân viên đi kiểm kê tại các tầng hầm hoặc khu vực mất sóng Wi-Fi.
  • Chưa có tính năng quét mã QR Code hoặc Barcode trực tiếp qua camera máy tính bảng/điện thoại thông minh mà vẫn phải nhập mã định danh thiết bị bằng tay.

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

  1. Phát triển Mobile App đồng hành: Xây dựng ứng dụng di động đa nền tảng (Flutter hoặc React Native) cho phép nhân viên quét mã QR dán trên thân máy để tra cứu nhanh lý lịch sửa chữa trong 1 giây.
  2. Tích hợp cảm biến IoT: Kết nối thiết bị đo kiểm môi trường (nhiệt độ, độ ẩm phòng máy chủ/lab) để tự động kích hoạt cảnh báo bảo trì phòng ngừa.
  3. Ứng dụng AI dự đoán hỏng hóc: Phân tích dữ liệu lịch sử sửa chữa để dự báo thời điểm cần thay thế linh kiện định kỳ trước khi thiết bị gặp sự cố.

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

+-----------------------------------------------------------------------------+
| Nhóm đối tượng       | Giá trị thực tiễn mang lại                           |
+-----------------------------------------------------------------------------+
| Sinh viên & Học viên | Tra cứu thiết bị sẵn sàng 24/7; gửi yêu cầu mượn     |
|                      | online; không cần di chuyển tìm gặp quản lý phòng.   |
| Kỹ thuật viên (Staff)| Nhận thông tin báo hỏng kèm mô tả chi tiết tức thì;   |
|                      | quản lý danh sách bảo dưỡng rõ ràng, minh bạch.      |
| Cán bộ Quản trị      | Kiểm soát biến động tài sản toàn trường chính xác;   |
|                      | xuất báo cáo kiểm kê tự động chỉ với 1 cú click.     |
| Lập trình viên SV    | Tài liệu tham khảo chuẩn mực về kiến trúc MVC PHP,   |
|                      | phân quyền RBAC và xử lý Database Transaction.      |
+-----------------------------------------------------------------------------+

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

1. Cấu hình máy chủ tối thiểu để triển khai website là gì?

Hệ thống cực kỳ nhẹ và tối ưu. Máy chủ chỉ cần tối thiểu: CPU 1 Core, RAM 1GB, Ổ cứng 10GB SSD, cài đặt hệ điều hành Linux (Ubuntu 20.04/22.04 LTS hoặc CentOS), chạy PHP 7.4+ (khuyến nghị PHP 8.2) và MySQL 5.7+ (khuyến nghị MySQL 8.0).

2. Hệ thống xử lý thế nào khi có nhiều sinh viên cùng mượn một thiết bị tại một thời điểm?

Hệ thống sử dụng cơ chế Pessimistic Locking (SELECT ... FOR UPDATE) trong khối Database Transaction của MySQL. Khi có yêu cầu gửi đến, dòng dữ liệu của thiết bị sẽ được khóa tạm thời, kiểm tra available_quantity. Nếu số lượng bằng 0, các yêu cầu đến sau trong cùng mili-giây sẽ lập tức nhận thông báo từ chối an toàn, ngăn chặn hoàn toàn lỗi ghi đè dữ liệu.

3. Website có thể tích hợp vào Cổng thông tin đào tạo sẵn có của trường không?

Hoàn toàn có thể. Do được thiết kế theo cấu trúc module MVC độc lập, hệ sinh thái có thể dễ dàng mở rộng lớp API (RESTful API) để liên kết xác thực Single Sign-On (SSO) với hệ thống tài khoản sinh viên chung (LDAP / Google Workspace trường học).

4. Dữ liệu mượn trả và sửa chữa có thể sao lưu định kỳ tự động không?

Có. Quản trị viên có thể thiết lập lệnh Cron Job trên máy chủ Linux để tự động thực thi lệnh mysqldump xuất bản sao lưu CSDL hàng ngày lúc 00:00 và lưu trữ tại thư mục an toàn hoặc đẩy lên dịch vụ lưu trữ đám mây.

5. Chi phí triển khai và thời gian hoàn vốn của hệ thống là bao lâu?

Vì sử dụng 100% công nghệ mã nguồn mở (PHP, MySQL, Apache, Bootstrap), chi phí bản quyền phần mềm là 0 VNĐ. Thời gian hoàn vốn thể hiện ngay sau 1 đến 2 tháng thông qua việc cắt giảm 100% chi phí in ấn sổ sách kiểm kê và giảm thiểu tối đa rủi ro thất thoát trang thiết bị giá trị cao.


Kết luận

Đồ án tốt nghiệp "Xây dựng Website Quản lý Tài sản & Thiết bị cho Trường Đại học sử dụng PHP" của tác giả Nguyễn Thành Vinh đã giải quyết trọn vẹn và toàn diện bài toán cấp thiết trong công tác quản trị thiết bị giáo dục thời đại số. Thông qua việc ứng dụng chuẩn mực kiến trúc MVC, cơ sở dữ liệu quan hệ tối ưu hóa cùng các cơ chế bảo mật chặt chẽ, sản phẩm không chỉ dừng lại ở mức độ nghiên cứu học thuật mà sở hữu đầy đủ tính năng để ứng dụng thực tế ngay tại các trường đại học, cao đẳng và cơ sở đào tạo trên toàn quốc. Đề tài khẳng định tư duy phân tích hệ thống bài bản, kỹ năng lập trình chuyên nghiệp và mở ra tiền đề vững chắc cho việc phát triển các giải pháp phần mềm quản trị giáo dục thông minh trong tương lai.