Giới thiệu dự án

Thương mại điện tử (E-Commerce) tại Việt Nam đang duy trì tốc độ tăng trưởng ấn tượng trên 20%/năm, kéo theo sự chuyển dịch mạnh mẽ từ các mô hình kinh doanh truyền thống sang nền tảng số. Đối với ngành hàng máy tính và thiết bị công nghệ thông tin (CNTT) – nhóm sản phẩm có giá trị cao, thông số kỹ thuật phức tạp và yêu cầu hậu mãi khắt khe – việc xây dựng một hệ thống bán lẻ trực tuyến chuyên biệt là yêu cầu cấp thiết.

Đồ án tốt nghiệp "Xây dựng website bán máy tính trực tuyến" do sinh viên Nguyễn Văn Tùng thực hiện dưới sự hướng dẫn của ThS. Nguyễn Mười Phương (Khoa Công nghệ Thông tin & Truyền thông, Trường Đại học Phương Đông) tập trung giải quyết bài toán số hóa toàn diện quy trình phân phối thiết bị máy tính: từ quản lý danh mục cấu hình phần cứng, điều hướng giỏ hàng, đến phân quyền điều phối đơn hàng và tiếp nhận bảo hành.

graph TD
    A[Khách hàng vãng lai] -->|Đăng ký / Đăng nhập| B(Thành viên Hệ thống)
    B -->|Tìm kiếm & Chọn cấu hình| C[Giỏ hàng Trực tuyến]
    C -->|Thanh toán & Đặt hàng| D[Đơn hàng Mới]
    D -->|Tiếp nhận & Phân bổ| E[Người quản lý - Admin]
    E -->|Giao việc| F[Nhân viên Giao nhận / Kỹ thuật]
    F -->|Cập nhật trạng thái| G[Giao hàng Thành công / Lịch sử Bảo hành]

Vấn đề thực tiễn (Problem Statement)

Các cửa hàng máy tính vừa và nhỏ hiện đối mặt với nhiều rào cản vận hành:

  • Chi phí cố định cao: Chi phí thuê mặt bằng vật lý và nhân sự vận hành quầy chiếm từ 25% – 35% doanh thu.
  • Giới hạn không gian và thời gian: Cửa hàng truyền thống chỉ tiếp cận khách hàng trong bán kính hẹp (3–5 km) và giới hạn trong khung giờ hành chính (8–12 giờ/ngày).
  • Nút thắt quản lý danh mục linh kiện: Dữ liệu linh kiện máy tính (CPU, RAM, VGA, Mainboard) có thuộc tính phức tạp; việc quản lý thủ công dẫn đến sai lệch tồn kho lên tới 15%.
  • Quy trình xử lý đơn hàng phân mảnh: Thiếu sự kết nối tức thời giữa quản lý, nhân viên kho/giao nhận và bộ phận hỗ trợ bảo hành.

Mục tiêu của đồ án

  1. Xây dựng cổng thương mại điện tử chuyên dụng: Cung cấp giao diện trực quan cho phép người dùng tra cứu, so sánh thông số kỹ thuật và đặt mua máy tính 24/7.
  2. Chuẩn hóa quy trình đặt hàng và giỏ hàng: Tối ưu luồng checkout, giảm tỷ lệ bỏ rơi giỏ hàng bằng cơ chế lưu trữ phiên làm việc (Session Management) ổn định.
  3. Phân quyền và quản trị đa tác nhân: Thiết lập luồng làm việc khép kín giữa 4 nhóm tác nhân: Khách vãng lai, Thành viên, Nhân viên và Người quản lý.
  4. Tích hợp quản lý sau bán hàng: Hỗ trợ theo dõi lịch sử đơn hàng, phản hồi đánh giá và quy trình tiếp nhận thông tin bảo hành thiết bị.

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

  • Phương pháp tiếp cận: Sử dụng kiến trúc Client-Server 3 lớp kết hợp ngôn ngữ lập trình kịch bản máy chủ PHP (Hypertext Preprocessor) thuần và Hệ quản trị cơ sở dữ liệu quan hệ RDBMS (Relational Database Management System) MySQL. Hệ thống được phân tích - thiết kế bài bản thông qua Ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language).
  • Kết quả đo lường kỳ vọng:
    • Thời gian phản hồi trang danh mục (Catalog Latency): $< 1.2\text{s}$ trên môi trường thử nghiệm.
    • Tỷ lệ hoàn thành tác vụ đặt hàng (Task Completion Rate): Đạt $> 95%$ trong kiểm thử chấp nhận người dùng (UAT - User Acceptance Testing).
    • Độ chính xác đồng bộ trạng thái đơn hàng: $100%$ không bị ghi đè dữ liệu (Zero Race Condition) trên các phiên làm việc đồng thời.

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

  • Phạm vi: Nghiên cứu toàn bộ chu trình phát triển phần mềm từ khảo sát, phân tích nghiệp vụ, mô hình hóa Use Case, thiết kế cơ sở dữ liệu (CSDL), lập trình giao diện (Front-End), xử lý nghiệp vụ (Back-End) đến kiểm thử chức năng.
  • Giới hạn: Phiên bản hiện tại tập trung thanh toán mô phỏng (COD / chuyển khoản ngân hàng trực tiếp), chưa tích hợp cổng thanh toán trực tuyến của bên thứ ba (VNPay/Momo) và chưa phân tán CSDL lên môi trường đám mây (Cloud Multi-region).

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

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

Khảo sát các giải pháp bán lẻ máy tính hiện nay cho thấy sự phân hóa rõ rệt giữa giải pháp truyền thống, nền tảng mã nguồn mở có sẵn (CMS) và hệ thống phát triển chuyên biệt:

Tiêu chí so sánh Cửa hàng vật lý truyền thống WordPress / WooCommerce Hệ thống PHP/MySQL của đồ án
Chi phí đầu tư ban đầu Rất cao (Mặt bằng, kho bãi) Trung bình (Hosting, Plugin có phí) Rất thấp (Tối ưu hạ tầng máy chủ cá nhân/VPS)
Khả năng tùy biến nghiệp vụ Thấp, phụ thuộc con người Giới hạn bởi cấu trúc Plugin/Theme Tuyệt đối, điều chỉnh linh hoạt theo mô hình 4 tác nhân
Tài nguyên phần cứng yêu cầu Không áp dụng Cao (Dễ phình to database, tốn RAM) Rất nhẹ, thời gian thực thi mã nguồn nhanh
Tích hợp quy trình bảo hành Sổ sách / File Excel rời rạc Cần cài thêm plugin đắt tiền Tích hợp trực tiếp vào CSDL hệ thống
Khả năng mở rộng API Không Phụ thuộc REST API của CMS Chủ động, dễ viết Endpoint tùy biến

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

  • Must have (Bắt buộc phải có): Xác thực người dùng (Đăng ký/Đăng nhập), hiển thị danh mục máy tính, chi tiết cấu hình, giỏ hàng, đặt hàng, CRUD (Create, Read, Update, Delete) sản phẩm và quản lý người dùng phía Admin.
  • Should have (Nên có): Bộ lọc sản phẩm theo mức giá/loại máy, phân bổ đơn hàng tự động cho nhân viên, quản lý lịch sử bảo hành, đánh giá và nhận xét sản phẩm.
  • Could have (Có thể có): Thống kê doanh thu theo mốc thời gian thực, module quên mật khẩu qua email token.
  • Won't have (Chưa phát triển trong giai đoạn này): Tích hợp chatbot AI tư vấn cấu hình thời gian thực, thanh toán qua cổng thẻ quốc tế 3D-Secure.

Thiết kế hệ thống

Kiến trúc tổng thể và Technology Stack

Hệ thống tuân thủ mô hình 3 lớp phân tách rõ ràng giữa giao diện hiển thị, tầng xử lý logic và tầng lưu trữ dữ liệu:

  • Tầng Trình diễn (Presentation Tier): HTML5, CSS3 (Responsive Web Design), JavaScript (ES6+) thực hiện tương tác Document Object Model (DOM) và kiểm tra dữ liệu đầu vào (Client-side validation).
  • Tầng Xử lý Logic (Business Logic Tier): PHP 8.2 chạy trên nền Web Server Apache 2.4 (gói tích hợp XAMPP 8.2), chịu trách nhiệm xử lý thuật toán Session, điều hướng luồng dữ liệu và phân quyền người dùng.
  • Tầng Dữ liệu (Data Tier): MySQL 8.0 / MariaDB 10.4 quản lý toàn bộ thực thể quan hệ, hỗ trợ khóa ngoại (Foreign Key Constraints) và Engine InnoDB đảm bảo tính toàn vẹn dữ liệu (ACID).
+-----------------------------------------------------------------------+
|                    CLIENT BROWSER (HTML5 / CSS3 / JS)                 |
+-----------------------------------------------------------------------+
                                   | HTTP / HTTPS Request
                                   v
+-----------------------------------------------------------------------+
|         APACHE WEB SERVER 2.4  <--->  PHP ENGINE 8.2                  |
|  - Session Manager ($__SESSION)    - Authentication & Authorization   |
|  - Business Controllers            - Input Sanitation & Validation    |
+-----------------------------------------------------------------------+
                                   | SQL Queries (TCP/IP Port 3306)
                                   v
+-----------------------------------------------------------------------+
|                       MYSQL DATABASE 8.0 (InnoDB)                     |
|  [users] <-> [orders] <-> [order_details] <-> [products] <-> [category]|
+-----------------------------------------------------------------------+

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

Hệ thống chuẩn hóa ở dạng chuẩn 3NF (Third Normal Form) gồm các bảng chính:

  1. tbl_users (user_id [PK], username, password, fullname, email, phone, role_id, created_at)
  2. tbl_categories (category_id [PK], category_name, description, status)
  3. tbl_products (product_id [PK], category_id [FK], product_name, price, quantity_in_stock, cpu_specs, ram_specs, vga_specs, image_url, description)
  4. tbl_orders (order_id [PK], user_id [FK], staff_id [FK], total_amount, shipping_address, order_status, payment_method, order_date)
  5. tbl_order_details (detail_id [PK], order_id [FK], product_id [FK], quantity, unit_price)
  6. tbl_reviews (review_id [PK], product_id [FK], user_id [FK], rating_stars, comment_text, created_at)
  7. tbl_warranties (warranty_id [PK], order_id [FK], product_id [FK], issue_description, repair_cost, warranty_status, updated_at)
-- Trích đoạn mã nguồn tạo cấu trúc bảng Đơn hàng và Chi tiết đơn hàng
CREATE TABLE tbl_orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    staff_id INT DEFAULT NULL,
    total_amount DECIMAL(15, 2) NOT NULL,
    shipping_address VARCHAR(255) NOT NULL,
    order_status ENUM('PENDING', 'ASSIGNED', 'SHIPPING', 'COMPLETED', 'CANCELLED') DEFAULT 'PENDING',
    payment_method VARCHAR(50) NOT NULL,
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES tbl_users(user_id) ON DELETE CASCADE,
    FOREIGN KEY (staff_id) REFERENCES tbl_users(user_id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE tbl_order_details (
    detail_id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL CHECK (quantity > 0),
    unit_price DECIMAL(15, 2) NOT NULL,
    FOREIGN KEY (order_id) REFERENCES tbl_orders(order_id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES tbl_products(product_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế bảo mật (Security Considerations)

  • Chống tấn công SQL Injection: Chuyển đổi toàn bộ truy vấn trực tiếp sang cơ chế Prepared Statements thông qua PHP Data Objects (PDO) hoặc MySQLi Parameterized Queries.
  • Xác thực và phân quyền: Sử dụng hàm băm mật khẩu một chiều chuẩn công nghiệp password_hash($raw_pass, PASSWORD_BCRYPT) và kiểm tra quyền ($_SESSION['role_id']) trước khi cho phép truy cập khu vực Quản trị (admin/).
  • Bảo vệ phiên làm việc: Kích hoạt session_regenerate_id(true) ngay sau khi đăng nhập thành công để triệt tiêu lỗ hổng Session Fixation.
  • Lọc mã độc XSS (Cross-Site Scripting): Sử dụng htmlspecialchars($data, ENT_QUOTES, 'UTF-8') đối với mọi dữ liệu do người dùng nhập vào trước khi render ra HTML.

Methodology

Đề tài áp dụng mô hình phát triển phần mềm lặp có kiểm soát (Iterative-Waterfall Hybrid), kết hợp kỹ thuật phân tích UML hướng đối tượng:

[Khảo sát & Lập kế hoạch] (Tuần 1-2)
          |
          v
[Phân tích Use Case & Thiết kế CSDL] (Tuần 3-5)
          |
          v
[Lập trình Module Chức năng theo Sprint] (Tuần 6-11)
          |
          v
[Kiểm thử Tích hợp & Sửa lỗi] (Tuần 12-14)
          |
          v
[Nghiệm thu & Đóng gói Đồ án] (Tuần 15-16)

Đánh giá rủi ro và chiến lược giảm thiểu:

  • Rủi ro rò rỉ phiên làm việc: Giảm thiểu bằng cách cấu hình cookie_httponly = 1, session.gc_maxlifetime = 1440 (hết hạn sau 24 phút không hoạt động).
  • Rủi ro sai lệch dữ liệu khi mua hàng đồng thời (Race Condition): Sử dụng MySQL Database Transactions (START TRANSACTION, COMMIT, ROLLBACK) khi trừ số lượng tồn kho quantity_in_stock.

Implementation và kết quả

Development Process

1. Quản lý trạng thái giỏ hàng bằng PHP Session

Module giỏ hàng được thiết kế dưới dạng mảng kết hợp (Associative Array) lưu trữ trực tiếp trong biến siêu toàn cục $_SESSION['cart']. Thuật toán cho phép kiểm tra trùng lặp sản phẩm với độ phức tạp $O(1)$:

<?php
session_start();

// Thuật toán thêm sản phẩm vào giỏ hàng và cập nhật số lượng
function addToCart($productId, $quantity, $pdo) {
    $productId = intval($productId);
    $quantity = intval($quantity);
    
    if ($quantity <= 0) return false;

    // Kiểm tra số lượng tồn kho thực tế từ CSDL
    $stmt = $pdo->prepare("SELECT product_name, price, quantity_in_stock FROM tbl_products WHERE product_id = ?");
    $stmt->execute([$productId]);
    $product = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$product) return false;

    if (!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = [];
    }

    $currentQtyInCart = isset($_SESSION['cart'][$productId]) ? $_SESSION['cart'][$productId]['quantity'] : 0;
    $newTotalQty = $currentQtyInCart + $quantity;

    // Ràng buộc kiểm tra tồn kho
    if ($newTotalQty > $product['quantity_in_stock']) {
        return ['status' => 'error', 'message' => 'Vượt quá số lượng tồn kho khả dụng.'];
    }

    $_SESSION['cart'][$productId] = [
        'name'     => $product['product_name'],
        'price'    => $product['price'],
        'quantity' => $newTotalQty
    ];

    return ['status' => 'success', 'total_items' => count($_SESSION['cart'])];
}
?>

2. Xử lý giao dịch Đặt hàng an toàn (Transactional Checkout Execution)

Quá trình tạo đơn hàng đòi hỏi cập nhật song song hai bảng tbl_orderstbl_order_details, đồng thời trừ tồn kho. Thuật toán sử dụng PDO Transaction đảm bảo tính toàn vẹn tuyệt đối:

<?php
function processCheckout($userId, $shippingAddress, $paymentMethod, $pdo) {
    if (empty($_SESSION['cart'])) return false;

    try {
        $pdo->beginTransaction();

        $totalAmount = 0;
        foreach ($_SESSION['cart'] as $id => $item) {
            $totalAmount += $item['price'] * $item['quantity'];
        }

        // 1. Ghi nhận Đơn hàng chính
        $sqlOrder = "INSERT INTO tbl_orders (user_id, total_amount, shipping_address, payment_method, order_status) 
                     VALUES (?, ?, ?, ?, 'PENDING')";
        $stmtOrder = $pdo->prepare($sqlOrder);
        $stmtOrder->execute([$userId, $totalAmount, $shippingAddress, $paymentMethod]);
        $orderId = $pdo->lastInsertId();

        // 2. Ghi nhận Chi tiết đơn hàng và trừ tồn kho
        $sqlDetail = "INSERT INTO tbl_order_details (order_id, product_id, quantity, unit_price) VALUES (?, ?, ?, ?)";
        $sqlUpdateStock = "UPDATE tbl_products SET quantity_in_stock = quantity_in_stock - ? WHERE product_id = ? AND quantity_in_stock >= ?";
        
        $stmtDetail = $pdo->prepare($sqlDetail);
        $stmtUpdateStock = $pdo->prepare($sqlUpdateStock);

        foreach ($_SESSION['cart'] as $productId => $item) {
            $stmtDetail->execute([$orderId, $productId, $item['quantity'], $item['price']]);
            $stmtUpdateStock->execute([$item['quantity'], $productId, $item['quantity']]);
            
            if ($stmtUpdateStock->rowCount() === 0) {
                throw new Exception("Sản phẩm ID {$productId} không đủ số lượng trong kho.");
            }
        }

        // Hoàn tất giao dịch & xóa giỏ hàng
        $pdo->commit();
        unset($_SESSION['cart']);
        return $orderId;
    } catch (Exception $e) {
        $pdo->rollBack();
        error_log("Checkout Error: " . $e->getMessage());
        return false;
    }
}
?>

Testing và validation

Kiểm thử chức năng và hiệu năng (Functional & Performance Metrics)

Hệ thống trải qua 45 kịch bản kiểm thử (Test Cases) bao phủ toàn bộ 5 gói Use Case chính:

  • Độ bao phủ kiểm thử (Test Coverage): Đạt 93.3% kịch bản thành công (42/45 passed, 3 minor UI defects đã khắc phục).
  • Kiểm thử tải (Load Testing): Sử dụng công cụ đo lường tải với 200 người dùng ảo truy cập đồng thời (Concurrent Virtual Users):
    • Tần suất truy vấn: 1,200 Requests/phút.
    • Thời gian phản hồi trung bình (Average Response Time): $185\text{ ms}$.
    • Tỷ lệ lỗi HTTP 5xx: $0.00%$.
    • Tải sử dụng CPU máy chủ (Server CPU Load): Đạt mức đỉnh $42%$.
  • Đánh giá trải nghiệm người dùng (UAT): Khảo sát 30 người dùng thử nghiệm theo thang đo SUS (System Usability Scale) đạt điểm số 84.5/100 (xếp loại Excellent).
+--------------------------------------------------------------------------+
|                       BẢNG TỔNG HỢP KIỂM THỬ HỆ THỐNG                    |
+----------------------+------------+----------+-----------+---------------+
| Module Nghiệp vụ     | Test Cases | Đạt (Pass)| Lỗi (Fail)| Tỷ lệ hoàn hảo|
+----------------------+------------+----------+-----------+---------------+
| Xác thực / Phân quyền|     10     |    10    |     0     |    100.0%     |
| Danh mục & Tìm kiếm  |      8     |     8    |     0     |    100.0%     |
| Giỏ hàng & Checkout  |     12     |    11    |     1*    |     91.7%     |
| Phân bổ & Giao hàng  |      8     |      7   |     1*    |     87.5%     |
| Đánh giá & Thống kê  |      7     |      6   |     1*    |     85.7%     |
+----------------------+------------+----------+-----------+---------------+
| Tổng cộng            |     45     |     42   |     3     |     93.3%     |
+----------------------+------------+----------+-----------+---------------+
(*Ghi chú: Toàn bộ 3 lỗi nhỏ về hiển thị giao diện đã được fix hoàn chỉnh trong bản final)

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

pie title Tỷ lệ tính năng hoàn thiện so với kế hoạch ban đầu
    "Đã hoàn thành xuất sắc" : 88
    "Đã hoàn thành cơ bản" : 12
    "Chưa hoàn thành" : 0
  1. Giao diện người dùng (Front-End UI): Xây dựng đồng bộ các trang: Danh sách sản phẩm dạng lưới (Grid View), Trang chi tiết cấu hình máy tính, Giỏ hàng động, Lịch sử mua hàng cá nhân và Module đánh giá sao.
  2. Khu vực Quản trị (Admin Panel): Cung cấp Dashboard trực quan quản lý danh mục đa cấp, kiểm soát số lượng linh kiện tồn kho, quản lý danh sách thành viên và bảng thống kê doanh thu đa biến.
  3. Chu trình phân việc cho nhân viên: Tạo kênh giao tiếp trạng thái giữa Quản lý -> Nhân viên giao hàng -> Xác nhận đơn hàng thành công, giảm thiểu $60%$ thời gian xử lý thủ công.

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

Đổi mới kỹ thuật (Technical Innovations)

  • Cơ chế giỏ hàng Session phi trạng thái hóa (Stateless Session Cart): Không lưu trữ rác vào CSDL khi người dùng chưa xác nhận mua hàng, giúp tiết kiệm $45%$ dung lượng I/O Disk so với cách thiết kế CSDL giỏ hàng tạm thông thường.
  • Quy trình phân quyền 4 tác nhân khép kín: Phân định rõ ranh giới xử lý giữa Khách hàng (tạo đơn) $\rightarrow$ Quản lý (duyệt & gán đơn) $\rightarrow$ Nhân viên (giao hàng & đổi trạng thái) $\rightarrow$ Hệ thống (cập nhật doanh thu & lịch sử bảo hành).
+--------------------------------------------------------------------------+
|                     SO SÁNH HIỆU QUẢ VỚI CÁC GIẢI PHÁP KHÁC              |
+----------------------+--------------------+---------------+--------------+
| Chỉ số Hiệu năng     | Giải pháp truyền   | WooCommerce / | Hệ thống đồ án|
|                      | thống (Excel/Sổ)   | WordPress     | PHP thuần    |
+----------------------+--------------------+---------------+--------------+
| Thời gian tạo đơn    | 5 - 10 phút        | 45 - 60 giây  | 15 - 25 giây |
| Tải RAM máy chủ cơ sở| 0 MB               | 250 - 512 MB  | < 40 MB      |
| Độ phức tạp mã nguồn | Không có           | Rất cồng kềnh | Tối giản, dễ |
|                      |                    | (> 50,000 files)| quản lý     |
| Tốc độ truy vấn DB   | Thủ công           | Chậm (EAV DB) | Rất nhanh (3NF)|
+----------------------+--------------------+---------------+--------------+

Đóng góp thực tiễn

  • Về mặt đào tạo: Cung cấp bộ tài liệu hoàn chỉnh, chuẩn hóa từ biểu đồ Use Case, Biểu đồ hoạt động (Activity Diagram), Biểu đồ tuần tự (Sequence Diagram) đến thiết kế CSDL chi tiết cho sinh viên khóa sau tham khảo.
  • Về mặt ứng dụng thương mại: Cung cấp bộ mã nguồn website bán máy tính nhẹ, hoạt động ổn định trên các gói Hosting cấu hình thấp, sẵn sàng chuyển giao cho các hộ kinh doanh cá thể.

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

Kịch bản ứng dụng trong đời sống (Use Cases)

  • Cửa hàng máy tính & linh kiện PC Gaming: Triển khai làm cổng bán hàng trực tuyến, trưng bày chi tiết thông số linh kiện (CPU xung nhịp, Bus RAM, dung lượng VRAM) giúp game thủ tự chọn cấu hình.
  • Trung tâm sửa chữa & kinh doanh Laptop cũ: Áp dụng hệ thống quản lý lịch sử bảo hành thiết bị và ghi nhận đơn hàng sửa chữa kèm hóa đơn minh bạch.

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

  • Hạ tầng phần cứng tối thiểu:
    • CPU: 1 Core Virtual CPU (vCPU) $2.0\text{ GHz}$.
    • Bộ nhớ trong (RAM): Tối thiểu $1\text{ GB}$ (Khuyến nghị $2\text{ GB}$).
    • Ổ cứng lưu trữ: $10\text{ GB}$ SSD khả dụng.
  • Môi trường phần mềm máy chủ:
    • Hệ điều hành: Linux (Ubuntu 22.04 LTS / CentOS 7+) hoặc Windows Server.
    • Web Server: Apache 2.4.x hoặc Nginx 1.20.x kết hợp PHP-FPM.
    • Ngôn ngữ thực thi: PHP 8.0 trở lên (Cần kích hoạt các Extension: pdo_mysql, mbstring, session, openssl).
    • Cơ sở dữ liệu: MySQL 8.0.x hoặc MariaDB 10.4.x.
# Hướng dẫn triển khai nhanh trên môi trường Linux Ubuntu
sudo apt update && sudo apt install -y apache2 php libapache2-mod-php php-mysql mysql-server git
git clone https://github.com/project/computer-ecommerce.git /var/www/html/computercart
mysql -u root -p -e "CREATE DATABASE db_computer_shop; USE db_computer_shop; SOURCE /var/www/html/computercart/database.sql;"
sudo chown -R www-data:www-data /var/www/html/computercart/
sudo chmod -R 755 /var/www/html/computercart/

Phân tích chi phí - lợi ích và ROI (Return on Investment)

  • Chi phí triển khai giải pháp số: Chi phí tên miền (.vn hoặc .com) và Cloud VPS khoảng $1,500,000\text{ VNĐ}$ – $2,500,000\text{ VNĐ}$/năm.
  • Lợi ích kinh tế:
    • Tiết kiệm $100%$ chi phí in ấn hóa đơn giấy và danh mục giới thiệu sản phẩm.
    • Tăng $35%$ tỷ lệ chuyển đổi khách hàng tiềm năng ngoài giờ làm việc.
    • Thời gian hoàn vốn đầu tư (Payback Period) ước tính chỉ từ 1.5 đến 3 tháng sau khi đưa vào vận hành thực tế.

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

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

  • Cơ chế CSDL tập trung: Vẫn sử dụng một máy chủ CSDL đơn lẻ (Single Instance), chưa cấu hình Master-Slave Replication cho môi trường chịu tải lớn.
  • Cổng thanh toán tự động: Chưa kết nối API Webhook của các bên trung gian thanh toán (Payment Gateways) như VNPAY, ZaloPay để tự động hóa đối soát giao dịch ngân hàng.
  • Kiến trúc Server-Side Rendering (SSR) truyền thống: Mã PHP lồng ghép với HTML khiến việc phát triển ứng dụng di động (Mobile App) trong tương lai cần phải tái cấu trúc lại tầng API.

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

  1. Tái cấu trúc sang mô hình Headless E-commerce: Xây dựng hệ thống RESTful API chuẩn OpenAPI 3.0 bằng PHP Framework (Laravel/Symfony), tách biệt hoàn toàn với Front-End viết bằng ReactJS hoặc Vue.js.
  2. Tích hợp cổng thanh toán trực tuyến & Đơn vị vận chuyển: Đấu nối API VNPAY/MoMo và hệ thống giao hàng tự động (Giao Hàng Nhanh - GHN, Giao Hàng Tiết Kiệm - GHTK).
  3. Ứng dụng Trí tuệ nhân tạo (AI Recommendation): Triển khai thuật toán lọc cộng tác (Collaborative Filtering) để gợi ý linh kiện máy tính tương thích dựa trên thói quen tìm kiếm của người dùng.
  4. Bộ nhớ đệm hiệu năng cao: Tích hợp Redis In-memory Database để cache kết quả truy vấn danh mục sản phẩm và quản lý Session tập trung.

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

  • Sinh viên ngành CNTT & Phần mềm: Cung cấp tài liệu tham khảo thực tế về quy trình phát triển website thương mại điện tử bằng PHP thuần, phương pháp vẽ biểu đồ phân tích hệ thống UML (Use Case, Sequence, Activity Diagram) đạt chuẩn học thuật.
  • Lập trình viên Web (Junior Developers): Nắm vững các mô thức thiết kế CSDL quan hệ 3NF, kỹ thuật thao tác Session, xử lý Transaction an toàn trong giao dịch mua bán và phương pháp bảo mật chống SQL Injection/XSS.
  • Chủ doanh nghiệp & Hộ kinh doanh máy tính: Sở hữu một mô hình giải pháp phần mềm tinh gọn, chi phí vận hành cực thấp, giúp chuyển đổi số cửa hàng bán lẻ nhanh chóng.
  • Nhà nghiên cứu hệ thống thông tin: Cung cấp số liệu kiểm thử thực tế về hiệu năng tải và sự tương tác giữa 4 nhóm tác nhân trong chuỗi cung ứng thiết bị công nghệ.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai website lên môi trường Internet là gì?

Hệ thống chỉ yêu cầu máy chủ web hỗ trợ PHP từ phiên bản 7.4 trở lên (khuyến nghị PHP 8.2), hệ quản trị CSDL MySQL từ 5.7 trở lên hoặc MariaDB 10.3+. Mã nguồn có thể chạy mượt mà trên các gói Shared Hosting phổ thông giá rẻ hoặc Cloud VPS cấu hình từ 1 Core CPU và 1GB RAM.

2. Hệ thống có bị quá tải khi lượng truy cập tăng đột biến (Flash Sale) không?

Trong các bài kiểm thử chịu tải, hệ thống đáp ứng ổn định 200 người dùng thao tác đồng thời (tương đương hơn 1,000 lượt xem trang mỗi phút) với mức tiêu hao CPU dưới $45%$. Khi mở rộng kinh doanh quy mô lớn hơn, hệ thống có thể dễ dàng nâng cấp lên kiến trúc Load Balancer kết hợp Redis Cache mà không cần viết lại toàn bộ mã nguồn.

3. Làm thế nào để tích hợp thêm các cổng thanh toán như Momo, VNPay?

Kiến trúc mã nguồn được thiết kế phân tách module. Để tích hợp cổng thanh toán, lập trình viên chỉ cần bổ sung hàm xử lý IPN (Instant Payment Notification) trong Controller đặt hàng, chuyển hướng người dùng sang URL thanh toán của đối tác và hứng mã phản hồi (Response Code) trả về từ cổng để cập nhật trạng thái đơn hàng trong tbl_orders.

4. Chi phí bảo trì và vận hành hệ thống hàng tháng là bao nhiêu?

Do mã nguồn viết bằng PHP thuần không bị phụ thuộc vào các plugin có phí định kỳ, chi phí duy trì hệ thống hoàn toàn dựa vào chi phí hạ tầng: khoảng $100,000\text{ VNĐ}$ – $250,000\text{ VNĐ}$/tháng cho Hosting/VPS chất lượng cao tại Việt Nam.

5. Website có cơ chế nào để bảo vệ thông tin mật khẩu người dùng?

Mật khẩu người dùng được mã hóa bằng thuật toán băm Bcrypt thông qua hàm password_hash() với chi phí băm (cost factor) mặc định an toàn. Ngay cả khi CSDL bị xâm nhập, kẻ tấn công cũng không thể dịch ngược để lấy được mật khẩu gốc dạng Plaintext.


Kết luận

Đồ án "Xây dựng website bán máy tính trực tuyến" của sinh viên Nguyễn Văn Tùng đã giải quyết xuất sắc bài toán số hóa quy trình kinh doanh máy tính và thiết bị CNTT. Bằng việc áp dụng chặt chẽ phương pháp luận phân tích thiết kế hệ thống qua biểu đồ UML, kết hợp bộ công nghệ kinh điển nhưng tối ưu vượt trội PHP & MySQL, đồ án đã mang đến một giải pháp thương mại điện tử hoàn chỉnh, bảo mật và đạt hiệu năng cao.

Không chỉ dừng lại ở một công trình học thuật, hệ thống mang giá trị thực tiễn lớn, chứng minh tính khả thi trong việc ứng dụng công nghệ thông tin vào tối ưu hóa chi phí vận hành cho các doanh nghiệp bán lẻ máy tính. Đây là nền tảng vững chắc để tiếp tục mở rộng thành các giải pháp thương mại điện tử quy mô lớn hơn trong tương lai.