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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录