1 Home
administrator edited this page 2026-01-06 15:27:44 +07:00

Tài liệu Đặc tả Yêu cầu Phần mềm (SRS) - Phần mềm Bán hàng

Mục lục

  1. Giới thiệu
  2. Quản lý tài khoản
    1. Mô tả tính năng
    2. Luồng hoạt động (Flowchart)
    3. Chi tiết luồng
    4. Thiết kế Cơ sở dữ liệu
  3. Quản lý sản phẩm
    1. Mô tả tính năng
    2. Luồng hoạt động (Flowchart)
    3. Chi tiết luồng
    4. Thiết kế Cơ sở dữ liệu
  4. Quản lý đơn hàng
    1. Mô tả tính năng
    2. Luồng hoạt động (Flowchart)
    3. Chi tiết luồng
    4. Thiết kế Cơ sở dữ liệu

1. Giới thiệu

Tài liệu này mô tả chi tiết các yêu cầu chức năng và phi chức năng cho hệ thống "Phần mềm Bán hàng". Mục tiêu của hệ thống là cung cấp một nền tảng để quản lý tài khoản người dùng, sản phẩm và các đơn hàng một cách hiệu quả.


2. Quản lý tài khoản

2.1. Mô tả tính năng

Tính năng này cho phép người dùng đăng ký, đăng nhập, đăng xuất và quản lý thông tin cá nhân. Hệ thống cũng cần có vai trò quản trị viên (Admin) để quản lý các tài khoản người dùng khác.

  • Người dùng (User): Có thể đăng ký, đăng nhập, xem/cập nhật thông tin cá nhân, xem lịch sử đơn hàng.
  • Quản trị viên (Admin): Có tất cả quyền của người dùng, cộng thêm quyền xem danh sách tài khoản, thay đổi vai trò và trạng thái (hoạt động/khóa) của tài khoản người dùng.

2.2. Luồng hoạt động (Flowchart)

Luồng Đăng nhập

graph TD
    A[Bắt đầu] --> B{Truy cập trang Đăng nhập};
    B --> C[Nhập Email & Mật khẩu];
    C --> D{Hệ thống xác thực};
    D -- Đúng --> E[Chuyển đến trang chính];
    D -- Sai --> F[Hiển thị thông báo lỗi];
    F --> C;
    E --> G[Kết thúc];

Luồng Đăng ký

graph TD
    A[Bắt đầu] --> B[Truy cập trang Đăng ký];
    B --> C[Điền thông tin: Họ tên, Email, Mật khẩu];
    C --> D{Hệ thống kiểm tra hợp lệ email tồn tại?};
    D -- Hợp lệ --> E[Tạo tài khoản mới];
    D -- Không hợp lệ --> F[Hiển thị thông báo lỗi];
    F --> C;
    E --> G[Chuyển đến trang Đăng nhập];
    G --> H[Kết thúc];

2.3. Chi tiết luồng

Luồng Đăng nhập:

  1. Người dùng truy cập vào trang đăng nhập của hệ thống.
  2. Người dùng nhập địa chỉ email và mật khẩu đã đăng ký.
  3. Nhấn nút "Đăng nhập".
  4. Hệ thống kiểm tra thông tin đăng nhập trong cơ sở dữ liệu.
  5. Nếu thông tin chính xác, hệ thống tạo một phiên làm việc và chuyển hướng người dùng đến trang quản trị hoặc trang chủ.
  6. Nếu thông tin không chính xác, hệ thống hiển thị thông báo lỗi "Email hoặc mật khẩu không đúng".

Luồng Đăng ký:

  1. Người dùng truy cập trang đăng ký.
  2. Điền đầy đủ thông tin vào form đăng ký, bao gồm: Họ và tên, Email, Mật khẩu, Nhập lại mật khẩu.
  3. Nhấn nút "Đăng ký".
  4. Hệ thống kiểm tra xem email đã được sử dụng chưa và mật khẩu có khớp không.
  5. Nếu email đã tồn tại, hiển thị lỗi "Email này đã được đăng ký".
  6. Nếu thông tin hợp lệ, hệ thống lưu thông tin người dùng mới vào cơ sở dữ liệu và chuyển hướng đến trang đăng nhập.

2.4. Thiết kế Cơ sở dữ liệu

Bảng Users

Tên cột Kiểu dữ liệu Mô tả Ràng buộc
id INT Khóa chính, tự tăng PRIMARY KEY, AUTO_INCREMENT
full_name VARCHAR(100) Họ và tên người dùng NOT NULL
email VARCHAR(100) Email dùng để đăng nhập NOT NULL, UNIQUE
password VARCHAR(255) Mật khẩu đã được mã hóa NOT NULL
role ENUM('user', 'admin') Vai trò của người dùng NOT NULL, DEFAULT 'user'
created_at TIMESTAMP Thời gian tạo tài khoản DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMP Thời gian cập nhật cuối cùng DEFAULT CURRENT_TIMESTAMP

3. Quản lý sản phẩm

3.1. Mô tả tính năng

Tính năng này (chủ yếu dành cho Admin) cho phép quản lý danh mục sản phẩm của cửa hàng. Admin có thể thực hiện các thao tác CRUD (Create, Read, Update, Delete) trên sản phẩm.

  • Thêm sản phẩm: Thêm một sản phẩm mới với các thông tin như tên, mô tả, giá, số lượng tồn kho.
  • Xem danh sách sản phẩm: Hiển thị tất cả sản phẩm dưới dạng danh sách hoặc lưới.
  • Cập nhật sản phẩm: Chỉnh sửa thông tin của một sản phẩm đã có.
  • Xóa sản phẩm: Xóa một sản phẩm khỏi hệ thống.

3.2. Luồng hoạt động (Flowchart)

graph TD
    A[Admin Đăng nhập] --> B[Truy cập trang Quản lý Sản phẩm];
    B --> C{Chọn hành động};
    C -- Thêm mới --> D[Hiển thị form thêm sản phẩm];
    D --> E[Nhập thông tin sản phẩm];
    E --> F{Lưu sản phẩm};
    F -- Thành công --> B;
    F -- Thất bại --> D;
    C -- Sửa sản phẩm --> G[Chọn sản phẩm cần sửa];
    G --> H[Hiển thị form cập nhật];
    H --> I[Chỉnh sửa thông tin];
    I --> J{Lưu thay đổi};
    J -- Thành công --> B;
    J -- Thất bại --> H;
    C -- Xóa sản phẩm --> K[Chọn sản phẩm cần xóa];
    K --> L{Xác nhận xóa};
    L -- Đồng ý --> M[Xóa sản phẩm khỏi CSDL];
    M --> B;
    L -- Hủy --> B;

3.3. Chi tiết luồng

Luồng Thêm sản phẩm:

  1. Admin truy cập trang "Quản lý Sản phẩm".
  2. Nhấn nút "Thêm sản phẩm mới".
  3. Form thêm sản phẩm hiển thị, yêu cầu nhập: Tên sản phẩm, Mô tả, Giá, Số lượng, Danh mục.
  4. Admin điền thông tin và nhấn "Lưu".
  5. Hệ thống kiểm tra dữ liệu đầu vào.
  6. Nếu hợp lệ, lưu sản phẩm vào CSDL và tải lại trang danh sách sản phẩm.
  7. Nếu không hợp lệ, hiển thị thông báo lỗi tương ứng.

3.4. Thiết kế Cơ sở dữ liệu

Bảng Products

Tên cột Kiểu dữ liệu Mô tả Ràng buộc
id INT Khóa chính, tự tăng PRIMARY KEY, AUTO_INCREMENT
name VARCHAR(255) Tên sản phẩm NOT NULL
description TEXT Mô tả chi tiết sản phẩm NULL
price DECIMAL(10, 2) Giá bán của sản phẩm NOT NULL
quantity INT Số lượng tồn kho NOT NULL, DEFAULT 0
sku VARCHAR(50) Mã định danh sản phẩm (SKU) NOT NULL, UNIQUE
category_id INT Khóa ngoại liên kết với bảng Categories FK
created_at TIMESTAMP Thời gian tạo DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMP Thời gian cập nhật DEFAULT CURRENT_TIMESTAMP

Bảng Categories

Tên cột Kiểu dữ liệu Mô tả Ràng buộc
id INT Khóa chính, tự tăng PRIMARY KEY, AUTO_INCREMENT
name VARCHAR(100) Tên danh mục NOT NULL, UNIQUE

4. Quản lý đơn hàng

4.1. Mô tả tính năng

Tính năng này cho phép người dùng tạo đơn hàng từ các sản phẩm có sẵn và cho phép Admin quản lý các đơn hàng này.

  • Người dùng:
    • Thêm sản phẩm vào giỏ hàng.
    • Xem giỏ hàng.
    • Tiến hành thanh toán (tạo đơn hàng).
    • Xem lại lịch sử đơn hàng đã đặt.
  • Admin:
    • Xem tất cả đơn hàng.
    • Cập nhật trạng thái đơn hàng (ví dụ: Chờ xử lý, Đang giao, Đã giao, Đã hủy).
    • Xem chi tiết một đơn hàng.

4.2. Luồng hoạt động (Flowchart)

Luồng Đặt hàng của Người dùng

graph TD
    A[Xem sản phẩm] --> B[Thêm vào giỏ hàng];
    B --> C[Truy cập trang Giỏ hàng];
    C --> D{Kiểm tra giỏ hàng};
    D --> E[Tiến hành thanh toán];
    E --> F[Điền thông tin giao hàng];
    F --> G[Xác nhận đặt hàng];
    G --> H{Hệ thống tạo đơn hàng};
    H -- Thành công --> I[Hiển thị trang cảm ơn];
    H -- Thất bại --> J[Thông báo lỗi (hết hàng...)]
    I --> K[Kết thúc];

4.3. Chi tiết luồng

Luồng Đặt hàng:

  1. Người dùng duyệt xem các sản phẩm và nhấn nút "Thêm vào giỏ hàng".
  2. Sau khi chọn xong, người dùng vào trang "Giỏ hàng" để xem lại các sản phẩm đã chọn, số lượng và tổng tiền.
  3. Người dùng nhấn "Tiến hành thanh toán".
  4. Hệ thống yêu cầu người dùng điền thông tin giao hàng (địa chỉ, số điện thoại).
  5. Người dùng nhấn "Đặt hàng".
  6. Hệ thống tạo một bản ghi Order mới và các bản ghi Order_Items tương ứng.
  7. Hệ thống trừ số lượng sản phẩm trong kho.
  8. Hiển thị trang "Đặt hàng thành công" cho người dùng.

Luồng Cập nhật trạng thái đơn hàng (Admin):

  1. Admin vào trang "Quản lý Đơn hàng".
  2. Danh sách các đơn hàng được hiển thị.
  3. Admin chọn một đơn hàng để xem chi tiết.
  4. Admin thay đổi trạng thái của đơn hàng (ví dụ từ "Chờ xử lý" sang "Đang giao").
  5. Nhấn "Cập nhật".
  6. Hệ thống lưu trạng thái mới và có thể gửi thông báo cho người dùng.

4.4. Thiết kế Cơ sở dữ liệu

Bảng Orders

Tên cột Kiểu dữ liệu Mô tả Ràng buộc
id INT Khóa chính, tự tăng PRIMARY KEY, AUTO_INCREMENT
user_id INT Khóa ngoại liên kết với bảng Users FK, NOT NULL
total_amount DECIMAL(12, 2) Tổng giá trị đơn hàng NOT NULL
status ENUM('pending', 'processing', 'shipped', 'delivered', 'cancelled') Trạng thái đơn hàng NOT NULL, DEFAULT 'pending'
shipping_address TEXT Địa chỉ giao hàng NOT NULL
order_source VARCHAR(50) Nguồn của đơn hàng (web, sale, mkt...) NULL
order_date TIMESTAMP Ngày đặt hàng DEFAULT CURRENT_TIMESTAMP

Bảng Order_Items (Bảng trung gian)

Tên cột Kiểu dữ liệu Mô tả Ràng buộc
id INT Khóa chính, tự tăng PRIMARY KEY, AUTO_INCREMENT
order_id INT Khóa ngoại liên kết với bảng Orders FK, NOT NULL
product_id INT Khóa ngoại liên kết với bảng Products FK, NOT NULL
quantity INT Số lượng sản phẩm trong đơn hàng NOT NULL
price DECIMAL(10, 2) Giá sản phẩm tại thời điểm mua NOT NULL