作业5.2(封装及测试)

开发环境:eclipse

结对同伴 :37 施少涛

同伴博客:http://www.cnblogs.com/shishaotao/

预计用时:半天

实际用时:1天

新增功能:1.空值异常处理 2.做错题目可提示做错并给出正确答案 3.可继续做题

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Random;
import java.awt.Font;

public class calculator {
    private JFrame frame;
    private JTextField []textField= new JTextField[5];
    JLabel []label = new JLabel[5];
    int []r1=new int[]{1,2,3,4,5};
    int []r2=new int[]{1,2,3,4,5};
    String str3="";
    int Sum;
    int n=1;
    int[]sum=new int[5];
    String []r3=new String[5];
    String []str=new String[5];

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    calculator window = new calculator();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public calculator() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setTitle("u5C0Fu5B66u56DBu5219u8FD0u7B97");
        frame.setBounds(100, 100, 310, 362);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);        
         label[0] = new JLabel("",label[0].RIGHT);
         label[0].setFont(new Font("宋体", Font.PLAIN, 27));
        label[0].setBounds(10, 50, 159, 29);
        frame.getContentPane().add(label[0]);
        
        label[1] = new JLabel("",label[1].RIGHT);
        label[1].setFont(new Font("宋体", Font.PLAIN, 27));
        label[1].setBounds(10, 89, 159, 29);
        frame.getContentPane().add(label[1]);
        
        label[2] = new JLabel("",label[2].RIGHT);
        label[2].setFont(new Font("宋体", Font.PLAIN, 27));
        label[2].setBounds(10, 128, 159, 29);
        frame.getContentPane().add(label[2]);
        
        label[3] = new JLabel("",label[3].RIGHT);
        label[3].setFont(new Font("宋体", Font.PLAIN, 27));
        label[3].setBounds(10, 167, 159, 29);
        frame.getContentPane().add(label[3]);
        
        label[4] = new JLabel("",label[4].RIGHT);
        label[4].setFont(new Font("宋体", Font.PLAIN, 27));
        label[4].setBounds(10, 206, 159, 29);
        frame.getContentPane().add(label[4]);
        
        textField[0] = new JTextField();
        textField[0].setFont(new Font("宋体", Font.PLAIN, 27));
        textField[0].setBounds(188, 50, 66, 29);
        frame.getContentPane().add(textField[0]);
        textField[0].setColumns(10);
        
        textField[1] = new JTextField();
        textField[1].setFont(new Font("宋体", Font.PLAIN, 27));
        textField[1].setColumns(10);
        textField[1].setBounds(188, 93, 66, 29);
        frame.getContentPane().add(textField[1]);
        
        textField[2] = new JTextField();
        textField[2].setFont(new Font("宋体", Font.PLAIN, 27));
        textField[2].setColumns(10);
        textField[2].setBounds(188, 132, 66, 29);
        frame.getContentPane().add(textField[2]);
        
        textField[3] = new JTextField();
        textField[3].setFont(new Font("宋体", Font.PLAIN, 27));
        textField[3].setColumns(10);
        textField[3].setBounds(188, 171, 66, 29);
        frame.getContentPane().add(textField[3]);
        
        textField[4] = new JTextField();
        textField[4].setFont(new Font("宋体", Font.PLAIN, 27));
        textField[4].setColumns(10);
        textField[4].setBounds(188, 210, 66, 29);
        frame.getContentPane().add(textField[4]);
        Stamp st=new Stamp();
        sum=st.output(r1, r2, r3);
        for(int i=0;i<5;i++)
        {
            textField[i].setText(null);
            Sum=0;
            if(!r3[i].equals("!")){
                if(r2[i]<0) label[i].setText(r1[i]+r3[i]+"("+r2[i]+")"+"=");
                else
                    label[i].setText(r1[i]+r3[i]+r2[i]+"=");}
            else
            {
                if(r2[i]<0) label[i].setText(r1[i]+r3[i]+"("+r2[i]+")"+"=");
                else
                     label[i].setText(r2[i]+r3[i]+"=");}
            }    
        JButton button = new JButton("u6362u9898");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0){
                Stamp st=new Stamp();
                sum=st.output(r1, r2, r3);
                for(int i=0;i<5;i++)
                {
                    textField[i].setText(null);
                    Sum=0;
                    if(!r3[i].equals("!")){
                        if(r2[i]<0) label[i].setText(r1[i]+r3[i]+"("+r2[i]+")"+"=");
                        else
                            label[i].setText(r1[i]+r3[i]+r2[i]+"=");}
                    else
                    {
                        if(r2[i]<0) label[i].setText(r1[i]+r3[i]+"("+r2[i]+")"+"=");
                        else
                             label[i].setText(r2[i]+r3[i]+"=");}
                    }        
            }
        });
        button.setBounds(27, 273, 93, 23);
        frame.getContentPane().add(button);
    
        JButton button_1 = new JButton("u786Eu5B9A");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                int q=1;int []a=new int[5];int l=0;
                for(int i=0;i<5;i++)
                {a[i]=-1;
                 str[i]=textField[i].getText();
                 char[] ch=str[i].toCharArray();
                 for(int j=str[i].length()-1;j>-1;j--)
                 {
                     if((ch[j]<'0'||ch[j]>'9')&&ch[j]!='-'){
                        a[l]=i;
                        l++;
                        q=0;
                        break;
                     }
                 }

                }if(a[0]!=-1){
                    JOptionPane w=new JOptionPane();
                    w.showMessageDialog(w,"输入有非法字符!", "温馨提示", 0);
                    for(int i=0;i<l;i++){
                    textField[a[i]].setText(null);
                    }
                }
                if(q==1){
                    frame.dispose();
                Output ou=new Output();
                ou.main(sum,str);
                        
                }
            }
        });
        button_1.setBounds(170, 273, 93, 23);
        frame.getContentPane().add(button_1);
    
    }
}

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Output {

    private JFrame frame;
    JLabel []label=new JLabel[5];
    static String []string=new String[5];
    static String st=null;
    int a=0;
    /**
     * Launch the application.
     */
    public static void main(int sum[],String str[]) {
        int fenshu=0;
        int s;
        try{
        for(int i=0;i<5;i++)
        {
            int n=Integer.valueOf(str[i]);
        string[i]=null; s=i+1;
            if(n==sum[i])
            {
                fenshu+=20;
                string[i]="第"+s+"答对了;";
            }
            else{
                string[i]="第"+s+"答错了;正确答案为"+sum[i];
            }            
            }}
            catch(NumberFormatException e){
                JOptionPane w=new JOptionPane();
                w.showMessageDialog(w,"答案不能为空!", "温馨提示", 0);
            }
        
        int x,y;x=fenshu/20;y=5-x;
        st="答对"+x+"题;答错"+y+"题;总得分:"+fenshu+"分";
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Output window = new Output();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        
    }

    /**
     * Create the application.
     */
    public Output() {
        //super();
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 381);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        
        label[0] = new JLabel("New label");
        label[0].setFont(new Font("宋体", Font.PLAIN, 25));
        label[0].setBounds(10, 29, 414, 37);
        frame.getContentPane().add(label[0]);
        
        label[1] = new JLabel("New label");
        label[1].setFont(new Font("宋体", Font.PLAIN, 25));
        label[1].setBounds(10, 76, 414, 37);
        frame.getContentPane().add(label[1]);
        
        label[2] = new JLabel("New label");
        label[2].setFont(new Font("宋体", Font.PLAIN, 25));
        label[2].setBounds(10, 123, 414, 37);
        frame.getContentPane().add(label[2]);
        
        label[3] = new JLabel("New label");
        label[3].setFont(new Font("宋体", Font.PLAIN, 25));
        label[3].setBounds(10, 170, 414, 37);
        frame.getContentPane().add(label[3]);
        
        label[4] = new JLabel("New label");
        label[4].setFont(new Font("宋体", Font.PLAIN, 25));
        label[4].setBounds(10, 217, 414, 37);
        frame.getContentPane().add(label[4]);
        
        JLabel lblNewLabel = new JLabel("New label");
        lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 25));
        lblNewLabel.setBounds(10, 253, 414, 41);
        frame.getContentPane().add(lblNewLabel);
        
        JLabel lblNewLabel_1 = new JLabel("u7B54u9898u60C5u51B5u603Bu7ED3");
        lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
        lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 20));
        lblNewLabel_1.setBounds(10, 10, 414, 22);
        frame.getContentPane().add(lblNewLabel_1);
        for(int i=0;i<5;i++){
            label[i].setText(string[i]);
        }
        lblNewLabel.setText(st);
        
        JButton btnNewButton = new JButton("u5173u95ED");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                frame.dispose();
                
            }
        });
        btnNewButton.setBounds(260, 304, 93, 28);
        frame.getContentPane().add(btnNewButton);
        
        JButton btnNewButton_1 = new JButton("u7EE7u7EEDu505Au9898");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
                calculator w=new calculator();
                w.main(null);
            }
        });
        btnNewButton_1.setBounds(83, 304, 93, 28);
        frame.getContentPane().add(btnNewButton_1);
    }
        
}

import java.util.Random;
public class Stamp {
    static Random r = new Random();
    int y;
    int []sum=new int[5];
    public int[] output(int r1[],int r2[],String r3[]){
        
         for(int i=0;i<5;i++){
             sum[i]=0;
             r1[i] = -100+r.nextInt(200);
             r2[i] =-100+r.nextInt(200);
             y = 42+r.nextInt(6);
             if(y==47)
                if(r2[i]==0){
                    r2[i]=42+r.nextInt(6);
                }
             while(y==46)
                {
                 y = 42+r.nextInt(6);
                }
                if(y==44)
                {
                    r2[i] = 2+r.nextInt(8);
                }
                switch(y)
                {
                case 42:
                    r3[i]="*";
                    sum[i]=r1[i]*r2[i];
                    //System.out.print(sum[i]+"="+r1[i]+"*"+r2[i]);
                    break;
                case 43:
                    r3[i]="+";
                    sum[i]=r1[i]+r2[i];
                    //System.out.println(sum[i]+"="+r1[i]+"+"+r2[i]);
                    break;
                case 44:
                    r3[i]="!";
                    sum[i]=1;
                    for(int n=r2[i];n>1;n--)
                    {
                    sum[i]=sum[i]*n;
                    }
                    //System.out.println(sum[i]+"="+r1[i]+"+"+r2[i]);
                    break;
                case 45:
                    r3[i]="-";
                    sum[i]=r1[i]-r2[i];
                    //System.out.println(sum[i]+"="+r1[i]+"-"+r2[i]);
                    break;
                case 47:
                    r3[i]="/";
                    sum[i]=r1[i]/r2[i];
                    //System.out.println(sum[i]+"="+r1[i]+"/"+r2[i]);
                    break;
                }
                     
         }
                 return sum;
    }
}

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+"	"+zs1+"	"+fh+"	"+zs2+"	"+dt+"	"+zhengshu.getSum()+"	"+Sum1+"
");
                    }
                    if(tm==count){
                        end=System.currentTimeMillis()/1000;
            //            System.out.print("	"+end+"	"+star+"	"+(end-star));
                        JOptionPane.showMessageDialog(rootPane, "一共"+count+"道题,答对"+dt+"道题!	" +"得分"+(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+"	"+dt+"	"+fenshu.answer(fs1, fs2, fs3, fs4, fh)+"	"+Sum2+"	"+fh+"
");
                        if(tm==count){
                            end=System.currentTimeMillis()/1000;
            //                System.out.print("	"+end+"	"+star+"	"+(end-star));
                            JOptionPane.showMessageDialog(rootPane, "一共"+count+"道题,答对"+dt+"道题!	" +"得分"+(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+"	"+jc+"!	"+dt+"	"+jiecheng.getsum()+"	"+sum1+"
");
                    }
                    if(tm==count){
                        end=System.currentTimeMillis()/1000;
            //            System.out.print("	"+end+"	"+star+"	"+(end-star));
                        JOptionPane.showMessageDialog(rootPane, "一共"+count+"道题,答对"+dt+"道题!	" +"得分"+(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;
        }
    }
import static org.junit.Assert.*;
import org.junit.Test;
public class Wqtext {

    @Test
    public void testStamp() {
        int d[]={0,0,0,0,0};
        int a[]={0,1,2,3,4};
        int b[]={0,1,2,3,4};
        String c[]={"+","+","+","+","+"};
        Stamp stamp=new Stamp();
        d=stamp.output(a, b, c);
        assertEquals(0,d[0]);
    //    fail("尚未实现");
    }
}

感想:本次的作业,我的小伙伴表现的很好,由于时间的紧迫,我和他分工合作,不过,很多是由我的小伙伴完成的~本次结对子也学到了几个以前没有学过的知识,希望下次的合作同样愉快!

原文地址:https://www.cnblogs.com/hewupeng/p/4488234.html