在线考试_____计算分值(单选,多选,判断)
Posted layuechuquwan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在线考试_____计算分值(单选,多选,判断)相关的知识,希望对你有一定的参考价值。
// 判断分数 @ResponseBody @RequestMapping(value = "/queryScore") public String queryScore(HttpServletRequest request) { //获取页面的题目id String[] testIds = request.getParameterValues("testId"); // 获取页面选项 String[] optionTypes = request.getParameterValues("answr"); //定义全局变量num,统计分数 int num=0; //第一个for循环,循环页面题目的id,通过id来获取题目以及正确答案 for (int i = 0; i < testIds.length; i++) { //定义空集合,来存储option表的id; List<String> list = new ArrayList<String>(); //定义空数组来存储页面输入的答案。 List<String> answerList = new ArrayList<String>(); //通过id来获取question表里面的内容。 TestQuestion question = typeQuestionService.getQuestion(testIds[i]); //通过id来获取option表的内容。 List<Map<String, Object>> optionList = typeQuestionService.queryOption(testIds[i]); //第二个for循环,来循环遍历出option表的所有内容。 for (Map<String, Object> map : optionList) { //将页面上与之对应的题目的选项id存储list集合。 String answer = map.get("option_id").toString(); list.add(answer); } //第三个for循环,获取页面选项的答案。 for (int j = 0; j < optionTypes.length; j++) { //如果页面上每个题包含在option表的id对应下的选项下。 if(list.contains(optionTypes[j])){ //将包含的答案存储到答案集合answer中。 answerList.add(optionTypes[j]); } } //如果所有的输入的答案长度<1,继续循环(无答案)。 if(optionList.size()<1){ continue; } //取出questtion表正确答案 String quAnswer = question.getTestRightOptions(); //1,单选,2,多选,3判断。 //如果对应的标记是1,3,那么走这个方法。 if("1".equals(question.getTestFlag())||"3".equals(question.getTestFlag())){ //因为是单选和判断,所以只需要取出第一个答案,错误即全错误。 if(quAnswer.equals(optionList.get(0))){ //加1分 num = num + 1; } } //如果对应的标记是2,那么走这个方法。 if("2".equals(question.getTestFlag())){ //因为多选在数据库中存储的是正确答案的分割字符串,所以需要用String数组接收 String[] quAnswers = quAnswer.split(","); //1、第一种方法。 //全局变量,默认错误数量是0,以便于后面计算错误的数量,如果错一个直接 //第一个是用错误来判断,计算分数。 // int errorNum = 0; //第一个for,循环页面答案。 // for (String answer : answerList) { //里层for,用来循环判断正确答案与页面输入答案的内容对比。 // for (int j = 0; j < quAnswers.length; j++) { //如果页面答案和正确答案内容不一致,则+1 // if(!answer.equals(quAnswers[i])){ // errorNum++; // } // } // } //如果错误大于0,直接结束本循环,继续下一循环。 // if(errorNum>0){ // continue; // }else{ //如果正确答案的长度==页面答案的长度,所以分数+2,(全对) // if(quAnswers.length==answerList.size()){ // num = num + 2; // } //正确的数量,默认是0。 // int rightNum = 0; //第二个for循环,循环正确答案。 // for (String answer : answerList) { //循环正确答案,用来判断正确选项答对几个。 // for (int j = 0; j < quAnswers.length; j++) { // if(answer.equals(quAnswers[i])){ //如果一样,+1,如果相同,2 // rightNum++; // } // } // } //通过上面的方法来获取半对的分数。 // num = num + 1*rightNum; // } int rightNum = 0; for (String answer : answerList) { for (int j = 0; j < quAnswers.length; j++) { if(answer.equals(quAnswers[i])){ rightNum++; } } } if(rightNum==answerList.size()){ if(rightNum==quAnswers.length){ num = num + 2; }else{ num = num + 1*rightNum; } } } } return "/sys/queryTest"; }
以上是关于在线考试_____计算分值(单选,多选,判断)的主要内容,如果未能解决你的问题,请参考以下文章