四则运算 测试与封装 5.1
2015-04-30 09:33
316 查看
一、我们这次的代码是在Eclipse的环境下写的
二、功能
1.把计算的功能封装成类。
2.设计测试用例:用白盒与黑盒测试设计技术,为计算核心设计测试用例。
3.在实验环境中运行测试用例,分析测试结果,找出程序问题,给出改进前后的代码对照。
三、我的结伴队友是48詹泽娟 博客地址http://www.cnblogs.com/ZeJuan/
四、在这个结对任务中,我的小伙伴负责写白盒,我负责写黑盒。我负责封装测试,小伙伴负责弄测试的环境
计算功能封装如下:
测试如下:
测试运行的结果如下:
白盒如下:
黑盒如下:
输入用户名或密码不正确时提示错误
输入个数时输入非法字符会提示错误
输入答案时输入非法字符会提示错误
题目不能超过五个,也不能输入负数
改进前的代码如下(输入非法字符会出错,正确代码在下面一条哦):
改进后的代码如下:
改进前黑盒的东西都是没有处理的,如果一输入非法字符就会终止程序。并且在原程序上我加多了一个登陆界面。
五、总结
这次的作业让我真正懂得了什么是单元测试,在这之前我都只是在书上了解过,并没有什么真正的实操过。还有这次换了一个队友,我懂得了如何去读别人的代码,如何去改进自己的代码。一开始的时候总读不懂,我们两个都想要自己做自己的,都想用自己的代码,后来经过讨论决定使用各自好的部分,结合起来,新的代码产生了!我们都觉得很有成就感,毕竟终于都做出来了。相信接下来的合作会更好。
二、功能
1.把计算的功能封装成类。
2.设计测试用例:用白盒与黑盒测试设计技术,为计算核心设计测试用例。
3.在实验环境中运行测试用例,分析测试结果,找出程序问题,给出改进前后的代码对照。
三、我的结伴队友是48詹泽娟 博客地址http://www.cnblogs.com/ZeJuan/
四、在这个结对任务中,我的小伙伴负责写白盒,我负责写黑盒。我负责封装测试,小伙伴负责弄测试的环境
计算功能封装如下:
package text; import java.math.BigDecimal; public class YunsuanText { int i,a,b,c,num,s=1; float d,d1; public int addjia(int num,int a,int b){ if (num == 0) { if (a < 0 && b < 0) { System.out.println("(" + a + ")" + "+(" + b + ")="); } else if (a < 0 && b > 0) { System.out.println("(" + a + ")" + "+" + b + "="); } else if (a > 0 && b < 0) { System.out.println(a + "+(" + b + ")="); } else { System.out.println(a + "+" + b + "="); } c = a + b; } return c; } public int addjian(int num,int a,int b){ if (num == 1) { if (a < 0 && b < 0) { System.out.println("(" + a + ")" + "-(" + b + ")="); } else if (a < 0 && b > 0) { System.out.println("(" + a + ")" + "-" + b + "="); } else if (a > 0 && b < 0) { System.out.println(a + "-(" + b + ")="); } else { System.out.println(a + "-" + b + "="); } c = a - b; } return c; } public int addcheng(int num,int a,int b){ if (num == 2) { if (a < 0 && b < 0) { System.out.println("(" + a + ")" + "*(" + b + ")="); } else if (a < 0 && b > 0) { System.out.println("(" + a + ")" + "*" + b + "="); } else if (a > 0 && b < 0) { System.out.println(a + "*(" + b + ")="); } else { System.out.println(a + "*" + b + "="); } c = a * b; } return c; } public float addchu(int num,int a,int b){ if (num == 3&&b!=0) { if (a < 0 && b < 0) { System.out.println("(" + a + ")" + "/(" + b + ")="); } else if (a < 0 && b > 0) { System.out.println("(" + a + ")" + "/" + b + "="); } else if (a > 0 && b < 0) { System.out.println(a + "/(" + b + ")="); } else { System.out.println(a + "/" + b + "="); } d= (float)a/(float)b; BigDecimal bg = new BigDecimal(d); d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } return d1; } public int addjiecheng(int num,int a) { if(num==4) { System.out.println(a+"!="); int i; if(a==0||a==1) { s=1; } else { for(i=1;i<=a;i++)//计算阶乘 { s=s*i; } } } return s; } }
测试如下:
package text; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class YunsuanTextTest { @Before public void setUp() throws Exception { } @Test public void testAddjia() { int z=new YunsuanText().addjia(0, 2, 5); assertEquals(7,z); } @Test public void testAddjian() { int z=new YunsuanText().addjian(1,5,2); assertEquals(3,z); } @Test public void testAddcheng() { int z=new YunsuanText().addcheng(2, 2, 5); assertEquals(10,z); } @Test public void testAddchu() { float z=new YunsuanText().addchu(3, 2, 5); String str=String.valueOf(z); String str1=String.valueOf(0.4); assertEquals(str1,str); } @Test public void testAddjiecheng() { int z=new YunsuanText().addjiecheng(4,5); assertEquals(120,z); } }
测试运行的结果如下:
白盒如下:
黑盒如下:
输入用户名或密码不正确时提示错误
输入个数时输入非法字符会提示错误
输入答案时输入非法字符会提示错误
题目不能超过五个,也不能输入负数
改进前的代码如下(输入非法字符会出错,正确代码在下面一条哦):
import java.awt.*; 2 import java.awt.event.*; 3 import javax.swing.*; 4 public class Size { 5 public static void main(String[] args) { 6 new Frame(); 7 8 } 9 } 10 import javax.swing.*; 11 12 import java.awt.event.*; 13 import java.math.BigDecimal; 14 import java.text.DecimalFormat; 15 import java.text.NumberFormat; 16 17 class Frame extends JFrame implements ActionListener 18 { 19 int a, b, c, count, num;//a,b分别是第一个操作数,第二个操作数,c是存放用户输入的答案,count是题目总数,num是用于存放代表运算符的数 20 int t=0,f=0,sum=0,s=1;//s表示阶乘结果 21 float d,d1;//d是用于存放除法结果,d1是用于处理除法结果中保留小数点后两位 22 int counter=0;//统计答题个数 23 Timer time; 24 int t1 = 0; 25 JTextField T;//定义一个文本 26 JLabel L1 = new JLabel("请输入题目个数(1-5):"); 27 JTextField T1 = new JTextField(5); //放题目个数 28 JButton B3 = new JButton("开始"); 29 JTextField T2 = new JTextField(10); //设置运算式 30 JTextField T3 = new JTextField(10); //获取输入答案 31 JTextField T4 = new JTextField(10);//存放答案提示 32 JButton B1 = new JButton("确定"); 33 JButton B2 = new JButton("下一题"); 34 35 Frame() { 36 T=new JTextField(10);//计时 37 T.setEditable(false); 38 time = new Timer(1000, this); 39 time.start(); 40 T.setText(setTime(t1)); 41 this.setTitle("四则运算"); 42 this.setSize(280, 200); 43 this.setVisible(true); 44 this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); 45 JPanel p2 = new JPanel(); 46 JPanel p1 = new JPanel(); 47 p2.add(L1); 48 p2.add(T1); 49 p2.add(B3); 50 p2.add(T2); 51 p2.add(T3); 52 p2.add(T4); 53 p2.add(T); 54 p1.add(B1); 55 p1.add(B2); 56 add(p2, "Center"); 57 add(p1, "South"); 58 59 B3.addActionListener(new ActionListener() { //按钮B3表示开始 60 public void actionPerformed(ActionEvent e) { 61 boolean flag=false; 62 Object bj = e.getSource(); // 获得事件源 63 if (bj == B3) { 64 try{ //如果输入字符,抛出异常,提示错误 65 count = Integer.parseInt(T1.getText()); //将文本中获取的字符串转换为整型 66 } 67 catch(Exception f) 68 { 69 flag=true; 70 } 71 if(flag) 72 { 73 JOptionPane.showMessageDialog(null,"输入有误,请输入数字!"); 74 } 75 if(count>5) 76 { 77 JOptionPane.showMessageDialog(null, "题目个数不能超过五个!请重新输入。"); 78 } 79 if(count<=5) 80 { 81 num = (int) (Math.random() * 5); 82 a = (int) (Math.random() * 200) - 100; 83 b = (int) (Math.random() * 200) - 100; 84 if (num == 0)//num为0时,是加法运算 85 { 86 if (a < 0 && b < 0) //判断a,b的正负并给负数加括号 87 { 88 T2.setText("(" + a + ")" + "+(" + b + ")="); 89 } 90 else if (a < 0 && b > 0) 91 { 92 T2.setText("(" + a + ")" + "+" + b + "="); 93 } 94 else if (a > 0 && b < 0) 95 { 96 T2.setText(a + "+(" + b + ")="); 97 } 98 else 99 { 100 T2.setText(a + "+" + b + "="); 101 } 102 c = a + b; 103 //处理按钮监听事件 104 105 } else if (num == 1) //num为1表示减法运算 106 { 107 if (a < 0 && b < 0) 108 { 109 T2.setText("(" + a + ")" + "-(" + b + ")="); 110 } 111 else if (a < 0 && b > 0) 112 { 113 T2.setText("(" + a + ")" + "-" + b + "="); 114 } 115 else if (a > 0 && b < 0) 116 { 117 T2.setText(a + "-(" + b + ")="); 118 } 119 else 120 { 121 T2.setText(a + "-" + b + "="); 122 } 123 c = a - b; 124 125 } else if (num == 2) { //num为2表示乘法运算 126 if (a < 0 && b < 0) { 127 T2.setText("(" + a + ")" + "*(" + b + ")="); 128 129 } else if (a < 0 && b > 0) { 130 T2.setText("(" + a + ")" + "*" + b + "="); 131 132 } else if (a > 0 && b < 0) { 133 T2.setText(a + "*(" + b + ")="); 134 135 } else { 136 T2.setText(a + "*" + b + "="); 137 138 } 139 c = a * b; 140 } 141 else if (num == 3&&b!=0) { //num为3表示除法运算,并且要考虑除数不能为0的情况,因此b!=0 142 if (a < 0 && b< 0) { 143 T2.setText("(" + a + ")" + "/(" + b + ")="); 144 145 } else if (a < 0 && b > 0) { 146 T2.setText("(" + a + ")" + "/" + b + "="); 147 148 } else if (a > 0 && b< 0) { 149 T2.setText(a + "/(" + b + ")="); 150 151 } else { 152 T2.setText(a + "/" + b + "="); 153 154 } 155 d= (float)a/(float)b; //将整型a,b强制转换为浮点型,保证结果正确 156 BigDecimal bg = new BigDecimal(d); //将除法结果保留小数点后两位 157 d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 158 } 159 else 160 { 161 a=(int)(Math.random()*10); 162 T2.setText(a+"!="); 163 int i; 164 if(a==0||a==1) 165 { 166 s=1; 167 } 168 else 169 { 170 171 for(i=1;i<=a;i++)//计算阶乘 172 { 173 s=s*i; 174 } 175 } 176 } 177 178 } 179 } 180 } 181 }); 182 B2.addActionListener(new ActionListener() { //B2表示下一题 183 public void actionPerformed(ActionEvent e) { 184 Object bj = e.getSource(); // 获得事件源 185 if (bj == B2) { 186 int a, b, num, i = 1; 187 if (i < count) { 188 T3.setText(null);//当按钮按下一题时就将T3与T4的内容更新 189 T4.setText(null); 190 num = (int) (Math.random() * 5); 191 a = (int) (Math.random() * 200) - 100; 192 b = (int) (Math.random() * 200) - 100; 193 i++; 194 if (num == 0) { 195 if (a < 0 && b < 0) { 196 T2.setText("(" + a + ")" + "+(" + b + ")="); 197 } else if (a < 0 && b > 0) { 198 T2.setText("(" + a + ")" + "+" + b + "="); 199 } else if (a > 0 && b < 0) { 200 T2.setText(a + "+(" + b + ")="); 201 } else { 202 T2.setText(a + "+" + b + "="); 203 } 204 c = a + b; 205 } else if (num == 1) { 206 if (a < 0 && b < 0) { 207 T2.setText("(" + a + ")" + "-(" + b + ")="); 208 209 } else if (a < 0 && b > 0) { 210 T2.setText("(" + a + ")" + "-" + b + "="); 211 } else if (a > 0 && b < 0) { 212 T2.setText(a + "-(" + b + ")="); 213 } else { 214 T2.setText(a + "-" + b + "="); 215 } 216 c = a - b; 217 218 } else if (num == 2) { 219 if (a < 0 && b < 0) { 220 T2.setText("(" + a + ")" + "*(" + b + ")="); 221 222 } else if (a < 0 && b > 0) { 223 T2.setText("(" + a + ")" + "*" + b + "="); 224 225 } else if (a > 0 && b < 0) { 226 T2.setText(a + "*(" + b + ")="); 227 228 } else { 229 T2.setText(a + "*" + b + "="); 230 231 } 232 c = a * b; 233 234 235 } 236 else if (num == 3&&b!=0) { 237 if (a < 0 && b < 0) { 238 T2.setText("(" + a + ")" + "/(" + b + ")="); 239 240 } else if (a < 0 && b > 0) { 241 T2.setText("(" + a + ")" + "/" + b + "="); 242 } else if (a > 0 && b < 0) { 243 T2.setText(a + "/(" + b + ")="); 244 } else { 245 T2.setText(a + "/" + b + "="); 246 } 247 d= (float)a/(float)b; 248 BigDecimal bg = new BigDecimal(d); 249 d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 250 251 252 } 253 else 254 { 255 a=(int)(Math.random()*10); 256 T2.setText(a+"!="); 257 if(a==0||a==1) 258 { 259 s=1; 260 } 261 else 262 { 263 264 for(i=1;i<=a;i++)//计算阶乘 265 { 266 s=s*i; 267 } 268 } 269 } 270 271 counter++; 272 if(counter>=count)//判断题目是否答完,答完了就弹出一个提示题目答完并给出答题时间的对话框 273 { 274 JOptionPane.showMessageDialog(null, "题目已答完,答对了"+t+"道题,答错了"+f+"道题\n\n总分是"+sum+"\n\n总用时为:"+t1+"秒"); 275 } 276 } 277 } 278 } 279 }); 280 B1.addActionListener(new ActionListener() { //按钮B1表示确定 281 public void actionPerformed(ActionEvent e) { 282 Object bj = e.getSource(); // 获得事件源 283 if (bj == B1) { 284 if (d1== Float.parseFloat(T3.getText()) || c == Float.parseFloat(T3.getText()) || s ==Float.parseFloat(T3.getText())) { 285 T4.setText("恭喜你,答对了"); 286 t=t+1; 287 sum=sum+20;//每答对一题加20分 288 } else { 289 T4.setText("抱歉,你答错了"); 290 f=f+1; 291 } 292 } 293 } 294 }); 295 296 } 297 public void actionPerformed(ActionEvent e) { 298 t1= t1 + 1; //累加时间 299 T.setText(setTime(t1)); 300 301 } 302 public String setTime(int t1) {//累加时间 303 int hour, minute, second, a; 304 String mytimer, strsec, strmin, strhour; 305 t1=t1 % (60 * 60 * 24); 306 second = t1 % 60; 307 a = t1/ 60; 308 minute = a % 60; 309 310 hour = a / 60; 311 if (second <= 9) { 312 strsec = "0" + String.valueOf(second); 313 } else { 314 strsec = String.valueOf(second); 315 } 316 if (minute <= 9) { 317 strmin = "0" + String.valueOf(minute); 318 } else { 319 strmin = String.valueOf(minute); 320 } 321 if (hour <= 9) { 322 strhour = "0" + String.valueOf(hour); 323 } else { 324 strhour = String.valueOf(hour); 325 } 326 mytimer = "计时: " + strhour + ":" + strmin + ":" + strsec; 327 return mytimer; 328 } 329 330 331 }
改进后的代码如下:
//Size类 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Size { public static void main(String[] args) { new Login(); } } //Login类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class Login extends JFrame implements ActionListener{ JTextField f1; JTextField f2; JButton b1; JButton b2; JPanel p5; Image img = Toolkit.getDefaultToolkit().getImage("1.jpg"); Login(){ this.setTitle("四则运算的系统登录"); this.setSize(360,250); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension screensize=Toolkit.getDefaultToolkit().getScreenSize();//截取屏幕大小 this.setLocation(screensize.width/2-400/2, screensize.height/2-400/2);//居中计算 Container cp=getContentPane(); Label l1=new Label("用户:"); Label l2=new Label("密码:"); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); p5=new JPanel(){//将图片添加到面板5 protected void paintChildren(Graphics g) { int imgwidth=img.getWidth(this);//获得图片的宽高 int imgheight=img.getHeight(this); int fwidth=getWidth();//获得窗口的大小 int fheight=getHeight(); int x=(fwidth-imgwidth)/2; int y=(fheight-imgheight)/2; g.drawImage(img,x,y,this); super.paintChildren(g); } }; f1=new JTextField(15); f2=new JPasswordField(15); b1=new JButton("登录"); b2=new JButton("重置"); p1.setBackground(Color.orange); p2.add(l1); p2.add(f1); p2.setBorder(new MatteBorder(0,0,0,0,Color.black));//创建具有指定 insets和颜色的衬边边框 p2.setBackground(Color.ORANGE); p3.add(l2); p3.add(f2); p3.setBackground(Color.ORANGE); p3.setBorder(new MatteBorder(0,0,0,0,Color.black)); p4.add(b1); p4.add(b2); p4.setBorder(new MatteBorder(0,0,0,0,Color.black)); p4.setBackground(Color.ORANGE); p5.setLayout(new FlowLayout(FlowLayout.CENTER,20,20)); p5.add(p2); p5.add(p3); p5.add(p4); cp.add(p5,BorderLayout.CENTER); b1.addActionListener(this); b2.addActionListener(this); this.setResizable(false);//设置不可以改变大小 this.setVisible(true);//设置窗口可见 } public void actionPerformed(ActionEvent e) { if(e.getSource()==b1)//当获取的资源是按钮1时 {//当输入的用户名为”詹泽娟“并且密码为”123456“,则切换到四则运算的界面 if((f1.getText()).equals("詹泽娟")&&(f2.getText()).equals("123456")) { new Frame(); this.setVisible(false); } else JOptionPane.showMessageDialog(null, "用户名或者密码不正确!"); } if(e.getSource()==b2) { f1.setText(""); f2.setText(""); } } } //Frame类 import javax.swing.*; import java.awt.event.*; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; class Frame extends JFrame implements ActionListener { int a, b, c, count, num;//a,b分别是第一个操作数,第二个操作数,c是存放用户输入的答案,count是题目总数,num是用于存放代表运算符的数 int t=0,f=0,sum=0,s=1;//s表示阶乘结果 float d,d1;//d是用于存放除法结果,d1是用于处理除法结果中保留小数点后两位 int counter=0;//统计答题个数 Timer time; int t1 = 0; JTextField T;//定义一个文本 JLabel L1 = new JLabel("请输入题目个数(1-5):"); JTextField T1 = new JTextField(5); //放题目个数 JButton B3 = new JButton("开始"); JTextField T2 = new JTextField(10); //设置运算式 JTextField T3 = new JTextField(10); //获取输入答案 JTextField T4 = new JTextField(10);//存放答案提示 JButton B1 = new JButton("确定"); JButton B2 = new JButton("下一题"); Frame() { T=new JTextField(10);//计时 T.setEditable(false); time = new Timer(1000, this); time.start(); T.setText(setTime(t1)); this.setTitle("四则运算"); this.setSize(280, 200); this.setVisible(true); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); JPanel p2 = new JPanel(); JPanel p1 = new JPanel(); p2.add(L1); p2.add(T1); p2.add(B3); p2.add(T2); p2.add(T3); p2.add(T4); p2.add(T); p1.add(B1); p1.add(B2); add(p2, "Center"); add(p1, "South"); B3.addActionListener(new ActionListener() { //按钮B3表示开始 public void actionPerformed(ActionEvent e) { boolean flag=false; Object bj = e.getSource(); // 获得事件源 if (bj == B3) { try{ //如果输入字符,抛出异常,提示错误 count = Integer.parseInt(T1.getText()); //将文本中获取的字符串转换为整型 } catch(Exception f) { flag=true; } if(flag) { JOptionPane.showMessageDialog(null,"输入有误,请输入数字!"); } else { if(count>5 || count<0) { JOptionPane.showMessageDialog(null, "题目个数不能超过五个!请重新输入。"); } if(count<=5) { num = (int) (Math.random() * 5); a = (int) (Math.random() * 200) - 100; b = (int) (Math.random() * 200) - 100; if (num == 0)//num为0时,是加法运算 { if (a < 0 && b < 0) //判断a,b的正负并给负数加括号 { T2.setText("(" + a + ")" + "+(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "+" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "+(" + b + ")="); } else { T2.setText(a + "+" + b + "="); } c = a + b; //处理按钮监听事件 } else if (num == 1) //num为1表示减法运算 { if (a < 0 && b < 0) { T2.setText("(" + a + ")" + "-(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "-" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "-(" + b + ")="); } else { T2.setText(a + "-" + b + "="); } c = a - b; } else if (num == 2) { //num为2表示乘法运算 if (a < 0 && b < 0) { T2.setText("(" + a + ")" + "*(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "*" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "*(" + b + ")="); } else { T2.setText(a + "*" + b + "="); } c = a * b; } else if (num == 3&&b!=0) { //num为3表示除法运算,并且要考虑除数不能为0的情况,因此b!=0 if (a < 0 && b< 0) { T2.setText("(" + a + ")" + "/(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "/" + b + "="); } else if (a > 0 && b< 0) { T2.setText(a + "/(" + b + ")="); } else { T2.setText(a + "/" + b + "="); } d= (float)a/(float)b; //将整型a,b强制转换为浮点型,保证结果正确 BigDecimal bg = new BigDecimal(d); //将除法结果保留小数点后两位 d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } else { a=(int)(Math.random()*10); T2.setText(a+"!="); int i; if(a==0||a==1) { s=1; } else { for(i=1;i<=a;i++)//计算阶乘 { s=s*i; } } } } } } } }); B2.addActionListener(new ActionListener() { //B2表示下一题 public void actionPerformed(ActionEvent e) { Object bj = e.getSource(); // 获得事件源 if (bj == B2) { int a, b, num, i = 1; if (i < count) { T3.setText(null);//当按钮按下一题时就将T3与T4的内容更新 T4.setText(null); num = (int) (Math.random() * 5); a = (int) (Math.random() * 200) - 100; b = (int) (Math.random() * 200) - 100; i++; if (num == 0) { if (a < 0 && b < 0) { T2.setText("(" + a + ")" + "+(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "+" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "+(" + b + ")="); } else { T2.setText(a + "+" + b + "="); } c = a + b; } else if (num == 1) { if (a < 0 && b < 0) { T2.setText("(" + a + ")" + "-(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "-" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "-(" + b + ")="); } else { T2.setText(a + "-" + b + "="); } c = a - b; } else if (num == 2) { if (a < 0 && b < 0) { T2.setText("(" + a + ")" + "*(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "*" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "*(" + b + ")="); } else { T2.setText(a + "*" + b + "="); } c = a * b; } else if (num == 3&&b!=0) { if (a < 0 && b < 0) { T2.setText("(" + a + ")" + "/(" + b + ")="); } else if (a < 0 && b > 0) { T2.setText("(" + a + ")" + "/" + b + "="); } else if (a > 0 && b < 0) { T2.setText(a + "/(" + b + ")="); } else { T2.setText(a + "/" + b + "="); } d= (float)a/(float)b; BigDecimal bg = new BigDecimal(d); d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } else { a=(int)(Math.random()*10); T2.setText(a+"!="); if(a==0||a==1) { s=1; } else { for(i=1;i<=a;i++)//计算阶乘 { s=s*i; } } } counter++; if(counter>=count)//判断题目是否答完,答完了就弹出一个提示题目答完并给出答题时间的对话框 { JOptionPane.showMessageDialog(null, "题目已答完,答对了"+t+"道题,答错了"+f+"道题\n\n总分是"+sum+"\n\n总用时为:"+t1+"秒"); } } } } }); B1.addActionListener(new ActionListener() { //按钮B1表示确定 public void actionPerformed(ActionEvent e) { Object bj = e.getSource(); boolean flag=false;// 获得事件源 if (bj == B1) { try{ if (d1== Float.parseFloat(T3.getText()) || c == Float.parseFloat(T3.getText()) || s ==Float.parseFloat(T3.getText())) { T4.setText("恭喜你,答对了"); t=t+1; sum=sum+20;//每答对一题加20分 } else { T4.setText("抱歉,你答错了"); f=f+1; } } catch(Exception f) { flag=true; } if(flag) { JOptionPane.showMessageDialog(null,"输入有误,请输入数字!"); } } } }); } public void actionPerformed(ActionEvent e) { t1= t1 + 1; //累加时间 T.setText(setTime(t1)); } public String setTime(int t1) {//累加时间 int hour, minute, second, a; String mytimer, strsec, strmin, strhour; t1=t1 % (60 * 60 * 24); second = t1 % 60; a = t1/ 60; minute = a % 60; hour = a / 60; if (second <= 9) { strsec = "0" + String.valueOf(second); } else { strsec = String.valueOf(second); } if (minute <= 9) { strmin = "0" + String.valueOf(minute); } else { strmin = String.valueOf(minute); } if (hour <= 9) { strhour = "0" + String.valueOf(hour); } else { strhour = String.valueOf(hour); } mytimer = "计时: " + strhour + ":" + strmin + ":" + strsec; return mytimer; } }
改进前黑盒的东西都是没有处理的,如果一输入非法字符就会终止程序。并且在原程序上我加多了一个登陆界面。
五、总结
这次的作业让我真正懂得了什么是单元测试,在这之前我都只是在书上了解过,并没有什么真正的实操过。还有这次换了一个队友,我懂得了如何去读别人的代码,如何去改进自己的代码。一开始的时候总读不懂,我们两个都想要自己做自己的,都想用自己的代码,后来经过讨论决定使用各自好的部分,结合起来,新的代码产生了!我们都觉得很有成就感,毕竟终于都做出来了。相信接下来的合作会更好。
相关文章推荐
- 四则运算 测试与封装 5.1结队
- 练习5.1更新——四则运算 测试与封装
- 练习5.1更新——四则运算 测试与封装
- 作业5 四则运算 测试与封装 5.1 5.2
- 20150421 作业5 四则运算 测试与封装 5.1 5.2(doing)
- 【作业报告】作业5 四则运算 测试与封装 5.1
- 作业5 四则运算 测试与封装 5.1
- 20150421 作业5 四则运算 测试与封装 5.1
- 作业5 四则运算 测试与封装 5.1
- 作业5 四则运算 测试与封装 5.1 5.2
- 作业5 四则运算 测试与封装 5.1
- 作业5 四则运算 测试与封装 5.1
- 作业5 四则运算 测试与封装 5.1
- 四则运算测试与封装5.1 结对
- 四则运算 测试与封装 5.1
- 练习5.1——四则运算 测试与封装(更新版)
- 【作业报告】作业5 四则运算 测试与封装 5.1 改进版
- 作业5 四则运算 测试与封装 5.1
- 四则运算 测试与封装5.1
- 作业5 四则运算 测试与封装 5.1