1. 程式人生 > >JAVA--第十一週實驗--編寫一個算術測試小軟體

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();//確保元件具有有效的佈局
			
		}
		
	}

		

}
	

相關推薦

JAVA--實驗--編寫一個算術測試軟體

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: 編寫一個算術測試小軟體。 * 版 本 號

JAVA--實驗--模擬一個訊號燈的軟體

Test類 /* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: 模擬一個訊號燈的軟體 * 作 者: 雷

201771010123汪慧和《面向物件程式設計Java實驗總結

一、理論部分 1、棧 (1)棧是一種特殊的線性表,是一種後進先出的結構。(2)棧是限定僅在表尾進行插入和刪除運算的線性表,表尾稱為棧頂,表頭稱為棧底。(3)棧的物理儲存可以用順序儲存結構,也可以用鏈式儲存結構。2、佇列(1)佇列是限定所有的插入只能在表的一端進行,而所有的刪除都在表的另一端進行的線性表。

JAVA學習總結

201711671102 曾燃亮 《java程式設計》第11周學習總結 第十二章 多執行緒機制 一.程序與執行緒 1.作業系統與程序 程序是程式的一次動態執行過程。現代作業系統可以同時管理計算機系統的多個執行緒 2.程序與執行緒 執行緒不是程序,執行緒是比程序更小的執行單位,

java十三實驗 編寫一個一元二次函式的GUI

EquationFrame: package net.kk; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class EquationFrame extends JF

實驗報告(實現氣泡排序演算法,並將之定義為一個函式)

  第15週報告1: 實驗目的:學會氣泡排序演算法 實驗內容:實現氣泡排序演算法,並將之定義為一個函式 * 程式頭部註釋開始 * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. *

王穎奇 20171010129《面向物件程式設計(java)》學習總結

  實驗十一   集合 實驗時間 2018-11-8 1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; (2) 瞭解java集合框架體系組成; (3) 掌握Array

徐思/楊玲《面向物件程式設計(Java)》學習總結

一、理論知識部分 一般將資料結構分為兩大類:線性資料結構和非線性資料結構。線性資料結構:線性表、棧、佇列、串、陣列和檔案。非線性資料結構:樹和圖。 線性表按其儲存結構可分為順序表和連結串列;用順序儲存結構儲存的線性表稱為順序表;順序表將線性表中的資料元素依次存放在某個儲存區域中。一維陣列就是用順序方式儲存

李曉菁201771010114《面向物件程式設計(Java)》學習總結

集合 一:.資料結構介紹 1.一般將資料結構分為兩大類:線性資料結構和非線性資料結構。 (1)線性資料結構:線性表、棧、佇列、串、陣列和檔案。 (2)非線性資料結構:樹和圖。 2.線性表: 3.連結串列:(1)單向連結串列 (2)迴圈連結串列 (3)雙向迴圈連結串列 4.棧:棧(Stack)

201771010135 楊蓉慶AND張燕 《面對物件程式設計(java)》學習總結

1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; (2) 瞭解java集合框架體系組成; (3) 掌握ArrayList、LinkList兩個類的用途及常用API。 (4) 瞭解HashSet類、TreeSet類的用途及常用API。 (5)瞭解Ha

201771010124 王海珍 《面向物件設計java總結

第一部分  理論部分   本章節的主要內容為集合 (1)Java集合框架;    a:將集合的介面與實現分離;    b:Collection介面,集合類的基本介面。這個介面有兩個基本方法 public interface Collecti

201771010113 李婷華 《面向物件程式設計(Java)》總結

一.理論知識部分 第九章  集合 1.資料結構介紹: 線性結構:線性表,棧,佇列,串,陣列,檔案。非線性結構:樹,圖。 散列表:又稱為雜湊表。 散列表演算法的基本思想是:以結點的關鍵字為自變數,通過一定的函式關係(雜湊函式)計算出對應的函式值,以這個值作為該結點儲存在散列表中的地址。當散列

201771010112羅鬆《面向物件程式設計(java)》學習總結

 1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; (2) 瞭解java集合框架體系組成; (3) 掌握ArrayList、LinkList兩個類的用途及常用API。 (4) 瞭解HashSet類、TreeSet類的用途及常用AP

王豔 201771010127《面向物件程式設計(java)》學習總結

一:理論部分。 1.資料結構:分為a.線性資料結構,如線性表、棧、佇列、串、陣列和檔案。                           b.非線性資料結構,如樹和圖。

馬昕璐/唐月晨 《面向物件程式設計(java)》學習總結

一:理論部分。 一般將資料結構分為兩大類:線性資料結構和非線性資料結構 線性資料結構:線性表、棧、佇列、串、陣列和檔案 非線性資料結構:樹和圖。 線性表:1.所有資料元素在同一個線性表中必須是相同的資料型別。 2. 線性表按其儲存結構可分為順序表和連結串列 3. 用順序儲存結構儲存的線性表稱為順序

王之泰/王志成《面向物件程式設計(java)》學習總結

第一部分:理論知識學習部分 第十一章理論知識主要為集合類的介紹,在實驗中都有所體現且本週主要複習回顧上週的泛型程式設計 第二部分:實驗部分 ——集合 1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; (2) 瞭解jav

201771010101 白瑪次仁《面向物件程式設計(Java)》學習總結

實驗十一   集合 實驗時間 2018-11-8 1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; (2) 瞭解java集合框架體系組成; (3) 掌握ArrayList、Lin

張雲飛 201771010143 《面對物件程式設計(java)》學習總結

實驗十一  集合 實驗時間2018-11-8 1、實驗目的與要求 (1) 掌握Vetor、Stack、Hashtable三個類的用途及常用API; (2) 瞭解java集合框架體系組成; (3) 掌握ArrayList、LinkList兩個類的用途及

馬凱軍201771010116《面向物件與程式設計Java學習總結

一.理論知識部分 第九章  集合 1.資料結構介紹:線性結構:線性表,棧,佇列,串,陣列,檔案。非線性結構:樹,圖。 散列表:又稱為雜湊表。 散列表演算法的基本思想是:以結點的關鍵字為自變數,通過一定的函式關係(雜湊函式)計算出對應的函式值,以這個值作為該結點儲存在散列表中的地址。當散列表中