Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh hoạt động mua sắm trực tuyến phát triển mạnh mẽ, nhu cầu số hóa quy trình kinh doanh và giao dịch thương mại giữa doanh nghiệp và người tiêu dùng cá nhân ngày càng trở nên thiết yếu. Đề tài "Hệ thống thương mại điện tử" được thực hiện trong khuôn khổ Đồ án tổng hợp (học kỳ HK241, năm 2024) thuộc định hướng Hệ thống thông tin, Khoa Khoa học và Kỹ thuật Máy tính, Trường Đại học Bách khoa – Đại học Quốc gia TP.HCM, dưới sự hướng dẫn của giảng viên Lê Thị Bảo Thu.
Nghiên cứu tập trung giải quyết bài toán xây dựng nền tảng thương mại điện tử B2C (Business-to-Consumer) chuyên biệt phục vụ phân phối các thiết bị công nghệ và điện tử. Nhóm thực hiện gồm 4 sinh viên: Huỳnh Bảo Ngọc (MSSV 2212257), Mai Đăng Dương (MSSV 2210612), Đồng Mạnh Cường (MSSV 2210420) và Hồ Quang Long (MSSV 2211878).
Hệ thống được xác định phục vụ các mục tiêu và yêu cầu nghiệp vụ cụ thể sau:
- Xây dựng nền tảng bán hàng trực tuyến B2C cho các danh mục sản phẩm thiết bị điện tử: điện thoại, máy tính bảng (tablet), máy tính xách tay (laptop) và các phụ kiện liên quan, hỗ trợ phân loại theo hãng sản xuất và tầm giá.
- Đáp ứng 12 nhóm chức năng cốt lõi của một hệ sinh thái thương mại điện tử, bao gồm:
- Quản lý người sử dụng: thêm, xóa, sửa, cập nhật thông tin và theo dõi lịch sử giao dịch của khách vãng lai (Guest), khách hàng (Customer) và quản trị viên/chủ shop (Admin).
- Quản trị danh mục và dữ liệu: tạo mới, cập nhật và xóa thông tin sản phẩm, mã khuyến mãi và tài khoản người dùng.
- Quản lý giỏ hàng: cho phép thêm, xóa sản phẩm và tính toán tổng chi phí giỏ hàng tức thời.
- Tìm kiếm và lọc sản phẩm: hỗ trợ tra cứu theo thương hiệu, khoảng giá và các từ khóa liên quan.
- Xử lý đơn hàng và thanh toán: tích hợp áp dụng voucher khuyến mãi, liên kết ngân hàng hoặc trừ số dư ví tài khoản nội bộ.
- Quản trị khuyến mãi: thiết lập mã giảm giá theo số lượng, thời hạn hiệu lực, đối tượng sản phẩm và phân loại khách hàng áp dụng.
- Quản lý lịch sử giao dịch: tự động ghi nhận nhật ký giao dịch cho cả người mua và quản trị viên tra cứu.
- Hệ thống thông báo: gửi thông báo biến động số dư (nạp/rút tiền), trạng thái giao dịch, quảng cáo và gợi ý ưu đãi.
- Đánh giá sản phẩm: cho phép người mua phản hồi, chấm điểm xếp hạng công khai trên từng sản phẩm.
- Thống kê và báo cáo doanh thu: hỗ trợ chủ shop trích xuất số liệu doanh thu theo mốc thời gian và danh mục mặt hàng.
Phạm vi nghiên cứu bao trùm toàn bộ chu trình kỹ thuật phần mềm hướng hệ thống thông tin: từ khảo sát yêu cầu, phân tích ca sử dụng (Use Case), thiết kế cơ sở dữ liệu quan hệ (ERD/EERD và ánh xạ quan hệ), thiết kế mẫu giao diện trực quan (Figma Prototype), đến lập trình hiện thực hóa các dịch vụ backend API và giao diện frontend.
Cơ sở lý thuyết và phương pháp
Đồ án áp dụng phương pháp luận phân tích và thiết kế hệ thống thông tin kết hợp triển khai phần mềm theo kiến trúc phân tầng:
- Mô hình hóa nghiệp vụ bằng Use Case: Phân rã hệ thống thành các nhóm chức năng tương ứng với từng tác nhân (Guest, Customer, Admin/Chủ shop), lập bảng đặc tả chi tiết cho từng use-case bao gồm điều kiện tiên quyết (Preconditions), tác nhân kích hoạt (Trigger), luồng sự kiện chính (Main Steps), điều kiện sau (Post conditions) và luồng ngoại lệ (Exception Flows/Alternative Flows).
- Thiết kế cơ sở dữ liệu quan hệ: Xây dựng mô hình thực thể kết hợp mở rộng (EERD/ERD), chuẩn hóa và thực hiện kỹ thuật ánh xạ quan hệ (Relational Mapping) để chuyển đổi sang lược đồ cơ sở dữ liệu logic, đồng thời xác định các ràng buộc toàn vẹn khóa chính, khóa ngoại, tính duy nhất (Unique), trường bắt buộc (Not Null) và biểu thức kiểm tra (Check constraints).
- Thiết kế trải nghiệm và giao diện người dùng: Sử dụng công cụ Figma để xây dựng nguyên mẫu tương tác (Prototype) hoàn chỉnh cho cả hai phân hệ: giao diện khách hàng và bảng điều khiển quản trị.
- Phương pháp kỹ thuật và ngăn xếp công nghệ:
- Tầng Backend: Sử dụng môi trường Node.js kết hợp framework Express để xây dựng hệ thống RESTful API tiếp nhận và xử lý yêu cầu.
- Tầng Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL, thiết lập kết nối đồng bộ với backend.
- Tầng Frontend: Xây dựng giao diện web phân tách độc lập với backend, giao tiếp qua giao thức HTTP/HTTPS và định dạng dữ liệu JSON.
Thiết kế và triển khai
Kiến trúc cơ sở dữ liệu logic
Lược đồ cơ sở dữ liệu của hệ thống gồm 10 bảng quan hệ chính với các ràng buộc nghiệp vụ được thiết lập chặt chẽ:
| Tên bảng |
Các thuộc tính (Thuộc tính gạch chân: Khóa chính) |
Ràng buộc khóa ngoại & Toàn vẹn dữ liệu |
USER |
userID, userName, password, firstName, lastName, email, gender, userType, birthday, total payment, indentificationNo |
Unique: userName, email. Not null: password, firstName, lastName, gender, userType. Check: Chuyên biệt hóa toàn phần (Total Specialization), ràng buộc rời rạc giữa Admin và Customer. |
USER'S ADDRESS |
userID, address, isdefault |
Foreign Key: userID tham chiếu đến USER.userID. Not null: isdefault. |
USER'S PHONE |
userID, phone |
Foreign Key: userID tham chiếu đến USER.userID. |
CATEGORY |
cateID, name |
Not null: name. |
PRODUCT |
productID, name, description, price, quantity, rating, category, brand, lastUpdated, sold |
Foreign Key: category tham chiếu đến CATEGORY.cateID. Not null: name, price, quantity, category, brand. Check: price > 0, quantity >= 0. |
PRODUCT'S IMAGES |
productID, imgUrl, ismain |
Foreign Key: productID tham chiếu đến PRODUCT.productID. |
REVIEW |
productID, userID, rating, comment, time |
Foreign Key: userID tham chiếu USER.userID, productID tham chiếu PRODUCT.productID. Not null: rating. Check: rating >= 1 AND rating <= 5. |
PROMOTION |
promotionID, name, quantity, description, startTime, endTime, minSpent, apply_id, apply_range, discountType, value, percentage, maxAmount |
Not null: name, minSpent, apply_range, discountType. Check: quantity >= 0, value < minSpent, maxAmount < minSpent. |
ORDER |
orderID, userID, status, createTime, doneTime, shippingAddress, shippingFee, estimatedDeliveryTime, receiveTime, shippingCompany, totalQuantity, totalPrice, finalPrice, promotionID |
Foreign Key: userID tham chiếu USER.userID, promotionID tham chiếu PROMOTION.promotionID. Not null: userID, status, shippingAddress, shippingCompany, totalQuantity, totalPrice, finalPrice. |
ORDER_INCLUDE |
orderID, productID, quantity, paidPrice |
Foreign Key: orderID tham chiếu ORDER.orderID, productID tham chiếu PRODUCT.productID. Not null: quantity, paidPrice. |
Quy trình và ngăn xếp công nghệ triển khai
Dự án được cấu hình và vận hành theo cấu trúc phân tách rõ ràng:
- Backend Service: Khởi tạo bằng Express framework, định tuyến các API phục vụ quản lý xác thực người dùng, xử lý đơn hàng, quản lý kho hàng và xử lý truy vấn dữ liệu từ cơ sở dữ liệu PostgreSQL.
- PostgreSQL Database: Thiết lập liên kết thông qua driver kết nối của Node.js, ánh xạ đúng các kiểu dữ liệu và thực thi các ràng buộc kiểm tra nghiệp vụ (check constraints).
- Cấu trúc thư mục: Ứng dụng được tổ chức thành các module riêng biệt: cấu trúc frontend (quản lý giao diện, trạng thái, routing phía client) và cấu trúc backend (quản lý controller, model, routes, cấu hình kết nối database).
Nội dung chính theo từng chương
Chương 1: Giới thiệu đề tài
Chương mở đầu trình bày bối cảnh thực tiễn của thị trường kinh doanh thiết bị công nghệ và lý do hình thành dự án. Nội dung mô tả chi tiết phạm vi mặt hàng bao gồm điện thoại, máy tính bảng, máy tính xách tay và phụ kiện. Chương này cũng chuẩn hóa 12 yêu cầu chức năng của hệ thống thương mại điện tử dành cho nhóm 4 thành viên thuộc chuyên ngành Hệ thống thông tin.
Chương 2: Phân công công việc
Trình bày ma trận phân nhiệm và khối lượng công việc được phân bổ đồng đều (mỗi thành viên đảm nhiệm 25% tổng khối lượng công việc):
| Thành viên |
MSSV |
Số lượng đầu việc chính |
Tỷ lệ đóng góp |
Các giai đoạn phụ trách chính |
| Huỳnh Bảo Ngọc |
2212257 |
10 |
25% |
Phân tích yêu cầu, thiết kế Figma, EERD/Ánh xạ, hiện thực database, tìm hiểu công nghệ, hiển thị/tìm kiếm/lọc sản phẩm, tạo/sửa/xóa sản phẩm và khuyến mãi, thanh toán, lịch sử người dùng. |
| Mai Đăng Dương |
2210612 |
11 |
25% |
Thiết kế EERD/Ánh xạ, hiện thực database, tạo dữ liệu mẫu, công nghệ, hiển thị/tìm kiếm/lọc, đánh giá sản phẩm, giỏ hàng, thông báo, thanh toán, lịch sử người dùng. |
| Đồng Mạnh Cường |
2210420 |
10 |
25% |
Thiết kế use-case hệ thống và đặc tả chi tiết, thiết kế EERD/Ánh xạ, tạo dữ liệu mẫu, công nghệ, giỏ hàng, thông báo, thanh toán, lịch sử người dùng. |
| Hồ Quang Long |
2211878 |
11 |
25% |
Thiết kế use-case hệ thống và đặc tả chi tiết, thiết kế EERD/Ánh xạ, tạo dữ liệu mẫu, công nghệ, hiển thị/tìm kiếm/lọc, đánh giá sản phẩm, tạo/sửa/xóa sản phẩm và khuyến mãi, thanh toán, lịch sử. |
Chương 3: Use-case của hệ thống
Chương này tập trung mô hình hóa và lập bảng đặc tả cho 16 ca sử dụng (từ S1 đến S16) được phân theo 3 nhóm tác nhân chính:
- Tác nhân Khách vãng lai (Guest):
- S1 (Đăng ký): Nhập thông tin tài khoản, hệ thống kiểm tra tính hợp lệ, lưu vào cơ sở dữ liệu và gửi email xác nhận.
- S2 (Đăng nhập): Xác thực email và mật khẩu, thiết lập phiên làm việc (session).
- S3 (Quên mật khẩu): Xác minh qua mã gửi về email để cấp lại mật khẩu.
- S4 (Xem sản phẩm) & S5 (Tìm kiếm sản phẩm): Tra cứu và xem thông tin chi tiết các sản phẩm đang bán.
- Tác nhân Khách hàng (Customer):
- S6 (Đánh giá sản phẩm): Nhập nội dung đánh giá và chấm điểm cho các sản phẩm đã hoàn tất thanh toán.
- S7 (Sử dụng khuyến mãi): Áp dụng mã giảm giá hợp lệ vào đơn hàng.
- S8 (Đặt hàng): Hỗ trợ đặt hàng trực tiếp từ trang chi tiết sản phẩm hoặc đặt hàng qua giỏ hàng, cập nhật địa chỉ giao hàng và phương thức thanh toán.
- S9 (Quản lý giỏ hàng): Thêm, xóa sản phẩm, điều chỉnh số lượng và tính tổng giá trị tức thời.
- S10 (Xem lịch sử giao dịch) & S11 (Xem thông báo): Tra cứu chi tiết từng đơn hàng đã đặt và theo dõi các thông báo hệ thống.
- Tác nhân Chủ shop (Admin):
- S12 (Quản lý sản phẩm): Thực hiện thêm mới, chỉnh sửa thông tin, xóa và tra cứu sản phẩm trong kho.
- S13 (Quản lý khách hàng): Tìm kiếm hồ sơ, xóa thông tin khách hàng và theo dõi lịch sử giao dịch của người dùng.
- S14 (Thống kê doanh thu): Lọc doanh thu theo khoảng thời gian, xem tổng đơn hàng, sản phẩm bán chạy và xuất báo cáo.
- S15 (Thông báo): Soạn thảo và gửi thông báo chung hoặc thông báo khuyến mãi đến người dùng.
- S16 (Quản lý khuyến mãi): Thiết lập các chương trình khuyến mãi (tạo, sửa, xóa mã voucher).
Chương 4: Thiết kế cơ sở dữ liệu
Bao gồm thiết kế ý niệm với mô hình thực thể kết hợp (ERD/EERD) và thiết kế logic chuyển đổi sang 10 bảng quan hệ dữ liệu. Báo cáo định nghĩa đầy đủ các khóa chính, khóa ngoại tham chiếu chéo, các ràng buộc kiểu thực thể con (specialization/disjoint) và điều kiện kiểm tra giá trị nghiệp vụ (như giá tiền price > 0, số sao đánh giá rating >= 1 AND rating <= 5, điều kiện giá trị khuyến mãi value < minSpent).
Chương 5: Thiết kế prototype bằng Figma
Tổng hợp toàn bộ các mẫu giao diện nguyên mẫu được dựng trên nền tảng Figma cho cả hai luồng người dùng:
- Phía người dùng: Giao diện Đăng ký, Đăng nhập, Trang chủ, Mua sắm, Chi tiết sản phẩm, Giỏ hàng, Đặt hàng, Lịch sử mua hàng, Quản lý tài khoản cá nhân.
- Phía quản trị viên: Giao diện Quản lý người dùng, Chi tiết người dùng, Quản lý sản phẩm, Thêm mã giảm giá.
Chương 6: Tìm hiểu công nghệ
Khảo sát các công nghệ cốt lõi phục vụ xây dựng hệ thống phần mềm và quy trình cài đặt môi trường phát triển cục bộ cho toàn bộ nhóm thực hiện.
Chương 7: Thiết lập dự án
Trình bày các bước cấu hình kỹ thuật của dự án: cài đặt framework Express để khởi tạo các endpoint API, thiết lập cấu trúc mã nguồn phân tách giữa frontend và backend, cấu hình kết nối từ backend đến hệ quản trị cơ sở dữ liệu PostgreSQL, quy trình khởi chạy dự án và mô tả chi tiết cây thư mục dự án.
Chương 8: Giao diện hiện thực
Trình bày kết quả lập trình giao diện thực tế của hệ thống sau khi tích hợp hoàn chỉnh với backend và cơ sở dữ liệu:
- Giao diện người dùng: Màn hình tạo tài khoản, lọc sản phẩm theo danh mục, trang chi tiết sản phẩm, chức năng thêm đánh giá, theo dõi lịch sử mua hàng và quản lý thông tin tài khoản cá nhân.
- Giao diện quản trị (Admin): Trang quản lý sản phẩm, trang quản lý người dùng, trang quản lý và tạo mới mã giảm giá, form tạo mới sản phẩm và bảng thông tin chi tiết người dùng.
Chương 9: Mã nguồn
Cung cấp và lưu trữ toàn bộ các đoạn mã nguồn hiện thực hóa các chức năng của ứng dụng theo kiến trúc đã thiết kế.
Kết quả và đóng góp
- Hoàn thiện đầy đủ quy trình kỹ thuật hệ thống thông tin: Báo cáo dài 77 trang thể hiện trọn vẹn các giai đoạn phát triển phần mềm chuẩn mực từ tiếp nhận yêu cầu, phân tích đặc tả 16 ca sử dụng, thiết kế ERD/EERD và ánh xạ logic sang 10 bảng cơ sở dữ liệu.
- Xây dựng hệ thống phần mềm B2C chức năng hoàn chỉnh:
- Triển khai thành công 12 nhóm chức năng chính phục vụ đầy đủ 3 đối tượng tác nhân (Guest, Customer, Admin).
- Tích hợp các ràng buộc dữ liệu toàn vẹn ngay tại mức cơ sở dữ liệu (PostgreSQL) và tầng xử lý nghiệp vụ (Express API).
- Hoàn thiện chu trình mua sắm trực tuyến khép kín từ tìm kiếm, xem chi tiết, giỏ hàng, áp dụng voucher khuyến mãi, đặt hàng, quản lý đơn hàng đến đánh giá sản phẩm.
- Cung cấp giao diện quản trị trực quan cho phép theo dõi doanh thu, điều hành kho sản phẩm, người dùng và hệ thống khuyến mãi.
- Tài liệu hóa thiết kế trực quan: Xây dựng đầy đủ bộ nguyên mẫu tương tác trên Figma tương ứng với từng màn hình hiện thực thực tế.
Hạn chế và hướng nghiên cứu tiếp
Căn cứ trên nội dung và phạm vi triển khai của đồ án:
- Hệ thống tập trung triển khai mô hình B2C đơn cửa hàng (một chủ shop/admin quản lý), chưa mở rộng sang mô hình sàn thương mại điện tử đa người bán (Multi-vendor marketplace / C2C).
- Khâu thanh toán hiện thực ở mức mô phỏng liên kết ngân hàng và trừ tiền ví tài khoản nội bộ, chưa tích hợp trực tiếp qua các cổng thanh toán trung gian trực tuyến thương mại (như VNPay, MoMo, ZaloPay).
- Các chức năng thông báo vận hành nội bộ trong hệ thống và qua xác thực email, có thể mở rộng thêm các kênh thông báo đẩy (Push Notifications) thời gian thực hoặc SMS Gateway.
Giá trị tham khảo
Báo cáo đồ án là tài liệu tham khảo phù hợp cho:
- Sinh viên ngành Hệ thống thông tin, Công nghệ thông tin, Kỹ thuật Phần mềm đang thực hiện các đồ án môn học, đồ án tổng hợp hoặc khóa luận tốt nghiệp về xây dựng ứng dụng web thương mại điện tử.
- Tài liệu học thuật mẫu về phương pháp lập tài liệu đặc tả use-case chuẩn hóa (bảng mô tả ca sử dụng chi tiết gồm các luồng chính, luồng thay thế và ngoại lệ).
- Tham khảo mô hình thiết kế cơ sở dữ liệu quan hệ cho bài toán thương mại điện tử (các bảng
USER, PRODUCT, ORDER, PROMOTION, REVIEW và các ràng buộc toàn vẹn quan hệ).
Câu hỏi thường gặp
1. Hệ thống hỗ trợ những đối tượng người dùng nào và phân quyền ra sao?
Hệ thống phân chia 3 nhóm tác nhân rõ rệt:
- Guest (Khách vãng lai): Đăng ký tài khoản, đăng nhập, quên mật khẩu, tìm kiếm và xem chi tiết sản phẩm.
- Khách hàng (Customer): Quản lý giỏ hàng, đặt hàng, áp dụng khuyến mãi, thanh toán, xem lịch sử đơn hàng, nhận thông báo và viết đánh giá sản phẩm.
- Chủ shop / Admin: Quản lý danh mục và kho sản phẩm, quản lý khách hàng, cấu hình mã khuyến mãi, gửi thông báo hệ thống và thống kê doanh thu.
2. Ngăn xếp công nghệ (Tech Stack) chính được sử dụng để xây dựng hệ thống là gì?
Hệ thống sử dụng Figma cho giai đoạn thiết kế nguyên mẫu giao diện (prototype); tầng backend sử dụng framework Express (Node.js) để xây dựng hệ thống RESTful API; cơ sở dữ liệu sử dụng hệ quản trị PostgreSQL được liên kết đồng bộ với backend.
3. Cơ sở dữ liệu của hệ thống quản lý những thực thể nào và có những ràng buộc toàn vẹn đặc thù nào?
Cơ sở dữ liệu gồm 10 bảng: USER, USER'S ADDRESS, USER'S PHONE, CATEGORY, PRODUCT, PRODUCT'S IMAGES, REVIEW, PROMOTION, ORDER, và ORDER_INCLUDE. Một số ràng buộc tiêu biểu gồm: kiểm tra giá sản phẩm (price > 0), số lượng kho (quantity >= 0), điểm đánh giá (rating từ 1 đến 5 sao), giá trị khuyến mãi (value < minSpent và maxAmount < minSpent), cùng các ràng buộc tính duy nhất của email và tên đăng nhập (userName).
4. Luồng xử lý đặt hàng của khách hàng hỗ trợ những hình thức nào?
Theo đặc tả ca sử dụng S8, khách hàng có thể chọn 2 luồng: đặt hàng trực tiếp ngay từ trang chi tiết sản phẩm (Alternative Flow 1) hoặc thêm sản phẩm vào giỏ hàng, điều chỉnh số lượng rồi tiến hành đặt hàng từ giỏ hàng (Alternative Flow 2). Khách hàng có thể áp dụng mã khuyến mãi và nhập địa chỉ giao hàng trước khi chuyển sang bước thanh toán.
5. Chức năng thống kê doanh thu dành cho quản trị viên cung cấp các thông tin gì?
Theo ca sử dụng S14, chủ shop có thể lọc báo cáo theo khoảng thời gian tùy chọn để xem các thông số: tổng doanh thu, tổng số lượng đơn hàng đã thực hiện, danh sách các sản phẩm bán chạy và hỗ trợ xuất báo cáo thống kê.
Kết luận
Đồ án tổng hợp "Báo cáo Hệ thống thương mại điện tử" của nhóm sinh viên Khoa Khoa học và Kỹ thuật Máy tính, Trường Đại học Bách khoa – ĐHQG TP.HCM đã hoàn thành xuất sắc việc xây dựng một hệ thống thương mại điện tử B2C toàn diện cho các thiết bị công nghệ. Báo cáo phản ánh một quy trình phát triển phần mềm chặt chẽ từ khảo sát, phân tích use-case, thiết kế cơ sở dữ liệu PostgreSQL chuẩn hóa, tạo mẫu Figma đến hiện thực hóa API bằng Express và giao diện người dùng. Công trình đóng vai trò là một tài liệu kỹ thuật và học thuật mẫu mực cho sinh viên định hướng Hệ thống thông tin tham khảo và phát triển các hệ thống tương tự.