“四则运算练习器”的开发心得与优化方案

软件工程综合实践专题    第二次作业

注:本博客与徐明煜同学一同合作完成。(1759204 徐明煜  1759213 孙子璇)

 

一、概述

这次我们要做的是一个四则运算练习器,要求如下:

1. 每次出300道四则运算练习题,两个运算符,100以内的数字,题目避免重复;

2. 写出答案,并保证答案在0-100之间;

3. 可扩展性;

4. 可定制(题目数量是否可变,打印方式是否可以选择,有无乘除法,有无括号,数值范围,加减有无负数,除法有无余数,是否支持分数,打印中每行的间隔是否可调整);

5. 代码规范;

除基本要求外,我们认为GUI对于一个四则运算练习器来讲也是必要的,因此,在综合考虑开发周期的限制与当前的学习情况后,我们最终选择使用JAVA语言来实现。

二、功能实现

1.  根据自身需求对“+”、“−”、“×”、“÷”进行自主选择

 

可以自主选择需要练习的运算类型(+/−/×/÷)。

亮点:实现了针对题型的个性化设计。

通过该应用用户可进行对四则运算的专项训练(每次勾选一个)及混合训练(每次勾选两个以上),且可以根据个人练习需要对题型进行任意组合,以达到巩固强项、强化弱项的目的。

2.  随机生成300道不重复的练习题

根据用户的选择生成对应的一级运算(加法、减法)及二级运算(乘法、除法)题目共300道(包括结果为负数的减法运算,及结果取整数位的除法运算),且能够让用户在应用中进行作答。

亮点:能够随机生成参加运算的数字及运算符。

利用产生随机数(100以内)的方法来避免题目重复的问题。当用户选择对两种或以上运算进行练习时,系统将随机显示相应的运算符,以实现应用的可定制化

3.  检验答案的正确性

 

 在用户完成练习并“确定”后,系统会将用户的答案与正确答案相比对,来判断用户输入的答案是否正确,并将结果显示在整道题目末端——正确(绿色)⁄ 错误(红色)。

亮点:能够主动判断答案正误。

这一功能省去了做完练习后的人工批阅环节,减轻了批阅者的负担;用不同的颜色区分正误能够让用户更加直观地了解自己的做题情况,方便用户根据现有的掌握情况来制定下一步的练习计划。

三、问题与解决办法

1.  如何生成GUI?

我们利用Java swing实现对GUI的开发,参考

(1)“Java Swing 图形界面开发简介”

原址:http://blog.csdn.net/xietansheng/article/details/72814531

(2)“JavaSwing_1.7: BorderLayout(边界布局)”

原址:http://blog.csdn.net/xietansheng/article/details/72862707

(3)JavaSwing_1.9: null(绝对布局)

原址:http://blog.csdn.net/xietansheng/article/details/72862726

(4)“JavaSwing_2.1: JLabel(标签)”

原址:http://blog.csdn.net/xietansheng/article/details/74362076

(5)“JavaSwing_2.2: JButton(按钮)”

原址:http://blog.csdn.net/xietansheng/article/details/74363221

(6)“JavaSwing_2.4: JCheckBox(复选框)”

原址:http://blog.csdn.net/xietansheng/article/details/74363460

(7)“JavaSwing_2.6: JTextField(文本框)”

原址:http://blog.csdn.net/xietansheng/article/details/74363582

(8)“JavaSwing_2.10: JList(列表框)”

原址:http://blog.csdn.net/xietansheng/article/details/74363719

(9)“JavaSwing_3.1: JPanel(面板)”

原址:http://blog.csdn.net/xietansheng/article/details/74366470

(10)“JavaSwing_3.2: JScrollPane(滚动面板)”

原址:http://blog.csdn.net/xietansheng/article/details/74366495

(11)“JavaSwing_4.1: JFrame(窗口)”

原址:http://blog.csdn.net/xietansheng/article/details/75948927

(12)“JavaSwing_5.1: 组件的位置和尺寸”

原址:http://blog.csdn.net/xietansheng/article/details/78389183

(13)“JavaSwing_5.3: 事件处理”

原址:http://blog.csdn.net/xietansheng/article/details/78389255

该应用总体上共分为两个图形界面,一个是用户进行题型选择的界面,另一个是用户进行练习的界面。

 其中因为JScrollPane中只可添加一个组件,故将所需组件添加在JPanel中后,又将JPanel添加在JScrollPane中。

2.  如何避免题目重复性?

要避免题目的重复性,就要实现数字(参与运算的)的随机性,又因为要求中对数值范围(100以内)进行了限制,因此我们参考了

How do I generate random integers within a specific range in Java?”

原址:http://stackoverflow.com/questions/363681/generating-random-integers-in-a-range-with-java

3.  如何实现个性化?

个性化即可定制化,即应用可根据用户的选择随机产生题目。

这一功能的实现主要依赖于运算符的随机产生:通过设置全局变量flag标识复选框的选择情况,并用整型变量代表其所对应的运算符,再根据复选框的选择个数,随机生成整形变量的值。

 1        else if(Listener.flag1&&Listener.flag2&&Listener.flag3&&Listener.flag4) {
 2                     for(int i=0;i<300;i++) {
 3                         Random random = new Random();
 4                         Integer s = random.nextInt(4);
 5                         if(s==0) {
 6                             sign[i] = "+";
 7                         } else if(s==1) {
 8                             sign[i] = "-";
 9                         } else if(s==2) {
10                             sign[i] = "*";
11                         } else if(s==3) {
12                             sign[i] = "/";
13                         }
14             }
15         }   

4.  如何判断正误?

在生成随机数的同时将其存入数组:先将运算符前的数字存入a[ ],运算符后的数字存入b[ ],再将运算结果存入c[ ]。最后用for循环在用户输入答案后将输入的内容与c[ i ]相比较。

当二者相等时为“正确”,否则为错误。

 1     Integer[] answer;
 2     public void setjTextFields(JTextField[] jTextFields) {
 3         for(int i=0;i<300;i++) {
 4             this.jTextFields[i] = jTextFields[i];
 5         }
 6     }
 7     public void setAnswer(Integer[] answer) {
 8         this.answer = answer;
 9     }
10     public void actionPerformed(ActionEvent e) {
11             for(int i=0;i<300;i++) {
12             if(Integer.toString(answer1[i]).equals(jTextFields[i].getText())) {
13                 jLabels[i].setText("正确");
14                 jLabels[i].setForeground(Color.green);
15             } else {
16                 jLabels[i].setText("错误");
17                 jLabels[i].setForeground(Color.red);
18             }
19             System.out.println(Integer.toString(answer1[i])+" "+jTextFields[i].getText()+"*");
20         }

产生随机数并将其存入数组:

 1         Random random = new Random();
 2         int count = 0;
 3         while (count < a.length) {
 4             Boolean flag = true;
 5             Integer r = random.nextInt(100);     //生成100以内的随机数
 6             for (int i = 0; i < a.length; i++) {
 7                 if (r == a[i]) {
 8                     flag = false;
 9                     break;
10                 }
11             }
12             if (flag) {
13                 a[count] = r;
14                 System.out.println(a[count]);
15                 count++;
16             }
17         }    

四、源代码

CalculateWindow.java
  1 import javax.swing.*;
  2 import java.awt.*;
  3 import java.util.Random;
  4 
  5 public class CalculateWindow extends JFrame{
  6     JPanel jPaneL;
  7 
  8     JList <Integer> jList1;
  9     JList <String> jList2;
 10     JList <Integer> jList3;
 11     JList <String> jList4;
 12 
 13     JList <Integer> jList5;
 14     JList <String> jList6;
 15     JList <Integer> jList7;
 16     JList <String> jList8;
 17 
 18     JList <Integer> jList9;
 19     JList <String> jList10;
 20     JList <Integer> jList11;
 21     JList <String> jList12;
 22 
 23     JList <Integer> jList13;
 24     JList <String> jList14;
 25     JList <Integer> jList15;
 26     JList <String> jList16;
 27 
 28     JTextField[] jTextFields=new JTextField[300];
 29     JLabel[] jLabels=new JLabel[300];
 30 
 31     JButton jButton1;
 32     CalculateListener calculateListener=new CalculateListener();
 33 
 34     private Integer[] a = new Integer[75];
 35     private Integer[] b = new Integer[75];
 36     private Integer[] c = new Integer[75];
 37     private Integer[] d = new Integer[75];
 38     private Integer[] e = new Integer[75];
 39     private Integer[] f = new Integer[75];
 40     private Integer[] g = new Integer[75];
 41     private Integer[] h = new Integer[75];
 42 
 43     private Integer[] answer1 = new Integer[75];
 44     private Integer[] answer2 = new Integer[75];
 45     private Integer[] answer3 = new Integer[75];
 46     private Integer[] answer4 = new Integer[75];
 47 
 48     private String[] sign=new String[75];
 49     private String[] equal=new String[75];
 50 
 51     void create() {
 52         JFrame jf = new JFrame("四则运算练习器");
 53         jf.setLayout(null);
 54         jf.setSize(1700, 1025);
 55         jf.setLocationRelativeTo(null);
 56         jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 57 
 58         jPaneL=new JPanel();
 59         jPaneL.setLayout(null);
 60 
 61         Random random1 = new Random();
 62         int count1 = 0;
 63         while (count1 < a.length) {
 64             Boolean flag1 = true;
 65             Integer r1 = random1.nextInt(100);     //生成100以内的随机数
 66             for (int i = 0; i < a.length; i++) {
 67                 if (r1 == a[i]) {
 68                     flag1 = false;
 69                     break;
 70                 }
 71             }
 72             if (flag1) {
 73                 a[count1] = r1;
 74                 System.out.println(a[count1]);
 75                 count1++;
 76             }
 77         }
 78 
 79         Random random2 = new Random();
 80         int count2 = 0;
 81         while (count2 < b.length) {
 82             Boolean flag2 = true;
 83             Integer r2 = random2.nextInt(100);     //生成100以内的随机数
 84             for (int i = 0; i < b.length; i++) {
 85                 if (r2 == b[i]||(Listener.flag4 && r2==0)) {
 86                     flag2 = false;
 87                     break;
 88                 }
 89             }
 90             if (flag2) {
 91                 b[count2] = r2;
 92                 System.out.println(r2);
 93                 count2++;
 94             }
 95         }
 96 
 97         Random random3 = new Random();
 98         int count3 = 0;
 99         while (count3 < c.length) {
100             Boolean flag3 = true;
101             Integer r3 = random3.nextInt(100);     //生成100以内的随机数
102             for (int i = 0; i < c.length; i++) {
103                 if (r3 == c[i]) {
104                     flag3 = false;
105                     break;
106                 }
107             }
108             if (flag3) {
109                 c[count3] = r3;
110                 System.out.println(r3);
111                 count3++;
112             }
113         }
114 
115         Random random4 = new Random();
116         int count4 = 0;
117         while (count4 < d.length) {
118             Boolean flag4 = true;
119             Integer r4 = random4.nextInt(100);     //生成100以内的随机数
120             for (int i = 0; i < d.length; i++) {
121                 if (r4 == d[i]||(Listener.flag4 && r4==0)) {
122                     flag4 = false;
123                     break;
124                 }
125             }
126             if (flag4) {
127                 d[count4] = r4;
128                 System.out.println(r4);
129                 count4++;
130             }
131         }
132 
133         Random random5 = new Random();
134         int count5 = 0;
135         while (count5 < e.length) {
136             Boolean flag5 = true;
137             Integer r5 = random5.nextInt(100);     //生成100以内的随机数
138             for (int i = 0; i < e.length; i++) {
139                 if (r5 == e[i]) {
140                     flag5 = false;
141                     break;
142                 }
143             }
144             if (flag5) {
145                 e[count5] = r5;
146                 System.out.println(r5);
147                 count5++;
148             }
149         }
150 
151         Random random6 = new Random();
152         int count6 = 0;
153         while (count6 < f.length) {
154             Boolean flag6 = true;
155             Integer r6 = random6.nextInt(100);     //生成100以内的随机数
156             for (int i = 0; i < f.length; i++) {
157                 if (r6 == f[i]||(Listener.flag4 && r6==0)) {
158                     flag6 = false;
159                     break;
160                 }
161             }
162             if (flag6) {
163                 f[count6] = r6;
164                 System.out.println(r6);
165                 count6++;
166             }
167         }
168 
169         Random random7 = new Random();
170         int count7 = 0;
171         while (count7 < g.length) {
172             Boolean flag7 = true;
173             Integer r7 = random7.nextInt(100);     //生成100以内的随机数
174             for (int i = 0; i < g.length; i++) {
175                 if (r7 == g[i]) {
176                     flag7 = false;
177                     break;
178                 }
179             }
180             if (flag7) {
181                 g[count7] = r7;
182                 System.out.println(r7);
183                 count7++;
184             }
185         }
186 
187         Random random8 = new Random();
188         int count8 = 0;
189         while (count8 < h.length) {
190             Boolean flag8 = true;
191             Integer r8 = random8.nextInt(100);     //生成100以内的随机数
192             for (int i = 0; i < h.length; i++) {
193                 if (r8 == h[i]||(Listener.flag4 && r8==0)) {
194                     flag8 = false;
195                     break;
196                 }
197             }
198             if (flag8) {
199                 h[count8] = r8;
200                 System.out.println(r8);
201                 count8++;
202             }
203         }
204 
205         if(Listener.flag1&&!Listener.flag2&&!Listener.flag3&&!Listener.flag4) {
206             for(int i=0;i<75;i++)
207                 sign[i]="+";
208         } else if(Listener.flag2&&!Listener.flag1&&!Listener.flag3&&!Listener.flag4) {
209             for(int i=0;i<75;i++)
210                 sign[i]="-";
211         } else if(Listener.flag3&&!Listener.flag1&&!Listener.flag2&&!Listener.flag4) {
212             for(int i=0;i<75;i++)
213                 sign[i]="*";
214         } else if(Listener.flag4&&!Listener.flag1&&!Listener.flag2&&!Listener.flag3) {
215             for(int i=0;i<75;i++)
216                 sign[i]="/";
217         } else if(Listener.flag1&&Listener.flag2&&!Listener.flag3&&!Listener.flag4) {
218             for(int i=0;i<75;i++) {
219                 Integer s = random1.nextInt(2);
220                 if(s==0) {
221                     sign[i] = "+";
222                 } else if(s==1) {
223                     sign[i] = "-";
224                 }
225             }
226         } else if(Listener.flag1&&Listener.flag3&&!Listener.flag2&&!Listener.flag4) {
227             for(int i=0;i<75;i++) {
228                 Random random = new Random();
229                 Integer s = random.nextInt(2);
230                 if(s==0) {
231                     sign[i] = "+";
232                 } else if(s==1) {
233                     sign[i] = "*";
234                 }
235             }
236         } else if(Listener.flag1&&Listener.flag4&&!Listener.flag2&&!Listener.flag3) {
237             for(int i=0;i<75;i++) {
238                 Random random = new Random();
239                 Integer s = random.nextInt(2);
240                 if(s==0) {
241                     sign[i] = "+";
242                 } else if(s==1) {
243                     sign[i] = "/";
244                 }
245             }
246         } else if(Listener.flag2&&Listener.flag3&&!Listener.flag1&&!Listener.flag4) {
247             for(int i=0;i<75;i++) {
248                 Random random = new Random();
249                 Integer s = random.nextInt(2);
250                 if(s==0) {
251                     sign[i] = "-";
252                 } else if(s==1) {
253                     sign[i] = "*";
254                 }
255             }
256         } else if(Listener.flag2&&Listener.flag4&&!Listener.flag3&&!Listener.flag1) {
257             for(int i=0;i<75;i++) {
258                 Random random = new Random();
259                 Integer s = random.nextInt(2);
260                 if(s==0) {
261                     sign[i] = "-";
262                 } else if(s==1) {
263                     sign[i] = "/";
264                 }
265             }
266         } else if(Listener.flag3&&Listener.flag4&&!Listener.flag1&&!Listener.flag2) {
267             for(int i=0;i<75;i++) {
268                 Random random = new Random();
269                 Integer s = random.nextInt(2);
270                 if(s==0) {
271                     sign[i] = "*";
272                 } else if(s==1) {
273                     sign[i] = "/";
274                 }
275             }
276         } else if(Listener.flag1&&Listener.flag2&&Listener.flag3&&!Listener.flag4) {
277             for(int i=0;i<75;i++) {
278                 Random random = new Random();
279                 Integer s = random.nextInt(3);
280                 if(s==0) {
281                     sign[i] = "+";
282                 } else if(s==1) {
283                     sign[i] = "-";
284                 } else if(s==2) {
285                     sign[i] = "*";
286                 }
287             }
288         } else if(Listener.flag1&&Listener.flag3&&Listener.flag4&&!Listener.flag2) {
289             for(int i=0;i<75;i++) {
290                 Random random = new Random();
291                 Integer s = random.nextInt(3);
292                 if(s==0) {
293                     sign[i] = "+";
294                 } else if(s==1) {
295                     sign[i] = "*";
296                 } else if(s==2) {
297                     sign[i] = "/";
298                 }
299             }
300         } else if(Listener.flag2&&Listener.flag3&&Listener.flag4&&!Listener.flag1) {
301             for(int i=0;i<75;i++) {
302                 Random random = new Random();
303                 Integer s = random.nextInt(3);
304                 if(s==0) {
305                     sign[i] = "-";
306                 } else if(s==1) {
307                     sign[i] = "*";
308                 } else if(s==2) {
309                     sign[i] = "/";
310                 }
311             }
312         } else if(Listener.flag1&&Listener.flag2&&Listener.flag3&&Listener.flag4) {
313             for(int i=0;i<75;i++) {
314                 Random random = new Random();
315                 Integer s = random.nextInt(4);
316                 if(s==0) {
317                     sign[i] = "+";
318                 } else if(s==1) {
319                     sign[i] = "-";
320                 } else if(s==2) {
321                     sign[i] = "*";
322                 }
323                 else if(s==3) {
324                     sign[i] = "/";
325                 }
326             }
327         }
328 
329         for(int i=0;i<75;i++) {
330             equal[i] = "=";
331         }
332 
333         for(int k=0;k<75;k++) {
334             if(sign[k].equals("+")) {
335                 answer1[k]=a[k]+b[k];
336                 answer2[k]=c[k]+d[k];
337                 answer3[k]=e[k]+f[k];
338                 answer4[k]=g[k]+h[k];
339             } else if(sign[k].equals("-")) {
340                 answer1[k]=a[k]-b[k];
341                 answer2[k]=c[k]-d[k];
342                 answer3[k]=e[k]-f[k];
343                 answer4[k]=g[k]-h[k];
344             } else if(sign[k].equals("*")) {
345                 answer1[k]=a[k]*b[k];
346                 answer2[k]=c[k]*d[k];
347                 answer3[k]=e[k]*f[k];
348                 answer4[k]=g[k]*h[k];
349             } else if(sign[k].equals("/")) {
350                 answer1[k]=a[k]/b[k];
351                 answer2[k]=c[k]/d[k];
352                 answer3[k]=e[k]/f[k];
353                 answer4[k]=g[k]/h[k];
354             }
355         }
356 
357         jList1=new JList<Integer>(a);
358         jList2=new JList<String>(sign);
359         jList3=new JList<Integer>(b);
360         jList4=new JList<String>(equal);
361 
362         jList5=new JList<Integer>(c);
363         jList6=new JList<String>(sign);
364         jList7=new JList<Integer>(d);
365         jList8=new JList<String>(equal);
366 
367         jList9=new JList<Integer>(e);
368         jList10=new JList<String>(sign);
369         jList11=new JList<Integer>(f);
370         jList12=new JList<String>(equal);
371 
372         jList13=new JList<Integer>(g);
373         jList14=new JList<String>(sign);
374         jList15=new JList<Integer>(h);
375         jList16=new JList<String>(equal);
376 
377         jList1.setBounds(0, 0, 50, 2925);
378         jList1.setFont(new Font("宋体", Font.PLAIN, 32));
379         jList2.setBounds(50, 0, 50, 2925);
380         jList2.setFont(new Font("宋体", Font.PLAIN, 32));
381         jList3.setBounds(100, 0, 50, 2925);
382         jList3.setFont(new Font("宋体", Font.PLAIN, 32));
383         jList4.setBounds(150, 0, 50, 2925);
384         jList4.setFont(new Font("宋体", Font.PLAIN, 32));
385 
386         jList5.setBounds(400, 0, 50, 2925);
387         jList5.setFont(new Font("宋体", Font.PLAIN, 32));
388         jList6.setBounds(450, 0, 50, 2925);
389         jList6.setFont(new Font("宋体", Font.PLAIN, 32));
390         jList7.setBounds(500, 0, 50, 2925);
391         jList7.setFont(new Font("宋体", Font.PLAIN, 32));
392         jList8.setBounds(550, 0, 50, 2925);
393         jList8.setFont(new Font("宋体", Font.PLAIN, 32));
394 
395         jList9.setBounds(800, 0, 50, 2925);
396         jList9.setFont(new Font("宋体", Font.PLAIN, 32));
397         jList10.setBounds(850, 0, 50, 2925);
398         jList10.setFont(new Font("宋体", Font.PLAIN, 32));
399         jList11.setBounds(900, 0, 50, 2925);
400         jList11.setFont(new Font("宋体", Font.PLAIN, 32));
401         jList12.setBounds(950, 0, 50, 2925);
402         jList12.setFont(new Font("宋体", Font.PLAIN, 32));
403 
404         jList13.setBounds(1200, 0, 50, 2925);
405         jList13.setFont(new Font("宋体", Font.PLAIN, 32));
406         jList14.setBounds(1250, 0, 50, 2925);
407         jList14.setFont(new Font("宋体", Font.PLAIN, 32));
408         jList15.setBounds(1300, 0, 50, 2925);
409         jList15.setFont(new Font("宋体", Font.PLAIN, 32));
410         jList16.setBounds(1350, 0, 50, 2925);
411         jList16.setFont(new Font("宋体", Font.PLAIN, 32));
412 
413         jPaneL.add(jList1);
414         jPaneL.add(jList2);
415         jPaneL.add(jList3);
416         jPaneL.add(jList4);
417         jPaneL.add(jList5);
418         jPaneL.add(jList6);
419         jPaneL.add(jList7);
420         jPaneL.add(jList8);
421         jPaneL.add(jList9);
422         jPaneL.add(jList10);
423         jPaneL.add(jList11);
424         jPaneL.add(jList12);
425         jPaneL.add(jList13);
426         jPaneL.add(jList14);
427         jPaneL.add(jList15);
428         jPaneL.add(jList16);
429 
430         for(int n=0;n<75;n++) {
431             jTextFields[n]=new JTextField();
432             jTextFields[n].setBounds(200, n*39, 50, 39);
433             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
434             jPaneL.add(jTextFields[n]);
435 
436             jLabels[n]=new JLabel();
437             jLabels[n].setBounds(250, n*39, 100, 39);
438             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
439             jPaneL.add(jLabels[n]);
440         }
441 
442         for(int n=75;n<150;n++) {
443             jTextFields[n]=new JTextField();
444             jTextFields[n].setBounds(600, (n-75)*39, 50, 39);
445             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
446             jPaneL.add(jTextFields[n]);
447 
448             jLabels[n]=new JLabel();
449             jLabels[n].setBounds(650, (n-75)*39, 100, 39);
450             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
451             jPaneL.add(jLabels[n]);
452         }
453 
454         for(int n=150;n<225;n++) {
455             jTextFields[n]=new JTextField();
456             jTextFields[n].setBounds(1000, (n-150)*39, 50, 39);
457             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
458             jPaneL.add(jTextFields[n]);
459 
460             jLabels[n]=new JLabel();
461             jLabels[n].setBounds(1050, (n-150)*39, 100, 39);
462             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
463             jPaneL.add(jLabels[n]);
464         }
465 
466         for(int n=225;n<300;n++) {
467             jTextFields[n]=new JTextField();
468             jTextFields[n].setBounds(1400, (n-225)*39, 50, 39);
469             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
470             jPaneL.add(jTextFields[n]);
471 
472             jLabels[n]=new JLabel();
473             jLabels[n].setBounds(1450, (n-225)*39, 100, 39);
474             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
475             jPaneL.add(jLabels[n]);
476         }
477 
478         jButton1=new JButton("确定");
479 
480         jButton1.setBounds(1400, 2950, 100, 50);
481         jButton1.setFont(new Font("宋体", Font.PLAIN, 32));
482 
483         jPaneL.add(jButton1);
484 
485         // 创建滚动面板, 指定滚动显示的视图组件(textArea), 垂直滚动条一直显示, 水平滚动条从不显示
486         JScrollPane scrollPane = new JScrollPane(
487                 jPaneL,
488                 ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
489                 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
490         );
491 
492         jf.setSize(1700,3075);
493         scrollPane.getHorizontalScrollBar().setUnitIncrement(5000);
494         jf.setContentPane(scrollPane);
495         jf.setVisible(true);
496 
497         jPaneL.setPreferredSize(new Dimension(1700,3075));
498     }
499 
500     void setListener(CalculateListener calculateListener) {
501         this.calculateListener=calculateListener;
502         calculateListener.setjTextFields(jTextFields);
503 
504         calculateListener.setjLabels(jLabels);
505         calculateListener.setAnswer1(answer1);
506         calculateListener.setAnswer2(answer2);
507         calculateListener.setAnswer3(answer3);
508         calculateListener.setAnswer4(answer4);
509 
510         for(int i=0;i<300;i++) {
511             jTextFields[i].addActionListener(calculateListener);
512         }
513 
514         jButton1.addActionListener(calculateListener);
515     }
516 }
View Code
CalculateListener.java
  1 import javax.swing.*;
  2 import java.awt.*;
  3 import java.awt.event.ActionEvent;
  4 import java.awt.event.ActionListener;
  5 
  6 public class CalculateListener implements ActionListener {
  7 
  8     JTextField[] jTextFields=new JTextField[300];
  9     JLabel[] jLabels=new  JLabel[300];
 10 
 11     Integer[] answer1;
 12     Integer[] answer2;
 13     Integer[] answer3;
 14     Integer[] answer4;
 15 
 16     public void setjTextFields(JTextField[] jTextFields) {
 17         for(int i=0;i<300;i++)
 18         {
 19             //this.jTextFields[i]=new JTextField();
 20             this.jTextFields[i] = jTextFields[i];
 21         }
 22 
 23     }
 24 
 25     public void setAnswer1(Integer[] answer1) {
 26         this.answer1 = answer1;
 27     }
 28 
 29     public void setAnswer2(Integer[] answer2) {
 30         this.answer2 = answer2;
 31     }
 32 
 33     public void setAnswer3(Integer[] answer3) {
 34         this.answer3 = answer3;
 35     }
 36 
 37     public void setAnswer4(Integer[] answer4) {
 38         this.answer4 = answer4;
 39     }
 40 
 41     public void setjLabels(JLabel[] jLabels) {
 42         for(int i=0;i<300;i++)
 43         {
 44             //this.jLabels[i]=new JLabel();
 45             this.jLabels[i] = jLabels[i];
 46         }
 47     }
 48 
 49     @Override
 50     public void actionPerformed(ActionEvent e) {
 51         for(int i=0;i<75;i++)
 52         {
 53             //jLabels[i]=new JLabel();
 54             if(Integer.toString(answer1[i]).equals(jTextFields[i].getText()))
 55             {
 56                 jLabels[i].setText("正确");
 57                 jLabels[i].setForeground(Color.green);
 58             }
 59             else
 60             {
 61                 jLabels[i].setText("错误"+" "+Integer.toString(answer1[i]));
 62                 jLabels[i].setForeground(Color.red);
 63             }
 64             System.out.println(Integer.toString(answer1[i])+" "+jTextFields[i].getText()+"*");
 65         }
 66         for(int i=75;i<150;i++)
 67         {
 68             //jLabels[i]=new JLabel();
 69             if(Integer.toString(answer2[i-75]).equals(jTextFields[i].getText()))
 70             {
 71                 jLabels[i].setText("正确");
 72                 jLabels[i].setForeground(Color.green);
 73             }
 74             else
 75             {
 76                 jLabels[i].setText("错误"+" "+Integer.toString(answer2[i-75]));
 77                 jLabels[i].setForeground(Color.red);
 78             }
 79         }
 80         for(int i=150;i<225;i++)
 81         {
 82             //jLabels[i]=new JLabel();
 83             if(Integer.toString(answer3[i-150]).equals(jTextFields[i].getText()))
 84             {
 85                 jLabels[i].setText("正确");
 86                 jLabels[i].setForeground(Color.green);
 87             }
 88             else
 89             {
 90                 jLabels[i].setText("错误"+" "+Integer.toString(answer3[i-150]));
 91                 jLabels[i].setForeground(Color.red);
 92             }
 93         }
 94         for(int i=225;i<300;i++)
 95         {
 96             //jLabels[i]=new JLabel();
 97             if(Integer.toString(answer4[i-225]).equals(jTextFields[i].getText()))
 98             {
 99                 jLabels[i].setText("正确");
100                 jLabels[i].setForeground(Color.green);
101             }
102             else
103             {
104                 jLabels[i].setText("错误"+" "+Integer.toString(answer4[i-225]));
105                 jLabels[i].setForeground(Color.red);
106             }
107         }
108     }
109 }
View Code
MenuWindow.java
  1 import javax.swing.*;
  2 import java.awt.*;
  3 import java.util.Random;
  4 
  5 public class CalculateWindow extends JFrame{
  6     JPanel jPaneL;
  7 
  8     JList <Integer> jList1;
  9     JList <String> jList2;
 10     JList <Integer> jList3;
 11     JList <String> jList4;
 12 
 13     JList <Integer> jList5;
 14     JList <String> jList6;
 15     JList <Integer> jList7;
 16     JList <String> jList8;
 17 
 18     JList <Integer> jList9;
 19     JList <String> jList10;
 20     JList <Integer> jList11;
 21     JList <String> jList12;
 22 
 23     JList <Integer> jList13;
 24     JList <String> jList14;
 25     JList <Integer> jList15;
 26     JList <String> jList16;
 27 
 28     JTextField[] jTextFields=new JTextField[300];
 29     JLabel[] jLabels=new JLabel[300];
 30 
 31     JButton jButton1;
 32     CalculateListener calculateListener=new CalculateListener();
 33 
 34     private Integer[] a = new Integer[75];
 35     private Integer[] b = new Integer[75];
 36     private Integer[] c = new Integer[75];
 37     private Integer[] d = new Integer[75];
 38     private Integer[] e = new Integer[75];
 39     private Integer[] f = new Integer[75];
 40     private Integer[] g = new Integer[75];
 41     private Integer[] h = new Integer[75];
 42 
 43     private Integer[] answer1 = new Integer[75];
 44     private Integer[] answer2 = new Integer[75];
 45     private Integer[] answer3 = new Integer[75];
 46     private Integer[] answer4 = new Integer[75];
 47 
 48     private String[] sign=new String[75];
 49     private String[] equal=new String[75];
 50 
 51     void create() {
 52         JFrame jf = new JFrame("四则运算练习器");
 53         jf.setLayout(null);
 54         jf.setSize(1700, 1025);
 55         jf.setLocationRelativeTo(null);
 56         jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 57 
 58         jPaneL=new JPanel();
 59         jPaneL.setLayout(null);
 60 
 61         Random random1 = new Random();
 62         int count1 = 0;
 63         while (count1 < a.length) {
 64             Boolean flag1 = true;
 65             Integer r1 = random1.nextInt(100);     //生成100以内的随机数
 66             for (int i = 0; i < a.length; i++) {
 67                 if (r1 == a[i]) {
 68                     flag1 = false;
 69                     break;
 70                 }
 71             }
 72             if (flag1) {
 73                 a[count1] = r1;
 74                 System.out.println(a[count1]);
 75                 count1++;
 76             }
 77         }
 78 
 79         Random random2 = new Random();
 80         int count2 = 0;
 81         while (count2 < b.length) {
 82             Boolean flag2 = true;
 83             Integer r2 = random2.nextInt(100);     //生成100以内的随机数
 84             for (int i = 0; i < b.length; i++) {
 85                 if (r2 == b[i]||(Listener.flag4 && r2==0)) {
 86                     flag2 = false;
 87                     break;
 88                 }
 89             }
 90             if (flag2) {
 91                 b[count2] = r2;
 92                 System.out.println(r2);
 93                 count2++;
 94             }
 95         }
 96 
 97         Random random3 = new Random();
 98         int count3 = 0;
 99         while (count3 < c.length) {
100             Boolean flag3 = true;
101             Integer r3 = random3.nextInt(100);     //生成100以内的随机数
102             for (int i = 0; i < c.length; i++) {
103                 if (r3 == c[i]) {
104                     flag3 = false;
105                     break;
106                 }
107             }
108             if (flag3) {
109                 c[count3] = r3;
110                 System.out.println(r3);
111                 count3++;
112             }
113         }
114 
115         Random random4 = new Random();
116         int count4 = 0;
117         while (count4 < d.length) {
118             Boolean flag4 = true;
119             Integer r4 = random4.nextInt(100);     //生成100以内的随机数
120             for (int i = 0; i < d.length; i++) {
121                 if (r4 == d[i]||(Listener.flag4 && r4==0)) {
122                     flag4 = false;
123                     break;
124                 }
125             }
126             if (flag4) {
127                 d[count4] = r4;
128                 System.out.println(r4);
129                 count4++;
130             }
131         }
132 
133         Random random5 = new Random();
134         int count5 = 0;
135         while (count5 < e.length) {
136             Boolean flag5 = true;
137             Integer r5 = random5.nextInt(100);     //生成100以内的随机数
138             for (int i = 0; i < e.length; i++) {
139                 if (r5 == e[i]) {
140                     flag5 = false;
141                     break;
142                 }
143             }
144             if (flag5) {
145                 e[count5] = r5;
146                 System.out.println(r5);
147                 count5++;
148             }
149         }
150 
151         Random random6 = new Random();
152         int count6 = 0;
153         while (count6 < f.length) {
154             Boolean flag6 = true;
155             Integer r6 = random6.nextInt(100);     //生成100以内的随机数
156             for (int i = 0; i < f.length; i++) {
157                 if (r6 == f[i]||(Listener.flag4 && r6==0)) {
158                     flag6 = false;
159                     break;
160                 }
161             }
162             if (flag6) {
163                 f[count6] = r6;
164                 System.out.println(r6);
165                 count6++;
166             }
167         }
168 
169         Random random7 = new Random();
170         int count7 = 0;
171         while (count7 < g.length) {
172             Boolean flag7 = true;
173             Integer r7 = random7.nextInt(100);     //生成100以内的随机数
174             for (int i = 0; i < g.length; i++) {
175                 if (r7 == g[i]) {
176                     flag7 = false;
177                     break;
178                 }
179             }
180             if (flag7) {
181                 g[count7] = r7;
182                 System.out.println(r7);
183                 count7++;
184             }
185         }
186 
187         Random random8 = new Random();
188         int count8 = 0;
189         while (count8 < h.length) {
190             Boolean flag8 = true;
191             Integer r8 = random8.nextInt(100);     //生成100以内的随机数
192             for (int i = 0; i < h.length; i++) {
193                 if (r8 == h[i]||(Listener.flag4 && r8==0)) {
194                     flag8 = false;
195                     break;
196                 }
197             }
198             if (flag8) {
199                 h[count8] = r8;
200                 System.out.println(r8);
201                 count8++;
202             }
203         }
204 
205         if(Listener.flag1&&!Listener.flag2&&!Listener.flag3&&!Listener.flag4) {
206             for(int i=0;i<75;i++)
207                 sign[i]="+";
208         } else if(Listener.flag2&&!Listener.flag1&&!Listener.flag3&&!Listener.flag4) {
209             for(int i=0;i<75;i++)
210                 sign[i]="-";
211         } else if(Listener.flag3&&!Listener.flag1&&!Listener.flag2&&!Listener.flag4) {
212             for(int i=0;i<75;i++)
213                 sign[i]="*";
214         } else if(Listener.flag4&&!Listener.flag1&&!Listener.flag2&&!Listener.flag3) {
215             for(int i=0;i<75;i++)
216                 sign[i]="/";
217         } else if(Listener.flag1&&Listener.flag2&&!Listener.flag3&&!Listener.flag4) {
218             for(int i=0;i<75;i++) {
219                 Integer s = random1.nextInt(2);
220                 if(s==0) {
221                     sign[i] = "+";
222                 } else if(s==1) {
223                     sign[i] = "-";
224                 }
225             }
226         } else if(Listener.flag1&&Listener.flag3&&!Listener.flag2&&!Listener.flag4) {
227             for(int i=0;i<75;i++) {
228                 Random random = new Random();
229                 Integer s = random.nextInt(2);
230                 if(s==0) {
231                     sign[i] = "+";
232                 } else if(s==1) {
233                     sign[i] = "*";
234                 }
235             }
236         } else if(Listener.flag1&&Listener.flag4&&!Listener.flag2&&!Listener.flag3) {
237             for(int i=0;i<75;i++) {
238                 Random random = new Random();
239                 Integer s = random.nextInt(2);
240                 if(s==0) {
241                     sign[i] = "+";
242                 } else if(s==1) {
243                     sign[i] = "/";
244                 }
245             }
246         } else if(Listener.flag2&&Listener.flag3&&!Listener.flag1&&!Listener.flag4) {
247             for(int i=0;i<75;i++) {
248                 Random random = new Random();
249                 Integer s = random.nextInt(2);
250                 if(s==0) {
251                     sign[i] = "-";
252                 } else if(s==1) {
253                     sign[i] = "*";
254                 }
255             }
256         } else if(Listener.flag2&&Listener.flag4&&!Listener.flag3&&!Listener.flag1) {
257             for(int i=0;i<75;i++) {
258                 Random random = new Random();
259                 Integer s = random.nextInt(2);
260                 if(s==0) {
261                     sign[i] = "-";
262                 } else if(s==1) {
263                     sign[i] = "/";
264                 }
265             }
266         } else if(Listener.flag3&&Listener.flag4&&!Listener.flag1&&!Listener.flag2) {
267             for(int i=0;i<75;i++) {
268                 Random random = new Random();
269                 Integer s = random.nextInt(2);
270                 if(s==0) {
271                     sign[i] = "*";
272                 } else if(s==1) {
273                     sign[i] = "/";
274                 }
275             }
276         } else if(Listener.flag1&&Listener.flag2&&Listener.flag3&&!Listener.flag4) {
277             for(int i=0;i<75;i++) {
278                 Random random = new Random();
279                 Integer s = random.nextInt(3);
280                 if(s==0) {
281                     sign[i] = "+";
282                 } else if(s==1) {
283                     sign[i] = "-";
284                 } else if(s==2) {
285                     sign[i] = "*";
286                 }
287             }
288         } else if(Listener.flag1&&Listener.flag3&&Listener.flag4&&!Listener.flag2) {
289             for(int i=0;i<75;i++) {
290                 Random random = new Random();
291                 Integer s = random.nextInt(3);
292                 if(s==0) {
293                     sign[i] = "+";
294                 } else if(s==1) {
295                     sign[i] = "*";
296                 } else if(s==2) {
297                     sign[i] = "/";
298                 }
299             }
300         } else if(Listener.flag2&&Listener.flag3&&Listener.flag4&&!Listener.flag1) {
301             for(int i=0;i<75;i++) {
302                 Random random = new Random();
303                 Integer s = random.nextInt(3);
304                 if(s==0) {
305                     sign[i] = "-";
306                 } else if(s==1) {
307                     sign[i] = "*";
308                 } else if(s==2) {
309                     sign[i] = "/";
310                 }
311             }
312         } else if(Listener.flag1&&Listener.flag2&&Listener.flag3&&Listener.flag4) {
313                     for(int i=0;i<75;i++) {
314                         Random random = new Random();
315                         Integer s = random.nextInt(4);
316                         if(s==0) {
317                             sign[i] = "+";
318                         } else if(s==1) {
319                             sign[i] = "-";
320                         } else if(s==2) {
321                             sign[i] = "*";
322                         } else if(s==3) {
323                             sign[i] = "/";
324                         }
325             }
326         }
327 
328         for(int i=0;i<75;i++) {
329             equal[i] = "=";
330         }
331 
332         for(int k=0;k<75;k++) {
333             if(sign[k].equals("+")) {
334                 answer1[k]=a[k]+b[k];
335                 answer2[k]=c[k]+d[k];
336                 answer3[k]=e[k]+f[k];
337                 answer4[k]=g[k]+h[k];
338             } else if(sign[k].equals("-")) {
339                 answer1[k]=a[k]-b[k];
340                 answer2[k]=c[k]-d[k];
341                 answer3[k]=e[k]-f[k];
342                 answer4[k]=g[k]-h[k];
343             } else if(sign[k].equals("*")) {
344                 answer1[k]=a[k]*b[k];
345                 answer2[k]=c[k]*d[k];
346                 answer3[k]=e[k]*f[k];
347                 answer4[k]=g[k]*h[k];
348             } else if(sign[k].equals("/")) {
349                 answer1[k]=a[k]/b[k];
350                 answer2[k]=c[k]/d[k];
351                 answer3[k]=e[k]/f[k];
352                 answer4[k]=g[k]/h[k];
353             }
354         }
355 
356         jList1=new JList<Integer>(a);
357         jList2=new JList<String>(sign);
358         jList3=new JList<Integer>(b);
359         jList4=new JList<String>(equal);
360 
361         jList5=new JList<Integer>(c);
362         jList6=new JList<String>(sign);
363         jList7=new JList<Integer>(d);
364         jList8=new JList<String>(equal);
365 
366         jList9=new JList<Integer>(e);
367         jList10=new JList<String>(sign);
368         jList11=new JList<Integer>(f);
369         jList12=new JList<String>(equal);
370 
371         jList13=new JList<Integer>(g);
372         jList14=new JList<String>(sign);
373         jList15=new JList<Integer>(h);
374         jList16=new JList<String>(equal);
375 
376         jList1.setBounds(0, 0, 50, 2925);
377         jList1.setFont(new Font("宋体", Font.PLAIN, 32));
378         jList2.setBounds(50, 0, 50, 2925);
379         jList2.setFont(new Font("宋体", Font.PLAIN, 32));
380         jList3.setBounds(100, 0, 50, 2925);
381         jList3.setFont(new Font("宋体", Font.PLAIN, 32));
382         jList4.setBounds(150, 0, 50, 2925);
383         jList4.setFont(new Font("宋体", Font.PLAIN, 32));
384 
385         jList5.setBounds(400, 0, 50, 2925);
386         jList5.setFont(new Font("宋体", Font.PLAIN, 32));
387         jList6.setBounds(450, 0, 50, 2925);
388         jList6.setFont(new Font("宋体", Font.PLAIN, 32));
389         jList7.setBounds(500, 0, 50, 2925);
390         jList7.setFont(new Font("宋体", Font.PLAIN, 32));
391         jList8.setBounds(550, 0, 50, 2925);
392         jList8.setFont(new Font("宋体", Font.PLAIN, 32));
393 
394         jList9.setBounds(800, 0, 50, 2925);
395         jList9.setFont(new Font("宋体", Font.PLAIN, 32));
396         jList10.setBounds(850, 0, 50, 2925);
397         jList10.setFont(new Font("宋体", Font.PLAIN, 32));
398         jList11.setBounds(900, 0, 50, 2925);
399         jList11.setFont(new Font("宋体", Font.PLAIN, 32));
400         jList12.setBounds(950, 0, 50, 2925);
401         jList12.setFont(new Font("宋体", Font.PLAIN, 32));
402 
403         jList13.setBounds(1200, 0, 50, 2925);
404         jList13.setFont(new Font("宋体", Font.PLAIN, 32));
405         jList14.setBounds(1250, 0, 50, 2925);
406         jList14.setFont(new Font("宋体", Font.PLAIN, 32));
407         jList15.setBounds(1300, 0, 50, 2925);
408         jList15.setFont(new Font("宋体", Font.PLAIN, 32));
409         jList16.setBounds(1350, 0, 50, 2925);
410         jList16.setFont(new Font("宋体", Font.PLAIN, 32));
411 
412         jPaneL.add(jList1);
413         jPaneL.add(jList2);
414         jPaneL.add(jList3);
415         jPaneL.add(jList4);
416         jPaneL.add(jList5);
417         jPaneL.add(jList6);
418         jPaneL.add(jList7);
419         jPaneL.add(jList8);
420         jPaneL.add(jList9);
421         jPaneL.add(jList10);
422         jPaneL.add(jList11);
423         jPaneL.add(jList12);
424         jPaneL.add(jList13);
425         jPaneL.add(jList14);
426         jPaneL.add(jList15);
427         jPaneL.add(jList16);
428 
429         for(int n=0;n<75;n++) {
430             jTextFields[n]=new JTextField();
431             jTextFields[n].setBounds(200, n*39, 50, 39);
432             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
433             jPaneL.add(jTextFields[n]);
434 
435             jLabels[n]=new JLabel();
436             jLabels[n].setBounds(250, n*39, 100, 39);
437             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
438             jPaneL.add(jLabels[n]);
439         }
440 
441         for(int n=75;n<150;n++) {
442             jTextFields[n]=new JTextField();
443             jTextFields[n].setBounds(600, (n-75)*39, 50, 39);
444             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
445             jPaneL.add(jTextFields[n]);
446 
447             jLabels[n]=new JLabel();
448             jLabels[n].setBounds(650, (n-75)*39, 100, 39);
449             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
450             jPaneL.add(jLabels[n]);
451         }
452 
453         for(int n=150;n<225;n++) {
454             jTextFields[n]=new JTextField();
455             jTextFields[n].setBounds(1000, (n-150)*39, 50, 39);
456             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
457             jPaneL.add(jTextFields[n]);
458 
459             jLabels[n]=new JLabel();
460             jLabels[n].setBounds(1050, (n-150)*39, 100, 39);
461             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
462             jPaneL.add(jLabels[n]);
463         }
464 
465         for(int n=225;n<300;n++) {
466             jTextFields[n]=new JTextField();
467             jTextFields[n].setBounds(1400, (n-225)*39, 50, 39);
468             jTextFields[n].setFont(new Font("宋体", Font.PLAIN, 32));
469             jPaneL.add(jTextFields[n]);
470 
471             jLabels[n]=new JLabel();
472             jLabels[n].setBounds(1450, (n-225)*39, 100, 39);
473             jLabels[n].setFont(new Font("宋体", Font.PLAIN, 16));
474             jPaneL.add(jLabels[n]);
475         }
476 
477         jButton1=new JButton("确定");
478 
479         jButton1.setBounds(1400, 2950, 100, 50);
480         jButton1.setFont(new Font("宋体", Font.PLAIN, 32));
481 
482         jPaneL.add(jButton1);
483 
484         // 创建滚动面板, 指定滚动显示的视图组件(textArea), 垂直滚动条一直显示, 水平滚动条从不显示
485         JScrollPane scrollPane = new JScrollPane(
486                 jPaneL,
487                 ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
488                 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
489         );
490 
491         jf.setSize(1700,3075);
492         scrollPane.getHorizontalScrollBar().setUnitIncrement(5000);
493         jf.setContentPane(scrollPane);
494         jf.setVisible(true);
495 
496         jPaneL.setPreferredSize(new Dimension(1700,3075));
497     }
498 
499     void setListener(CalculateListener calculateListener) {
500         this.calculateListener=calculateListener;
501         calculateListener.setjTextFields(jTextFields);
502 
503         calculateListener.setjLabels(jLabels);
504         calculateListener.setAnswer1(answer1);
505         calculateListener.setAnswer2(answer2);
506         calculateListener.setAnswer3(answer3);
507         calculateListener.setAnswer4(answer4);
508 
509         for(int i=0;i<300;i++) {
510             jTextFields[i].addActionListener(calculateListener);
511         }
512 
513         jButton1.addActionListener(calculateListener);
514     }
515 }
View Code
Listener.java
 1 import javax.swing.*;
 2 import java.awt.event.ActionEvent;
 3 import java.awt.event.ActionListener;
 4 
 5 public class Listener implements ActionListener {
 6 
 7     static Boolean flag1=false;
 8     static Boolean flag2=false;
 9     static Boolean flag3=false;
10     static Boolean flag4=false;
11 
12     JCheckBox jCheckBox1;
13     JCheckBox jCheckBox2;
14     JCheckBox jCheckBox3;
15     JCheckBox jCheckBox4;
16 
17     CalculateWindow calculateWindow=new CalculateWindow();
18 
19     public void setJCeckBox1(JCheckBox jCeckBox) {
20         this.jCheckBox1=jCeckBox;
21     }
22 
23     public void setJCeckBox2(JCheckBox jCeckBox) {
24         this.jCheckBox2=jCeckBox;
25     }
26 
27     public void setJCeckBox3(JCheckBox jCeckBox) {
28         this.jCheckBox3=jCeckBox;
29     }
30 
31     public void setJCeckBox4(JCheckBox jCeckBox) {
32         this.jCheckBox4=jCeckBox;
33     }
34 
35     @Override
36     public void actionPerformed(ActionEvent e) {
37         if(jCheckBox1.isSelected()) {
38             flag1 = true;
39         }
40         if(jCheckBox2.isSelected()) {
41             flag2 = true;
42         }
43         if(jCheckBox3.isSelected()) {
44             flag3 = true;
45         }
46         if(jCheckBox4.isSelected()) {
47             flag4 = true;
48         }
49 
50         calculateWindow.create();
51         calculateWindow.setLayout(null);
52         CalculateListener calculateListener=new CalculateListener();
53         calculateWindow.setListener(calculateListener);
54 
55         flag1=false;
56         flag2=false;
57         flag3=false;
58         flag4=false;
59     }
60 }
View Code
Main.java
 1 import java.awt.*;
 2 
 3 public class Main {
 4         public static void main(String args[])
 5         {
 6             MenuWindow win=new MenuWindow();
 7             Listener listener=new Listener();
 8 
 9             win.create();
10             win.setListener(listener);
11             win.setBounds(0,0,2000,1025);
12             win.setLayout(new BorderLayout());
13             win.setTitle("四则运算练习器");
14         }
15 }
View Code

五、代码复查

复查前:

存在11个文件,逻辑结构不够清晰,编码格式较乱,代码重复率过高且功能呢个不够完善。

复查后:

精简为5个文件,有较为清晰的逻辑结构,对编码格式进行了订正,且以较之前更为简化的代码实现了更多的功能。

六、心得体会

在编程的过程中,当遇到瓶颈沮丧的时候,我们相互鼓励;当遇到困难畏惧的时候,我们相互监督;我们互相学习,共同进步,这就是结对编程的魅力。通过结对编程,我们不断地学习如何与他人沟通以解决困难,如何与他人协作来完成项目。

除此之外,代码复查不仅让我们提高了自己的代码质量,使代码的逻辑结构更加清晰,编码风格更加规范。在代码复查的过程中,我们还互相交流想法与经验,锻炼与提高自己的能力,在失败中不断吸取教训。

通过这次作业,我们深刻感受到了结对编程的优点,以及代码复查的重要性。

在今后的编程中,我们一定会把这次作业总结下来的经验教训应用到工作中去。

猜你喜欢

转载自www.cnblogs.com/cwqbs/p/10556239.html