第三次作业--(曹福亮,张义平)
2015-04-22 21:58
134 查看
要求:
在之前编写的四则运算程序基础之上做如下改进:
1 请参照教材Page57:4.2-4.3节中内容,修改原程序,使之符合 “代码风格和设计规范”的基本要求;
2 请采用模块化设计思想,修改之前的code,将 “计算功能” 封装起来
3 通过测试程序和API 接口,测试其简单的加法功能。
4 扩展程序功能(选做)
针对第一次作业添加功能点支持:
1). 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
2). 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
分析:
修改之前的代码,使代码符合代码风格和设计规范,使之更具有可观性;
对算法进行修改,使之可以计算负数;
对题目中的负数进行加括号处理,答案保留两位小数。
设计:
在一些不易看明白的地方加注释使之更易看懂;
在java编程过程使用Format功能,使代码具有一定的代码风格;
对随机数进行加工,随机产生0~200之间的数进行减100处理;
除法中若出现除数为零的情况,则对除数进行加1处理;
为了使除法可以产生小数,把随机数设置为float型。
代码实现:
运行结果:
两人合作步骤:
首先各自都题目要求进行分析,分享各自对题目的理解;
考虑到时间有限的情况下,共同得出不进行重写代码的结论;
由于我之前的代码比较独特,所以选择修改我之前的程序来完成本次作业;
在修改的过程中共同讨论需要修改和保留的地方;
进行分工合作的方式,不懂的需要上网查资料的地方,一起探讨解决方法;
最后进行代码测试,对运行结果进行测试,检测四则运算的算法是否正确。
PSP耗时:
总结:
不懂的地方太多,结果还是任性的进行了自我选择性的做题;
看到题目一次次的加大难度,我感觉有点虚了,作业来得太快,我有点承受不来!!!
作者:曹福亮 时间:2015/4/22
在之前编写的四则运算程序基础之上做如下改进:
1 请参照教材Page57:4.2-4.3节中内容,修改原程序,使之符合 “代码风格和设计规范”的基本要求;
2 请采用模块化设计思想,修改之前的code,将 “计算功能” 封装起来
3 通过测试程序和API 接口,测试其简单的加法功能。
4 扩展程序功能(选做)
针对第一次作业添加功能点支持:
1). 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
2). 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
分析:
修改之前的代码,使代码符合代码风格和设计规范,使之更具有可观性;
对算法进行修改,使之可以计算负数;
对题目中的负数进行加括号处理,答案保留两位小数。
设计:
在一些不易看明白的地方加注释使之更易看懂;
在java编程过程使用Format功能,使代码具有一定的代码风格;
对随机数进行加工,随机产生0~200之间的数进行减100处理;
除法中若出现除数为零的情况,则对除数进行加1处理;
为了使除法可以产生小数,把随机数设置为float型。
代码实现:
/************************************************************** *功能:四则运算程序设计 *编者:曹福亮、张义平 *最后一次修改时间:2015年4月22日 ***************************************************************/ package View; import javax.swing.*; import java.util.*; import java.awt.*; import java.awt.event.*; public class Show extends JFrame implements ActionListener { // 出题部分 JLabel jl1, jl2, jl3, jl4, jl6, jl8, jl9; JTextField jf1, jf2, jf3; JButton jb1, jb5; // 统计部分 JButton jb; JTextField jl21, jl22, jl23, jl24, jl25, jl26, jl27, jl28, jl29, jl210, jl211, jl212, jl213, jl214, jl215; // 定义全局变量,包括随机数、答案、用户答案 float i, j; // 随机数 String a; // 答案 public Show() { setTitle("计算加减乘除四则运算"); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(874, 458); setLocation(200, 200); Container con = getContentPane(); JPanel pan = new JPanel(); // 出题、计算部分 jb1 = new JButton("出题"); jb1.addActionListener(this); jl1 = new JLabel("四则运算测试题库"); jl1.setForeground(Color.BLUE); jl1.setFont(new Font("黑体", Font.BOLD, 30)); jl2 = new JLabel("?"); jl3 = new JLabel("答案:"); jl4 = new JLabel("请输入答案:"); // jl5 = new JLabel("余数:"); jl6 = new JLabel("?"); // jl7 = new JLabel("余数:"); jl8 = new JLabel("对/错:"); jl9 = new JLabel("?"); jf1 = new JTextField(5); jf1.setEditable(false); jf2 = new JTextField(5); jf2.setEditable(false); jf3 = new JTextField(5); // jf4 = new JTextField(5); jb5 = new JButton("正确答案"); jb5.addActionListener(this); Box b1 = Box.createHorizontalBox(); b1.add(jb1); b1.add(Box.createHorizontalStrut(20)); b1.add(jf1); b1.add(Box.createHorizontalStrut(5)); b1.add(jl2); b1.add(Box.createHorizontalStrut(5)); b1.add(jf2); b1.add(Box.createHorizontalStrut(5)); b1.add(jl4); b1.add(Box.createHorizontalStrut(5)); b1.add(jf3); // b1.add(Box.createHorizontalStrut(5)); // b1.add(jl5); // b1.add(Box.createHorizontalStrut(5)); // b1.add(jf4); b1.add(Box.createHorizontalStrut(20)); b1.add(jb5); b1.add(Box.createHorizontalStrut(5)); b1.add(jl3); b1.add(Box.createHorizontalStrut(5)); b1.add(jl6); // b1.add(Box.createHorizontalStrut(5)); // b1.add(jl7); // b1.add(Box.createHorizontalStrut(5)); // b1.add(jl1); b1.add(Box.createHorizontalStrut(5)); b1.add(jl8); b1.add(Box.createHorizontalStrut(5)); b1.add(jl9); // 统计部分 jl21 = new JTextField("0"); jl22 = new JTextField("0"); jl23 = new JTextField("0"); jl24 = new JTextField("0"); jl25 = new JTextField("0"); jl26 = new JTextField("0"); jl27 = new JTextField("0"); jl28 = new JTextField("0"); jl29 = new JTextField("0"); jl210 = new JTextField("0"); jl211 = new JTextField("0"); jl212 = new JTextField("0"); jl213 = new JTextField("0"); jl214 = new JTextField("0"); jl215 = new JTextField("0"); jl21.setEditable(false); jl22.setEditable(false); jl23.setEditable(false); jl24.setEditable(false); jl25.setEditable(false); jl26.setEditable(false); jl27.setEditable(false); jl28.setEditable(false); jl29.setEditable(false); jl210.setEditable(false); jl211.setEditable(false); jl212.setEditable(false); jl213.setEditable(false); jl214.setEditable(false); jl215.setEditable(false); Box b21 = Box.createHorizontalBox(); b21.add(new JLabel("加法题:")); b21.add(jl21); b21.add(Box.createHorizontalStrut(50)); b21.add(new JLabel("对:")); b21.add(jl22); b21.add(Box.createHorizontalStrut(50)); b21.add(new JLabel("错:")); b21.add(jl23); Box b22 = Box.createHorizontalBox(); b22.add(new JLabel("减法题:")); b22.add(jl24); b22.add(Box.createHorizontalStrut(50)); b22.add(new JLabel("对:")); b22.add(jl25); b22.add(Box.createHorizontalStrut(50)); b22.add(new JLabel("错:")); b22.add(jl26); Box b23 = Box.createHorizontalBox(); b23.add(new JLabel("乘法题:")); b23.add(jl27); b23.add(Box.createHorizontalStrut(50)); b23.add(new JLabel("对:")); b23.add(jl28); b23.add(Box.createHorizontalStrut(50)); b23.add(new JLabel("错:")); b23.add(jl29); Box b24 = Box.createHorizontalBox(); b24.add(new JLabel("除法题:")); b24.add(jl210); b24.add(Box.createHorizontalStrut(50)); b24.add(new JLabel("对:")); b24.add(jl211); b24.add(Box.createHorizontalStrut(50)); b24.add(new JLabel("错:")); b24.add(jl212); Box b25 = Box.createHorizontalBox(); b25.add(new JLabel("总 计:")); b25.add(jl213); b25.add(Box.createHorizontalStrut(50)); b25.add(new JLabel("对:")); b25.add(jl214); b25.add(Box.createHorizontalStrut(50)); b25.add(new JLabel("错:")); b25.add(jl215); Box b2 = Box.createVerticalBox(); b2.add(b21); b2.add(b22); b2.add(b23); b2.add(b24); b2.add(b25); Box title = Box.createHorizontalBox(); title.add(jl1); Box b3 = Box.createVerticalBox(); b3.add(Box.createVerticalStrut(30)); b3.add(title); b3.add(Box.createVerticalStrut(30)); b3.add(b1); b3.add(Box.createVerticalStrut(25)); b3.add(b2); b3.add(Box.createVerticalStrut(25)); jb = new JButton("清除记录"); jb.addActionListener(this); b3.add(jb); b3.add(Box.createVerticalStrut(50)); Box zs = Box.createVerticalBox(); Box zs1 = Box.createHorizontalBox(); zs1.add(new JLabel("注:本题库出题均带有一位小数的整数,所以在输入答案时也需要输入一位小数")); Box zs2 = Box.createHorizontalBox(); zs2.add(new JLabel("才行,如果算法是除法, 则需要进行四舍五入并保留两位有效数字。")); zs.add(zs1); zs.add(zs2); b3.add(zs); pan.add(b3); con.add(pan); setVisible(true); // pack(); } // 调用主函数,显示用户界面 public static void main(String args[]) { Show main = new Show(); } // 按钮监听器的动作处理 public void actionPerformed(ActionEvent e) { // 清楚记录按钮 if (e.getSource() == jb) { jf1.setText(""); jf2.setText(""); jf3.setText(""); // jf4.setText(""); // jl1.setText("?"); jl2.setText("?"); jl6.setText("?"); jl9.setText("?"); jl21.setText("0"); jl22.setText("0"); jl23.setText("0"); jl24.setText("0"); jl25.setText("0"); jl26.setText("0"); jl27.setText("0"); jl28.setText("0"); jl29.setText("0"); jl210.setText("0"); jl211.setText("0"); jl212.setText("0"); jl213.setText("0"); jl214.setText("0"); jl215.setText("0"); } // 出题按钮 if (e.getSource() == jb1) { jf3.setText(""); // jf4.setText(""); // jl1.setText("?"); jl2.setText("?"); jl6.setText("?"); jl9.setText("?"); // 产生两个随机数 Random rand = new Random(); i = rand.nextInt(200); j = rand.nextInt(200); i = i - 100; j = j - 100; if (i < 0) { String s = Float.toString(i); jf1.setText("(" + s + ")"); } else { String s = Float.toString(i); jf1.setText(s); } if (j < 0) { String y = Float.toString(j); jf2.setText("(" + y + ")"); } else { String y = Float.toString(j); jf2.setText(y); } // 产生随机算法 int f = rand.nextInt(); f = rand.nextInt(4); if (f == 0) { jl2.setText("+"); } else if (f == 1) { jl2.setText("-"); } else if (f == 2) { jl2.setText("*"); } else if (f == 3) { jl2.setText("/"); } } // 判断对错且给出正确答案按钮 if (e.getSource() == jb5) { int b, c, d, f, h, g, k, l, m, n, o, p; int r, t, u; r = Integer.parseInt(jl213.getText()) + 1; jl213.setText(Integer.toString(r)); // jl1.setText("?"); double answer = 0; String z, x, s = null; z = jl2.getText(); x = jf3.getText(); // j = jf4.getText(); // 四则运算部分 if (z == "+") { b = Integer.parseInt(jl21.getText()) + 1; jl21.setText(Integer.toString(b)); answer = i + j; a = Double.toString(answer); } else if (z == "-") { f = Integer.parseInt(jl24.getText()) + 1; jl24.setText(Integer.toString(f)); answer = i - j; a = Double.toString(answer); } else if (z == "*") { k = Integer.parseInt(jl27.getText()) + 1; jl27.setText(Integer.toString(k)); answer = i * j; a = Double.toString(answer); } else if (z == "/") { if (j == 0) { j = j + 1; n = Integer.parseInt(jl210.getText()) + 1; jl210.setText(Integer.toString(n)); answer = i / j; // a = Double.toString(answer); a = String.format("%.2f", answer); // jl1.setText("0"); } else { n = Integer.parseInt(jl210.getText()) + 1; jl210.setText(Integer.toString(n)); answer = i / j; a = String.format("%.2f", answer); } } jl6.setText(a); // 系统判断对错部分 if (x.equals(a)) { if (s == null) { jl9.setText("对"); t = Integer.parseInt(jl214.getText()) + 1; jl214.setText(Integer.toString(t)); if (z == "+") { c = Integer.parseInt(jl22.getText()) + 1; jl22.setText(Integer.toString(c)); } else if (z == "-") { h = Integer.parseInt(jl25.getText()) + 1; jl25.setText(Integer.toString(h)); } else if (z == "*") { l = Integer.parseInt(jl28.getText()) + 1; jl28.setText(Integer.toString(l)); } else if (z == "/") { o = Integer.parseInt(jl211.getText()) + 1; jl211.setText(Integer.toString(o)); } }// else if (j.equals(s)) { // jl9.setText("对"); // t = Integer.parseInt(jl214.getText()) + 1; // jl214.setText(Integer.toString(t)); // if (z == "+") { // c = Integer.parseInt(jl22.getText()) + 1; // jl22.setText(Integer.toString(c)); // } else if (z == "-") { // h = Integer.parseInt(jl25.getText()) + 1; // jl25.setText(Integer.toString(h)); // } else if (z == "*") { // l = Integer.parseInt(jl28.getText()) + 1; // jl28.setText(Integer.toString(l)); // } else if (z == "/") { // o = Integer.parseInt(jl211.getText()) + 1; // jl211.setText(Integer.toString(o)); // } // } else { jl9.setText("错"); u = Integer.parseInt(jl215.getText()) + 1; jl215.setText(Integer.toString(u)); if (z == "+") { d = Integer.parseInt(jl23.getText()) + 1; jl23.setText(Integer.toString(d)); } else if (z == "-") { g = Integer.parseInt(jl26.getText()) + 1; jl26.setText(Integer.toString(g)); } else if (z == "*") { m = Integer.parseInt(jl29.getText()) + 1; jl29.setText(Integer.toString(m)); } else if (z == "/") { p = Integer.parseInt(jl212.getText()) + 1; jl212.setText(Integer.toString(p)); } } } else { jl9.setText("错"); u = Integer.parseInt(jl215.getText()) + 1; jl215.setText(Integer.toString(u)); if (z == "+") { d = Integer.parseInt(jl23.getText()) + 1; jl23.setText(Integer.toString(d)); } else if (z == "-") { g = Integer.parseInt(jl26.getText()) + 1; jl26.setText(Integer.toString(g)); } else if (z == "*") { m = Integer.parseInt(jl29.getText()) + 1; jl29.setText(Integer.toString(m)); } else if (z == "/") { p = Integer.parseInt(jl212.getText()) + 1; jl212.setText(Integer.toString(p)); } } } } }
运行结果:
两人合作步骤:
首先各自都题目要求进行分析,分享各自对题目的理解;
考虑到时间有限的情况下,共同得出不进行重写代码的结论;
由于我之前的代码比较独特,所以选择修改我之前的程序来完成本次作业;
在修改的过程中共同讨论需要修改和保留的地方;
进行分工合作的方式,不懂的需要上网查资料的地方,一起探讨解决方法;
最后进行代码测试,对运行结果进行测试,检测四则运算的算法是否正确。
PSP耗时:
步骤 | 耗时 | 百分比(%) |
题目分析 | 10 | 6 |
讨论 | 20 | 12 |
具体设计 | 25 | 15 |
具体代码 | 50 | 30 |
代码复审 | 20 | 12 |
测试 | 24 | 13 |
总结 | 20 | 12 |
不懂的地方太多,结果还是任性的进行了自我选择性的做题;
看到题目一次次的加大难度,我感觉有点虚了,作业来得太快,我有点承受不来!!!
作者:曹福亮 时间:2015/4/22