千家信息网

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

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这篇文章主要介绍"Java Online Exam在线考试系统怎么实现",在日常操作中,相信很多人在Java Online Exam在线考试系统怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2024年11月22日Java Online Exam在线考试系统怎么实现

这篇文章主要介绍"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 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 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 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 getSubjectForSearch(@PathVariable String idOrName) {        List subjects = new ArrayList();        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(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 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 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 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 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(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 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 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 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(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(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 questions = questionService.getQuestionByPaperId(paper.getId());             AnswerPaper answerPaper = answerPaperService.findByAnswerUserAndPaperName(username, paper.getName());             List answerQuestions = answerQuestionService.findByAnswerPaperId(answerPaper.getId());             /*保存题目信息,返回给前端*/            List results = new ArrayList();             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(result, HttpStatus.OK);        }        Paper paper1 = paperService.getPaperById(paper.getId());        //更新参与人数        paper1.setPeoples(String.valueOf(Integer.parseInt(paper1.getPeoples() + 1)));        paperService.updatePaper(paper1);        return new ResponseEntity(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 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(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(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 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 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 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 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 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 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 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 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(HttpStatus.OK);    }     @RequestMapping(value = "/analysis/paper")    @PreAuthorize("hasAuthority('" + Role.ROLE_TEACHER + "') or hasAuthority('" + Role.ROLE_ADMIN + "')")    public List analysisPaper() {        return answerPaperService.analysisPaper();    }}

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

0