练习5.1更新——四则运算 测试与封装

  1 package ppackage;
  2 import java.util.Random;
  3 import java.util.Scanner;
  4 import java.util.regex.Pattern;
  5
  6
  7 public class Colc {
  8     public int sighfh,fuhaosl;
  9     public float sighsz1,sighsz2,answer2,sum2=0,sum3=0;
 10     public float []sighsz=new float[30];
 11     public String []fuhaoq={"+","-","*","/"};
 12     public String []fuhao=new String[30];
 13     public String fuhao2,answer1,s;
 14     public String []zhengshi=new String[200];
 15     public String []first=new String[100];
 16     public String []second=new String[100];
 17     public String []three=new String[100];
 18     public String temp1="null";
 19     public int i=0,jia=0,jian=0,q=0,x=0,chen=0,chu=0,temp2,j=0,c,op=0;
 20     public static float sum=0;
 21
 22      String Colc(String x)
 23      {
 24         String[]xx=new String[200];
 25         for(c=0;c<10;c++)
 26             xx[c]="";
 27         c=0;
 28         for(int x1=0;x1<Integer.parseInt(x);x1++)
 29         {
 30         Random z=new Random();
 31         sighsz1=z.nextFloat()*10;
 32
 33         int k=0;
 34         sighsz1=(float)(Math.round(sighsz1*100))/100;
 35
 36         zhengshi[k]=String.valueOf(sighsz1);
 37
 38         fuhaosl=z.nextInt(3)+1;
 39
 40
 41         for(i=1;i<=fuhaosl;i++)
 42         {
 43             sighfh=z.nextInt(4);
 44
 45             switch(sighfh)
 46             {
 47             case 0:zhengshi[k]+="\t+\t";sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 48             zhengshi[k]+=String.valueOf(sighsz[k]);
 49
 50             jia++;
 51
 52             break;
 53             case 1:zhengshi[k]+="\t-\t";
 54             sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 55             zhengshi[k]+=String.valueOf(sighsz[k]);
 56
 57             jian++;
 58             break;
 59             case 2:zhengshi[k]+="\t*\t";
 60             sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 61             zhengshi[k]+=String.valueOf(sighsz[k]);
 62
 63             chen++;
 64             break;
 65             case 3:zhengshi[k]+="\t/\t";
 66             sighsz[k]=z.nextFloat()*100;sighsz[k]=(float)(Math.round(sighsz[k]*100))/100;
 67             zhengshi[k]+=String.valueOf(sighsz[k]);
 68
 69             chu++;
 70             break;
 71
 72             }
 73
 74         }
 75         zhengshi[k]+="\t=\t";
 76
 77         String temp="";
 78
 79
 80         System.out.printf("%s",zhengshi[k]);
 81         String []first=new String[200];
 82         String []second=new String[200];
 83
 84         String[] zhengshi1=new String[200];
 85         int q=0,i1=0,i2=0,j=0;
 86         i=0;
 87
 88         temp = zhengshi[k];
 89
 90         zhengshi1= temp.trim().split("\t");
 91         while(op<=fuhaosl*2+1)
 92         {
 93             xx[c]+=zhengshi1[op];
 94
 95             op++;
 96         }
 97
 98         int y=0;
 99         while(zhengshi1[y]==null)
100         {
101             if(zhengshi1[y].equals("/"))
102             {
103                 while(Float.parseFloat(zhengshi1[y+1])/1==0)
104                 {
105                     zhengshi1[y+1]=String.valueOf((float)(Math.round(sighsz1*100))/100);
106                 }
107             }
108             y++;
109         }
110
111         i=0;j=0;k=0;
112         while(zhengshi1[i].equals("=")==false )
113         {
114
115
116             try
117             {
118                 if(Float.parseFloat(zhengshi1[i])>=0 && Float.parseFloat(zhengshi1[i])<=100)
119                 {
120                     first[j]=zhengshi1[i];
121                     j++;i++;
122                 }
123             }
124             catch(NumberFormatException E)
125             {
126                 if(second[0]==null)
127                 {
128                     second[k]=zhengshi1[i];
129
130                     k++;i++;
131                 }
132                 else
133                 {
134
135                     if(compare(second[k-1],zhengshi1[i],first))
136                     {
137
138                             if(first[k].equals(null))
139                             {
140                                 second[k]=zhengshi1[i];
141                                 k++;i++;
142                             }
143                             else
144                             {
145                                 if(second[k-1].equals("+"))
146                                 {
147                                     sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
148
149                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
150
151                                     j--;i++;
152                                 }
153                                 else if(second[k-1].equals("-"))
154                                 {
155                                     sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
156
157                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
158
159                                     j--;i++;
160                                 }
161                                 else if(second[k-1].equals("*"))
162                                 {
163                                     sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
164
165                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
166
167                                     j--;i++;
168                                 }
169                                 else if(second[k-1].equals("/"))
170                                 {
171                                     sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
172
173                                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
174
175                                     j--;i++;
176                                 }
177
178                             }
179                         }
180
181
182                     else
183                     {
184
185                         second[k]=zhengshi1[i];
186
187
188                         i++;k++;
189
190                     }
191
192                 }
193             }
194
195
196
197
198         }
199
200
201
202             while(second[0]!=null)
203             {
204
205                 if(second[k-1].equals("+"))
206                 {
207                     sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
208
209                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
210                     j--;k=k-1;i++;
211
212                 }
213                 else if(second[k-1].equals("-"))
214                 {
215                     sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
216
217                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
218                     j--;k=k-1;i++;
219
220
221                 }
222                 else if(second[k-1].equals("*"))
223                 {
224                     sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
225
226                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
227                     j--;k=k-1;i++;
228
229
230                 }
231                 else if(second[k-1].equals("/"))
232                 {
233                     sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
234
235                     first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
236                     j--;k=k-1;i++;
237
238                 }
239
240             }
241             sum=(float)(Math.round(sum*100))/100;
242             System.out.print("\n答案为:"+sum+"\t\n");
243             c++;
244             xx[c]=String.valueOf(sum);c++;op=0;
245         }
246         int qw=0;
247         return String.valueOf(sum);
248
249
250
251     }
252     boolean compare(String x1,String x2,String x3[]) //true 出栈,flase 进栈
253     {
254         int i,j,k;
255         if(x2.equals("+") || x2.equals("-"))
256             return true;
257         else
258         {
259             if(x1.equals("*") || x1.equals("/"))
260             {
261                 return true;
262             }
263             else
264             {
265                 return false;
266             }
267         }
268     }
269     static String certain(String ts)
270     {
271         Pattern pattern = Pattern.compile("[0-9]*");
272         String ts1=ts;
273         if(pattern.matcher(ts1).matches())
274         {
275             return "true";
276         }
277         else
278         {
279             System.out.print("输入的数值有误\n请重新输入:");
280             return "false";
281         }
282
283     }
284     public static void main(String[]args)
285     {
286         Scanner in =new Scanner(System.in);
287         String panding;
288         String numm;
289         System.out.print("请输入题目数量:");
290         do
291         {
292             numm=in.next();
293             panding=certain(numm);
294         }while(panding.equals("false"));
295         for(int oo=1;oo<=Integer.parseInt(numm);oo++)
296         {
297             Colc aa=new Colc();
298             String sum2=aa.Colc("1");
299             System.out.print("输入答案:");
300             String an=in.next();
301             if(an.equals(sum2))
302             {
303                 System.out.print("√\n");
304             }
305             else
306             {
307                 System.out.print("×\n");
308             }
309         }
310
311     }
312 }

Colc

  1 package ppackage;
  2
  3 public class Calcute {
  4     public int sighfh,fuhaosl;
  5     public float sighsz1,sighsz2,answer2,sum2=0,sum3=0;
  6     public float []sighsz=new float[30];
  7     public String []fuhaoq={"+","-","*","/"};
  8     public String []fuhao=new String[30];
  9     public String fuhao2,answer1,s;
 10     public String []zhengshi=new String[200];
 11     public String []first=new String[100];
 12     public String []second=new String[100];
 13     public String []three=new String[100];
 14     public String temp1="null";
 15     public int i=0,jia=0,jian=0,q=0,x=0,chen=0,chu=0,temp2,j=0,c,op=0,k=0;
 16     public float sum=0;
 17     float Calcute(char oop,String []data)
 18     {
 19         String[]xx=new String[200];
 20         for(c=0;c<10;c++)
 21             xx[c]="";
 22         if(data[1].equals("0")) throw new ArithmeticException();
 23         zhengshi[k]=data[0]+"\t"+oop+"\t"+data[1];
 24         zhengshi[k]+="\t=\t";
 25         String temp="";
 26         System.out.printf("%s",zhengshi[k]);
 27         String []first=new String[200];
 28         String []second=new String[200];
 29
 30         String[] zhengshi1=new String[200];
 31         int q=0,i1=0,i2=0,j=0;
 32         i=0;
 33
 34         temp = zhengshi[k];
 35         zhengshi1= temp.trim().split("\t");
 36         while(op<=1+1)
 37         {
 38             xx[c]+=zhengshi1[op];
 39             op++;
 40         }
 41
 42         int y=0;
 43         while(zhengshi1[y]==null)
 44         {
 45             if(zhengshi1[y].equals("/"))
 46             {
 47                 while(Float.parseFloat(zhengshi1[y+1])/1==0)
 48                 {
 49                     zhengshi1[y+1]=String.valueOf((float)(Math.round(sighsz1*100))/100);
 50                 }
 51             }
 52             y++;
 53         }
 54
 55         i=0;j=0;k=0;
 56         while(zhengshi1[i].equals("=")==false )
 57         {
 58             try
 59             {
 60                 if(Float.parseFloat(zhengshi1[i])>=0 && Float.parseFloat(zhengshi1[i])<=100)
 61                 {
 62                     first[j]=zhengshi1[i];
 63                     j++;i++;
 64                 }
 65             }
 66             catch(NumberFormatException E)
 67             {
 68                 if(second[0]==null)
 69                 {
 70                     second[k]=zhengshi1[i];
 71                     k++;i++;
 72                 }
 73                 else
 74                 {
 75
 76                     if(compare(second[k-1],zhengshi1[i],first))
 77                     {
 78
 79                         if(first[k].equals(null))
 80                         {
 81                             second[k]=zhengshi1[i];
 82                             k++;i++;
 83                         }
 84                         else
 85                         {
 86                             if(second[k-1].equals("+"))
 87                             {
 88                                 sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
 89                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
 90                                 j--;i++;
 91                             }
 92                             else if(second[k-1].equals("-"))
 93                             {
 94                                 sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
 95                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
 96                                 //System.out.print("\n答案暂时是:"+sum+"\n");
 97                                 j--;i++;
 98                             }
 99                             else if(second[k-1].equals("*"))
100                             {
101                                 sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
102                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
103                                 //System.out.print("\n答案暂时是:"+sum+"\n");
104                                 j--;i++;
105                             }
106                             else if(second[k-1].equals("/"))
107                             {
108                                 sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
109                                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=zhengshi1[i];
110                                 j--;i++;
111                             }
112
113                         }
114                     }
115
116
117                     else
118                     {
119
120                         second[k]=zhengshi1[i];
121
122                         i++;k++;
123
124                     }
125
126                 }
127             }
128
129
130
131
132         }
133
134         while(second[0]!=null)
135         {
136
137             if(second[k-1].equals("+"))
138             {
139                 sum=Float.parseFloat(first[k-1])+Float.parseFloat(first[k]);
140
141                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
142                 j--;k=k-1;i++;
143             }
144             else if(second[k-1].equals("-"))
145             {
146                 sum=Float.parseFloat(first[k-1])-Float.parseFloat(first[k]);
147
148                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
149                 j--;k=k-1;i++;
150
151
152             }
153             else if(second[k-1].equals("*"))
154             {
155                 sum=Float.parseFloat(first[k-1])*Float.parseFloat(first[k]);
156
157                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
158                 j--;k=k-1;i++;
159
160
161             }
162             else if(second[k-1].equals("/"))
163             {
164                 sum=Float.parseFloat(first[k-1])/Float.parseFloat(first[k]);
165
166                 first[k-1]=String.valueOf(sum);first[k]=null;second[k-1]=null;
167                 j--;k=k-1;i++;
168
169             }
170
171         }
172         sum=(float)(Math.round(sum*100))/100;
173         System.out.print("\n答案为:"+sum+"\t\n");
174         c++;
175         xx[c]=String.valueOf(sum);c++;op=0;
176         return sum;
177     }
178     int qw=0;
179
180
181
182     boolean compare(String x1,String x2,String x3[]) //true 出栈,flase 进栈
183     {
184         int i,j,k;
185         if(x2.equals("+") || x2.equals("-"))
186             return true;
187         else
188         {
189             if(x1.equals("*") || x1.equals("/"))
190             {
191                 return true;
192             }
193             else
194             {
195                 return false;
196             }
197         }
198     }
199
200     public static void main(String[] args) {
201
202         char oop=‘/‘;
203         String[]data={"8.2","2"};
204         Calcute aa=new Calcute();
205         aa.Calcute(oop, data);
206     }
207
208 }

Calcute

 1 package ppackage;
 2
 3 import static org.junit.Assert.*;
 4
 5 import org.junit.Test;
 6
 7 public class CalcuteTest {
 8
 9     @Test
10     public void testJia() {
11         String[]data={"10.0","5.5"};
12         char oop=‘+‘;
13         Calcute c=new Calcute();
14         float answer=c.Calcute(oop, data);
15         System.out.println(answer);
16         assertEquals(15.5,answer,100);
17     }
18     @Test
19     public void testJian() {
20         String[]data={"10.0","5.0"};
21         char oop=‘-‘;
22         Calcute c=new Calcute();
23         //c.Calcute(oop, data);
24         float answer=c.Calcute(oop, data);
25         System.out.println(answer);
26         assertEquals(5,answer,100);
27     }
28     @Test
29     public void testChen() {
30         String[]data={"10.0","5.0"};
31         char oop=‘*‘;
32         Calcute c=new Calcute();
33         float answer=c.Calcute(oop, data);
34         System.out.println(answer);
35         assertEquals(50.00,answer,100);
36     }
37     @Test
38     public void testChu() {
39         String[]data={"10.0","5.0"};
40         char oop=‘/‘;
41         Calcute c=new Calcute();
42         float answer=c.Calcute(oop, data);
43         System.out.println(answer);
44         assertEquals(2,answer,100);
45     }
46     @Test(expected = ArithmeticException.class)
47     public void testException() {
48         String[]data={"10.0","0"};
49         char oop=‘/‘;
50         Calcute c=new Calcute();
51         float answer=c.Calcute(oop, data);
52     }
53
54 }

CalcuteTest

以上3条程序代码分别是:

1、主程序;

2、计算功能模块程序;

3、单元测试程序;

-(1)黑盒子测试.这个测试主要就是以用户角度测试代码的功能与用途:


测试用例


输入条件


有效等价类


无效等价类


代码途径


题目有效性判断


只允许数字


10


A


Line269-283


输入字符的有效性判断


(10,2,A)


10,2


A


题目数量


小于等于100


1-100


>100


参数类型


String[],char


{“100”,”200”},+,/


‘100’,’100’


答案类型


匹配


正确√


错误×


测试对象


测试说明


测试数据


测试结果


题目数量


输入非法数据


Abc


输入不正确,请从新输入:


题目数量


输入数据过大


101


抛出异常,提示错误


加减乘除计算


输入符号有误


10++20


提示输入有误


加减乘除计算


输入数值有误


10a+20bd


提示输入有误


计算范围


精确度


12.0和12和12.00


正确

(2)白盒子测试。对软件的过程性细节做细致的检查。


测试用例


用例说明


通过途径


实际结果


加法处理


10.0+5.5


Line9-17


5.5


减法处理


10.0-5.5


Line18-27


4.5


乘法处理


10.0*5.0


Line28-37


50.0


除法处理


10.0/5.0


Line37-45


2.0


除零处理


10.0/0


Line46-52


抛出异常


代码覆盖率


100%


100%


100%


 

代码主要来源于测试类程序:由于截屏的屏幕的原因,无法全部截图下来,请参考上面的折叠代码

主要测试结果,及其分析截图:

我们团队的工作照片:

最后总结:

本次实验总体而言,对于我本人来说,难度着实很大,因为是第一次接触这一类测试(单元测试,黑白盒测试),一开始我们并不明白这一些测试到底什么情况,做起来也非常棘手,一度让我和我的小伙伴在进度上停止下来了,总体上我个人感觉对本次实验,不是很满意,自己还有需要需要改进的地方,还需要我和我的小伙伴多下点功夫才行。同时需要说明一点,由于本次实验,老师说需要交换队友,我们团队一开始是尝试过交换队友的,但是在前期出现了许多的沟通障碍,因为彼此间对程序的理解程度存在障碍,所以后面我们决定本次实验,我和我的小伙伴一直觉得,让我和我上一位队友一起带着本次实验新的小伙伴一起工作,初步先让新的成员先熟悉代码。然后再逐步进行下面的工作。不管怎样,经过本次实验我们都发现了许多问题,还存在许多地方需要改进。所以我们团队会继续努力,力争在接下来的实验能完成的更好。

本次实验,与我并肩作战的小伙伴是:铭琪姐姐:http://www.cnblogs.com/mikky/

时间: 2024-08-18 23:31:07

练习5.1更新——四则运算 测试与封装的相关文章

作业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实现封装.什么是封装?封装把对象的所

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

开发环境:eclipse 结对同伴 :罗凯杰 同伴博客:http://www.cnblogs.com/lkjie/ 未封装的程序: 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(

练习5.1——四则运算 测试与封装

主程序 package com.h2; import java.text.DecimalFormat; import java.util.Scanner; import java.util.regex.Pattern; /* * 1.定制数量 * 2.控制是否有乘除法 * 3.控制数值范围 * 4.定制真分数练习题 * 5.校检用户输入 * 6.输出答题正确率 */ public class Main { public static int max = 10;// 控制算式个数 public s

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

刘恒 http://www.cnblogs.com/iliuh/ chaorenken http://www.cnblogs.com/lixuanzong/ 这个是主函数 package tion; import java.util.*; import java.applet.*; //引入Applet类 import java.awt.*; import java.awt.event.*; //引入系统事件类包. public class ta extends Applet implement

四则运算 测试与封装 (完善) 5.2 5.3

一.结对小伙伴:陈淑筠 http://www.cnblogs.com/babybluecsj/ 二.(1)我用小伙伴上一次5.1的作业来单元测试,发现当除数为零时,运行时未抛出异常,于是我们加上了    1.     if(fh2=='/'){             if(b==0){                 throw new Exception("除数不能为0!");             }             answer=a/b;         } 2. t

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

import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class fengzhuang {// Software Engineering 軟件工程 作業2 static String jia = "+"; static String jian = "-"; static String cheng = "*"; static Str

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

1 import java.math.BigDecimal; 2 import java.text.NumberFormat; 3 import java.util.*; 4 public class Core { 5 public int calc(String zifu,int max,int fanwei1,int fanwei2,int jingdu) throws ChushulingException, fanweiException, zifushuException 6 { 7

四则运算测试与封装5.2 5.3 结对

开发环境:eclipse 结对同伴 :罗凯杰 同伴博客:http://www.cnblogs.com/lkjie/ 收获与心得: 这次的编写主要是抛出程序异常,在编写过程中遇到很多的麻烦,但通过两个人的合作,共同调试从而解决问题得出结果,发现结对的编写的好处越来越多了,从中获得的知识不少,期待下次团队的合作.