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