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()
}
}
}
}
}
}
Springboot+vue在线考试系统源码
开发语言:Java
数据库:Mysql
开发工具:Eclipse
使用技术:
后端:SpringBoot
前端:VUE 和 Element-UI
源码免费分享!
该项目是一个前后端分离,后端使用 SpringBoot,前端使用 VUE 和 Element-UI 组件库配合完成开发。共有三种角色:管理员、教师、学生。
运行环境:
1.运行环境:最好是java jdk 1.8
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可;
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目;
6.数据库:MySql 8.0版本。
主要功能有
一、管理员登录:
1. 考试管理:功能介绍、考试查阅、添加考试
2. 题库管理:功能介绍、所有题库、增加题库
3. 成绩查询:学生成绩查询
4. 学生管理:学生管理、添加学生
5. 教师管理:教师管理、添加教师
二、教师登录: 考试管理、题库管理、成绩查询、学生管理
三、学生登录: 我的试卷(试卷列表、考试)、我的练习、我的分数
源码免费分享!需要源码用来学习的小伙伴可以私信我:在线考试
如果您也喜欢这篇文章,记得点赞+关注+转发+评论哦![比心]