这篇文章主要为大家详细介绍了Java实现在线测评考试系统的方法,文中示例代码介绍的非常详细,零基础也能参考此文章,感兴趣的小伙伴们可以参考一下。
代码展示
package service;import java.util.ArrayList;import java.util.List;import java.util.Random;import util.Config;import util.Md5Utils;import entity.EntityContext;import entity.ExamInfo;import entity.Question;import entity.QuestionInfo;import entity.User;import exception.IdOrPasswordException;public class ExamServiceImpl implements ExamService {private EntityContext entityContext;private List<QuestionInfo> paper = new ArrayList<QuestionInfo>();private Config config;private User loginUser;public List<QuestionInfo> getPaper() { return paper;
}
public void setPaper(List<QuestionInfo> paper) {
this.paper = paper;
}
public ExamServiceImpl(EntityContext entityContext, Config config) {
super();
this.entityContext = entityContext;
this.config = config;
}
public ExamServiceImpl(EntityContext entityContext) {
super();
this.entityContext = entityContext;
}
@Override
public User login(int id, String password) throws IdOrPasswordException {
loginUser = entityContext.findUserById(id);
if (loginUser == null) {
throw new IdOrPasswordException("鏃犳鐢ㄦ埛!");
}
if (loginUser.getPassword().equals(Md5Utils.md5(password))) {
return loginUser;
}
throw new IdOrPasswordException("瀵嗙爜閿欒!");
}
@Override
public ExamInfo start() {
buildPaper();
ExamInfo examInfo = new ExamInfo();
examInfo.setUser(loginUser);
examInfo.setTimeLimit(config.getInt("TimeLimit"));
examInfo.setExamTitle(config.getString("PaperTitle"));
examInfo.setQuestionNumber(config.getInt("QuestionNumber"));
return examInfo;
}
private void buildPaper() {
int i = 0;
Random random = new Random();
for (int level = Question.LEVEL1; level <= Question.LEVEL10; level++) {
List<Question> list = entityContext.getQuestions(level);
Question q1 = list.remove(random.nextInt(list.size()));
Question q2 = list.remove(random.nextInt(list.size()));
paper.add(new QuestionInfo(++i, q1));
paper.add(new QuestionInfo(++i, q2));
}
}
@Override
public QuestionInfo getQuestionInfo(int index) {
return paper.get(index - 1);
}
@Override
public void sendUserAnswers(int questionIndex, List<Integer> answers) {
QuestionInfo questionInfo = paper.get(questionIndex - 1);
questionInfo.setUserAnswers(new ArrayList<Integer>(answers));
}
@Override
public int getTotalSocre() {
int score = 0;
for (QuestionInfo questionInfo : paper) {
if (questionInfo.getUserAnswers().equals(
questionInfo.getQuestion().getAnswers())) {
score += questionInfo.getQuestion().getScore();
}
}
return score;
}}
看完这篇文章,你们学会Java实现在线测评考试系统的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。