我们在考试后,将每个答案提交,这样会使得方法的参数数量非常多(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;
}