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

SpringBoot+Vue大学生英语学习平台源码+论文

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

采用技术:

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

相关文章:

  • Claude 3.7 vs GPT-4o真实数据管道实战对比
  • 从芯片到场景:BOS半导体以Physical AI定义车载AI Box新范式
  • mac 安装 Milvus 向量数据库
  • ssm疫情时期药物管理系统(10151)
  • 保姆级教程:手把手教你修改FFmpeg源码,让ffplay也能播H265的RTMP直播流
  • Verilog里signed和unsigned的坑,我踩了!用$signed()函数和补位技巧轻松避雷
  • 豆包2.0:一款面向真实工作流的AI交互操作系统
  • 以习惯为犁,耕十二载沃土——十二岁前必须养成的习惯体系
  • FPGA新手避坑指南:用XC7K325T配置GTX收发器,从IP核到上板调试全流程
  • 告别EV2400:用一块STM32F407开发板搞定BQ40Z50电池数据监控(电压/电量)
  • SpringBoot+Vue大学生在线考试平台源码+论文
  • 【C++11新章】一篇文章搞懂 std::initializer_list 模板类
  • GLM-5.1代码修复能力深度解析:AST引导解码与真实PR数据训练
  • 莫瑶教育AI全域课程:重构AI时代竞争力,从职场提效到商业变现的系统化成长方案 - 全国职业学校推荐官
  • Python自动化办公新思路:定时抓取通达信财务数据并关机,解放你的下班时间
  • MHmarkets迈汇平台:把服务体系做到位——细节梳理与提示整理
  • STAR模型:零样本跨模态网站指纹识别技术解析
  • 从 ChatMemory 到 Mem0:我终于理解了 Agent 里的“记忆”到底是什么
  • 通达信缠论插件:3分钟掌握专业级K线分析技术
  • 青少年匹克球拍有哪些销售厂家,哪家更值得选择?
  • 别再傻傻分不清:图解SCCB与I2C在时序上的关键三处不同(附示波器实测波形)
  • 摆脱无效内卷,做好项目管理的实用思路
  • C语言写的学生成绩与档案管理工具(VC6工程+可执行文件+详细文档)
  • C++编写的车辆轨迹跟踪MPC控制器源码包:含编译脚本、实测赛道数据与算法推导文档
  • Halcon 23.11实战:用自带果汁瓶图片5分钟搞定你的第一个深度学习缺陷检测模型
  • 别再被TB6600吓到了!用拇指大的A4988驱动42步进电机,51单片机/STM32/FPGA三平台代码实测
  • QQ空间历史说说一键导出终极指南:免费获取你的青春回忆
  • 告别重复造轮子:用快马高效生成unet变体,加速你的图像分割模型迭代
  • 华为AI眼镜深度解析:31克无感终端与豆包AI引擎的技术突破
  • Matlab VOF模拟二维溃坝:投影法求解中的密度插值与体积分数矫正避坑指南