学生管理系统后台服务
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.
魏灿斌 3a220a8c3c readme 10 months ago
deploy/dev remove mysql and redis data dirs from repo 10 months ago
out/production 学生,成绩,班级,专业,教师,用户管理ok 10 months ago
yuxingshi-sms-common 抽取状态枚举,重构批量导入代码 10 months ago
yuxingshi-sms-server 抽取状态枚举,重构批量导入代码 10 months ago
.gitignore remove mysql and redis data dirs from repo 10 months ago
README.md readme 10 months ago
pom.xml 学生,成绩,班级,专业,教师,用户管理ok 10 months 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+

本地开发部署

  1. 克隆项目
git clone <repository-url>
cd yuxingshi-ssm
  1. 数据库配置
# application.yaml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/yxs_sms?useSSL=false&serverTimezone=GMT%2B8
    username: your_username
    password: your_password
  1. Redis配置
spring:
  data:
    redis:
      host: localhost
      port: 6379
      password: your_redis_password
  1. 编译和运行
# 编译项目
mvn clean compile

# 启动服务
mvn spring-boot:run -pl yuxingshi-sms-server
  1. 访问应用

📊 数据库设计

核心表结构

表名 说明 关键字段
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接口

认证接口

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分页插件
  • 索引优化: 关键字段建立索引

🐛 错误处理

系统完善的错误处理机制:

  1. 数据校验: 必填字段校验、格式校验
  2. 重复检查: Excel内重复、数据库重复检查
  3. 关联验证: 专业代码、班级代码存在性验证
  4. 事务回滚: 批量操作失败时完整回滚
  5. 友好提示: 详细的错误信息返回

🔧 配置说明

批量导入配置

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权限认证
  • 📊 多条件分页查询
  • 🎯 批量操作事务优化
  • 🏷️ 状态管理枚举化

🤝 贡献指南

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

📞 联系方式


注意: 这是一个演示项目,实际生产环境使用前请进行充分测试。