温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Online Exam在线考试系统怎么实现

发布时间:2021-11-23 17:34:38 来源:亿速云 阅读:211 作者:iii 栏目:开发技术

这篇文章主要介绍“Java Online Exam在线考试系统怎么实现”,在日常操作中,相信很多人在Java Online Exam在线考试系统怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java Online Exam在线考试系统怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、项目简述

本系统主要实现的功能有: 学生以及老师的注册登录,在线考试,错题查询,学生管理,问题管理,错题管理,错题查询,分数查询,试卷管 理,人工组卷。自动组卷,教师,班级,统计等等管理功能。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: VUE+Springboot+ SpringMVC + MyBatis + ThymeLeaf + JavaScript + JQuery + Ajax + maven等等

课程信息控制器:

 /**  * yy  */ @RestController @RequestMapping(value = "/v1/subjects") public class SubjectController {       private static Logger logger = LoggerFactory.getLogger(SubjectController.class);       @Autowired     SubjectService subjectService;       @ApiOperation(value = "获取科目列表", notes = "")     @RequestMapping(value = "", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public PageInfo<Subject> getSubjectList(@RequestParam(required = false) Integer pageIndex,                                         @RequestParam(required = false) Integer pageSize,                                         @RequestParam(required = false) Integer limit,                                         @RequestParam(required = false) Integer offset) {         if(pageIndex != null && pageSize != null) {             PageHelper.startPage(pageIndex, pageSize);         }         List<Subject> subjects = subjectService.getSubjectList();         PageInfo pageInfo = new PageInfo(subjects);         return pageInfo;     }       @ApiOperation(value = "根据名字获取科目信息", notes = "根据科目名称获取科目详细信息")     @ApiImplicitParam(name = "name", value = "科目名称", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/{name}/name", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public List<Subject> getSubjectByName(@PathVariable String name) {         return subjectService.getSubjectFuzzy(name);     }         @ApiOperation(value = "获取课程信息", notes = "根据课程id获取课程详细信息")     @ApiImplicitParam(name = "idOrName", value = "课程ID或名称", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/search/{idOrName}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public List<Subject> getSubjectForSearch(@PathVariable String idOrName) {         List<Subject> subjects = new ArrayList<Subject>();         Subject subject = subjectService.getSubjectByName(idOrName);         if (subject == null) {             try {                 subject = subjectService.getSubjectById(idOrName);             } catch (Exception e) {               }         }         if (subject != null) {             subjects.add(subject);         }         return subjects;     }       @ApiOperation(value = "创建课程", notes = "创建课程")     @ApiImplicitParam(name = "subject", value = "课程实体Subject", required = true, dataType = "Subject")     @RequestMapping(value = "", method = RequestMethod.POST)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> postSubject(@RequestBody Subject subject) {         if(subjectService.getSubjectByName(subject.getName()) != null) {             return new ResponseEntity<Object>(new Dto("课程已存在!"), HttpStatus.INTERNAL_SERVER_ERROR);         }         subjectService.saveSubject(subject);         return new ResponseEntity(HttpStatus.CREATED);     }       @ApiOperation(value = "获取课程信息", notes = "根据课程id获取课程详细信息")     @ApiImplicitParam(name = "id", value = "课程ID", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/{id}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public Subject getSubject(@PathVariable String id) {         return subjectService.getSubjectById(id);     }       @ApiOperation(value = "更新课程信息", notes = "根据课程id更新用户信息")     @ApiImplicitParam(name = "subject", value = "课程实体", required = true, dataType = "Subject")     @RequestMapping(value = "", method = RequestMethod.PUT)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> putSubject(@RequestBody Subject subject) {         subjectService.updateSubject(subject);         return new ResponseEntity(HttpStatus.OK);     }       @ApiOperation(value = "删除课程", notes = "根据课程id删除课程")     @ApiImplicitParam(name = "id", value = "课程ID", required = true, dataType = "Long", paramType = "path")     @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> deleteSubject(@PathVariable String id) {         try {             subjectService.deleteSubject(id);         }catch (RuntimeException e) {             return new ResponseEntity(new Dto("该课程包含有考试,不能删除"), HttpStatus.INTERNAL_SERVER_ERROR);         }         return new ResponseEntity(HttpStatus.OK);     } }

题目信息控制器:

/**  * yy  */   @RestController @RequestMapping(value = "/v1/questions") public class QuestionController {       private static Logger logger = LoggerFactory.getLogger(QuestionController.class);       @Autowired     QuestionService questionService;       @Autowired     PaperAnswerPaperService paperAnswerPaperService;       @ApiOperation(value = "获取题目分页列表", notes = "")     @RequestMapping(value = "", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public PageInfo<Question> getQuestionListByPage(@RequestParam(required = false) Integer pageIndex,                                                     @RequestParam(required = false) Integer pageSize,                                                     @RequestParam(required = false) Integer limit,                                                     @RequestParam(required = false) Integer offset) {         if(pageIndex != null && pageSize != null) {             PageHelper.startPage(pageIndex, pageSize);         }         List<Question> questions = questionService.getQuestionList();         PageInfo pageInfo = new PageInfo(questions);         return pageInfo;     }       @ApiOperation(value = "获取试卷题目分页列表", notes = "")     @RequestMapping(value = "/papers/{paperId}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public PageInfo<Question> getQuestionListByPaper(@PathVariable String paperId,                                                      @RequestParam(required = false) Integer pageIndex,                                                      @RequestParam(required = false) Integer pageSize,                                                      @RequestParam(required = false) Integer limit,                                                      @RequestParam(required = false) Integer offset) {         if(pageIndex != null && pageSize != null) {             PageHelper.startPage(pageIndex, pageSize);         }         List<Question> questions = questionService.getQuestionListByPaper(paperId);         PageInfo pageInfo = new PageInfo(questions);         return pageInfo;     }       @ApiOperation(value = "获取试卷题目数量", notes = "")     @RequestMapping(value = "/papers/{paperId}/count", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public ResponseEntity<?> getQuestionCountByPaper(@PathVariable String paperId) {         Integer count = questionService.countByPaperId(paperId);         return new ResponseEntity<Object>(count, HttpStatus.OK);     }       @ApiOperation(value = "创建题目", notes = "创建题目")     @ApiImplicitParams({             @ApiImplicitParam(name = "question", value = "题目实体Question", required = true, dataType = "Question"),             @ApiImplicitParam(name = "id", value = "试卷id", required = true, dataType = "String", paramType = "path")     })     @RequestMapping(value = "/{id}", method = RequestMethod.POST)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> postQuestion(@PathVariable("id") String id, @RequestBody Question question) {         questionService.saveQuestion(id, question);         return new ResponseEntity(HttpStatus.CREATED);     }       @ApiOperation(value = "获取题目信息", notes = "根据题目id获取题目详细信息")     @ApiImplicitParam(name = "id", value = "题目ID", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/{id}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public Question getQuestion(@PathVariable String id) {         return questionService.getQuestion(id);     }       @ApiOperation(value = "根据试卷id和题目编号获取题目信息", notes = "根据题目id获取题目详细信息")     @ApiImplicitParams({             @ApiImplicitParam(name = "paperId", value = "试卷ID", required = true, dataType = "String", paramType = "path"),             @ApiImplicitParam(name = "number", value = "题目编号", required = true, dataType = "String", paramType = "path")     })     @RequestMapping(value = "/papers/{paperId}/questions/{number}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public Question getQuestionByPaperIdAndQuestionId(@PathVariable String paperId,                                                       @PathVariable Integer number,                                                       @RequestParam(required = false) String answerPaperId) {         PaperAnswerPaper paperAnswerPaper = null;         //传入的是答卷Id         if(answerPaperId != null) {             // TODO: 2017-04-17             paperAnswerPaper = paperAnswerPaperService.getByAnswerPaperId(answerPaperId);             if(paperAnswerPaper != null) {                 return questionService.getQuestionByPaperIdAndQuestionNumber(paperAnswerPaper.getPaperId(), number);             }else {                 logger.error("根据答卷id获取答卷失败");             }         }         return questionService.getQuestionByPaperIdAndQuestionNumber(paperId, number);     }       @ApiOperation(value = "获取题目信息", notes = "根据题目name获取题目详细信息")     @ApiImplicitParam(name = "name", value = "试卷name", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/name/{name}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public List<Question> getQuestionByName(@PathVariable String name) {         //模糊查询         return questionService.getQuestionFuzzy(name);     }       @ApiOperation(value = "获取题目信息", notes = "根据试卷id获取所有题目")     @ApiImplicitParam(name = "paperId", value = "试卷ID", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/papers/{paperId}/questions", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public List<Question> getQuestionByPaperId(@PathVariable String paperId) {         return questionService.getQuestionByPaperId(paperId);     }       @ApiOperation(value = "获取题目信息", notes = "根据试卷id获取所有题目,但不返回答案")     @ApiImplicitParam(name = "paperId", value = "试卷ID", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/papers/{paperId}/ignore", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public List<Question> getQuestionByPaperIdIgnoreAnswer(@PathVariable String paperId) {         return questionService.getQuestionByPaperIdIgnoreAnswer(paperId);     }       @ApiOperation(value = "更新题目信息", notes = "根据题目id更新题目信息")     @ApiImplicitParam(name = "question", value = "题目实体", required = true, dataType = "Question")     @RequestMapping(value = "", method = RequestMethod.PUT)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> putQuestion(@RequestBody Question question) {         questionService.updateQuestion(question);         return new ResponseEntity(HttpStatus.OK);     }       @ApiOperation(value = "删除题目", notes = "根据题目id删除试卷")     @ApiImplicitParam(name = "id", value = "题目ID", required = true, dataType = "String", paramType = "path")     @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> deleteQuestion(@PathVariable String id) {         questionService.deleteQuestion(id);         return new ResponseEntity(HttpStatus.OK);     } }

考试控制层,负责试卷提交等:

/**  * 考试控制层,负责试卷提交等  */ @RestController @RequestMapping("/v1/exam") public class ExamController {       @Autowired     ExamService examService;       @Autowired     AnswerPaperService answerPaperService;       @Autowired     AnswerQuestionService answerQuestionService;       @Autowired     AnswerPaperQuestionService answerPaperQuestionService;       @Autowired     QuestionService questionService;       @Autowired     PaperService paperService;       @Autowired     WrongQuestionService wrongQuestionService;       @Autowired     PaperAnswerPaperService paperAnswerPaperService;       @ApiOperation(value = "根据试卷id和题目编号获取题目信息", notes = "根据题目id获取题目详细信息")     @ApiImplicitParams({             @ApiImplicitParam(name = "paperId", value = "试卷ID", required = true, dataType = "String", paramType = "path"),             @ApiImplicitParam(name = "number", value = "题目编号", required = true, dataType = "String", paramType = "path")     })     @RequestMapping(value = "/questions/{number}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public Question getQuestionByPaperIdAndQuestionId(@RequestParam String paperId,                                                       @RequestParam String username,                                                       @RequestParam(required = false) String answerPaperId,                                                       @PathVariable Integer number) {         Question question = null;         AnswerQuestion answerQuestion = null;         if(answerPaperId == null) {             Paper paper = paperService.getPaperById(paperId);             if(paper != null) {                 AnswerPaper answerPaper = answerPaperService.findByAnswerUserAndPaperName(username, paper.getName());                 if(answerPaper != null) {                     answerQuestion = answerQuestionService.getAnswerQuestionByPaperIdAndQuestionNumber(answerPaper.getId(), number);                 }             }         }else {             answerQuestion = answerQuestionService.getAnswerQuestionByPaperIdAndQuestionNumber(answerPaperId, number);         }           if(answerQuestion == null) {             question = questionService.getQuestionByPaperIdAndQuestionNumber(paperId, number);             if(question != null) {                 //答案不返回                 question.setAnswer("");             }         } else {             question = new Question();             question.setId(answerQuestion.getId());             question.setNumber(answerQuestion.getNumber());             question.setTitle(answerQuestion.getTitle());             question.setScore(answerQuestion.getScore());             question.setType(answerQuestion.getType());             question.setOptionA(answerQuestion.getOptionA());             question.setOptionB(answerQuestion.getOptionB());             question.setOptionC(answerQuestion.getOptionC());             question.setOptionD(answerQuestion.getOptionD());             question.setAnswer(answerQuestion.getAnswer());         }         return question;     }       @RequestMapping(value = "/submit/{type}/{username}", method = RequestMethod.POST)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public ResponseEntity<?> submit(@RequestBody Paper paper, @PathVariable String type,                                     @PathVariable String username,                                     @RequestParam(required = false) String answerPaperId) {         /**          * 更改试卷状态,finished:true          */         if(type.equals("official")) {             /**              * 正式考试              */             AnswerPaper answerPaper = new AnswerPaper();             if(answerPaperId != null) {                 answerPaper.setId(answerPaperId);             }else {                 return new ResponseEntity<Object>(HttpStatus.INTERNAL_SERVER_ERROR);             }             answerPaper.setAnswerTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));             answerPaper.setPaperName(paper.getName());             answerPaper.setAnswerUser(username);             answerPaper.setChecked("false");             answerPaper.setFinished("true");             answerPaper.setType("official");             examService.updateAnswerPaper(answerPaper);         } else if(type.equals("simulate")) {             /**              * 模拟考试              */             AnswerPaper answerPaper = new AnswerPaper();             if(answerPaperId != null) {                 answerPaper.setId(answerPaperId);             }else {                 return new ResponseEntity<Object>(HttpStatus.INTERNAL_SERVER_ERROR);             }             answerPaper.setAnswerTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));             answerPaper.setPaperName(paper.getName());             answerPaper.setAnswerUser(username);             answerPaper.setChecked("false");             answerPaper.setFinished("true");             answerPaper.setType("simulate");             examService.updateAnswerPaper(answerPaper);         }else if(type.equals("practice")) {             /**              * 1.接收提交的试卷              * 2.计算成绩              * 3.记录考试记录              * 4.返回计算结果              */             int score = 0;               //正确题目数             double right = 0.0;               //错误题目数             double wrong = 0.0;               double correctRate = 0.0;               List<Question> questions = questionService.getQuestionByPaperId(paper.getId());               AnswerPaper answerPaper = answerPaperService.findByAnswerUserAndPaperName(username, paper.getName());               List<AnswerQuestion> answerQuestions = answerQuestionService.findByAnswerPaperId(answerPaper.getId());               /*保存题目信息,返回给前端*/             List<DtoRightAndWrong> results = new ArrayList<DtoRightAndWrong>();               DtoRightAndWrong dtoRightAndWrong = null;               //遍历提交的试卷的题目             for(AnswerQuestion answerQuestion : answerQuestions) {                   //遍历包含正确答案的题目                 for(Question question : questions) {                     /**                      * 1.题目序号相同                      * 2.结果与答案相同                      */                     if(answerQuestion.getNumber().equals(question.getNumber())) {                         if(answerQuestion.getAnswer().equals(question.getAnswer())) {                             /*累计得分*/                             score += Integer.parseInt(question.getScore());                             right ++;                         }else {                             wrong ++;                             //记录错题                             dtoRightAndWrong = new DtoRightAndWrong();                             dtoRightAndWrong.setQuestion(question);                             dtoRightAndWrong.setAnswerQuestion(answerQuestion);                             results.add(dtoRightAndWrong);                               //保存错题                             WrongQuestion wrongQuestion = new WrongQuestion();                             try{                                 BeanUtils.copyProperties(wrongQuestion, answerQuestion);                                 wrongQuestion.setUsername(username);                                 wrongQuestion.setRightAnswer(question.getAnswer());                                 wrongQuestion.setAnalysis(question.getAnalysis());                                 if(wrongQuestionService.getWrongQuestion(wrongQuestion.getId()) == null) {                                     wrongQuestionService.saveQuestion(wrongQuestion);                                 }                             }catch (Exception e) {                                 System.out.println(wrongQuestion.toString());                             }                           }                     }                 }             }             //计算正确率             correctRate = (right/(right + wrong)) * 100;               DtoResult result = new DtoResult();             result.setScore(score);             result.setRight(right);             result.setWrong(wrong);             result.setCorrectRate(correctRate);             result.setResults(results);               Paper paper1 = paperService.getPaperById(paper.getId());             //更新参与人数             paper1.setPeoples(String.valueOf(Integer.parseInt(paper1.getPeoples()) + 1));             paperService.updatePaper(paper1);               return new ResponseEntity<Object>(result, HttpStatus.OK);         }         Paper paper1 = paperService.getPaperById(paper.getId());         //更新参与人数         paper1.setPeoples(String.valueOf(Integer.parseInt(paper1.getPeoples() + 1)));         paperService.updatePaper(paper1);         return new ResponseEntity<Object>(HttpStatus.OK);     }       /**      * 提交题目      * @param username      * @param dtoAnswerPaper      * @return      */     @RequestMapping(value = "/submit/one/{username}", method = RequestMethod.POST)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public ResponseEntity<?> submitOne(@PathVariable String username, @RequestBody DtoAnswerPaper dtoAnswerPaper) {         Paper paper = dtoAnswerPaper.getPaper();         Question question = dtoAnswerPaper.getQuestion();         //判断数据库是否保存了这次答卷         AnswerPaper answerPaper = answerPaperService.getAnswerPaperByNameAndUser(paper.getName(), username);         AnswerQuestion answerQuestion = null;         AnswerPaperQuestion answerPaperQuestion = null;         List<AnswerQuestion> answerQuestions = null;         //重新生成id         String answerPaperId = IdGen.uuid();         String answerQuestionId = IdGen.uuid();         //答卷为空,则执行保存         if(answerPaper == null) {             answerPaper = new AnswerPaper();             answerPaper.setId(answerPaperId);             answerPaper.setAnswerTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));             answerPaper.setPaperName(paper.getName());             answerPaper.setType(paper.getType());             answerPaper.setAnswerUser(username);             answerPaper.setChecked("false");             answerPaper.setFinished("false");               //保存答卷             answerPaperService.saveAnswerPaper(answerPaper);               // TODO: 2017-04-17 保存试卷答卷             PaperAnswerPaper paperAnswerPaper = new PaperAnswerPaper();             paperAnswerPaper.setPaperId(paper.getId());             paperAnswerPaper.setAnswerPaperId(answerPaperId);             paperAnswerPaperService.save(paperAnswerPaper);               //新记录             answerQuestion = new AnswerQuestion();             //初始化信息             answerQuestion.setId(answerQuestionId);             answerQuestion.setTitle(question.getTitle());             answerQuestion.setType(question.getType());             answerQuestion.setNumber(question.getNumber());             answerQuestion.setOptionA(question.getOptionA());             answerQuestion.setOptionB(question.getOptionB());             answerQuestion.setOptionC(question.getOptionC());             answerQuestion.setOptionD(question.getOptionD());             answerQuestion.setContent(question.getContent());             answerQuestion.setScore(question.getScore());             answerQuestion.setAnalysis(question.getAnalysis());             answerQuestion.setAnswer(question.getAnswer());                 answerPaperQuestion = new AnswerPaperQuestion();             answerPaperQuestion.setAnswerPaperId(answerPaper.getId());             answerPaperQuestion.setAnswerQuestionId(answerQuestionId);               //保存             answerQuestionService.saveAnswerQuestion(answerQuestion);             answerPaperQuestionService.saveAnswerPaperQuestion(answerPaperQuestion);               return new ResponseEntity<Object>(answerPaper, HttpStatus.OK);         } else {             answerQuestions = answerQuestionService.findByAnswerPaperId(answerPaper.getId());             if(answerQuestions != null && answerQuestions.size() > 0) {                 int count = 0;                 AnswerQuestion existAnswerQuestion = null;                 for(AnswerQuestion question1 : answerQuestions) {                     if (question1.getNumber().equals(question.getNumber())) {                         count++;                         existAnswerQuestion = question1;//保存当前存在的记录                     }                 }                 //记录不存在                 if(count == 0) {                     //新记录                     answerQuestion = new AnswerQuestion();                     answerPaperQuestion = new AnswerPaperQuestion();                         answerQuestion = new AnswerQuestion();                     //初始化信息                     answerQuestion.setId(answerQuestionId);                     answerQuestion.setTitle(question.getTitle());                     answerQuestion.setType(question.getType());                     answerQuestion.setNumber(question.getNumber());                     answerQuestion.setOptionA(question.getOptionA());                     answerQuestion.setOptionB(question.getOptionB());                     answerQuestion.setOptionC(question.getOptionC());                     answerQuestion.setOptionD(question.getOptionD());                     answerQuestion.setContent(question.getContent());                     answerQuestion.setScore(question.getScore());                     answerQuestion.setAnalysis(question.getAnalysis());                     answerQuestion.setAnswer(question.getAnswer());                         answerPaperQuestion = new AnswerPaperQuestion();                     answerPaperQuestion.setAnswerPaperId(answerPaper.getId());                     answerPaperQuestion.setAnswerQuestionId(answerQuestionId);                       //保存                     answerQuestionService.saveAnswerQuestion(answerQuestion);                     answerPaperQuestionService.saveAnswerPaperQuestion(answerPaperQuestion);                 } else {                     //记录存在,则执行更新                     // TODO: 2017/3/30                     //更新当前存在的记录                     existAnswerQuestion.setAnswer(question.getAnswer());                       answerQuestionService.updateAnswerQuestion(existAnswerQuestion);                 }             }         }         return new ResponseEntity<Object>(answerPaper, HttpStatus.OK);     } }

答卷控制层,用于获取已经提交的答卷:

/**  * 答卷控制层,用于获取已经提交的答卷  */ @RestController @RequestMapping("/v1/answer-papers") public class AnswerPaperController {       @Autowired     AnswerPaperService answerPaperService;       @Autowired     AnswerQuestionService answerQuestionService;       /**      * 根据ID查找      * @param id      * @return      */     @RequestMapping(value = "/{id}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public AnswerPaper getAnswerPaper(@PathVariable String id) {         return answerPaperService.getAnswerPaperById(id);     }       /**      * 根据name查找      * @param name      * @return      */     @RequestMapping(value = "/name/{name}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public List<AnswerPaper> getAnswerPaperByName(@PathVariable String name) {         return answerPaperService.getAnswerPaperFuzzy(name);     }       /**      * 根据答卷id和题目编号获取题目信息      * @param paperId      * @param number      * @return      */     @RequestMapping(value = "/papers/{paperId}/questions/{number}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public AnswerQuestion getQuestionByPaperIdAndQuestionId(@PathVariable String paperId, @PathVariable Integer number) {         AnswerQuestion answerQuestion = answerQuestionService.getAnswerQuestionByPaperIdAndQuestionNumber(paperId, number);         return answerQuestion;     }       /**      * 已分页方式获取数据      * @param username      * @param pageIndex      * @param pageSize      * @param limit      * @param offset      * @return      */     @RequestMapping(value = "/users/{username}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public PageInfo<AnswerPaper> getListByUser(@PathVariable("username") String username,                                                @RequestParam(required = false) Integer pageIndex,                                                @RequestParam(required = false) Integer pageSize,                                                @RequestParam(required = false) Integer limit,                                                @RequestParam(required = false) Integer offset) {         if(pageIndex != null && pageSize != null) {             PageHelper.startPage(pageIndex, pageSize);         }         List<AnswerPaper> answerPapers = answerPaperService.getAnswerPaperListByAnswerUser(username);         PageInfo pageInfo = new PageInfo(answerPapers);         return pageInfo;     }       @RequestMapping(value = "/users/{username}/type/{type}", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public PageInfo<AnswerPaper> getListByUserAndType(@PathVariable("username") String username,                                                 @PathVariable("type") String type,                                                 @RequestParam(required = false) Integer pageIndex,                                                 @RequestParam(required = false) Integer pageSize,                                                 @RequestParam(required = false) Integer limit,                                                 @RequestParam(required = false) Integer offset) {         if(pageIndex != null && pageSize != null) {             PageHelper.startPage(pageIndex, pageSize);         }         List<AnswerPaper> answerPapers = answerPaperService.getAnswerPaperListByAnswerUserAndType(username, type);         PageInfo pageInfo = new PageInfo(answerPapers);         return pageInfo;     }       /**      * 获取未批改或已批改的答卷数量,      * @return      */     @RequestMapping("/check")     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public DtoTask countUnCheckAnswerPaper() {         DtoTask dtoTask = new DtoTask();         Integer checked = answerPaperService.countCheck("true");         Integer unChecked = answerPaperService.countCheck("false");         dtoTask.setChecked(checked);         dtoTask.setUnChecked(unChecked);         return dtoTask;     }       /**      * 以分页方式获取数据      * @param pageIndex      * @param pageSize      * @param limit      * @param offset      * @return      */     @RequestMapping(value = "", method = RequestMethod.GET)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public PageInfo<AnswerPaper> getListByUser(@RequestParam(required = false) Integer pageIndex,                                                @RequestParam(required = false) Integer pageSize,                                                @RequestParam(required = false) Integer limit,                                                @RequestParam(required = false) Integer offset) {         if(pageIndex != null && pageSize != null) {             PageHelper.startPage(pageIndex, pageSize);         }         List<AnswerPaper> answerPapers = answerPaperService.getAnswerPaperList();         PageInfo pageInfo = new PageInfo(answerPapers);         return pageInfo;     }       /**      * 更新      * @param answerPaper      * @return      */     @RequestMapping(value = "", method = RequestMethod.PUT)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public ResponseEntity<?> putPaper(@RequestBody AnswerPaper answerPaper) {         answerPaperService.updatePaper(answerPaper);         return new ResponseEntity(HttpStatus.OK);     }       /**      * 计算考试成绩      * @param id      * @return      */     @RequestMapping(value = "/{id}/calculate", method = RequestMethod.PUT)     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "') or hasAuthority('" + Role.ROLE_STUDENT + "')")     public ResponseEntity<?> CalculationScore(@PathVariable String id) {         /**          * 计算成绩          */         List<AnswerQuestion> questions = answerQuestionService.findByAnswerPaperId(id);         if(questions != null && questions.size() > 0) {               int score = 0;             try {                 for(AnswerQuestion question : questions) {                     score += Integer.parseInt(question.getMarkScore());                 }             } catch (Exception e) {                 // TODO: 2017/4/1             }               /**              * 保存成绩              */               AnswerPaper answerPaper = new AnswerPaper();             answerPaper.setId(id);             answerPaper.setScore(Integer.toString(score));             answerPaper.setChecked("true");             answerPaperService.updatePaper(answerPaper);         } else {             // TODO: 2017/4/1         }         return new ResponseEntity<Object>(HttpStatus.OK);     }       @RequestMapping(value = "/analysis/paper")     @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")     public List<PaperAnalysis> analysisPaper() {         return answerPaperService.analysisPaper();     } }

到此,关于“Java Online Exam在线考试系统怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI