⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 question.java

📁 考试系统 实现在线考试中的各项操作的源代码
💻 JAVA
字号:
package com.exam;

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

public class Question implements ActionListener
{
	private JFrame frame;
	private Container contentPane;
	private JButton startBtn,beforeBtn,nextBtn,exitBtn;
	private JTextField anwserText;	
	private Timer timer;
	private JLabel timeLbl,questionLbl;
	private int indext=1;//判断题目是序号
	private ManageQuestion mq=new ManageQuestion();
	private int find=10;
	private int flat;
	private String x;

	public Question()
	{	
		frame=new JFrame("答题界面");
		frame.setBounds(100,100,600,400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		contentPane=frame.getContentPane();
		initGUI();
	}
//*****************************************************************上
	public void initGUI()
	{
		//整体设计按钮
		contentPane.setLayout(new BorderLayout());
		JPanel p1=new JPanel(new FlowLayout(FlowLayout.LEFT));
	//	p1.setBackground(Color.pink);
		questionLbl=new JLabel("问题未启动,请点击start");
		p1.add(new JLabel("问题是:"));
		p1.add(questionLbl);	
		
		JPanel p2=new JPanel(new FlowLayout(FlowLayout.LEFT));	
	//	p2.setBackground(Color.pink);
		anwserText=new JTextField(10);
		p2.add(new JLabel("答案是:"));	
		p2.add(anwserText);

		JPanel p=new JPanel(new GridLayout(2,1));
		p.setBackground(Color.pink);
		p.add(p1);
		p.add(p2);

		startBtn=new JButton("开始");
		beforeBtn=new JButton("上一题");
		nextBtn=new JButton("下一题");
		exitBtn=new JButton("返回");
		JPanel p3=new JPanel(new FlowLayout());
	//	p3.setBackground(Color.pink);
		p3.add(startBtn);
		p3.add(beforeBtn);
		p3.add(nextBtn);
		p3.add(exitBtn);
		
		timeLbl=new JLabel("200");
		JPanel pp=new JPanel(new FlowLayout(FlowLayout.RIGHT));	
	//	pp.setBackground(Color.pink);
		pp.add(new JLabel("计时:"));
		pp.add(timeLbl);
		
		contentPane.add(pp,BorderLayout.NORTH);
		contentPane.add(p,BorderLayout.CENTER);
		contentPane.add(p3,BorderLayout.SOUTH);
		//对按钮进行监听
		anwserText.addActionListener(this);
		startBtn.addActionListener(this);
		beforeBtn.addActionListener(this);
		nextBtn.addActionListener(this);
		exitBtn.addActionListener(this);
		timer=new Timer(1000,this);
		startBtn.setEnabled(true);
		beforeBtn.setEnabled(false);
		nextBtn.setEnabled(false);
		exitBtn.setEnabled(true);
	}
//*****************************************************************下
	public void go()
	{
		frame.setVisible(true);
	}
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==startBtn)
		{
			//点击之后在屏幕上显示到记时并启动question和anwser
			
			timer.start();
			startBtn.setEnabled(false);
			beforeBtn.setEnabled(true);
			nextBtn.setEnabled(true);
			exitBtn.setEnabled(true);
			questionLbl.setText("");
			mq.setQuestion();
			questionLbl.setText(mq.getQuestion(indext)+"  =?");
			anwserText.grabFocus();
		}
		if(e.getSource()==beforeBtn)
		{
			//点击之后回退到上一个题目
			//判断是否有上一个题目如果没有则提示
			if(indext==1)
			{
				questionLbl.setText("操作失误");
			}
			//如果有的话则显示下一道题目
			if(indext>1)
			{
				indext--;
				questionLbl.setText("");
				if(indext<=9){
					x=anwserText.getText().trim();  //把上一道题目的大案记录到x中
					mq.setUserAnswer(x,(indext+1));
				}
				questionLbl.setText(mq.getQuestion(indext)+"  =?"+indext);
				anwserText.grabFocus();
				x=mq.getUserAnswer(indext);
				anwserText.setText(x);
			}
		}
		if(e.getSource()==nextBtn)
		{
			//点击之后快进到下一个题目
			//判断是否答完,如果答完了则进入成绩界面
			//如果没有答完则显示下一个题目
		   if(mq.getId()<=indext&&indext<11)
		   {
			indext++;
			if(indext<11&&indext>=2)
			{
				questionLbl.setText("");
				anwserText.grabFocus();
				x=anwserText.getText().trim();
				mq.setUserAnswer(x,(indext-1));
				mq.setQuestion();
				questionLbl.setText(mq.getQuestion(indext)+"  =?"+indext);
				anwserText.setText("");
			}
			else
			{
				x=anwserText.getText().trim();
				mq.setUserAnswer(x,(indext-1));
				questionLbl.setText("题目已经做完了!");
			}
		   }
		   else
		   {
			if(indext<11&&indext>=1)
			{
				indext++;
				questionLbl.setText("");
				if(indext>=1){
					x=anwserText.getText().trim();  //把上一道题目的大案记录到x中
					mq.setUserAnswer(x,(indext-1));
				}
				anwserText.setText("");
				anwserText.grabFocus();
				String s=mq.getUserAnswer(indext);
				anwserText.setText(s);
				questionLbl.setText(mq.getQuestion(indext)+"  =?"+indext);
			}
		   }
		  
		}
		if(e.getSource()==exitBtn)
		{	
			int t=Integer.parseInt(timeLbl.getText().trim());	
			//回到上一界面1时间小于X出现另一界面提示“如果退出成绩可能为零”
			if(t>=5)
			{
				(new InformFrame(2,"如果退出成绩可能为零,真的要退出吗?")).go();
			}
			//2时间大于X到另一界面提示“请检查,如果确定无误再选择退出"
			else
				(new InformFrame(2,"请检查,如果确定无误再选择退出")).go();
		}
		if(e.getSource()==timer)
		{
			int v=Integer.parseInt(timeLbl.getText().trim());
			v--;
			if(v==5)
			{
				(new InformFrame(1,"时间还剩下5秒钟")).go();
			}
			if(v==0)
			{
				timer.stop();
				startBtn.setEnabled(false);
				beforeBtn.setEnabled(false);
				nextBtn.setEnabled(false);
				timeLbl.setText("20");
				frame.dispose();
				(new Answer()).go();			
			}		
			timeLbl.setText(v+"");
		}
	}
//__________________________________________________________________
	//专门用于生产用户提示的各种信息框
	class InformFrame
	{
		private JFrame frame;
		private Container contentPane;
		private JLabel lbl;
		private JButton okBtn,exitBtn;
		private int id;
		private String informText; 
		
		public InformFrame(int id,String informText)
		{
			frame=new JFrame("信息提示!");
			frame.setBounds(200,500,300,170);
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			//设置大小可不可以改变
			frame.setResizable(false);
			contentPane=frame.getContentPane();
			this.id=id;
			this.informText=informText;
			initGUI();
		}
		public void initGUI()
		{
			contentPane.setLayout(new BorderLayout());
			lbl=new JLabel(informText);
			contentPane.add(lbl,BorderLayout.CENTER);
			contentPane.add(getPanel(id),BorderLayout.SOUTH);
				
		}
		//生产加载到contentPane中SOUTH区域的JPanel
		public JPanel getPanel(int id)
		{
			JPanel p=null;
			switch(id)
			{
				case 1:{
					okBtn=new JButton("确定");
					p=new JPanel(new FlowLayout());
					p.add(okBtn);
					okBtn.addActionListener(new ActionListener()
					{
						public void actionPerformed(ActionEvent e)
						{
						   frame.dispose();
						}
					});
					}break;
				case 2:{
					okBtn=new JButton("是");
					exitBtn=new JButton("否");
					p=new JPanel(new FlowLayout());
					p.add(okBtn);
					p.add(exitBtn);

					okBtn.addActionListener(new ActionListener()
					{
						public void actionPerformed(ActionEvent e)
						{
						   System.exit(0);
						}
					});
					exitBtn.addActionListener(new ActionListener()
					{
						public void actionPerformed(ActionEvent e)
						{
						   frame.dispose();
						}
					});
					}break;
			}
			return p;
		}
		public void go()
		{
			frame.setVisible(true);
		}
	}
//#######################################################################下
	public static void main(String args[])
	{
		(new Question()).go();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -