我的隊友:杜殷浩 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 |
感受:
按我們理解的應該是這樣做吧。第一次面對單元測試,真不知道怎麼做。