♣ 第一阶段目标
能把计算的功能封装起来,通过测试程序和API接口测试其简单的加法功能。
♣ 第二阶段目标
通过测试程序和API接口测试其简单的加法、减法、乘法、除法功能。并能看到代码覆盖率。
♣ 第三阶段目标
通过测试程序和API接口测试对于各种参数的支持。并能看到代码覆盖率。
♣ 第四阶段目标
通过增量修改改进程序,完成对各种错误情况的处理。
开发环境: Eclipse
结对伙伴:
| 姓名 | 学号 | 博客地址 |
| 余雅诗(领航员) | 201306114453 | http://www.cnblogs.com/ys1101/ |
| 方俊杰(驾驶员) | 201306114417 | http://www.cnblogs.com/imfjj/ |
源程序:
1 package operation; 2 3 import java.awt.Dimension; 4 5 public class Test implements ActionListener, KeyListener { 6 7 private JFrame frame; 8 private JTextField textField; 9 private JTextField textField_1; 10 private JTextField textField_2; 11 private JTextField textField_3; 12 private JTextField textField_4; 13 private JTextField textField_5; 14 private JTextField textField_6; 15 private JTextField textField_7; 16 private JButton btnNewButton; 17 private JButton btnNewButton_1; 18 private DecimalFormat df; 19 private Random r=new Random(); 20 21 private int five=0;//判断运算符 22 private static double a; 23 private static double b; 24 private JTextField textField_8; 25 26 /** 27 * Launch the application. 28 */ 29 public static void main(String[] args) { 30 EventQueue.invokeLater(new Runnable() { 31 public void run() { 32 try { 33 Test window = new Test(); 34 window.frame.setVisible(true); 35 } catch (Exception e) { 36 e.printStackTrace(); 37 } 38 } 39 }); 40 } 41 42 /** 43 * Create the application. 44 */ 45 public Test() { 46 initialize(); 47 } 48 49 /** 50 * Initialize the contents of the frame. 51 */ 52 public static boolean isNumeric(String number) { 53 for (int i = number.length(); --i >= 0;) { 54 55 if (!Character.isDigit(number.charAt(i))&&number.charAt(i)!='.') { 56 return false; 57 } 58 } 59 return true; 60 } 61 private void initialize() { 62 63 df=new DecimalFormat(".##");//保留两位 64 five=r.nextInt(3); 65 a=r.nextDouble()*100; 66 b=r.nextDouble()*100; 67 68 String as=df.format(a); 69 a=Double.parseDouble(as); 70 String ab=df.format(b); 71 b=Double.parseDouble(ab); 72 frame = new JFrame(); 73 frame.setTitle("\u5C0F\u5B66\u751F\u7B80\u6613\u56DB\u5219\u8FD0\u7B97--\uFF08\u5355\u5143\u6D4B\u8BD5\u7BC7\uFF09"); 74 Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize(); 75 frame.setSize(500, 300 ); 76 frame.setLocation((screenSize.width-500 )/2, (screenSize.height-500)/2); 77 frame.getContentPane().setLayout(null); 78 79 JLabel label = new JLabel("\u9898\u76EE"); 80 label.setBounds(10, 10, 54, 15); 81 frame.getContentPane().add(label); 82 83 textField = new JTextField(); 84 textField.setBounds(46, 7, 66, 21); 85 frame.getContentPane().add(textField); 86 textField.setColumns(10); 87 textField.setText(String.valueOf(a)); 88 89 textField_1 = new JTextField(); 90 textField_1.setBounds(139, 7, 33, 21); 91 frame.getContentPane().add(textField_1); 92 textField_1.setColumns(10); 93 if(five==0) 94 textField_1.setText("+"); 95 else if(five==1) 96 textField_1.setText("-"); 97 else if(five==2) 98 textField_1.setText("*"); 99 else if(five==3) 100 textField_1.setText("/");//随机产生第一次进去的运算符号 101 102 textField_2 = new JTextField(); 103 textField_2.setBounds(207, 7, 66, 21); 104 frame.getContentPane().add(textField_2); 105 textField_2.setColumns(10); 106 textField_2.setText(String.valueOf(b)); 107 108 JLabel lblNewLabel = new JLabel(" ="); 109 lblNewLabel.setBounds(283, 10, 31, 15); 110 frame.getContentPane().add(lblNewLabel); 111 112 textField_3 = new JTextField(); 113 textField_3.setBounds(322, 7, 66, 21); 114 frame.getContentPane().add(textField_3); 115 textField_3.setColumns(10); 116 117 JLabel label_1 = new JLabel("\u7B54\u6848"); 118 label_1.setBounds(10, 52, 54, 15); 119 frame.getContentPane().add(label_1); 120 121 textField_4 = new JTextField(); 122 textField_4.setEditable(false); 123 textField_4.setBounds(46, 49, 66, 21); 124 frame.getContentPane().add(textField_4); 125 textField_4.setColumns(10); 126 127 textField_5 = new JTextField(); 128 textField_5.setEditable(false); 129 textField_5.setBounds(140, 49, 33, 21); 130 frame.getContentPane().add(textField_5); 131 textField_5.setColumns(10); 132 133 textField_6 = new JTextField(); 134 textField_6.setEditable(false); 135 textField_6.setBounds(207, 49, 66, 21); 136 frame.getContentPane().add(textField_6); 137 textField_6.setColumns(10); 138 139 JLabel lblNewLabel_1 = new JLabel(" ="); 140 lblNewLabel_1.setBounds(283, 52, 31, 15); 141 frame.getContentPane().add(lblNewLabel_1); 142 143 textField_7 = new JTextField(); 144 textField_7.setEditable(false); 145 textField_7.setBounds(322, 49, 66, 21); 146 frame.getContentPane().add(textField_7); 147 textField_7.setColumns(10); 148 149 btnNewButton = new JButton("\u9000\u51FA"); 150 btnNewButton.setBounds(173, 211, 93, 23); 151 frame.getContentPane().add(btnNewButton); 152 153 btnNewButton_1 = new JButton("\u4E0B\u4E00\u9898"); 154 btnNewButton_1.setBounds(398, 6, 76, 23); 155 frame.getContentPane().add(btnNewButton_1); 156 btnNewButton.addActionListener(this); 157 158 JLabel label_2 = new JLabel("\u60C5\u51B5"); 159 label_2.setBounds(10, 106, 54, 15); 160 frame.getContentPane().add(label_2); 161 162 textField_8 = new JTextField(); 163 textField_8.setEditable(false); 164 textField_8.setBounds(46, 103, 428, 21); 165 frame.getContentPane().add(textField_8); 166 textField_8.setColumns(10); 167 btnNewButton_1.addActionListener(this); 168 frame.setResizable(false); 169 } 170 171 172 173 @Override 174 public void keyPressed(KeyEvent arg0) { 175 // TODO Auto-generated method stub 176 177 if (arg0.getKeyCode() == KeyEvent.VK_ENTER) 178 { 179 textField_4.setText(textField.getText()); 180 textField_5.setText(textField_1.getText()); 181 textField_6.setText(textField_2.getText()); 182 } 183 } 184 185 @Override 186 public void keyReleased(KeyEvent e) { 187 // TODO Auto-generated method stub 188 189 } 190 @Override 191 public void keyTyped(KeyEvent e) { 192 // TODO Auto-generated method stub 193 194 195 } 196 @Override 197 public void actionPerformed(ActionEvent e) { 198 // TODO Auto-generated method stub 199 if(e.getSource()==btnNewButton_1) 200 { 201 textField_4.setText(textField.getText()); 202 textField_5.setText(textField_1.getText()); 203 textField_6.setText(textField_2.getText()); 204 205 if(textField_1.getText().equals("+")||textField_1.getText().equals("-")||textField_1.getText().equals("*")||textField_1.getText().equals("/")) 206 { 207 if(textField_3.getText().equals("")) 208 { 209 textField_8.setText("答案为空"); 210 textField_7.setText(null); 211 textField_4.setText(null); 212 textField_5.setText(null); 213 textField_6.setText(null); 214 } 215 else 216 { 217 if(textField_1.getText().equals("+")) 218 { 219 Additive add=new Additive(Double.parseDouble(textField.getText()),Double.parseDouble(textField_2.getText()));//构造对象 220 double c=add.Get_AaddB(); 221 String cs=df.format(c); 222 c=Double.parseDouble(cs); 223 System.out.print("cs="+cs+"c="+c); 224 textField_7.setText(String.valueOf(c)); 225 } 226 else if(textField_1.getText().equals("-")) 227 { 228 Subduction sub=new Subduction(Double.parseDouble(textField.getText()),Double.parseDouble(textField_2.getText())); 229 230 double c=sub.Get_AsbuB(); 231 String cs=df.format(c); 232 c=Double.parseDouble(cs); 233 234 textField_7.setText(String.valueOf(c)); 235 } 236 else if(textField_1.getText().equals("*")) 237 { 238 Multiplication mul=new Multiplication(Double.parseDouble(textField.getText()),Double.parseDouble(textField_2.getText())); 239 240 double c=mul.Get_AmulB(); 241 String cs=df.format(c); 242 c=Double.parseDouble(cs); 243 textField_7.setText(String.valueOf(c)); 244 } 245 else if(textField_1.getText().equals("/")) 246 { 247 Division div=new Division(Double.parseDouble(textField.getText()),Double.parseDouble(textField_2.getText())); 248 if(div.Get_b()!=0) 249 { 250 double c=div.Get_AmulB(); 251 String cs=df.format(c); 252 c=Double.parseDouble(cs); 253 254 textField_7.setText(String.valueOf(c)); 255 256 } 257 258 else 259 { 260 261 textField_8.setText("分母不能为"+0+"\n"); 262 textField_7.setText(null); 263 textField_4.setText(null); 264 textField_5.setText(null); 265 textField_6.setText(null); 266 } 267 268 } 269 //if(!textField_1.getText().equals("/")) 270 if(this.isNumeric(textField_3.getText())) 271 { 272 273 if(Double.parseDouble(textField_3.getText())==Double.parseDouble(textField_7.getText())) 274 { 275 textField_8.setText("答对了"); 276 } 277 else 278 textField_8.setText("答错了"); 279 } 280 else 281 textField_8.setText("答案无效"); 282 283 } 284 285 286 287 } 288 else 289 { 290 textField_8.setText("符号无效"); 291 textField_7.setText(null); 292 textField_4.setText(null); 293 textField_5.setText(null); 294 textField_6.setText(null); 295 } 296 297 298 299 five=r.nextInt(4);//重新设置运算 300 a=r.nextDouble()*100; 301 b=r.nextDouble()*100; 302 303 String as=df.format(a); 304 a=Double.parseDouble(as); 305 String ab=df.format(b); 306 b=Double.parseDouble(ab); 307 textField.setText(String.valueOf(a)); 308 if(five==0) 309 textField_1.setText("+"); 310 else if(five==1) 311 textField_1.setText("-"); 312 else if(five==2) 313 textField_1.setText("*"); 314 else if(five==3) 315 textField_1.setText("/");//随机产生第一次进去的运算符号 316 317 textField_2.setText(String.valueOf(b)); 318 319 320 321 textField_3.setText(null); 322 323 } 324 else if(e.getSource()==btnNewButton) 325 { 326 System.exit(0); 327 } 328 329 } 330 331 }