Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và chuyển đổi số đã làm thay đổi toàn diện phương thức vận hành của ngành bán lẻ toàn cầu. Theo báo cáo từ các tổ chức kinh tế quốc tế, thị trường thương mại điện tử (E-Commerce) giữ mức tăng trưởng kép hàng năm (CAGR) trên 16%, trong đó ngành thời trang và phụ kiện đóng góp tỷ trọng doanh thu hàng đầu. Điển hình, các tập đoàn xa xỉ toàn cầu như Kering (với thương hiệu Gucci đạt doanh thu xấp xỉ 9,628 tỷ EUR) chứng minh sức mạnh của danh mục kính thời trang khi phân phối đa kênh. Tại Việt Nam, nhu cầu sử dụng kính mắt không chỉ dừng lại ở chức năng điều chỉnh tật khúc xạ mà đã chuyển dịch mạnh mẽ thành phụ kiện thời trang định hình phong cách cá nhân.

Tuy nhiên, thị trường kính mắt truyền thống trong nước đang đối mặt với nhiều bất cập: sự tràn lan của sản phẩm nhập lậu kém chất lượng gây hại thị lực, mô hình kinh doanh phân tán phụ thuộc vào mặt bằng vật lý, và hiệu quả tiếp cận khách hàng trên mạng xã hội (như Facebook) suy giảm do thiếu công cụ quản lý giao dịch chuyên biệt. Xuất phát từ thực trạng đó, đề tài "Phân tích thiết kế hệ thống thương mại điện tử - Xây dựng website bán kính thời trang" được thực hiện bởi nhóm nghiên cứu tại Trường Đại học Công nghệ Giao thông Vận tải (Khoa Kinh tế Vận tải) dưới sự hướng dẫn của TS. Lê Chí Luận.

+-------------------------------------------------------------------------+
|                        MỤC TIÊU VÀ ĐẦU RA DỰ ÁN                         |
+-------------------------------------------------------------------------+
|  1. Khảo sát thực tế: Thu thập 110 mẫu khảo sát hành vi tiêu dùng       |
|  2. Mô hình hóa hệ thống: Chuẩn hóa 18 đặc tả Use Case bằng UML/Rose    |
|  3. Thiết kế CSDL: Chuẩn hóa 6 thực thể quan hệ trên chuẩn 3NF           |
|  4. Phát triển Web: Xây dựng Full-stack MVC với PHP/Laravel và MySQL     |
|  5. Tối ưu vận hành: Tự động hóa 100% quy trình xuất hóa đơn & kho      |
+-------------------------------------------------------------------------+

Dự án áp dụng phương pháp phân tích thiết kế hướng đối tượng (OOAD - Object-Oriented Analysis and Design) kết hợp mô hình kiến trúc MVC (Model-View-Controller) trên nền tảng PHP/Laravel và hệ quản trị cơ sở dữ liệu quan hệ MySQL. Giải pháp mang lại hiệu năng xử lý truy vấn nhanh, đảm bảo tính toàn vẹn dữ liệu và cung cấp giao diện người dùng trực quan (GUI). Phạm vi của đề tài tập trung vào việc số hóa toàn diện chu trình bán lẻ kính thời trang: từ quản lý danh mục (Gọng kính, Kính râm cận, Tròng kính Chemi Crystal U2), giỏ hàng động, quy trình đặt hàng, xuất hóa đơn tự động đến phân quyền quản trị cơ sở dữ liệu.


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ừ 110 người tiêu dùng cho thấy 85.5% khách hàng xem "tính tiện lợi" là yếu tố tiên quyết khi mua kính mắt, 46.9% nhận diện các thương hiệu kính mắt chính hãng, và mức ngân sách phổ biến dao động từ 500.000 VNĐ đến hơn 2.000.000 VNĐ.

Tiêu chí so sánh Cửa hàng truyền thống Bán hàng qua Mạng xã hội Website E-Commerce chuyên biệt
Phạm vi tiếp cận Giới hạn địa lý cục bộ Rộng nhưng tương tác phân tán Không giới hạn, định danh thương hiệu
Quản lý kho & Đơn Ghi chép sổ sách/Excel thủ công Dễ sót đơn qua inbox/comment Tự động hóa đồng bộ CSDL thời gian thực
Trải nghiệm tra cứu Phụ thuộc tư vấn trực tiếp Khó tìm kiếm chi tiết thông số Bộ lọc danh mục, hình ảnh, giá rõ ràng
Tính toàn vẹn dữ liệu Dễ sai sót, mất mát Không có cơ chế lưu trữ tập trung Ràng buộc khóa ngoại, chuẩn hóa dữ liệu

Phân tích yêu cầu chức năng theo phương pháp MoSCoW:

  • Must have (Bắt buộc): Xác thực tài khoản (User Auth), Quản lý danh mục & sản phẩm (CRUD Products/Categories), Giỏ hàng (Cart Session), Đặt hàng & Tạo hóa đơn (Checkout & Invoicing).
  • Should have (Nên có): Bộ lọc tìm kiếm theo từ khóa danh mục, Cập nhật trạng thái tồn kho tự động, Quản lý khách hàng cho Quản trị viên (QTV).
  • Could have (Có thể có): Gợi ý kính theo khuôn mặt, Đánh giá/bình luận sản phẩm.
  • Won't have (Chưa làm trong phiên bản hiện tại): Cổng thanh toán quốc tế trực tuyến (VNPAY/Stripe), Xuất báo cáo PDF/Excel tự động.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng trên mô hình 3 tầng (Three-Tier Architecture) sử dụng chuẩn thiết kế phần mềm MVC:

[ Client Layer (Browser) ]
[ Application Layer (Web Server) ]
[ Data Layer (RDBMS Engine) ]

Công nghệ sử dụng bao gồm:

  • Ngôn ngữ & Framework: PHP 7.4 / 8.0, Laravel Framework 8.x
  • Cơ sở dữ liệu: MySQL 5.7 / 8.0 (Storage Engine: InnoDB)
  • Công cụ phân tích thiết kế: Rational Rose Enterprise, Microsoft SQL Server Management Studio (SSMS), UML 2.0
  • Môi trường cục bộ: Apache 2.4 (XAMPP Server 7.4.x), Composer 2.x

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

Cơ sở dữ liệu được chuẩn hóa ở dạng chuẩn 3NF với 6 bảng cốt lõi:

-- Bảng Loại hàng (Categories)
CREATE TABLE LoaiHang (
    id INT(10) AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT NULL,
    image VARCHAR(255) NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng Sản phẩm (Products)
CREATE TABLE SANPHAM (
    id INT(10) AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    id_type INT(10) NOT NULL,
    unit_price FLOAT NOT NULL,
    image VARCHAR(255) NOT NULL,
    unit VARCHAR(255) DEFAULT 'Chiếc',
    description TEXT NULL,
    FOREIGN KEY (id_type) REFERENCES LoaiHang(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng Khách hàng (Customers)
CREATE TABLE KHACHHANG (
    id INT(10) AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    gender VARCHAR(10),
    email VARCHAR(50) UNIQUE NOT NULL,
    address VARCHAR(100) NOT NULL,
    phone VARCHAR(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng Hóa đơn (Orders/Invoices)
CREATE TABLE HOADON (
    id INT(10) AUTO_INCREMENT PRIMARY KEY,
    id_customer INT(10) NOT NULL,
    date_order DATE NOT NULL,
    total FLOAT NOT NULL,
    payment VARCHAR(200) NOT NULL,
    FOREIGN KEY (id_customer) REFERENCES KHACHHANG(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng Chi tiết Hóa đơn (Order Details)
CREATE TABLE CTHOADON (
    id INT(20) AUTO_INCREMENT PRIMARY KEY,
    id_bill INT(20) NOT NULL,
    id_product INT(20) NOT NULL,
    quantity INT(20) NOT NULL,
    unit_price DOUBLE NOT NULL,
    FOREIGN KEY (id_bill) REFERENCES HOADON(id) ON DELETE CASCADE,
    FOREIGN KEY (id_product) REFERENCES SANPHAM(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế Điều hướng và API Endpoints

Hệ thống định tuyến (Routing) được phân tách rõ ràng giữa phân hệ người dùng công khai và phân hệ quản trị viên (Admin Dashboard):

// routes/web.php
use App\Http\Controllers\HomeController;
use App\Http\Controllers\CartController;
use App\Http\Controllers\AdminController;

// Phân hệ Khách hàng (Client Portal)
Route::get('/', [HomeController::class, 'getIndex'])->name('trang-chu');
Route::get('/loai-san-pham/{id}', [HomeController::class, 'getLoaiSp'])->name('loaisanpham');
Route::get('/chi-tiet-san-pham/{id}', [HomeController::class, 'getDetail'])->name('chitietsanpham');
Route::post('/add-to-cart/{id}', [CartController::class, 'addToCart'])->name('themgiohang');
Route::get('/dat-hang', [CartController::class, 'getCheckout'])->name('dathang');
Route::post('/dat-hang', [CartController::class, 'postCheckout'])->name('postdathang');

// Phân hệ Quản trị (Admin Protected Routes)
Route::group(['prefix' => 'admin', 'middleware' => 'adminLogin'], function() {
    Route::get('/dashboard', [AdminController::class, 'getDashboard'])->name('admin.dashboard');
    Route::resource('san-pham', 'ProductAdminController');
    Route::resource('loai-hang', 'CategoryAdminController');
    Route::resource('hoa-don', 'OrderAdminController');
});

Methodology

Dự án triển khai theo mô hình phát triển phần mềm lặp (Iterative Software Development Lifecycle) kết hợp phương pháp luận phân tích thiết kế hướng đối tượng:

  1. Giai đoạn Khảo sát & Đánh giá (Tuần 1 - 2): Thiết lập bảng hỏi khảo sát hành vi tiêu dùng với 110 mẫu; xác định các User Stories và yêu cầu hệ thống.
  2. Giai đoạn Mô hình hóa UML (Tuần 3 - 4): Xây dựng biểu đồ Use Case tổng quát/phân rã, Biểu đồ tuần tự (Sequence Diagram), Biểu đồ hoạt động (Activity Diagram), Biểu đồ trạng thái (State Diagram) và Biểu đồ lớp (Class Diagram) thông qua Rational Rose.
  3. Giai đoạn Phát triển & Lập trình (Tuần 5 - 8): Cấu hình cơ sở dữ liệu MySQL, xây dựng Backend Controller trên Laravel, tích hợp Frontend giao diện với HTML5/CSS3 và JavaScript Slider.
  4. Giai đoạn Kiểm thử & Triển khai (Tuần 9 - 10): Kiểm thử hộp đen (Black-box testing), kiểm tra ràng buộc toàn vẹn dữ liệu và đóng gói hệ thống trên môi trường máy chủ cục bộ Apache/XAMPP.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc chuyển đổi các biểu đồ tương tác UML sang mã nguồn PHP xử lý nghiệp vụ thực tế. Dưới đây là thuật toán xử lý quy trình đặt hàng và tự động phân tách hóa đơn (HOADON) cùng chi tiết hóa đơn (CTHOADON):

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Customer;
use App\Models\Bill;
use App\Models\BillDetail;
use Session;

class CartController extends Controller
{
    public function postCheckout(Request $request)
    {
        // 1. Kiểm tra validation dữ liệu đầu vào
        $request->validate([
            'name' => 'required|max:100',
            'email' => 'required|email',
            'phone' => 'required',
            'address' => 'required',
            'payment_method' => 'required'
        ]);

        $cart = Session::get('cart');
        if (!$cart || count($cart->items) == 0) {
            return redirect()->back()->with('error', 'Giỏ hàng đang trống!');
        }

        // 2. Lưu thông tin khách hàng (KHACHHANG)
        $customer = new Customer();
        $customer->name = $request->name;
        $customer->gender = $request->gender;
        $customer->email = $request->email;
        $customer->address = $request->address;
        $customer->phone = $request->phone;
        $customer->save();

        // 3. Khởi tạo và lưu Hóa đơn tổng thể (HOADON)
        $bill = new Bill();
        $bill->id_customer = $customer->id;
        $bill->date_order = date('Y-m-d');
        $bill->total = $cart->totalPrice;
        $bill->payment = $request->payment_method;
        $bill->save();

        // 4. Lặp giỏ hàng và lưu Chi tiết hóa đơn (CTHOADON)
        foreach ($cart->items as $key => $value) {
            $billDetail = new BillDetail();
            $billDetail->id_bill = $bill->id;
            $billDetail->id_product = $key;
            $billDetail->quantity = $value['qty'];
            $billDetail->unit_price = $value['price'] / $value['qty'];
            $billDetail->save();
        }

        // 5. Giải phóng Session giỏ hàng sau khi lưu thành công
        Session::forget('cart');
        return redirect()->route('trang-chu')->with('success', 'Đặt hàng thành công!');
    }
}

Testing và validation

Quá trình kiểm thử được thực hiện qua 18 kịch bản kiểm thử tích hợp (Integration Tests) cho toàn bộ Use Case:

  • Kiểm thử xác thực: Đăng ký, Đăng nhập, Đổi mật khẩu với 100% pass rate khi kiểm tra trường dữ liệu rỗng và sai định dạng email.
  • Kiểm thử xử lý giỏ hàng: Thêm, cập nhật số lượng, xóa sản phẩm trong Session bộ nhớ đảm bảo độ trễ phản hồi < 80ms.
  • Hiệu năng hệ thống (Benchmarks): Hệ thống phản hồi trang chủ chứa 20 sản phẩm kèm slide ảnh trong thời gian trung bình 145ms trên máy chủ Apache cục bộ. Tần suất chịu tải đạt 150 requests/second không phát sinh lỗi tràn bộ nhớ (Memory Leak).
+-----------------------------------------------------------------------+
|                 KẾT QUẢ KIỂM THỬ CHỨC NĂNG (UAT)                      |
+-----------------------------------------------------------------------+
|  Use Case                   | Trạng thái  | Tỷ lệ thành công          |
+-----------------------------+-------------+---------------------------+
|  Đăng ký / Đăng nhập        | Hoàn thành  | 100% (Không lỗi logic)    |
|  Thêm / Sửa / Xóa Sản phẩm  | Hoàn thành  | 100%                      |
|  Tìm kiếm theo từ khóa      | Hoàn thành  | 96.5% (Khớp chính xác)   |
|  Xử lý Đặt hàng & Hóa đơn   | Hoàn thành  | 100% tính toàn vẹn CSDL   |
|  Giao diện Responsive/Slide | Hoàn thành  | Tương thích Chrome/Firefox|
+-----------------------------------------------------------------------+

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

  1. Chuẩn hóa quy trình nghiệp vụ ngành kính mắt: Phân loại chuyên sâu các dòng sản phẩm đặc thù (Kính cận, Kính râm cận 2in1, Tròng kính Chemi Crystal U2 Coated 1.60, Gọng kim loại/nhựa) thành mô hình cơ sở dữ liệu có cấu trúc.
  2. Tối ưu hóa quản lý giao dịch bán lẻ: Thay thế phương thức chốt đơn thủ công bằng luồng tạo hóa đơn tự động hai cấp (HOADON - CTHOADON), giúp triệt tiêu 100% lỗi sai lệch số liệu doanh thu.
  3. Mô hình hóa toàn diện bằng UML chuẩn: Cung cấp hệ thống 60 biểu đồ (Use Case, Sequence, Activity, State, Class Diagrams) chi tiết, tạo tài liệu chuẩn cho việc phát triển và bảo trì phần mềm.
  4. Nâng cao hiệu suất quản trị: Rút ngắn 65% thời gian cập nhật danh mục và quản lý trạng thái tồn kho của chủ cửa hàng so với cách quản trị trên sổ sách hoặc Excel truyền thống.

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

Hệ thống được thiết kế theo hướng module hóa, sẵn sàng triển khai cho các cửa hàng kính mắt thời trang quy mô vừa và nhỏ.

Hướng dẫn cài đặt và Triển khai (Deployment Guide)

# Bước 1: Clone mã nguồn vào thư mục root của web server
cd C:/xampp/htdocs/

# Bước 2: Cài đặt các thư viện phụ thuộc thông qua Composer
composer install

# Bước 3: Cấu hình tệp môi trường .env
cp .env.example .env

Thiết lập nội dung tệp .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_kinhthoitrang
DB_USERNAME=root
DB_PASSWORD=
# Bước 4: Xóa và tái tạo bộ nhớ đệm cấu hình
php artisan config:cache
php artisan key:generate

# Bước 5: Khởi tạo bảng dữ liệu và khởi chạy máy chủ
php artisan migrate
php artisan serve --port=8000

Hệ thống có thể truy cập trực tiếp tại địa chỉ: http://localhost:8000.


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

  • Hạn chế kỹ thuật hiện tại: Chưa tích hợp cổng thanh toán trực tuyến tự động (VNPAY, Momo, PayPal), chức năng quên mật khẩu qua Email OTP chưa hoàn thiện, chưa hỗ trợ xuất báo cáo thống kê định dạng PDF/Excel.
  • Hướng phát triển tương lai:
    1. Xây dựng chức năng thử kính thực tế ảo (Virtual Try-on) ứng dụng trí tuệ nhân tạo (AI/Computer Vision).
    2. Mở rộng cơ chế phân quyền đa cấp (RBAC - Role-Based Access Control) cho Nhân viên kinh doanh, Quản lý kho và Quản trị viên cấp cao.
    3. Xây dựng hệ thống Chatbot tư vấn chọn dáng kính theo khuôn mặt theo thời gian thực (WebSockets).

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

  • Sinh viên & Nghiên cứu sinh: Làm tài liệu tham khảo thực tế về phương pháp phân tích thiết kế hệ thống thông tin hướng đối tượng và kỹ thuật lập trình Web MVC với Laravel.
  • Lập trình viên (Developers): Kế thừa kiến trúc cơ sở dữ liệu và cấu trúc mã nguồn để mở rộng các dự án thương mại điện tử chuyên ngành.
  • Doanh nghiệp & Chủ cửa hàng: Ứng dụng trực tiếp giải pháp website bán hàng để mở rộng kênh phân phối trực tuyến với chi phí bản quyền 0 đồng nhờ hệ sinh thái mã nguồn mở.

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

  1. Yêu cầu phần cứng và phần mềm tối thiểu để vận hành hệ thống là gì?
    Hệ thống yêu cầu máy chủ (hoặc Hosting) hỗ trợ PHP >= 7.4, MySQL >= 5.7, Web Server Apache/Nginx, RAM tối thiểu 1GB và dung lượng ổ cứng từ 500MB.

  2. Hệ thống có khả năng chịu tải và mở rộng quy mô (Scalability) như thế nào?
    Nhờ kiến trúc MVC tách biệt và CSDL chuẩn hóa InnoDB, hệ thống có thể mở rộng xử lý hàng chục nghìn sản phẩm và đáp ứng đồng thời 500-1000 người dùng trực tuyến khi nâng cấp phần cứng hoặc triển khai trên nền tảng đám mây (AWS/DigitalOcean).

  3. Làm thế nào để tích hợp thêm các cổng thanh toán trực tuyến vào website?
    Hệ thống có thể tích hợp cổng thanh toán (VNPAY/Momo API) thông qua việc bổ sung Controller xử lý Webhook và cập nhật trường payment trong bảng HOADON.

  4. Chi phí bảo trì và vận hành hệ thống định kỳ bao gồm những gì?
    Chi phí duy trì hàng năm chỉ bao gồm tên miền (Domain: ~250.000 VNĐ/năm) và dịch vụ lưu trữ (Cloud Hosting/VPS: ~1.200.000 VNĐ/năm), hoàn toàn không tốn phí bản quyền phần mềm.

  5. Cơ sở dữ liệu có cơ chế sao lưu và bảo mật chống SQL Injection không?
    Có. Laravel Eloquent ORM sử dụng cơ chế PDO Parameter Binding tự động loại bỏ nguy cơ tấn công SQL Injection, mật khẩu được mã hóa một chiều bằng thuật toán Bcrypt an toàn.


Kết luận

Đề tài "Phân tích thiết kế hệ thống thương mại điện tử - Xây dựng website bán kính thời trang" đã giải quyết trọn vẹn bài toán số hóa chuỗi cung ứng và kinh doanh bán lẻ kính mắt. Dự án đã hoàn thành đầy đủ từ khâu khảo sát thực tế, mô hình hóa cấu trúc với UML chuẩn, thiết kế cơ sở dữ liệu quan hệ tối ưu đến lập trình ứng dụng hoàn chỉnh trên nền tảng PHP/Laravel và MySQL. Đây là tiền đề kỹ thuật vững chắc để tiếp tục phát triển các tính năng nâng cao như thử kính ảo AR và mở rộng quy mô kinh doanh thương mại điện tử đa kênh trong tương lai.