366 lines
7.6 KiB
Markdown
366 lines
7.6 KiB
Markdown
# 学生管理系统使用指南
|
||
|
||
## 概述
|
||
|
||
学生管理系统是一个完整的学生信息管理解决方案,支持学生基本信息管理、家长关系管理、班级分配、状态管理等功能。
|
||
|
||
## 主要功能
|
||
|
||
### 1. 学生基本信息管理
|
||
- 学生CRUD操作
|
||
- 家长CRUD操作
|
||
- 用户名、邮箱、手机号唯一性验证
|
||
- 密码加密存储
|
||
|
||
### 2. 家长子女关系管理
|
||
- 家长和子女关系绑定
|
||
- 家长查看子女信息
|
||
- 关系解除功能
|
||
|
||
### 3. 班级管理
|
||
- 学生班级分配
|
||
- 班级转移功能
|
||
- 班级历史记录
|
||
- 批量操作
|
||
|
||
### 4. 状态管理
|
||
- 用户状态控制(正常/禁用/欠费/未激活)
|
||
- 密码重置功能
|
||
- 统计信息查看
|
||
|
||
## 数据库设计
|
||
|
||
### 学生表 (student)
|
||
```sql
|
||
-- 主要字段
|
||
id -- 主键
|
||
username -- 用户名(唯一)
|
||
real_name -- 真实姓名
|
||
password -- 加密密码
|
||
salt -- 密码盐值
|
||
role -- 角色(2:学生,3:家长)
|
||
grade_id -- 年级ID
|
||
parent_id -- 家长ID
|
||
email -- 邮箱(唯一)
|
||
phone_number -- 手机号(唯一)
|
||
status -- 状态(0:禁用,1:正常,2:欠费,3:未激活)
|
||
sex -- 性别(0:不填,1:男,2:女)
|
||
reg_time -- 注册时间
|
||
reg_ip -- 注册IP
|
||
-- 其他字段...
|
||
```
|
||
|
||
### 学生班级关联表 (student_class)
|
||
```sql
|
||
-- 主要字段
|
||
id -- 主键
|
||
student_id -- 学生ID
|
||
school_id -- 学校ID
|
||
class_id -- 班级ID
|
||
join_time -- 入班时间
|
||
leave_time -- 离班时间
|
||
status -- 状态(1:正常在读,2:已转班,3:已毕业,4:退学)
|
||
remark -- 备注
|
||
created_at -- 创建时间
|
||
updated_at -- 更新时间
|
||
```
|
||
|
||
## API接口
|
||
|
||
### 学生管理接口
|
||
|
||
#### 1. 获取学生列表
|
||
```
|
||
GET/POST /admin/student/list
|
||
```
|
||
|
||
**参数:**
|
||
- `page`: 页码
|
||
- `page_size`: 每页数量
|
||
- `username`: 用户名(模糊搜索)
|
||
- `real_name`: 真实姓名(模糊搜索)
|
||
- `email`: 邮箱(模糊搜索)
|
||
- `phone_number`: 手机号(模糊搜索)
|
||
- `role`: 角色(2:学生,3:家长)
|
||
- `status`: 状态
|
||
- `sex`: 性别
|
||
- `grade_id`: 年级ID
|
||
- `parent_id`: 家长ID
|
||
- `class_id`: 班级ID
|
||
|
||
**返回示例:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"username": "student001",
|
||
"real_name": "张三",
|
||
"role": 2,
|
||
"role_name": "学生",
|
||
"status": 1,
|
||
"status_name": "正常",
|
||
"sex": 1,
|
||
"sex_name": "男",
|
||
"email": "student001@example.com",
|
||
"phone_number": "13800138001",
|
||
"current_class": {
|
||
"id": 1,
|
||
"name": "一年级1班"
|
||
},
|
||
"parent": {
|
||
"id": 2,
|
||
"username": "parent001",
|
||
"real_name": "张父"
|
||
}
|
||
}
|
||
],
|
||
"total": 100,
|
||
"per_page": 15,
|
||
"current_page": 1
|
||
},
|
||
"msg": "获取学生列表成功"
|
||
}
|
||
```
|
||
|
||
#### 2. 创建学生
|
||
```
|
||
POST /admin/student/create
|
||
```
|
||
|
||
**参数:**
|
||
- `username`: 用户名(必填)
|
||
- `real_name`: 真实姓名
|
||
- `password`: 密码(必填)
|
||
- `role`: 角色(必填,2:学生,3:家长)
|
||
- `grade_id`: 年级ID
|
||
- `parent_id`: 家长ID
|
||
- `email`: 邮箱
|
||
- `phone_number`: 手机号
|
||
- `status`: 状态
|
||
- `sex`: 性别
|
||
|
||
#### 3. 更新学生
|
||
```
|
||
PUT/POST /admin/student/update
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
- 其他参数同创建接口
|
||
|
||
#### 4. 删除学生
|
||
```
|
||
DELETE/POST /admin/student/delete
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
|
||
#### 5. 获取学生详情
|
||
```
|
||
GET/POST /admin/student/detail
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
|
||
#### 6. 重置密码
|
||
```
|
||
POST /admin/student/reset-password
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
- `password`: 新密码(必填)
|
||
|
||
#### 7. 更新状态
|
||
```
|
||
POST /admin/student/status
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
- `status`: 状态(必填,0-3)
|
||
|
||
#### 8. 获取班级历史
|
||
```
|
||
GET/POST /admin/student/class-history
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
|
||
#### 9. 分配到班级
|
||
```
|
||
POST /admin/student/assign-class
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
- `class_id`: 班级ID(必填)
|
||
- `join_time`: 入班时间
|
||
- `remark`: 备注
|
||
|
||
#### 10. 从班级移除
|
||
```
|
||
POST /admin/student/remove-class
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 学生ID(必填)
|
||
- `class_id`: 班级ID(必填)
|
||
- `status`: 离班状态
|
||
- `leave_time`: 离班时间
|
||
- `remark`: 备注
|
||
|
||
### 家长管理接口
|
||
|
||
#### 1. 获取家长的子女列表
|
||
```
|
||
GET/POST /admin/student/children
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 家长ID(必填)
|
||
|
||
#### 2. 绑定家长和子女
|
||
```
|
||
POST /admin/student/bind-child
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 家长ID(必填)
|
||
- `child_id`: 子女ID(必填)
|
||
|
||
#### 3. 解除家长和子女绑定
|
||
```
|
||
POST /admin/student/unbind-child
|
||
```
|
||
|
||
**参数:**
|
||
- `id`: 子女ID(必填)
|
||
|
||
### 统计接口
|
||
|
||
#### 1. 获取学生统计信息
|
||
```
|
||
GET/POST /admin/student/statistics
|
||
```
|
||
|
||
**返回示例:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"total_students": 150,
|
||
"total_parents": 80,
|
||
"normal_students": 140,
|
||
"male_students": 75,
|
||
"female_students": 75,
|
||
"status_distribution": {
|
||
"normal": 140,
|
||
"disabled": 5,
|
||
"arrears": 3,
|
||
"inactive": 2
|
||
}
|
||
},
|
||
"msg": "获取统计信息成功"
|
||
}
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 1. 创建学生
|
||
```bash
|
||
curl -X POST http://localhost:8000/admin/student/create \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "student123",
|
||
"real_name": "测试学生",
|
||
"password": "123456",
|
||
"role": 2,
|
||
"email": "test@example.com",
|
||
"phone_number": "13800138000",
|
||
"sex": 1,
|
||
"status": 1
|
||
}'
|
||
```
|
||
|
||
### 2. 查询学生列表
|
||
```bash
|
||
curl -X GET "http://localhost:8000/admin/student/list?page=1&page_size=10&role=2&status=1"
|
||
```
|
||
|
||
### 3. 分配学生到班级
|
||
```bash
|
||
curl -X POST http://localhost:8000/admin/student/assign-class \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"id": 1,
|
||
"class_id": 5,
|
||
"join_time": "2024-01-01 08:00:00",
|
||
"remark": "新学期分班"
|
||
}'
|
||
```
|
||
|
||
### 4. 绑定家长和子女
|
||
```bash
|
||
curl -X POST http://localhost:8000/admin/student/bind-child \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"id": 2,
|
||
"child_id": 1
|
||
}'
|
||
```
|
||
|
||
## 数据初始化
|
||
|
||
### 1. 运行迁移
|
||
```bash
|
||
php artisan migrate
|
||
```
|
||
|
||
### 2. 运行测试数据填充
|
||
```bash
|
||
php artisan db:seed --class=StudentSeeder
|
||
```
|
||
|
||
这会创建以下测试数据:
|
||
- 3个学生用户:student001, student002, student003
|
||
- 2个家长用户:parent001, parent002
|
||
- 密码都是:123456
|
||
- 已设置好家长和子女关系
|
||
|
||
## 注意事项
|
||
|
||
1. **密码安全**: 系统使用MD5+盐值加密,建议在生产环境中升级到更安全的加密方式
|
||
2. **数据验证**: 所有输入都经过严格验证,确保数据完整性
|
||
3. **权限控制**: 需要配合认证中间件使用
|
||
4. **日志记录**: 所有重要操作都会记录日志
|
||
5. **事务处理**: 重要操作使用数据库事务确保数据一致性
|
||
|
||
## 扩展功能
|
||
|
||
系统预留了以下扩展接口:
|
||
- 批量导入学生数据
|
||
- 导出学生数据
|
||
- 更多统计报表
|
||
- 图片上传功能
|
||
- 消息通知功能
|
||
|
||
## 技术架构
|
||
|
||
- **框架**: Laravel 11
|
||
- **数据库**: MySQL
|
||
- **认证**: Laravel Sanctum
|
||
- **验证**: Laravel Validation
|
||
- **日志**: Laravel Log
|
||
- **中间件**: 自定义认证中间件
|
||
|
||
## 联系支持
|
||
|
||
如有问题或需要技术支持,请联系开发团队。
|