【java】数学运算考试系统

目录

一、登录界面:

二、管理员界面:

三、学生考试界面:


面向小学低年级学生,随机生成两个整数的加减法算式要求学生解答。要求有用 户登录、注册等 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);

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

  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值