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.
|
|
14 hours ago | |
|---|---|---|
| deploy/dev | 3 days ago | |
| out/production | 4 days ago | |
| yuxingshi-sms-common | 3 days ago | |
| yuxingshi-sms-server | 3 days ago | |
| .gitignore | 3 days ago | |
| README.md | 14 hours ago | |
| pom.xml | 4 days ago | |
README.md
学生管理系统 (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+
本地开发部署
- 克隆项目
git clone <repository-url>
cd yuxingshi-ssm
- 数据库配置
# application.yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/yxs_sms?useSSL=false&serverTimezone=GMT%2B8
username: your_username
password: your_password
- Redis配置
spring:
data:
redis:
host: localhost
port: 6379
password: your_redis_password
- 编译和运行
# 编译项目
mvn clean compile
# 启动服务
mvn spring-boot:run -pl yuxingshi-sms-server
- 访问应用
📊 数据库设计
核心表结构
| 表名 | 说明 | 关键字段 |
|---|---|---|
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(启用) = 1EntityStatus.DISABLED(禁用) = 0
🔧 API接口
认证接口
POST /api/users/login # 用户登录
GET /api/users/detail # 获取用户信息
专业管理
GET /api/majors # 查询专业列表
POST /api/majors # 创建专业
PUT /api/majors/{id} # 更新专业
DELETE /api/majors/{id} # 删除专业
POST /api/majors/import # 批量导入专业
班级管理
GET /api/classes # 查询班级列表
POST /api/classes # 创建班级
PUT /api/classes/{id} # 更新班级
DELETE /api/classes/{id} # 删除班级
POST /api/classes/import # 批量导入班级
学生管理
GET /api/students # 查询学生列表
POST /api/students # 创建学生
PUT /api/students/{id} # 更新学生
DELETE /api/students/{id} # 删除学生
POST /api/students/import # 批量导入学生
教师管理
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分页插件
- 索引优化: 关键字段建立索引
🐛 错误处理
系统完善的错误处理机制:
- 数据校验: 必填字段校验、格式校验
- 重复检查: Excel内重复、数据库重复检查
- 关联验证: 专业代码、班级代码存在性验证
- 事务回滚: 批量操作失败时完整回滚
- 友好提示: 详细的错误信息返回
🔧 配置说明
批量导入配置
app:
import:
# 批量插入大小,避免内存溢出
major:
batch-insert-size: 100
class:
batch-insert-size: 100
student:
batch-insert-size: 500
teacher:
batch-insert-size: 500
文件上传配置
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 20MB
📝 更新日志
v1.0.0 (2024-11-21)
- ✨ 完整的CRUD功能
- 🚀 Excel批量导入导出
- 🔐 JWT权限认证
- 📊 多条件分页查询
- 🎯 批量操作事务优化
- 🏷️ 状态管理枚举化
注意: 这是一个演示项目,实际生产环境使用前请进行充分测试。