目录
一、登录界面:
二、管理员界面:
三、学生考试界面:
面向小学低年级学生,随机生成两个整数的加减法算式要求学生解答。要求有用 户登录、注册等 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);
提示:需要源码请私信,但源码有偿