JAVA作业 算法测试:编写算法测试小软件

题目:

算法测试:编写算数测试小软件,三个类组成,Teacher类负责出题,并判断回答是否正确;ComputerFrame类负责提供视图,用户可通过此类GUI看到题目,并编写答案;MainClass是软件入口类。

思想:

1、Teacher类负责出题,因此需要三个属性int num1、int num2、String operator分别表示两个运算数以及一个运算符,保证出题随即性,运算数与运算符均为随机生成;并判断回答是否正确,因此编写函数boolean isRight(double result)用于判断用户输入的答案是否正确。

2、ComputerFrame类负责提供视图,用户可通过此类GUI看到题目,并编写答案,因此编写ComputerFrame类继承于JFrame类,属性为所需要的各个按钮、输入框、标签、用户输入的答案以及Teacher类对象。

3、MainClass是软件入口类,即生成ComputerFrame类对象并设置其属性。

源代码:

MainClass.java

package countTest;

import javax.swing.JFrame;
/**
 * @author TX
 * @time 2016年12月3日 上午10:30:03
 */
public class MainClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ComputerFrame frame = new ComputerFrame("算术测试");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(400, 120);
		frame.setLocation(500, 200);
		frame.setVisible(true);
	}

}
Teacher.java
package countTest;

import java.util.Random; 
/**
 * @author TX
 * @time 2016年12月3日 上午10:30:34
 */
public class Teacher {
	private int num1;
	private int num2;
	private String operator;
	public Teacher()
	{
		Random random = new Random();  
		num1 = random.nextInt(100);  
	    num2 = random.nextInt(100);
	    int opNum = random.nextInt(4);
	    if(opNum == 0) operator = "+";
	    if(opNum == 1) operator = "-";
	    if(opNum == 2) operator = "*";
	    if(opNum == 3) operator = "/";
	}
	public boolean isRight(double result)
	{
		System.out.println(num1+ operator + num2 + "=" + result);
		if(operator.equals("+"))
		{
			System.out.println(num1+num2);
			return result == (num1+num2);
		}
			
		else if(operator.equals("-"))
		{
			System.out.println(num1-num2);
			return result == (num1-num2);
		}
			
		else if(operator.equals("*"))
		{
			System.out.println(num1*num2);
			return result == (num1*num2);
		}
			
		else if(operator.equals("/"))
		{
			System.out.println(((double)num1/(double)num2));
			return Math.abs(result-(double)num1/(double)num2) < 0.001;
		}
			
		return false;
	}
	public int getNum1() {
		return num1;
	}
	public void setNum1(int num1) {
		this.num1 = num1;
	}
	public int getNum2() {
		return num2;
	}
	public void setNum2(int num2) {
		this.num2 = num2;
	}
	public String getOperator() {
		return operator;
	}
	public void setOperator(String operator) {
		this.operator = operator;
	}
	
}

ComputerFrame.java

package countTest;

import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener; 
import javax.swing.*;  
/**
 * @author TX
 * @time 2016年12月3日 上午10:30:56
 */
public class ComputerFrame extends JFrame{
	 Teacher teacher;
	 JButton getQuestion, confirmAnswer;  
	 JTextField text1, text2, text3;  
	 JLabel label1, label2, checkLabel;  
	 public int resultNum;
	 
	 public ComputerFrame(String s){
		 super(s);
		 teacher = new Teacher();
		 setLayout(new FlowLayout());
		 text1 = new JTextField(6);  
	     text1.setEditable(false);  
	     text2 = new JTextField(6);  
	     text2.setEditable(false);  
	     text3 = new JTextField(6);  
	     label1 = new JLabel("+");  
	     label2 = new JLabel("="); 
	     checkLabel = new JLabel();
	        
		 getQuestion = new JButton("获取题目");
		 getQuestion.addActionListener(new ActionListener()
		 	{public void actionPerformed(ActionEvent arg0) {

				teacher = new Teacher();
				label1.setText(teacher.getOperator());  
		        text1.setText(String.valueOf(teacher.getNum1()));  
		        text2.setText(String.valueOf(teacher.getNum2()));  
			}});
		 confirmAnswer = new JButton("确认答案");
		 confirmAnswer.addActionListener(new ActionListener()
		 	{public void actionPerformed(ActionEvent arg0) {
		 		if(text3.getText().length() == 0)
		 		{
		 			checkLabel.setText("请输入答案!");
		 		}
		 		else
		 		{
		 			double result = Double.valueOf(text3.getText());
		 			if(teacher.isRight(result))
		 			{
		 				checkLabel.setText("回答正确!");
		 			}
		 			else
		 			{
		 				checkLabel.setText("回答错误!");
		 			}
		 		}
			}});
		 
	     label1.setText(teacher.getOperator());  
	     text1.setText(Integer.toString(teacher.getNum1()));  
	     text2.setText(Integer.toString(teacher.getNum2())); 
	     
	     this.add(getQuestion); 
	     this.add(text1);  
	     this.add(label1);
	     this.add(text2);  
	     this.add(label2);
	     this.add(text3); 	     
	     this.add(confirmAnswer); 
	     this.add(checkLabel);
	     setVisible(true);  
	     validate(); 
	 }
	 
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值