基于springboot和mysql实现的在线考试系统

基于springboot和mysql实现的在线考试系统 1,项目介绍 一个在线考试系统,考生可以注册,成为本平台的一个用户,然后进行考试,考完生成成绩,同时用户可以查询自己考试的试卷

本文包含相关资料包-----> 点击直达获取<-------

基于springboot和mysql实现的在线考试系统

1.项目介绍

一个在线考试系统,考生可以注册,成为本平台的一个用户,然后进行考试,考完生成成绩,同时用户可以查询自己考试的试卷,可以查看试卷解析。

升级改版

新增出卷人角色,主要职责是进入系统,出试卷,设置题目,发布考试通知。阅卷人角色,主要职责是进入系统改卷,由系统(使用随机算法)随机分配一个阅卷人进行改卷。当考生开始考生,新增考试时间,在规定的时间内完成考试,否则自动退出。

2.数据库设计

2.1 表结构

exam_user表

exam_score表

exam_score_detail表

exam_paper表

exam_items

2.2 E-R图

3.项目实现

3.1 全局统一异常处理

java @Component public class MyExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) { MyException myException; String message = null; if (e instanceof MyException){ myException = (MyException) e; message = myException.getMessage(); }else{ message = (e.getMessage()==null||"".equals(e.getMessage()))? "未知异常":e.getMessage(); } return new ModelAndView("error/error","msg",message); } }

3.2 工具类(计算分数)

java public class CalcScore { @Autowired private ExamItemsMapper examItemsMapper; @Autowired private ExamScoreMapper examScoreMapper; @Autowired private ExamScoreDetailMapper examScoreDetailMapper; //计算分数的方法。 public ExamScore getScore(Map answer, int paperid, int userid){ int total = 0; //用于存总分。 int rights = 0; //答对题目数。 int errors = 0; //答错题目数。 //查出所有题目的正确答案。 List<ExamItems> examItemsList = examItemsMapper.searchItems(paperid); //存详细信息的集合。 List<ExamScoreDetail> details = new ArrayList<>(); //比对答案,计算得分。 Iterator keys = answer.keySet().iterator(); while(keys.hasNext()){ ExamScoreDetail examScoreDetail = new ExamScoreDetail(); //获取题号, String next = (String) keys.next(); //设置题号。 examScoreDetail.setEid(Integer.parseInt(next)); //找到答案对应的题号 for (int i = 0;i<examItemsList.size();i++){ //判断是否是同一道题。 if (examItemsList.get(i).getEid()==Integer.parseInt(next)){ //是同一道题,就存入用户答案。 examScoreDetail.setUanswer((String) answer.get(next)); //如果是相同题号,就进行答案的对比 if (answer.get(next)!=null&&answer.get(next).equals(examItemsList.get(i).getEkeys())){ //答案正确,就累加分数。 total+=examItemsList.get(i).getEscore(); //同时,正确题数也累加。 rights++; //对了,所得分数就是这个题目的分数 examScoreDetail.setUpoint(examItemsList.get(i).getEscore()); }else{ //否则错误题数累加。 errors++; //错了,所得分数为0; examScoreDetail.setUpoint(0); } } } //添加到list集合中。 details.add(examScoreDetail); } //将成绩存入数据库中。 ExamScore examScore = new ExamScore(); examScore.setPaperid(paperid); examScore.setUserid(userid); examScore.setScore(total); examScore.setRights(rights); examScore.setErrors(errors); examScoreMapper.insertSelective(examScore); //遍历设置成绩的id, for (int i = 0; i<details.size();i++){ //遍历设置成绩id details.get(i).setScoreid(examScore.getScoreid()); } //将成绩详情集合存到数据库中 examScoreDetailMapper.insertExamScoreDetailsByList(details); return examScore; } }

3.3 答题卡控制器

ExamPaperCardController

java @RequestMapping("/exam") public class ExamPaperCardController { @Autowired private IExamItemService iExamItemService; //答题卷 @RequestMapping("/paper/{paperid}") public String startExam(@PathVariable int paperid,Model model){ model.addAttribute("items",iExamItemService.getItemsByPaperId(paperid)); model.addAttribute("paperid",paperid); return "paper/testPaper"; } //提交答案,运算分数控制器。 @RequestMapping("/{paperid}/result") public String ExamResult(@PathVariable int paperid, HttpServletRequest request, HttpSession session,Model model){ // key:题号,value:用户答案 Map<String,String> userAnswers = new HashMap<>(); //用于存用户提交的答案。 //对用户的答案和题号进行封装。 for (int i = 18,j = 0 ; i< 33 ;i++,j++){ String an = request.getParameter(i+""); System.out.println(i+"-->"+an); userAnswers.put(i+"",an); } ExamUser online = (ExamUser) session.getAttribute("online"); //调用service层接口。获取成绩对象 ExamScore examScore = iExamItemService.saveScore(userAnswers, paperid, online.getUserid()); model.addAttribute("score",examScore); return "paper/score"; } //查看答案解析; @RequestMapping("/{paperid}/check") public String getAngni(@PathVariable int paperid,String papername,Model model, HttpSession session){ ExamUser online = (ExamUser) session.getAttribute("online"); model.addAttribute("items",iExamItemService.getItemsAndScore(paperid,online.getUserid())); model.addAttribute("papername",papername); return "/paper/chechPaper"; }

ExamItemServiceImpl

java public class ExamItemServiceImpl implements IExamItemService { @Autowired private ExamItemsMapper examItemsMapper; @Autowired private CalcScore calcScore; @Override //根据试卷,查询题目. public List<ExamItems> getItemsByPaperId(int paperid) { return examItemsMapper.searchItems(paperid); } @Override //存答案,计算分数。存分数 public ExamScore saveScore(Map<String, String> map, int paperid, int userid) { return calcScore.getScore(map,paperid,userid); } @Override //获取试卷的解析,and 答案。 public List<ExamItems> getItemsAndScore(int paperid,int userid) { ExamPaper examPaper = new ExamPaper(); examPaper.setPaperid(paperid); examPaper.setUserid(userid); return examItemsMapper.findAllItemsAndScore(examPaper); } }

4.项目实现

登录界面

主页面

答题试卷

试卷解析

参考文献

  • 基于Spring.NET的中职在线学习考试系统研究与实现(浙江工业大学·黄洁珏)
  • 基于JSP技术在线考试系统的开发(武汉理工大学·龙保江)
  • 基于B/S结构的网络考试系统设计与实现(黑龙江大学·宗垚)
  • 在线考试系统的设计与实现(青岛大学·许光林)
  • 基于JAVA考试培训系统的设计与实现(辽宁科技大学·李青军)
  • 基于J2EE的网络考试系统的设计与实现(吉林大学·刘莎莎)
  • 基于Web的在线考试系统的设计与实现(电子科技大学·廖欧)
  • 计算机基础课程web考试系统的设计与实现(内蒙古大学·王春红)
  • 基于ASP.NET技术的开放式在线学习及考试系统的研究与实现(中国海洋大学·李娅)
  • 达州职业技术学院网上考试系统的设计与实现(电子科技大学·谷潇)
  • 基于J2EE技术的考试系统的实现(大连海事大学·齐崧然)
  • 数字校园建设中的网络考试系统的设计与实现(山东大学·石春菊)
  • 基于JSP技术的在线考试系统设计与实现(华中师范大学·江泽中)
  • 基于Java EE架构的在线考试系统设计与实现(西安电子科技大学·龚尚映)
  • 基于J2EE的网络考试系统的设计与实现(吉林大学·刘莎莎)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设货栈 ,原文地址:https://bishedaima.com/yuanma/35474.html

相关推荐

发表回复

登录后才能评论