📄 shiti1.java
字号:
import java.io.*; import java.awt.*; import java.util.*; import javax.swing.*;
import java.awt.event.*; import javax.swing.border.*; import javax.swing.JOptionPane;
import java.io.FileOutputStream;
public class Shiti1 extends Dialog implements ActionListener,ItemListener {
Jishiqi jishi = new Jishiqi();
FileReader file; //定义文件
BufferedReader in;
String str1[] = new String[100];
String str2[] = new String[100];
Button Tijiao, Bquxiao, Kaikao, Next;
Panel Shijian = new Panel(new FlowLayout());
Panel Diyihang, Neirong, Daan, Xiayiti, qita;
TextField shi, fen, miao;
TextArea Timu;
Label shil, fenl, miaol, Tishishijian;
Checkbox Check1, Check2, Check3, Check4;
CheckboxGroup CheckGroup;
int jishuqi = -1;
int fenshu = 0;
public String Daan1[] = new String[100];
public String s;
public Shiti1(Frame f, String s, boolean b) {
super(f, s + "选择的是【试题一】测试文件", b);
this.s = s;
Toolkit tool = getToolkit();
Dimension dim = tool.getScreenSize();
setBounds(dim.width / 2 - 250, dim.height / 2 - 200, 500, 400);
Next = new Button("下一题");
//计时控件↓
Tishishijian = new Label("剩余时间为:");
Diyihang = new Panel();
Neirong = new Panel();
Daan = new Panel();
Xiayiti = new Panel();
qita = new Panel();
shi = new TextField();
fen = new TextField();
miao = new TextField();
shil = new Label("时");
fenl = new Label("分");
miaol = new Label("秒");
Shijian.add(Tishishijian);
Shijian.add(shi);
Shijian.add(shil);
Shijian.add(fen);
Shijian.add(fenl);
Shijian.add(miao);
Shijian.add(miao);
shi.setEnabled(false);
fen.setEnabled(false);
miao.setEnabled(false);
//计时控件↑
//存放用户答案
Kaikao = new Button("开始考试");
Tijiao = new Button("提交");
Bquxiao = new Button("取消");
Diyihang.add(Shijian);
Diyihang.add(Kaikao);
Kaikao.addActionListener(this);
Tijiao.setEnabled(false);
Diyihang.add(Tijiao);
Tijiao.addActionListener(this);
Diyihang.add(Bquxiao);
Bquxiao.addActionListener(this);
Timu = new TextArea("欢迎使用标准化考试系统,单击【开始考试】开始答题!", 4, 55,
Timu.SCROLLBARS_VERTICAL_ONLY);
Timu.setEditable(false);
CheckGroup = new CheckboxGroup();
Check1 = new Checkbox("", false, CheckGroup);
Check2 = new Checkbox("", false, CheckGroup);
Check3 = new Checkbox("", false, CheckGroup);
Check4 = new Checkbox("", false, CheckGroup);
Neirong.add(Timu, BorderLayout.NORTH);
Daan.add(Check1);
Check1.addItemListener(this);
Daan.add(Check2);
Check2.addItemListener(this);
Daan.add(Check3);
Check3.addItemListener(this);
Daan.add(Check4);
Check4.addItemListener(this);
Daan.setVisible(false);
Xiayiti.add(Next);
Next.addActionListener(this);
add(Diyihang);
Diyihang.setBounds(10, 20, 480, 40);
add(Neirong);
Neirong.setBounds(10, 60, 480, 105);
add(Daan);
Daan.setBounds(10, 170, 480, 150);
add(Xiayiti);
Xiayiti.setBounds(10, 330, 480, 40);
Next.setVisible(false);
add(qita);
Timu.setFont(new Font("宋体", Font.PLAIN, 15));
//提取出试题中的答案和时间
while (true) {
try {
file = new FileReader("tdata/han1.txt");
in = new BufferedReader(file);
for (int i = 0; i < 2; i++) { //str[0]为答案,str[1]为时间
str1[i] = in.readLine();
}
} catch (Exception ee) {
JOptionPane.showMessageDialog(this, ee);
}
//添加答案
StringTokenizer tokenizer = new StringTokenizer(str1[0], ":");
int j = 0;
while (tokenizer.hasMoreTokens()) {
Daan1[j] = tokenizer.nextToken();
j++;
}
//添加时间↓
StringTokenizer tokenizertime = new StringTokenizer(str1[1], ":");
String time[] = new String[10];
int jj = 0;
while (tokenizertime.hasMoreTokens()) {
time[jj] = tokenizertime.nextToken();
jj++;
}
shi.setText(time[0]);
fen.setText(time[1]);
miao.setText(time[2]);
//添加时间↑
break; //退出试题添加
}
//关闭窗体↓
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
gb();
}
});
//关闭窗体↑
validate();
setVisible(true);
}
public void gb() {
int j = JOptionPane.showConfirmDialog(this, "确认退出答题?此次退出不会产生任何成绩的记录!",
"退出确认", JOptionPane.YES_NO_OPTION);
if (j == JOptionPane.YES_OPTION) {
//判断并提交分数
JOptionPane.showMessageDialog(this, "退出答题成功!");
this.setVisible(false);
} else {
//计算分数并返回
JOptionPane.showMessageDialog(this, "您取消了退出答题操作,可以继续答题!");
}
}
public void PanduanFenshu() {
try {
for (int i = 0; i < 30; i++) {
if (!str2[i].equals(null))
if (Daan1[i].equals(str2[i])) {
fenshu = fenshu + 1;
}
}
} catch (Exception ee) {
System.out.println("异常:" + ee);
}
}
public void itemStateChanged(ItemEvent e) {
if (e.getSource() == Check1) {
str2[jishuqi] = "A";
}
if (e.getSource() == Check2) {
str2[jishuqi] = "B";
}
if (e.getSource() == Check3) {
str2[jishuqi] = "C";
}
if (e.getSource() == Check4) {
str2[jishuqi] = "D";
}
}
public void ZidongTijiaoshiti() {
//时间到,自动提交分数
JOptionPane.showMessageDialog(this, "考试时间已到,不可以继续答题,系统将自动交卷!");
//判断答案分数↓
PanduanFenshu();
//判断分数↑
JOptionPane.showMessageDialog(this, "您的得分为:" + String.valueOf(fenshu));
//将得分写入文件
File jilu = new File("userdata/" + s + ".txt");
try {
RandomAccessFile out = new RandomAccessFile(jilu, "rw");
if (jilu.exists()) {
long length = out.length();
out.seek(length);
}
out.writeBytes("The Text 1 : " + String.valueOf(fenshu) + '\n');
out.close();
} catch (Exception eee) {
JOptionPane.showMessageDialog(this, eee);
}
//关闭答题窗体
this.setVisible(false);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == Tijiao) {
int j = JOptionPane.showConfirmDialog(this, "确认提交答案?提交以后答案不可再更改!",
"提交确认",
JOptionPane.YES_NO_OPTION);
if (j == JOptionPane.YES_OPTION) {
//判断并提交分数
JOptionPane.showMessageDialog(this, "您选择了提交试题操作,不可以继续答题!");
//判断答案分数↓
PanduanFenshu();
//判断分数↑
JOptionPane.showMessageDialog(this,
"您的得分为:" + String.valueOf(fenshu));
//将得分写入文件
File jilu = new File("userdata/" + s + ".txt");
try {
RandomAccessFile out = new RandomAccessFile(jilu, "rw");
if (jilu.exists()) {
long length = out.length();
out.seek(length);
}
out.writeBytes("The Text 1 : " + String.valueOf(fenshu) +
'\n');
out.close();
} catch (Exception eee) {
JOptionPane.showMessageDialog(this, eee);
}
//关闭答题窗体
this.setVisible(false);
} else {
JOptionPane.showMessageDialog(this, "您取消了提交试题操作,可以继续答题!");
}
}
if (e.getSource() == Bquxiao) {
int j = JOptionPane.showConfirmDialog(this,
"确认退出答题?此次退出不会产生任何成绩的记录!",
"退出确认",
JOptionPane.YES_NO_OPTION);
if (j == JOptionPane.YES_OPTION) {
//判断并提交分数
JOptionPane.showMessageDialog(this, "退出答题成功!");
this.setVisible(false);
} else {
JOptionPane.showMessageDialog(this, "您取消了退出答题操作,可以继续答题!");
}
}
if (e.getSource() == Kaikao) {
Next.setVisible(true);
Daan.setVisible(true);
Kaikao.setEnabled(false);
Tijiao.setEnabled(true);
validate();
jishi.start();
}
if (e.getSource() == Next || e.getSource() == Kaikao) {
jishuqi++;
try {
str1[2] = in.readLine(); //读取*号
if ((str1[2].startsWith("*"))) {
str1[3] = in.readLine(); //读取题目
if (str1[3].startsWith("endend")) {
Timu.setVisible(false);
Check1.setVisible(false);
Check2.setVisible(false);
Check3.setVisible(false);
Check4.setVisible(false);
Next.setLabel("测试完成,您可以提交答案!");
Next.setEnabled(false);
validate();
} else {
str1[4] = in.readLine(); // 读取答案
StringTokenizer daan = new StringTokenizer(str1[4],
"^");
String da[] = new String[10];
int j = 0;
while (daan.hasMoreTokens()) {
da[j] = daan.nextToken();
j++;
}
Timu.setText(str1[3]);
Check1.setLabel(da[0]);
Check2.setLabel(da[1]);
Check3.setLabel(da[2]);
Check4.setLabel(da[3]);
validate();
}
}
} catch (Exception ee) {
JOptionPane.showMessageDialog(this, ee);
}
}
}
class Jishiqi extends Thread {
public void run() {
while (!(shi.getText().equals("0") && fen.getText().equals("0")
&& miao.getText().equals("0"))) {
//时间加减
if (Integer.parseInt(miao.getText()) == 0) {
if (Integer.parseInt(fen.getText()) == 0) {
if (Integer.parseInt(shi.getText()) == 0) {
//停止考试判断分数
ZidongTijiaoshiti();
break;
} else {
shi.setText(String.valueOf(Integer.parseInt(shi.
getText()) - 1));
fen.setText("59");
miao.setText("59");
}
} else {
fen.setText(String.valueOf(Integer.parseInt(fen.
getText()) - 1));
miao.setText("59");
}
} else {
try {
miao.setText(String.valueOf(Integer.parseInt(miao.
getText()) - 1));
Thread.sleep(1000);
} catch (Exception e){}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -