实现考试系统根据题型权重出题Java代码
时间: 2024-04-30 14:19:01 浏览: 14
以下是一个简单的 Java 代码示例,根据题型权重实现出题系统:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
public class ExamSystem {
// 定义题型常量
private static final int SINGLE_CHOICE = 1;
private static final int MULTI_CHOICE = 2;
private static final int FILL_BLANK = 3;
private static final int ESSAY_QUESTION = 4;
// 定义题型对应的权重
private static final HashMap<Integer, Double> questionTypeWeight = new HashMap<Integer, Double>() {{
put(SINGLE_CHOICE, 0.3);
put(MULTI_CHOICE, 0.4);
put(FILL_BLANK, 0.2);
put(ESSAY_QUESTION, 0.1);
}};
// 定义题库
private static final ArrayList<String> singleChoiceQuestions = new ArrayList<String>() {{
add("单选题1");
add("单选题2");
add("单选题3");
add("单选题4");
add("单选题5");
}};
private static final ArrayList<String> multiChoiceQuestions = new ArrayList<String>() {{
add("多选题1");
add("多选题2");
add("多选题3");
add("多选题4");
add("多选题5");
}};
private static final ArrayList<String> fillBlankQuestions = new ArrayList<String>() {{
add("填空题1");
add("填空题2");
add("填空题3");
add("填空题4");
add("填空题5");
}};
private static final ArrayList<String> essayQuestions = new ArrayList<String>() {{
add("问答题1");
add("问答题2");
add("问答题3");
add("问答题4");
add("问答题5");
}};
public static void main(String[] args) {
// 计算题型权重之和
double totalWeight = 0;
for (double weight : questionTypeWeight.values()) {
totalWeight += weight;
}
// 根据权重随机选题
Random random = new Random();
ArrayList<String> selectedQuestions = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
double randomValue = random.nextDouble() * totalWeight;
double sumWeight = 0;
for (int questionType : questionTypeWeight.keySet()) {
sumWeight += questionTypeWeight.get(questionType);
if (randomValue <= sumWeight) {
String question = "";
switch (questionType) {
case SINGLE_CHOICE:
question = singleChoiceQuestions.get(random.nextInt(singleChoiceQuestions.size()));
break;
case MULTI_CHOICE:
question = multiChoiceQuestions.get(random.nextInt(multiChoiceQuestions.size()));
break;
case FILL_BLANK:
question = fillBlankQuestions.get(random.nextInt(fillBlankQuestions.size()));
break;
case ESSAY_QUESTION:
question = essayQuestions.get(random.nextInt(essayQuestions.size()));
break;
}
selectedQuestions.add(question);
break;
}
}
}
// 输出选中的题目
System.out.println("选中的题目:");
for (String question : selectedQuestions) {
System.out.println(question);
}
}
}
```
上述代码中,我们定义了题型常量和题型对应的权重,并将题目存储在对应的 ArrayList 中。然后,我们计算题型权重之和,并根据权重随机选题,最后输出选中的题目。你可以根据自己的需求修改题型常量和题目,以及相应的权重,以实现你自己的考试系统。