You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
7.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 学生管理系统 (Student Management System)
基于Spring Boot 3.3.3 + Spring Security + MyBatis Plus的学生管理系统支持专业、班级、学生、教师的完整管理功能。
## 📋 项目概述
这是一个现代化的学生信息管理系统,提供了完整的教育机构信息化解决方案。系统采用微服务架构设计,模块化开发,支持批量导入导出、权限管理等企业级功能。
### 核心功能模块
- **专业管理**: 支持专业的增删改查,批量导入导出
- **班级管理**: 基于专业的班级管理,支持代码关联
- **学生管理**: 完整的学生信息管理,支持账号自动创建
- **教师管理**: 教师信息管理,支持账号自动创建
- **用户权限**: 基于角色的权限控制系统
## 🛠️ 技术栈
### 后端技术
- **Spring Boot 3.3.3** - 主框架
- **Spring Security** - 安全认证与授权
- **MyBatis Plus 3.5.7** - 数据库ORM框架
- **MySQL 8.0** - 数据库
- **Redis** - 登录缓存
- **EasyExcel 4.0.3** - Excel导入导出
- **JWT** - Token认证
- **Lombok** - 简化开发
- **HikariCP** - 数据库连接池
### 开发工具
- **Maven 3.x** - 项目构建
- **Java 17** - 开发语言
- **IntelliJ IDEA** - IDE推荐
## 🏗️ 项目结构
```
yuxingshi-sms/
├── yuxingshi-sms-common/ # 公共模块
│ ├── yuxingshi-sms-core/ # 核心工具类
│ ├── yuxingshi-sms-redis/ # Redis配置
│ ├── yuxingshi-sms-mybatisplus/ # MyBatis Plus配置
│ ├── yuxingshi-sms-security/ # 安全模块
│ └── yuxingshi-sms-intercepter/ # 拦截器
├── yuxingshi-sms-server/ # 主服务模块
│ ├── src/main/java/
│ │ └── yuxingshi/sms/server/
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 服务层
│ │ ├── mapper/ # 数据访问层
│ │ └── domain/ # 实体和DTO
│ └── src/main/resources/
│ └── application.yaml # 配置文件
└── deploy/ # 部署配置
└── dev/ # 开发环境配置
```
## 🚀 快速开始
### 环境要求
- JDK 17+
- Maven 3.x
- MySQL 8.0+
- Redis 6.0+
### 本地开发部署
1. **克隆项目**
```bash
git clone <repository-url>
cd yuxingshi-ssm
```
2. **数据库配置**
```yaml
# application.yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/yxs_sms?useSSL=false&serverTimezone=GMT%2B8
username: your_username
password: your_password
```
3. **Redis配置**
```yaml
spring:
data:
redis:
host: localhost
port: 6379
password: your_redis_password
```
4. **编译和运行**
```bash
# 编译项目
mvn clean compile
# 启动服务
mvn spring-boot:run -pl yuxingshi-sms-server
```
5. **访问应用**
## 📊 数据库设计
### 核心表结构
| 表名 | 说明 | 关键字段 |
|------|------|----------|
| `user` | 用户表 | id, username, password, role, status |
| `major` | 专业表 | id, major_code, major_name, description |
| `classes` | 班级表 | id, class_code, major_id, description |
| `student` | 学生表 | id, user_id, class_id, student_no, real_name |
| `teacher` | 教师表 | id, user_id, teacher_no, real_name, department |
### ER关系
- 一个专业可以有多个班级
- 一个班级可以有多个学生
- 每个学生和教师都有对应的用户账号
## 🎯 核心功能
### 1. 批量导入功能
系统支持Excel批量导入具有以下特性
#### 专业导入
- 支持专业代码、专业名称、描述信息
- 自动去重校验
- 批量导入高性能处理
#### 班级导入
- 支持班级代码、专业代码关联
- 自动通过专业代码查询专业ID
- 数据完整性校验
#### 学生导入
- 支持学号、姓名、性别、手机号、班级代码
- 自动创建用户账号(用户名=学号,密码=学号)
- 批量处理User和Student表保证事务一致性
- 自动关联班级信息
#### 教师导入
- 支持工号、姓名、部门、手机号
- 自动创建用户账号(用户名=工号,密码=工号)
- 批量处理User和Teacher表保证事务一致性
### 2. 权限管理
- **学生角色**: 查看个人信息
- **教师角色**: 教学相关功能
- **管理员角色**: 完整的管理功能
### 3. 状态管理
使用枚举统一管理所有实体的状态:
- `EntityStatus.ACTIVE` (启用) = 1
- `EntityStatus.DISABLED` (禁用) = 0
## 🔧 API接口
### 认证接口
```http
POST /api/users/login # 用户登录
GET /api/users/detail # 获取用户信息
```
### 专业管理
```http
GET /api/majors # 查询专业列表
POST /api/majors # 创建专业
PUT /api/majors/{id} # 更新专业
DELETE /api/majors/{id} # 删除专业
POST /api/majors/import # 批量导入专业
```
### 班级管理
```http
GET /api/classes # 查询班级列表
POST /api/classes # 创建班级
PUT /api/classes/{id} # 更新班级
DELETE /api/classes/{id} # 删除班级
POST /api/classes/import # 批量导入班级
```
### 学生管理
```http
GET /api/students # 查询学生列表
POST /api/students # 创建学生
PUT /api/students/{id} # 更新学生
DELETE /api/students/{id} # 删除学生
POST /api/students/import # 批量导入学生
```
### 教师管理
```http
GET /api/teachers # 查询教师列表
POST /api/teachers # 创建教师
PUT /api/teachers/{id} # 更新教师
DELETE /api/teachers/{id} # 删除教师
POST /api/teachers/import # 批量导入教师
```
## 🔐 安全特性
- **JWT认证**: 无状态Token认证
- **密码加密**: BCrypt加密存储
- **权限控制**: 基于角色的访问控制
- **参数校验**: Spring Validation框架
- **SQL注入防护**: MyBatis Plus预编译
## 📈 性能优化
- **批量操作**: Excel导入使用批量插入提升性能
- **数据库连接池**: HikariCP连接池优化
- **缓存策略**: Redis缓存热点数据
- **分页查询**: MyBatis Plus分页插件
- **索引优化**: 关键字段建立索引
## 🐛 错误处理
系统完善的错误处理机制:
1. **数据校验**: 必填字段校验、格式校验
2. **重复检查**: Excel内重复、数据库重复检查
3. **关联验证**: 专业代码、班级代码存在性验证
4. **事务回滚**: 批量操作失败时完整回滚
5. **友好提示**: 详细的错误信息返回
## 🔧 配置说明
### 批量导入配置
```yaml
app:
import:
# 批量插入大小,避免内存溢出
major:
batch-insert-size: 100
class:
batch-insert-size: 100
student:
batch-insert-size: 500
teacher:
batch-insert-size: 500
```
### 文件上传配置
```yaml
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 20MB
```
## 📝 更新日志
### v1.0.0 (2024-11-21)
- ✨ 完整的CRUD功能
- 🚀 Excel批量导入导出
- 🔐 JWT权限认证
- 📊 多条件分页查询
- 🎯 批量操作事务优化
- 🏷️ 状态管理枚举化
**注意**: 这是一个演示项目,实际生产环境使用前请进行充分测试。