我的队友:杜殷浩 http://www.cnblogs.com/ddyyhh/
主程序:
package 小学生四则运算; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.BoxLayout; import javax.swing.SwingConstants; public class Suanshi extends JFrame implements ActionListener{ JTextField[] kj; JTextField yy; JFrame g; JLabel biaot,timu,kk,k1,jieguo,dd; JButton wq,qd; JPanel p1,p2,p3,p4; int i,tj; String ssss; int []da=new int[5]; private JPanel panel; public Suanshi() { super("小学生四则运算"); panel=new JPanel(); panel.setLayout(new GridLayout(0, 1, 0, 3)); add(panel); p1=new JPanel(); panel.add(p1); FlowLayout fl1 = new FlowLayout(FlowLayout.CENTER,10,10); p1.setLayout(fl1); biaot=new JLabel("小学生四则运算"); biaot.setFont(new Font("楷体", Font.BOLD,20)); p1.add(biaot); p1.setOpaque(false); p2=new JPanel(); panel.add(p2); p2.setLayout(new GridLayout(1,0,10,10)); timu=new JLabel("\u968F\u673A\u9898\u76EE\uFF1A"); k1=new JLabel(" "); k1.setHorizontalAlignment(SwingConstants.CENTER); k1.setFont(new Font("黑体", Font.BOLD, 30)); p2.add(timu); p2.add(k1); p2.setOpaque(false); p3=new JPanel(); panel.add(p3); p3.setLayout(new GridLayout(1,0,10,10)); jieguo=new JLabel("输入答案:"); p3.add(jieguo); kk=new JLabel(" "); kk.setFont(new Font("黑体", Font.BOLD, 28)); kk.setHorizontalAlignment(SwingConstants.CENTER); p3.add(kk); p3.setOpaque(false); p4=new JPanel(); panel.add(p4); p4.setLayout(null); wq=new JButton("获取题目"); wq.setLocation(203, 10); wq.setSize(118, 31); qd=new JButton("提交答案"); qd.setLocation(350, 10); qd.setSize(118, 31); p4.add(wq); p4.add(qd); p4.setOpaque(false); wq.addActionListener(this); qd.addActionListener(this); kj=new JTextField[10]; for (int i= 0;i<5;i++) { kj[i] = new JTextField(); p2.add(kj[i]); } for (int i= 5;i<10;i++) { kj[i] = new JTextField(); p3.add(kj[i]); } yy=new JTextField(3); setBounds(350,250,640,227); setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("获取题目")) //判断点击的按钮 { for(i=0;i<5;i++) { int sz=(int)(Math.random()*4); int sz1=(int)(Math.random()*10+1); int sz2=(int)(Math.random()*10+1); Core a=new Core(); da[i]=a.yunxing(sz,sz1,sz2); kj[i].setText(Core.huoqu()); } } else if(e.getActionCommand().equals("提交答案")) { int a,b=0,c=0; for(a=5;a<10;a++) { int first= Integer.parseInt(kj[a].getText()); //把文本框输入的答案转为整形 if (first==da[b]) //判断答案是否正确 { c++; //记录答对题目的个数 } b++; } g=new JFrame("答案"); GridLayout ggg = new GridLayout(6,0,10,10); g.getContentPane().setLayout(ggg); JLabel sm=new JLabel("答对题目数:"+c); JLabel []ct=new JLabel[5]; for(a=0;a<5;a++) { ct[a]=new JLabel("第"+(a+1)+"题"+"答案为:"+da[a]); g.getContentPane().add(ct[a]); } g.getContentPane().add(sm); g.setBounds(550,270,180,180); g.setVisible(true); } } public static void main(String[] args) { Suanshi frame=new Suanshi(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Core:
package 小学生四则运算; import javax.swing.JTextField; public class Core { static String ssss; int deshu; public int yunxing(int sz,int sz1,int sz2) { switch(sz) { case 0: //0时为加法式子 ssss=String.valueOf(sz1)+'+'+String.valueOf(sz2); //把式子转为字符 deshu=sz1+sz2; break; case 1: //1时为减法式子 ssss=String.valueOf(sz1)+'-'+String.valueOf(sz2); deshu=sz1-sz2; break; case 2: //2时为乘法式子 ssss=String.valueOf(sz1)+'*'+String.valueOf(sz2); deshu=sz1*sz2; break; case 3: //3时为乘法式子 ssss=String.valueOf(sz1)+'/'+String.valueOf(sz2); deshu=sz1/sz2; break; } return deshu; } public static String huoqu() { return ssss; } }
测试类:
package 小学生四则运算; import static org.junit.Assert.*; import org.junit.Test; public class CoreText { private Core h; @Test public void jia() { int a=h.yunxing(0,1,1); assertEquals(2, a); } @Test public void jian() { int b=h.yunxing(1,1,1); assertEquals(0, b); } @Test public void cheng() { int c=h.yunxing(2,1,1); assertEquals(1, c); } @Test public void chu() { int d=h.yunxing(3,1,1); assertEquals(1, d); } }
黑盒子测试:
测试用例 |
有效等价值 |
无效等价值 |
运算符号是否配对 |
0,1,2,3对应加减乘除 |
0为减,1为除等 |
生成随机数范围 |
1到9 |
0或小数 |
结果 |
与答案一致 |
与答案不一样 |
白盒子测试:
测试 |
例子 |
预计答案 |
实际答案 |
加法运算 |
1+1 |
2 |
2 |
减法运算 |
1-1 |
0 |
0 |
乘法运算 |
1*1 |
1 |
1 |
除法运算 |
1/1 |
1 |
1 |
感受:
按我们理解的应该是这样做吧。第一次面对单元测试,真不知道怎么做。