2022首次更文挑战第24天 | 考试系统的开发02

144 阅读1分钟

「这是我参与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中。