Bối cảnh và vấn đề nghiên cứu
Đồ án tốt nghiệp đại học "Xây dựng website bán thực phẩm và hàng tiêu dùng thiết yếu" được sinh viên Trần Ngọc Huy (lớp D17HTTT6, Khoa Công nghệ Thông tin 1, Học viện Công nghệ Bưu chính Viễn thông) thực hiện dưới sự hướng dẫn của TS. Nguyễn Tất Thắng vào tháng 01/2022.
Về mặt thực tiễn, tác giả đặt đề tài trong bối cảnh cuộc Cách mạng Công nghiệp lần thứ tư và sự mở rộng của thương mại điện tử, cho phép người tiêu dùng mua sắm trực tuyến mà không cần đến các cửa hàng vật lý. Cùng với đó, giai đoạn năm 2021–2022 ghi nhận diễn biến phức tạp của đại dịch COVID-19. Nhu cầu về các mặt hàng lương thực, thực phẩm và nhu yếu phẩm luôn ở mức cao, trong khi hoạt động giao thương trực tiếp tại các điểm bán truyền thống tiềm ẩn nguy cơ lây nhiễm dịch bệnh và tiêu tốn nhiều thời gian, công sức của người dân. Xuất phát từ thực tế này, việc thiết kế một hệ thống thương mại điện tử chuyên biệt mang tên website OGANI nhằm phục vụ hoạt động bán lẻ thực phẩm thiết yếu vừa giải quyết bài toán kinh doanh cho doanh nghiệp, vừa hỗ trợ người dân mua sắm an toàn và thuận tiện.
Mục tiêu nghiên cứu và xây dựng hệ thống được phân định rõ thành các nhiệm vụ:
- Nghiên cứu cơ sở lý thuyết về phát triển ứng dụng web, mô hình kiến trúc Model – View – Controller (MVC), hệ quản trị cơ sở dữ liệu MySQL và Laravel Framework.
- Thu thập và phân tích các yêu cầu chức năng, phi chức năng của hệ thống thương mại điện tử bán hàng thiết yếu.
- Mô hình hóa bài toán thông qua hệ thống biểu đồ UML (Use Case, trạng thái, tuần tự, lớp thực thể).
- Thiết kế cơ sở dữ liệu quan hệ và xây dựng giao diện tương tác cho người dùng và người quản trị.
- Hiện thực hóa các chức năng bán hàng và quản trị trên môi trường thực tế, đánh giá kết quả triển khai.
Phạm vi nghiên cứu của đồ án được tác giả giới hạn cụ thể như sau:
- Phạm vi chức năng bao gồm: Đặt mua hàng trực tuyến cho khách hàng; quản lý danh mục và thông tin sản phẩm; quản lý tài khoản người dùng; quản lý đơn hàng và trạng thái đơn hàng; quản lý bình luận đánh giá; thống kê doanh số bán hàng theo ngày, tháng, năm.
- Phạm vi chức năng không bao gồm: Phân hệ tư vấn khách hàng; phân hệ quản lý nhân viên nội bộ; phân hệ quản lý nhà cung cấp; phân hệ quản lý thông tin thời gian làm việc (chấm công).
- Phạm vi không gian và thời gian: Nghiên cứu áp dụng cho quy trình vận hành của một cửa hàng kinh doanh bán lẻ thực phẩm và hàng tiêu dùng tại Việt Nam, hoàn thành vào tháng 01/2022.
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng trên nền tảng kỹ thuật công nghệ thông tin và công nghệ phần mềm, sử dụng các công nghệ và mô hình chuẩn sau:
- Ngôn ngữ lập trình PHP: Ngôn ngữ kịch bản phía máy chủ (back-end) mã nguồn mở, nhúng trực tiếp trong mã HTML. Tác giả dẫn chứng PHP chiếm hơn 70% tổng số website trên thế giới và là nền tảng của nhiều hệ quản trị nội dung như WordPress, Joomla, Drupal. PHP được lựa chọn nhờ cú pháp quen thuộc (gần với C/C++), cộng đồng lớn, hỗ trợ xử lý tập tin, biểu mẫu (form), cookie, phiên làm việc và kết nối cơ sở dữ liệu.
- Hệ quản trị cơ sở dữ liệu quan hệ MySQL: Giải pháp lưu trữ dữ liệu dạng bảng quan hệ của Tập đoàn Oracle, sử dụng ngôn ngữ truy vấn có cấu trúc (SQL), phù hợp cho các ứng dụng quy mô vừa và nhỏ. Tác giả cũng phân tích nhược điểm của MySQL về độ tin cậy trong các hệ thống giao dịch đặc thù và dung lượng bị suy giảm tốc độ truy xuất khi bản ghi tăng đột biến.
- Mô hình kiến trúc MVC (Model – View – Controller): Phân tách phần mềm thành 3 thành phần độc lập: Model (quản lý logic dữ liệu và thao tác cơ sở dữ liệu), View (giao diện hiển thị và tiếp nhận tương tác người dùng), Controller (tiếp nhận yêu cầu từ View, gọi Model xử lý và chuyển kết quả hiển thị).
- Laravel Framework: Khung làm việc mã nguồn mở cho PHP xây dựng trên nền tảng MVC, cung cấp cấu trúc thư mục tiêu chuẩn gồm
app (chứa code cốt lõi, models, controllers), bootstrap, public, resources (chứa views, CSS, JS), routes (định tuyến web.php), storage, tests và vendor.
Phương pháp nghiên cứu thực tế được tác giả áp dụng là phương pháp phân tích và thiết kế hệ thống hướng đối tượng (OOAD) kết hợp ngôn ngữ mô hình hóa thống nhất (UML). Dữ liệu nghiên cứu được trích xuất từ quy trình bán lẻ thực tế, từ đó xác định danh từ làm lớp thực thể, phân tích quan hệ giữa các thực thể và mô hình hóa thành 18 kịch bản ca sử dụng (use case), hệ thống biểu đồ tuần tự và biểu đồ trạng thái cho từng chức năng.
Thiết kế và triển khai
Hệ thống website OGANI được thiết kế theo mô hình kiến trúc MVC ba tầng triển khai bằng Laravel và MySQL:
[Trình duyệt Người dùng / Admin]
[Controller Layer] (ProductController, OrderController, CategoryController, ...)
[Model Layer] (Product, Order, OrderDetail, Category, User, ...)
[Cơ sở dữ liệu MySQL]
Thiết kế dữ liệu và các lớp thực thể
Dựa trên phương pháp trích lọc danh từ từ mô tả bài toán, hệ thống định danh các thực thể dữ liệu chính:
| Lớp thực thể |
Phân loại |
Các thuộc tính được thiết kế |
Quan hệ chính |
User |
Đối tượng người |
Tên, email, mật khẩu, số điện thoại, giới tính |
Lớp cha của Customer và Admin |
Customer |
Đối tượng người |
Kế thừa User, bổ sung quyền khách hàng |
1 - n với Order, 1 - n với Comment |
Admin |
Đối tượng người |
Kế thừa User, bổ sung quyền quản trị |
Quản lý Product, Order, Category, User |
Product |
Đối tượng hàng hóa |
Tên, giá, ảnh, mô tả, số lượng, số lượng đã bán, bình luận, loại sản phẩm, hãng sản phẩm |
n - n với Customer, thuộc về Category, Brand |
Category |
Danh mục |
Tên danh mục, hình ảnh |
1 - n với Product |
Brand |
Hãng sản xuất |
Tên hãng |
1 - n với Product |
Order (Oder) |
Nghiệp vụ giao dịch |
Mã đơn hàng, thông tin khách hàng, tình trạng đơn hàng, tổng số tiền |
1 - n với OrderDetail |
OrderDetail |
Chi tiết giao dịch |
Tên sản phẩm, số lượng mua, tổng số tiền |
Thuộc về một Order cụ thể |
Comment |
Tương tác |
Nội dung, tên khách hàng, ngày bình luận |
Thuộc về Customer và Product |
Thiết kế luồng xử lý tương tác qua biểu đồ tuần tự
Các chức năng cốt lõi được tác giả thiết kế chi tiết bằng biểu đồ tuần tự, ánh xạ chính xác đến các phương thức của Controller và Model:
- Module quản lý sản phẩm:
ProductController tiếp nhận yêu cầu từ ManageProductView, gọi các phương thức index() (hiển thị danh sách qua Product::all()), create() / store() (lưu thông tin qua Product::save()), edit() / update() (tìm kiếm qua Product::find() và cập nhật), destroy() (xóa sản phẩm bằng Product::delete()).
- Module đặt hàng và thanh toán: Luồng tương tác giữa
HomeView, CartView, CheckOutView, OrderController và Model Order. Phương thức shopping_cart() hiển thị giỏ, checkout() kết xuất biểu mẫu thanh toán, và pay() kích hoạt phương thức create() để lưu thông tin hóa đơn.
- Module thêm vào giỏ hàng: Điều hướng qua
ProductDetailView và ProductController, gọi hàm find() dữ liệu sản phẩm và kích hoạt hàm addToCart() bổ sung dữ liệu vào phiên giỏ hàng (Cart::add()).
- Module quản lý danh mục và bình luận:
CategoryController và CommentController thực thi chu trình CRUD tương tự thông qua các phương thức index(), find(), destroy(), store().
Kết quả triển khai giao diện
Tác giả đã lập trình hoàn chỉnh 11 giao diện tương tác chính:
- Giao diện trang chủ (
HomeView): Trưng bày các khối sản phẩm nổi bật, thanh điều hướng tìm kiếm và giỏ hàng.
- Giao diện trang sản phẩm và chi tiết sản phẩm: Cung cấp bộ lọc, ảnh minh họa, giá bán, nút thêm vào giỏ hàng và danh sách phản hồi.
- Giao diện giỏ hàng và thanh toán: Hiển thị bảng tóm tắt đơn giá, số lượng, tổng tiền (minh họa các mặt hàng như Bí đao xanh 9.999 VNĐ, Táo 100.000 VNĐ) và biểu mẫu thu thập thông tin người nhận (Họ tên, SĐT, Email, Số thẻ, Hạn mức, Địa chỉ).
- Hệ thống giao diện quản trị (Admin): Bảng điều khiển quản lý danh mục sản phẩm, quản lý danh sách sản phẩm, quản lý hãng sản xuất, quản lý đơn hàng (cập nhật trạng thái hoàn thành/hủy), quản lý tài khoản người dùng, quản lý bình luận và báo cáo thống kê doanh số.
Nội dung chính theo từng chương
Chương 1. Cơ sở lý thuyết
Chương 1 hệ thống hóa toàn bộ các kiến thức công nghệ được sử dụng làm nền tảng cho đồ án. Tác giả trình bày chi tiết về:
- Định nghĩa, lịch sử và cơ chế hoạt động của ngôn ngữ PHP, lý do lựa chọn PHP trong phát triển ứng dụng web bán hàng.
- Hệ quản trị cơ sở dữ liệu quan hệ MySQL, cách thức lưu trữ dữ liệu theo bảng gồm dòng và cột, phân tích ưu điểm dễ tiếp cận và các hạn chế liên quan đến hiệu năng xử lý lượng dữ liệu cực lớn.
- Khái niệm mô hình kiến trúc phần mềm MVC, phân tích chi tiết vai trò của Model, View, Controller và mối quan hệ gián tiếp giữa View và Model thông qua Controller.
- Laravel Framework: Giới thiệu cấu trúc thư mục dự án (
app, bootstrap, public, resources, routes, storage, tests, vendor), cơ chế định tuyến (routing) xử lý HTTP request qua web.php và khả năng tích hợp sẵn các hàm hỗ trợ tối ưu hóa quy trình bảo trì, triển khai.
Chương 2. Phân tích thiết kế hệ thống
Chương 2 là nội dung trọng tâm của đồ án, chiếm dung lượng lớn nhất (từ trang 6 đến trang 42), bao gồm:
- Phát biểu bài toán và yêu cầu phi chức năng: Đặt ra yêu cầu về giao diện, độ tin cậy, tốc độ xử lý và tính tương thích trình duyệt.
- Xác định tác nhân (Actors): Xác định rõ 2 tác nhân chính tham gia hệ thống là Khách hàng (Customer) và Quản trị viên (Admin).
- Hệ thống Use Case và kịch bản: Xây dựng bảng tóm tắt use case tổng quan (Bảng 2.1) cùng 18 bảng kịch bản chi tiết bao gồm tiền điều kiện, hậu điều kiện, chuỗi sự kiện chính và ngoại lệ cho từng chức năng:
- Bảng 2.2 & 2.3: Kịch bản đăng ký và đăng nhập tài khoản.
- Bảng 2.4, 2.5, 2.6, 2.7: Kịch bản xem sản phẩm, đặt hàng - thanh toán, thêm giỏ hàng, gửi bình luận đánh giá.
- Bảng 2.8, 2.9, 2.10: Kịch bản thêm, sửa, xóa danh mục sản phẩm của Admin.
- Bảng 2.11, 2.12, 2.13: Kịch bản thêm, sửa, xóa sản phẩm của Admin.
- Bảng 2.14 & 2.15: Kịch bản xóa và tìm kiếm tài khoản người dùng.
- Bảng 2.16 & 2.17: Kịch bản xem chi tiết đơn hàng và cập nhật trạng thái đơn hàng.
- Bảng 2.18: Kịch bản duyệt và xóa bình luận.
- Biểu đồ trạng thái: Xây dựng 7 biểu đồ trạng thái (Hình 2.13 đến 2.20) mô tả vòng đời và các bước chuyển đổi trạng thái của đăng ký/đăng nhập, đặt hàng, quản lý người dùng, quản lý sản phẩm, quản lý danh mục, quản lý bình luận và đơn hàng.
- Biểu đồ tuần tự: Xây dựng 7 biểu đồ tuần tự (Hình 2.21 đến 2.31) xác định tương tác thời gian thực giữa giao diện (View), lớp điều khiển (Controller), lớp truy xuất dữ liệu (DAO/Model) cho toàn bộ các ca sử dụng.
- Phân tích lớp và cơ sở dữ liệu: Trích xuất các lớp thực thể từ văn bản mô tả, xác định thuộc tính, quan hệ kết hợp và hoàn thiện biểu đồ thiết kế cơ sở dữ liệu vật lý (Hình 2.34).
Chương 3. Cài đặt và kết quả triển khai hệ thống
Chương 3 tập trung vào việc hiện thực hóa các mô hình thiết kế thành sản phẩm phần mềm thực tế:
- Liệt kê các công cụ, môi trường phát triển tích hợp (IDE), thư viện hỗ trợ lập trình giao diện HTML, CSS, JavaScript và cơ sở dữ liệu MySQL.
- Hiện thực hóa và chụp ảnh minh chứng 11 màn hình giao diện thực tế (Hình 3.1 đến 3.11): từ giao diện trang chủ, trang lọc sản phẩm, chi tiết sản phẩm, giỏ hàng, thanh toán đến toàn bộ giao diện quản trị phân hệ Admin (quản lý sản phẩm, danh mục, thương hiệu/hãng, đơn hàng, thống kê doanh số theo ngày/tháng/năm và quản lý bình luận).
- Mục "Kết luận và hướng phát triển" đưa ra đánh giá tổng quát về mức độ hoàn thành chức năng của đồ án và xác định các hướng mở rộng tiếp theo.
Kết quả và đóng góp
Khóa luận đã ghi nhận các kết quả cụ thể theo đúng nội dung tác giả trình bày:
- Xây dựng thành công hệ thống website thương mại điện tử OGANI hoàn chỉnh, đáp ứng đầy đủ các chức năng mua bán trực tuyến cho khách hàng và vận hành cho người quản lý.
- Chuẩn hóa tài liệu kỹ thuật bao gồm: 1 bảng tóm tắt use case tổng thể, 17 bảng kịch bản use case chuẩn có cấu trúc chặt chẽ (luồng sự kiện chính, ngoại lệ, tiền/hậu điều kiện), 34 hình vẽ biểu đồ thiết kế UML (use case tổng quan/chi tiết, trạng thái, tuần tự, lớp thực thể, CSDL quan hệ) và 11 màn hình giao diện đã lập trình xong.
- Cung cấp mô hình xử lý giỏ hàng và thanh toán trực tuyến mô phỏng đầy đủ dữ liệu đặt hàng (thông tin người nhận, thẻ thanh toán, địa chỉ, đơn giá, số lượng).
- Phân tách độc lập các khối mã nguồn dựa trên cấu trúc thư mục tiêu chuẩn của Laravel Framework, giúp ứng dụng có khả năng bảo trì và phát triển tiếp mà không làm xáo trộn kiến trúc hệ thống.
Hạn chế và hướng nghiên cứu tiếp
Theo công bố tại mục phạm vi bài toán (Mục 2.1) và phần kết luận của đồ án, tác giả chỉ ra các hạn chế và định hướng phát triển:
- Hạn chế của hệ thống:
- Chưa xây dựng phân hệ tư vấn khách hàng trực tuyến (chat/cskh trực tiếp trên web).
- Chưa có phân hệ quản lý nhân viên nội bộ và phân quyền chi tiết cho từng cấp bậc nhân viên.
- Chưa tích hợp module quản lý nhà cung cấp hàng hóa và quản lý thông tin thời gian làm việc (chấm công).
- Cổng thanh toán mới dừng lại ở mức độ biểu mẫu tiếp nhận thông tin thẻ mô phỏng, chưa tích hợp API cổng thanh toán trung gian thực tế của các ngân hàng hay ví điện tử.
- Khả năng chịu tải đồng thời của ứng dụng PHP/MySQL ở mức cơ bản, chưa được kiểm thử tải lớn đối với các đợt mua sắm cao điểm.
- Hướng phát triển:
- Mở rộng các chức năng còn thiếu: phát triển module tư vấn trực tuyến, quản lý nhân viên, quản lý chuỗi cung ứng và kho hàng.
- Tích hợp các cổng thanh toán điện tử thực tế phổ biến tại Việt Nam.
- Nghiên cứu tối ưu hóa cơ sở dữ liệu và bộ nhớ đệm (caching) để nâng cao tốc độ truy xuất dữ liệu khi số lượng bản ghi và người dùng tăng cao.
Giá trị tham khảo
Đồ án là tài liệu tham khảo phù hợp cho sinh viên chuyên ngành Công nghệ thông tin, Hệ thống thông tin, Kỹ thuật phần mềm đang chuẩn bị thực hiện đồ án tốt nghiệp hoặc bài tập lớn về thương mại điện tử:
- Tài liệu hữu ích cho:
- Sinh viên ngành Hệ thống thông tin, Công nghệ phần mềm cần một cấu trúc đồ án chuẩn mực theo tiến trình phân tích thiết kế hướng đối tượng (OOAD).
- Lập trình viên mới bắt đầu tiếp cận việc xây dựng ứng dụng web bằng Laravel Framework và mô hình MVC.
- Nội dung đáng tham khảo nhất:
- Chương 2 của đồ án là tài liệu mẫu rõ ràng về việc mô hình hóa bài toán từ mô tả văn bản sang biểu đồ Use Case, xây dựng kịch bản Use Case chuẩn (Bảng 2.2 đến 2.18) và biểu đồ tuần tự ánh xạ chính xác đến các phương thức Controller trong Laravel (
index, store, update, destroy, find).
Câu hỏi thường gặp
1. Hệ thống website OGANI trong đồ án giới hạn phạm vi những chức năng nào và loại trừ những chức năng nào?
Theo Mục 2.1 (trang 6-7), phạm vi hệ thống bao gồm: Khách hàng đặt mua hàng, Quản lý sản phẩm, Quản lý tài khoản khách hàng, Quản lý đơn hàng, Quản lý danh mục, Quản lý hãng, Quản lý bình luận và Thống kê doanh số. Hệ thống không bao gồm 4 chức năng: Tư vấn khách hàng, Quản lý nhân viên, Quản lý nhà cung cấp và Quản lý thông tin thời gian làm việc.
2. Quá trình đặt hàng và thanh toán trên website yêu cầu người dùng cung cấp những trường thông tin cụ thể nào?
Căn cứ Bảng 2.5 (Kịch bản chuẩn đặt hàng và thanh toán, trang 13), khi khách hàng nhấn nút thanh toán từ giỏ hàng, hệ thống hiển thị biểu mẫu yêu cầu nhập 6 trường thông tin bắt buộc: Họ và tên, Số điện thoại, Email, Số thẻ, Hạn mức hàng tháng và Địa chỉ nhận hàng.
3. Phân hệ quản trị (Admin) cung cấp những chức năng thống kê và quản lý nghiệp vụ nào?
Theo Bảng 2.1 và danh mục giao diện (Chương 3), Admin được cung cấp các chức năng: Xem thống kê doanh số bán hàng theo ngày/tháng/năm; Thêm, sửa, xóa sản phẩm; Thêm, sửa, xóa danh mục sản phẩm; Thêm, sửa, xóa hãng sản phẩm; Tìm kiếm và xóa tài khoản người dùng; Xem chi tiết đơn hàng và cập nhật trạng thái đơn hàng; Xem và xóa bình luận của khách hàng.
4. Các lớp thực thể (Entities) chính và mối quan hệ của chúng được thiết kế như thế nào trong đồ án?
Theo Mục 2.7 (trang 38), hệ thống trích xuất: Lớp người dùng gồm User (lớp cha), Customer và Admin (kế thừa User); Lớp vật thể gồm Product, Category, Brand; Lớp thông tin giao dịch gồm Order (Oder), OrderDetail, Comment. Mối quan hệ được xác định: Customer – Order là quan hệ 1 - n; Customer – Comment là quan hệ 1 - n; Product – Customer là quan hệ n - n; Product – Giỏ hàng là quan hệ n - n; Admin quản lý nhiều User, Product, Order (quan hệ 1 - n).
5. Biểu đồ tuần tự cho chức năng thêm sản phẩm định nghĩa những phương thức nào giữa View, Controller và Model?
Theo Biểu đồ tuần tự Hình 2.23 (trang 33), Admin tương tác với ManageProductView chọn thêm sản phẩm, view gọi hàm create() của ProductController để trả về giao diện CreateProduct. Khi Admin nhập thông tin và xác nhận, view gọi hàm store() của controller, controller kích hoạt hàm save() trên Model Product để lưu dữ liệu vào cơ sở dữ liệu và trả về thông báo hoàn thành.
Kết luận
Đồ án tốt nghiệp "Xây dựng website bán thực phẩm và hàng tiêu dùng thiết yếu" của sinh viên Trần Ngọc Huy đã giải quyết bài toán cấp thiết về cung ứng nhu yếu phẩm an toàn trong giai đoạn dịch bệnh thông qua nền tảng thương mại điện tử. Công trình tuân thủ chặt chẽ quy trình công nghệ phần mềm với hệ thống phân tích thiết kế UML, kịch bản ca sử dụng và kiến trúc MVC trên nền tảng Laravel - MySQL được mô hình hóa chi tiết. Mặc dù còn giới hạn ở các phân hệ quản lý doanh nghiệp chuyên sâu và tích hợp cổng thanh toán thực tế, đồ án đã hoàn thành trọn vẹn mục tiêu nghiên cứu và là tài liệu kỹ thuật có giá trị tham khảo tốt cho sinh viên ngành công nghệ thông tin.