当前位置: 首页 > news >正文

SpringBoot+Vue家校互联管理系统源码+论文

代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹
分享万套开题报告+任务书+答辩PPT模板
作者完整代码目录供你选择:
《SpringBoot网站项目》1800套
《SSM网站项目》1500套
《小程序项目》1600套
《APP项目》1500套
《Python网站项目》1300套
⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

采用技术:

编程语言:Java
后端框架:SpringBoot
前端框架:Vue
数据库:MySQL
数据表数量:28张表
运行软件:IDEA、Eclipse、VS Code都可以

系统功能:


本系统实现管理员、学生、家长、教师模块。
管理员模块功能:操作日志、文件管理、管理员、家长、教师、课程表、班级信息、请假申请、活动信息、活动报名、每日餐谱、通知公告、问卷调查、反馈意见、留言消息、回复信息、学生成绩、课堂表现、学生等。
学生模块功能:课程表、请假申请、活动信息、活动报名、每日餐谱、通知公告、问卷调查、反馈意见、学生成绩、课堂表现、学生、试卷列表、考试记录、错题本、课程作业、提交作业、作业批改等。
家长模块功能:家长、课程表、请假申请、活动信息、活动报名、每日餐谱、通知公告、问卷调查、反馈意见、留言消息、回复信息、学生成绩、课堂表现、课程作业、提交作业、作业批改等。
教师模块功能:课程表、班级信息、请假申请、通知公告、留言消息、回复信息、学生成绩、课堂表现、学生、试卷管理、试题管理、试卷列表、考试记录、错题本、课程作业、提交作业、作业批改等。

运行截图:




























论文目录:




核心代码:

packagecom.controller;importjava.text.SimpleDateFormat;importcom.alibaba.fastjson.JSONObject;importjava.util.*;importorg.springframework.beans.BeanUtils;importjavax.servlet.http.HttpServletRequest;importorg.springframework.web.context.ContextLoader;importjavax.servlet.ServletContext;importcom.service.TokenService;importcom.utils.StringUtil;importjava.lang.reflect.InvocationTargetException;importcom.service.DictionaryService;importorg.apache.commons.lang3.StringUtils;importcom.annotation.IgnoreAuth;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.*;importcom.baomidou.mybatisplus.mapper.EntityWrapper;importcom.baomidou.mybatisplus.mapper.Wrapper;importcom.entity.YonghuEntity;importcom.service.YonghuService;importcom.entity.view.YonghuView;importcom.utils.PageUtils;importcom.utils.R;@RestController@Controller@RequestMapping("/yonghu")publicclassYonghuController{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(YonghuController.class);@AutowiredprivateYonghuServiceyonghuService;@AutowiredprivateTokenServicetokenService;@AutowiredprivateDictionaryServicedictionaryService;//级联表service/** * 后端列表 */@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,HttpServletRequestrequest){logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));params.put("orderBy","id");PageUtilspage=yonghuService.queryPage(params);//字典表数据转换List<YonghuView>list=(List<YonghuView>)page.getList();for(YonghuViewc:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c);}returnR.ok().put("data",page);}/** * 后端详情 */@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Longid){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);YonghuEntityyonghu=yonghuService.selectById(id);if(yonghu!=null){//entity转viewYonghuViewview=newYonghuView();BeanUtils.copyProperties(yonghu,view);//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view);returnR.ok().put("data",view);}else{returnR.error(511,"查不到数据");}}/** * 后端保存 */@RequestMapping("/save")publicRsave(@RequestBodyYonghuEntityyonghu,HttpServletRequestrequest){logger.debug("save方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());Wrapper<YonghuEntity>queryWrapper=newEntityWrapper<YonghuEntity>().eq("username",yonghu.getUsername()).or().eq("yonghu_phone",yonghu.getYonghuPhone()).or().eq("yonghu_id_number",yonghu.getYonghuIdNumber());;logger.info("sql语句:"+queryWrapper.getSqlSegment());YonghuEntityyonghuEntity=yonghuService.selectOne(queryWrapper);if(yonghuEntity==null){yonghu.setCreateTime(newDate());yonghu.setPassword("123456");// String role = String.valueOf(request.getSession().getAttribute("role"));// if("".equals(role)){// yonghu.set// }yonghuService.insert(yonghu);returnR.ok();}else{returnR.error(511,"账户或者身份证号或者手机号已经被使用");}}/** * 后端修改 */@RequestMapping("/update")publicRupdate(@RequestBodyYonghuEntityyonghu,HttpServletRequestrequest){logger.debug("update方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());//根据字段查询是否有相同数据Wrapper<YonghuEntity>queryWrapper=newEntityWrapper<YonghuEntity>().notIn("id",yonghu.getId()).andNew().eq("username",yonghu.getUsername()).or().eq("yonghu_phone",yonghu.getYonghuPhone()).or().eq("yonghu_id_number",yonghu.getYonghuIdNumber());;logger.info("sql语句:"+queryWrapper.getSqlSegment());YonghuEntityyonghuEntity=yonghuService.selectOne(queryWrapper);if("".equals(yonghu.getYonghuPhoto())||"null".equals(yonghu.getYonghuPhoto())){yonghu.setYonghuPhoto(null);}if(yonghuEntity==null){// String role = String.valueOf(request.getSession().getAttribute("role"));// if("".equals(role)){// yonghu.set// }yonghuService.updateById(yonghu);//根据id更新returnR.ok();}else{returnR.error(511,"账户或者身份证号或者手机号已经被使用");}}/** * 删除 */@RequestMapping("/delete")publicRdelete(@RequestBodyInteger[]ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());yonghuService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}/** * 登录 */@IgnoreAuth@RequestMapping(value="/login")publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){YonghuEntityyonghu=yonghuService.selectOne(newEntityWrapper<YonghuEntity>().eq("username",username));if(yonghu==null||!yonghu.getPassword().equals(password)){returnR.error("账号或密码不正确");}Stringtoken=tokenService.generateToken(yonghu.getId(),username,"yonghu","用户");Rr=R.ok();r.put("token",token);r.put("role","用户");r.put("username",yonghu.getYonghuName());r.put("tableName","yonghu");r.put("userId",yonghu.getId());returnr;}/** * 注册 */@IgnoreAuth@PostMapping(value="/register")publicRregister(@RequestBodyYonghuEntityyonghu){// ValidatorUtils.validateEntity(user);if(yonghuService.selectOne(newEntityWrapper<YonghuEntity>().eq("username",yonghu.getUsername()).orNew().eq("yonghu_phone",yonghu.getYonghuPhone()).orNew().eq("yonghu_id_number",yonghu.getYonghuIdNumber()))!=null){returnR.error("账户已存在或手机号或身份证号已经被使用");}yonghuService.insert(yonghu);returnR.ok();}/** * 重置密码 */@GetMapping(value="/resetPassword")publicRresetPassword(Integerid){YonghuEntityyonghu=newYonghuEntity();yonghu.setPassword("123456");yonghu.setId(id);yonghuService.updateById(yonghu);returnR.ok();}/** * 获取用户的session用户信息 */@RequestMapping("/session")publicRgetCurrYonghu(HttpServletRequestrequest){Integerid=(Integer)request.getSession().getAttribute("userId");YonghuEntityyonghu=yonghuService.selectById(id);returnR.ok().put("data",yonghu);}/** * 退出 */@GetMapping(value="logout")publicRlogout(HttpServletRequestrequest){request.getSession().invalidate();returnR.ok("退出成功");}}t("data",yonghu);}/** * 退出 */@GetMapping(value="logout")publicRlogout(HttpServletRequestrequest){request.getSession().invalidate();returnR.ok("退出成功");}}uest.getSession().invalidate();returnR.ok("退出成功");}}t("data",yonghu);}/** * 退出 */@GetMapping(value="logout")publicRlogout(HttpServletRequestrequest){request.getSession().invalidate();returnR.ok("退出成功");}}
http://www.jsqmd.com/news/690669/

相关文章:

  • AI技术在日常与工业场景中的隐形应用与实战解析
  • 告别资源焦虑:free-programming-books个性化学习路径全攻略
  • 3分钟掌握抖音下载器:免费批量下载抖音无水印视频的终极指南
  • 2026年4月:成都力劲破碎工程服务技术细节与对接指南 - 优质品牌商家
  • 5个企业级Bruno API测试实战案例:从开发到协作的完整指南
  • 告别数据丢失风险:Dokploy数据库备份管理优化全指南
  • MinerU 系列教程 第二十六课:设计模式在 MinerU 中的应用
  • 深度学习核心技术解析与实战应用指南
  • 如何解决Alacritty终端在Tmux会话中配置更新不生效的终极方案
  • 解决Dokploy在Alpine Linux上的5大兼容性难题:从容器启动失败到系统依赖冲突的完美方案
  • 嵌入式串口优化:fmtlib零开销实战指南
  • AI工程师的上下文管理术:让长对话不失忆的工程实践
  • 基于NVIDIA Nemotron构建安全语音问答助手的全栈实践
  • 终极Apex压枪宏指南:告别后坐力,轻松实现精准射击
  • NFT交易平台2.0:智能合约如何重构数字资产世界的“价值契约“——区块链技术驱动下的数字资产确权、流通与生态创新实践
  • 别再猜了!海康威视MV_CC_DEVICE_INFO结构体里MAC地址的完整解析指南
  • 解决Alacritty终端在macOS深色主题启动异常的终极方案
  • 终极Maple Mono字体安全审计指南:从漏洞排查到防护最佳实践
  • 终极指南:解决AutoGPT Marketplace描述文本换行问题的完美方案
  • 2025终极指南:用C语言从零实现Llama2 BPE分词器的完整教程
  • Cursor AI功能增强解决方案2025:解决试用限制的完整指南
  • 突破性能瓶颈:fmtlib/fmt在GCC 14下的字符串格式化优化实践
  • 终极指南:如何解决AWS CLI S3递归复制的时钟偏差难题
  • AI 入门 30 天挑战 - Day 18 费曼学习法版 - 图像分割基础
  • 从MATLAB到FPGA:手把手将卷积编译码算法移植到硬件(Vivado 2023.1实战)
  • AI代理环境检查终极指南:10步验证你的AI Agents for Beginners配置
  • 机器学习项目检查清单:避免低级错误的关键步骤
  • 终极指南:ESP-IDF中10个低功耗优化技巧,让你的物联网设备续航翻倍
  • Flutter AppBar 避坑指南:iconTheme和actionsIconTheme到底怎么用?
  • 如何轻松解决浮点数比较难题:fmtlib/fmt的终极精确值判断方案