Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin và thương mại điện tử phát triển mạnh mẽ, việc ứng dụng các nền tảng trực tuyến giúp các tổ chức, doanh nghiệp và cá nhân kinh doanh tiếp cận khách hàng một cách nhanh chóng và hiệu quả. Hầu hết các đơn vị kinh doanh hiện đại đều xây dựng website riêng nhằm quảng bá hình ảnh, giới thiệu sản phẩm và cung cấp dịch vụ trực tiếp đến người tiêu dùng.

Đối với sinh viên, nhu cầu tìm kiếm, tham khảo và tiếp cận các nguồn tài liệu học tập, sách tự học và sách giải trí là rất lớn. Xuất phát từ thực tiễn đó, đề tài "Xây dựng Website Bán Sách cho Sinh Viên" được thực hiện trong khuôn khổ môn học Phát triển phần mềm mã nguồn mở tại Viện Kỹ thuật - Công nghệ, Trường Đại học Thủ Dầu Một. Đề tài nhằm giải quyết bài toán ứng dụng công nghệ mã nguồn mở hiện đại vào quy trình xây dựng hệ thống bán lẻ sách trực tuyến, hỗ trợ người học dễ dàng tham khảo và mua sách.

Mục tiêu và nhiệm vụ nghiên cứu:

  1. Áp dụng và tổng hợp các kiến thức nền tảng về công nghệ phần mềm mã nguồn mở đã được đào tạo trong chương trình học.
  2. Xây dựng một website bán sách trực tuyến hoàn chỉnh, hiện đại, có cấu trúc mã nguồn tối ưu, dễ bảo trì và dễ nâng cấp.
  3. Cung cấp không gian tương tác cho người đọc để tra cứu thông tin chi tiết, xem nội dung tóm tắt và để lại bình luận, đánh giá về các tác phẩm.
  4. Triển khai phân hệ quản trị (Admin) đầy đủ để kiểm soát dữ liệu sản phẩm, đơn hàng, danh mục chủ đề và quyền hạn người dùng.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế, lập trình và kiểm thử ứng dụng web thương mại điện tử phục vụ nhu cầu mua bán sách.
  • Đối tượng phục vụ: Khách hàng là sinh viên có nhu cầu mua sách chuyên ngành, tài liệu tham khảo, sách tự học và sách giải trí; cùng đội ngũ quản trị viên nhà sách.
  • Phạm vi hệ thống: Ứng dụng tập trung vào các chức năng trưng bày sản phẩm, tìm kiếm, đặt hàng trực tuyến, theo dõi đơn hàng và quản lý nội bộ. Trong định hướng dài hạn, hệ thống được quy hoạch để mở rộng thành nền tảng thương mại điện tử quy mô lớn.
  • Thời gian và địa điểm thực hiện: Đề tài được hoàn thành vào ngày 30 tháng 11 năm 2020 tại tỉnh Bình Dương.

Cơ sở lý thuyết và công nghệ áp dụng

Đề tài vận dụng toàn diện các công nghệ và giải pháp phần mềm mã nguồn mở phổ biến trên nền tảng web, bao gồm:

Ngôn ngữ lập trình PHP và Hệ quản trị cơ sở dữ liệu MySQL

  • PHP (Hypertext Preprocessor): Ngôn ngữ kịch bản phía máy chủ (server-side) mã nguồn mở, hỗ trợ lập trình hướng đối tượng (OOP), thư viện phong phú, tốc độ xử lý nhanh, khả năng mở rộng cao và dễ tích hợp trực tiếp vào mã nguồn HTML. Tài liệu đã tổng kết các mốc phát triển chính từ phiên bản PHP/FI (1995) của Rasmus Lerdorf, PHP 3.0 (Zeev Suraski và Andi Gutmans), PHP 4.0 với Zend Engine, PHP 5.0/5.1 với Zend Engine 2, hỗ trợ chuẩn kết nối cơ sở dữ liệu PDO (PHP Data Objects), cho đến định hướng hỗ trợ Unicode ở các bản kế tiếp.
  • MySQL: Hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở có độ ổn định cao, tốc độ truy vấn nhanh, tính khả chuyển đa nền tảng (hỗ trợ hơn 20 hệ điều hành như Linux, Windows, macOS, Unix). MySQL được tích hợp thông qua môi trường XAMPP và giao diện phpMyAdmin để quản lý dữ liệu.

Framework Laravel và Kiến trúc MVC

  • Laravel Framework: Framework mã nguồn mở phát triển bởi Taylor Otwell (từ tháng 6/2011), được xây dựng trên nền tảng các thành phần của Symfony và quản lý thư viện qua Composer. Laravel tuân thủ mô hình kiến trúc Model-View-Controller (MVC), giúp phân tách rõ ràng giữa tầng xử lý dữ liệu, giao diện và logic điều khiển.
  • Các công cụ và cơ chế tích hợp:
    • Giao diện dòng lệnh Artisan: Hỗ trợ tự động hóa sinh mã và cấu trúc hệ thống (như lệnh khởi tạo module xác thực $ php artisan make:auth).
    • Cơ chế bảo mật: ORM sử dụng chuẩn PDO để ngăn chặn tấn công SQL Injection; tích hợp sẵn trường ẩn CSRF token nhằm chống tấn công giả mạo yêu cầu chéo trang; tự động escape các biến dữ liệu khi render ra View để phòng chống tấn công XSS (Cross-Site Scripting).

Môi trường phát triển và yêu cầu phần cứng

  • Môi trường phát triển: Trình biên tập mã nguồn Visual Studio Code (VS Code), máy chủ cục bộ XAMPP.
  • Yêu cầu phần cứng tối thiểu: Bộ vi xử lý (CPU) tối thiểu 2 Core, dung lượng bộ nhớ trong (RAM) từ 2 GB trở lên, dung lượng ổ cứng trống tối thiểu 10 GB.

Thiết kế và triển khai hệ thống

Hệ thống được mô hình hóa bằng các biểu đồ UML chuẩn hóa, bao gồm biểu đồ lớp (Class Diagram), biểu đồ ca sử dụng (Use Case Diagram), biểu đồ tuần tự (Sequence Diagram) và biểu đồ hoạt động (Activity Diagram).

Cấu trúc cơ sở dữ liệu

Cơ sở dữ liệu của hệ thống được chuẩn hóa thành các bảng quan hệ chính:

Tên bảng Khóa chính Mô tả chức năng và các trường chính
Sach (product) id Lưu thông tin sản phẩm: Name, id_type (khóa ngoại liên kết loại), description, unit_price, promotion_price, Image, New, created_at, updated_at.
type_products id Lưu danh mục chủ đề/thể loại sách: name, created_at, updated_at.
slide id Lưu trữ hình ảnh trình chiếu/quảng cáo của nhà sách: Image, created_at, updated_at.
User id Quản lý tài khoản và phân quyền người dùng: full_name, Email, Password, Phone, Address, Role, created_at, updated_at.
Customer id Lưu thông tin khách hàng đặt hàng: Name, Gender, Email, Address, phone_number, Note, created_at, updated_at.
bills id Quản lý hóa đơn đặt hàng: id_customer (khóa ngoại), date_order, total, payment (hình thức thanh toán), note, created_at, updated_at.
bill_detail id Chi tiết hóa đơn: id_bill (khóa ngoại), id_product (khóa ngoại), quantity, unit_price, created_at, updated_at.

Đặc tả ca sử dụng (Use Case) chính

  1. Đăng nhập (UC_DangNhap):

    • Tác nhân: Khách hàng, Quản trị viên (Admin).
    • Luồng chính: Người dùng truy cập chức năng đăng nhập, nhập tài khoản và mật khẩu. Hệ thống xác thực thông tin và chuyển hướng về giao diện tương ứng.
    • Luồng phụ: Nếu mật khẩu hoặc tài khoản không hợp lệ, hệ thống hiển thị thông báo lỗi và yêu cầu nhập lại.
  2. Xem và tìm kiếm sản phẩm (UC_XemSanPham, UC_TimKiem):

    • Tác nhân: Khách hàng.
    • Luồng chính: Người dùng truy cập hệ thống để xem danh sách sách theo từng thể loại, theo nhà sản xuất hoặc nhập từ khóa tìm kiếm. Hệ thống truy vấn cơ sở dữ liệu và hiển thị kết quả tương ứng.
  3. Quản lý giỏ hàng (UC_XemGioHang, UC_CapNhatGioHang):

    • Tác nhân: Khách hàng.
    • Luồng chính: Cho phép xem các mặt hàng đã chọn, điều chỉnh số lượng hoặc xóa sản phẩm.
    • Luồng phụ: Nếu số lượng yêu cầu vượt quá tồn kho, hệ thống gửi thông báo cảnh báo không đủ hàng.
  4. Mua hàng và Thanh toán (UC_MuaHang, UC_ThanhToan):

    • Tác nhân: Khách hàng, Cổng thanh toán Ngân hàng.
    • Luồng chính: Khách hàng xác nhận giỏ hàng, chọn phương thức thanh toán (Thanh toán khi nhận hàng - COD hoặc Thanh toán trực tuyến qua ngân hàng). Hệ thống lưu đơn hàng vào bảng bills và bill_detail, gửi phản hồi thành công.
    • Luồng phụ: Khi thanh toán trực tuyến bị lỗi hoặc giao dịch không hợp lệ, hệ thống báo lỗi và cho phép quay lại bước trước hoặc hủy giao dịch.
  5. Quản trị hệ thống (UC_QuanLyDonHang, UC_CapNhatSanPham, UC_PhanQuyen):

    • Tác nhân: Quản trị viên (Admin).
    • Luồng chính: Admin đăng nhập quyền quản trị để thêm mới, sửa thông tin, xóa sản phẩm, quản lý danh mục chủ đề, duyệt đơn hàng và phân quyền tài khoản.

Kiểm thử hệ thống

Tài liệu xác định việc sử dụng công cụ Selenium để thực hiện kiểm thử tự động phần mềm, kiểm tra các chức năng và kịch bản sự kiện trên giao diện website.


Nội dung chính theo từng chương

Chương 1: Giới thiệu

Chương mở đầu trình bày tổng quan về lý do chọn đề tài bán sách cho sinh viên, phân tích phạm vi hoạt động của hệ thống, liệt kê các phân hệ chức năng chính (phía người dùng và phía quản trị) và nêu rõ các yêu cầu về công nghệ, môi trường, cấu hình phần cứng tối thiểu phục vụ việc triển khai.

Chương 2: Tổng quan PHP & MySQL

Chương 2 tập trung phân tích cơ sở lý thuyết và công nghệ nền tảng. Nội dung bao gồm lịch sử phát triển chi tiết của ngôn ngữ lập trình PHP từ phiên bản đầu tiên đến PHP 5/6, các ưu điểm của PHP trong phát triển web, vai trò và tính năng nổi bật của hệ quản trị cơ sở dữ liệu MySQL, cùng lý do lựa chọn framework Laravel (tính dễ sử dụng, kiến trúc MVC, tích hợp sẵn hệ thống xác thực và các tầng bảo mật phòng chống SQL Injection, CSRF, XSS).

Chương 3: Phân tích và thiết kế hệ thống

Chương 3 trình bày toàn bộ hồ sơ thiết kế kỹ thuật của dự án. Nội dung bao gồm:

  • Sơ đồ Class tổng quát và bảng mô tả chi tiết 7 thực thể dữ liệu chính (Sach, slide, User, Customer, type_products, bills, bill_detail).
  • Sơ đồ Use-Case tổng quan và bảng đặc tả chi tiết 11 ca sử dụng nghiệp vụ (Đăng nhập, Đăng xuất, Xem sản phẩm, Giỏ hàng, Mua hàng, Thanh toán, Quản lý đơn hàng, Cập nhật sản phẩm, Kiểm tra tình trạng đơn hàng, Quản lý thông tin cá nhân).
  • Hệ thống biểu đồ trình tự (Sequence Diagrams) và biểu đồ hoạt động (Activity Diagrams) mô hình hóa quy trình xử lý dữ liệu của từng chức năng.

Chương 4: Giao diện phần mềm website

Chương 4 tài liệu hóa toàn bộ kết quả hiện thực hóa giao diện người dùng (UI) thông qua danh mục 19 màn hình chức năng:

  1. Trang chủ và trang giới thiệu.
  2. Màn hình đăng ký, đăng nhập tài khoản.
  3. Màn hình chi tiết sản phẩm và danh mục sản phẩm theo thể loại.
  4. Màn hình tìm kiếm sản phẩm.
  5. Màn hình đặt hàng và kiểm tra tình trạng đơn hàng.
  6. Màn hình quản lý thông tin cá nhân, đổi mật khẩu và quên mật khẩu.
  7. Phân hệ quản trị (Admin Dashboard): Quản lý sản phẩm (thêm, sửa, xóa), chỉnh sửa banner trình chiếu, quản lý danh mục chủ đề và chỉnh sửa quyền hạn tài khoản.

Chương 5: Cài đặt và Kiểm thử

Chương 5 mô tả cấu trúc thư mục, quy trình cài đặt mã nguồn website, thiết lập các hàm xử lý sự kiện trong hệ thống và phương pháp ứng dụng Selenium nhằm tự động hóa quy trình kiểm thử phần mềm.

Chương 6: Tài liệu tham khảo

Liệt kê các tài liệu kỹ thuật, tài liệu hướng dẫn về PHP, MySQL, Laravel và kiểm thử phần mềm được sử dụng trong quá trình thực hiện đồ án.


Kết quả và đóng góp

  • Kết quả thực tế:
    • Xây dựng thành công hệ thống website bán sách trực tuyến hoàn chỉnh dựa trên nền tảng Laravel Framework và cơ sở dữ liệu MySQL.
    • Thiết kế hoàn chỉnh 7 bảng cơ sở dữ liệu quan hệ, đáp ứng đầy đủ các mối liên kết từ quản lý sản phẩm, danh mục, khách hàng đến hóa đơn chi tiết.
    • Hiện thực hóa 19 giao diện người dùng và quản trị, hỗ trợ đầy đủ quy trình từ duyệt sách, tìm kiếm, đặt hàng, quản lý giỏ hàng đến quản lý kho sản phẩm và phân quyền người dùng.
    • Tích hợp kiểm thử tự động với công cụ Selenium nhằm đánh giá tính chính xác của các luồng sự kiện trên website.
  • Đóng góp của đồ án:
    • Ứng dụng thành công mô hình MVC và các giải pháp bảo mật của Laravel vào bài toán xây dựng phần mềm thương mại điện tử chuyên ngành.
    • Cung cấp tài liệu thiết kế hệ thống chi tiết (từ sơ đồ lớp, biểu đồ use-case, biểu đồ trình tự đến kịch bản hoạt động), đóng vai trò như một mẫu tham khảo cho các đồ án phát triển phần mềm mã nguồn mở.

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

  • Hạn chế:
    • Tác giả tự nhận định do giới hạn về năng lực chuyên môn và thời gian thực hiện, hệ thống khó tránh khỏi một số thiếu sót trong quá trình hoàn thiện các chức năng nâng cao.
    • Quy mô dữ liệu và phạm vi thử nghiệm mới dừng lại ở mức mô phỏng nhu cầu nội bộ cho sinh viên.
  • Hướng phát triển:
    • Mở rộng quy mô website thành sàn giao dịch thương mại điện tử hoàn chỉnh với danh mục hàng hóa đa dạng hơn.
    • Nâng cấp và tích hợp sâu hơn các cổng thanh toán trực tuyến hiện đại.
    • Tối ưu hóa giao diện và trải nghiệm người dùng trên nhiều thiết bị khác nhau.

Giá trị tham khảo

Đồ án là tài liệu học thuật và kỹ thuật phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Tham khảo quy trình phân tích thiết kế hệ thống thông tin bằng UML (Class diagram, Use case, Sequence, Activity).
  • Lập trình viên web sơ cấp (PHP/Laravel): Nắm bắt cách tổ chức cấu trúc dự án Laravel theo mô hình MVC, cách thiết kế cơ sở dữ liệu quan hệ cho website bán hàng và phương pháp tích hợp Selenium vào kiểm thử phần mềm.
  • Người thực hiện đồ án môn học Phát triển phần mềm mã nguồn mở: Học hỏi cấu trúc trình bày một báo cáo đồ án kỹ thuật chuẩn mực từ khâu khảo sát, thiết kế, triển khai giao diện đến kiểm thử.

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

1. Hệ thống website sử dụng kiến trúc và công nghệ nền tảng nào?

Hệ thống được phát triển trên ngôn ngữ PHP sử dụng Laravel Framework theo mô hình kiến trúc MVC (Model-View-Controller). Cơ sở dữ liệu được quản trị bằng MySQL thông qua công cụ XAMPP và phpMyAdmin; mã nguồn được lập trình trên IDE Visual Studio Code.

2. Cơ sở dữ liệu của dự án gồm những bảng nào?

Hệ thống gồm 7 bảng quan hệ chính: Sach (lưu sản phẩm sách), type_products (chủ đề, thể loại sách), slide (hình ảnh banner/nhà xuất bản), User (tài khoản người dùng và phân quyền), Customer (thông tin khách hàng đặt hàng), bills (hóa đơn đơn hàng) và bill_detail (chi tiết sản phẩm trong hóa đơn).

3. Laravel cung cấp những tính năng bảo mật nào được áp dụng trong đồ án?

Đồ án chỉ rõ 3 cơ chế bảo mật cốt lõi của Laravel:

  • Sử dụng PDO trong ORM để chống tấn công SQL Injection.
  • Sử dụng token ẩn (CSRF Token) để chống tấn công Cross-Site Request Forgery.
  • Tự động escape dữ liệu biến đầu ra view để chống tấn công XSS (Cross-Site Scripting).

4. Quy trình xử lý ngoại lệ trong Use Case Thanh toán diễn ra như thế nào?

Trong Use Case Thanh toán (UC_ThanhToan), nếu việc thanh toán qua cổng ngân hàng trực tuyến không thành công, hệ thống sẽ phát sinh luồng phụ: hiển thị thông báo lỗi, cho phép người dùng quay lại bước chọn phương thức thanh toán hoặc thực hiện hủy thanh toán đơn hàng.

5. Công cụ nào được đề xuất để kiểm thử phần mềm trong đồ án?

Đồ án sử dụng công cụ Selenium (được trình bày tại mục 5.4, Chương 5) để thực hiện kiểm thử tự động các chức năng và luồng sự kiện trên giao diện web.


Kết luận

Báo cáo đồ án môn học "Xây dựng Website Bán Sách cho Sinh Viên" do sinh viên Tô Thị Kim Ngân thực hiện dưới sự hướng dẫn của ThS. Nguyễn Hữu Vĩnh tại Trường Đại học Thủ Dầu Một là một công trình ứng dụng phần mềm mã nguồn mở hoàn chỉnh. Đề tài đã hệ thống hóa đầy đủ cơ sở lý thuyết về PHP, MySQL, Laravel và mô hình MVC; đồng thời hoàn thiện toàn bộ quy trình từ phân tích thiết kế hệ thống, xây dựng cơ sở dữ liệu, triển khai giao diện đến lập kịch bản kiểm thử với Selenium. Đây là tài liệu tham khảo có giá trị thực tiễn cao cho sinh viên ngành Công nghệ thông tin trong các môn học phát triển phần mềm ứng dụng.