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加入一个异常处理,除了输入题数的框修改外,输入答案的框也进行了异常处理;

    修复后的截图如下:

  • 相关阅读:
    Java实现 LeetCode 382 链表随机节点
    Java实现 LeetCode 382 链表随机节点
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
    Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
    Linux下的iwpriv(iwlist、iwconfig)的简单应用
    OCX控件的注册卸载,以及判断是否注册
    .OCX、.dll文件注册命令Regsvr32的使用
  • 原文地址:https://www.cnblogs.com/ouqifeng/p/4410192.html
Copyright © 2011-2022 走看看