import java.awt.*
import java.awt.event.*
import javax.swing.*
public class EnglishTest extends JFrame
{
TestArea testPanel=null
Container con=null
public EnglishTest()
{
super("模拟考试")
testPanel=new TestArea()
con=getContentPane()
con.add(testPanel,BorderLayout.CENTER)
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0)
}
})
setVisible(true)
setBounds(60,40,660,460)
con.validate()
validate()
}
public static void main(String args[])
{
new EnglishTest()
}
}
//读取试题 ReadTestquestion
import java.io.*
import java.util.*
public class ReadTestquestion
{ String filename="",
correctAnswer="",
testContent="" ,
selection=""
int score=0
long time=0
boolean 完成考试=false
File f=null
FileReader in=null
BufferedReader 读取=null
public void setFilename(String name)
{ filename=name
score=0
selection=""
try {
if(in!=null&&读取!=null)
{
in.close()
读取.close()
}
f=new File(filename)
in=new FileReader(f)
读取=new BufferedReader(in)
correctAnswer=(读取.readLine()).trim()
String temp=(读取.readLine()).trim()
StringTokenizer token=new StringTokenizer(temp,":")
int hour=Integer.parseInt(token.nextToken())
int minute=Integer.parseInt(token.nextToken())
int second=Integer.parseInt(token.nextToken())
time=1000*(second+minute*60+hour*60*60)
}
catch(Exception e)
{
testContent="没有选择试题"
}
}
public String getFilename()
{
return filename
}
public long getTime()
{
return time
}
public void set完成考试(boolean b)
{
完成考试=b
}
public boolean get完成考试()
{
return 完成考试
}
public String getTestContent()
{ try {
String s=null
StringBuffer temp=new StringBuffer()
if(读取!=null)
{
while((s=读取.readLine())!=null)
{
if(s.startsWith("**"))
break
temp.append("\n"+s)
if(s.startsWith("endend"))
{
in.close()
读取.close()
完成考试=true
}
}
testContent=new String(temp)
}
else
{
testContent=new String("没有选择试题")
}
}
catch(Exception e)
{
testContent="试题内容为空,考试结束!!"
}
return testContent
}
public void setSelection(String s)
{
selection=selection+s
}
public int getScore()
{ score=0
int length1=selection.length()
int length2=correctAnswer.length()
int min=Math.min(length1,length2)
for(int i=0i<mini++)
{ try{
if(selection.charAt(i)==correctAnswer.charAt(i))
score++
}
catch(StringIndexOutOfBoundsException e)
{
i=0
}
}
return score
}20:10 03-8-31
public String getMessages()
{
int length1=selection.length()
int length2=correctAnswer.length()
int length=Math.min(length1,length2)
String message="正确答案:"+correctAnswer.substring(0,length)+"\n"+
"你的回答:"+selection+"\n"
return message
}
}
//考试区域TestArea
import java.awt.*
import javax.swing.*
import java.awt.event.*
import java.io.*
class FileName implements FilenameFilter
{
String str=null
FileName (String s)
{
str="."+s
}
public boolean accept(File dir,String name)
{
return name.endsWith(str)
}
}
public class TestArea extends JPanel implements ActionListener,ItemListener,Runnable
{
Choice list=null
JTextArea 试题显示区=null,消息区=null
JCheckBox box[]
JButton 提交该题答案,读取下一题,查看分数
ReadTestquestion 读取试题=null
JLabel welcomeLabel=null
Thread countTime=null
long time=0
JTextField timeShow=null
boolean 是否关闭计时器=false,
是否暂停计时=false
JButton 暂停或继续计时=null
public TestArea()
{
list= new Choice()
String 当前目录=System.getProperty("user.dir")
File dir=new File(当前目录)
FileName fileTxt=new FileName("txt")
String fileName[]=dir.list(fileTxt)
for(int i=0i<fileName.lengthi++)
{
list.add(fileName[i])
}
试题显示区=new JTextArea(15,12)
试题显示区.setLineWrap(true)
试题显示区.setWrapStyleWord(true)
试题显示区.setFont(new Font("TimesRoman",Font.PLAIN,14))
试题显示区.setForeground(Color.blue)
消息区=new JTextArea(8,8)
消息区.setForeground(Color.blue)
消息区.setLineWrap(true)
消息区.setWrapStyleWord(true)
countTime=new Thread(this)
String s[]={"A","B","C","D"}
box=new JCheckBox[4]
for(int i=0i<4i++)
{
box[i]=new JCheckBox(s[i])
}
暂停或继续计时=new JButton("暂停计时")
暂停或继续计时.addActionListener(this)
提交该题答案=new JButton("提交该题答案")
读取下一题=new JButton("读取第一题")
读取下一题.setForeground(Color.blue)
提交该题答案.setForeground(Color.blue)
查看分数=new JButton("查看分数")
查看分数.setForeground(Color.blue)
提交该题答案.setEnabled(false)
提交该题答案.addActionListener(this)
读取下一题.addActionListener(this)
查看分数.addActionListener(this)
list.addItemListener(this)
读取试题=new ReadTestquestion()
JPanel pAddbox=new JPanel()
for(int i=0i<4i++)
{
pAddbox.add(box[i])
}
Box boxH1=Box.createVerticalBox(),
boxH2=Box.createVerticalBox(),
baseBox=Box.createHorizontalBox()
boxH1.add(new JLabel("选择试题文件"))
boxH1.add(list)
boxH1.add(new JScrollPane(消息区))
boxH1.add(查看分数)
timeShow=new JTextField(20)
timeShow.setHorizontalAlignment(SwingConstants.RIGHT)
timeShow.setEditable(false)
JPanel p1=new JPanel()
p1.add(new JLabel("剩余时间:"))
p1.add(timeShow)
p1.add(暂停或继续计时)
boxH1.add(p1)
boxH2.add(new JLabel("试题内容:"))
boxH2.add(new JScrollPane(试题显示区))
JPanel p2=new JPanel()
p2.add(pAddbox)
p2.add(提交该题答案)
p2.add(读取下一题)
boxH2.add(p2)
baseBox.add(boxH1)
baseBox.add(boxH2)
setLayout(new BorderLayout())
add(baseBox,BorderLayout.CENTER)
welcomeLabel=new JLabel("欢迎考试,提高英语水平",JLabel.CENTER)
welcomeLabel.setFont(new Font("隶书",Font.PLAIN,24))
welcomeLabel.setForeground(Color.blue)
add(welcomeLabel,BorderLayout.NORTH)
}
public void itemStateChanged(ItemEvent e)
{
timeShow.setText(null)
是否关闭计时器=false
是否暂停计时=false
暂停或继续计时.setText("暂停计时")
String name=(String)list.getSelectedItem()
读取试题.setFilename(name)
读取试题.set完成考试(false)
time=读取试题.getTime()
if(countTime.isAlive())
{
是否关闭计时器=true
countTime.interrupt()
}
countTime=new Thread(this)
消息区.setText(null)
试题显示区.setText(null)
读取下一题.setText("读取第一题")
提交该题答案.setEnabled(false)
读取下一题.setEnabled(true)
welcomeLabel.setText("欢迎考试,你选择的试题:"+读取试题.getFilename())
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==读取下一题)
{
读取下一题.setText("读取下一题")
提交该题答案.setEnabled(true)
String contentTest=读取试题.getTestContent()
试题显示区.setText(contentTest)
消息区.setText(null)
读取下一题.setEnabled(false)
try {
countTime.start()
}
catch(Exception event)
{
}
}
if(e.getSource()==提交该题答案)
{
读取下一题.setEnabled(true)
提交该题答案.setEnabled(false)
String answer="?"
for(int i=0i<4i++)
{
if(box[i].isSelected())
{
answer=box[i].getText()
box[i].setSelected(false)
break
}
}
读取试题.setSelection(answer)
}
if(e.getSource()==查看分数)
{
int score=读取试题.getScore()
String messages=读取试题.getMessages()
消息区.setText("分数:"+score+"\n"+messages)
}
if(e.getSource()==暂停或继续计时)
{
if(是否暂停计时==false)
{
暂停或继续计时.setText("继续计时")
是否暂停计时=true
}
else if(是否暂停计时==true)
{
暂停或继续计时.setText("暂停计时")
是否暂停计时=false
countTime.interrupt()
}
}
}
public synchronized void run()
{
while(true)
{
if(time<=0)
{
是否关闭计时器=true
countTime.interrupt()
提交该题答案.setEnabled(false)
读取下一题.setEnabled(false)
timeShow.setText("用时尽,考试结束")
}
else if(读取试题.get完成考试())
{
是否关闭计时器=true
timeShow.setText("考试效果:分数*剩余时间(秒)="+1.0*读取试题.getScore()*(time/1000))
countTime.interrupt()
提交该题答案.setEnabled(false)
读取下一题.setEnabled(false)
}
else if(time>=1)
{
time=time-1000
long leftTime=time/1000
long leftHour=leftTime/3600
long leftMinute=(leftTime-leftHour*3600)/60
long leftSecond=leftTime%60
timeShow.setText(""+leftHour+"小时"+leftMinute+"分"+leftSecond+"秒")
}
try
{
Thread.sleep(1000)
}
catch(InterruptedException ee)
{
if(是否关闭计时器==true)
return
}
while(是否暂停计时==true)
{
try
{
wait()
}
catch(InterruptedException ee)
{
if(是否暂停计时==false)
{
notifyAll()
}
}
}
}
}
}
考试云就是这样一个好的考试系统,拥有如下特点:
1、支持新增考生信息,可以使用Excel模板批量导入考生信息;可以进行组无限层级织架构的建设,分部门分组管理考生信息。
2、支持可视化批量新增试题,支持word、Excel、TXT导题模板一键导入试题;导入试题时,系统会自动检测相似题目和试题格式,并给出相应的提示,避免试题的重复录入。
3、支持免登录、口令、免登录+口令、账号密码四种考生参加考试的方式;支持固定试卷、抽题试卷、随机试卷三种试卷类型,可以根据考试业务灵活组卷。
4、有模拟考场环境的参数设置,如考试时间、答题时长、参考次数、成绩显示等;还有防止作弊的措施,如人脸识别、视频抓怕监考、随机打乱试题顺序、禁止考试中途切屏、禁止考生复制、粘贴等 *** 作。
5、支持自动阅卷,主观题可设置得分点、关键词进行判卷,具备多维度的成绩统计分析,让考试结果一目了然。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)