java 限时答题

原创 2013年12月02日 19:20:20
public class Test {
	public static void main(String[] args) {
		StandardExamInTime win=new StandardExamInTime();
		win.setTitle("限时答题!");
		win.setTestFile(new java.io.File("test.txt"));
		win.setMAX(10);
	}

}
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class StandardExamInTime extends JFrame implements ActionListener,ItemListener{
	File testFile;
	int MAX=10;
	int maxTime=MAX,score=0;
	javax.swing.Timer time;//计时器
	JTextArea showQuesion;//显示试题
	JCheckBox choiceA, choiceB, choiceC, choiceD;
	JLabel showScore,showTime;
	String correctAnswer;//正确答案
	JButton reStart;
	FileReader inOne;
	BufferedReader inTwo;
	StandardExamInTime(){
		time=new javax.swing.Timer(1000,this);
		showQuesion=new JTextArea(2,16);
		setLayout(new FlowLayout());
		showScore=new JLabel("分数"+score);
		showTime=new JLabel(" ");
		add(showTime);
		add(new JLabel("问题:"));
		add(showQuesion);
		choiceA=new JCheckBox("A");
		choiceB=new JCheckBox("B");
		choiceC=new JCheckBox("C");
		choiceD=new JCheckBox("D");
		choiceA.addItemListener(this);
		choiceB.addItemListener(this);
		choiceC.addItemListener(this);
		choiceD.addItemListener(this);
		add(choiceA);
		add(choiceB);
		add(choiceC);
		add(choiceD);
		add(showScore);
		reStart=new JButton("再做一遍!");
		reStart.setEnabled(false);
		add(reStart);
		reStart.addActionListener(this);
		setBounds(100,100,200,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	public void setMAX(int n){
		MAX=n;
	}
	public void setTestFile(File f){
		testFile=f;
		score=0;
		try{
			inOne=new FileReader(testFile);
			inTwo=new BufferedReader(inOne);
			readOneQuesion();
			reStart.setEnabled(false);
		}
		catch(IOException exp){
			showQuesion.setText("没有选题!");
		}
	}
	public void readOneQuesion(){
		showQuesion.setText(null);
		try{
			String s=null;
			while((s=inTwo.readLine())!=null){
				if(!s.startsWith("-")){
					showQuesion.append("\n"+s);
				}
				else{
					s=s.replace("-", "");
					correctAnswer=s;
					break;
				}
			}
			time.start();//启动计时
			if(s==null){
				inTwo.close();
				reStart.setEnabled(true);
				showQuesion.setText("题目完毕");
				time.stop();
			}
		}
		catch(IOException exp){}
	}
	public void itemStateChanged(ItemEvent e){
		JCheckBox box=(JCheckBox)e.getSource();
		String str=box.getText();
		boolean booOne=box.isSelected();
		boolean booTwo=str.compareToIgnoreCase(correctAnswer)==0;
		if(booOne){
   			if(booTwo){
    				score++;
    				showScore.setText("分数:"+score);
   	 			time.stop();
    				maxTime=MAX;
    				readOneQuesion();
   			}
   			else{
    				time.stop();
    				maxTime=MAX;
    				readOneQuesion();
   			}
  		}		box.setSelected(false);
	}
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==time){
			showTime.setText("剩:"+maxTime+"秒");
			maxTime--;
			if(maxTime<=0){
				maxTime=MAX;
				readOneQuesion();
			}
		}
		else if(e.getSource()==reStart){
			setTestFile(testFile);
		}
	}
}

相关文章推荐

java实现限时复制文件,若超时则删除所复制的文件

子线程复制文件,当主线程interrupt子线程时,若子线程还未完成文件的复制,则删除有已复制的文件。递归实现文件夹的复制...

java并发编程-限时任务

原文地址:http://blog.csdn.net/aitangyong/article/details/38172189 ExecutorService是JDK并发工具包提供的一个核心接口,相当于...

java swing 答题系统

如上图所示,代码亲测可用,如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; i...

简单的四则运算答题系统(Java版)

用Java写一个小的四则运算答题系统 1.前言 最近一直在用Python刷算法,在TensorFlow(简称掏粪)大坑里游得是不亦乐乎。不过昨天有个朋友叫我帮他的学弟写一个...

答题java文档

  • 2015年07月22日 17:35
  • 18KB
  • 下载

体验APP时的必答题—以扇贝单词为例

通过感知身边一切新事物可以更好地磨练自己的产品直觉,体验一款新 App就是一种很好的方式。在产品100上看到Facebook产品设计总监Julie Zhuo拷问产品的14个问题,非常靠谱,本文以扇贝单...

狂龙电脑使用限时器v1.0

  • 2016年10月20日 08:30
  • 592KB
  • 下载

PB12 20511不限时学习

  • 2012年08月21日 23:12
  • 531KB
  • 下载

Android实现计时与倒计时(限时抢购)的几种方法(线程)

方法一 Timer与TimerTask(Java实现) [java] view plaincopy public class timerTask extends Activity{     ...

儿童上网限时器1.5

  • 2013年01月18日 17:30
  • 338KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 限时答题
举报原因:
原因补充:

(最多只允许输入30个字)