基于javaweb+mysql的大学生实习管理系统(java+springboot+thymeleaf+html+jquery+bootstrap)

基于javaweb+mysql的大学生实习管理系统(java+springboot+thymeleaf+html+jquery+bootstrap)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519192324

20220519192326

20220519192328

20220519192330

20220519192332

20220519192334

基于javaweb+SpringBoot的大学生实习管理系统(java+SpringBoot+Thymeleaf+html+JQuery+bootstrap)

项目介绍

本系统的用户可以分为三种:管理员、教师、学生。三种角色登录后会有不同菜单界面;

管理员主要功能:

信息管理 学生信息管理、教师信息管理、生产实习信息管理、顶岗实习信息管理; 生产实习 生产实习申请、我的生产实习、我的成绩、我的申请 顶岗实习 顶岗实习申请、我的顶岗实习、我的成绩、我的申请 实习管理 生产实习管理 生产实习过程管理 生产实习成绩统计 顶岗实习审核 顶岗实习过程管理 顶岗实习成绩统计 分享 系统管理 用户管理 菜单管理 角色信息管理

教师主要功能:

信息管理 学生信息管理; 实习管理 生产实习审核 生产实习过程管理 生产实习成绩统计 顶岗实习审核 顶岗实习过程管理 顶岗实习成绩统计 分享 信息审核; 我的分享、讨论区;

学生主要功能:

生产实习: 生产实习申请; 我的生产实习; 我的成绩; 我的申请; 顶岗实习: 顶岗实习申请; 我的顶岗实习; 我的成绩; 我的申请; 分享: 我的分享; 讨论区;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目

6.数据库:MySql 5.7版本;

技术栈

1.核心框架:Spring Boot。 2.安全框架:Apache Shiro。 3.模板引擎:Thymeleaf。 4.持久层框架:MyBatis。 5.定时任务:Quartz。 6.数据库连接池:Druid。 7.工具类:Fastjson。 8.前端:Thymeleaf+html+JQuery+bootstrap

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 将项目中ruoyi-admin/src/main/resources/application-druid.yml配置文件中的数据库配置改为自己的配置; 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 4. 运行项目,输入localhost:8092 登录

管理员信息 前端控制器:

/**

  • 管理员信息 前端控制器

  • @author yy

*/

@RestController

@RequestMapping(“/stu-user”)

public class StuUserController {

@Autowired

private Producer producer;

@Autowired

private IStuUserService iStuUserService;

@Autowired

private AuthenticationManager authenticationManager;

private final Logger log = Logger.getLogger(StuUserController.class);

@GetMapping(“/user-list”)

public HttpResponse getUserList(NormalQueryInfo normalQueryInfo){

return HttpResponse.success(iStuUserService.getUserList(normalQueryInfo));

@PostMapping(“/edit”)

public HttpResponse editUser(@RequestBody StuUser stuUser){

return HttpResponse.success(iStuUserService.editUser(stuUser));

@DeleteMapping(“/del”)

public HttpResponse delUser(@RequestBody StuUser stuUser){

return HttpResponse.success(iStuUserService.deleteUser(stuUser));

/**

  • 验证码

*/

@GetMapping(“/captcha.jpg”)

public void captcha(HttpServletResponse response, HttpServletRequest request) throws IOException {

response.setHeader(“Cache-Control”, “no-store, no-cache”);

response.setContentType(“image/jpeg”);

// 生成文字验证码

String text = producer.createText();

// 生成图片验证码

BufferedImage image = producer.createImage(text);

// 保存到验证码到 session

request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);

ServletOutputStream out = response.getOutputStream();

ImageIO.write(image, “jpg”, out);

IOUtils.closeQuietly(out);

/**

  • 登录接口

*/

@PostMapping(value = “/login”)

public HttpResponse login(@RequestBody LoginRequest loginRequest, HttpServletRequest request) throws IOException {

String username = loginRequest.getAccount();

String password = loginRequest.getPassword();

// String captcha = loginBean.getCaptcha();

// 从session中获取之前保存的验证码跟前台传来的验证码进行匹配

// Object kaptcha = request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);

// if(kaptcha == null){

// return HttpResult.error(“验证码已失效”);

// }

// if(!captcha.equals(kaptcha)){

// return HttpResult.error(“验证码不正确”);

// }

// // 用户信息

// System.out.println(username+“|”+password+“|”+captcha+" ");

StuUser user = iStuUserService.findByName(username);

// 账号不存在、密码错误

if (user == null) {

return HttpResponse.error(“账号不存在”);

if (!PasswordUtils.matches(user.getSalt(), password, user.getPassword())) {

return HttpResponse.error(“密码不正确”);

JwtAuthenticatioToken token = SecurityUtils.login(request, username, password, authenticationManager);

log.info(“user:”+token.getName()+“login Success! [In “+token.getDetails().toString()+”]”);

return HttpResponse.success(new LoginResponse(token.getName(),token.getToken(),“OK!”));

@PostMapping(value=“/save”)

public HttpResponse addUser(@RequestBody StuUser stuUser) {

return HttpResponse.success(iStuUserService.addUser(stuUser));

@GetMapping(value=“/findByName”)

public HttpResponse findByUserName(@RequestParam String name) {

return HttpResponse.success(iStuUserService.findByName(name));

教师个人详细信息 前端控制器:

/**

  • 教师个人详细信息 前端控制器

  • @author yy

*/

@RestController

@RequestMapping(“/stu-teacher-info”)

public class StuTeacherInfoController {

@Autowired

private IStuTeacherInfoService iStuTeacherInfoService;

@GetMapping(“/get”)

public HttpResponse getTeacherInfosList(NormalQueryInfo normalQueryInfo){

return HttpResponse.success(iStuTeacherInfoService.getTeacherInfosList(normalQueryInfo));

@PostMapping(“/add”)

public HttpResponse addTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){

String res = iStuTeacherInfoService.addTeacherInfosList(stuTeacherInfo);

return res == null ? HttpResponse.success() : HttpResponse.error(res) ;

@PostMapping(“/edit”)

public HttpResponse editTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){

return HttpResponse.success(iStuTeacherInfoService.editTeacherInfosList(stuTeacherInfo));

@DeleteMapping(“/del”)

public HttpResponse delTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){

return HttpResponse.success(iStuTeacherInfoService.delTeacherInfosList(stuTeacherInfo));

@GetMapping(“/remove-course-teacher”)

public HttpResponse delCourse(@RequestParam(“teacherId”) Integer teacherId){

return HttpResponse.success(iStuTeacherInfoService.setCourseTeacherById(teacherId,-1));

@GetMapping(“/get-no-course”)

public HttpResponse getAllTeacherInfosListNoCourse(){

return HttpResponse.success(iStuTeacherInfoService.getAllTeacherInfosListNoCourse());

@GetMapping(“/set-course”)

public HttpResponse setCourseTeacher(@RequestParam(value = “teacherId”) Integer teacherId,

@RequestParam(value = “courseId”) Integer courseId){

return HttpResponse.success(iStuTeacherInfoService.setCourseTeacherById(teacherId,courseId));

学生信息 前端控制器:

/**

  • 学生信息 前端控制器

  • @author yy

*/

@RestController

@RequestMapping(“/stu-info”)

public class StuInfoController {

@Autowired

private IStuInfoService iStuInfoService;

/**

  • 分页查询全部信息

  • */

@GetMapping(“/get”)

public HttpResponse getPageStudentInfo(QueryStuInfoListRequest queryStuInfoListRequest){

return HttpResponse.success(iStuInfoService.getPageStudentInfo(

queryStuInfoListRequest.getPageNum(), queryStuInfoListRequest.getPageSize()

));

/**

  • 对基本信息进行高级查询

  • */

@GetMapping(“/get-test”)

public HttpResponse getPageStudentInfoByCondition(QueryStuInfoListRequest queryStuInfoListRequest){

iStuInfoService.getStudentInfoByCondition(queryStuInfoListRequest);

QueryListResponse queryStuInfoListResponse = iStuInfoService.getStudentInfoByCondition(queryStuInfoListRequest);

//如果stuInfoListResponse.getNumOfTotalRecord() < 0 ,则表明输入类型和预期不符且发生异常,则返回错误

return queryStuInfoListResponse.getNumOfTotalRecord() < 0 ?

HttpResponse.error(“输入信息类型错误!”) : HttpResponse.success(queryStuInfoListResponse);

/**

  • 添加学生信息

  • */

@PostMapping(“/add”)

public HttpResponse addStudentInfo(@RequestBody StuInfo stuInfo){

String res = iStuInfoService.addStudentInfo(stuInfo);

//返回信息的长度大于0,则表示有错误或有提示信息

return res.length() > 0 ? HttpResponse.error(res) : HttpResponse.success(“成功插入一条记录”) ;

/**

  • 编辑学生性别或手机号信息

  • */

@PostMapping(“/edit”)

public HttpResponse editStudentSexOrPhoneInfo(@RequestBody StuInfo stuInfo){

return HttpResponse.success(iStuInfoService.editStudentInfo(stuInfo));

/**

  • 根据学号删除学生信息

  • */

@DeleteMapping(“/delete”)

public HttpResponse deleteStudentInfoByNumber(@RequestBody StuInfo stuInfo){

return HttpResponse.success(iStuInfoService.deleteStudentInfo(stuInfo));

/**

  • 修改学生违纪状态

  • */

@PostMapping(“/change”)

public HttpResponse changeStudentStatus(@RequestBody StuInfo stuInfo){

return HttpResponse.success(iStuInfoService.changeStudentStatus(stuInfo));


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值