「这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战」
接着上一篇文章,这一篇继续讲考试系统的开发功能,我们先讲question的这个模块的功能。
question的列表功能
1、首先判断从前端传过来的page,如果为空,那么就是首页,默认为首页StringUtil.isEmpty(page)
2、判断题目是否为空,如果不为空,直接拿到前端的试题session.setAttribute("s_question", s_question);如果还是拿不到题目的内容,新建对象s_question=new Question();
public String list()throws Exception{
HttpSession session=request.getSession();
if(StringUtil.isEmpty(page)){
page="1";
}
if(s_question!=null){
session.setAttribute("s_question", s_question);
}else{
Object o=session.getAttribute("s_question");
if(o!=null){
s_question=(Question)o;
}else{
s_question=new Question();
}
}
PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(PropertiesUtil.getValue("pageSize")));
questionList=questionDao.getQuestions(s_question,pageBean);
total=questionDao.questionCount(s_question);
pageCode=PageUtil.genPagation(request.getContextPath()+"/question!list",total, Integer.parseInt(page), Integer.parseInt(PropertiesUtil.getValue("pageSize")));
mainPage="question/questionList.jsp";
return SUCCESS;
}
3、设置分页功能,第几页,每页数量,以及总页数Integer.parseInt(page),Integer.parseInt(PropertiesUtil.getValue("pageSize"))
4、PageUtil.genPagation(request.getContextPath()+"/question!list",total, Integer.parseInt(page), Integer.parseInt(PropertiesUtil.getValue("pageSize")))在分页中,获取所有的题目内容。
题目后续有修改和删除的操作,这里就不一一列出了。
试卷类paper
线上考试,经常出现自己的试卷题目和别人的试卷题目不一样,这种做法能有效的防止作弊,防止别人偷窥。
private List<Question> getRandomQuestion(List<Question> questionList,int num){
List<Question> resultList=new ArrayList<Question>();
Random random=new Random();
if(num>0){
for(int i=1;i<=num;i++){
int n=random.nextInt(questionList.size());
Question q=questionList.get(n);
if(resultList.contains(q)){
i--;
}else{
resultList.add(questionList.get(n));
}
}
}
return resultList;
}
1、常用的随机类Random random=new Random();这样可以打乱题目的顺序。
2、num是题目的数量,每次从random拿到题目,数量减一,放到resultList集合里,当num为0的时候,resultList的数量也就达到了num最初的数量。
3、random.nextInt(questionList.size());随机获取数字,然后从questionList题库中获取,填充到resultList中。