Giới thiệu dự án

Sự bùng nổ của thương mại điện tử (E-Commerce) tại Việt Nam và toàn cầu đã thay đổi căn bản hành vi tiêu dùng từ phương thức mua sắm truyền thống sang giao dịch kỹ thuật số. Theo các báo cáo thị trường bán lẻ, tỷ trọng doanh số bán lẻ trực tuyến ngành hàng thời trang may mặc tăng trưởng hơn 25% mỗi năm, đặt ra yêu cầu cấp thiết cho các cửa hàng vừa và nhỏ phải nhanh chóng chuyển đổi số. Đề tài khóa luận tốt nghiệp "Xây dựng website quản lý bán quần áo cho cửa hàng FM CLOSET" do sinh viên Đinh Thị Quỳnh (Ngành Kỹ thuật phần mềm, Viện Kỹ thuật Công nghệ – Trường Đại học Thủ Dầu Một; GVHD: ThS. Nguyễn Hữu Vĩnh) thực hiện nhằm giải quyết trực tiếp bài toán số hóa quy trình kinh doanh thời trang.

                    +------------------------------------------+
                    |           NGƯỜI DÙNG / TRÌNH DUYỆT       |
                    +--------------------+---------------------+
                                         | HTTP/HTTPS
                                         v
                    +------------------------------------------+
                    |         APACHE WEB SERVER / ROUTING       |
                    +--------------------+---------------------+
                                         |
                                         v
               +----------------------------------------------------+
               |              LARAVEL MVC FRAMEWORK                 |
               |  +----------------+  +---------------------------+ |
               |  |  Controllers   |  |     Blade Views / UI      | |
               |  +--------+-------+  +-------------+-------------+ |
               |           |                        ^               |
               |           v                        |               |
               |  +----------------+                |               |
               |  | Eloquent Model |----------------+               |
               |  +--------+-------+                                |
               +-----------|----------------------------------------+
                           | PDO / SQL Queries
                           v
               +----------------------------------------------------+
               |            MYSQL DATABASE (PhpMyAdmin)             |
               |  - tbl_customer          - tbl_order / details     |
               |  - tbl_product           - tbl_coupon              |
               |  - tbl_category / brand  - tbl_payment / ghichu    |
               +----------------------------------------------------+

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

Các cửa hàng thời trang truyền thống như FM CLOSET đối mặt với nhiều rào cản vận hành:

  • Chi phí mặt bằng và nhân sự cao: Giới hạn khả năng tiếp cận khách hàng tiềm năng ngoài khu vực địa lý cục bộ.
  • Quản lý đơn hàng và tồn kho thủ công: Dễ gây thất thoát, sai lệch dữ liệu sản phẩm, biến thể kích thước và màu sắc.
  • Tâm lý e ngại của người tiêu dùng trực tuyến: Nỗi lo về tính bảo mật thông tin cá nhân, rủi ro thanh toán và tốc độ xử lý giao dịch chậm chạp.

Mục tiêu dự án

  1. Phân tích nghiệp vụ bán lẻ và mô hình hóa toàn diện hệ thống e-commerce bằng ngôn ngữ UML (Use Case Diagrams, Class Diagrams, Sequence Diagrams).
  2. Thiết kế và chuẩn hóa cơ sở dữ liệu quan hệ (RDBMS) gồm 10 bảng nghiệp vụ chặt chẽ, tối ưu truy vấn danh mục và đơn hàng.
  3. Xây dựng website hoàn chỉnh trên nền tảng PHP sử dụng Laravel Framework theo mô hình MVC (Model-View-Controller).
  4. Tích hợp cổng thanh toán trực tuyến (VNPay) song song với phương thức thu tiền khi nhận hàng (COD), hỗ trợ hệ thống mã giảm giá (Coupon engine) động và thông báo tự động qua email.

Phạm vi và giới hạn (Scope & Limitations)

  • Phạm vi: Triển khai đầy đủ hệ thống Front-End phục vụ khách hàng (duyệt sản phẩm, lọc theo danh mục/thương hiệu, giỏ hàng, đặt hàng, áp mã giảm giá) và Back-End quản trị viên (quản lý danh mục, thương hiệu, sản phẩm, mã khuyến mãi, tình trạng đơn hàng).
  • Giới hạn: Tập trung vào kiến trúc máy chủ đơn (Monolithic MVC), chưa tích hợp đa kho hàng (Multi-warehouse) hoặc ứng dụng di động native độc lập.

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ế các giải pháp thương mại điện tử hiện nay cho thấy sự phân hóa rõ rệt giữa giải pháp may đo và mã nguồn mở đóng gói sẵn:

Tiêu chí so sánh Cửa hàng vật lý truyền thống Nền tảng CMS đóng gói (WordPress/WooCommerce) Website tùy biến Laravel (FM CLOSET)
Phạm vi tiếp cận Cục bộ, giới hạn địa lý Toàn cầu qua Internet Toàn cầu, tối ưu hóa theo thương hiệu
Chi phí vận hành Rất cao (mặt bằng, nhân công) Thấp đến trung bình (phụ thuộc plugin trả phí) Tối ưu, tận dụng mã nguồn mở PHP/Laravel
Hiệu năng & Tải Phụ thuộc diện tích cửa hàng Trung bình, dễ chậm do thừa module/plugin Cao, tinh gọn do tự thiết kế cấu trúc
Khả năng mở rộng Khó nhân bản nhanh Bị giới hạn bởi cấu trúc core của CMS Rất cao, dễ dàng tích hợp API và microservices
Bảo mật dữ liệu Ghi chép sổ sách/phần mềm offline Nguy cơ cao từ lỗ hổng plugin bên thứ 3 Bảo vệ đa lớp: CSRF, Eloquent ORM chống SQL Injection

Phân tích yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Đăng ký/đăng nhập xác thực, quản lý giỏ hàng (Cart Session), xử lý Checkout lưu trữ tbl_ordertbl_order_detail, quản lý CRUD sản phẩm/danh mục/thương hiệu cho Admin.
  • Should have (Nên có): Tích hợp cổng thanh toán trực tuyến VNPay Sandbox, bộ lọc sản phẩm theo giá và chữ cái, công cụ áp dụng mã giảm giá (tbl_coupon).
  • Could have (Có thể có): Gửi email xác nhận đơn hàng tự động qua SMTP, tư vấn trực tiếp trực tuyến.
  • Won't have (Chưa làm trong phiên bản hiện tại): Đề xuất sản phẩm thông minh bằng AI/Machine Learning, quản lý vận chuyển liên kết API các đơn vị giao hàng như GHN, GHTK.

Thiết kế hệ thống

Kiến trúc tổng thể và công nghệ sử dụng

Hệ thống được phát triển theo mô hình kiến trúc Model-View-Controller (MVC) chuẩn mực trên nền tảng Laravel Framework (PHP Engine 7.4/8.0), kết hợp máy chủ web Apache 2.4 (phân phối qua gói XAMPP) và hệ quản trị cơ sở dữ liệu MySQL quản lý qua phpMyAdmin:

  • View (Giao diện): Xây dựng bằng Blade Template Engine, HTML5, CSS3, JavaScript, jQuery và thư viện lưới Bootstrap responsive.
  • Controller (Xử lý nghiệp vụ): Tiếp nhận HTTP Requests, điều phối dữ liệu từ Models, thực hiện xác thực (Validation) và trả về Views hoặc JSON Response.
  • Model (Tầng dữ liệu): Sử dụng Laravel Eloquent ORM ánh xạ trực tiếp vào các bảng quan hệ trong MySQL.
+-------------------------------------------------------------------------------+
|                            BẢN ĐỒ CƠ SỞ DỮ LIỆU CHÍNH                         |
+-------------------------------------------------------------------------------+
|  +------------------------+             +----------------------------------+  |
|  |      tbl_customer      |             |             tbl_order            |  |
|  +------------------------+             +----------------------------------+  |
|  | PK customer_id         |<---+        | PK  order_id                     |  |
|  |    customer_name       |    |        | FK1 customer_id                  |  |
|  |    customer_email      |    +------->| FK2 Note_id                      |  |
|  |    customer_password   |             | FK3 payment_id                   |  |
|  |    customer_phone      |             |     order_total                  |  |
|  +------------------------+             |     order_status                 |  |
|                                         +----------------+-----------------+  |
|  +------------------------+                              |                    |
|  |       tbl_ghichu       |                              v                    |
|  +------------------------+             +----------------------------------+  |
|  | PK Note_id             |<------------|         tbl_order_detail         |  |
|  |    firstName, lastName |             +----------------------------------+  |
|  |    Note_addressLine    |             | PK  order_details_id             |  |
|  |    Note_phone, email   |             | FK1 order_id                     |  |
|  +------------------------+             | FK2 product_id                   |  |
|                                         |     product_name                 |  |
|  +------------------------+             |     product_price                |  |
|  |      tbl_payment       |             |     product_qty                  |  |
|  +------------------------+             +----------------+-----------------+  |
|  | PK payment_id          |<-----------------------------+                    |
|  |    payment_method      |                              |                    |
|  |    payment_status      |                              v                    |
|  +------------------------+             +----------------------------------+  |
|                                         |            tbl_product           |  |
|  +------------------------+             +----------------------------------+  |
|  |       tbl_coupon       |             | PK  product_id                   |  |
|  +------------------------+             |     product_name                 |  |
|  | PK coupon_id           |             |     product_des                  |  |
|  |    coupon_code         |             |     product_price                |  |
|  |    qty_coupon          |             |     product_image                |  |
|  |    total_discount      |             |     product_status               |  |
|  |    coupon_condition    |             | FK1 category_id                  |  |
|  +------------------------+             | FK2 brand_id                     |  |
|                                         +--------+----------------+--------+  |
|                                                  |                |           |
|                                                  v                v           |
|  +-------------------------------+   +-------------------------------------+  |
|  |     tbl_category_product      |   |              tbl_brand              |  |
|  +-------------------------------+   +-------------------------------------+  |
|  | PK category_id                |   | PK brand_id                         |  |
|  |    category_name              |   |    brand_name                       |  |
|  |    category_des, status       |   |    brand_des, brand_status          |  |
|  +-------------------------------+   +-------------------------------------+  |
+-------------------------------------------------------------------------------+

Thiết kế chi tiết các bảng cơ sở dữ liệu

Hệ thống gồm 10 bảng dữ liệu được chuẩn hóa ở dạng chuẩn 3NF:

  1. tbl_customer: Quản lý tài khoản khách mua hàng.
    • customer_id (INT, PK, AI), customer_name (VARCHAR 255), customer_email (VARCHAR 255), customer_password (VARCHAR 255 - mã hóa Bcrypt/MD5), customer_phone (VARCHAR 255).
  2. tbl_admin: Quản lý tài khoản cán bộ quản trị hệ thống.
    • admin_id (INT, PK, AI), admin_name (VARCHAR 255), admin_email (VARCHAR 255), admin_password (VARCHAR 255), admin_phone (VARCHAR 255).
  3. tbl_product: Lưu trữ danh mục mặt hàng thời trang.
    • product_id (INT, PK, AI), product_name (VARCHAR 255), product_des (TEXT), product_price (VARCHAR 255), product_image (VARCHAR 255), product_status (INT), category_id (INT, FK), brand_id (INT, FK).
  4. tbl_category_product & tbl_brand:
    • Danh mục: category_id (INT, PK, AI), category_name (VARCHAR 255), category_des (TEXT), category_status (INT).
    • Thương hiệu: brand_id (INT, PK, AI), brand_name (VARCHAR 255), brand_des (TEXT), brand_status (INT).
  5. tbl_order, tbl_order_detail, tbl_ghichu, tbl_payment:
    • tbl_order: order_id (INT, PK, AI), customer_id (INT, FK), Note_id (INT, FK), payment_id (INT, FK), order_total (VARCHAR 50), order_status (VARCHAR 50).
    • tbl_order_detail: order_details_id (INT, PK, AI), order_id (INT, FK), product_id (INT, FK), product_name (VARCHAR 255), product_price (VARCHAR 50), product_qty (INT).
    • tbl_ghichu: Note_id (INT, PK, AI), firstName (VARCHAR 255), lastName (VARCHAR 255), Note_addressLine (VARCHAR 255), Note_province (VARCHAR 255), Note_district (VARCHAR 255), Note_phone (VARCHAR 255), Note_email (VARCHAR 255), note_order (VARCHAR 500).
    • tbl_payment: payment_id (INT, PK, AI), payment_method (VARCHAR 255), payment_status (VARCHAR 50).
  6. tbl_coupon:
    • coupon_id (INT, PK, AI), coupon_name (VARCHAR 255), coupon_code (VARCHAR 50), qty_coupon (INT), total_discount (INT), coupon_condition (INT - 1: Giảm theo %, 2: Giảm theo số tiền cố định).

Methodology

Dự án áp dụng mô hình phát triển phần mềm theo từng giai đoạn lặp (Iterative Waterfall/Agile kết hợp) với lịch trình 4 tháng (01/2021 - 05/2021):

gantt
    title KẾ HOẠCH TRIỂN KHAI DỰ ÁN FM CLOSET (2021)
    dateFormat  YYYY-MM-DD
    section Giai đoạn 1
    Khảo sát & Thu thập yêu cầu       :done, 2021-01-05, 2021-01-25
    section Giai đoạn 2
    Thiết kế UML & Database (3NF)     :done, 2021-01-26, 2021-02-20
    section Giai đoạn 3
    Lập trình Front-End & Back-End    :done, 2021-02-21, 2021-04-10
    Tích hợp VNPay & Cart Engine      :done, 2021-04-01, 2021-04-20
    section Giai đoạn 4
    Kiểm thử, UAT & Viết báo cáo      :done, 2021-04-21, 2021-05-15

Ma trận quản lý rủi ro (Risk Management)

  • Xung đột phiên bản môi trường PHP: Khắc phục bằng cách chuẩn hóa cấu hình thông qua Composer dependencies (composer.json) trên PHP 7.4.
  • Lỗi rò rỉ dữ liệu phiên giỏ hàng: Xử lý qua Session Storage phân tách định danh khách hàng, tự động hủy phiên khi phiên hết hạn sau 120 phút.
  • Bảo mật cơ sở dữ liệu: Khai báo Prepared Statements thông qua Eloquent ORM và Query Builder, ngăn chặn hoàn toàn nguy cơ SQL Injection.

Implementation và kết quả

Development process

Quá trình lập trình được chia làm 4 Module chính:

  1. Module Phân quyền & Quản trị (Admin Panel): Quản lý trạng thái sản phẩm, thêm/sửa/xóa danh mục, thương hiệu, duyệt và thay đổi trạng thái đơn hàng (pending, processed, shipped, cancelled).
  2. Module Trưng bày & Điều hướng sản phẩm (Catalog & Search): Truy vấn danh sách sản phẩm theo danh mục (tbl_category_product) và thương hiệu (tbl_brand), kết hợp phân trang (Pagination) và sắp xếp linh hoạt.
  3. Module Giỏ hàng & Khuyến mãi (Cart & Coupon Engine): Xử lý lưu trữ phiên làm việc, kiểm tra tính hợp lệ và số lượng còn lại của mã giảm giá.
  4. Module Đặt hàng & Thanh toán (Checkout & Gateway): Ghi nhận thông tin giao hàng tbl_ghichu, lập hóa đơn tbl_order, phân tích phương thức thanh toán sang VNPay hoặc COD.

Đoạn mã xử lý áp dụng mã giảm giá (Coupon Calculation Logic):

public function check_coupon(Request $request)
{
    $data = $request->all();
    $coupon = Coupon::where('coupon_code', $data['coupon'])->first();
    
    if ($coupon) {
        $count_coupon = $coupon->count();
        if ($count_coupon > 0 && $coupon->qty_coupon > 0) {
            $coupon_session = Session::get('coupon');
            if ($coupon_session == true) {
                $is_available = 0;
                if ($is_available == 0) {
                    $cou[] = array(
                        'coupon_code' => $coupon->coupon_code,
                        'coupon_condition' => $coupon->coupon_condition,
                        'coupon_number' => $coupon->total_discount,
                    );
                    Session::put('coupon', $cou);
                }
            } else {
                $cou[] = array(
                    'coupon_code' => $coupon->coupon_code,
                    'coupon_condition' => $coupon->coupon_condition,
                    'coupon_number' => $coupon->total_discount,
                );
                Session::put('coupon', $cou);
            }
            Session::save();
            return redirect()->back()->with('message', 'Thêm mã giảm giá thành công!');
        }
    } else {
        return redirect()->back()->with('error', 'Mã giảm giá không tồn tại hoặc đã hết hạn!');
    }
}

Đoạn mã xử lý lưu đơn hàng & chi tiết đơn hàng (Order Checkout Transaction):

public function order_place(Request $request)
{
    // 1. Lưu thông tin thanh toán (tbl_payment)
    $payment_data = array();
    $payment_data['payment_method'] = $request->payment_option;
    $payment_data['payment_status'] = 'Đang chờ xử lý';
    $payment_id = DB::table('tbl_payment')->insertGetId($payment_data);

    // 2. Lưu đơn hàng tổng quát (tbl_order)
    $order_data = array();
    $order_data['customer_id'] = Session::get('customer_id');
    $order_data['Note_id'] = Session::get('shipping_id');
    $order_data['payment_id'] = $payment_id;
    $order_data['order_total'] = Cart::total();
    $order_data['order_status'] = 'Đang chờ xử lý';
    $order_id = DB::table('tbl_order')->insertGetId($order_data);

    // 3. Lưu chi tiết sản phẩm trong đơn hàng (tbl_order_detail)
    $content = Cart::content();
    foreach ($content as $v_content) {
        $order_d_data = array();
        $order_d_data['order_id'] = $order_id;
        $order_d_data['product_id'] = $v_content->id;
        $order_d_data['product_name'] = $v_content->name;
        $order_d_data['product_price'] = $v_content->price;
        $order_d_data['product_qty'] = $v_content->qty;
        DB::table('tbl_order_detail')->insert($order_d_data);
    }

    if ($payment_data['payment_method'] == 1) {
        Cart::destroy();
        return view('pages.checkout.handcash');
    } elseif ($payment_data['payment_method'] == 2) {
        // Chuyển hướng sang VNPay Payment Gateway
        return redirect()->route('payment.vnpay', ['order_id' => $order_id]);
    }
}

Testing và validation

Quá trình kiểm thử phần mềm được thực hiện qua các bài test chức năng hộp đen (Black-box Testing) và kiểm tra tải/tốc độ phản hồi hệ thống:

Hạng mục kiểm thử Kịch bản kiểm thử (Test Case Scenario) Kết quả mong đợi Trạng thái
Đăng ký tài khoản Nhập email đã tồn tại trong tbl_customer Báo lỗi trùng lặp, giữ lại form nhập liệu Đạt (Pass)
Tìm kiếm sản phẩm Gõ từ khóa không dấu/có dấu ("ao khoac", "áo sơ mi") Trả về danh sách sản phẩm khớp LIKE query Đạt (Pass)
Thêm vào giỏ hàng Thêm nhiều sản phẩm, cập nhật số lượng về 0 Tự động xóa item khỏi giỏ, cập nhật lại tổng tiền Đạt (Pass)
Áp dụng Coupon Áp mã giảm giá % vượt quá giá trị đơn hàng Tính toán chính xác theo coupon_condition Đạt (Pass)
Xóa sản phẩm Admin Xóa sản phẩm đang nằm trong đơn hàng đã hoàn tất Hiển thị cảnh báo ràng buộc khóa ngoại (FK Integrity) Đạt (Pass)

Kết quả Benchmark hiệu năng

  • Thời gian tải trang trung bình (Page Load Time): 0.85s - 1.25s trên đường truyền băng thông tiêu chuẩn.
  • Tải đồng thời (Stress Test): Xử lý ổn định 100 kết nối đồng thời (Concurrent Users) với tỷ lệ phản hồi lỗi < 0.1% trên máy chủ thử nghiệm cục bộ Apache/PHP 7.4.
  • Mức độ hài lòng của người dùng thử nghiệm (UAT): 92.5% đánh giá giao diện dễ sử dụng, thao tác đặt hàng dưới 3 bước tiện lợi.

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

  • Xây dựng thành công 100% các chức năng cốt lõi theo đề cương đồ án: Quản lý sản phẩm, thương hiệu, danh mục, mã giảm giá, giỏ hàng, đặt hàng và quản lý tài khoản.
  • Tối ưu hóa giao diện thân thiện với thiết bị di động (Responsive UI) thông qua Bootstrap, đảm bảo hiển thị đồng bộ trên Desktop, Tablet và Smartphone.
  • Hệ thống quản trị viên trực quan, cho phép cập nhật tức thì trạng thái đơn hàng và kiểm soát lượng hàng tồn kho.

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

  1. Kiến trúc dữ liệu Module hóa cao: Phân tách rõ ràng giữa thông tin đơn hàng (tbl_order), chi tiết dòng hàng (tbl_order_detail) và sổ địa chỉ giao hàng (tbl_ghichu), giúp tái sử dụng thông tin và không làm mất dữ liệu lịch sử khi khách hàng cập nhật hồ sơ cá nhân.
  2. Cơ chế xử lý khuyến mãi linh hoạt: Xây dựng bảng tbl_coupon hỗ trợ hai hình thức giảm giá (coupon_condition = 1 cho tỷ lệ phần trăm và 2 cho khấu trừ tiền mặt cố định), giúp cửa hàng triển khai nhanh các chiến dịch tiếp thị.
  3. Hiệu quả kinh tế & Vận hành: Cắt giảm ước tính 60% thời gian lên đơn và đối soát đơn hàng so với phương pháp bán hàng qua tin nhắn mạng xã hội truyền thống; giảm thiểu tối đa tình trạng sót đơn hoặc nhầm lẫn địa chỉ nhận hàng.

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

Kịch bản triển khai tại cửa hàng FM CLOSET

Website phục vụ trực tiếp cho hoạt động kinh doanh của cửa hàng thời trang FM CLOSET tại Bình Dương:

  • Khách hàng quét mã QR tại cửa hàng hoặc truy cập link website để duyệt toàn bộ bộ sưu tập mới nhất.
  • Cửa hàng sử dụng module Admin để quản lý danh mục theo mùa (Xuân Hè, Thu Đông) và phân loại theo thương hiệu đối tác.

Hướng dẫn cài đặt và yêu cầu hệ thống (System Requirements)

  • Web Server: Apache 2.4+ hoặc Nginx 1.18+
  • PHP Environment: Phiên bản PHP >= 7.4 (khuyến nghị PHP 8.0) với các tiện ích mở rộng: OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON.
  • Cơ sở dữ liệu: MySQL 5.7+ hoặc MariaDB 10.3+
  • Các bước triển khai:
    1. Clone mã nguồn vào thư mục web root (htdocs hoặc /var/www/html).
    2. Tạo cơ sở dữ liệu fm_closet trên phpMyAdmin và import file .sql.
    3. Cấu hình file .env kết nối Database:
      DB_CONNECTION=mysql
      DB_HOST=127.0.0.1
      DB_PORT=3306
      DB_DATABASE=fm_closet
      DB_USERNAME=root
      DB_PASSWORD=
      
    4. Chạy lệnh cài đặt thư viện và sinh key:
      composer install
      php artisan key:generate
      php artisan serve
      

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

Hạn chế hiện tại

  • Chưa có đa kho hàng và quản lý size/màu chi tiết: Bảng tbl_product hiện tại lưu trữ thông tin sản phẩm đơn nhất, chưa tách riêng bảng thuộc tính biến thể (SKU, Size S/M/L/XL, Color).
  • Kiến trúc Monolithic truyền thống: Toàn bộ giao diện Blade và Controller nằm chung một khối mã nguồn, chưa tách thành RESTful API / GraphQL độc lập để phục vụ Mobile Apps native.

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

  • Tách biệt Backend thành hệ thống Headless API (Laravel RESTful API / Passport JWT) và xây dựng Front-End độc lập bằng React.js / Vue.js hoặc Mobile App Flutter.
  • Tích hợp tự động API tính phí vận chuyển và đẩy đơn trực tiếp sang các đơn vị giao hàng như Viettel Post, Giao Hàng Tiết Kiệm (GHTK), Giao Hàng Nhanh (GHN).
  • Xây dựng hệ thống gợi ý sản phẩm liên quan (Recommendation Engine) dựa trên lịch sử xem hàng và giỏ hàng của người dùng.

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

  • Sinh viên & Học viên ngành CNTT/Kỹ thuật phần mềm: Nguồn tài liệu tham khảo thực tế về cách tổ chức đồ án e-commerce, thiết kế sơ đồ Use Case, Sequence Diagram và chuẩn hóa cơ sở dữ liệu quan hệ trên Laravel.
  • Lập trình viên Web PHP/Laravel: Mô hình tham chiếu chuẩn mực về xử lý Session giỏ hàng, xây dựng logic Coupon Engine và kết nối thanh toán VNPay.
  • Chủ cửa hàng thời trang vừa và nhỏ: Bản thiết kế hệ thống chi tiết giúp tiết kiệm chi phí đầu tư phần mềm ban đầu, dễ dàng đưa toàn bộ quy trình bán lẻ lên môi trường số.
  • Giảng viên & Nhà nghiên cứu: Tài liệu minh chứng cho việc ứng dụng kiến thức lý thuyết công nghệ phần mềm vào giải quyết bài toán thực tế của doanh nghiệp địa phương.

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

1. Website có thể chịu được lượng truy cập lớn trong các đợt Flash Sale không?

Hệ thống với kiến trúc Laravel hiện tại có thể phục vụ tốt hàng trăm người dùng đồng thời trên máy chủ VPS tiêu chuẩn (2 vCPU, 4GB RAM). Để mở rộng cho các đợt Flash Sale lớn hơn, hệ thống chỉ cần kích hoạt Redis Caching cho giỏ hàng/phiên đăng nhập và tích hợp mạng phân phối nội dung (CDN) cho tài nguyên hình ảnh sản phẩm.

2. Dữ liệu mật khẩu của khách hàng và admin được bảo mật như thế nào?

Mật khẩu người dùng được xử lý băm mật mã một chiều (One-way Hash) bằng thuật toán Bcrypt mạnh mẽ trước khi ghi nhận vào trường customer_passwordadmin_password, chống giải mã ngược ngay cả khi cơ sở dữ liệu bị lộ lọt.

3. Có thể thay đổi mức giảm giá của Coupon theo giá trị tiền cố định không?

Hoàn toàn có thể. Bảng tbl_coupon đã được thiết kế với trường coupon_condition: giá trị 1 đại diện cho tỷ lệ phần trăm (ví dụ: giảm 10%, 20%) và giá trị 2 đại diện cho số tiền cố định trực tiếp (ví dụ: giảm 50.000đ, 100.000đ).

4. Chi phí duy trì vận hành website này hàng năm ước tính là bao nhiêu?

Chi phí vận hành rất tiết kiệm nhờ sử dụng công nghệ mã nguồn mở (PHP, MySQL, Laravel): chỉ bao gồm phí duy trì tên miền (.vn hoặc .com: ~250.000 - 750.000 VNĐ/năm) và dịch vụ lưu trữ Web Hosting/VPS (~1.000.000 - 2.500.000 VNĐ/năm).

5. Website có hỗ trợ SEO và hiển thị tốt trên công cụ tìm kiếm Google không?

Cấu trúc Blade Views của hệ thống được xây dựng tối ưu Semantic HTML5, thân thiện với các thẻ Meta Title, Description và OpenGraph, cùng tốc độ phản hồi máy chủ nhanh chóng giúp đạt điểm số cao trên công cụ đánh giá Google PageSpeed Insights.


Kết luận

Đồ án tốt nghiệp "Xây dựng website quản lý bán quần áo cho cửa hàng FM CLOSET" của sinh viên Đinh Thị Quỳnh đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng đặt ra. Bằng việc kết hợp chặt chẽ giữa lý thuyết kỹ thuật phần mềm, quy trình phân tích thiết kế hệ thống UML và sức mạnh của framework PHP hiện đại (Laravel MVC), đề tài không chỉ giải quyết trọn vẹn bài toán thương mại điện tử thực tế cho cửa hàng FM CLOSET mà còn là tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn cao cho cộng đồng lập trình viên và sinh viên công nghệ thông tin.