当前位置: 首页 > news >正文

Java实验4

实验内容

考试题

要求在一个界面内至少显示5道选择题,每道题4个选项。题目从数据库读取。表结构自定义。

另有2个命令按钮,分别为“重新答题”(全部选项及正确答题数清空)和“提交”(计算),在按钮下方的标签内显示最终的正确的题目数(自动和数据库中的标准答案比对)。

界面大致布局如下:

实验环境

eclipse+MySQL8.0版本+MySQL的JDBC驱动

实验结果

如果运行之后显示空白窗口,首先检查数据库等是否正确,如果全部正确可以点击右上角最大化,刷新之后即可正常显示(不知道为什么会这样)

数据库中的内容

所有列均为varchar类型

源代码

Answer.java

package lab4;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Answer extends JFrame
{public static void main(String[] args) throws SQLException{int i=0;String[] strla = new String[5];//存储5个题目String[] strbu = new String[20];//存储20个单选选项内容String[] str = new String[5];//存储数据库中的答案String[] str1 = new String[5];//存储选择的选项JFrame f = new JFrame("Test");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setLayout(new GridLayout(12,1));f.setSize(1000,600);f.setVisible(true);JPanel P0 = new JPanel();P0.setLayout(new GridLayout());//面板分区JPanel P1 = new JPanel();P1.setLayout(new GridLayout(1,4,5,5));JPanel P2 = new JPanel();P2.setLayout(new GridLayout());JPanel P3 = new JPanel();P3.setLayout(new GridLayout(1,4,5,5));JPanel P4 = new JPanel();P4.setLayout(new GridLayout());JPanel P5 = new JPanel();P5.setLayout(new GridLayout(1,4,5,5));JPanel P6 = new JPanel();P6.setLayout(new GridLayout());JPanel P7 = new JPanel();P7.setLayout(new GridLayout(1,4,5,5));JPanel P8 = new JPanel();P8.setLayout(new GridLayout());JPanel P9 = new JPanel();P9.setLayout(new GridLayout(1,4,5,5));JPanel P10 = new JPanel();P10.setLayout(null);JPanel P11 = new JPanel();P11.setLayout(new GridLayout());Connection con = null;JLabel[] la = new JLabel[5];//题目显示la[0]=new JLabel();la[1]=new JLabel();la[2]=new JLabel();la[3]=new JLabel();la[4]=new JLabel();JRadioButton[] bu = new JRadioButton[20];//单选显示for(i=0;i<20;i++)bu[i]=new JRadioButton();try{Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/?user=root";//换成自己的mysql用户名String username = "root";	//换成自己的mysql用户名String password = "123456";	//换成自己的mysql密码con = DriverManager.getConnection(url, username, password);ResultSet re = null;PreparedStatement pre =null;String sql = "select * from stusys.ans";//换成自己的数据库名.表名pre = con.prepareStatement(sql);re = pre.executeQuery();i=0;while(re.next()){strla[i]=re.getString("question");strbu[4*i]=re.getString("A");strbu[4*i+1]=re.getString("B");strbu[4*i+2]=re.getString("C");strbu[4*i+3]=re.getString("D");str[i]=re.getString("answer");i++;}pre.close();re.close();}catch(Exception e){e.printStackTrace();System.out.println("操纵数据库时发生未知错误");}finally{if(con!=null)con.close();}for(i=0;i<5;i++)//给每个题设置内容和选项内容{la[i].setText("题目"+(i+1)+":"+strla[i]);la[i].setFont(new Font("Dialog",1,20));bu[4*i].setText("A."+strbu[4*i]);bu[4*i].setFont(new Font("Dialog",1,20));bu[4*i+1].setText("B."+strbu[4*i+1]);bu[4*i+1].setFont(new Font("Dialog",1,20));bu[4*i+2].setText("C."+strbu[4*i+2]);bu[4*i+2].setFont(new Font("Dialog",1,20));bu[4*i+3].setText("D."+strbu[4*i+3]);bu[4*i+3].setFont(new Font("Dialog",1,20));}ButtonGroup group1 = new ButtonGroup();//每一题的四个选项为一组for(i=0;i<4;i++)group1.add(bu[i]);ButtonGroup group2 = new ButtonGroup();for(i=4;i<8;i++)group2.add(bu[i]);ButtonGroup group3 = new ButtonGroup();for(i=8;i<12;i++)group3.add(bu[i]);ButtonGroup group4 = new ButtonGroup();for(i=12;i<16;i++)group4.add(bu[i]);ButtonGroup group5 = new ButtonGroup();for(i=16;i<20;i++)group5.add(bu[i]);JButton b1 = new JButton("重新答题");//重新答题按钮b1.setFont(new Font("Dialog",1,20));b1.setBounds(250, 0, 200, 40);JButton b2 = new JButton("提交");//提交按钮b2.setFont(new Font("Dialog",1,20));b2.setBounds(550, 0, 200, 40);JLabel show = new JLabel("答对的题目数量是:0");show.setFont(new Font("Dialog",1,20));P0.add(la[0]);//添加题目和选项for(i=0;i<4;i++)P1.add(bu[i]);P2.add(la[1]);for(i=4;i<8;i++)P3.add(bu[i]);P4.add(la[2]);for(i=8;i<12;i++)P5.add(bu[i]);P6.add(la[3]);for(i=12;i<16;i++)P7.add(bu[i]);P8.add(la[4]);for(i=16;i<20;i++)P9.add(bu[i]);P10.add(b1);P10.add(b2);//添加重新答题和提交按钮P11.add(show);f.add(P0);f.add(P1);//将各个面板添加到顶级容器中f.add(P2);f.add(P3);f.add(P4);f.add(P5);f.add(P6);f.add(P7);f.add(P8);f.add(P9);f.add(P10);f.add(P11);MouseListener lisb1 = new MouseListener()//重新答题按钮功能实现{@Overridepublic void mouseClicked(MouseEvent e){group1.clearSelection();group2.clearSelection();group3.clearSelection();group4.clearSelection();group5.clearSelection();for(int i=0;i<5;i++)str1[i]=null;int ans=0;String Ans = String.valueOf(ans);show.setText("答对的题目数量是:"+Ans);show.setFont(new Font("Dialog",1,20));}@Overridepublic void mousePressed(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseReleased(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseEntered(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseExited(MouseEvent e) {// TODO 自动生成的方法存根}};MouseListener lisb2 = new MouseListener()//提交按钮功能实现{@Overridepublic void mouseClicked(MouseEvent e){int i=0,j=0,ans=0;for(i=0;i<5;i++){if(bu[4*i].isSelected()){str1[j]="A";j++;}if(bu[4*i+1].isSelected()){str1[j]="B";j++;}if(bu[4*i+2].isSelected()){str1[j]="C";j++;}if(bu[4*i+3].isSelected()){str1[j]="D";j++;}}for(i=0;i<5;i++){if(str[i].equals(str1[i]))ans++;}String Ans = String.valueOf(ans);show.setText("答对的题目数量是:"+Ans);show.setFont(new Font("Dialog",1,20));}@Overridepublic void mousePressed(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseReleased(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseEntered(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseExited(MouseEvent e) {// TODO 自动生成的方法存根}};b1.addMouseListener(lisb1);b2.addMouseListener(lisb2);}
}

感谢大家的观看

相关文章:

Java实验4

实验内容 考试题 要求在一个界面内至少显示5道选择题&#xff0c;每道题4个选项。题目从数据库读取。表结构自定义。 另有2个命令按钮&#xff0c;分别为“重新答题”&#xff08;全部选项及正确答题数清空&#xff09;和“提交”&#xff08;计算&#xff09;&#xff0c;在…...

优化 Java 数据结构选择与使用,提升程序性能与可维护性

优化 Java 数据结构选择与使用&#xff0c;提升程序性能与可维护性 引言 在软件开发中&#xff0c;数据结构的选择是影响程序性能、内存使用以及代码可维护性的关键因素之一。Java 作为一门广泛使用的编程语言&#xff0c;提供了丰富的内置数据结构&#xff0c;如数组、链表、…...

华为USG6000V防火墙安全策略用户认证

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1&#x1f923;防火墙FW1web服务配置 2.网络配置 要求1&#xff1a;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 要求2&#xff1a;生产区不…...

Windows 应急响应手册v1.2 -百度网盘下载

家好&#xff0c;《Windows 应急响应手册 v1.2》 发布啦&#xff01; 本次是一个大更新&#xff0c;解决了两个大问题&#xff0c;添加了4个大的事件处置流程以及一些更新&#xff0c;下载链接在文末 两个大问题是&#xff1a; Windows 平台的 Adobe acrobat DC 、Firefox 浏…...

Billu_b0x靶机

信息收集 使用arp-scan 生成网络接口地址来查看ip 输入命令&#xff1a; arp-scan -l 可以查看到我们的目标ip为192.168.187.153 nmap扫描端口开放 输入命令&#xff1a; nmap -min-rate 10000 -p- 192.168.187.153 可以看到开放2个端口 nmap扫描端口信息 输入命令&…...

GitHub+Picgo图片上传

Picgo下载&#xff0c;修改安装路径&#xff0c;其他一路下一步&#xff01; 地址 注册GitHub&#xff0c;注册过程不详细展开&#xff0c;不会的百度一下 地址 新建GitHub仓库存放图片 ——————————————————————————————————————————…...

springboot的事务管理

在yml配置文件中添加以下&#xff1a;logging.level.org.springframework.jdbc.support.JdbcTransactionManagerdebug...

深入解析rsync:定义、架构、原理、应用场景及实战指南

前言 在现代数据管理和传输过程中&#xff0c;数据同步工具起着至关重要的作用。特别是在需要高效、可靠地在不同服务器或设备之间传输大量数据时&#xff0c;选择一款优秀的数据同步工具显得尤为重要。在众多工具中&#xff0c;rsync以其高效、灵活、可靠的特点&#xff0c;成…...

discuz手机版发帖提示“网络出现问题,请稍后再试”

大家好&#xff0c;我是网创有方。今天分享一个discuz发帖报错的问题。 问题描述&#xff1a;discuz手机网页端发帖提示“网络出现问题&#xff0c;请稍后再试”&#xff0c;但是实际上帖子已经发布成功。 本次记录下分析过程&#xff1a; 第一步&#xff1a;打开宝塔&#…...

图片如何去水印,PS 图片去水印的几种常见方法

在数字图像的世界里&#xff0c;水印常常被用来标识版权或防止未经授权的使用&#xff0c;但有时它们却成为了美观的障碍。无论是出于个人偏好还是专业需求&#xff0c;去除图片上的水印已经成为一项常见的任务。 Adobe Photoshop 作为行业标准的图像编辑软件&#xff0c;提供…...

【从零开始实现stm32无刷电机FOC】【实践】【5/6 stm32 adc外设的高级用法】

目录 采样时刻触发采样同步采样 点击查看本文开源的完整FOC工程 本节介绍的adc外设高级用法用于电机电流控制。 从前面几节可知&#xff0c;电机力矩来自于转子的q轴受磁力&#xff0c;而磁场强度与电流成正比&#xff0c;也就是说电机力矩与q轴电流成正相关&#xff0c;控制了…...

2407-mysql笔记

数据库(Database)&#xff0c;简称db mariadbmysql 常见的数据库&#xff1a;mysql、oracle、高斯&#xff08;Gauss&#xff09;、redis、sqlserver、SQLite、HBase 一、SQL&#xff08;Structured Query Language&#xff09;&#xff1a;结构化查询语言 1、作用&#xff…...

如何解决隐藏游戏服务器的源IP问题

在网络游戏领域&#xff0c;保护服务器的源IP地址不被轻易发现是一项重要的安全措施。游戏服务器的源IP一旦暴露&#xff0c;可能会遭受DDoS攻击、扫描和各种形式的安全威胁。然而&#xff0c;对于合法的游戏运营商而言&#xff0c;有时需要对服务器进行维护或调试&#xff0c;…...

云计算数据中心(一)

目录 一、云数据中心的特征二、云数据中心网络部署&#xff08;一&#xff09;改进型树结构&#xff08;二&#xff09;递归层次结构&#xff08;三&#xff09;光交换网络&#xff08;四&#xff09;无线数据中心网络&#xff08;五&#xff09;软件定义网络 一、云数据中心的…...

libwebrtc.a+exosip连接fS 环境部署tips

//运行FS服务器 sudo ./freeswitch -nc -nonat //公网sudo ./freeswitch //运行客户端 sudo ./fs_cli //加载模块 load mod_av load mod_verto0.Invite交互过程 1.fs码率设置 2.用户密码改动 3.数字签名的摘要 4.FS收不到ACK 5.公网部署 6.查看frewswitch都占用哪些端口 7.日志…...

第二证券:市场估值依然处于较低区域 适合中长期布局

A股中报成绩预告显示相比2024Q1&#xff0c;2024Q2企业产品销量或订单已有回暖&#xff0c;但价格反转暂未大面积到来&#xff0c;“量增价平、部分板块以价换量”是2024H1 A股成绩预告较显着的量价特征&#xff0c;这与微观库存周期有待回暖相匹配。此外中游部分环节出现不同程…...

开始Linux之路

人生得一知己足矣&#xff0c;斯世当以同怀视之。——鲁迅 Linux操作系统简单操作指令 1、ls指令2、pwd命令3、cd指令4、mkdir指令(重要)5、whoami命令6、创建一个普通用户7、重新认识指令8、which指令9、alias命令10、touch指令11、rmdir指令 及 rm指令(重要)12、man指令(重要…...

leetcode-三数之和

视频&#xff1a;https://www.bilibili.com/video/BV1bP411c7oJ/?spm_id_from333.788&vd_sourcedd84879fcf1be72f360461b01ecab0d6 从两数之和开始&#xff0c;排序后的两数之和&#xff0c;利用好升序的性质&#xff0c;可以将时间复杂度从on2降到on; class Solution …...

opencv—常用函数学习_“干货“_总

同样内容将拆解为一份份,发在我个人博客中 如http://t.csdnimg.cn/icOfX(非VIP文章),整理不易、感谢你的点赞收藏 目录 一、图像文件 1. imread:读取图像文件 2. imwrite:写入图像文件 3. imshow:显示图像 4. VideoCapture:捕获视频 二、创建Mat 1、创建Mat对…...

Spring Boot项目的控制器貌似只能get不能post问题

我这2天新建了一个Spring Boot项目测试&#xff0c;在控制器上写了两个接口&#xff0c;一个是支持Get方式访问&#xff0c;另一个支持Post方式访问&#xff0c;发现Get可以&#xff0c;而Post不行。前端Post后&#xff0c;报403&#xff0c;找不到这个方法。 一、原因 原因是…...

最新版智能修图-中文luminar ai 1.55(13797) 和 neo1.20,支持m芯片和intel芯片(绝对可用)

一。Luminar AI for macOS 完整版本 这个程序是第一个完全由人工智能驱动的图像编辑器。有了它&#xff0c;创建引人注目的照片是有趣的&#xff0c;令人惊讶的容易。它是一个独立的照片编辑器和macOS插件。 1.1 Luminar AI for macOS 轻轻地塑造和完善一个肖像打造富有表现…...

Open3D 最小二乘法拟合点云平面

目录 一、概述 1.1最小二乘法原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2matplotlib可视化 3.3平面拟合方程 前期试读&#xff0c;后续会将博客加入该专栏&#xff0c;欢迎订阅 Open3D点云算法与点云深度学习…...

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录

文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下&#xff1a; 三、通过第三…...

关于HBase、Phoenix、Flume、Maxwell 和 Flink

组件协同&#xff1a; HBase HBase 是一个分布式的、列存储的NoSQL数据库&#xff0c;它基于Google的Bigtable设计&#xff0c;特别适合存储海量的、稀疏的、非结构化或半结构化数据。HBase 提供了低延迟的随机读写能力&#xff0c;但其原生接口和数据模型较为复杂&#xff0…...

centos7停止维护,可替代的操作系统

CentOS 7 将在 2024 年 6 月 30 日停止维护。如果你目前正在使用 CentOS 7&#xff0c;可以考虑以下几种替代的操作系统&#xff1a; 1. CentOS Stream CentOS Stream 是 CentOS 项目的一个新版本&#xff0c;它提供了一个滚动发布的 Linux 发行版。CentOS Stream 位于 Fedor…...

andon系统在电力设备工管理中起到那些作用与价值

安灯系统&#xff0c;作为精益制造执行中的一个核心工具&#xff0c;在电力设备工厂车间管理中发挥着不可替代的作用&#xff0c;它能够实现生产透明管理&#xff0c;为工厂高效运作提供强大的支撑。本文将从安灯系统的功能、应用场景和价值三个方面&#xff0c;深入探讨其在电…...

消息队列-RabbitMQ

消息队列-RabbitMQ 1、RabbitMQ是什么?2、RabbitMQ的业务场景有哪些?3、RabbitMQ中有哪基本概念?4、RabbitMQ有哪些工作模式?5、如何保证RabbitMQ消息顺序性?6、RabbitMQ消息如何分发?7、RabbitMQ消息怎么路由?8、为什么会产生重复消费?如何保证消息不被重复消费(如何…...

Elasticsearch(ES)集群监控

Elasticsearch(ES)集群监控 在Elasticsearch中&#xff0c;监控集群的健康状况、性能和运行指标是至关重要的。以下是一些常用的Elasticsearch监控工具和API的例子&#xff1a; 使用Elasticsearch自带的API来获取集群健康状态、节点信息和统计信息。 # 获取集群健康状况 curl…...

图像处理:使用 OpenCV-Python 卡通化你的图像(2)

一、说明 在图像处理领域&#xff0c;将图像卡通化是一种新趋势。人们使用不同的应用程序将他们的图像转换为卡通图像。如今&#xff0c;玩弄图像是许多人的爱好。人们通常会点击图片并添加滤镜或使用不同的东西自定义图像并将其发布到社交媒体上。但我们是程序员&#xff0c;…...

淘宝扭蛋机小程序:旋转惊喜,开启购物新篇章!

在追求创新与惊喜的购物时代&#xff0c;淘宝再次引领潮流&#xff0c;精心打造——淘宝扭蛋机小程序&#xff0c;为您的购物之旅增添一抹不同寻常的色彩。这不仅仅是一个购物工具&#xff0c;更是一个充满趣味、互动与惊喜的宝藏盒子&#xff0c;等待您来探索与发现。 【旋转…...