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

这是一个基于SpringBoot的学生信息管理系统,包括管理员、教师和学生的角色区分。管理员负责信息管理,如学生、教师及实习信息;教师可审核实习,管理学生信息;学生可申请实习和查看成绩。系统采用MyBatis、Apache Shiro、Thymeleaf等技术,适用于课程设计、项目练习等场景。登录验证涉及验证码校验和密码加密。
摘要由CSDN通过智能技术生成

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

管理员主要功能:

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

教师主要功能:

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

学生主要功能:

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

环境需要
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 登录

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

适用

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

        //如果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));
    }
    /**
     * 修改学生违纪状态
     * */
    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());
    }
    @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);
    }
        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){
        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("密码不正确");
    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())) {
    @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.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){
    @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));
    }
}
学生信息 前端控制器:
/**
 * <p>
    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));
    }
}
学生信息 前端控制器:
/**
 * <p>
 * 学生信息 前端控制器
 * </p>
 *

一、项目简介 本项目是一套基于JavaWeb学生实习管理系统/学生实训管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:JSP、Servlet、JDBC ​数据库:MySQL 开发环境:JDK、Eclipse、Tomcat 三、系统功能 该学生实习管理系统采用B/S结构,使用JAVA开发语言,结合JSP技术,以MySQL作为后台数据库。 该系统共含三种角色:学生、老师、管理员等,每种角色分别有不同的功能模块。管理员可以管理班级、学生、老师等基本信息学生可以管理个人实习日志及实习反馈信息;老师可以对学生实习情况进行评价。 各角色的具体功能如下: 1.学生 实习日志管理模块:学生通过该模块管理个人实习日志信息实习日志的添加、查看操作。 实习反馈管理模块:学生通过该模块管理个人实习反馈信息实习反馈的添加、查看操作 2.老师 实习评价管理模块:老师通过该模块管理学生实习评价信息括评价信息添加、查看操作 3.管理员 班级信息管理模块:管理员通过该模块管理班级信息括班级信息添加、查询、删除等操作。 学生信息管理模块:管理员通过该模块管理学生信息学生信息添加、查询、删除等操作。 老师信息管理模块:管理员通过该模块管理老师信息括老师信息添加、查询、删除等操作。 通知信息管理模块:管理员通过该模块管理通告信息括通告信息添加、查询、删除等操作。 实习信息管理模块:管理员通过该模块管理学生实习信息学生实习信息添加、查询、删除等操作。 修改个人密码:管理员登录系统,可以修改自己的登录密码。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值