Java 代码实现:带答案输入框、提交按钮和计时功能的在线测试
这段代码实现了一个简单的在线测试程序,用户可以在输入框中输入答案并提交,程序会自动计算正确率和做题时间。
item1.setOnAction(e -> {
int range = 10; // 设置范围为10以内
int count = 20; // 生成20个题目
List<String> questions = Add.generateQuestions(range, count);
// 创建一个VBox作为容器
VBox questionBox = new VBox();
// 遍历题目列表,创建并添加Label和TextField到容器中
List<TextField> answerFields = new ArrayList<>();
for (String question : questions) {
Label label = new Label(question);
TextField answerField = new TextField();
answerFields.add(answerField);
HBox hbox = new HBox(label, answerField);
hbox.setSpacing(10);
questionBox.getChildren().add(hbox);
}
// 创建提交按钮
Button submitButton = new Button('提交');
submitButton.setOnAction(submitEvent -> {
int correctCount = 0;
for (int i = 0; i < questions.size(); i++) {
String answer = answerFields.get(i).getText();
String question = questions.get(i);
if (Add.isCorrectAnswer(question, answer)) {
correctCount++;
}
}
double accuracy = (correctCount * 1.0) / questions.size();
long timeElapsed = System.currentTimeMillis() - startTime;
// 显示正确率和做题时间
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle('结果');
alert.setHeaderText('正确率: ' + accuracy * 100 + '%');
alert.setContentText('做题时间: ' + timeElapsed + '毫秒');
alert.showAndWait();
});
// 创建一个VBox作为题目和提交按钮的容器
VBox mainBox = new VBox();
mainBox.getChildren().addAll(questionBox, submitButton);
mainBox.setSpacing(10);
// 创建一个ScrollPane,并将VBox作为其内容
ScrollPane scrollPane = new ScrollPane(mainBox);
// 创建一个新的Stage用于显示题目
Stage questionStage = new Stage();
questionStage.setTitle('题目');
Scene questionScene = new Scene(scrollPane, 400, 500);
questionStage.setScene(questionScene);
questionStage.show();
// 记录开始做题的时间
long startTime = System.currentTimeMillis();
});
代码中使用了以下技术:
- JavaFX: 用于创建用户界面。
- List: 用于存储题目和答案。
- Label: 用于显示题目。
- TextField: 用于输入答案。
- HBox: 用于横向排列题目和答案输入框。
- VBox: 用于纵向排列题目和提交按钮。
- ScrollPane: 用于滚动显示题目。
- Button: 用于提交答案。
- Alert: 用于显示正确率和做题时间。
代码实现的功能包括:
- 生成题目列表。
- 创建输入框供用户输入答案。
- 创建提交按钮用于提交答案。
- 计算正确率。
- 计算做题时间。
- 显示正确率和做题时间。
这段代码可以作为开发简单在线测试程序的参考。
原文地址: https://www.cveoy.top/t/topic/RiF 著作权归作者所有。请勿转载和采集!