JAVA--第十一週實驗--編寫一個算術測試小軟件

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(); 
	   }
}

運行結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章