zoukankan      html  css  js  c++  java
  • 作业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("尚未实现");
        }
    }

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

  • 相关阅读:
    cocos2d-x Tests讲解 Particle System(粒子系统)
    c++ 知识点
    详解C/C++函数指针声明
    VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
    cocos2d-x学习知识点记录
    Ogre实现简单地形
    Ogre内部渲染流程分析系列
    gcc/g++编译
    gcc和g++的区别
    Hack with rewrite
  • 原文地址:https://www.cnblogs.com/hewupeng/p/4488234.html
Copyright © 2011-2022 走看看