作业五 四则元算 测试与封装

未封装的程序:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
public class Size {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        myframe f=new myframe();
    }

}
class myframe extends JFrame
{
    JLabel L1=new JLabel("题目:");
    JLabel L2=new JLabel("输入题目个数:");
    JLabel L3=new JLabel("提示:");
    JLabel L4=new JLabel("        ");   //题目
    JLabel L5=new JLabel("题目个数不能大于5");   //提示
    JTextField T1=new JTextField(6);
    JButton B1=new JButton("开始");
    JButton B2=new JButton("确认");
    JButton B3=new JButton("下一题");
    JButton B4=new JButton("换皮肤");
    JPanel p1=new JPanel();
    int n=0,a,b,c,d,j,k,l,m=0,p;
    double result;
    char[]h={‘+‘,‘-‘,‘*‘,‘/‘},h1={‘(‘,‘)‘,‘!‘};
    String s1,s2;
    Color col[]={Color.blue,Color.green,Color.ORANGE,Color.PINK,Color.GRAY,Color.RED,Color.LIGHT_GRAY};
    myframe(){
        this.setTitle("四则运算");
        this.setSize(300,280);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.add(p1);
        p1.setLayout(null);
        L1.setBounds(50, 20, 90, 30);
        p1.add(L1);
        L4.setBounds(140, 20, 150, 30);
        p1.add(L4);
        L2.setBounds(50, 70, 90, 30);
        p1.add(L2);
        T1.setBounds(150, 70, 90, 30);
        p1.add(T1);
        B4.setBounds(100, 110, 90, 30);
        p1.add(B4);
        B1.setBounds(10, 150, 90, 30);
        p1.add(B1);
        B2.setBounds(100, 150, 90, 30);
        p1.add(B2);
        B2.setEnabled(false);
        B3.setBounds(190, 150,90,30);
        p1.add(B3);
        L3.setBounds(50, 200, 50, 30);
        B3.setEnabled(false);
        p1.add(L3);
        L5.setBounds(100, 200, 180, 30);
        p1.add(L5);
        this.setVisible(true);
        this.setLocationRelativeTo(null);
        B1.addActionListener(new B());
        B2.addActionListener(new B());
        B3.addActionListener(new B());
        B4.addActionListener(new B());
    }
    class B implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            if(e.getSource()==B1)
            {
                p=n=(int) Double.parseDouble(T1.getText());
                //System.out.print(n);
                if(n>5||n<1)
                {
                    JOptionPane.showMessageDialog(null,"输入的个数不能大于5或者小于1","注意",JOptionPane.INFORMATION_MESSAGE);
                }
                else
                {
                    B1.setEnabled(false);
                    B2.setEnabled(true);
                    B3.setEnabled(true);
                    L2.setText("输入答案 :");
                    L5.setText(null);
                    T1.setText(null);
                    star();
                }
            }
            if(e.getSource()==B2)
            {
                l=(int) Double.parseDouble(T1.getText());
                if(l==result)
                {
                    m++;
                    s2="答案正确!";
                    L5.setText(s2);
                }
                else{
                    s2="答案错误!答案为:"+String.valueOf(result);
                    L5.setText(s2);
                }
                B2.setEnabled(false);
            }
            if(e.getSource()==B3)
            {
                if(n==0)
                {
                    JOptionPane.showMessageDialog(null, "一共"+p+"道题目。正确的题数为:"+m,"成绩",JOptionPane.INFORMATION_MESSAGE);
                    B1.setEnabled(true);
                    B2.setEnabled(false);
                    B3.setEnabled(false);
                    L2.setText("输入题目个数:");
                    L4.setText(null);
                    T1.setText(null);
                }
                else
                {
                    L5.setText(null);
                    T1.setText(null);
                    star();
                    B2.setEnabled(true);
                }
            }
            if(e.getSource()==B4)
            {
                int i;
                i=(int)(Math.random()*6);
                p1.setBackground(col[i]);
            }
        }
    }
    void star()
    {
        a=(int) (Math.random()*200-100);
        b=(int) (Math.random()*200-100);
        c=(int) (Math.random()*200-100);
        d=(int) (Math.random()*200-100);
        j=(int) (Math.random()*4);
        k=(int) (Math.random()*4);
        if(d<0)
        {
            a=(int) (Math.random()*9+1);
            s1=String.valueOf(a)+String.valueOf(h1[2]);
            L4.setText(s1);
            result=1;
            for(int i=1;i<=a;i++)
            {
                result=result*i;
            }
        }
        else
        {
            if(b>=0&&c>=0)
            {
                s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(c);
                L4.setText(s1);
                System.out.println(s1);
            }
            else if(b<0&&c>=0)
            {
                s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(c);
                L4.setText(s1);
                System.out.println(s1);
            }
            else if(b>=0&&c<0)
            {
                s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]);
                L4.setText(s1);
                System.out.println(s1);
            }
            else
            {
                s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]);
                L4.setText(s1);
                System.out.println(s1);
            }
            if(k>1)  //后面的计算符为乘除,先算后面两个数
            {
                if(k==2)
                {
                    result=b*c;
                }
                else if(k==3)
                {
                    result=b/c;
                }
                if(j==0)
                {
                    result=result+a;
                }
                else if(j==1)
                {
                    result=a-result;
                }
                else if(j==2)
                {
                    result=a*result;
                }
                else if(j==3)
                {
                    result=a/result;
                }
            }
            else if(k<2)
            {
                if(j==0)
                {
                    result=b+a;
                }
                else if(j==1)
                {
                    result=a-b;
                }
                else if(j==2)
                {
                    result=a*b;
                }
                else if(j==3)
                {
                    result=a/b;
                }
                if(k==0)
                    result=result+c;
                if(k==1)
                    result=result-c;
            }
        }
        System.out.println(result);
        n--;
    }
}

封装后的程序:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
public class Size {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        myframe f=new myframe();
    }

}
class myframe extends JFrame
{
    JLabel L1=new JLabel("题目:");
    JLabel L2=new JLabel("输入题目个数:");
    JLabel L3=new JLabel("提示:");
    JLabel L4=new JLabel("        ");   //题目
    JLabel L5=new JLabel("题目个数不能大于5");   //提示
    JTextField T1=new JTextField(6);
    JButton B1=new JButton("开始");
    JButton B2=new JButton("确认");
    JButton B3=new JButton("下一题");
    JButton B4=new JButton("换皮肤");
    JPanel p1=new JPanel();
    int n=0,a,b,c,d,j,k,l,m=0,p;
    double result;
    char[]h={‘+‘,‘-‘,‘*‘,‘/‘},h1={‘(‘,‘)‘,‘!‘};
    String s1,s2;
    Color col[]={Color.blue,Color.green,Color.ORANGE,Color.PINK,Color.GRAY,Color.RED,Color.LIGHT_GRAY};
    myframe(){
        this.setTitle("四则运算");
        this.setSize(300,280);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.add(p1);
        p1.setLayout(null);
        L1.setBounds(50, 20, 90, 30);
        p1.add(L1);
        L4.setBounds(140, 20, 150, 30);
        p1.add(L4);
        L2.setBounds(50, 70, 90, 30);
        p1.add(L2);
        T1.setBounds(150, 70, 90, 30);
        p1.add(T1);
        B4.setBounds(100, 110, 90, 30);
        p1.add(B4);
        B1.setBounds(10, 150, 90, 30);
        p1.add(B1);
        B2.setBounds(100, 150, 90, 30);
        p1.add(B2);
        B2.setEnabled(false);
        B3.setBounds(190, 150,90,30);
        p1.add(B3);
        L3.setBounds(50, 200, 50, 30);
        B3.setEnabled(false);
        p1.add(L3);
        L5.setBounds(100, 200, 180, 30);
        p1.add(L5);
        this.setVisible(true);
        this.setLocationRelativeTo(null);
        B1.addActionListener(new B());
        B2.addActionListener(new B());
        B3.addActionListener(new B());
        B4.addActionListener(new B());
    }
    class B implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            if(e.getSource()==B1)
            {
               p=n=(int) Double.parseDouble(T1.getText());
                //System.out.print(n);
                if(n>5||n<1)
                {
                    JOptionPane.showMessageDialog(null,"输入的个数不能大于5或者小于1","注意",JOptionPane.INFORMATION_MESSAGE);
                }
                else
                {
                    B1.setEnabled(false);
                    B2.setEnabled(true);
                    B3.setEnabled(true);
                    L2.setText("输入答案 :");
                    L5.setText(null);
                    T1.setText(null);
                    Star.star(h1, h,a,b,c,d,n,j,k,s1,L4,result);
                }
            }
            if(e.getSource()==B2)
            {
                l=(int) Double.parseDouble(T1.getText());
                if(l==result)
                {
                    m++;
                    s2="答案正确!";
                    L5.setText(s2);
                }
                else{
                    s2="答案错误!答案为:"+String.valueOf(result);
                    L5.setText(s2);
                }
                B2.setEnabled(false);
            }
            if(e.getSource()==B3)
            {
                if(n==0)
                {
                    JOptionPane.showMessageDialog(null, "一共"+p+"道题目。正确的题数为:"+m,"成绩",JOptionPane.INFORMATION_MESSAGE);
                    B1.setEnabled(true);
                    B2.setEnabled(false);
                    B3.setEnabled(false);
                    L2.setText("输入题目个数:");
                    L4.setText(null);
                    T1.setText(null);
                }
                else
                {
                    L5.setText(null);
                    T1.setText(null);
                    Star.star(h1, h,a,b,c,d,n,j,k,s1,L4,result);
                    B2.setEnabled(true);
                }
            }
            if(e.getSource()==B4)
            {
                int i;
                i=(int)(Math.random()*6);
                p1.setBackground(col[i]);
            }
        }
    }

}
import javax.swing.JLabel;

public class Star {
    public static void star(char[]h1,char[]h,int a,int b,int c,int d,int n,int j,int k,String s1,JLabel L4,double result){
            a=(int) (Math.random()*200-100);
            b=(int) (Math.random()*200-100);
            c=(int) (Math.random()*200-100);
            d=(int) (Math.random()*200-100);
            j=(int) (Math.random()*4);
            k=(int) (Math.random()*4);
            if(d<0)
            {
                a=(int) (Math.random()*9+1);
                s1=String.valueOf(a)+String.valueOf(h1[2]);
                L4.setText(s1);
                result=1;
                for(int i=1;i<=a;i++)
                {
                    result=result*i;
                }
            }
            else
            {
                if(b>=0&&c>=0)
                {
                    s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(c);
                    L4.setText(s1);
                    System.out.println(s1);
                }
                else if(b<0&&c>=0)
                {
                    s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(c);
                    L4.setText(s1);
                    System.out.println(s1);
                }
                else if(b>=0&&c<0)
                {
                    s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]);
                    L4.setText(s1);
                    System.out.println(s1);
                }
                else
                {
                    s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]);
                    L4.setText(s1);
                    System.out.println(s1);
                }
                if(k>1)  //后面的计算符为乘除,先算后面两个数
                {
                    if(k==2)
                    {
                        result=b*c;
                    }
                    else if(k==3)
                    {
                        result=b/c;
                    }
                    if(j==0)
                    {
                        result=result+a;
                    }
                    else if(j==1)
                    {
                        result=a-result;
                    }
                    else if(j==2)
                    {
                        result=a*result;
                    }
                    else if(j==3)
                    {
                        result=a/result;
                    }
                }
                else if(k<2)
                {
                    if(j==0)
                    {
                        result=b+a;
                    }
                    else if(j==1)
                    {
                        result=a-b;
                    }
                    else if(j==2)
                    {
                        result=a*b;
                    }
                    else if(j==3)
                    {
                        result=a/b;
                    }
                    if(k==0)
                        result=result+c;
                    if(k==1)
                        result=result-c;
                }
            }
            System.out.println(result);
            n--;
        }
}    具体结果和总结在我的队友14曾柏书(http://www.cnblogs.com/cypress-zeng/)的博客里,那边会有详细地解释啦。
时间: 2024-10-16 04:48:48

作业五 四则元算 测试与封装的相关文章

四则运算程序的测试与封装

程序原型:之前的小学生四则运算程序 编程语言:java 测试代码如下: 1 package SuanFa; 2 3 import static org.junit.Assert.*; 4 5 import org.junit.Test; 6 7 public class CoreTest { 8 9 @Test 10 public void testJia() { 11 Core core = new Core(); 12 double a = core.jia(9, -3); 13 Syste

大整数的四则元算

在处理大数的运算时,一般采用数组去模拟,下面介绍大数的加.减.乘.除四则运算的实现方法. 1.加法. 如: Input: 123456789123456789123456789 1 Output:123456789123456789123456790 输入采用字符数组保存,然后将输入存在整形数组里,然后逐位相加即可,同时注意进位处理. 1加法模板 2 3 #include<stdio.h> 4 #include<string.h> 5 int max(int x,int y) 6

自动生成30道四则元算题目

主要分成三部分来解决这个问题. 输入:自动输入 功能实现:生成6个随机数,有两个分子,两个分母,一个控制运算符,一个控制整数算式还是分数算式 输出:根据控制整数算式还是分数算式的随机数,进行相应的输出 #include<iostream>#include<string>#include<time.h>using namespace std;void main(){  int a[6],b=0,c,e;  string str="+-*/";  for

html+js实现四则元算计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

第二章-第三题(四则元算需求文档编写、上传至GitHub与修改)-By郭青云

题目描述: 完成小组的“四则运算”项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产生冲突.并验证GitHub上的文档确实是最新的文档. 步骤: a)编写文档 b)从代码库中pull项目至本地分支 c)修改需求文档 d)提交修改 d)合并修改的内容

四则元算(家长以后再也不用为给孩子出题发愁了)

//本程序能够随机产生100以内的整数的四则运算 #include "stdafx.h"#include "stdio.h"#include <stdlib.h>#include <time.h>void disply(){ srand(time(NULL)); int i; for(i=0;i<30;i++) { int a=rand()%100; int b=rand()%100; int c=rand()%4; if(c==0){

作业5 四则运算 测试与封装 5.2

作业5 四则运算 测试与封装  5.2 开发环境:   Eclipse 开发人员:   欧其锋(201306114305) 余汉城(201306114317)(http://www.cnblogs.com/yuhancheng/) 分工:   欧其锋:异常处理 余汉城:重构 源代码: 1 package GongNengpk; 2 3 import GongNengpkTest.ChuShuLingException; 4 import GongNengpkTest.JCException; 5

【作业报告】作业5 四则运算 测试与封装 5.1

测试与封装 5.1 程序开发简介: [开发环境]:eclipse [开发人员]:Ives & 郑胜斌 [博客地址]:38郑胜斌 [开发时间]:2015-04-30 [版本]:5.1 [要求]: 封装 测试 封装: 概念 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一种信息隐藏技术,在java中通过关键字private实现封装.什么是封装?封装把对象的所

关于原码反码补码以及位元算

首先人脑能识别的,也就是我们常写的就是原码,因为数字都有正负之分所以,二进制的时候用最高位表示正负,0为正,1为负,例如3二进制位00000011,-3二进制位10000011. 反码:正数的反码等于其本身,负数的反码:符号位不变其他位取反.(00000011)原=(00000011)反,(10000011)原=(11111100)反,为什么会有反码呐,因为用原码进行计算的时候: 比如3-3=3+(-3)=(00000011)原+(10000011)原=10000110=134,就会出现这样的误