大二时做的java课设,代码能力不是很行,给需要做课设的同学一个参考
题目如下
“单项选择题标准化考试系统设计”
1、问题描述
设计一个单项选择题标准化考试系统,该系统要求能自动组卷和评分。
2、功能要求
(1)用数据库保存试题。(每个试题包括题干、4个备选答案、标准答案)。
(2)试题录入:可随时增加试题到试题库中。
(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)。
(4)答题:用户可实现输入自己的答案。
(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
(6)退出。
该项目连接并使用mysql数据库保存试题,项目结构比较简单,当时也没有发现很严重的bug
废话不多说,代码如下
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
try {
// 注册数据库的驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 通过DriverManger获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shitiku", "root", "123456");
while (true) {
Scanner scan = new Scanner(System.in);
System.out.println("============考试系统菜单============");
System.out.println("1.题库管理");
System.out.println("2.答题判分");
System.out.println("3.退出系统");
System.out.print("请选择您要进行操作的编号:");
int choice = scan.nextInt();
switch (choice) {
case 1:
questionManage(conn);
break;
case 2:
answertest(conn);
break;
case 3:
System.out.println("感谢使用,再见!");
conn.close();
System.exit(0);
default:
System.out.println("无效操作,请重新选择");
}
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
// 题库管理
private static void questionManage(Connection conn) {
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("============题库管理============");
System.out.println("1.查询题库");
System.out.println("2.添加试题");
System.out.println("3.删除试题");
System.out.println("4.返回上一级菜单");
System.out.print("请选择您要进行操作的编号:");
int choice = scan.nextInt();
switch (choice) {
case 1:
selectQuestion(conn);
break;
case 2:
addQuestion(conn);
break;
case 3:
selectQuestion(conn);
deleteQuestion(conn);
break;
case 4:
return;
default:
System.out.println("无效操作,请重新输入");
break;
}
}
}
// 查询当前题目数量并返回题目数
private static int findmax(Connection conn) {
int number = 0;
try {
String maxQNoSql = "SELECT COALESCE(MAX(q_no), 0) AS max_q_no FROM shitiku.shitibiao";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(maxQNoSql)) {
if (rs.next()) {
number = rs.getInt("max_q_no");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return number;
}
// 查询试题
private static void selectQuestion(Connection conn) {
System.out.println("题库当前共有" + findmax(conn) + "道题目");
try {
// 通过Connection对象获取Statement对象
Statement sta = conn.createStatement();
// 通过Statement对象执行sql语句
ResultSet rs = sta.executeQuery("select * from shitiku.shitibiao");
while (rs.next()) {
int q_no = rs.getInt("q_no");
String q_name = rs.getString("q_name");
String q_a = rs.getString("q_a");
String q_b = rs.getString("q_b");
String q_c = rs.getString("q_c");
String q_d = rs.getString("q_d");
String q_answer = rs.getString("q_answer");
System.out.println("题目" + q_no + " " + q_name);
System.out.println(" a. " + q_a);
System.out.println(" b. " + q_b);
System.out.println(" c. " + q_c);
System.out.println(" d. " + q_d);
System.out.println("正确答案: " + q_answer);
}
rs.close();
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 添加试题
private static void addQuestion(Connection conn) {
Scanner scan = new Scanner(System.in);
// 获取下一个可用的 q_no
int number = findmax(conn) + 1;
try {
// 收集用户输入
System.out.println("请输入题目 " + number + ":");
String name = scan.nextLine();
System.out.println("请输入a选项:");
String a = scan.nextLine();
System.out.println("请输入b选项:");
String b = scan.nextLine();
System.out.println("请输入c选项:");
String c = scan.nextLine();
System.out.println("请输入d选项:");
String d = scan.nextLine();
System.out.println("请输入答案:");
String answer = scan.nextLine();
// 构建SQL语句并执行插入操作
String insertSql = "INSERT INTO shitiku.shitibiao (q_no, q_name, q_a, q_b, q_c, q_d, q_answer) VALUES ('"
+ number + "', '"
+ name + "', '"
+ a + "', '"
+ b + "', '"
+ c + "', '"
+ d + "', '"
+ answer + "')";
try (Statement stmt = conn.createStatement()) {
int affectedRows = stmt.executeUpdate(insertSql);
if (affectedRows > 0) {
System.out.println("试题添加成功!");
} else {
System.out.println("试题添加失败!");
}
}
} catch (SQLException e) {
e.printStackTrace();
System.err.println("添加题目时发生错误:" + e.getMessage());
}
}
// 删除试题
private static void deleteQuestion(Connection conn) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入要删除的题号:");
int q_noToDelete = scan.nextInt();
// 使用事务确保数据一致性
try {
conn.setAutoCommit(false); // 开始事务
// Step 1: 删除指定题号的记录
String deleteSql = "DELETE FROM shitibiao WHERE q_no = " + q_noToDelete;
try (Statement stmtDelete = conn.createStatement()) {
int affectedRows = stmtDelete.executeUpdate(deleteSql);
if (affectedRows > 0) {
// Step 2: 更新后续题目的 q_no
String updateSql = "UPDATE shitibiao SET q_no = q_no - 1 WHERE q_no > " + q_noToDelete;
try (Statement stmtUpdate = conn.createStatement()) {
stmtUpdate.executeUpdate(updateSql);
}
conn.commit(); // 提交事务
System.out.println("成功删除题号为 " + q_noToDelete + " 的题目,并已更新后续题目的编号。");
} else {
conn.rollback(); // 回滚事务
System.out.println("未找到题号为 " + q_noToDelete + " 的题目,删除失败。");
}
} catch (SQLException e) {
conn.rollback(); // 发生异常时回滚事务
e.printStackTrace();
System.err.println("删除题目时发生错误:" + e.getMessage());
} finally {
conn.setAutoCommit(true); // 恢复默认提交模式
}
} catch (SQLException e) {
e.printStackTrace();
System.err.println("设置事务状态时发生错误:" + e.getMessage());
}
}
// 随机生成考试试卷
private static void gettest(Connection conn, int num) {
Random rand = new Random();
try {
Statement sta = conn.createStatement();
HashSet<question> set1 = new HashSet<question>();
while (true) {
int r = rand.nextInt(num) + 1;
ResultSet rs = sta.executeQuery("select * from shitibiao where q_no=" + r);
while (rs.next()) {
int q_no = rs.getInt("q_no");
String q_name = rs.getString("q_name");
String q_a = rs.getString("q_a");
String q_b = rs.getString("q_b");
String q_c = rs.getString("q_c");
String q_d = rs.getString("q_d");
String q_answer = rs.getString("q_answer");
question q = new question(q_name, q_a, q_b, q_c, q_d, q_answer);
set1.add(q);
}
rs.close();
if (set1.size() >= num) {
break;
}
}
System.out.println("============生成试卷============");
for (question q : set1) {
System.out.println(q);
System.out.println();
}
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 抽题答题并统分
private static void answertest(Connection conn) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入您的学号:");
String studentId = scan.next();
System.out.println("请输入试题数量");
int num = 0;
int maxNum = findmax(conn); // 获取题库的最大数量
System.out.println("题库中的最大题目数量为: " + maxNum);
while (true) {
System.out.print("请输入一个不超过 " + maxNum + " 的数字: ");
if (scan.hasNextInt()) {
num = scan.nextInt();
if (num <= maxNum && num > 0) { // 确保输入是一个有效的正整数且不超过最大值
break; // 输入有效,退出循环
} else {
System.out.println("输入的值超出了题库的最大数量 " + maxNum + " 或者不是一个有效的正整数,请重新输入。");
}
} else {
System.out.println("无效输入,请输入一个整数。");
scan.next(); // 清除无效输入
}
}
gettest(conn, num);
System.out.println("============开始答题============");
int score = 0;
try {
// 通过Connection对象获取Statement对象
Statement sta = conn.createStatement();
// 通过Statement对象执行sql语句
ResultSet rs = sta.executeQuery("select * from shitiku.shitibiao");
PrintStream out = new PrintStream(new FileOutputStream(studentId + ".txt"));
for (int i = 0; i < num && rs.next(); i++) {
int q_no = rs.getInt("q_no");
String q_name = rs.getString("q_name");
String q_a = rs.getString("q_a");
String q_b = rs.getString("q_b");
String q_c = rs.getString("q_c");
String q_d = rs.getString("q_d");
String q_answer = rs.getString("q_answer");
System.out.println(q_no + ". " + q_name);
System.out.println("a. " + q_a);
System.out.println("b. " + q_b);
System.out.println("c. " + q_c);
System.out.println("d. " + q_d);
System.out.print("\n请输入答案:");
String answer = scan.next();
if (answer.equals(q_answer)) {
System.out.println("回答正确!");
score++;
} else {
System.out.println("回答错误,正确答案为:" + q_answer);
}
// 输出答题结果到文件
out.println(q_no + ". " + q_name);
out.println("a. " + q_a);
out.println("b. " + q_b);
out.println("c. " + q_c);
out.println("d. " + q_d);
out.println("你的答案:" + answer + " 正确答案:" + q_answer);
}
System.out.println("该试卷的总分为: " + num + ", " + "您的得分为" + score);
out.print("该试卷的总分为: " + num + ", " + "您的得分为" + score);
out.close();
rs.close();
sta.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
// 问题类
class question {
String name;
String a;
String b;
String c;
String d;
String answer;
public question(String name, String a, String b, String c, String d, String answer) {
this.name = name;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.answer = answer;
}
// 重写描述状态的toString方法
@Override
public String toString() {
return name + "\n a:" + a + "\n b:" + b + "\n c:" + c + "\n d:" + d;
}
}
sql语句如下
CREATE DATABASE shitiku;
USE shitiku;
CREATE TABLE shitibiao (
q_no INT PRIMARY KEY,
q_name TEXT NOT NULL,
q_a TEXT NOT NULL,
q_b TEXT NOT NULL,
q_c TEXT NOT NULL,
q_d TEXT NOT NULL,
q_answer CHAR(1) NOT NULL CHECK (q_answer IN ('A', 'B', 'C', 'D'))
);
另一个javaswing的版本,ui界面还没有调试完全
import javax.swing.*;
import java.awt.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.HashSet;
import java.util.Random;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class TestSystemSwing {
private Connection conn;
// 定义Question类
static class Question {
private int q_no;
private String q_name;
private String q_a;
private String q_b;
private String q_c;
private String q_d;
private String q_answer;
public Question(int q_no, String q_name, String q_a, String q_b, String q_c, String q_d, String q_answer) {
this.q_no = q_no;
this.q_name = q_name;
this.q_a = q_a;
this.q_b = q_b;
this.q_c = q_c;
this.q_d = q_d;
this.q_answer = q_answer;
}
public int getQ_no() {
return q_no;
}
public String getQ_name() {
return q_name;
}
public String getQ_a() {
return q_a;
}
public String getQ_b() {
return q_b;
}
public String getQ_c() {
return q_c;
}
public String getQ_d() {
return q_d;
}
public String getQ_answer() {
return q_answer;
}
@Override
public String toString() {
return q_no + ". " + q_name + "\na. " + q_a + "\nb. " + q_b + "\nc. " + q_c + "\nd. " + q_d + "\n正确答案:" + q_answer;
}
}
// 连接并加载数据库数据
public TestSystemSwing() {
try {
// 注册数据库驱动并获取连接
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shitiku", "root", "123456");
// 初始化界面
initUI();
} catch (ClassNotFoundException | SQLException e) {
JOptionPane.showMessageDialog(null, "初始化失败:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
System.exit(1); // 如果初始化失败,直接退出程序
}
}
// 开始菜单界面
private void initUI() {
JFrame frame = new JFrame("考试系统");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLayout(new GridLayout(4, 1, 10, 10));
JLabel titleLabel = new JLabel("考试系统菜单", JLabel.CENTER);
titleLabel.setFont(new Font("Arial", Font.BOLD, 20));
JButton manageQuestionsButton = new JButton("题库管理");
JButton answerTestButton = new JButton("答题判分");
JButton exitButton = new JButton("退出系统");
// 添加按钮监听器
manageQuestionsButton.addActionListener(e -> questionManage());
answerTestButton.addActionListener(e -> getTestAndAnswer());
exitButton.addActionListener(e -> closeApplication());
// 添加组件到窗口
frame.add(titleLabel);
frame.add(manageQuestionsButton);
frame.add(answerTestButton);
frame.add(exitButton);
frame.setVisible(true);
}
// 题库管理界面
private void questionManage() {
JFrame manageFrame = new JFrame("题库管理");
manageFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
manageFrame.setSize(400, 300);
manageFrame.setLayout(new GridLayout(5, 1, 10, 10));
JLabel titleLabel = new JLabel("题库管理菜单", JLabel.CENTER);
titleLabel.setFont(new Font("Arial", Font.BOLD, 20));
JButton viewQuestionsButton = new JButton("查询题库");
JButton addQuestionButton = new JButton("添加试题");
JButton deleteQuestionButton = new JButton("删除试题");
JButton backButton = new JButton("返回");
// 添加监听器
viewQuestionsButton.addActionListener(e -> selectQuestion(manageFrame));
addQuestionButton.addActionListener(e -> addQuestion());
deleteQuestionButton.addActionListener(e -> deleteQuestion());
backButton.addActionListener(e -> manageFrame.dispose());
// 添加组件到窗口
manageFrame.add(titleLabel);
manageFrame.add(viewQuestionsButton);
manageFrame.add(addQuestionButton);
manageFrame.add(deleteQuestionButton);
manageFrame.add(backButton);
manageFrame.setVisible(true);
}
// 关闭程序
private void closeApplication() {
try {
if (conn != null && !conn.isClosed()) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "感谢使用,再见!");
System.exit(0);
}
// 查询题库
private void selectQuestion(JFrame parent) {
StringBuilder sb = new StringBuilder("题库内容如下:\n");
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM shitiku.shitibiao")) {
while (rs.next()) {
sb.append("ID: ").append(rs.getInt("q_no"))
.append(", Question: ").append(rs.getString("q_name"))
.append("\na: ").append(rs.getString("q_a"))
.append("\nb: ").append(rs.getString("q_b"))
.append("\nc: ").append(rs.getString("q_c"))
.append("\nd: ").append(rs.getString("q_d"))
.append("\nAnswer: ").append(rs.getString("q_answer")).append("\n\n");
}
JTextArea textArea = new JTextArea(sb.toString());
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
JOptionPane.showMessageDialog(parent, scrollPane, "题库信息", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(parent, "查询题库失败:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
// 添加试题
private void addQuestion() {
String name = JOptionPane.showInputDialog(null, "请输入问题文本:");
String a = JOptionPane.showInputDialog(null, "请输入选项a:");
String b = JOptionPane.showInputDialog(null, "请输入选项b:");
String c = JOptionPane.showInputDialog(null, "请输入选项c:");
String d = JOptionPane.showInputDialog(null, "请输入选项d:");
String answer = JOptionPane.showInputDialog(null, "请输入正确答案(a/b/c/d):");
if (name != null && !name.trim().isEmpty() && a != null && !a.trim().isEmpty() && b != null && !b.trim().isEmpty()
&& c != null && !c.trim().isEmpty() && d != null && !d.trim().isEmpty() && answer != null && !answer.trim().isEmpty()) {
try (Statement stmt = conn.createStatement()) {
// 自动获取题号
int nextId = findMax() + 1;
String sql = "INSERT INTO shitibiao (q_no, q_name, q_a, q_b, q_c, q_d, q_answer) VALUES ('"
+ nextId + "', '"
+ name + "', '"
+ a + "', '"
+ b + "', '"
+ c + "', '"
+ d + "', '"
+ answer + "')";
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "试题添加成功!");
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "试题添加失败:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null, "所有字段都不能为空!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
// 删除试题
private void deleteQuestion() {
String idStr = JOptionPane.showInputDialog(null, "请输入要删除的试题ID:");
if (idStr == null || idStr.trim().isEmpty()) {
return; // 用户取消输入或输入为空时直接返回
}
int q_noToDelete;
try {
q_noToDelete = Integer.parseInt(idStr);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "请输入有效的数字!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
// 使用事务确保数据一致性
try {
conn.setAutoCommit(false); // 开始事务
// Step 1: 删除指定题号的记录
String deleteSql = "DELETE FROM shitibiao WHERE q_no = " + q_noToDelete;
try (Statement stmtDelete = conn.createStatement()) {
int affectedRows = stmtDelete.executeUpdate(deleteSql);
if (affectedRows > 0) {
// Step 2: 重新排序所有题目的 q_no
// 获取所有试题,并按照原始顺序排列
try (Statement stmtSelect = conn.createStatement();
ResultSet rs = stmtSelect.executeQuery("SELECT * FROM shitiku.shitibiao ORDER BY q_no")) {
int newId = 1;
while (rs.next()) {
int currentId = rs.getInt("q_no");
if (currentId != newId) {
// 更新当前试题的q_no为新的序列号
String updateSql = "UPDATE shitibiao SET q_no = " + newId + " WHERE q_no = " + currentId;
try (Statement stmtUpdate = conn.createStatement()) {
stmtUpdate.executeUpdate(updateSql);
}
}
newId++;
}
}
conn.commit(); // 提交事务
JOptionPane.showMessageDialog(null, "成功删除题号为 " + q_noToDelete + " 的题目,并已更新所有题目的编号为连续序列。", "成功", JOptionPane.INFORMATION_MESSAGE);
} else {
conn.rollback(); // 回滚事务
JOptionPane.showMessageDialog(null, "未找到题号为 " + q_noToDelete + " 的题目,删除失败。", "警告", JOptionPane.WARNING_MESSAGE);
}
} catch (SQLException e) {
conn.rollback(); // 发生异常时回滚事务
JOptionPane.showMessageDialog(null, "删除题目时发生错误:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
} finally {
conn.setAutoCommit(true); // 恢复默认提交模式
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "设置事务状态时发生错误:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void getTestAndAnswer() {
// 获取学号
String studentId = JOptionPane.showInputDialog(null, "请输入您的学号:");
if (studentId == null || studentId.trim().isEmpty()) {
JOptionPane.showMessageDialog(null, "学号不能为空,请重新输入。", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
// 获取题库的最大题目数量
int maxNum = findMax();
if (maxNum <= 0) {
JOptionPane.showMessageDialog(null, "题库中没有可用的题目。", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
// 获取试题数量
String numStr = JOptionPane.showInputDialog(null, "请输入试题数量(不超过当前题库最大数量" + maxNum + "题):");
if (numStr == null || numStr.trim().isEmpty()) {
return; // 用户取消输入或输入为空时直接返回
}
int num;
try {
num = Integer.parseInt(numStr);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "请输入有效的数字!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
if (num <= 0 || num > maxNum) {
JOptionPane.showMessageDialog(null, "输入的值必须是1到" + maxNum + "之间的整数,请重新输入。", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
// 生成随机数抽取试题
Random rand = new Random();
HashSet<Integer> selectedIds = new HashSet<>();
ArrayList<Question> questionsList = new ArrayList<>();
try (Statement stmt = conn.createStatement()) {
while (selectedIds.size() < num) {
int r = rand.nextInt(maxNum) + 1;
if (selectedIds.add(r)) {
ResultSet rs = stmt.executeQuery("SELECT * FROM shitibiao WHERE q_no=" + r);
if (rs.next()) {
Question q = new Question(
rs.getInt("q_no"),
rs.getString("q_name"),
rs.getString("q_a"),
rs.getString("q_b"),
rs.getString("q_c"),
rs.getString("q_d"),
rs.getString("q_answer")
);
questionsList.add(q);
}
rs.close();
}
}
// 试题系统初始化后开始答题
int score = 0;
for (Question q : questionsList) {
String answer = JOptionPane.showInputDialog(null,
q.getQ_no() + ". " + q.getQ_name() + "\n" +
"a. " + q.getQ_a() + "\n" +
"b. " + q.getQ_b() + "\n" +
"c. " + q.getQ_c() + "\n" +
"d. " + q.getQ_d() + "\n" +
"请输入答案:");
if (answer != null && answer.equalsIgnoreCase(q.getQ_answer())) {
JOptionPane.showMessageDialog(null, "回答正确!");
score++;
} else {
JOptionPane.showMessageDialog(null, "回答错误,正确答案为:" + q.getQ_answer());
}
}
// 弹出得分情况
JOptionPane.showMessageDialog(null, "该试卷的总分为: " + num + ", 您的得分为:" + score);
// 将结果写入文件
try (PrintStream out = new PrintStream(new FileOutputStream(studentId + ".txt"))) {
out.println("学生学号: " + studentId);
out.println("该试卷的总分为: " + num + ", 您的得分为:" + score);
for (Question q : questionsList) {
out.println(q);
}
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "创建文件时发生错误:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "操作数据库时发生错误:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
// 获取当前试题的最大序号
private int findMax() {
int maxNum = 0;
try (Statement stmt = conn.createStatement()) {
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM shitiku.shitibiao");
if (rs.next()) {
maxNum = rs.getInt(1);
}
rs.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "获取题库最大题目数量时发生错误:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
return maxNum;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TestSystemSwing::new);
}
}