Add Home

administrator 2026-01-06 15:27:44 +07:00
commit 918098f064

230
Home.md Normal file

@ -0,0 +1,230 @@
# 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](#1-giới-thiệu)
2. [Quản lý tài khoản](#2-quản-lý-tài-khoản)
1. [Mô tả tính năng](#21-mô-tả-tính-năng)
2. [Luồng hoạt động (Flowchart)](#22-luồng-hoạt-động-flowchart)
3. [Chi tiết luồng](#23-chi-tiết-luồng)
4. [Thiết kế Cơ sở dữ liệu](#24-thiết-kế-cơ-sở-dữ-liệu)
3. [Quản lý sản phẩm](#3-quản-lý-sản-phẩm)
1. [Mô tả tính năng](#31-mô-tả-tính-năng)
2. [Luồng hoạt động (Flowchart)](#32-luồng-hoạt-động-flowchart)
3. [Chi tiết luồng](#33-chi-tiết-luồng)
4. [Thiết kế Cơ sở dữ liệu](#34-thiết-kế-cơ-sở-dữ-liệu)
4. [Quản lý đơn hàng](#4-quản-lý-đơn-hàng)
1. [Mô tả tính năng](#41-mô-tả-tính-năng)
2. [Luồng hoạt động (Flowchart)](#42-luồng-hoạt-động-flowchart)
3. [Chi tiết luồng](#43-chi-tiết-luồng)
4. [Thiết kế Cơ sở dữ liệu](#44-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
```mermaid
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ý
```mermaid
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)
```mermaid
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
```mermaid
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 |