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

📄 exam.java

📁 可以通过该程序方便管理考试系统
💻 JAVA
字号:
package project;
 

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
public class Exam extends JFrame implements ActionListener,ItemListener
{
	String question[]=new String[100];
	String answer[]=new String[100];
	String userAnswer[]=new String[100];
	int type[]=new int[100];
	int amount;
	int bh=0;
	String ch[]={"A","B","C","D","E"};
	Checkbox cb[]=new Checkbox[5];
	Checkbox radio[]=new Checkbox[5];
	TextArea content;
	Button ok;
	Button next;
	Button previous;
	Panel answercard;
	Label hint;
	CountTime remain;
	final int examtime=5400;
	public Exam()
	{
		super("考试系统");
		readQuestion();
		for(int i=0;i<amount;i++)
		{
			userAnswer[i]="";
		}
		setLayout(new BorderLayout());
		Panel up=new Panel();
		hint=new Label("共有?道试题,第?题");
		ok=new Button("交卷");
		up.add(hint);
		up.add(ok);
		remain=new CountTime(examtime,this);
		up.add(remain);
		new Thread(remain).start();
		add("North",up);
		Panel middle=new Panel();
		content=new TextArea(10,50);
		middle.add("Center",content);
		content.setText(question[bh]);
		
		Panel duoxuan=new Panel();
		duoxuan.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
		for(int i=0;i<5;i++)
		{
			cb[i]=new Checkbox(ch[i]);
			duoxuan.add(cb[i]);
			cb[i].addItemListener(this);
		}
		Panel danxuan=new Panel();
		CheckboxGroup style=new CheckboxGroup();
		danxuan.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
		for(int i=0;i<5;i++)
		{
			radio[i]=new Checkbox(ch[i],false,style);
			danxuan.add(radio[i]);
			radio[i].addItemListener(this);
		}
		answercard=new Panel();
		answercard.setLayout(new CardLayout());
		answercard.add(danxuan,"singlechoice");
		answercard.add(duoxuan,"multichoice");
		middle.add("South",answercard);
		add( "Center" , middle );
		display_ans();
		Panel bottom=new Panel();
		previous=new Button("上一题");
		bottom.add(previous);
		next=new Button("下一题");
		bottom.add(next);
		add("South",bottom);
		ok.addActionListener(this);
		next.addActionListener(this);
		previous.addActionListener(this);
		setSize(400,350);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	public void display_ans()
	{
		hint.setText("共有"+amount+"道试题,第"+(bh+1)+"题");
		CardLayout lay=(CardLayout)answercard.getLayout();
		if(type[bh]==1)
		{
			lay.show(answercard, "singlechoice");
			for(int i=0;i<5;i++)
			{
				if(userAnswer[bh].equals(ch[i]))
				{
					radio[i].setState(true);
				}
			}
		}
		else
		{
			lay.show(answercard, "multichoice");
			for(int i=0;i<5;i++)
			{
				cb[i].setState(false);
				if( userAnswer[bh].length( ) > 0 )
				{
					if( userAnswer[bh].indexOf( ch[i] ) != -1 )
					{
						cb[i].setState(true);
					}
				}
			}
		}
	}
	public int givescore()
	{
		int score=0;
		for(int i=0;i<amount;i++)
		{
			if(userAnswer[i].equals(answer[i]))
			{
				score=score+1;
			}
		}
		return(int)(score*100/amount);
	}
	public void itemStateChanged(ItemEvent e)
	{
		String s="";
		if(type[bh]==1)
		{
			s=((Checkbox)e.getItemSelectable()).getLabel();
		}
		else
		{
			for(int i=0;i<ch.length;i++)
				if(cb[i].getState())
					s=s+cb[i].getLabel();
		}
		userAnswer[bh]=s;
	}
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==next)
		{
			if(bh<amount)
				bh++;
			content.setText(question[bh]);
			display_ans();		
		}
		else if(e.getSource()==previous)
		{
			if(bh>0)
				bh--;
			content.setText(question[bh]);
			display_ans();
		}
		else
		{
			new myDialog(this,"分数="+this.givescore());
		}
	}
	public static void main(String a[])
	{
		new Exam();
	}

    public void readQuestion()
    {
    	int stbh=0;
    	String driver="com.mysql.jdbc.Driver";
		String url="jdbc:mysql://localhost:3306/mydata";
		String user="root";
		String password="861023";
		String sql="SELECT * FROM exampaper";
    	try
    	{
    		Class.forName(driver);
    	}
    	catch(java.lang.ClassNotFoundException e){}
    	try
    	{
    		Connection con=DriverManager.getConnection(url,user,password);
    		Statement stmt=con.createStatement();
    		ResultSet rs=stmt.executeQuery(sql);
    		while(rs.next())
    		{
    			question[stbh]=rs.getString("content");
    			answer[stbh]=rs.getString("answer");
    			type[stbh]=rs.getInt("type");
    			stbh++;
    		}
    		amount=stbh;
    	}
    	catch(SQLException ex)
    	{
    		System.out.println(ex.getMessage());
    	}
    }
}
class CountTime extends JLabel implements Runnable
{
    int totalTime;
    int startTime;
    Exam my;
    
    public CountTime(int seconds,Exam testframe)
    {
    	totalTime=seconds;
    	my=testframe;
    	java.util.Date timeer=new java.util.Date();
    	Calendar rightNow=Calendar.getInstance();
    	int h=rightNow.get(Calendar.HOUR_OF_DAY);
    	int m=rightNow.get(Calendar.MINUTE);
    	int s=rightNow.get(Calendar.SECOND);
    	startTime=h*3600+m*60+s;
    }
    public void run()
    {
    	for(;;)
    	{
    		java.util.Date timeer=new java.util.Date();
    		Calendar rightNow=Calendar.getInstance();
        	int h=rightNow.get(Calendar.HOUR_OF_DAY);
        	int m=rightNow.get(Calendar.MINUTE);
        	int s=rightNow.get(Calendar.SECOND);
        	int remain=totalTime-(h*3600+m*60+s-startTime);
        	if(remain<0)
        	{
        		new myDialog(my,"分数"+my.givescore());
        	}
        	int remainh=(int)(remain/3600);
        	int remainm=(int)((remain-remainh*3600)/60);
        	int remains=remain-remainh*3600-remainm*60;
        	String msg="剩余时间:"+remainh+":"+remainm+":"+remains;
        	setText(msg);
        	try
        	{
        		Thread.currentThread().sleep(1000);
        	}
        	catch(InterruptedException e){}
    	}
    }
}
class myDialog extends JDialog implements ActionListener
{
	public myDialog(Frame parent,String title)
	{
		super(parent,title,true);
		setLayout(new FlowLayout());
		Button ok=new Button("确认");
		add(ok);
		ok.addActionListener(this);
		this.setSize(80,80);
		this.setLocation(300,300);
		this.setVisible(true);
	}
	public void actionPerformed(ActionEvent e)
	{
		this.dispose();
		System.exit(0);
	}
}

⌨️ 快捷键说明

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