基于SpringBoot的“实习管理系统”的设计与实现(源码+数据库+文档+PPT)
-
开发语言:Java
-
数据库:MySQL
-
技术:SpringBoot
-
工具:IDEA/Ecilpse、Navicat、Maven
系统展示
系统首页界面图
学生注册界面图
后台登录界面图
管理员功能界面图
学生管理界面图
实习单位管理界面图
实习作业管理界面图
个人中心界面图
摘 要
本实习管理系统以springboot作为框架,b/s模式以及MySql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。本系统主要包括首页,个人中心,班级管理,学生管理,教师管理,实习单位管理,实习作业管理,教师评分管理,单位成绩管理,系统管理等功能,通过这些功能的实现基本能够满足日常实习管理的操作。
研究背景
科学技术日新月异的如今,计算机在生活各个领域都占有重要的作用,尤其在信息管理方面,在这样的大背景下,学习计算机知识不仅仅是为了掌握一种技能,更重要的是能够让它真正地使用到实践中去,以创新的视角去不断方便人们的生活,推动对新知识的学习,培养自学能力,锻炼动手实践的本领。现代的实习管理,也应该摆脱人工管理的模式,使用计算机技术来进行信息管理工作。所以本次系统设计的实习管理系统结合了文字、图像,并能实现实习管理的功能,这也是一般实习管理系统的重要的要素。实习管理系统经过几年的实践和总结正在往更深入的方向发展。由此,人们要改善系统功能迫在眉睫。随着科学技术的飞速发展,实习管理系统也要不断完善其工作流程的繁杂性、多样化、管理复杂、收缴费用与设备维护繁琐等存在的问题。所以要通过计算机胜任实习管理的工作,使实习管理系统更加准确、方便及快捷。
实习管理系统的现状
现如今,实习的服务并不全面普及,就是尽管实行了实习管理,但系统进行的管理力量远远不够,所以有很多实习管理工作只停留在传统的服务状态。同时,因资金有限再加上也缺少专业水平的工作人员,所以实习的管理手段较为落后,也就很难提高实习的管理效率,同时也就不能很好的为用户提供更为完善的服务。现在都是通过手动来进行管理记录及操作,不但麻烦琐碎,还经常出现错误,给广大用户带来很不便,同时也需要大量的人力、物力和财力,极大的浪费了实习的资源。实习管理系统是实习行业的一个重要组成部分,随着实习行业的快速发展,人们慢慢地来希望实习管理系统能够提供更为合理及完善的实习管理服务。现在,好的实习管理也成为广大用户们选择实习管理系统的关键。
部分源码
/*** 实习单位* 后端接口* @author * @email * @date 2022-04-19 23:38:10*/
@RestController
@RequestMapping("/shixidanwei")
public class ShixidanweiController {@Autowiredprivate ShixidanweiService shixidanweiService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {ShixidanweiEntity user = shixidanweiService.selectOne(new EntityWrapper<ShixidanweiEntity>().eq("danweimingcheng", username));if(user==null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(), username,"shixidanwei", "实习单位" );return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@RequestMapping("/register")public R register(@RequestBody ShixidanweiEntity shixidanwei){//ValidatorUtils.validateEntity(shixidanwei);ShixidanweiEntity user = shixidanweiService.selectOne(new EntityWrapper<ShixidanweiEntity>().eq("danweimingcheng", shixidanwei.getDanweimingcheng()));if(user!=null) {return R.error("注册用户已存在");}Long uId = new Date().getTime();shixidanwei.setId(uId);shixidanweiService.insert(shixidanwei);return R.ok();}/*** 退出*/@RequestMapping("/logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");ShixidanweiEntity user = shixidanweiService.selectById(id);return R.ok().put("data", user);}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){ShixidanweiEntity user = shixidanweiService.selectOne(new EntityWrapper<ShixidanweiEntity>().eq("danweimingcheng", username));if(user==null) {return R.error("账号不存在");}user.setMima("123456");shixidanweiService.updateById(user);return R.ok("密码已重置为:123456");}/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,ShixidanweiEntity shixidanwei,HttpServletRequest request){EntityWrapper<ShixidanweiEntity> ew = new EntityWrapper<ShixidanweiEntity>();PageUtils page = shixidanweiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shixidanwei), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,ShixidanweiEntity shixidanwei, HttpServletRequest request){EntityWrapper<ShixidanweiEntity> ew = new EntityWrapper<ShixidanweiEntity>();PageUtils page = shixidanweiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shixidanwei), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( ShixidanweiEntity shixidanwei){EntityWrapper<ShixidanweiEntity> ew = new EntityWrapper<ShixidanweiEntity>();ew.allEq(MPUtil.allEQMapPre( shixidanwei, "shixidanwei")); return R.ok().put("data", shixidanweiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(ShixidanweiEntity shixidanwei){EntityWrapper< ShixidanweiEntity> ew = new EntityWrapper< ShixidanweiEntity>();ew.allEq(MPUtil.allEQMapPre( shixidanwei, "shixidanwei")); ShixidanweiView shixidanweiView = shixidanweiService.selectView(ew);return R.ok("查询实习单位成功").put("data", shixidanweiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){ShixidanweiEntity shixidanwei = shixidanweiService.selectById(id);return R.ok().put("data", shixidanwei);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){ShixidanweiEntity shixidanwei = shixidanweiService.selectById(id);return R.ok().put("data", shixidanwei);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody ShixidanweiEntity shixidanwei, HttpServletRequest request){shixidanwei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(shixidanwei);ShixidanweiEntity user = shixidanweiService.selectOne(new EntityWrapper<ShixidanweiEntity>().eq("danweimingcheng", shixidanwei.getDanweimingcheng()));if(user!=null) {return R.error("用户已存在");}shixidanwei.setId(new Date().getTime());shixidanweiService.insert(shixidanwei);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody ShixidanweiEntity shixidanwei, HttpServletRequest request){shixidanwei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(shixidanwei);ShixidanweiEntity user = shixidanweiService.selectOne(new EntityWrapper<ShixidanweiEntity>().eq("danweimingcheng", shixidanwei.getDanweimingcheng()));if(user!=null) {return R.error("用户已存在");}shixidanwei.setId(new Date().getTime());shixidanweiService.insert(shixidanwei);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody ShixidanweiEntity shixidanwei, HttpServletRequest request){//ValidatorUtils.validateEntity(shixidanwei);shixidanweiService.updateById(shixidanwei);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){shixidanweiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<ShixidanweiEntity> wrapper = new EntityWrapper<ShixidanweiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = shixidanweiService.selectCount(wrapper);return R.ok().put("count", count);}}
结论
在这次毕业设计中,我使用了springboot框架,选择MySQL作为后台数据库进行访问及修改。在设计开始之初,我也在苦恼于系统的逻辑功能的具体实现,因为我对于实习管理的概念还较为模糊,其间我也查询了大量的网上资料,清楚了解实际生活中实习管理主要面对的对象和管理需要完成的基本功能。
虽然在这过程中也遇到了许多的困难,主要有系统逻辑功能不合适和系统设计中出错,当在自己查阅资料无法解决之时,我也会与同学和老师进行请教和讨论,所以在这个过程之中,也让我清楚地认识到自己的不足以及团队的力量才是最大,以后不论是在学习还是工作中,都要融入到集体之中,那样自己才会成长得更快。