• 作业2结对作业


    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.math.*;
    import java.text.DecimalFormat;
    import java.util.Scanner;
    import java.math.*;
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.JPanel;
    import javax.swing.JRadioButtonMenuItem;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.Timer;
    import javax.swing.JOptionPane;//消息提示框
    import javax.swing.UIManager;
    class MyWindow extends JFrame implements ActionListener{
        JTextField text;//提示输入的个数
        JTextField  t;//随机题目
        JTextField at;//用于输入答案
        JTextField st;//判断对错
        JTextField tt;//显示时间
        JTextField lt;//设置时间
        private Timer tmr;
        JLabel L1;
        JLabel L2;
        JLabel L3;
        JLabel L4;
        JLabel L5;
        JLabel L6;
        JButton B1,B2;
        JPanel p1,p2,p3;
        String parten="0.00";//设置格式为“0.00”
        DecimalFormat decimal=new DecimalFormat(parten);
        String str;
        double seconds;//时间“秒”
        long startTime,endTime;
        char[]ch={'+','-','*','÷'};//存放加减乘除的符号数组
        float sum=0;//程序判断的答案
        int timushu;//用户输入的题目
        int count=0;//已经 出的题目
        int right=0;//计算答对的题目数
        int wrong=0;//计算答错的题目数
        MyWindow()
        {
            super("四则运算");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setSize(400,230);
            L1=new JLabel("选择题数(不能超过5个)");
            L2=new JLabel("时间:");
            L3=new JLabel("设置时间(时间不超过120秒):");
            L4=new JLabel("随机题目:");
            L5=new JLabel("输入答案:");
            L6=new JLabel("判断对错:");
            text=new JTextField(15);
            B1=new JButton("开始");
    
                t=new JTextField(23);
                at=new JTextField(23);
                at.addActionListener(this);
                st=new JTextField(23);
                tt=new JTextField(15);
                tt.addActionListener(this);
                lt=new JTextField(5);
                lt.addActionListener(this);
                Timer tmr = new Timer(1000, this);//间隔1秒
                this.tmr = tmr;//添加时间
            B2=new JButton("下一题");B2.addActionListener(this);
            text.addActionListener(this);B1.addActionListener(this);
            p1=new JPanel();p2=new JPanel();p3=new JPanel();
            getContentPane().add(p1,"North");getContentPane().add(p2,"Center");getContentPane().add(p3,"South");
            p1.add(L3);p1.add(lt);p2.add(L1);p2.add(text);p2.add(B1);
            p2.add(L4);p2.add(t);p2.add(L5);p2.add(at);p2.add(L6);p2.add(st);
            p3.add(L2);p3.add(tt);p3.add(B2);
            this.setResizable(false);//设置不可以改变大小
            this.setVisible(true);//设置窗口可见
        }
     
    
        
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource()==B1)//当获取的资源是按钮1时
            {
                try
                {
                    tt.setText(String.valueOf(lt.getText()));//在显示时间框里显示以获取的时间
                
                int n1=120,n2=5;
                if(n1<(Integer.parseInt(tt.getText())))
                {//当设置时间超过120秒,弹出对话框
                    JOptionPane.showMessageDialog(null, "时间不能超过120秒!");
                    this.setVisible(false);
                }
                if(n2<(Integer.parseInt(text.getText())))
                {//当选择题目个数超过5个,弹出对话框
                    JOptionPane.showMessageDialog(null, "选择题数不能超过五个!");
                    this.setVisible(false);
                }
                tmr.start();//开始计时
                }
                catch(NullPointerException o)
                {
    
                }
                suijishu();//调用产生随机数题目
            //    startTime= System.currentTimeMillis(); //获取开始时间
                tt.setText(String.valueOf(lt.getText()));
            }
            else{
                int m = Integer.parseInt(tt.getText());
                m--;
                tt.setText("" + m);
                if (m <= 0) 
                {
                     tmr.stop();
                     JOptionPane.showMessageDialog(null, "超出答题时间!");
                     this.setVisible(false);
                }
               if(e.getSource()==at)//当获取的资源是输入答案时
               {
                    str=decimal.format(sum);
                    if(Float.parseFloat(str)==Float.parseFloat(at.getText()))//判断输入的答案对错
                    {
                        right++;
                        st.setText("输入的答案正确!");
                        st.setForeground(Color.red);
                    }
                    else
                    {
                        wrong++;
                        st.setText("输入的答案不正确!正确答案为"+Float.parseFloat(str));
                        st.setForeground(Color.red);//当判断答案对错时,字体显示红色
                    }
                }
                else if(e.getSource()==B2)//当获取的资源是按钮2
                {
                    count++;//当未超过题目数时,继续出随机题
                    if(count!=Integer.parseInt(text.getText()))
                    {
                        t.setText(null);
                        at.setText(null);
                        st.setText(null);
                        suijishu();
                    }
    
                    else
                    {//当超过输入的题目数时,弹出结束的消息框
                        tmr.stop();
    
                        //double endTime= System.currentTimeMillis() ;//获取结束时间
                        seconds=Double.parseDouble(lt.getText())-Double.parseDouble(tt.getText());//计算时间
                        //tt.setText(String.valueOf(seconds)+"s");//输出时间
                        JOptionPane.showMessageDialog(null, "答题结束!一共答对"+right+"道题目,答错"+wrong+"道题目!"+"答题时间为:"+seconds+"秒");
                       this.setVisible(false);
                    }
                }
            }
        }
        private void suijishu() 
        {
            int x=(int)(Math.random()*4);
            switch(x)
            {
            case 0:
                fun0();//一个运算符,整数,整数
                break;
            case 1:
                fun1();//一个运算符,整数,分数
                break;
            case 2:
                fun2();//一个运算符,分数,分数
                break;
            case 3:
                fun3();//两个运算符
                break;
            case 4:
                fun4();//求阶乘
                break;
            case 5:
                fun5();//题目出现负数
                break;
            //case 4:
            //、    fun1();
        //、case 5:
        //、    fun1();
        //、case 6:
            //    fun1();
            }
        }
        private void fun0()
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*4);//表示加减乘除
            switch(x1)
            {
            case 0:
                {
                    t.setText(a+" "+String.valueOf(ch[0])+" "+b);
                    sum=a+b; 
                }
                break;
            case 1:
                {
                    t.setText(a+" "+String.valueOf(ch[1])+" "+b);
                    sum=a-b;
                }
                break;
            case 2:
                {
                     t.setText(a+" "+String.valueOf(ch[2])+" "+b);
                    sum=a*b;
                }
                break;
            case 3:
                {
                    t.setText(a+" "+String.valueOf(ch[3])+" "+b);
                     sum=(float)a/(float)b;
                }
                break;
            }
        }
        private void fun1()
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int c=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*4);//表示加减乘除
            switch(x1)
            {
            case 0:
                {
                    t.setText(a+" "+String.valueOf(ch[0])+" "+b+"/"+c);
                    sum=a+((float)b/(float)c); 
                }break;
            case 1:
                {
                    t.setText(a+" "+String.valueOf(ch[1])+" "+b+"/"+c);
                    sum=a-((float)b/(float)c);
                }break;
            case 2:
                {
                     t.setText(a+" "+String.valueOf(ch[2])+" "+b+"/"+c);
                    sum=a*((float)b/(float)c);
                }break;
            case 3:
                {
                    t.setText(a+" "+String.valueOf(ch[3])+" "+b+"/"+c);
                     sum=(float)a/(float)b/(float)c;
                }break;
            }
        }
        private void fun2()
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int c=(int)(Math.random()*10+1);
            int d=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*4);//表示加减乘除
            switch(x1)
            {
            case 0:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[0])+" "+b+"/"+c);
                    sum=((float)a/(float)d)+((float)b/(float)c); 
                }break;
            case 1:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[1])+" "+b+"/"+c);
                    sum=((float)a/(float)d)-((float)b/(float)c);
                }break;
            case 2:
                {
                     t.setText(a+"/"+d+" "+String.valueOf(ch[2])+" "+b+"/"+c);
                    sum=((float)a/(float)d)*((float)b/(float)c);
                }break;
            case 3:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[3])+" "+b+"/"+c);
                     sum=((float)a/(float)d)/((float)b/(float)c);
                }break;
            }
        }
        private void fun3()
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int c=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*3);//表示加减乘除
            switch(x1)
            {
            case 0:
                fun31();//两个运算符,三个整数
                break;
            case 1:
                fun32();//两个运算符,两个整数,一个分数
                break;
            case 2:
                fun33();//两个运算符,一个整数,两个分数
                break;
        //    case 3:
          //      fun34();
          //      break;
            }
        }
        private void fun31()
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int c=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*11);//表示加减乘除
            switch(x1)
            {
            case 0:
                {
                    t.setText(a+" "+String.valueOf(ch[0])+" "+b+" "+String.valueOf(ch[0])+" "+c);
                    sum=a+b+c; 
                }break;
            case 1:
                {
                    t.setText(a+" "+String.valueOf(ch[0])+" "+b+" "+String.valueOf(ch[1])+" "+c);
                    sum=a+b-c; 
                }break;
            case 2:
                {
                    t.setText(a+" "+String.valueOf(ch[1])+" "+b+" "+String.valueOf(ch[1])+" "+c);
                    sum=a-b-c; 
                }break;
            case 3:
                {
                    t.setText(a+" "+String.valueOf(ch[2])+" "+b+" "+String.valueOf(ch[0])+" "+c);
                    sum=a*b+c; 
                }break;
            case 4:
                {
                    t.setText(a+" "+String.valueOf(ch[2])+" "+b+" "+String.valueOf(ch[1])+" "+c);
                     sum=a*b-c; 
                }break;
            case 5:
                {
                    t.setText(a+" "+String.valueOf(ch[2])+" "+b+" "+String.valueOf(ch[2])+" "+c);
                    sum=a*b*c; 
                   }break;
             case 6:
                {
                    t.setText(a+" "+String.valueOf(ch[0])+" "+b+" "+String.valueOf(ch[1])+" "+c);
                     sum=a+b-c; 
                }break;
            case 7:
               {
                    t.setText(a+" "+String.valueOf(ch[3])+" "+b+" "+String.valueOf(ch[0])+" "+c);
                    sum=((float)a/(float)b)+c; 
               }break;
            case 8:
               {
                    t.setText(a+" "+String.valueOf(ch[3])+" "+b+" "+String.valueOf(ch[1])+" "+c);
                     sum=((float)a/(float)b)-c; 
                }break;
            case 9:
               {
                    t.setText(a+" "+String.valueOf(ch[3])+" "+b+" "+String.valueOf(ch[3])+" "+c);
                     sum=((float)a/(float)b)/(float)c;  
                }break;
            }
        }
        private void fun32()
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int c=(int)(Math.random()*10+1);
            int d=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*4);//表示加减乘除
            switch(x1)
            {
            case 0:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[0])+b+" "+String.valueOf(ch[0])+" "+c);
                    sum=((float)a/(float)d)+b+c; 
                }break;
            case 1:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[0])+b+" "+String.valueOf(ch[1])+" "+c);
                    sum=((float)a/(float)d)+b-c; 
                }break;
            case 2:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[1])+b+" "+String.valueOf(ch[1])+" "+c);
                    sum=((float)a/(float)d)-b-c; 
                }break;
            case 3:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[2])+b+" "+String.valueOf(ch[0])+" "+c);
                     sum=((float)a/(float)d)*b+c; 
                }break;
            case 4:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[2])+b+" "+String.valueOf(ch[1])+" "+c);
                sum=((float)a/(float)d)*b-c; 
            }break;
            case 5:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[2])+b+" "+String.valueOf(ch[2])+" "+c);
                sum=((float)a/(float)d)*b*c; 
            }break;
            case 6:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[2])+b+" "+String.valueOf(ch[3])+" "+c);
                sum=((float)a/(float)d)*b/(float)c; 
            }
            case 7:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[3])+b+" "+String.valueOf(ch[0])+" "+c);
                sum=((float)a/(float)d)/(float)b+c; 
            }break;
            case 8:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[3])+b+" "+String.valueOf(ch[1])+" "+c);
                sum=((float)a/(float)d)/(float)b-c; 
            }break;
            case 9:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[3])+b+" "+String.valueOf(ch[3])+" "+c);
                sum=((float)a/(float)d)/(float)b/(float)c; 
            }break;
            }
        }
        private void fun33()//一个整数,两个分数
        {
            int a=(int)(Math.random()*10+1);
            int b=(int)(Math.random()*10+1);
            int c=(int)(Math.random()*10+1);
            int d=(int)(Math.random()*10+1);
            int e=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*4);//表示加减乘除
            switch(x1)
            {
            case 0:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[0])+" "+b+"/"+c+" "+String.valueOf(ch[0])+" "+e);
                    sum=((float)a/(float)d)+((float)b/(float)c)+e; 
                }break;
            case 1:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[0])+" "+b+"/"+c+" "+String.valueOf(ch[1])+" "+e);
                    sum=((float)a/(float)d)+((float)b/(float)c)-e; 
                }break;
            case 2:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[1])+" "+b+"/"+c+" "+String.valueOf(ch[1])+" "+e);
                    sum=((float)a/(float)d)-((float)b/(float)c)-e; 
                }break;
            case 3:
                {
                    t.setText(a+"/"+d+" "+String.valueOf(ch[2])+" "+b+"/"+c+" "+String.valueOf(ch[0])+" "+e);
                     sum=((float)a/(float)d)*((float)b/(float)c)+e; 
                }break;
            case 4:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[2])+" "+b+"/"+c+" "+String.valueOf(ch[1])+" "+e);
                sum=((float)a/(float)d)*((float)b/(float)c)-e; 
            }break;
            case 5:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[2])+" "+b+"/"+c+" "+String.valueOf(ch[2])+" "+e);
                sum=((float)a/(float)d)*((float)b/(float)c)*e; 
            }break;
            case 6:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[2])+" "+b+"/"+c+" "+String.valueOf(ch[3])+" "+e);
                sum=((float)a/(float)d)*((float)b/(float)c)/(float)e; 
            }
            case 7:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[3])+" "+b+"/"+c+" "+String.valueOf(ch[0])+" "+e);
                sum=((float)a/(float)d)/((float)b/(float)c)+e; 
            }break;
            case 8:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[3])+" "+b+"/"+c+" "+String.valueOf(ch[1])+" "+e);
                sum=((float)a/(float)d)/((float)b/(float)c)-e; 
            }break;
            case 9:
            {
                t.setText(a+"/"+d+" "+String.valueOf(ch[3])+" "+b+"/"+c+" "+String.valueOf(ch[3])+" "+e);
                sum=((float)a/(float)d)/((float)b/(float)c)/(float)e; 
            }break;
            }
        }
        private void fun4()
        {
            int a=(int)(Math.random()*10+1);//求1~10的阶乘
            t.setText(a+"!");
            for(int i=1;i<=a;i++)
            {
                sum=1;
                sum=sum*i;
            }
        }
        private void fun5()
        {
            int a=(int)(Math.random()*99+1)*-1;//随机生成-1~-99的负整数
            int b=(int)(Math.random()*10+1);
            int x1=(int)(Math.random()*4);
            switch(x1)
            {
            case 0:
                {
                    t.setText("("+a+") "+String.valueOf(ch[0])+" "+b);
                    sum=a+b; 
                }
                break;
            case 1:
                {
                    t.setText("("+a+") "+String.valueOf(ch[1])+" "+b);
                    sum=a-b;
                }
                break;
            case 2:
                {
                     t.setText("("+a+") "+String.valueOf(ch[2])+" "+b);
                    sum=a*b;
                }
                break;
            case 3:
                {
                    t.setText("("+a+") "+String.valueOf(ch[3])+" "+b);
                     sum=(float)a/(float)b;
                }
                break;
            }
            
        }
    }
    public class Size {
        public static void main(String[] args) {
            new MyWindow();
    
        }
    }

    同伴的学号姓名及博客地址:陈江焕,http://www.cnblogs.com/c-19/

    实现的时间:10个小时左右

    运行环境:Eclipse

    分工详细:

    一共做了7个方向,本人做4个方向,分别是1,2,4,6.陈江焕做了2个方向,分别是3,7,8.

    界面是共同设计的,我主要负责随机出题和判断对错,陈江焕主要负责设置时间和时间滚动,其余共同完成。

    总结:

    一开始我们就分好谁做哪几个方向,接着我们就开始设计界面,然后编写界面。在编写界面花了较长时间,因为总是觉得不够好,改了又改。弄好界面后,我就先开始编程出随机题目,把我的四个方向先完成,在这个过程,出现很多差错,例如结果不能输入小数点,我把它转换成浮点型,然后又出现新的问题,当遇到除不尽的数时,分数的结果有很多个小数点,小伙伴在设置时间方面功能的时候,程序执行时间的显示与输出是没有问题的,但最大的问题就是实现时间滚动的功能。然而,通过我们共同商讨,查阅了相当多的资料,以及共同协作,最终一一的解决了所有问题。

    我觉得结对合作这个方法很好,因为一个人编写太烦闷,憋屈了。两个人编程可以交换想法,我们不仅仅把自己会的只是展示出来,同时也掌握对方会的知识。在我看来结对合作有利于提高学生分析问题和解决问题的能力,提高学生学习的积极性。

  • 相关阅读:
    shell
    梯度,也即该物理参数的变化率,导数
    一些石油类核心期刊
    泰勒展开
    向量范数
    添加打印机
    泛函
    9.3.4 BeaufitulSoup4
    9.3.3 scrapy 框架
    9.3.2 网页爬虫
  • 原文地址:https://www.cnblogs.com/ZeJuan/p/4409919.html
Copyright © 2020-2023  润新知