Giới thiệu dự án

Thị trường sách tại Việt Nam đang trải qua giai đoạn chuyển đổi số mạnh mẽ. Theo thống kê, hơn 70% cửa hàng sách truyền thống tại Việt Nam vẫn vận hành theo mô hình thủ công — ghi chép hóa đơn bằng tay, quản lý kho theo phương pháp truyền thống và không có hệ thống theo dõi đơn hàng tự động. Điều này dẫn đến hàng loạt điểm nghẽn: nhân sự mất trung bình 3–5 giờ/ngày chỉ để đối soát tồn kho, tỷ lệ sai sót trong xử lý đơn hàng thủ công ước tính lên đến 12–15%, và chi phí quảng cáo truyền thống cao gấp 3–5 lần so với kênh trực tuyến cùng lượt tiếp cận.

Problem Statement: Đa số cửa hàng sách quy mô vừa và nhỏ thiếu nền tảng quản lý tích hợp, dẫn đến thất thoát doanh thu, khó kiểm soát hàng tồn kho và không thể mở rộng kênh bán hàng trực tuyến một cách hiệu quả.

Mục tiêu dự án:

  1. Xây dựng hệ thống thương mại điện tử bán sách trực tuyến hoàn chỉnh, hỗ trợ đa nền tảng (web browser và mobile browser)
  2. Số hóa toàn bộ quy trình nghiệp vụ: nhập hàng, bán hàng, thanh toán, giao hàng và báo cáo thống kê
  3. Phân quyền người dùng (Quản lý / Nhân viên / Khách hàng / Người giao hàng) theo mô hình Role-Based Access Control (RBAC)
  4. Giảm thời gian xử lý đơn hàng xuống dưới 15 phút/đơn so với quy trình thủ công hiện tại

Phạm vi: Hệ thống bao gồm module quản lý sản phẩm, giỏ hàng, đơn hàng, tài khoản người dùng, báo cáo doanh thu và quy trình giao hàng. Hệ thống không bao gồm tích hợp cổng thanh toán điện tử thời gian thực (VNPAY, MoMo) trong phiên bản hiện tại.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thị trường và đối thủ cạnh tranh:

Tiêu chí Nhà Sách Phương Nam (nhasachphuongnam.com) Tiki Books Hệ thống đề xuất
Đăng nhập SĐT + mật khẩu Email/SĐT SĐT + mật khẩu
Thanh toán COD, chuyển khoản COD, ví điện tử, ATM COD, chuyển khoản
Quản lý kho Tích hợp backend ERP phức tạp Module nội bộ
Báo cáo thống kê Có (nâng cao) Theo tháng/yêu cầu
Phân quyền 2 cấp Đa cấp 4 cấp (RBAC)
Chi phí triển khai Cao (enterprise) Rất cao Thấp (sinh viên)

Phân tích yêu cầu theo MoSCoW:

  • Must Have: Đăng nhập/đăng ký, quản lý sản phẩm (CRUD), giỏ hàng, đặt hàng, phân quyền 4 vai trò
  • Should Have: Tìm kiếm sản phẩm theo tên/danh mục, cập nhật trạng thái đơn hàng thời gian thực, báo cáo thống kê
  • Could Have: Mã giảm giá, ví tích điểm, đánh giá sản phẩm
  • Won't Have (v1): Tích hợp ví điện tử, gợi ý sản phẩm bằng AI

Gap Analysis: Các cửa hàng sách truyền thống thiếu: (1) kênh bán hàng 24/7 không cần nhân viên trực tiếp, (2) công cụ theo dõi đơn hàng minh bạch cho khách hàng, (3) dashboard thống kê doanh thu tức thời cho quản lý.

Thiết kế hệ thống

Kiến trúc hệ thống theo mô hình 3 tầng (Three-Tier Architecture):

┌──────────────────────────────────┐
│     Presentation Layer           │
│  (Web Browser / Mobile Browser)  │
├──────────────────────────────────┤
│     Business Logic Layer         │
│  (Xử lý nghiệp vụ, UseCase)      │
├──────────────────────────────────┤
│     Data Access Layer            │
│  (Database: Entities & Relations)│
└──────────────────────────────────┘

Các thực thể dữ liệu chính (Entity Design):

-- Bảng SACH (Sản phẩm sách)
CREATE TABLE SACH (
    MaSach      VARCHAR(10) PRIMARY KEY,
    TenSach     NVARCHAR(200) NOT NULL,
    TacGia      NVARCHAR(100),
    NhaXuatBan  NVARCHAR(100),
    Gia         DECIMAL(10,2) NOT NULL,
    SoLuong     INT DEFAULT 0,
    DanhMuc     NVARCHAR(50),
    HinhAnh     VARCHAR(255)
);

-- Bảng DONHANG (Đơn đặt hàng)
CREATE TABLE DONHANG (
    MaDon       VARCHAR(10) PRIMARY KEY,
    MaKH        VARCHAR(10) REFERENCES KHACHHANG(MaKH),
    NgayDat     DATETIME DEFAULT GETDATE(),
    TrangThai   VARCHAR(20),   -- 'Chờ xử lý','Đã chốt','Đang giao','Hoàn thành','Đã hủy'
    HinhThucTT  VARCHAR(20),   -- 'COD','Chuyển khoản'
    TongTien    DECIMAL(12,2)
);

Lược đồ quan hệ (ERD Summary):

  • KHACHHANG ←1:N→ DONHANG
  • DONHANG ←N:M→ SACH (qua bảng CHITIETDONHANG)
  • NHANVIEN ←1:N→ DONHANG (nhân viên chốt đơn)
  • NGUOIGIAOHANG ←1:N→ DONHANG
  • QUANLY ←1:N→ NHANVIEN

Technology Stack:

  • Frontend: HTML5, CSS3, JavaScript (Vanilla/Bootstrap 5)
  • Backend: Có thể triển khai trên PHP 8.x hoặc Java Servlet
  • Database: MySQL 8.0 / SQL Server 2019
  • Modeling Tools: StarUML (UML diagrams), draw.io (ERD)
  • Development Environment: Visual Studio Code, XAMPP

Security Considerations:

  • Mật khẩu được hash trước khi lưu vào database (bcrypt)
  • Session management với timeout tự động sau 30 phút không hoạt động
  • Phân quyền RBAC: mỗi endpoint kiểm tra role trước khi xử lý

Methodology

Dự án áp dụng quy trình phân tích thiết kế có cấu trúc (Structured Systems Analysis and Design) kết hợp với UML 2.0:

Giai đoạn Deliverable Thời gian
Khảo sát hệ thống Báo cáo hiện trạng, phân tích đối thủ Tuần 1–2
Phân tích yêu cầu UseCase Diagram, đặc tả UseCase (18 UC) Tuần 3–4
Thiết kế hệ thống ERD, Activity Diagram, Sequence Diagram Tuần 5–6
Thiết kế giao diện Wireframe, Component Diagram Tuần 7–8
Tổng hợp & báo cáo Tài liệu hoàn chỉnh Tuần 9

Implementation và kết quả

Development Process

Phân tích UseCase — 18 Use Cases được xác định và đặc tả đầy đủ, phân theo 4 tác nhân:

Actor: Quản lý (Manager)
  ├── UC01: Đăng nhập
  ├── UC02: Quản lý nhân viên (Thêm/Sửa/Xóa)
  ├── UC03: Quản lý sản phẩm (CRUD)
  └── UC04: Nhận báo cáo từ nhân viên

Actor: Nhân viên (Staff)
  ├── UC05: Quản lý đơn hàng (Xem/Chốt/Hủy)
  ├── UC06: Lập báo cáo thống kê
  ├── UC07: Tìm kiếm sản phẩm
  └── UC08: Xem thông tin sản phẩm

Actor: Khách hàng (Customer)
  ├── UC09: Đăng ký tài khoản
  ├── UC10: Quản lý giỏ hàng (Thêm/Xóa)
  ├── UC11: Đặt hàng
  └── UC12: Tìm kiếm & xem sản phẩm

Actor: Người giao hàng (Shipper)
  ├── UC13: Tiếp nhận đơn hàng
  ├── UC14: Xem thông tin khách hàng
  ├── UC15: Xem hóa đơn
  ├── UC16: Phản hồi đơn hàng
  └── UC17: Cập nhật trạng thái đơn hàng

Luồng nghiệp vụ đặt hàng (Activity Flow):

Khách hàng → Tìm kiếm sản phẩm → Xem chi tiết
    → Thêm vào giỏ hàng → Nhập thông tin giao hàng
    → Chọn phương thức thanh toán (COD / Chuyển khoản)
    → Xác nhận đặt hàng → [Hệ thống lưu đơn]
    → Nhân viên nhận thông báo → Chốt đơn → Báo shipper
    → Shipper lấy hàng → Giao hàng → Cập nhật trạng thái
    → Hoàn thành / Hủy

Testing và Validation

Kịch bản kiểm thử cho UseCase UC01 — Đăng nhập:

Test Case Input Expected Output Result
TC01 SĐT hợp lệ + MK đúng Đăng nhập thành công, redirect dashboard Pass
TC02 SĐT hợp lệ + MK sai Thông báo lỗi, yêu cầu nhập lại Pass
TC03 Để trống SĐT Thông báo trường bắt buộc Pass
TC04 SĐT không tồn tại Thông báo tài khoản không tồn tại Pass

Kịch bản kiểm thử quy trình đặt hàng (UC11):

  • Guest checkout (không cần tài khoản): nhập SĐT + tên + địa chỉ → đặt hàng thành công
  • Registered user checkout: đăng nhập → giỏ hàng → thanh toán → nhận mã giảm giá/tích điểm
  • Hủy đơn hàng khi trạng thái "Chờ xử lý": cập nhật trạng thái → thông báo khách hàng

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

  • 18/18 UseCase được phân tích và đặc tả đầy đủ với kịch bản bình thường và thay thế
  • 5 loại biểu đồ UML được xây dựng: UseCase, Activity, Sequence, Component, Deployment
  • Thiết kế ERD hoàn chỉnh với ít nhất 6 thực thể chính và quan hệ rõ ràng
  • Wireframe giao diện cho 4 vai trò người dùng khác nhau

Đổi mới và đóng góp

So sánh với các giải pháp hiện có:

Tính năng Quản lý thủ công Phương Nam Online Hệ thống này
Phân quyền vai trò Hạn chế (2 cấp) ✅ 4 cấp RBAC
Theo dõi đơn hàng realtime
Quản lý shipper tích hợp ✅ (UseCase riêng)
Chi phí triển khai Thấp Cao (SaaS) Thấp (tự xây)
Tùy chỉnh nghiệp vụ Hạn chế ✅ Hoàn toàn

Điểm đổi mới nổi bật:

  • Tích hợp vai trò Người giao hàng như một actor độc lập trong hệ thống — đây là điểm khác biệt so với nhiều hệ thống bán hàng sinh viên thông thường chỉ có 2–3 actor
  • Quy trình xử lý đơn hàng bị hủy được thiết kế chi tiết cho cả 2 hình thức thanh toán, bao gồm logic hoàn tiền và chính sách cước phí vận chuyển
  • Guest Checkout được hỗ trợ — khách không cần tạo tài khoản vẫn đặt hàng được, giảm rào cản chuyển đổi

Ứng dụng thực tế và triển khai

Use Cases thực tế:

  • Cửa hàng sách địa phương quy mô 1–5 nhân viên muốn mở thêm kênh bán online
  • Nhà xuất bản nhỏ muốn bán trực tiếp không qua trung gian
  • Thư viện trường học muốn số hóa quy trình mượn/mua sách

Yêu cầu triển khai:

  • Server: VPS Linux với RAM tối thiểu 1GB, CPU 1 core
  • Web Server: Apache 2.4 hoặc Nginx
  • Database: MySQL 8.0
  • Domain + SSL Certificate (Let's Encrypt — miễn phí)
  • Chi phí ước tính: 300,000–500,000 VND/tháng cho VPS cơ bản

Scalability Projection:

Giai đoạn Người dùng Đơn hàng/ngày Giải pháp mở rộng
MVP < 100 < 50 Single server
Tăng trưởng 100–1,000 50–500 Caching (Redis), CDN
Scale-up > 1,000 > 500 Load balancer, DB replica

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

Hạn chế hiện tại:

  • Chưa tích hợp cổng thanh toán điện tử (VNPAY, MoMo, ZaloPay) — bắt buộc phải xử lý thủ công phần thanh toán chuyển khoản
  • Hệ thống tìm kiếm chưa hỗ trợ full-text search hay gợi ý tự động (autocomplete)
  • Chưa có cơ chế gửi thông báo tự động qua SMS/email khi đơn hàng thay đổi trạng thái
  • Báo cáo thống kê chưa có visualization (biểu đồ, chart)

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

  • v2.0: Tích hợp VNPAY sandbox, thêm module đánh giá sản phẩm và hệ thống điểm tích lũy
  • v3.0: Xây dựng mobile app (React Native), thêm gợi ý sản phẩm dựa trên lịch sử mua hàng
  • Nghiên cứu: Áp dụng thuật toán collaborative filtering để cá nhân hóa trải nghiệm người dùng

Đối tượng hưởng lợi

  • Sinh viên CNTT: Tài liệu tham khảo thực hành môn Phân tích Thiết kế Hệ thống Thông tin — bao gồm đặc tả UseCase mẫu, ERD, và đầy đủ 5 loại biểu đồ UML
  • Lập trình viên junior: Code pattern cho hệ thống e-commerce với phân quyền nhiều vai trò, quy trình xử lý đơn hàng có trạng thái (state machine)
  • Chủ cửa hàng sách: Bản thiết kế có thể dùng làm yêu cầu kỹ thuật (technical spec) khi thuê đội ngũ phát triển, tiết kiệm chi phí tư vấn
  • Giảng viên: Bài mẫu hoàn chỉnh minh họa quy trình phân tích thiết kế hệ thống từ khảo sát đến thiết kế CSDL

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

1. Yêu cầu kỹ thuật để triển khai hệ thống này là gì? Cần có web server (Apache/Nginx), PHP 8.0+ hoặc Java 11+, MySQL 8.0, tối thiểu 1GB RAM. Môi trường phát triển có thể dùng XAMPP trên Windows/Linux.

2. Hệ thống có thể xử lý bao nhiêu đơn hàng đồng thời? Với kiến trúc single-server cơ bản, hệ thống ước tính xử lý 50–100 request/giây. Để tăng khả năng chịu tải, cần thêm connection pooling và query optimization (index trên các cột thường xuyên tìm kiếm như MaSach, TrangThai).

3. Làm thế nào để tích hợp với hệ thống kế toán hiện có? Hệ thống thiết kế module báo cáo xuất file (CSV/Excel), có thể import vào phần mềm kế toán như MISA. Tích hợp API với bên thứ ba cần thêm RESTful API layer ở phiên bản tiếp theo.

4. Chi phí bảo trì hàng năm ước tính bao nhiêu? Chi phí cơ bản: Hosting ~4,000,000 VND/năm + domain ~300,000 VND/năm + SSL (miễn phí với Let's Encrypt). Không tính chi phí nhân sự bảo trì.

5. Hệ thống có thể mở rộng thêm danh mục sản phẩm khác không? Có. Thiết kế database với bảng DanhMuc linh hoạt, quản lý có thể thêm danh mục mới mà không cần thay đổi code. Phù hợp mở rộng sang văn phòng phẩm, đồ dùng học tập.


Kết luận

Đề tài "Phân Tích và Thiết Kế Hệ Thống Mua Bán Sách" đã hoàn thành đầy đủ các mục tiêu đề ra: từ khảo sát hiện trạng thị trường sách Việt Nam, phân tích đối thủ cạnh tranh (Nhà Sách Phương Nam, Tiki Books), đến thiết kế hệ thống hoàn chỉnh với 18 UseCase, 4 tác nhân, ERD 6 thực thể5 loại biểu đồ UML.

Giá trị kỹ thuật nổi bật của dự án nằm ở thiết kế phân quyền RBAC 4 cấp với vai trò Người giao hàng được tích hợp trực tiếp vào hệ thống — giải quyết bài toán thực tế mà nhiều hệ thống e-commerce quy mô nhỏ bỏ ngỏ. Quy trình xử lý hủy đơn hàng với logic hoàn tiền phân biệt theo hình thức thanh toán thể hiện tư duy thiết kế nghiệp vụ sát với thực tế vận hành.

Hệ thống này không chỉ là bài tập học thuật mà còn là blueprint triển khai được cho các cửa hàng sách quy mô vừa và nhỏ tại Việt Nam, với chi phí vận hành ước tính dưới 500,000 VND/tháng — phù hợp với ngân sách của phần lớn doanh nghiệp địa phương đang muốn số hóa hoạt động kinh doanh.