作业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();

    }
}

作业2结对作业_第1张图片

作业2结对作业_第2张图片

作业2结对作业_第3张图片

作业2结对作业_第4张图片

作业2结对作业_第5张图片

作业2结对作业_第6张图片

作业2结对作业_第7张图片

作业2结对作业_第8张图片

作业2结对作业_第9张图片

作业2结对作业_第10张图片

作业2结对作业_第11张图片

作业2结对作业_第12张图片

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

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

运行环境:Eclipse

分工详细:

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

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

总结:

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

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

 

你可能感兴趣的:(作业)