⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiti1.java

📁 秩序更改试题库
💻 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 + -