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


/* (程序頭部註釋開始)   
 * 程序的版權和版本聲明部分   
 * Copyright (c) 2011, 煙臺大學計算機學院學生    
 * All rights reserved.   
 * 文件名稱: 編寫一個算術測試小軟件。
   
 * 版 本 號: V1.0    
 * 對任務及求解方法的描述部分   
 * 輸入描述:程序組成:編寫 一個Teacher類負責給出算術題目,隨機給出兩個整數並進行運算,並判斷回答者的答案是否正確;
 * 輸入描述:編寫一個GUI類ComputerFrame,回答者可以通過GUI看到題目並給出答案;編寫一個程序執行入口運行該軟件。
 * 輸入描述:GUI界面如下所示。  
 * 問題描述:   
 * 程序輸出:   
 * 程序頭部的註釋結束   
 */
package ma;

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		 ComputerFrame frame = new ComputerFrame("算術測試");

	}

}

 

 

 

package ma;

public class Teacher{
	
	int numberone,numbertwo;
	
	String operator="  ";
	
	boolean right;

	public int getnumberone()
	{
		 numberone= (int) (Math.random()*100);
		
		 return numberone;
	}
	
	public int getnumbertwo()
	{
		 numbertwo= (int) (Math.random()*100+1);
		
		 return numbertwo;
	}
	
	public String getoperator()
	{
		
		int i=(int)(Math.random()*10+1);
		
		if(i>0&&i<=3)
		{
			operator="+";
		  
		}
		if(i>3&&i<=5)
		{
			operator="-";
		  
		}
		
		if(i>5&&i<=8)
		{
			operator="*";
		  
		}
		if(i>8&&i<=11)
		{
			operator="/";
		  
		}
		return operator;
		
	}
	
	public boolean check(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;
		   }
		   else 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;
		}
	
	
		


}


 

package ma;

import java.awt.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JFrame;

@SuppressWarnings("serial")
public class ComputerFrame extends JFrame implements ActionListener{
	
	Teacher teacher;
	
	TextField text1,text2,textresult;
	
    Button getquestion,ensureanswer;
    
    Label label1,labelanswer,label2;
    
    ComputerFrame(String s)
    {
         super(s);//命名
    	
    	teacher = new Teacher();
    	
    	setLayout(new FlowLayout());
    	
    	getquestion= new Button("獲取題目");
    	
    	text1 = new TextField(10);//創建textOne,其可見字符長是10   

    	
    	text2 = new TextField(10);
    	
    	textresult= new TextField(10);
    	
        label1= new Label("+");
    	
    	label2= new Label ("=");
    	
    	labelanswer= new Label("你還沒有答案呢 ?");
    	
    	
    	
    	ensureanswer= new Button("確認答案");
    	
    	
    	add(getquestion);
    	add(text1);
    	add(label1);
    	add(text2);
    	add(label2);
    	add(textresult);
    	add(getquestion);
    	add(ensureanswer);
    	add(labelanswer);
    //	textresult.requestFocus();
    	
    	  
    	text1.setEditable(false);//該方法設置文本框的可編輯性
    	 
    	text2.setEditable(false);
    	
    	getquestion.addActionListener(this);//將當前窗口註冊爲getquestion的ActionEvent事件監視器
    	
    	ensureanswer.addActionListener(this);
    	
    	textresult.addActionListener(this);
    	
    	setBounds(100,100,450,100);//設置出現屏幕上時的初始位置
    	 
    	setLocationRelativeTo(null);//居中
    	 
    	setVisible(true);//窗口的可見性
    	
    	validate();
    	  
   
    	   

    }
    	   
 @Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==getquestion)
		{
		  int numberone= teacher.getnumberone();
		  
		  int numbertwo= teacher.getnumbertwo();
		  
		  String operator = teacher.getoperator();
		  
		  text1.setText(""+numberone);//設置文本框中爲參數字符串指定的文本
		    
		  text2.setText(""+numbertwo);
		  
		 label1.setText(operator);
		   
		 labelanswer.setText("請回答");
		   
		 textresult.setText(null);
		

		}
		if(e.getSource()==ensureanswer)
		{
			String answer = textresult.getText();
			
			try{ int result = Integer.parseInt(answer);
	        if(teacher.check(result)==true){
	       labelanswer.setText("你回答正確");
	        }
	        else{
	       labelanswer.setText("你回答錯誤");
	        }
	    }
	    catch(NumberFormatException x){
	     labelanswer.setText("請輸入數字字符");
	    }
		
			//textresult.requestFocus();
			
			validate();//確保組件具有有效的佈局
			
		}
		
	}

		

}
	

 


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