package StandardExamSystem; import java.util.ArrayList; public class StandardExamSystemTest { /** * @param args */ public static void main(String[] args) { ArrayList<String> al1=new ArrayList<String>(); al1.add("A.选项一"); al1.add("B.选项二"); al1.add("C.选项三"); al1.add("D.选项四"); al1.add("E.选项五"); ArrayList<String> al2=new ArrayList<String>(); al2.add("A.选项一"); al2.add("B.选项二"); al2.add("C.选项三"); al2.add("D.选项四"); Question q1=new Question("1.今天星期几?",al1,"E"); Question q2=new Question("2.明天星期几?",al2,"A"); Paper p=new Paper(); p.addQuestion(1, q1); p.addQuestion(2, q2); System.out.println("请输入您的姓名:"); String name=InputUtil.getString(); Student s=new Student(name); s.setOnePaper(p); s.startExam(); s.getScore(); } } package StandardExamSystem; import java.util.*; public class Paper { private Map<Integer, Question> map_someQuestion = new HashMap<Integer, Question>(); private AnswerSheet answersheet = new AnswerSheet(); public Map<Integer, Question> getMap_someQuestion() { return map_someQuestion; } public AnswerSheet getAnswersheet() { return answersheet; } public void addQuestion(Integer i, Question q) { Set<Integer> keyset = map_someQuestion.keySet(); if (keyset.contains(i)) { System.out.println("原试卷中已经包含该题了,是否覆盖(1:true,0:false)?"); int temp = InputUtil.getInt(); if (temp == 1) { map_someQuestion.put(i, q); } else { return; } } else { map_someQuestion.put(i, q); } } public void setAnswerSheet(Integer questionID, String student_answer) { this.answersheet.setMap_answersheet(questionID, student_answer); } protected class AnswerSheet { private Map<Integer, String> map_answersheet = new HashMap<Integer, String>(); public Map<Integer, String> getMap_answersheet() { return map_answersheet; } public void setMap_answersheet(Map<Integer, String> map_answersheet) { this.map_answersheet = map_answersheet; } public void setMap_answersheet(Integer i, String s) { this.map_answersheet.put(i, s); } } } package StandardExamSystem; import java.util.ArrayList; public class Question { private String describeMenu; private ArrayList<String> ArrayList_selectItem; private String correctAnswer; public Question(String describeMenu, ArrayList<String> selectItem, String correctAnswer) { super(); this.describeMenu = describeMenu; this.ArrayList_selectItem = selectItem; this.correctAnswer = correctAnswer; } public String getDescribeMenu() { return describeMenu; } public ArrayList<String> getArrayList_selectItem() { return ArrayList_selectItem; } public String getCorrectAnswer() { return correctAnswer; } @Override public boolean equals(Object obj) { if (obj instanceof Question) { Question q = (Question) obj; return this.describeMenu.equals(q.describeMenu); } return false; } @Override public int hashCode() { return this.describeMenu.hashCode() ^ 0x92ab10fe; } } package StandardExamSystem; import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Student { private String name; private Paper onePaper; public Student(String name){ this.name=name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Paper getOnePaper() { return onePaper; } public void setOnePaper(Paper onePaper) { this.onePaper = onePaper; } public void startExam() { System.out.println("欢迎"+this.name+"同学进入考试系统"); Map<Integer, Question> map_somequestion = // 试卷的试题键值对 onePaper.getMap_someQuestion(); Set<Integer> keyset = map_somequestion.keySet();// 题号集合 Iterator<Integer> it = keyset.iterator(); while (it.hasNext()) { Integer questionID = it.next(); Question question = map_somequestion.get(questionID);// 相应题号的问题 System.out.println(question.getDescribeMenu());// 输出问题描述 ArrayList<String> al = question.getArrayList_selectItem(); for (String str : al) { System.out.print(str + "/t");// 输出问题选项 } String student_answer;// 从控制台的学生输入 student_answer = InputUtil.getString(); student_answer=student_answer.toUpperCase();//将输入的字符串转大写 onePaper.setAnswerSheet(questionID, student_answer); } } public void getScore() { int countScore = 0; Map<Integer, Question> question_KeyValue = // 试题键值对 this.onePaper.getMap_someQuestion(); Map<Integer, String> answersheet_KeyValue = // 答卷键值对 this.onePaper.getAnswersheet().getMap_answersheet(); Set<Integer> questionKey = question_KeyValue.keySet();// 题号集合 Iterator<Integer> it = questionKey.iterator(); while (it.hasNext()) { Integer questionID = it.next();// 循环依次得到题号 String correct_answer = question_KeyValue.get(questionID)// 得到试卷中的正确答案 .getCorrectAnswer(); String student_answer = answersheet_KeyValue.get(questionID);// 学生回答的答案 if (correct_answer.equals(student_answer)) { ++countScore; } } System.out.println(this.name + "您的得分为:" + countScore); } }