JAVA--第十一周实验--编写一个算术测试小软件

本文介绍了一个简单的算术测试软件的设计与实现。该软件由Teacher类负责生成随机算术题目,ComputerFrame类提供GUI供用户输入答案并反馈正误。支持加减法运算,适用于教育场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Test类


/* (程序头部注释开始)   
 * 程序的版权和版本声明部分   
 * Copyright (c) 2011, 烟台大学计算机学院学生    
 * All rights reserved.   
 * 文件名称: 编写一个算术测试小软件。
 * 作 者: 雷恒鑫    
 * 完成日期: 2012 年 11 月 06 日   
 * 版 本 号: V1.0    
 * 对任务及求解方法的描述部分   
 * 输入描述:程序组成:编写 一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;
 * 输入描述:编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出答案;编写一个程序执行入口运行该软件。
 * 输入描述:GUI界面如下所示。  
 * 问题描述:   
 * 程序输出:   
 * 程序头部的注释结束   
 */    
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ComputerFrame computerFrame = new ComputerFrame("mycomframe");
	}

}

Teacher类

public class Teacher {
	int numberOne,numberTwo;
	   String operator="";
	   boolean right;
	   public int giveNumberOne(int n)
	   {  numberOne=(int)(Math.random()*n)+1;
	      return numberOne;
	   }
	   public int giveNumberTwo(int n)
	   {  numberTwo=(int)(Math.random()*n)+1;
	      return numberTwo;
	   }
	   public String giveOperator()
	   {  double d=Math.random();
	      if(d>=0.5)
	         operator="+";
	      else
	         operator="-";  
	      return operator; 
	   }
	   public boolean getRight(int answer)
	   {  if(operator.equals("+"))
	       {  if(answer==numberOne+numberTwo)  
	            right=true;
	          else
	            right=false;
	       }
	      else if(operator.equals("-"))
	       {  if(answer==numberOne-numberTwo)  
	            right=true;
	          else
	            right=false;
	       }
	      return right; 
	   }
}


ComputerFrame类

import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

//import laoshi.Teacher;

/* 输入描述:程序组成:编写 一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;
 * 输入描述:编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出答案;编写一个程序执行入口运行该软件。
 * 输入描述:GUI界面如下所示。
 */
public class ComputerFrame extends JFrame implements ActionListener{
	 JTextField textOne,textTwo,textResult;
	   JButton getProblem,giveAnwser;
	   JLabel operatorLabel,message;
	   Teacher teacher;
	   ComputerFrame(String s) 
	    { super(s);
	      teacher=new Teacher();
	      setLayout(new FlowLayout());
	      textOne=new JTextField(10);     //创建textOne,其可见字符长是10
	      textTwo=new JTextField(10);    //创建textTwo,其可见字符长是10 
	      textResult=new JTextField(10);  //创建textResult,其可见字符长是10
	      operatorLabel=new JLabel("+");
	      message=new JLabel("你还没有回答呢");
	      getProblem=new JButton("获取题目");
	      giveAnwser=new JButton("确认答案");
	      add(getProblem); 
	      add(textOne);
	      add(operatorLabel);
	      add(textTwo);
	      add(new Label("="));
	      add(textResult);
	      add(giveAnwser); 
	      add(message);
	      textResult.requestFocus();//请求此 Component 获得输入焦点,并且此 Component 的顶层祖先成为获得焦点的 Window。
	      textOne.setEditable(false);
	      textTwo.setEditable(false);
	      getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器     
	      giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器
	      textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器
	      setBounds(100,100,550,100);
	      setVisible(true);
	      validate();
	      addWindowListener(new WindowAdapter()
	                        {  public void windowClosing(WindowEvent e)
	                           {  System.exit(0);
	                           }
	                        }
	                       );
	    }
	    public void actionPerformed(ActionEvent e) 
	    { if(e.getSource()==getProblem) //判断事件源是否是getProblem
	       { int number1=teacher.giveNumberOne(100);
	         int number2=teacher.giveNumberTwo(100);
	         String operator=teacher.giveOperator();
	         textOne.setText(""+number1);
	         textTwo.setText(""+number2); 
	         operatorLabel.setText(operator); 
	         message.setText("请回答");
	textResult.setText(null); 
	       }
	     if(e.getSource()==giveAnwser) //判断事件源是否是giveAnwser 
	       {  String answer=textResult.getText();
	          try{ 
	               int result=Integer.parseInt(answer); 
	               if(teacher.getRight(result)==true)
	               {  message.setText("你回答正确");
	               }
	               else
	               { message.setText("你回答错误");
	               }
	             }
	          catch(NumberFormatException ex)
	             {  message.setText("请输入数字字符");
	             }
	       }
	      textResult.requestFocus();
	      validate(); 
	   }
}

运行结果:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值