1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
| public class AnswerQuestion { private String name; private String key; public AnswerQuestion(String name, String key) { this.name = name; this.key = key; }
public String getName() { return name; }
public String getKey() { return key; } }
public class ChoiceQuestion { private String name; private Map<String, String> option; private String key;
public ChoiceQuestion(String name, Map<String, String> option, String key) { this.name = name; this.option = option; this.key = key; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Map<String, String> getOption() { return option; }
public void setOption(Map<String, String> option) { this.option = option; }
public String getKey() { return key; }
public void setKey(String key) { this.key = key; } } public class QuestionBank implements Cloneable {
private String candidate; private String number;
private ArrayList<ChoiceQuestion> choiceQuestionList = new ArrayList<ChoiceQuestion>(); private ArrayList<AnswerQuestion> answerQuestionList = new ArrayList<AnswerQuestion>();
public QuestionBank append(ChoiceQuestion choiceQuestion) { choiceQuestionList.add(choiceQuestion); return this; }
public QuestionBank append(AnswerQuestion answerQuestion) { answerQuestionList.add(answerQuestion); return this; }
@Override public Object clone() throws CloneNotSupportedException { QuestionBank questionBank = (QuestionBank) super.clone(); questionBank.choiceQuestionList = (ArrayList<ChoiceQuestion>) choiceQuestionList.clone(); questionBank.answerQuestionList = (ArrayList<AnswerQuestion>) answerQuestionList.clone();
Collections.shuffle(questionBank.choiceQuestionList); Collections.shuffle(questionBank.answerQuestionList); ArrayList<ChoiceQuestion> choiceQuestionList = questionBank.choiceQuestionList; for (ChoiceQuestion question : choiceQuestionList) { Topic random = random(question.getOption(), question.getKey()); question.setOption(random.getOption()); question.setKey(random.getKey()); } return questionBank; }
public void setCandidate(String candidate) { this.candidate = candidate; }
public void setNumber(String number) { this.number = number; }
@Override public String toString() {
StringBuilder detail = new StringBuilder("考生:" + candidate + "\r\n" + "考号:" + number + "\r\n" + "--------------------------------------------\r\n" + "一、选择题" + "\r\n\n");
for (int idx = 0; idx < choiceQuestionList.size(); idx++) { detail.append("第").append(idx + 1).append("题:").append(choiceQuestionList.get(idx).getName()).append("\r\n"); Map<String, String> option = choiceQuestionList.get(idx).getOption(); for (String key : option.keySet()) { detail.append(key).append(":").append(option.get(key)).append("\r\n");; } detail.append("答案:").append(choiceQuestionList.get(idx).getKey()).append("\r\n\n"); }
detail.append("二、问答题" + "\r\n\n");
for (int idx = 0; idx < answerQuestionList.size(); idx++) { detail.append("第").append(idx + 1).append("题:").append(answerQuestionList.get(idx).getName()).append("\r\n"); detail.append("答案:").append(answerQuestionList.get(idx).getKey()).append("\r\n\n"); }
return detail.toString(); }
public Topic random(Map<String, String> option, String key) { Set<String> keySet = option.keySet(); ArrayList<String> keyList = new ArrayList<String>(keySet); Collections.shuffle(keyList); HashMap<String, String> optionNew = new HashMap<String, String>(); int idx = 0; String keyNew = ""; for (String next : keySet) { String randomKey = keyList.get(idx++); if (key.equals(next)) { keyNew = randomKey; } optionNew.put(randomKey, option.get(next)); } return new Topic(optionNew, keyNew); }
public class Topic{ private Map<String, String> option; private String key;
public Topic(Map<String, String> option, String key) { this.option = option; this.key = key; }
public Map<String, String> getOption() { return option; }
public String getKey() { return key; } }
} public class QuestionBankController { private QuestionBank questionBank = new QuestionBank();
public QuestionBankController() {
Map<String, String> map01 = new HashMap<String, String>(); map01.put("A", "JAVA2 EE"); map01.put("B", "JAVA2 Card"); map01.put("C", "JAVA2 ME"); map01.put("D", "JAVA2 HE"); map01.put("E", "JAVA2 SE");
Map<String, String> map02 = new HashMap<String, String>(); map02.put("A", "JAVA程序的main方法必须写在类里面"); map02.put("B", "JAVA程序中可以有多个main方法"); map02.put("C", "JAVA程序中类名必须与文件名一样"); map02.put("D", "JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来");
Map<String, String> map03 = new HashMap<String, String>(); map03.put("A", "变量由字母、下划线、数字、$符号随意组成;"); map03.put("B", "变量不能以数字作为开头;"); map03.put("C", "A和a在java中是同一个变量;"); map03.put("D", "不同类型的变量,可以起相同的名字;");
Map<String, String> map04 = new HashMap<String, String>(); map04.put("A", "STRING"); map04.put("B", "x3x;"); map04.put("C", "void"); map04.put("D", "de$f");
Map<String, String> map05 = new HashMap<String, String>(); map05.put("A", "31"); map05.put("B", "0"); map05.put("C", "1"); map05.put("D", "2");
questionBank.append(new ChoiceQuestion("JAVA所定义的版本中不包括", map01, "D")) .append(new ChoiceQuestion("下列说法正确的是", map02, "A")) .append(new ChoiceQuestion("变量命名规范说法正确的是", map03, "B")) .append(new ChoiceQuestion("以下()不是合法的标识符",map04, "C")) .append(new ChoiceQuestion("表达式(11+3*8)/4%3的值是", map05, "D")) .append(new AnswerQuestion("小红马和小黑马生的小马几条腿", "4条腿")) .append(new AnswerQuestion("铁棒打头疼还是木棒打头疼", "头最疼")) .append(new AnswerQuestion("什么床不能睡觉", "牙床")) .append(new AnswerQuestion("为什么好马不吃回头草", "后面的草没了")); }
public String createPaper(String candidate, String number) throws CloneNotSupportedException { QuestionBank questionBankClone = (QuestionBank) questionBank.clone(); questionBankClone.setCandidate(candidate); questionBankClone.setNumber(number); return questionBankClone.toString(); }
}
|