📄 englishtest.java
字号:
//package kaoshi;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.net.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
public class EnglishTest implements ActionListener,Runnable
{
JFrame JF;
static JTextArea messageArea,questionArea;
JButton button=new JButton("发放试卷");
JButton button1=new JButton("查看成绩");
JButton button2=new JButton("请选择试题文件");
JCheckBox box[];
JFileChooser filechooser=null;
FileReader in=null;
BufferedReader bread=null;
File file=null;
static Socket socket1;
static Thread t;
static BufferedReader inn;
static PrintWriter outshiti;
static PrintWriter outfenshu;
static int Num=0;
static String selection;
static String correct;
static int score=0;
public EnglishTest(Socket socket)
{
socket1=socket;
}
public EnglishTest()
{
JF=new JFrame();
JF.setBounds(60,40,660,460);
questionArea=new JTextArea(15,12);
questionArea.setFont(new Font("TimesRoman",Font.PLAIN,14));
questionArea.setForeground(Color.blue);
messageArea=new JTextArea(8,8);
messageArea.setForeground(Color.blue);
messageArea.setLineWrap(true);
messageArea.setWrapStyleWord(true);
Box boxh1=Box.createVerticalBox(), boxh2=Box.createVerticalBox(),basebox=Box.createHorizontalBox();
boxh1.add(new JLabel("选择试题文件"));
boxh1.add(button2);
boxh1.add(new JScrollPane(messageArea));
boxh2.add(new JLabel("试题内容"));
boxh2.add(new JScrollPane(questionArea));
JPanel p2=new JPanel();
p2.add(button);
p2.add(button1);
boxh2.add(p2);
basebox.add(boxh1);
basebox.add(boxh2);
JF.getContentPane().setLayout(new BorderLayout());
JF.getContentPane().add(basebox,BorderLayout.CENTER);
button2.addActionListener(this);
button1.addActionListener(this);
button.addActionListener(this);
filechooser=new JFileChooser("E:\\");
filechooser.setControlButtonsAreShown(true);
filechooser.addChoosableFileFilter(new MyFileFilter("txt"));
JF.show();
}
public static void main(String args[])
{
new EnglishTest();
try
{
ServerSocket server=new ServerSocket(1680);
messageArea.append("\n"+"请选择试题文件");
for(int i=1;i<=4;i++)
{
Socket socket=server.accept();
messageArea.append("\n"+"已经与第" +i+ "个考生连接成功!!! 请发放试卷");
t=new Thread(new EnglishTest(socket));
}
System.out.println("发送完毕");
// server.close();
}catch (Exception e1){System.out.print("在第1个try处有异常");}
}
//
public void actionPerformed(ActionEvent e1)
{
int result;
System.out.println(e1.getActionCommand());
if (e1.getActionCommand()=="请选择试题文件")
{
filechooser.setDialogTitle("open");
result = filechooser.showOpenDialog(JF);
if (result == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
messageArea.append("\n"+"本次考试的为:" + file.getName());
questionArea.setText(" ");
} else if (result == JFileChooser.CANCEL_OPTION) {
messageArea.append("您没有选择任何试题");
}
if (file != null)
{
String s;
try {
in = new FileReader(file);
bread = new BufferedReader(in);
correct=bread.readLine();
messageArea.append("\n" + "本套试题的正确答案是: " + correct);
} catch (IOException e2) {System.out.print("在第2个try处有异常");}
try
{
while ((s = bread.readLine()) != null)
{
questionArea.append("\n" + s);
}
} catch (IOException e3) { System.out.println("在第3个try处有异常"); }
}
messageArea.append("\n"+"*****************************");
messageArea.append("\n"+"正等待考生的连接.......");
}
else if(e1.getActionCommand()=="发放试卷")
{
t.start();
}
// else if(e1.getActionCommand()=="查看成绩")
// {
//
// messageArea.append("\n"+"成绩::"+ getScore());
// messageArea.append("\n"+"第" +mynum+"个考生的分数:"+ getScore());
//
// }
}
public void run()
{
int mynum=++Num;
int score=0;
String st;
try
{
inn=new BufferedReader(new InputStreamReader(socket1.getInputStream()));
outshiti=new PrintWriter(socket1.getOutputStream());
outshiti.println(questionArea.getText());
outshiti.flush();
st=inn.readLine();
messageArea.append("\n"+"来自第" +mynum+"个考生的答案:" +st);
setSelection(st);
score=getScore();
// messageArea.append("\n"+"第" +mynum+"个考生的分数:"+ score);
outshiti.println(score);
outshiti.flush();
}catch(Exception e5){System.out.print("在第5个try处有异常");}
}
public void setSelection(String s)
{
selection=s;
}
public int getScore()
{
score=0;
int length1=selection.length();
int length2=correct.length();
int min =Math.min(length1,length2);
for(int i=0;i<min;i++)
{
try
{
if(selection.charAt(i)==correct.charAt(i))
score++;
}catch(Exception e6)
{
i=0;
}
}
return score;
}
}
class MyFileFilter extends FileFilter
{
String str;
public MyFileFilter(String str)
{
this.str=str;
}
public boolean accept(File file)
{
if(file.isDirectory())
return true;
String filename=file.getName();
int index=filename.lastIndexOf('.');
if(index>0&&index<filename.length()-1)
{
String ss=filename.substring(index+1).toLowerCase();
if(ss.equals(str))
return true;
}
return false;
}
public String getDescription()
{
if(str.equals("txt")){return "TxtFile(*.txt)";}
return "";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -