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

SpringBoot+Vue学生在线训练考试系统源码+论文

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

采用技术:

编程语言:Java
后端框架:SpringBoot
前端框架:Vue
数据库:MySQL
数据表数量:19张表
运行软件: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("退出成功");}}est.getSession().invalidate();returnR.ok("退出成功");}}t("data",yonghu);}/** * 退出 */@GetMapping(value="logout")publicRlogout(HttpServletRequestrequest){request.getSession().invalidate();returnR.ok("退出成功");}}
http://www.jsqmd.com/news/536084/

相关文章:

  • OpenClaw对话日志分析:nanobot自动提取用户高频需求
  • 如何用AnythingLLM构建企业级知识库:从零到一的完整指南
  • 5步实现YOLO v8做实时人脸签到系统:零 GPU 依赖(第一步)(上)
  • 2026年智能水电气集中供料系统市场前瞻与核心供应商竞争力剖析 - 2026年企业推荐榜
  • Open SWE 协作层:GitHub 深度集成与人在回路(HITL)设计
  • 智能销售预测AI平台的成本优化:AI应用架构师如何用模型压缩降低70%算力成本?
  • Zeek流量分析实战:从PCAP解析到自定义脚本开发(含flowN/flowmeter配置)
  • 3分钟解锁付费内容:Bypass Paywalls Clean 完全指南
  • 内容访问辅助工具完全指南:从入门到精通的四大核心模块
  • 2026年软著申请服务机构综合评测:中小企业如何选择可靠伙伴? - 2026年企业推荐榜
  • 2026小型靠谱跑步机推荐:微云跑步机/静音跑步机/家用跑步机/小型跑步机/减震跑步机/跑步机/选择指南 - 优质品牌商家
  • 从字节码到机器码的最后100纳秒:Python 3.14 JIT的LLVM后端定制编译链,如何榨干Ampere Altra CPU 92% IPC
  • 开源项目显卡兼容性避坑实战:CUDA版本适配与环境配置指南
  • 2026杭州落户入学服务深度评测报告 - 优质品牌商家
  • 2026成都定制家居怎么选?这5家实力厂家值得重点关注 - 2026年企业推荐榜
  • 2026四川智能办公隔断选型指南:3大硬指标避坑 - 精选优质企业推荐榜
  • OpenClaw性能监控:Qwen3-VL:30B飞书任务实时仪表盘
  • 四川云端隔断智慧工厂在成都做智能办公隔断靠谱吗?官方联系方式与避坑指南 - 精选优质企业推荐榜
  • 智能问数 POC 基准该怎么建?为什么很多 99% 准确率并不可信
  • 智造时代散热之选:2026河南高性价比散热器厂家深度测评 - 2026年企业推荐榜
  • Docker Compose 实践:多容器应用的配置与管理
  • 2026四川智能办公隔断选型指南:源头工厂3大硬指标 - 精选优质企业推荐榜
  • 2026年四川全屋定制如何避坑?这份深度评测与选购指南请收好 - 2026年企业推荐榜
  • 2026年浙江激光笔供应商选型指南:五大可靠平台深度解析 - 2026年企业推荐榜
  • ARM-05-中断
  • OpenClaw硬件推荐:流畅运行nanobot镜像的最低配置与性价比方案
  • 本地AI视频剪辑终极实战:用FunClip构建智能内容创作工作流
  • 效果-Fast Bokeh 区域景深
  • 基于springboot框架-企业物资调拨管理系统-idea maven vue
  • 2026可靠犬猫舍推荐 宠伴一生全链保障 - 优质品牌商家