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

Trong nền kinh tế số, thương mại điện tử (TMĐT) đã trở thành một phương thức phân phối và kinh doanh quan trọng trên phạm vi toàn cầu. Đối với ngành hàng xuất bản phẩm và sách truyền thống, sự phổ biến của mạng Internet cùng các thiết bị di động đã thay đổi căn bản hành vi mua sắm của người tiêu dùng, mở ra nhu cầu lớn về các nền tảng phân phối sách trực tuyến chuyên biệt, tiện lợi và tương tác đa chiều.

Đề tài "Xây dựng Website Sàn thương mại điện tử bán sách - CartRead" được thực hiện trong khuôn khổ học phần Phát triển hệ thống thương mại điện tử (Fintech) tại Khoa Tài chính - Kế toán 1, Học viện Công nghệ Bưu chính Viễn thông (Hà Nội, 2024), dưới sự hướng dẫn của PGS. TS. Đỗ Quang Hưng. Nhóm tác giả gồm 5 sinh viên: Nguyễn Đức Anh (B21DCTC017), Phạm Tuấn Dũng (B21DCTC034), Nguyễn Thị Hà (B21DCTC040), Đặng Phương Uyên (B21DCTC102) và Nguyễn Thị Hồng Vân (B21DCTC104).

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:

  1. Xây dựng một website sàn thương mại điện tử chuyên biệt phục vụ hoạt động mua bán sách trực tuyến mang tên CartRead, kết hợp giữa tính tiện lợi và trải nghiệm người dùng.
  2. Cung cấp không gian tương tác trực tuyến cho phép khách hàng tìm kiếm, xem thông tin chi tiết và đặt mua sách dễ dàng; đồng thời hỗ trợ người bán quản lý sản phẩm, đơn hàng, doanh thu và tương tác với người mua.
  3. Thiết lập hệ thống quản trị (Admin) toàn diện nhằm giám sát giao dịch thanh toán, quá trình xử lý đơn hàng, danh mục sản phẩm và tạo lập báo cáo thống kê hoạt động kinh doanh.
  4. Vận dụng quy trình phân tích thiết kế hệ thống hướng đối tượng và công nghệ web hiện đại vào việc xây dựng phần mềm thương mại điện tử thực tế.

Đối tượng nghiên cứu là quy trình nghiệp vụ và kiến trúc kỹ thuật của một sàn thương mại điện tử bán sách đa người bán (multi-vendor marketplace). Phạm vi nghiên cứu tập trung vào việc mô hình hóa chức năng, thiết kế cơ sở dữ liệu và triển khai giao diện hệ thống cho ba nhóm tác nhân chính (Khách hàng, Người bán, Nhà quản trị) trong môi trường thử nghiệm.

Cơ sở lý thuyết và phương pháp tiếp cận

Đồ án áp dụng phương pháp phân tích và thiết kế hệ thống hướng đối tượng (Object-Oriented Analysis and Design - OOAD), sử dụng ngôn ngữ mô hình hóa thống nhất (UML) kết hợp sơ đồ phân rã chức năng nghiệp vụ (Business Function Diagram - BFD) để đặc tả cấu trúc và hành vi hệ thống.

Các công cụ và khung công nghệ được tác giả sử dụng bao gồm:

Phân loại Công nghệ / Công cụ Mục đích sử dụng trong hệ thống
Ngôn ngữ lập trình JavaScript Ngôn ngữ phát triển toàn diện cho cả giao diện người dùng và máy chủ
Frontend ReactJS, Tailwind CSS Xây dựng giao diện ứng dụng web đơn trang (SPA) và định kiểu giao diện đáp ứng
Backend NodeJS, Express, Socket.IO Xây dựng dịch vụ máy chủ, xử lý API và truyền thông tin nhắn thời gian thực (real-time chat)
Cơ sở dữ liệu MongoDB Atlas Hệ quản trị cơ sở dữ liệu tài liệu NoSQL trên nền tảng đám mây
Phân tích & thiết kế Visual Paradigm CE Xây dựng sơ đồ BFD, biểu đồ Use Case, biểu đồ tuần tự (Sequence) và biểu đồ lớp (Class)
Môi trường phát triển Visual Studio Code Trình soạn thảo và phát triển mã nguồn

Nguồn dữ liệu của đồ án gồm các tập dữ liệu thử nghiệm về danh mục sách, tài khoản người dùng, đơn hàng và các giao dịch rút tiền được lưu trữ trực tiếp trên cụm cơ sở dữ liệu đám mây MongoDB Atlas.

Thiết kế và triển khai

Hệ thống được tổ chức xoay quanh ba tác nhân chính với các vai trò và quyền hạn phân định rõ ràng:

  1. ADMIN (Nhà quản trị): Quản lý người dùng và phân quyền (cấp quyền Admin, Người bán, Khách hàng; khóa/mở khóa hoặc xóa tài khoản); giám sát giao dịch thanh toán và các yêu cầu rút tiền của người bán; giám sát quá trình xử lý đơn hàng; giám sát danh mục sản phẩm; xuất báo cáo thống kê doanh thu; tiếp nhận và hỗ trợ người dùng qua hộp thoại trực tuyến.
  2. Người bán hàng (Seller): Đăng ký và quản lý tài khoản cửa hàng; quản lý danh mục sản phẩm sách (thêm, cập nhật giá, số lượng tồn kho, mô tả, xóa sách); tiếp nhận, đóng gói và bàn giao đơn hàng cho đơn vị vận chuyển; theo dõi yêu cầu rút tiền; phản hồi tin nhắn khách hàng; xem báo cáo doanh thu và tỷ lệ bán hàng.
  3. Khách hàng (Customer): Đăng ký/đăng nhập tài khoản; tìm kiếm và xem chi tiết sản phẩm; quản lý giỏ hàng (thêm, sửa số lượng, xóa); thực hiện đặt hàng và thanh toán (chọn phương thức PayPal hoặc thanh toán khi nhận hàng - COD, áp dụng mã giảm giá voucher); theo dõi lịch sử và trạng thái đơn hàng; hủy đơn hàng chưa giao; đánh giá và nhận xét chất lượng sách.

Mô hình lớp đối tượng của hệ thống bao gồm 11 lớp chính: Nguoidung, Admin, Nguoiban, Khachhang, Sach, Donhang, Giohang, Danhgia, Vanchuyen, Danhmucsach và Hinhanh.

Hệ thống cơ sở dữ liệu NoSQL được xây dựng trên MongoDB Atlas với 9 collections. Số liệu thống kê từ môi trường kiểm thử của đồ án ghi nhận:

  • Logical Data Size: 135.87 KB
  • Storage Size: 376 KB
  • Index Size: 300 KB
  • Tổng số Collections: 9
Tên Collection Số lượng bản ghi (Docs) Kích thước dữ liệu logic Các trường dữ liệu chính (Schema)
conversations 4 1.03 KB _id, groupTitle, lastMessage, lastMessageId, members, createdAt, updatedAt
coupouncodes 1 150 B _id, name, shopId, value, minAmount, maxAmount, createdAt
events 1 1.93 KB _id, name, category, originalPrice, discountPrice, stock, sold_out, status, start_Date, finish_Date, shopId, images, tags
messages 9 1.46 KB _id, conversationId, sender, text, images, createdAt, updatedAt
orders 6 14.49 KB _id, cart, shippingAddress, user, shop, totalPrice, status, paymentInfo, paidAt, deliveredAt, createdAt
products 50 97.96 KB _id, name, category, description, originalPrice, discountPrice, stocks, sold_out, shop, shopId, images, tags, createdAt
shops 4 1.62 KB _id, name, email, password, phoneNumber, address, avatar, role, availableBalance, transaction, withdrawMethod, createdAt
users 6 1.73 KB _id, name, email, password, role, avatar, addresses, createdAt
withdraws 1 15.29 KB _id, amount, seller, status, createdAt, updatedAt

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

Lời mở đầu và Giới thiệu tổng quan hệ thống CartRead

Chương mở đầu trình bày tính cấp thiết của việc phát triển sàn thương mại điện tử chuyên biệt về sách trong bối cảnh chuyển đổi số. Tác giả xác định mục đích cốt lõi của website CartRead là kết nối người mua và người bán sách qua môi trường trực tuyến tiện lợi. Phần này thiết lập sơ đồ phân rã chức năng nghiệp vụ (BFD) phân bổ thành 4 nhánh: Quản lý người dùng, Quản lý bán hàng, Quản lý khách hàng và Báo cáo thống kê, đồng thời xác lập danh mục công nghệ và công cụ triển khai dự án.

Phần II - Thiết kế hệ thống

Chương II tập trung toàn bộ vào việc mô hình hóa hướng đối tượng cho hệ thống CartRead bằng Visual Paradigm CE:

  • Đặc tả Use Case và Kịch bản: Xây dựng biểu đồ Use Case tổng quát và 18 biểu đồ Use Case phân rã chi tiết kèm kịch bản cụ thể cho từng nghiệp vụ. Các quy trình được đặc tả gồm: Đăng ký/Đăng nhập (hỗ trợ xác thực qua form hoặc Google/Facebook); Quản lý tài khoản và phân quyền của Admin; Quản lý giao dịch, Giám sát đơn hàng, Giám sát sản phẩm, Báo cáo thống kê và Hỗ trợ người dùng qua chatbox của Admin; Tạo tài khoản người bán (kèm bước gửi liên kết xác nhận qua email), Quản lý sản phẩm, Xử lý đơn hàng, Quản lý tài khoản và Báo cáo thống kê của Người bán; Tìm kiếm và duyệt sản phẩm, Quản lý giỏ hàng, Đặt hàng/Thanh toán, Quản lý đơn hàng cá nhân và Quản lý tài khoản cá nhân của Khách hàng.
  • Biểu đồ tuần tự (Sequence Diagrams): Xây dựng 24 biểu đồ tuần tự chi tiết mô tả luồng thông điệp giữa các đối tượng giao diện (Form/GD), bộ điều khiển (Ctrl) và cơ sở dữ liệu/thực thể dữ liệu cho toàn bộ các chức năng từ đăng ký, đăng nhập, phân quyền, duyệt sản phẩm, thanh toán đến hủy đơn hàng và đánh giá.
  • Biểu đồ lớp (Class Diagram): Thiết lập biểu đồ lớp tổng thể và đặc tả chi tiết 11 lớp đối tượng bao gồm thuộc tính kiểu dữ liệu, phương thức xử lý và mối quan hệ liên kết giữa các thực thể (Nguoidung, Admin, Nguoiban, Khachhang, Sach, Donhang, Giohang, Danhgia, Vanchuyen, Danhmucsach, Hinhanh).

Phần III - Thiết kế cơ sở dữ liệu

Chương III trình bày kiến trúc cơ sở dữ liệu phi quan hệ NoSQL triển khai trên dịch vụ đám mây MongoDB Atlas:

  • Đưa ra bảng thống kê dữ liệu thực nghiệm trên cụm cơ sở dữ liệu gồm 9 collections với tổng dung lượng lưu trữ 376 KB và dung lượng logic 135.87 KB.
  • Chi tiết hóa cấu trúc lược đồ (schema) và bảng mô tả kiểu dữ liệu cho từng collection (conversations, coupouncodes, events, messages, orders, products, shops, users, withdraws), quy định rõ ràng các trường khóa chính (_id), kiểu dữ liệu chuỗi, số, mảng (array), đối tượng lồng (nested object) và trạng thái bắt buộc hoặc cho phép nhận giá trị rỗng (null).

Phần IV - Giao diện website sàn thương mại điện tử CartRead

Chương IV trình bày kết quả hiện thực hóa giao diện người dùng trên nền tảng web (chạy tại môi trường localhost:3000):

  • Phân hệ Khách hàng: Gồm giao diện trang chủ với danh mục sách phân loại (Văn học, Lịch sử, Viễn tưởng, Lãng mạn, Trinh thám, Hài kịch, Tiểu thuyết, Danh mục khác); giao diện form đăng ký và đăng nhập; giao diện tìm kiếm và hiển thị chi tiết sách (thông tin giá, số lượng đã bán, đánh giá sao); giao diện quản lý giỏ hàng; giao diện đặt hàng và chọn phương thức thanh toán (PayPal, thanh toán khi nhận hàng); giao diện theo dõi lịch sử đơn hàng và cập nhật thông tin cá nhân.
  • Phân hệ Người bán (Seller Dashboard): Gồm giao diện đăng ký mở cửa hàng và đăng nhập; giao diện quản lý gian hàng; dashboard tổng quan báo cáo thống kê doanh thu (tự động tính toán thu nhập sau khi khấu trừ 10% phí dịch vụ sàn); giao diện theo dõi các đơn đặt hàng; danh sách quản lý 51 sản phẩm sách (hỗ trợ phân trang); giao diện thêm mới sách và cập nhật thông tin cửa hàng.
  • Phân hệ Quản trị viên (Admin Dashboard): Gồm giao diện đăng nhập quản trị; dashboard hiển thị tổng quan thu nhập hệ thống, số lượng cửa hàng, người dùng và đơn hàng mới nhất; giao diện quản lý danh sách người dùng và phân vai trò; giao diện quản lý danh sách người bán; giao diện giám sát các giao dịch yêu cầu rút tiền của shop (trạng thái Process); giao diện theo dõi trạng thái đơn hàng toàn sàn (ví dụ: Delivered); giao diện giám sát sản phẩm; màn hình báo cáo thống kê trực quan với các biểu đồ phân bố sản phẩm theo danh mục, Top 10 sản phẩm tồn kho thấp, thống kê doanh thu và người dùng theo từng tuần trong năm.

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

Đồ án đã đạt được các kết quả kỹ thuật và tài liệu cụ thể:

  • Hoàn thiện bộ hồ sơ thiết kế hệ thống phần mềm hướng đối tượng hoàn chỉnh bao gồm 1 sơ đồ BFD, 20 biểu đồ Use Case kèm kịch bản chi tiết, 24 biểu đồ tuần tự và 1 biểu đồ lớp chi tiết 11 thực thể.
  • Xây dựng thành công cơ sở dữ liệu NoSQL trên MongoDB Atlas với 9 collections dữ liệu mẫu phục vụ đầy đủ các phân hệ chức năng: 50 sản phẩm sách, 6 tài khoản người dùng, 4 cửa hàng người bán, 6 đơn đặt hàng, các mã giảm giá và phiên hội thoại hỗ trợ.
  • Hiện thực hóa 27 giao diện màn hình web tương tác thực tế cho 3 nhóm đối tượng (Khách hàng, Người bán, Admin), đáp ứng các luồng nghiệp vụ từ đăng ký, tìm kiếm, đặt hàng, quản lý gian hàng, khấu trừ 10% phí sàn dịch vụ, xử lý rút tiền đến giám sát hệ thống và phân tích dữ liệu kinh doanh qua biểu đồ.

Đóng góp chính của báo cáo là xây dựng một quy trình phân tích, thiết kế và hiện thực hóa có hệ thống cho mô hình sàn giao dịch thương mại điện tử chuyên ngành sách, kết hợp công nghệ giao diện ReactJS, máy chủ NodeJS/Express và cơ sở dữ liệu đám mây MongoDB Atlas trong khuôn khổ môn học Phát triển hệ thống thương mại điện tử.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đồ án:

  • Báo cáo tập trung chủ yếu vào khâu mô hình hóa thiết kế hệ thống (UML), cấu trúc dữ liệu và giao diện người dùng; chưa trình bày các quy trình kiểm thử phần mềm tự động (Unit Test, Integration Test) và các chỉ số đo lường hiệu năng chịu tải của hệ thống.
  • Dữ liệu thực nghiệm được triển khai ở quy mô mô phỏng ban đầu với số lượng bản ghi còn hạn chế (50 sản phẩm, 6 người dùng, 4 cửa hàng).
  • Phương thức thanh toán trực tuyến mới tích hợp mô phỏng PayPal và tiền mặt (COD), chưa kết nối các cổng thanh toán nội địa chuyên sâu.

Hướng phát triển tiếp theo:

  • Tích hợp thêm các cổng thanh toán điện tử nội địa và cơ chế gợi ý sách tự động dựa trên hành vi người dùng.
  • Mở rộng thử nghiệm hệ thống với tập dữ liệu lớn và tiến hành kiểm thử hiệu năng, bảo mật trong môi trường phân tán.

Giá trị tham khảo

Tài liệu là nguồn tham khảo trực quan cho sinh viên các ngành Công nghệ thông tin, Hệ thống thông tin quản lý, Thương mại điện tử và Công nghệ tài chính (Fintech). Báo cáo cung cấp tài liệu mẫu chi tiết về cách thức xây dựng sơ đồ BFD, đặc tả kịch bản Use Case, vẽ biểu đồ tuần tự trên Visual Paradigm, cũng như phương pháp thiết kế lược đồ cơ sở dữ liệu NoSQL MongoDB Atlas cho mô hình sàn thương mại điện tử đa người bán.

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

1. Hệ thống CartRead tính toán doanh thu của người bán như thế nào trên giao diện Dashboard?
Dữ liệu trên giao diện Dashboard người bán (Hình 61) thể hiện hệ thống tự động ghi nhận thu nhập của người bán dựa trên tổng doanh số bán hàng sau khi khấu trừ 10% phí dịch vụ của sàn thương mại điện tử.

2. Cơ sở dữ liệu MongoDB Atlas của hệ thống gồm những collection nào và dung lượng lưu trữ thử nghiệm là bao nhiêu?
Hệ thống sử dụng 9 collections gồm: conversations, coupouncodes, events, messages, orders, products, shops, users và withdraws. Số liệu thử nghiệm tại Hình 46 ghi nhận tổng Logical Data Size là 135.87 KB, Storage Size là 376 KB và Index Size là 300 KB.

3. Khách hàng có thể sử dụng những hình thức thanh toán nào khi đặt mua sách trên CartRead?
Theo giao diện thanh toán đơn hàng (Hình 55) và đặc tả lớp Donhang, khách hàng có thể lựa chọn hai hình thức thanh toán chính là thanh toán trực tuyến qua PayPal hoặc thanh toán khi nhận hàng (Ship COD), đồng thời có thể áp dụng mã giảm giá (voucher).

4. Nhà quản trị (Admin) thực hiện những chức năng giám sát nào trên hệ thống?
Admin thực hiện giám sát thông qua 3 phân hệ chính: giám sát các yêu cầu rút tiền của người bán (theo dõi trạng thái giao dịch Process), giám sát toàn bộ danh sách đơn đặt hàng của khách hàng (theo dõi trạng thái giao hàng như Delivered), và giám sát danh mục sản phẩm đăng bán (cho phép xem chi tiết, chỉnh sửa thông tin hoặc xóa sản phẩm vi phạm).

5. Hệ thống sử dụng công nghệ nào để xử lý chức năng hỗ trợ người dùng và chat trực tuyến?
Hệ thống sử dụng thư viện Socket.IO trên nền tảng NodeJS/Express kết hợp lưu trữ lịch sử tin nhắn trong hai collections conversations và messages trên MongoDB Atlas để truyền nhận dữ liệu hộp thoại hỗ trợ trực tuyến giữa người dùng và quản trị viên.

Kết luận

Bài tập lớn "Xây dựng Website Sàn thương mại điện tử bán sách - CartRead" của nhóm sinh viên Khoa Tài chính - Kế toán 1, Học viện Công nghệ Bưu chính Viễn thông đã hoàn thành việc phân tích, thiết kế và hiện thực hóa một nền tảng thương mại điện tử chuyên ngành sách hoàn chỉnh. Hệ thống được mô hình hóa chặt chẽ qua các biểu đồ UML chuẩn mực, tổ chức cơ sở dữ liệu NoSQL trên MongoDB Atlas và triển khai giao diện người dùng thực tế với công nghệ ReactJS, NodeJS và Socket.IO. Đồ án đáp ứng đầy đủ các yêu cầu nghiệp vụ của một sàn giao dịch trực tuyến đa tác nhân, cung cấp tài liệu kỹ thuật có giá trị tham khảo cho việc phát triển các ứng dụng thương mại điện tử tương tự.