zoukankan      html  css  js  c++  java
  • 在线考试_____计算分值(单选,多选,判断)

    // 计算分数
    	@ResponseBody
    	@RequestMapping(value = "/addPrice", method = RequestMethod.POST)
    	public String addPrice(TestQuestion ques, HttpServletRequest request) {
    		// 获取前台传 的 与value 值
    		String[] optionType = request.getParameterValues("optionId");
    		// 获取前台获取的 id
    		String[] testId = request.getParameterValues("testId");
    		for (String arr : testId) {
    
    			System.err.println("test——id" + arr);
    		}
    		for (String optionTypes : optionType) {
    
    			System.err.println("optionId" + optionTypes);
    		}
    		int sum = 0;
    		// 用 页面的题目id 找出正确答案 与 option表中的内容,查看是否是一致的
    		for (int i = 0; i < testId.length; i++) {
    			// 获取 question 表中的内容
    			TestQuestion question = disposeService.getqustion(testId[i]);
    			// 通过题目id来获取option表的内容。
    			List<Map<String, Object>> optionList = disposeService.queryOptions(testId[i]);
    			// 定义空集合,来存储option表的id;
    			List<String> list = new ArrayList<String>();
    			// 定义空集合,来存储页面输入的答案。做比较
    			List<String> answerList = new ArrayList<String>();
    
    			// 遍历optionList获取所有的 选项,选项id
    			for (Map<String, Object> map : optionList) {
    				// 将页面题目所对应的选项 存到list集合当中
    				String answer = map.get("option_id").toString();
    				// 将 option_id 所对应的选项 存到list集合中去
    				// String optionTypeXan=
    				// disposeService.getOptionType(answer).getOptionType();
    
    				list.add(answer);
    			}
    			// 循环遍历 循环页面选项,判断,选项是否存在于通过id 查找出来的选项中
    			for (int j = 0; j < optionType.length; j++) {
    				// 进行比较 如果存在就 存进页面输入的答案的集合
    				if (!StringUtils.hasText(optionType[j])) {
    					continue;
    				}
    				if (list.contains(optionType[j])) {
    					answerList.add(optionType[j]);
    				}
    
    			}
    			// 判断 通过 题目id 获取的optionList里面有木有值,如果有值就判断做了这个题,没有值,就判断没做这个题
    
    			if (answerList.size() < 1) {
    				continue;
    			}
    			// 进行 页面选项与正确答案是否是相同的
    			// 接收正确答案, question 前面定义的option 表中所有的正确答案
    			String quAnswer = question.getTestRightOptions();
    			// 1. 单选,2.多选,3.判断
    			if ("1".equals(question.getTestFlag()) || "3".equals(question.getTestFlag())) {
    				System.out.println("题目Id:" + question.getTestId());
    				System.out.println("用户选择Id:" + answerList.get(0));
    				// 接收 用户输入的选项的id optionId
    				String optionId = answerList.get(0);
    				// 通过optionid 获得所有的信息
    				TestOption option = disposeService.getOption(optionId);
    				System.out.println(quAnswer + "===" + option.getOptionType());
    				if (quAnswer.equals(option.getOptionType())) {
    					System.out.println("对了一个");
    					sum = sum + 1;
    					System.out.println("对了一个" + sum);
    				}
    			}
    			// 多选
    			if ("2".equals(question.getTestFlag())) {
    				// 对正确答案进行切割
    					String[] quAnswers = quAnswer.split(",");
    
    					// 第一个是用错误来判断,计算分数。
    					int errorNum = 0;
    					for (String answer : answerList) {
    						TestOption option = disposeService.getOption(answer);
    						if (quAnswer.lastIndexOf(option.getOptionType()) == -1) {
    							errorNum++;
    						}
    					}
    					System.out.println("错了:" + errorNum + "个");
    					if (errorNum > 0) {
    						continue;
    					} else {
    						System.err.println("sum====;" + sum);
    						if (quAnswers.length == answerList.size()) {
    							System.err.println("sum;" + sum);
    							sum = sum + 2;
    						}
    					}
    				}	
    			}
    		System.err.println("得分" + sum);
    		request.setAttribute("sum", sum);
    		DecimalFormat df = new DecimalFormat("#.0");
    		return df.format(sum);
    	}
    
  • 相关阅读:
    C#之流程控制
    UML画图总结以及浅谈UNL九种图
    UML视频总结
    英语总结
    UML coming
    那天我把“小四”拆了
    first 关于文档(总结)
    机房收费需求分析文档
    梦开始的地方
    WebRTC 开发实践:为什么你需要 SFU 服务器
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11774940.html
Copyright © 2011-2022 走看看