SpringBoot项目实战:高校实习管理系统-计算机毕业设计选题推荐

作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

一、前言

高等教育在培养人才和满足劳动市场需求方面具有关键作用。实习是高校教育的不可或缺的组成部分,它提供了学生将理论知识应用于实际工作环境的机会,有助于他们更好地适应职业生涯的要求。然而,实习管理在过去几年中面临着越来越复杂的挑战,包括学生与企业的匹配、实习任务的监管、实习质量的评估等问题。为了解决这些挑战,高校实习管理系统应运而生。
随着信息技术的迅猛发展,高校实习管理系统已成为有效管理和协调学生、老师、企业和管理员之间复杂互动的关键工具。这一系统不仅提供了信息的集中存储和交流平台,还能够跟踪学生的实习进展、评估实习质量、优化实习分配以及提供数据支持决策。然而,为了实现其最大潜力,需要深入的研究和改进。本研究旨在探讨高校实习管理系统的关键特征、优势和挑战,以期为高校提供更好的实习管理工具和实践指导。

二、开发环境

  • 开发语言:Java
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:SpringBoot
  • 前端:Vue

三、系统功能模块

  • 角色:学生、老师、公司、管理员
  • 功能:
    学生
    院系信息、班级信息、公告信息、简历管理、实习情况管理、实习评分信息、简历投递管理、职位招聘信息、实习作业信息、作业提交管理;
    老师
    学生信息、院系信息、班级信息、公告信息、简历信息 、实习情况管理、实习评分信息、职位招聘信息;
    公司
    学生管理、公告信息、实习评分管理、简历投递信息、职位招聘管理、实习作业管理、作业提交管理;
    管理员
    老师管理、公司管理、学生管理、院系管理、班级管理、公告管理、简历管理、实习评分管理、简历投递管理、职位招聘管理、实习作业管理、作业提交管理、实习情况管理、基础数据管理、数据统计图。

四、系统界面展示

  • 高校实习管理系统系统界面展示:
    高校实习管理系统_学生-简历管理
    高校实习管理系统_学生-实习情况管理
    高校实习管理系统_学生-简历投递管理
    高校实习管理系统_学生-作业提交管理
    高校实习管理系统_老师-实习情况管理
    高校实习管理系统_公司-实习评分管理
    高校实习管理系统_公司-职位招聘管理
    高校实习管理系统_管理员-实习评分统计图
    高校实习管理系统_管理员-职位招聘统计图

五、部分代码设计

  • 项目实战-代码参考:
@WebServlet(name = "CenterController", urlPatterns = "*.cc")
public class CenterController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        String path = request.getServletPath();
        HttpSession session = request.getSession();
        path = path.substring(path.lastIndexOf("/") + 1, path.indexOf(".cc"));
        UserService service = new UserService();
        switch (path) {
            case "login":
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                Map<String, String> user = service.getUserInfo(username, password);
                if (user == null) {
                    request.setAttribute("msg", "登录名或密码错误");
//                    request.setAttribute("href", "/webapp/index.jsp");
                    request.setAttribute("href", "/index.jsp");
                    request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                } else {
                    session.setAttribute("login_name", username);
                    session.setAttribute("user_id", user.get("user_id"));
                    switch (user.get("ident")) {
                        case "0":
                            session.setAttribute("role", "teacher");
                            response.sendRedirect("teacher.cc");
                            break;
                        case "1":
                            session.setAttribute("role", "student");
                            session.setAttribute("ID", service.getUserInfo(username).get("id"));
                            response.sendRedirect("student.cc");
                            break;
                        case "2":
                            session.setAttribute("role", "enterprise");
                            response.sendRedirect("enterprise.cc");
                            break;
                    }
                }
                break;
            case "teacher":
                request.getRequestDispatcher("/view/teacher.jsp").forward(request, response);
                break;
            case "student":
                request.getRequestDispatcher("/view/student.jsp").forward(request, response);
                break;
            case "enterprise":
                request.getRequestDispatcher("/view/enterprise.jsp").forward(request, response);
                break;
            case "addGrade": {
                String stu_id = request.getParameter("stu_id");
                String grade = request.getParameter("grade");
                Map<String, String> student = service.getStudentInfo(stu_id);
                if (student == null) {
                    request.setAttribute("msg", "Id 错误");
                } else {
                    Map<String, String> score = service.getStudentGrade(stu_id);
                    if (score == null) {
                        service.addGrade(stu_id, grade);
                    } else {
                        service.updateGrade(stu_id, grade);
                    }
                    request.setAttribute("msg", "成功");
                }
                request.setAttribute("href", "/view/teacher.jsp");
//                request.setAttribute("href", "/webapp/view/teacher.jsp");
                request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                break;
            }
            case "check": {
                String stu_id = request.getParameter("id");
                Map<String, String> grade = service.getStudentGrade(stu_id);
                if (grade == null) {
                    request.setAttribute("msg", "id错误,请重试!");
//                    request.setAttribute("href", "/webapp/view/Check.jsp");
                    request.setAttribute("href", "/view/Check.jsp");
                    request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                } else {
                    String id = grade.get("stu_id");
                    String score = grade.get("grade");
                    request.setAttribute("id", id);
                    request.setAttribute("score", score);
                    request.setAttribute("name", service.getStudentInfo(id).get("name"));
                    request.getRequestDispatcher("/view/show_grade.jsp").forward(request, response);
                }

                break;
            }
            case "resume": {
                String user_id = (String) session.getAttribute("user_id");
                Map<String, String> resume = service.getResumeById(user_id);
                String introduction = request.getParameter("resume");
                if (resume == null) {
                    int rows = service.addResume(introduction, user_id);
                    if (rows > 0) {
                        request.setAttribute("msg", "成功");
                    } else {
                        request.setAttribute("msg", "错误");
                    }
                } else {
                    int rows = service.updateResume(introduction, user_id);
                    if (rows > 0) {
                        request.setAttribute("msg", "成功");
                    } else {
                        request.setAttribute("msg", "错误");
                    }
                }
//                request.setAttribute("href", "/webapp/view/resume.jsp");
                request.setAttribute("href", "/view/resume.jsp");
                request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                break;
            }
            case "Writereport": {
                String user_id = (String) session.getAttribute("user_id");
                String require = request.getParameter("require");

                int rows = service.addReport(user_id, require);
                if (rows > 0) {
                    request.setAttribute("msg", "错误");
                } else {
                    request.setAttribute("msg", "成功");
                }
//                request.setAttribute("href", "/webapp/view/resume.jsp");
                request.setAttribute("href", "/view/Writereport.jsp");
                request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                break;
            }
            case "recruit": {
                String user_id = (String) session.getAttribute("user_id");
                String career = request.getParameter("career");
                String require = request.getParameter("require");
                Map<String, String> recruit = service.getRecruit(career);
                if (recruit == null) {
                    int rows = service.addRecruit(user_id, career, require);
                    if (rows > 0) {
                        request.setAttribute("msg", "成功");
                    } else {
                        request.setAttribute("msg", "错误");
                    }
                } else {
                    int rows = service.updateRecruit(career, require, user_id);
                    if (rows > 0) {
                        request.setAttribute("msg", "成功");
                    } else {
                        request.setAttribute("msg", "错误");
                    }
                }
//                request.setAttribute("href", "/webapp/view/recruit.jsp");
                request.setAttribute("href", "/view/recruit.jsp");
                request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                break;
            }
            case "application":
                String user_ident = (String) session.getAttribute("role");
                String id1 = (String) session.getAttribute("user_id");
                if ("student".equals(user_ident)) {
                    List<Map<String, String>> jobs = service.getAllRecruit();
                    request.setAttribute("jobs", jobs);
                    request.getRequestDispatcher("/view/application.jsp").forward(request, response);
                } else if ("enterprise".equals(user_ident)) {
                    List<Map<String, String>> jobs = service.getAllRecruitById(id1);
                    request.setAttribute("jobs", jobs);
                    request.getRequestDispatcher("/view/application.jsp").forward(request, response);
                }
                break;
            case "delete": {
                String user_id = (String) session.getAttribute("user_id");
                String career = request.getParameter("career");
                Map<String, String> recruit = service.getRecruit(career);
                if (recruit == null) {
                    request.setAttribute("msg", "错误");
                } else {
                    int rows = service.deleteRecruit(career, user_id);
                    if (rows > 0) {
                        request.setAttribute("msg", "成功");
                    } else {
                        request.setAttribute("msg", "错误");
                    }
                }

//                request.setAttribute("href", "/webapp/view/modify.jsp");
                request.setAttribute("href", "/view/modify.jsp");
                request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                break;
            }
            case "apply": {
                String user_id = (String) session.getAttribute("user_id");
                String enter_id = request.getParameter("enter_id");
                String career = request.getParameter("career");
                int rows = service.addApp(user_id, enter_id, career);
                if (rows > 0) {
                    request.setAttribute("msg", "成功");
                } else {
                    request.setAttribute("msg", "错误");
                }
//                request.setAttribute("href", "/webapp/view/applyFor.jsp");
                request.setAttribute("href", "/view/applyFor.jsp");
                request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                break;
            }
            case "show_resume": {
                String user_id = (String) session.getAttribute("user_id");
                Map<String, String> resume = service.getResumeById(user_id);
                if (resume == null) {
                    request.setAttribute("msg", "404 NOT FOUND");
//                    request.setAttribute("href", "/webapp/view/student.jsp");
                    request.setAttribute("href", "/view/student.jsp");
                    request.getRequestDispatcher("/view/result.jsp").forward(request, response);
                } else {
                    String id = resume.get("stu_id");
                    String introduction = resume.get("introduction");
                    request.setAttribute("id", id);
                    request.setAttribute("introduction", introduction);
                    request.getRequestDispatcher("/view/show_resume.jsp").forward(request, response);
                }
                break;
            }
            case "search":
                String id = (String) session.getAttribute("user_id");
                List<Map<String, String>> application = service.getApplication(id);
                request.setAttribute("application", application);
                request.getRequestDispatcher("/view/search.jsp").forward(request, response);
                break;
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

@WebServlet(name = "FileController", urlPatterns = "*.f")
public class FileController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
        String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
        String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp");
        File tmpFile = new File(tempPath);
        if (!tmpFile.exists()) {
            //创建临时目录
            tmpFile.mkdir();
        }

        //消息提示
        String message = "";
        try {
            //使用Apache文件上传组件处理文件上传步骤:
            //1、创建一个DiskFileItemFactory工厂
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
            factory.setSizeThreshold(1024 * 100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
            //设置上传时生成的临时文件的保存目录
            factory.setRepository(tmpFile);
            //2、创建一个文件上传解析器
            ServletFileUpload upload = new ServletFileUpload(factory);
            //监听文件上传进度
            upload.setProgressListener((pBytesRead, pContentLength, arg2) -> {
                System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead);
                /**
                 * 文件大小为:14608,当前已处理:4096
                 文件大小为:14608,当前已处理:7367
                 文件大小为:14608,当前已处理:11419
                 文件大小为:14608,当前已处理:14608
                 */
            });
            //解决上传文件名的中文乱码
            upload.setHeaderEncoding("UTF-8");
            //3、判断提交上来的数据是否是上传表单的数据
            if (!ServletFileUpload.isMultipartContent(request)) {
                //按照传统方式获取数据
                return;
            }

            //设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
            upload.setFileSizeMax(1024 * 1024);
            //设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
            upload.setSizeMax(1024 * 1024 * 10);
            //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
            List<FileItem> list = upload.parseRequest(request);
            for (FileItem item : list) {
                //如果fileitem中封装的是普通输入项的数据
                if (item.isFormField()) {
                    String name = item.getFieldName();
                    //解决普通输入项的数据的中文乱码问题
                    String value = item.getString("UTF-8");
                    //value = new String(value.getBytes("iso8859-1"),"UTF-8");
                    System.out.println(name + "=" + value);
                } else {//如果fileitem中封装的是上传文件
                    //得到上传的文件名称,
                    String filename = item.getName();
                    System.out.println(filename);
                    if (filename == null || filename.trim().equals("")) {
                        continue;
                    }
                    //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:  c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
                    //处理获取到的上传文件的文件名的路径部分,只保留文件名部分
                    filename = filename.substring(filename.lastIndexOf("/") + 1);
                    //得到上传文件的扩展名
                    String fileExtName = filename.substring(filename.lastIndexOf(".") + 1);
                    //如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
                    System.out.println("上传的文件的扩展名是:" + fileExtName);
                    if (fileExtName.contains("doc") || "zip".equals(fileExtName) || "rar".equals(fileExtName)) {
                        String tempName = filename.substring(0, filename.lastIndexOf("."));
                        deleteFile(tempName, savePath);
                        //获取item中的上传文件的输入流
                        InputStream in = item.getInputStream();
                        //得到文件保存的名称
//                    String saveFilename = makeFileName(filename);
                        //得到文件的保存目录
//                    String realSavePath = makePath(filename, savePath);
                        //创建一个文件输出流
                        FileOutputStream out = new FileOutputStream(savePath + "/" + filename);
                        //创建一个缓冲区
                        byte buffer[] = new byte[1024];
                        //判断输入流中的数据是否已经读完的标识
                        int len = 0;
                        //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
                        while ((len = in.read(buffer)) > 0) {
                            //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
                            out.write(buffer, 0, len);
                        }
                        //关闭输入流
                        in.close();
                        //关闭输出流
                        out.close();
                        //删除处理文件上传时生成的临时文件
                        item.delete();
                        message = "文件上传成功!";
                    } else {
                        message = "文件上传失败!请上传doc、zip、或rar类型的文件";
                    }
                }
            }
        } catch (FileUploadBase.FileSizeLimitExceededException e) {
            e.printStackTrace();
            request.setAttribute("message", "单个文件超出最大值!!!");
            request.getRequestDispatcher("/view/result.jsp").forward(request, response);
            return;
        } catch (FileUploadBase.SizeLimitExceededException e) {
            e.printStackTrace();
            request.setAttribute("message", "上传文件的总的大小超出限制的最大值!!!");
            request.getRequestDispatcher("/view/result.jsp").forward(request, response);
            return;
        } catch (Exception e) {
            message = "文件上传失败!";
            e.printStackTrace();
        }
        request.setAttribute("msg", message);
//        request.setAttribute("href", "/webapp/view/resume.jsp");
        request.setAttribute("href", "/view/resume.jsp");
        request.getRequestDispatcher("/view/result.jsp").forward(request, response);
    }

//    /**
//     * @param filename 文件的原始名称
//     * @return uuid+"_"+文件的原始名称
//     * @Method: makeFileName
//     * @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称
//     */
//    private String makeFileName(String filename) {  //2.jpg
//        //为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
//        return UUID.randomUUID().toString() + "_" + filename;
//    }

    //    /**
//     * 为防止一个目录下面出现太多文件,要使用hash算法打散存储
//     *
//     * @param filename 文件名,要根据文件名生成存储目录
//     * @param savePath 文件存储路径
//     * @return 新的存储目录
//     * @Method: makePath
//     * @Description:
//     */
//    private String makePath(String filename, String savePath) {
//        //得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址
//        int hashcode = filename.hashCode();
//        int dir1 = hashcode & 0xf;  //0--15
//        int dir2 = (hashcode & 0xf0) >> 4;  //0-15
//        //构造新的保存目录
//        String dir = savePath + "\\" + dir1 + "\\" + dir2;  //upload\2\3  upload\3\5
//        //File既可以代表文件也可以代表目录
//        File file = new File(dir);
//        //如果目录不存在
//        if (!file.exists()) {
//            //创建目录
//            file.mkdirs();
//        }
//        return dir;
//    }
    private void deleteFile(String filename, String path) {
        File file = new File(path);
        File[] files = file.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isFile() && f.toString().contains(filename)) {
                    f.delete();
                }
            }
        }
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

@WebServlet(name = "DownloadServlet", urlPatterns = "/fileServlet")
public class DownloadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //得到要下载的文件名
        String fileName = request.getParameter("filename");
//        fileName = new String(fileName.getBytes("iso8859-1"), "UTF-8");
        String fileSaveRootPath = this.getServletContext().getRealPath("/WEB-INF/upload");
        String name = findFileByFilename(fileName, fileSaveRootPath);
        //上传的文件都是保存在/WEB-INF/upload目录下的子目录当中
        //得到要下载的文件
        File file = new File(name);
        //如果文件不存在
        if (!file.exists()) {
            request.setAttribute("msg", "资源不存在,请先上传!");
            String role = (String) request.getSession().getAttribute("role");
            if ("student".equals(role)) {
                request.setAttribute("href", "show_resume.cc");
            } else if ("enterprise".equals(role)) {
                request.setAttribute("href", "search.cc");
            }
            request.getRequestDispatcher("/view/result.jsp").forward(request, response);
            return;
        }
        //处理文件名
        String realname = name.substring(name.lastIndexOf("_") + 1);
        //设置响应头,控制浏览器下载该文件
        response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
        //读取要下载的文件,保存到文件输入流
        FileInputStream in = new FileInputStream(name);
        //创建输出流
        OutputStream out = response.getOutputStream();
        //创建缓冲区
        byte buffer[] = new byte[1024];
        int len = 0;
        //循环将输入流中的内容读取到缓冲区当中
        while ((len = in.read(buffer)) > 0) {
            //输出缓冲区的内容到浏览器,实现文件下载
            out.write(buffer, 0, len);
        }
        //关闭文件输入流
        in.close();
        //关闭输出流
        out.close();
    }

//    private String findFileSavePathByFileName(String fileName, String fileSaveRootPath) {
//        int hashcode = fileName.hashCode();
//        int dir1 = hashcode & 0xf;  //0--15
//        int dir2 = (hashcode & 0xf0) >> 4;  //0-15
//        String dir = fileSaveRootPath + "\\" + dir1 + "\\" + dir2;  //upload\2\3  upload\3\5
//        File file = new File(dir);
//        if (!file.exists()) {
//            //创建目录
//            file.mkdirs();
//        }
//        return dir;
//    }

    private String findFileByFilename(String filename, String path) {
        File file = new File(path);
        File[] files = file.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isFile() && f.toString().contains(filename)) {
                    return f.toString();
                }
            }
        }
        return "";
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

六、论文参考

  • 计算机毕业设计选题推荐_高校实习管理系统系统-论文参考:
    计算机毕业设计选题推荐-论文参考

七、系统视频

  • 高校实习管理系统系统-项目视频:

SpringBoot项目实战:高校实习管理系统

结语

SpringBoot项目实战:高校实习管理系统-计算机毕业设计选题推荐
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值