# 学生管理系统 (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 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权限认证 - 📊 多条件分页查询 - 🎯 批量操作事务优化 - 🏷️ 状态管理枚举化 **注意**: 这是一个演示项目,实际生产环境使用前请进行充分测试。