在线考试系统 - 学生考试页面
import java.sql.*;
public class StudentExamPage {
private static final String DB_URL = 'jdbc:mysql://localhost/exam';
private static final String DB_USER = 'root';
private static final String DB_PASSWORD = '123456';
public static void studentStartExam() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 连接数据库
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
// 从数据库读取题目
String sql = 'SELECT * FROM questions';
rs = stmt.executeQuery(sql);
// 逐题显示给学生答题
while (rs.next()) {
int questionId = rs.getInt('id');
String questionContent = rs.getString('content');
String optionA = rs.getString('option_a');
String optionB = rs.getString('option_b');
String optionC = rs.getString('option_c');
String optionD = rs.getString('option_d');
System.out.println('Question ' + questionId + ': ' + questionContent);
System.out.println('A. ' + optionA);
System.out.println('B. ' + optionB);
System.out.println('C. ' + optionC);
System.out.println('D. ' + optionD);
// 学生答题
System.out.print('Your answer: ');
String studentAnswer = System.console().readLine();
// 保存学生答案到数据库
sql = 'INSERT INTO student_answers (question_id, student_answer) VALUES (?, ?)';
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, questionId);
pstmt.setString(2, studentAnswer);
pstmt.executeUpdate();
// 询问是否继续答题
System.out.print('继续答题?(y/n): ');
String continueAnswer = System.console().readLine();
if (!continueAnswer.equalsIgnoreCase('y')) {
break;
}
}
// 计算得分
sql = 'SELECT COUNT(*) AS correct_count FROM questions q JOIN student_answers a ON q.id = a.question_id WHERE q.answer = a.student_answer';
rs = stmt.executeQuery(sql);
rs.next();
int correctCount = rs.getInt('correct_count');
int totalScore = correctCount * 10;
// 保存得分到数据库
sql = 'INSERT INTO student_scores (score) VALUES (?)';
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, totalScore);
pstmt.executeUpdate();
System.out.println('Your score is ' + totalScore);
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/f0xk 著作权归作者所有。请勿转载和采集!