结对子作业 四则运算 V2.0

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.util.Random;



import javax.swing.*;

public class MainJFrame extends JFrame {  

    JButton b1=new JButton("切换皮肤");JButton b2=new JButton("GOGOGO!");JButton b3=new JButton("开始/下一题");

    int xz, cc,count,max,min=1,jc,sum1,dt=0,tm=0,tm1=0,zs1,zs2,fs1,fs2,fs3,fs4;

    char ssfh[]={'+','-','*','/'};

    int fh;

    String Sum1,Sum2;

    long star,end;

    JLabel l1=new JLabel("   题目");JLabel l2=new JLabel("                  得数");

    JTextField t1=new JTextField(10);JTextField t2=new JTextField(8);

        String [] path={

        "0.jpg",

        "1.jpg",

        "2.jpg"};

    public MainJFrame(int count1,int cc1,int xz1,int max1,long star1) {  

        count=count1;

        cc=cc1;

        xz=xz1;

        max=max1;

        star=star1;

        //设置大小  

        setSize(500, 400);  

        //设置位置  

        setLocation(200, 50);  

        //背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下)  

        // 背景图片  

        ImageIcon background = new ImageIcon(path[1]);  

        // 把背景图片显示在一个标签里面  

        JLabel label = new JLabel(background);  

        // 把标签的大小位置设置为图片刚好填充整个面板  

        label.setBounds(0, 0, this.getWidth(), this.getHeight());  

        // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明  

        JPanel imagePanel = (JPanel) this.getContentPane();  

        imagePanel.setOpaque(false);  

        // 把背景图片添加到分层窗格的最底层作为背景  

        imagePanel.setLayout(new FlowLayout(FlowLayout.CENTER,20,100));

        this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));  

        imagePanel.add(l1);imagePanel.add(t1);imagePanel.add(l2);imagePanel.add(t2);imagePanel.add(b1);imagePanel.add(b3);imagePanel.add(b2);

        b3.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e){

                if(xz==1)

                {

                    if(tm1<count){

                    tm1++;

                    zs1=new  Random().nextInt(max) + min;

                    zs2=new  Random().nextInt(max) + min;

                    fh=new Random().nextInt(4);

                    while(fh==3&&zs2==0){

                        zs2=new  Random().nextInt(max) + min;

                    }

                    Zhengshu zhengshu=new Zhengshu(zs1,fh,zs2);

                    if(fh==0){

                    t1.setText(zhengshu.getJiaf()); 

                    zhengshu.setJiaf(zs1, zs2);

                    }

                    else if(fh==1){

                        t1.setText(zhengshu.getJianf()); 

                        zhengshu.setJianf(zs1, zs2);

                    }

                    else if(fh==2){

                        t1.setText(zhengshu.getChengf());

                        zhengshu.setChengf(zs1, zs2);

                    }

                    else if(fh==3){

                        t1.setText(zhengshu.getChuf());

                        zhengshu.setChuf(zs1, zs2);

                        }

                    }

                }

                else if(xz==2){

                    if(tm1<count){

                        tm1++;

                    fs1=new  Random().nextInt(max) + min;

                    fs2=new  Random().nextInt(max) + min;

                    fs3=new  Random().nextInt(max) + min;

                    fs4=new  Random().nextInt(max) + min;

                    Fenshu fenshu=new Fenshu();

                    fh=new Random().nextInt(3);

                    t1.setText(fenshu.suanshi(fs1, fs2, fs3, fs4, fh));

                    }

                }

                else{

                    if(tm1<count){

                    

                    tm1++;

                    jc=new  Random().nextInt(max) + min;t1.setText("("+ tm1 +")"+jc+"!=");                   

                    

                    }

                }

               

                }

            });

        b2.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e){

                if(xz==1)

                {

                    if(tm<count)

                    {

                    Zhengshu zhengshu=new Zhengshu();

                        if(fh==0){ 

                        zhengshu.setJiaf(zs1, zs2);

                        }

                        else if(fh==1){

                            zhengshu.setJianf(zs1, zs2);

                        }

                        else if(fh==2){

                            zhengshu.setChengf(zs1, zs2);

                        }

                        else if(fh==3){

                            zhengshu.setChuf(zs1, zs2);

                            }

                        if(fh==3)

                            {Sum2=t2.getText();

                            Sum1=zhengshu.getsum(zs1,zs2);

                            if(Sum1.equals(Sum2))

                                dt++;

                            

                            }

                        else{

                            if((sum1=Integer.valueOf(t2.getText()))==zhengshu.getSum())

                            dt++;                    

                        }

                        

                    tm++;

                    t2.setText(null);

                //    System.out.print(tm+"\t"+zs1+"\t"+fh+"\t"+zs2+"\t"+dt+"\t"+zhengshu.getSum()+"\t"+Sum1+"\n");

                    }

                    if(tm==count){

                        end=System.currentTimeMillis()/1000;

            //            System.out.print("\t"+end+"\t"+star+"\t"+(end-star));

                        JOptionPane.showMessageDialog(rootPane, "一共"+count+"道题,答对"+dt+"道题!\t" +"得分"+(100/count*dt)+"用时"+(end-star)+"s");

                    }

                

                    

                }

                else if(xz==2){

                    if(tm<count)

                    {

                        Fenshu fenshu=new Fenshu();

                        Sum1=fenshu.answer(fs1, fs2, fs3, fs4, fh);

                        Sum2=t2.getText();

                        if(Sum1.equals(Sum2))

                        {

                            dt++;

                        }

                        tm++;

                        t2.setText(null);

                //        System.out.print(tm+"\t"+dt+"\t"+fenshu.answer(fs1, fs2, fs3, fs4, fh)+"\t"+Sum2+"\t"+fh+"\n");

                        if(tm==count){

                            end=System.currentTimeMillis()/1000;

            //                System.out.print("\t"+end+"\t"+star+"\t"+(end-star));

                            JOptionPane.showMessageDialog(rootPane, "一共"+count+"道题,答对"+dt+"道题!\t" +"得分"+(100/count*dt)+"用时"+(end-star)+"s");

                        }

                    }

                }

                else{

                    if(tm<count)

                    {

                    Jiecheng jiecheng=new Jiecheng(jc);

                    if((sum1=Integer.valueOf(t2.getText()))==jiecheng.getJieguo())

                    {

                        dt++;

                    }

                    tm++;

                    t2.setText(null);

                    System.out.print(tm+"\t"+jc+"!\t"+dt+"\t"+jiecheng.getsum()+"\t"+sum1+"\n");

                    }

                    if(tm==count){

                        end=System.currentTimeMillis()/1000;

            //            System.out.print("\t"+end+"\t"+star+"\t"+(end-star));

                        JOptionPane.showMessageDialog(rootPane, "一共"+count+"道题,答对"+dt+"道题!\t" +"得分"+(100/count*dt)+"用时"+(end-star)+"s");

                    }

                }

               

                }

                });

        //设置可见  

        setVisible(true);  

        //点关闭按钮时退出  

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

    }  



 

    

    public static void main(String[] args) {  

        Baseframe frame=new Baseframe();

        

    }  

}  

    class Baseframe extends JFrame                                                                        //基础界面

    {

        public Baseframe(){

            super("四则运算 V2.0"); 

            this.getContentPane().add(new p1(),"Center");

            this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

            this.setSize(500, 400);

            this.setLocation(200, 50);

            this.setVisible(true);

            

        }



        public static void close() {

            // TODO Auto-generated method stub

            

        }

    }

    class p1 extends JPanel{

        int xz, cc,count,max,min=1;long star;

        JLabel l1=new JLabel("                  输入题目数");JLabel l2=new JLabel("                  是否有乘除法0/1");JLabel l3=new JLabel("                  数值范围是(1~)");JLabel l4=new JLabel("   1:整数运算.2:分数运算.3:阶乘运算.");

        JLabel l5=new JLabel();

        JButton b1=new JButton("确定");

        JTextField t1=new JTextField(8);JTextField t2=new JTextField(8);JTextField t3=new JTextField(8);JTextField t4=new JTextField(8);

        int str=0;

        int str1=0;

        p1(){

            super(new GridLayout(5,2,5,5));

            b1.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e){

                    count=Integer.valueOf(t1.getText());

                    cc=Integer.valueOf(t2.getText());

                    max=Integer.valueOf(t3.getText());

                    xz=Integer.valueOf(t4.getText());

                    star = System.currentTimeMillis()/1000;

                    MainJFrame Frame=new MainJFrame(count,cc,xz,max,star);

                }

            });

            add(l1);add(t1);add(l2);add(t2);add(l3);add(t3);add(l4);add(t4);add(l5);add(b1);

        }

        public int getcount()

        {

            return count;

        }

        public int getcc()

        {

            return cc;

        }

        public int getmax()

        {

            return max;

        }

        public int getxz()

        {

            return xz;

        }

        public long getstar()

        {

            return star;

        }

    }













public class Zhengshu {

    int zs1,zs2,sum=1;int fh;

    Zhengshu(){

        

    }

    Zhengshu(int Zs1,int Fh,int Zs2){

        zs1=Zs1;

        fh=Fh;

        zs2=Zs2;

    }

    public void setJiaf(int Zs1,int Zs2){

        sum=Zs1+Zs2;

    }

    public void setJianf(int Zs1,int Zs2){

        sum=Zs1-Zs2;

    }

    public  void setChengf(int Zs1,int Zs2){

        sum=Zs1*Zs2;

    }

    public void setChuf(int Zs1,int Zs2){

        sum=Zs1/Zs2;

    }

    public String getJiaf(){

        return zs1+"+"+zs2;

    }

    public String getJianf(){

        return zs1+"-"+zs2;

    }

    public String getChengf(){

        return zs1+"*"+zs2;

    }

    public String getChuf(){

        return zs1+"/"+zs2;

    }

    public int getSum(){

        return sum;

    }

    public String getsum(int zs1,int zs2){

        return zs1+"/"+zs2;

    }

}















public class Jiecheng {

    private int jc1;

    private int sum=1;

    private int n;

    Jiecheng(){

        

    }

    Jiecheng(int jc){

        jc1=jc;

        

    }

    public int getJieguo()

    {

        if(jc1==0)

            sum=1;

        else{

            for(n=1;n<=jc1;n++)

            {

                sum=sum*n;

            }

        }

        return sum;

    }

    public int getsum()

    {

        return sum;

    }

}











import java.util.Random;





public class Fenshu {

    private int fz,fm;//用户输入分子、分母

    private int fz0,fm0;//已约分正确分子、分母

    private int fz1=1,fm1=1;//未约分正确分子、分母

    private int jlfz,jlfm;//操作数

    private int temp,ys;//操作数

    private char ch;

    private char fh[]={'+','-','*','/'};

    Fenshu(){}

    public String suanshi(int a,int b,int c,int d,int z){

        if(a>b)//确保分母大于分子

        {

            temp=b;

            b=a;

            a=temp;

        }

        if(c>d)//确保分母大于分子

        {

            temp=d;

            d=c;

            c=temp;

        }

//        z=new Random().nextInt(cc*2-1);

        return a+"/"+b+" "+fh[z]+" "+c+"/"+d;

        

    }

    public String answer(int a,int b,int c,int d,int z){

        int shu []=new int [4];

        shu[0]=a;

        shu[1]=b;

        shu[2]=c;

        shu[3]=d;

        switch(z)

        {

        case 0:

            fz1=shu[0]*shu[3]+shu[1]*shu[2];

            fm1=shu[1]*shu[3];

            break;

        case 1:

            fz1=shu[0]*shu[3]-shu[1]*shu[2];

            fm1=shu[1]*shu[3];

            break;

        case 2:

            fz1=shu[0]*shu[2];

            fm1=shu[1]*shu[3];

            break;

        case 3:

            fz1=shu[0]*shu[3];

            fm1=shu[1]*shu[2];

            break;

        default:

            break;

        }

        jlfz=fz1;//约分

        jlfm=fm1;

        while(fm1!=0)

        {

            ys=fz1%fm1;

            fz1=fm1;

            fm1=ys;

        }

        fz0=jlfz/fz1;

        fm0=jlfm/fz1;

        if(fm0<0)

        {

            fz0=fz0*-1;

            fm0=fm0*-1;

        }

        return fz0+"/"+fm0;

    }



}

开发环境:Eclipse

做的是3.4.6.8,/*8没成功*/

结对同伴的学号:201306114327  姓名:林海信    博客地址:http://www.cnblogs.com/linhaixin/ 

这个结对编程过程中,我和同伴轮流编程,轮流检测,轮流查阅资料。

总结:本次编程预想时间1天,实际时间3天外加熬夜修改BUFF。在次过程中,体会到结对子的乐趣与作用,还可以从中相互学习。不过,这还是一个需要磨合的时间,否则会什么都做不成。我觉得,结对子学习非常的有效。

 

你可能感兴趣的:(四则运算)