结对子作业 四则运算 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。在次过程中,体会到结对子的乐趣与作用,还可以从中相互学习。不过,这还是一个需要磨合的时间,否则会什么都做不成。我觉得,结对子学习非常的有效。