✨作者主页: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项目实战:高校实习管理系统-计算机毕业设计选题推荐
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我