目录
一、登录界面:
二、管理员界面:
三、学生考试界面:
面向小学低年级学生,随机生成两个整数的加减法算式要求学生解答。要求有用 户登录、注册等 GUI 界面,用户数据存入文件,体现面向对象编程思想。
功能 要求:
【管理员】可向题库中追加题目,确保算式的和或差没有超出 0~50 范围的加减 法,负数不允许;
【学生】 (1) 随机从题库中抽取出 10 道题,每题 10 分,程序结束时显示学生得分; (2) 对于每道题,学生输入正确答案得 10 分,否则不得分; (3) 总成绩 90 以上显示“SMART”,80-90 显示“GOOD”,70-80 显示“OK”, 60-70 显示“PASS”,60 以下“TRY AGAIN”。
提示:
开发工具:IntelliJ IDEA
数据库相关:MySQL数据库、DataGrip开发工具
还需要下载相关的c3p0、驱动等,使用javafx编写界面
一、登录界面:
(登录管理员的监听器代码)
//设置按钮监听器
field3.valueProperty().addListener((observable, oldValue, newValue) -> {
if ("管理员".equals(newValue)) {
// 显示警告
showWarning("提示", "您选择了管理员选项!");
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // 加载驱动程序
String dburl = "jdbc:mysql://localhost:3306/javafx";
String sql = "select * from login2"; // login表的全部数据
// 建立连接对象
Connection conn = DriverManager.getConnection(dburl, "root", "cya091201");
PreparedStatement stmt = conn.prepareStatement(sql);
//查询语句,返回类型为ResultSet,通过调用他的方法可以对查询结果的每行进行处理
ResultSet rst = stmt.executeQuery();
//将输入的账号与密码与数据库中的进行比较
ok.setOnAction(event -> {
String idname = field1.getText();
String password = field2.getText();
if (isValidLogin(idname, password,rst)) {
System.out.println("Login successful!");
teacher tea=new teacher();
tea.show();
primaryStage.close();
} else {
System.out.println("Invalid username or password!");
}
});
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});

二、管理员界面:
(部分代码)
Stage stage=new Stage();
StackPane stackPane=new StackPane();
Label label=new Label("请输入你要添加的题目:");
label.setFont(Font.font(null, FontWeight.BOLD,20));
stackPane.setAlignment(label, Pos.CENTER); // 将标签居中对齐
HBox hBox=new HBox(10);
HBox hBox1=new HBox(10);
hBox.setPadding(new Insets(10,10,10,10));
hBox1.setPadding(new Insets(10,10,10,10));
Label signlabel=new Label("算式");
Label reslabel=new Label("答案");
signlabel.setFont(Font.font(null, FontWeight.BOLD,15));
reslabel.setFont(Font.font(null, FontWeight.BOLD,15));
//TextField numfield=new TextField();
TextField signfield=new TextField();
TextField resfield=new TextField();
hBox.getChildren().addAll(signlabel,signfield);
hBox1.getChildren().addAll(reslabel,resfield);
VBox vBoxfield=new VBox(10);
vBoxfield.getChildren().addAll(hBox,hBox1);
Button ok=new Button("确定");
ok.setFont(new Font(15));

三、学生考试界面:
(部分代码)
//将数据题目显示到界面中,创建对象
TableView<User> tableView = new TableView<>();
//创建三个TableColumn对象,分别表示User对象的num、sign和res属性。0使用了泛型来指定列的数据类型和它们所属的User对象
TableColumn<User, Integer> numColumn = new TableColumn<>("num");
TableColumn<User, String> signColumn = new TableColumn<>("sign");
TableColumn<User, Integer> resColumn = new TableColumn<>("res");
//为每个TableColumn设置cellValueFactory,它决定了列中的单元格如何显示数据
numColumn.setCellValueFactory(new PropertyValueFactory<>("num"));
signColumn.setCellValueFactory(new PropertyValueFactory<>("sign"));
resColumn.setCellValueFactory(new PropertyValueFactory<>("res"));
tableView.getColumns().addAll(numColumn,signColumn,resColumn);
//随机10个题目
ObservableList<User> users = getDataFromDatabase();
//隐藏最后一列答案
resColumn.setVisible(false);
tableView.setItems(users);
VBox vBox = new VBox(tableView);
vBox.setMaxSize(600,500);



提示:需要源码请私信,但源码有偿



















