您的位置:首页 > 其它

四则运算测试与封装5.1 结对

2015-04-30 11:23 357 查看
开发环境:eclipse

结对同伴 :罗凯杰 201306114331

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

[b]未封装的程序:[/b]

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--;
}
}


[b]封装后的代码:[/b]

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--;
}
}


[b]白盒测试:[/b]





[b][b]黑盒测试:
[/b][/b]

在输入非法字符的时候会提示出错,在规定的条件下才能运行。 运行后在提交答案的时候界面显示出现错误,无法传递正确答案。

下面列举其中一个例子:







[b]收获到和感悟:[/b]

在这次编写的封装中,有很多的地方还是弄不懂,编写的过程都是跟同伴一起完成的,遇到不会都是共同思考讨论得出结果,所以结对编程又给我加深了印象,在原来个人需要花费的时间大大减少了。对于单元测试这个方面还不是很理解,需要多点练习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: