【java】数学运算考试系统

news2024/11/25 3:56:53

目录

一、登录界面:

二、管理员界面:

三、学生考试界面:


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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1830154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows11子系统Ubuntu 22.04.4子安装图形化界面

1、windows11家庭版本设置 打开虚拟机安装许可 2、Microsoft Store下载安装ubuntu 我使用的是22.04.4 LTS版本 3、 打开ubuntu 命令窗口 1、打开win11的命令行&#xff0c;在下拉三角下标&#xff0c;打开&#xff0c;可以看到有Ubuntu 的选项&#xff0c;点击即可进入linux命…

【Android面试八股文】你说一说什么是双亲委托机制?为什么需要双亲委托机制?

一、双亲委托机制 1.1 双亲委托机制概述 双亲委托机制是指当一个类加载器收到一个类加载请求时, 该类加载器首先会把请求委派给父类加载器。 如果父类加载器还存在父类加载器,则会一直向上委派,直至最终交由顶层的启动类加载器完成类加载, 每个类加载器都是如此,只有在所…

RIP解决不连续子网问题

#交换设备 RIP解决不连续子网问题 一、不连续子网的概念 相同主网下的子网&#xff0c;被另一个主网分割&#xff0c;例如下面实验拓扑在某公司的网络整改项目中&#xff0c;原先R1 和RS 属于同一主网络 10.0.0.0/8&#xff0c;现被 R2、R3、R4 分离&#xff0c;整网采用了 …

Docker 安装 MySQL5.7 和 MySQL8

文章目录 安装 MySQL5.7拉取镜像前期准备启动容器 安装MySQL8.0拉取镜像查看镜像前期准备启动容器 安装 MySQL5.7 拉取镜像 docker pull mysql:5.7拉下来镜像后 执行 docker images 此时我们已经有这个镜像了。 前期准备 在根目录下创建 app &#xff0c; 在 app 目录下创建…

牛客周赛 Round 47 解题报告 | 珂学家

前言 题解 这真的是牛客周赛&#xff1f; 哭了 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的葫芦 签到题 但是写起来有点变扭&#xff0c;方法应该蛮多的 统计分组 有2组一组长度为2&#xff0c;一组长度为3 def check(arr):arr.sort()if arr[0] …

数据结构试题 20-21

真需要就死记吧 二叉树遍历-先序(非递归)【图解代码】_哔哩哔哩_bilibili 解释一下步骤&#xff1a; 一个循环为&#xff1a; 1.取节点 2.放右子树 3.放左子树 每次循环&#xff0c;都要从栈里取出一个节点 先放右子树&#xff0c;再放左子树 那这道题就是&#xff0c;先放1&am…

内网Docker镜像无法使用?Debian/Ubuntu离线安装Dokcer

离线安装Docker 卸载冲突的包 for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done先删除docker sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin d…

DSP28335:独立按键控制LED灯

做任何事情不可操之过急&#xff0c;虽然我们可能在之前的单片机学过相关的原理&#xff0c;但是一个新的单片机依然有他的学习的地方&#xff0c;之前我觉得很简单&#xff0c;就跳过这个学习&#xff0c;结果到后面就很浮躁&#xff0c;导致后面的内容与这一章相连接的时候&a…

调用第三方系统的签名设计与校验实例讲解与实践

在现代软件开发中&#xff0c;调用第三方系统API已经成为常见需求。为了保证数据传输的安全性和完整性&#xff0c;许多API采用了签名机制。本文将详细讲解如何设计与校验调用第三方系统的签名&#xff0c;以确保双方通信的安全和可靠。 #### 一、签名机制的意义 签名机制主要…

.gitignore文件忽略的内容不生效问题解决

文章目录 ①&#xff1a;现象②&#xff1a;原因③&#xff1a;解决 ①&#xff1a;现象 在已经提交过的git管理的项目中&#xff0c; 新增加一个.gitignore文件&#xff0c;文件内忽略内容不生效或者修改.gitignore文件之后&#xff0c;文件内新增的忽略内容不生效 ②&#…

Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统

灵越16P-7630系统包: 链接&#xff1a;https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码&#xff1a;jyqq 灵越16P-7640系统包: 链接&#xff1a;https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码&#xff1a;y9qj 戴尔原装WIN11系…

1.华为路由器-三层交换机-二层交换机组网连接

AR1配置GE 0/0/0接口IP [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0] [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei]iP route-static 192.168.0.0 16 1.1.1.2三层交换机配置如下 创建vlan [Huawei]vlan batch 10 20配置接口ip [Huawei]int g0/0/1 [Huawei…

【数据结构】排序(下)

个人主页~ 排序&#xff08;上&#xff09; 栈和队列 排序 二、常见排序的实现8、快速排序的优化9、非递归快速排序&#xff08;1&#xff09;基本思想&#xff08;2&#xff09;代码实现&#xff08;3&#xff09;时间复杂度&#xff08;4&#xff09;空间复杂度 10、归并排序…

第二篇: 掌握Docker的艺术:深入理解镜像、容器和仓库

掌握Docker的艺术&#xff1a;深入理解镜像、容器和仓库 1. 引言 1.1 简要介绍Docker的重要性 在当今快速发展的技术世界中&#xff0c;软件开发和部署的效率和可靠性是衡量成功的关键因素。Docker&#xff0c;作为一个开源的容器化平台&#xff0c;革新了软件的打包、分发和…

016基于SSM+Jsp的医院远程诊断系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

知识普及:什么是边缘计算(Edge Computing)?

边缘计算是一种分布式计算架构&#xff0c;它将数据处理、存储和服务功能移近数据产生的边缘位置&#xff0c;即接近数据源和用户的位置&#xff0c;而不是依赖中心化的数据中心或云计算平台。边缘计算的核心思想是在靠近终端设备的位置进行数据处理&#xff0c;以降低延迟、减…

如何看懂SparkUI?

Jobs页面 Stage页面 显示额外的指标和摘要指标&#xff1a; 摘要指标&#xff08;Summary Metrics&#xff09;统计了所有完成的任务的执行行为&#xff0c;包括执行时间、GC时间、输入输出信息等&#xff0c;并提供了最小值&#xff08;Min&#xff09;、第25百分位数&#xf…

Windows环境利用 OpenCV 中 CascadeClassifier 分类器识别人脸 c++

Windows环境中配置OpenCV 关于在Windows环境中配置opencv的说明&#xff0c;具体可以参考&#xff1a;VS2022 配置OpenCV开发环境详细教程。 CascadeClassifier 分类器 CascadeClassifier 是 OpenCV 库中的一个类&#xff0c;它用于实现一种快速的物体检测算法&#xff0c;称…

Java面向对象-final关键字

Java面向对象-final关键字 一、final1、修饰变量2、修饰方法3、修饰类4、案例 一、final 可以修饰变量、方法、类 1、修饰变量 final修饰一个变量&#xff0c;变量的值不可以改变&#xff0c;这个变量就变成一个字符常量&#xff0c;约定俗称的规定&#xff1a;名字大写。 f…

基于ChatGPT的大型语言模型试用心得

近年来&#xff0c;ChatGPT这样的大型语言模型&#xff0c;它如同一颗冉冉升起的新星&#xff0c;迅速在商业、教育、娱乐等多个领域照亮了创新的天空&#xff0c;极大地革新了我们的工作与日常生活。 最近我发现一些国内用户也能自由访问的中文ChatGPT APP。这个平台不仅提供…