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

Khóa luận tốt nghiệp kỹ sư ngành Công nghệ thông tin (chuyên ngành Công nghệ phần mềm) của nhóm tác giả Phạm Thanh Sơn (MSSV: 15110301) và Nguyễn Thị Trúc (MSSV: 15110349), do ThS. Nguyễn Hữu Trung hướng dẫn tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (khóa 2015 – 2019), tập trung giải quyết bài toán ứng dụng công nghệ web hiện đại vào việc xây dựng hệ thống thương mại điện tử.

Lý do chọn đề tài và bối cảnh thực tiễn

Sự bùng nổ của công nghệ thông tin và sự phổ biến của các thiết bị di động đã thay đổi phương thức quản lý bán hàng truyền thống. Việc ứng dụng công nghệ trực tuyến giúp doanh nghiệp quản lý chính xác và kịp thời thông tin về hàng hóa, vật tư, thiết bị, khách hàng và trạng thái đơn đặt hàng, từ đó giảm thiểu chi phí vận hành và nâng cao năng lực cạnh tranh. Về phía người tiêu dùng, nhu cầu tìm kiếm thông tin nhanh chóng mà không cần trực tiếp đến cửa hàng ngày càng gia tăng. Do đó, việc xây dựng một website bán hàng trực tuyến là giải pháp thực tế, đáp ứng nhu cầu giao dịch tiện lợi và có tiềm năng mở rộng.

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

Mục tiêu tổng quát của đề tài là xây dựng hoàn chỉnh một website bán hàng trực tuyến đáp ứng các nghiệp vụ thương mại điện tử cơ bản và phân quyền quản trị chặt chẽ.

Các nhiệm vụ nghiên cứu cụ thể được xác định theo đề cương bao gồm:

  1. Khảo sát hiện trạng các website bán hàng trực tuyến thực tế trên thị trường.
  2. Tìm hiểu và nghiên cứu các công nghệ: framework Django, công cụ Django REST framework và thư viện ReactJS.
  3. Áp dụng các kiến thức đã nghiên cứu để phân tích, thiết kế cơ sở dữ liệu, xây dựng giao diện và lập trình hoàn thiện website bán hàng.

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

  • Đối tượng nghiên cứu: Framework Django, thư viện ReactJS và quy trình thiết kế, cài đặt website thương mại điện tử.
  • Phạm vi không gian: Đề tài thực hiện tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
  • Phạm vi thời gian: Quá trình nghiên cứu và triển khai khóa luận diễn ra từ ngày 10/03/2019 đến ngày 15/07/2019.

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

Khung lý thuyết và công nghệ sử dụng

Khóa luận vận dụng các công nghệ và mô hình kiến trúc phần mềm tiêu biểu:

  • Django: Framework mã nguồn mở viết bằng ngôn ngữ Python, phát triển bởi Django Software Foundation (DSF), hoạt động theo mô hình Model-View-Controller (MVC/MTV). Django cung cấp sẵn các module xác thực người dùng (user authentication), trang quản trị nội dung (content admin), sơ đồ trang (sitemaps); tích hợp sẵn cơ chế bảo mật chống các lỗ hổng SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), Clickjacking; hỗ trợ tự động sinh bảng SQL từ mô hình dữ liệu (ORM), tạo form (form generator) và hỗ trợ công cụ gỡ lỗi tương tác qua Python shell.
  • Django REST Framework (DRF): Bộ công cụ xây dựng các dịch vụ Web API tuân thủ kiến trúc REST (REpresentational State Transfer). DRF cung cấp giao diện API duyệt được trên nền web (browsable API), hỗ trợ cơ chế tuần tự hóa (Serialization) cho cả dữ liệu ORM lẫn non-ORM và khả năng tùy biến cao.
  • ReactJS: Thư viện JavaScript mã nguồn mở do Facebook phát triển (khởi xướng bởi kỹ sư Jordan Walke dựa trên nền tảng XHP, xuất hiện lần đầu trong tính năng Newsfeed năm 2011 và mở mã nguồn năm 2013). ReactJS hoạt động dựa trên các khái niệm cốt lõi:
    • Virtual DOM (DOM ảo): Đối tượng JavaScript mô phỏng cây DOM thật, cho phép tính toán sự thay đổi và chỉ cập nhật những phần tử biến động, giảm thiểu việc tải lại toàn bộ trang web.
    • One-way data binding (Luồng dữ liệu một chiều): Dữ liệu truyền từ component cha xuống component con qua props, giúp việc kiểm soát và sửa lỗi mã nguồn dễ dàng hơn.
    • JSX: Cú pháp mở rộng cho phép viết mã HTML trong JavaScript, hỗ trợ biên dịch statically-typed để phát hiện lỗi sớm.
    • Components, Props và State: Xây dựng giao diện từ các khối độc lập; props là tham số bất biến nhận từ bên ngoài và state thể hiện trạng thái nội tại có thể thay đổi để kích hoạt việc render lại giao diện.

Phương pháp nghiên cứu

  • Phương pháp nghiên cứu lý thuyết và tài liệu: Thu thập, đọc và tổng hợp các tài liệu kỹ thuật, sách điện tử (ebook), luận văn liên quan đến phân tích thiết kế hệ thống thông tin, cơ sở dữ liệu quan hệ, framework Django và ReactJS.
  • Phương pháp khảo sát thực tế: Phân tích giao diện, cấu trúc luồng xử lý và giỏ hàng của hai hệ thống bán hàng trực tuyến tiêu biểu tại Việt Nam là Phong Vũ và Nguyễn Kim.
  • Phương pháp chuyên gia: Tham vấn ý kiến, tiếp thu hướng dẫn chuyên môn và phản biện từ giáo viên hướng dẫn (ThS. Nguyễn Hữu Trung) và hội đồng đánh giá thuộc Khoa CNTT.
  • Phương pháp kỹ thuật - thực nghiệm: Hiện thực hóa hệ thống phần mềm bằng việc kết hợp Python/Django ở phía Backend, xây dựng API qua Django REST framework và xây dựng Frontend tương tác bằng ReactJS.

Thiết kế và triển khai

Khảo sát hiện trạng hệ thống thực tế

Nhóm tác giả đã tiến hành khảo sát hai website bán hàng thiết bị công nghệ lớn để rút ra kinh nghiệm thiết kế:

Website khảo sát Ưu điểm ghi nhận Nhược điểm ghi nhận
Phong Vũ - Đầy đủ chức năng đáp ứng nhu cầu người dùng.
- Hỗ trợ thanh toán qua thẻ tín dụng.
- Giao diện thân thiện, tốc độ xử lý nhanh.
- Bố trí quá nhiều danh mục liên tiếp gây rối mắt cho người mua hàng.
Nguyễn Kim - Chức năng hoàn chỉnh, thao tác thuận tiện.
- Tích hợp thanh toán thẻ trực tuyến.
- Tốc độ xử lý tốt.
- Danh mục hiển thị dày đặc, chưa tối ưu hóa không gian hiển thị sản phẩm.

Đặc tả yêu cầu hệ thống và phân quyền

Hệ thống được thiết kế phục vụ 4 nhóm tác nhân với quyền hạn riêng biệt:

  1. Khách (Guest): Xem danh sách sản phẩm, tìm kiếm sản phẩm theo tên hoặc mức giá, đăng ký tài khoản mới và đăng nhập vào hệ thống.
  2. Người dùng (User): Kế thừa toàn bộ quyền của Khách; thực hiện thêm sản phẩm vào giỏ hàng, mua ngay, thanh toán (trực tiếp khi nhận hàng hoặc qua thẻ tín dụng), sử dụng điểm tích lũy (mỗi điểm quy đổi tương ứng giảm 1.000 đồng), chỉnh sửa thông tin cá nhân, đổi mật khẩu, theo dõi kiểm tra đơn hàng, viết bình luận và chấm điểm đánh giá số sao cho sản phẩm đã mua thành công.
  3. Nhân viên (Employees): Đổi mật khẩu, xem danh sách sản phẩm trong kho, tìm kiếm sản phẩm kho, kiểm duyệt đơn hàng (xóa đơn hàng chưa giao), kích hoạt chương trình Flash Sale theo mốc thời gian.
  4. Quản trị viên (Admin): Toàn quyền quản trị hệ thống bao gồm: quản lý sản phẩm (thêm, sửa thông tin, upload hình ảnh, xóa), quản lý danh mục loại sản phẩm, quản lý đơn hàng đã giao thành công, quản lý nhân viên (thêm, cập nhật thông tin cá nhân/CMND), quản lý thông tin khách hàng, quản lý xu tích lũy, quản lý nhân viên giao hàng, và xem báo cáo thống kê doanh số bán ra theo tháng, theo năm và theo hãng sản xuất.

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu của hệ thống được thiết kế chuẩn hóa gồm 15 bảng dữ liệu quan hệ:

Tên bảng Khóa chính Khóa ngoại Ý nghĩa nghiệp vụ
user User_id Không Lưu thông tin tài khoản, họ tên, email, điện thoại, địa chỉ, CMND, cờ phân quyền (is_staff_gun, is_user, is_superUser).
bill Bill_id User, Status_Product, Staff Lưu trữ đơn hàng, ngày tạo, tổng tiền, địa chỉ giao hàng và trạng thái đơn.
detail order Detail_id Product, Bill Chi tiết từng mặt hàng và số lượng trong một hóa đơn.
product Product_id Category Thông tin sản phẩm: tên, ảnh, giá, số lượng, đánh giá, kích thước, hệ điều hành, màu sắc, CPU, RAM, camera, pin, bảo hành, khuyến mãi, hình thức thanh toán (Pay_type: 0 - tiền mặt, 1 - card).
status product Status_id Không Danh mục trạng thái của sản phẩm và đơn hàng.
staff Staff_id Không Lưu trữ danh sách nhân viên nội bộ và số điện thoại liên hệ.
dealed product Dealed_id Product Ghi nhận số lượng sản phẩm đã bán thành công phân rã theo ngày, tháng, năm để phục vụ thống kê.
category Category_id Không Phân loại danh mục mặt hàng.
flash product FlashProduct_id FlashSale, Product Lưu danh sách các sản phẩm áp dụng trong từng đợt Flash Sale.
flash sale Flash_id Không Quản lý khung thời gian bắt đầu và kết thúc của các chương trình giảm giá chớp nhoáng.
comment Comment_id Product, User Lưu trữ nội dung và thời gian bình luận của người dùng đối với sản phẩm.
cart Cart_id Product, User Lưu thông tin giỏ hàng tạm thời và số lượng chọn mua của khách hàng.
coin Coin_id User Quản lý số lượng xu/điểm thưởng tích lũy của từng người dùng.
logging Logging_id User Ghi lại lịch sử thời gian đăng nhập của tài khoản người dùng.
transporter Transporter_id Không Quản lý thông tin các đơn vị vận chuyển hàng hóa.

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

Chương 1: Cơ sở lý thuyết

Nội dung chương tập trung giới thiệu chi tiết về ba nền tảng công nghệ chính của đề tài. Nhóm tác giả trình bày kiến trúc MVC và các ưu điểm về tốc độ, tính bảo mật, tính năng ORM, bộ sinh form tự động cùng giao diện quản trị tích hợp sẵn của framework Django. Tiếp theo, chương giải thích kiến trúc hướng tài nguyên REST, cơ chế tuần tự hóa (Serialization) và browsable API của Django REST framework. Cuối cùng, chương đi sâu vào thư viện ReactJS, phân tích cơ chế hoạt động của Virtual DOM, luồng dữ liệu 1 chiều (one-way data binding), cú pháp JSX và phương thức quản lý trạng thái giao diện thông qua cặp khái niệm Props - State.

Chương 2: Khảo sát hiện trạng và xác định yêu cầu

Chương này phản ánh thực trạng mua sắm trực tuyến tại Việt Nam, chỉ ra tâm lý e ngại của nhóm khách hàng lớn tuổi (từ 40 tuổi trở lên) so với xu hướng ưa chuộng thương mại điện tử của giới trẻ. Tác giả tiến hành khảo sát thực nghiệm trên hai website Phong Vũ và Nguyễn Kim nhằm nhận diện ưu điểm về thanh toán thẻ, tốc độ xử lý cũng như nhược điểm về bố cục danh mục gây rối mắt. Dựa trên kết quả khảo sát, chương xác định các yêu cầu chức năng (lưu trữ, tra cứu, tính toán giá trị đơn/khuyến mãi, thống kê doanh số), phân loại quyền hạn cho 4 tác nhân (Guest, User, Employees, Admin) và đưa ra các yêu cầu phi chức năng về tính tiện dụng, an toàn dữ liệu và khả năng mở rộng.

Chương 3: Mô hình hóa yêu cầu và thiết kế dữ liệu

Chương 3 xây dựng các sơ đồ Use Case tổng quát và 8 sơ đồ Use Case phân rã chức năng (Kiểm duyệt đơn hàng, Quản lý kho, Quản lý Flash Sale, Quản lý sản phẩm, Quản lý nhân viên, Thống kê, Quản lý loại sản phẩm, Quản lý khách hàng). Tác giả thiết lập 20 bảng đặc tả Use Case chi tiết với đầy đủ tiền điều kiện và các bước thực hiện từng tác vụ. Phần sau của chương trình bày sơ đồ quan hệ thực thể và bảng mô tả cấu trúc chi tiết của 15 bảng dữ liệu trong hệ thống (user, bill, detail order, product, status product, staff, dealed product, category, flash product, flash sale, comment, cart, coin, logging, transporter).

Chương 4: Thiết kế giao diện và luồng xử lý

Chương 4 mô tả thiết kế chi tiết hệ thống màn hình và các luồng tương tác:

  • Trình bày danh sách màn hình, sơ đồ chuyển đổi và sơ đồ biến cố tương ứng cho từng giao diện: Đăng nhập, Đăng ký, Trang chủ, Chi tiết sản phẩm, Giỏ hàng, Thanh toán, Chỉnh sửa thông tin cá nhân, Kiểm tra đơn hàng, Quản lý kho, Quản lý Flash Sale, Quản lý sản phẩm/loại sản phẩm, Quản lý nhân viên/khách hàng, Quản lý giao hàng, Quản lý xu và Thống kê.
  • Xây dựng hệ thống sơ đồ trình tự (Sequence Diagram) mô hình hóa chi tiết tương tác giữa người dùng, giao diện ReactJS, API Django REST Framework và cơ sở dữ liệu cho toàn bộ các ca sử dụng chính trong hệ thống.

Chương 5: Kiểm thử

Chương 5 tiến hành kiểm thử chức năng của website bán hàng nhằm xác minh tính đúng đắn của các luồng nghiệp vụ. Nội dung bao gồm việc thiết kế bảng kiểm thử chức năng website, thực thi các kịch bản thao tác thực tế từ phía người dùng, nhân viên và quản trị viên, kiểm tra phản hồi từ cơ sở dữ liệu và xác nhận tính ổn định của hệ thống trước khi đóng gói sản phẩm.


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

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

Khóa luận đã hoàn thành các mục tiêu đề ra và triển khai thành công website thương mại điện tử với các kết quả cụ thể:

  • Làm chủ và kết hợp thành công công nghệ Backend Python/Django (kèm Django REST Framework) và Frontend ReactJS.
  • Xây dựng hệ thống phân quyền 4 cấp bậc (Khách, Khách hàng, Nhân viên, Quản trị viên) hoạt động chính xác.
  • Triển khai đầy đủ các tính năng người dùng: xem và tìm kiếm sản phẩm, quản lý giỏ hàng, đặt hàng, lựa chọn phương thức thanh toán (tiền mặt / thẻ tín dụng), tích lũy và sử dụng điểm xu giảm trừ trực tiếp vào đơn hàng (1 điểm = 1.000 VNĐ), quản lý đơn hàng cá nhân, gửi đánh giá số sao và bình luận sản phẩm.
  • Hiện thực hóa module nhân viên: kiểm duyệt và hủy đơn hàng chưa giao, tra cứu sản phẩm trong kho, thiết lập kích hoạt các đợt khuyến mãi Flash Sale theo khung giờ.
  • Xây dựng trang quản trị toàn diện: thêm, sửa, xóa sản phẩm kèm tính năng upload hình ảnh; quản lý danh mục loại sản phẩm; quản lý hồ sơ nhân viên và khách hàng; quản lý nhân viên giao hàng; thống kê doanh số bán ra theo tháng, theo năm và theo hãng điện thoại.

Đóng góp của đề tài

Nhóm tác giả đã tự hệ thống hóa quy trình xây dựng ứng dụng web thương mại điện tử dạng Single Page Application (SPA) tách biệt Backend (REST API) và Frontend (React Component). Đồ án cung cấp tài liệu đặc tả yêu cầu, thiết kế 15 bảng cơ sở dữ liệu quan hệ và hệ thống sơ đồ tương tác Sequence Diagram chi tiết, làm cơ sở thực hành cho các bài toán phát triển phần mềm quản lý bán hàng.


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

Hạn chế

  • Hệ thống chỉ mới triển khai kiểm thử các chức năng cơ bản trên môi trường thử nghiệm cục bộ, chưa đo lường hiệu năng chịu tải trong điều kiện lượng truy cập đồng thời lớn.
  • Phạm vi tích hợp thanh toán thẻ tín dụng và liên kết vận chuyển thực tế mới dừng lại ở mức mô phỏng quy trình xử lý dữ liệu nội bộ trên website.

Hướng phát triển

  • Nghiên cứu tích hợp các cổng thanh toán điện tử trực tuyến tự động và kết nối trực tiếp API của các đơn vị giao hàng chuyên nghiệp.
  • Xây dựng thuật toán gợi ý sản phẩm thông minh dựa trên lịch sử xem hàng và hành vi mua sắm của người dùng.
  • Tối ưu hóa giao diện người dùng, nâng cao tính bảo mật và mở rộng ứng dụng trên nền tảng thiết bị di động (Mobile Application).

Giá trị tham khảo

Khóa luận là tài liệu tham khảo phù hợp cho sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm và các lập trình viên đang tiếp cận hướng phát triển ứng dụng Fullstack với Python/Django và ReactJS.

Các nội dung có giá trị tham khảo cao trong tài liệu gồm:

  • Thiết kế cơ sở dữ liệu chuẩn hóa 15 bảng bao quát các nghiệp vụ bán hàng, quản lý kho, tích điểm đổi xu và Flash Sale (Chương 3).
  • Hệ thống sơ đồ Use Case, bảng đặc tả chi tiết và các sơ đồ Sequence Diagram mô tả luồng giao tiếp giữa ReactJS và Django REST Framework (Chương 3 và Chương 4).
  • Phương pháp phân tích yêu cầu và phân quyền người dùng nhiều cấp bậc trong hệ thống thương mại điện tử (Chương 2).

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

1. Hệ thống phân chia quyền truy cập thành bao nhiêu nhóm tác nhân và quyền hạn cụ thể là gì?
Hệ thống phân chia thành 4 nhóm tác nhân:

  • Guest (Khách): Xem danh mục, tìm kiếm sản phẩm, đăng ký và đăng nhập.
  • User (Người dùng): Mua hàng, thanh toán, dùng điểm xu giảm giá, kiểm tra đơn hàng, đổi mật khẩu, sửa thông tin, bình luận và đánh giá sao sản phẩm đã mua.
  • Employees (Nhân viên): Kiểm duyệt đơn hàng (xóa đơn chưa giao), quản lý sản phẩm trong kho, kích hoạt Flash Sale.
  • Admin (Quản trị viên): Toàn quyền quản lý sản phẩm, loại sản phẩm, đơn hàng đã giao, nhân viên, khách hàng, nhân viên giao hàng, quản lý xu và thống kê doanh thu.

2. Cơ chế tích lũy và sử dụng điểm xu thưởng trong website được quy định như thế nào?
Khách hàng mua sản phẩm tích lũy được xu thưởng (lưu trong bảng coin). Khi đặt mua hàng hoặc thanh toán ngay, người dùng có thể nhập số lượng điểm tích lũy muốn sử dụng, với quy tắc quy đổi: mỗi điểm tích lũy tương ứng giảm trừ 1.000 đồng vào tổng giá trị đơn hàng.

3. Nhóm tác giả đã tiến hành khảo sát các website thực tế nào và rút ra kết luận gì?
Khóa luận đã tiến hành khảo sát thực tế hai website Phong Vũ và Nguyễn Kim. Kết quả khảo sát cho thấy cả hai hệ thống đều xử lý nhanh, hỗ trợ thanh toán thẻ và có giao diện thân thiện, tuy nhiên nhược điểm chung là bố trí quá nhiều danh mục sản phẩm liên tiếp gây rối mắt cho người mua.

4. Bảng dữ liệu product trong cơ sở dữ liệu quản lý những thông số kỹ thuật nào của thiết bị?
Bảng product lưu trữ các trường dữ liệu gồm: Product_id, Name, Image, Price, Quantity, Rating, Size, OperatingSystem, Color, Cpu, Memory, Camera, Pin, Gurante, Promotion, Start_promotion, End_promotion, Category và Pay_type (0: tiền mặt, 1: card).

5. Những đặc tính bảo mật nào của Django được tác giả đề cập trong cơ sở lý thuyết?
Trong phần lý thuyết, tác giả chỉ ra Django có sẵn các cơ chế bảo vệ ứng dụng khỏi các lỗ hổng bảo mật phổ biến bao gồm SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) và Clickjacking, đồng thời cung cấp phương pháp lưu trữ mật khẩu an toàn.


Kết luận

Khóa luận tốt nghiệp của sinh viên Phạm Thanh Sơn và Nguyễn Thị Trúc đã hoàn thành nhiệm vụ nghiên cứu và ứng dụng thành công cặp công nghệ Django REST Framework và ReactJS để xây dựng một website bán hàng trực tuyến hoàn chỉnh. Đề tài đã giải quyết trọn vẹn từ khâu khảo sát thực tế, phân tích yêu cầu, thiết kế 15 bảng cơ sở dữ liệu quan hệ đến việc mô hình hóa luồng xử lý và kiểm thử chức năng. Sản phẩm đáp ứng đầy đủ các nghiệp vụ thương mại điện tử thiết yếu như phân quyền đa tác nhân, giỏ hàng, đặt hàng, quản lý Flash Sale, tích điểm thưởng và thống kê doanh số. Đây là tài liệu học thuật có giá trị tham khảo tốt cho sinh viên và kỹ sư phần mềm trong việc thiết kế kiến trúc web phân tách Backend - Frontend.