该小程序使用java语言编写,让用户计算10以内的加减乘除法,特别适合小学开始学习加减乘除法的学生,能很好地锻炼他们的运算能力,并过计分计时的游戏性质引起学习兴趣!

运行该程序会弹出一个窗口,按enter键开始答题,答完再按enter则进行计分和正确性判断,并出下一道题!每轮10道题,每题10分,答完自动计时记分,全程操作只需要按enter键,无其他按钮,幼儿园小学生都会玩!

并且在输入合法性方面,也做了相关校验和提示!欢迎大家发挥想象力,再此基础上再丰富和完善!

代码:

package autoScore;

import java.awt.Color;

import java.awt.Font;

import java.awt.Label;

import java.awt.List;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.text.DecimalFormat;

import javax.swing.JFrame;

public class AutoScore extends JFrame{

Label labRule=new Label();//规则描述标签

Label labA=new Label();//第一个数字标签

Label labOp=new Label();//加减乘除标签

Label labB=new Label();//第二个数字标签

Label label5=new Label();//等于号“=”标签

Label labWarn=new Label();//输入合法性校验提示标签

Label labQues=new Label();//答题列表标签

Label labResult=new Label();//判分标签

TextField txtAnswer=new TextField();//输入答案输入框

int total=0;//记录答题总数

int right=0;//记录答题正确数量

int error=0;//记录答题错误数量

int score=0;//记录答题总分

boolean isOver=false;//一轮结束后标识

boolean isFirst=true;//程序第一次运行标识

long startTime;//每一轮运行开始时间

List listDisp=new List();//答题列表展示框

List listScore=new List();//分数展示框

public static void main(String[] args){

AutoScore score=new AutoScore();

}

public AutoScore(){

init();

setSize(450,630);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

}

public void init(){

setLayout(null);

setSize(450,630);

labRule.setText("规则:每组十道题,每题10分,按ENTER键开始,小数保留2位");

labRule.setBounds(36, 10, 390, 72);

labRule.setFont(new Font("Dialog",Font.PLAIN,12));

getContentPane().add(labRule);

labA.setText("x");

labA.setBounds(36,82,36,36);

labA.setFont(new Font("Dialog",Font.PLAIN,24));

getContentPane().add(labA);

labOp.setText("+");

labOp.setFont(new Font("Dialog",Font.PLAIN,24));

labOp.setBounds(72, 82, 45, 36);

getContentPane().add(labOp);

labB.setText("y");

labB.setFont(new Font("Dialog",Font.PLAIN,24));

labB.setBounds(118, 82, 33, 36);

getContentPane().add(labB);

label5.setText("=");

label5.setFont(new Font("Dialog",Font.PLAIN,24));

label5.setBounds(168, 82, 24, 36);

getContentPane().add(label5);

labWarn.setFont(new Font("Dialog",Font.PLAIN,12));

labWarn.setBackground(Color.RED);

labWarn.setBounds(320, 82, 80, 36);

labWarn.setVisible(false);

getContentPane().add(labWarn);

labQues.setText("答题列表:");

labQues.setFont(new Font("Dialog",Font.PLAIN,12));

labQues.setBounds(36, 148, 100, 20);

getContentPane().add(labQues);

labResult.setText("分数统计:");

labResult.setFont(new Font("Dialog",Font.PLAIN,12));

labResult.setBounds(36,420,100,20);

labResult.setVisible(false);

getContentPane().add(labResult);

txtAnswer.setFont(new Font("Dialog",Font.PLAIN,24));

txtAnswer.setBounds(216, 82, 100, 36);

getContentPane().add(txtAnswer);

listDisp.setFont(new Font("Dialog",Font.PLAIN,16));

listDisp.setBounds(36, 174, 282, 230);

getContentPane().add(listDisp);

listScore.setFont(new Font("Dialog",Font.PLAIN,16));

listScore.setBounds(36,450,282,135);

MyKey myKey=new MyKey();// 答案输入框,键盘按键监听类

txtAnswer.addKeyListener(myKey);

}

class MyKey implements KeyListener{

@Override

public void keyTyped(KeyEvent e) {

}

@Override

public void keyPressed(KeyEvent e) {

if(e.getSource()==txtAnswer){

if(e.getKeyCode()==KeyEvent.VK_ENTER){

if(isOver || isFirst){

updateQuestion(null);

}else if("".equals(txtAnswer.getText())){

labWarn.setText("请输入答案!");

labWarn.setVisible(true);

}else{

labWarn.setVisible(false);

if(!isNumber(txtAnswer.getText())){

labWarn.setText("请输入数字!");

labWarn.setVisible(true);

}else if(total<9){

judge(null);

updateQuestion(null);

}else{

judge(null);

labResult.setVisible(true);

scorePerformed(null);

}

}

}

}

}

@Override

public void keyReleased(KeyEvent e) {

}

}

int a=0,b=0;

String op="";

double result=0;

DecimalFormat df=new DecimalFormat("#.00");

/**

* 出题方法

* @param e

*/

public void updateQuestion(ActionEvent e){

if(isFirst){

startTime=System.currentTimeMillis();

}

if(isOver==true){

listDisp.clear();

listScore.clear();

labResult.setVisible(false);

listScore.setVisible(false);

}

isOver=false;

a=(int)(Math.random()*9+1);

b=(int)(Math.random()*9+1);

int c=(int)(Math.random()*4);

switch (c) {

case 0:

op="+";

result=a+b;

break;

case 1:

op="-";

result=a-b;

break;

case 2:

op="*";

result=a*b;

break;

case 3:

op="/";

result=(a*1.0)/b;

//若两个数除不尽,则按四舍五入保留2位小数

if(String.valueOf(result).length()>10){

result=Double.parseDouble(df.format((a*1.0)/b));

}

break;

}

labA.setText(String.valueOf(a));

labB.setText(String.valueOf(b));

labOp.setText(op);

label5.setText("=");

txtAnswer.setText("");

isFirst=false;

}

/**

* 判断结果

* @param e

*/

public void judge(ActionEvent e){

try{

double value=Double.parseDouble(txtAnswer.getText());

String resultStr=(total+1)+"、 "+a+op+b+"="+value;

if(value==result){

resultStr+=" \t正确";

right++;

score+=10;

}else{

resultStr+=" \t错误 正确答案:"+result;

error++;

}

listDisp.add(resultStr);

total++;

}catch(NumberFormatException ignored){

}

}

/**

* 统计分数

* @param e

*/

public void scorePerformed(ActionEvent e){

isOver=true;

listScore.clear();

listScore.setVisible(true);

String exitStr="本次共答题"+total+"道";

listScore.add(exitStr);

listScore.add("累计用时:"+(System.currentTimeMillis()-startTime)/1000+"秒");

listScore.add("答对:"+right+"个");

listScore.add("答错:"+error+"个");

listScore.add("得分:"+score+"分");

getContentPane().add(listScore);

score=0;

right=0;

error=0;

total=0;

}

/**

* 校验输入是否位数字

* @param numberStr

* @return

*/

public boolean isNumber(String numberStr){

boolean isNumber=true;

try{

Double.parseDouble(numberStr);

}catch(NumberFormatException e){

isNumber=false;

}

return isNumber;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

篮球比赛计时计分系统java_非常实用的java自动答题计时计分器相关推荐

  1. java实现计分_非常实用的java自动答题计时计分器

    该小程序使用java语言编写,让用户计算10以内的加减乘除法,特别适合小学开始学习加减乘除法的学生,能很好地锻炼他们的运算能力,并过计分计时的游戏性质引起学习兴趣! 运行该程序会弹出一个窗口,按ent ...

  2. 篮球比赛计时计分系统

    JOYI篮球比赛电子计时记分系统是中意公司研发的专业级裁判系统,产品已经经过三次升级,从单片机裁判器到ARM斜面立体式系统裁判器,产品已经实现全数字化模块化设计,24秒14秒控制可以有线无线双用.计时 ...

  3. 【Proteus仿真】【STM32单片机】比赛计时计分系统设计

    文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块.矩阵按键模块.蜂鸣器等. 主要功能: 系统 ...

  4. 【Proteus仿真】【51单片机】比赛计时计分系统设计

    文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602显示模块.矩阵按键模块.蜂鸣器等. 主要功能: 系统运行后 ...

  5. 用c语言编写篮球过程运行结果,基于单片机的篮球计时计分器设计(c语言编程、含proteus仿真图) 本科毕业论文.doc...

    基于单片机的篮球计时计分器设计(c语言编程.含proteus仿真图) 本科毕业论文 摘要 单片机,亦称单片微电脑或单片微型计算机.它是把中央处理器(CPU).随机存取存储器(RAM).只读存储器(RO ...

  6. 用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统...

    本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统.系统应具有赛程定时设置,赛程时间暂停,及时刷新甲.乙双方的成绩以及赛后成绩暂存等功能. 内容包括:显示.键盘.时钟等内容设计 ...

  7. 基于51单片机控制的篮球比赛计时、计分系统设计与仿真(含设计图和C语言程序源码)

    1. 设计任务: 2. 设计说明 2.1 需求分析 2.1.1 计分系统: 2.1.2 计时系统: 2.2 原理分析 2.3 总体设计 2.4 软硬件设计 2.4.1 硬件设计 2.4.2 软件设计 ...

  8. 单片机c语言篮球比分_单片机篮球比赛计分器设计方案与程序详解

    摘 要 本系统是采用单片机AT89C51作为本设计的核心元件.利用7段共阳LED作为显示器件.在此设计中共接入了2个7段共阳LED显示器,用于记录该队的分数, 2个LED显示器显示范围可达到0~99分 ...

  9. php篮球比赛,篮球数据API接口 - 【篮球比赛动画直播变化数据】API调用示例代码...

    篮球比赛动画直播变化数据API调用示例,详细请查看在线文档,需注册下 package com.huaying.demo.basketball; import javax.xml.bind.JAXBCo ...

最新文章

  1. Caused by: org.xml.sax.SAXParseException: 不允许有匹配 [xX][mM][lL] 的处理指令目标。
  2. sqlserⅴer随机函数_sql server 函数--rand() 生成整数的随机数
  3. 结束python服务器进程_服务器端后台持续执行python程序小demo
  4. 非专业计算机考试基础内容,全国高等教育自学考试指定教材:计算机应用基础·非计算机专业公共基础科·代码00018...
  5. spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存
  6. 实现织梦dedecms百度主动推送(实时)网页抓取
  7. React 性能优化之批量处理 unstable_batchedUpdates
  8. HDU.1006 Tick and Tick
  9. VINS(三)IMU预积分
  10. shell中的基础命令
  11. 三阶魔方大中小魔公式_七步玩转三阶魔方还原公式及非公式步骤图解【新手适用超详细】...
  12. 关于react-router-dom 6.0.1的基础写法 解决Error: A <Route> is only ever to be used as the child of <Routes>
  13. 电脑读取不U盘,在磁盘管理器中显示“无媒体”解决方法
  14. 零基础入门学Python(十二)—— 魔法方法(下)
  15. python里的map是什么意思_python中的map是什么意思
  16. Windows下 Cppcheck 的使用教程
  17. SpringBoot创建web项目
  18. 如何分析一个网站的SEO情况
  19. 后端: 判断手机是否已经root
  20. WiFiduino+blinker+小爱同学打造智慧卧室

热门文章

  1. 汽车通信脉冲电子 100Base-T1 汽车|以太网共模扼流圈
  2. wordexpansion包 | 新增词向量法构建领域词典
  3. 6) 克莱姆(gramer)法则
  4. 01 Java体系
  5. 《定风波》--苏轼之我最喜欢的一首词
  6. UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
  7. C++运算符重载(类内、外重载)
  8. 《学习geometric deep learning笔记系列》第一篇,Non-Euclidean Structure Data之我见
  9. 学习上溯造型和下溯造型 【转载一篇】
  10. 《革命之路-目击众神死亡的草原上野花一片》