学生考试管理系统,JAva源代码

学生考试管理系统,JAva源代码,第1张

//主类EnglishTest——

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、支持自动阅卷,主观题可设置得分点、关键词进行判卷,具备多维度的成绩统计分析,让考试结果一目了然。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8175960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存