考试提交答案后台代码

我们在考试后,将每个答案提交,这样会使得方法的参数数量非常多(SpringMVC);怎样才能使得提交的答案和数据库的答案比对效率更高?有大佬知道的回复一下!

// 提交答案请求
    @RequestMapping("/tijiaodaan")
    public String tijiaodaan(Map<String,Object> map,String s1,String s2,String s3,String s4, String s5,
                             String s6,String s7,String s8,
                             String s9){
    
    
        // 在session中获取pid
        HttpSession session=httpServletRequest.getSession();
        Integer intPid=(Integer) session.getAttribute("pid");
        if(intPid!=null){
    
    
            Question question=questionService.selectQuestionByPidAndQuestionType3(intPid);
            Integer qid=question.getId();
            // 1、获取学生id
            String sid=(String) session.getAttribute("stuSid");
            // sid转为整型
            Integer intSid=Integer.parseInt(sid);
            Answer answer=new Answer(qid,intSid,s9);
            // 添加数据
            Boolean updateAnswer=answerService.insertAnswer(answer);
            if(updateAnswer){
    
    
                map.put("updateAnswer","答案保存成功!");
            }

            List<Question> answers=questionService.selectAnswerByPidAndQuestion02(intPid);
            // 计算选择题和判断题的总分
            int total=0;
            // 计算错误个数
            int error=0;
            if(answers!=null && answers.size()>0){
    
    
                // 单选题的总个数
                Integer count0=questionService.selectCount0(intPid);
                System.out.println("count0:"+count0);
                // 判断题的总个数
                Integer count2=questionService.selectCount2(intPid);
                System.out.println("count2:"+count2);
                String [] sx=new String[count0+count2];
                sx[0]=s1;
                sx[1]=s2;
                sx[2]=s3;
                sx[3]=s4;
                sx[4]=s5;
                sx[5]=s6;
                sx[6]=s7;
                sx[7]=s8;
                for(int i=0;i<count0;i++){
    
    
                    System.out.println(answers.get(i).getAnswer()+":"+sx[i]);
                    if((answers.get(i).getAnswer()).equals(sx[i])) {
    
    
                        total=total+2;
                    }else {
    
    
                        error+=1;
                    }
                }
                System.out.println("error:"+error);
                for(int i=count0;i<(count0+count2);i++){
    
    
                    System.out.println(answers.get(i).getAnswer()+":"+sx[i]);
                    if((answers.get(i).getAnswer().equals(sx[i]))){
    
    
                        total=total+5;
                    }else {
    
    
                        error+=1;
                    }
                }
            }
            // 将选择题和判断题总分放到学生成绩表中

            // 2、获取试卷名称
            String nam=(String)session.getAttribute("name");
            // 3、根据sid和name查到学生成绩表
            Stuexam stuexams=stuexamService.selectStuexam(sid,nam);
            if(stuexams!=null){
    
    
                Integer id=stuexams.getId();
                Integer dateScore=stuexams.getScore();
                Integer score=dateScore+total;
                Integer to=stuexams.getTotal();
                Integer pidXTotle=questionService.selectCountByPidX(intPid);
                to=pidXTotle;
                Integer dateErrorNumber=stuexams.getErrorNumber();
                dateErrorNumber=error;
                // 更新指定的学号和试卷名称的学生信息
                Stuexam stuexam=new Stuexam(id,intSid,nam,score,to,dateErrorNumber);
                Boolean updateStuexam=stuexamService.updateStuexamBySidAndName(stuexam);
                if(updateStuexam){
    
    
                    map.put("updateStuexam","成绩提交成功!");
                }else {
    
    
                    map.put("updateStuexam","成绩提交失败!");
                }
            }
        }
        return PAPER;
    }

猜你喜欢

转载自blog.csdn.net/qq_37950196/article/details/107389985