# 导师选择系统
东北林业大学 Web系统框架课程 导师选择系统 demo 后端
![image-20200519002133178](./docs/image-20200519002133178.png)
> ps. 自己真的做的很差劲,很多地方缺漏很多,算是学习的过程。写的也支离破碎,希望能够通过这个小项目学习一些知识。
>
> [:runner:前端](https://github.com/BakaRice/tutor-selection-vue)
## 关于工程
- JDK 1.11、Maven 3.2、Mysql8.0、swagger 2
- 使用Spring Boot作为核心框架
- 包含REST API
系统支持多个导师及学生的双向选择,导师可以设置每一门课程的权重以及最低分限制以达到对学生进行选择的目的。
学生可以对心仪导师进行选择。导师可以提前指定内定学生。
### 实体类
1. User
2. Teacher
3. Student
4. Course
5. Elective
详见entity包内实体类
### 接口
## [Login Controller]
1. **POST**
/api/login **用户登录**
Parameters Example Value:
```JSON
{
"number": 1001,
"password": 1001
}
```
Response body:
```json
{
"role": "fbf89a7c09ff46b4"
}
```
Respones Headers:
```
authorization: /*加密后的role和uid字符串*/
```
## [Student Controller]
1. **GET** 查询自己的老师
/api/students/teacher
2. **GET** 查询所有老师
/api/students/teachers
3. **GET** 选取导师
/api/students/teahcers/{tnumber}
## [Teacher Controller]
1. **POST** 为当前登录教师老师添加课程
`/api/teachers/course`
Parameters Example Value:
```json
{
"credit": 2.5,
"lowsetSorce": 60,
"name": "NewCourse",
"weight": 0.7
}
```
2. **GET** 查询当前登录老师的所有课程
`/api/teachers/courses`
3. **GET** 查询指定course_id的课程
`/api/teachers/courses/{course_id}`
4. **DELETE** 删除课程
`/api/teachers/courses/{course_id}`
5. **POST** 为指定id课程添加学生,会覆盖原有该学生选修此课程的信息
`/api/teachers/courses/{course_id}/students`
Parameters Example Value:(此处为StudentVO类)
```json
[
{
"grade": 65,
"name": "Student_1",
"number": 2001
},
{
"grade": 35,
"name": "Student_2",
"number": 2002
}
]
```
6. **PATCH** 修改指定id课程名称和学分
`/api/teachers/courses/info`
Parameters Example Value:
```json
{ "id": 1, "name": exampleName, "credit": 3.5 }
```
7. **PATCH** 修改指定id课程最低分和权重
`/api/teachers/courses/setting`
Parameters Example Value:
```json
{ "id": 1, "lowsetSorce": 65, "weight": 0.2 }
```
8. **GET** 列出当前登录老师的所有学生
`/api/teachers/students`
9. **PATCH** 为当前登录教师老师添加内定学生
`/api/teachers/students`
10. **GET** 列出当前登录老师的个人信息
`/api/teachers/teacher`
11. **POST** 修改老师信息
`/api/teachers/teahcer`
---
### 疑惑与发现
1. `hibernate DDL Cascade`
在写删除课程时,发现存在外键无法直接删除,要记得在ddl时,加上cascade操作。
详见`eumm CascadeType`,
以及hibernate注解ddl操作好文:https://www.cnblogs.com/javaxiaoxin/p/8279641.html
2. `EntityManager fresh`
关于undo区
### 时间轴
`~2020/03/11`:
- 创建项目 和 实体类,并进行测试。
`~2020/03/12`:
- 新增教师实体类、
- 新增`Authority类`进行独立账户验证
- 创建教师与学生间多对一关系
- 为课程类添加权重属性
`~2020/03/17`
- 调整实体类,修改属性细节。~~新增`schedule类`作为教师和课程中间类,用于设置权重及最低分。
(用于支持多个老师对于课程的权重,进行不同的设置)~~
- 新增抽象repositories、services。
`~2020/03/24`
- 添加 swagger
`~2020/03/25`
- 添加自定义异常 用于处理插入时的外键查找不存在,将service层异常抛至controller层处理。
- CourseController <KBD>ADD</KBD> <KBD>DELETE</KBD> <KBD>PATCH</KBD> <KBD>GET</KBD> <KBD>POST</KBD>
- 添加老师的内定学生
`~2020/03/31`
- 优化Sevice结构,重构为student与teacher服务。
`~2020/04/04`
- 添加
登陆拦截器(`LoginInterceptor`),
初始化用户组件(`InitComponent`),
加密解密组件(`EncryptComponent`),
获取HeaderAttribute组件(`RequestComponent`)
- swagger `authorization` 配置 ,便于测试需要登陆的接口
`~2020/10/11`
- 添加
老师课程列表redis缓存(部分),因为前期的结构设计问题太大!导致很多很多地方甚至无法很好的添加缓存!太失误了!,
教师信息redis缓存
**@Cacheable和@CachePut 必须要返回的类型相对应,不然就不行!**
感谢阅读这份文档。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot+JPA+Mysql的导师选择系统.zip (46个子文件)
资料总结
pom.xml 3KB
.github
workflows
maven.yml 540B
src
test
java
com
ricemarch
personnel_management_system
repository
RepositoryTest.java 2KB
http
test.http 764B
service
TeacherServiceTest.java 1KB
entity
DataInitTest.java 2KB
PersonnelManagementSystemApplicationTests.java 261B
main
resources
application.properties 1023B
application-pro.properties 17B
application-dev.properties 17B
java
com
ricemarch
personnel_management_system
repository
TeacherRepository.java 1KB
ElectiveRepository.java 809B
UserRepository.java 542B
StudentRepository.java 1KB
impl
BaseRepositoryImpl.java 781B
BaseRepository.java 297B
CourseRepository.java 2KB
PersonnelManagementSystemApplication.java 995B
controller
TeacherController.java 8KB
LoginController.java 2KB
VO
StudentVO.java 247B
StudentController.java 2KB
component
MyToken.java 437B
InitComponent.java 2KB
EncryptComponent.java 2KB
RequestComponent.java 797B
service
UserService.java 2KB
ITeacherService.java 3KB
IStudentService.java 651B
impl
TeacherServiceImpl.java 7KB
StudentServiceImpl.java 3KB
entity
Teacher.java 2KB
Elective.java 1KB
Course.java 2KB
Student.java 2KB
User.java 1KB
exception
ExceptionController.java 2KB
CustomException.java 389B
config
SwaggerConfig.java 4KB
WebMvcConfig.java 1KB
interceptor
LoginInterceptor.java 1KB
StudentInterceptor.java 1KB
TeacherInterceptor.java 1KB
docs
image-20200519002133178.png 1.28MB
.gitignore 333B
README.md 5KB
共 46 条
- 1
资源评论
- 季风泯灭的季节2024-02-25由衷感谢博主的付出和分享!他的内容不仅丰富多样,而且总是那么有深度,让我在工作中更有信心。没有他的帮助,我可能会在困难面前束手无策。 #完美解决问题
妄北y
- 粉丝: 2w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- COMSOL裂隙动水注浆扩散数值模 拟针对动水注浆中常用的2种速凝浆液,水泥–水玻璃浆液与高聚物改性水泥浆液,考虑浆液黏度时变特性
- WizTree 是一款适用于 Windows 的快速磁盘空间分析工具
- mfc人士资源系统,c++
- 全国职业院校技能大赛网络构建试题-II卷.docx
- 两级三相光伏并网逆变器控制Matlab Simulink仿真模型,mppt控制有扰动观察法和电导增量法
- GRU门控循环单元多输入单输出回归预测(Matlab完整源码和数据)
- Fluent电池包热管理-新能源汽车电池包热管理仿真 模型如何搭建,几何清理网格划分,重要分析参数如何设置,及不同电池包热分析工况 非常系统全面
- Everything一个强大的文件搜索工具
- 基于jsp+mysql的JSP宠物商城源码+数据库+文档说明
- 基于Lab颜色模型的K-means聚类算法用于柑橘红蜘蛛图像识别及其效能评估
- Total Uninstall 专业版可以轻松移除任何程序,并分析或监视程序的安装过程 它还可以安全清理系统,管理 Windows 启动过程,以及转移程序到新 PC 上
- LSSVM最小二乘支持向量机多输入单输出回归预测(Matlab完整源码和数据)
- Python毕业设计基于Django的智能人脸识别监控系统源码+文档说明.zip
- HPMSM的飞轮储能并网控制simulink仿真 注意:MATLAB R2021b搭建(可转低版本,但是可能会出现器件不全)
- Snipastet是一个简单但强大截图工具,也可以让你将截图贴回到屏幕上!
- VisionPro软件手册+2D拼接+3D扫描+联合编程手册
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功