zoukankan      html  css  js  c++  java
  • 结对作业(1.0版)(bug1已修复)

    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import java.awt.Font;
    import javax.swing.JTextPane;
    import javax.swing.JButton;
    import java.awt.Color;
    import javax.swing.JTextField;
    import javax.swing.JLabel;
    import java.awt.event.*;
    import java.util.Random;
    
    public class SiZeYunSuan {
    
        private JFrame frame;
        private JTextField textField;
        private JTextField textField_1;
        private JTextField textField_2;
        private JTextField textField_3;
        int num=5,T=0,F=0,count=1;
        int ranswer=0;                 
        int uanswer=0;                 
        private JTextField textField_4;
        private JTextField textField_5;
        private JTextField textField_6;
        private JTextField textField_7;
        private boolean stop = false;
        String str="";
        String z="";
        JTextPane textPane = new JTextPane();
        JButton button = new JButton("u5F00u59CBu7B54u9898");
        long startTime;
        long endTime;
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        SiZeYunSuan window = new SiZeYunSuan();
                        window.frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
        /**
         * Create the application.
         */
        public SiZeYunSuan() {
            initialize();    
        }
    
        /**
         * Initialize the contents of the frame.
         */
        private void initialize() {
            frame = new JFrame();
            frame.setResizable(false);
            
            JPanel panel = new JPanel();
            GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
            groupLayout.setHorizontalGroup(
                groupLayout.createParallelGroup(Alignment.LEADING)
                    .addGroup(groupLayout.createSequentialGroup()
                        .addComponent(panel, GroupLayout.PREFERRED_SIZE, 448, GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
            groupLayout.setVerticalGroup(
                groupLayout.createParallelGroup(Alignment.LEADING)
                    .addComponent(panel, GroupLayout.PREFERRED_SIZE, 487, Short.MAX_VALUE)
            );
            
            
            textPane.setFont(new Font("Microsoft Sans Serif", Font.BOLD, 22));
            textPane.setEditable(false);
            textPane.setToolTipText("");
            textPane.setBackground(Color.WHITE);
            
            JPanel panel_1 = new JPanel();
            panel_1.setBackground(new Color(204, 204, 204));
            
            
            button.setBackground(Color.GREEN);
            
            JButton button_1 = new JButton("u9000u51FA");
            button_1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });
            button_1.setBackground(Color.RED);
            
            JLabel lblNewLabel = new JLabel(" u8F93u5165u9898u6570uFF1A");
            lblNewLabel.setFont(new Font("楷体_GB2312", Font.PLAIN, 15));
            lblNewLabel.setForeground(new Color(0, 0, 0));
            
            JLabel label = new JLabel(" u7B54u5BF9u9898u6570uFF1A");
            label.setFont(new Font("楷体_GB2312", Font.PLAIN, 15));
            
            JLabel label_1 = new JLabel(" u7B54u9519u9898u6570uFF1A");
            label_1.setFont(new Font("楷体_GB2312", Font.PLAIN, 15));
            
            JLabel label_2 = new JLabel(" u4FE1u606Fu53CDu9988uFF1A");
            label_2.setFont(new Font("楷体_GB2312", Font.PLAIN, 15));
            
            textField = new JTextField();
            textField.setColumns(10);
            
            textField_1 = new JTextField();
            textField_1.setForeground(Color.GREEN);
            textField_1.setEditable(false);
            textField_1.setColumns(10);
            
            textField_2 = new JTextField();
            textField_2.setForeground(Color.RED);
            textField_2.setEditable(false);
            textField_2.setColumns(10);
            
            textField_3 = new JTextField();
            textField_3.setFont(new Font("宋体", Font.PLAIN, 12));
            textField_3.setForeground(Color.RED);
            textField_3.setEditable(false);
            textField_3.setColumns(10);
            
            JLabel label_3 = new JLabel(" u6B63u786Eu7B54u6848uFF1A");
            label_3.setFont(new Font("Dialog", Font.PLAIN, 15));
            
            JLabel label_4 = new JLabel(" u8F93u5165u7B54u6848uFF1A");
            label_4.setFont(new Font("Dialog", Font.PLAIN, 15));
            
            JLabel label_5 = new JLabel(" u5F53u524Du9898u6570uFF1A");
            label_5.setFont(new Font("Dialog", Font.PLAIN, 15));
            
            textField_4 = new JTextField();
            textField_4.setEditable(false);
            textField_4.setColumns(10);
            
            textField_5 = new JTextField();
            textField_5.setColumns(10);
            
            textField_6 = new JTextField();
            textField_6.setFont(new Font("Yu Gothic", Font.BOLD, 14));
            textField_6.setForeground(Color.CYAN);
            textField_6.setEditable(false);
            textField_6.setColumns(10);
            
            JLabel label_6 = new JLabel(" u6240u7528u65F6u95F4uFF1A");
            label_6.setFont(new Font("Dialog", Font.PLAIN, 15));
            
            textField_7 = new JTextField();
            textField_7.setFont(new Font("宋体", Font.PLAIN, 14));
            textField_7.setEditable(false);
            textField_7.setColumns(10);
            GroupLayout gl_panel_1 = new GroupLayout(panel_1);
            gl_panel_1.setHorizontalGroup(
                gl_panel_1.createParallelGroup(Alignment.TRAILING)
                    .addGroup(gl_panel_1.createSequentialGroup()
                        .addGap(11)
                        .addComponent(lblNewLabel, GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE)
                        .addGap(110))
                    .addGroup(gl_panel_1.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                            .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                                .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                                    .addGroup(gl_panel_1.createSequentialGroup()
                                        .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                                            .addComponent(label_5, GroupLayout.PREFERRED_SIZE, 90, GroupLayout.PREFERRED_SIZE)
                                            .addComponent(label, GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE))
                                        .addPreferredGap(ComponentPlacement.RELATED))
                                    .addGroup(gl_panel_1.createSequentialGroup()
                                        .addComponent(label_3, GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                                        .addPreferredGap(ComponentPlacement.RELATED)))
                                .addGroup(gl_panel_1.createSequentialGroup()
                                    .addComponent(label_1)
                                    .addPreferredGap(ComponentPlacement.RELATED)))
                            .addGroup(gl_panel_1.createSequentialGroup()
                                .addComponent(label_4)
                                .addPreferredGap(ComponentPlacement.RELATED)))
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                            .addComponent(textField_2, GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
                            .addComponent(textField_1, GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
                            .addComponent(textField_4, GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
                            .addGroup(gl_panel_1.createSequentialGroup()
                                .addComponent(textField, GroupLayout.PREFERRED_SIZE, 41, GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(ComponentPlacement.RELATED, 13, Short.MAX_VALUE))
                            .addComponent(textField_5, GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
                            .addComponent(textField_6, GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE))
                        .addGap(66))
                    .addGroup(Alignment.LEADING, gl_panel_1.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.TRAILING, false)
                            .addComponent(label_6, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(label_2, GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE))
                        .addPreferredGap(ComponentPlacement.RELATED)
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                            .addComponent(textField_7, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE)
                            .addComponent(button_1, GroupLayout.PREFERRED_SIZE, 82, GroupLayout.PREFERRED_SIZE)
                            .addComponent(textField_3, GroupLayout.PREFERRED_SIZE, 75, GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(10, Short.MAX_VALUE))
                    .addGroup(Alignment.LEADING, gl_panel_1.createSequentialGroup()
                        .addGap(52)
                        .addComponent(button)
                        .addContainerGap(91, Short.MAX_VALUE))
            );
            gl_panel_1.setVerticalGroup(
                gl_panel_1.createParallelGroup(Alignment.LEADING)
                    .addGroup(gl_panel_1.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                            .addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)
                            .addComponent(textField, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))
                        .addGap(18)
                        .addComponent(button, GroupLayout.PREFERRED_SIZE, 42, GroupLayout.PREFERRED_SIZE)
                        .addGap(18)
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                            .addGroup(gl_panel_1.createSequentialGroup()
                                .addGap(18)
                                .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                                    .addComponent(label_5, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(textField_4, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(ComponentPlacement.RELATED)
                                .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                                    .addGroup(gl_panel_1.createSequentialGroup()
                                        .addGap(40)
                                        .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                                            .addComponent(textField_6, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)
                                            .addComponent(label_3, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE)))
                                    .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                                        .addComponent(textField_5, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)
                                        .addComponent(label_4, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(ComponentPlacement.UNRELATED)
                                .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                                    .addComponent(label, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(ComponentPlacement.RELATED)
                                .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                                    .addComponent(textField_2, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(label_1)))
                            .addGroup(gl_panel_1.createSequentialGroup()
                                .addGap(206)
                                .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                                    .addComponent(label_2, GroupLayout.PREFERRED_SIZE, 26, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(textField_3, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))))
                        .addPreferredGap(ComponentPlacement.RELATED)
                        .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                            .addComponent(label_6, GroupLayout.PREFERRED_SIZE, 26, GroupLayout.PREFERRED_SIZE)
                            .addComponent(textField_7, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))
                        .addGap(33)
                        .addComponent(button_1, GroupLayout.PREFERRED_SIZE, 41, GroupLayout.PREFERRED_SIZE)
                        .addGap(40))
            );
            panel_1.setLayout(gl_panel_1);
            
            button.addActionListener(new ActionListener(){//开始答题
                public void actionPerformed(ActionEvent e)
                {
                    count=1;
                    T=0;F=0;
                    str="";
                    z="";
                    stop=false;
                    textField_6.setText("");
                    textField_4.setText(""+count);
                    try{
                    num=Integer.parseInt(textField.getText());
                    if(num>5)
                    {
                        
                        textPane.setText("输入题数错误,请重新输入!(1~5)");
                        textField.setText("");
                    }
                    else
                    {
                        startTime=System.currentTimeMillis();
                        textField_1.setText(""+T);
                        textField_2.setText(""+F);
                        button.setVisible(false);
                        textField.setEditable(false);
                        showtext();
                    }
                    }
                    catch(NumberFormatException e1)
                    {
                        textPane.setText("输入题数错误,请重新输入!(1~5)");
                        textField.setText("");
                    }
                    
                    
                }            
            });
            textField_5.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e)
                {try{
                    if(!stop)
                    {
                    
                    
                    uanswer=Integer.parseInt(textField_5.getText());
                    if(num==count)
                    {
                        if(uanswer==ranswer) 
                        {  
                            textField_6.setText(""+ranswer);
                            textField_3.setText("答对!"); 
                            T++; 
                            textField_1.setText(""+T);    
                            count++;    
                        }  
                        else 
                        {  
                            textField_6.setText(""+ranswer);
                            textField_3.setText("答错!");
                            F++;
                            textField_2.setText(""+F);
                            count++;
                        }
                        stop=true;
                        textField_3.setText(" 答題結束!");
                        endTime=System.currentTimeMillis();
                        textField.setEditable(true);
                        button.setVisible(true);
                        textField_7.setText((endTime-startTime)/1000+"s");
                        
                    }
                    else if(uanswer==ranswer) 
                    {   
                        textField_6.setText(""+ranswer);
                        textField_3.setText("答对!"); 
                        T++; 
                        textField_1.setText(""+T);    
                        showtext();
                        count++;
                        
                    }  
                    else
                    {   
                        textField_6.setText(""+ranswer);
                        textField_3.setText("答错!");
                        F++;
                        textField_2.setText(""+F);
                        showtext();
                        count++;
                    }
                    }
                }
                    
                    catch(NumberFormatException e2)
                    {
                        textPane.setText(str+"答案格式错误,请重新输入答案!");
                        textField_5.setText("");
                    }
                
                }
            });
            GroupLayout gl_panel = new GroupLayout(panel);
            gl_panel.setHorizontalGroup(
                gl_panel.createParallelGroup(Alignment.LEADING)
                    .addGroup(gl_panel.createSequentialGroup()
                        .addComponent(textPane, GroupLayout.PREFERRED_SIZE, 243, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(panel_1, GroupLayout.PREFERRED_SIZE, 196, GroupLayout.PREFERRED_SIZE)
                        .addGap(28))
            );
            gl_panel.setVerticalGroup(
                gl_panel.createParallelGroup(Alignment.LEADING)
                    .addGroup(gl_panel.createSequentialGroup()
                        .addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
                            .addComponent(textPane, GroupLayout.PREFERRED_SIZE, 484, GroupLayout.PREFERRED_SIZE)
                            .addComponent(panel_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
            panel.setLayout(gl_panel);
            frame.getContentPane().setLayout(groupLayout);
            frame.setBounds(100, 100, 454, 518);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }    
        void showtext()
        {
            char op='+';
            int a=0,b=0,c=0,e=0,f=0,opnum=0,chioce=0;
            int temp=0;
            Random ra =new Random();
            e=ra.nextInt(10)+1;
            f=ra.nextInt(10)+1;
            chioce=ra.nextInt(2)+1;
            if(e%2==0)
            {
            a=ra.nextInt(10)+2;
            }
            else
            {
                a=-ra.nextInt(10)+2;
            }
            if(f%2==0)
            {
            b=ra.nextInt(10)+2;
            }
            else
            {
                b=-ra.nextInt(10)+2;
            }
            c=ra.nextInt(5);
            opnum=Math.abs(ra.nextInt())%4+1;    
            textField_5.setText("");
            switch(chioce)
            {
            case 1:
            {
            switch(opnum)  
                {  
                case 1:    
                    op='+';  
                    break;
                case 2:  
                    op='-'; 
                    break;
                case 3:  
                    op='*';    
                    break;
                case 4:  
                    op='/';  
                    break; 
                }                                               
                                                                
                if((op=='-') && (a<b)) 
                {   
                    temp=a; 
                    a=b;
                    b=temp;  
                }
                                                              
                if(op=='/')  
                {   
                    if(b==0)
                    {    
                        b=1;  
                    }   
                    a=a*b; 
                }  
                if(a>0&&b>0)
                {
                    z=String.valueOf(a)+String.valueOf(op)+String.valueOf(b)+"="+"
    ";
                }
                else if(a<0&&b>0)
                {
                    z="("+String.valueOf(a)+")"+String.valueOf(op)+String.valueOf(b)+"="+"
    ";
                }
                else if(a>0&&b<0)
                {
                    z=String.valueOf(a)+String.valueOf(op)+"("+String.valueOf(b)+")"+"="+"
    ";
                }
                else
                {
                    z="("+String.valueOf(a)+")"+String.valueOf(op)+"("+String.valueOf(b)+")"+"="+"
    ";
                }
                str=str+z;                                                  
                textPane.setText(str); 
            
                switch(op) 
                {  
                case '+':   ranswer=a+b;   break;
                case '-':   ranswer=a-b;   break;
                case '*':   ranswer=a*b;   break;
                case '/':   ranswer=a/b;   break;  
                } 
                break;
            }
            case 2:
            {
                int jc=1;
                str=str+String.valueOf(c)+"!="+"
    ";                                                
                textPane.setText(str);
                for(int i=c;i>0;i--)
                {
                    jc=jc*i;
                }
                ranswer=jc;
                break;
            }
            }
        }
    }

    程序运行截图如下:

    ===一开始的进去的界面

    ===程序设定的是输入1~5的题数,如果输入不正确会提示重新输入~~

    ===输入正确后按开始答题按钮,按钮会消失,并且输入题数的框是不可改的。用户只能在输入答案的框内输入,当题数答完后,输入题数的框可以重新输入,开始答题的按钮会重新出现~~~

    ===每答完一题,界面会显示正确答案和判断对错,并且显示答对的题数和答错的题数,答题结束后,界面显示用户答题的所用时间,然后用户可以重新输入答题的题数,重新开始或者按退出按钮退出~~~

    ===作业中的照片,人太丑,不敢露脸~~~

     这个结对作业,我们估计的总用时是8-10小时,结果我们用了7个小时完成了这个实验,比预计的快了一个小时。

    1.我们用的是Eclipse(java)进行编程的

    2.我们完成的内容是:  

        (2).可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8  

        (3)用户答题结束以后,程序可以显示用户答题所用的时间  

        (4)用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数  

        (6)程序可以出单个整数阶乘的题目:如:4!=24

    3.本次结对的同学为 :

                       201306114305 欧其锋  博客:http://www.cnblogs.com/ouqifeng/

                       201306114305 吕日荣  博客:http://www.cnblogs.com/Russelling/

    4.这个编程过程中,框架界面是共同完成的,欧其锋完成的功能是(2)(3),吕日荣完成的功能是(4)(6);

    总结:通过这次实验,我觉得我们的收获还是挺大的,首先这个实验要求我们能够提高效率,因为结对的作用就是为了提高工作的效率,这方面我们还是做到了,我们用的时间比预想的时间少了。其次这个实验其实最难的部分是界面的实现,做界面这个东西,我们运用到了WindowBuilder,这个东西让我们在做界面的时候提高了效率,也提高了容错率,在这方面我觉得这个东西帮到了我们很多。最后就是功能与面板之间的一个支持方面的难点,我们在这方面使用了很多很多时间去解决这个问题。    我们觉得,这个实验其实只是一个开始,毕竟我们寻找bug的能力还有所缺陷,我们想到的范围还是比较狭隘的,我们希望这个实验是我们提高的一个阶段,当老师寻找到bug的时候,我们会继续去思考,解决这些bug,完善这个程序。   

         这只是1.0的版本,后期会有功能更加完善的功能的2.0,3.0版,请期待!

    bug1已经修改好了,代码更新了,解决方法是将NumberFormatException加入一个异常处理,除了输入题数的框修改外,输入答案的框也进行了异常处理;

    修复后的截图如下:

  • 相关阅读:
    BZOJ3439: Kpm的MC密码
    BZOJ2819: Nim
    BZOJ1901: Zju2112 Dynamic Rankings
    Bzoj3230: 相似子串
    Bzoj4504: K个串
    CF609E. Minimum spanning tree for each edge
    bzoj1832: [AHOI2008]聚会
    css 笔记1
    namespace 相关
    cmd 命令
  • 原文地址:https://www.cnblogs.com/ouqifeng/p/4410192.html
Copyright © 2011-2022 走看看