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();
}
}
运行结果: