结对项目-四则运算 “软件”之升级版
作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
gitHub:https://github.com/lincanbin5201314/ls
同伴:201606120020沈敏
博客园:http://www.cnblogs.com/Mram/
一.基本要求
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二.开发环境
程序所使用的开发环境是:IntelliJ IDEA 2018.2.2x
三.扩展方向
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
四.程序实现
结队项目的实现,需要有可视化界面的显示。
题目数目的输入有所限制(1-5)道题,输入不符合会弹出提示窗口,并默认题目数目为1。
class dialog extends JDialog { private static final long serialVersionUID = 1L; public dialog(JFrame jf){ super(jf,"提示窗口",true); Container con = getContentPane(); con.add(new JLabel("您输入错误!请重新输入.")); setBounds(100,100,300,100); } }
界面布置:
JFrame jf = new JFrame("四则运算"); JPanel p1=new JPanel(); Container con = jf.getContentPane(); con.setLayout(null);//取消布局管理器 con.setBackground(Color.CYAN);//设置容器的背景颜色 JButton exerciseNum = new JButton("生成题目数量"); //实例化一个按钮 JButton summitAns = new JButton("提交答案"); //实例化一个按钮 JButton changeBgc = new JButton("背景颜色改变"); // 实例化一个按钮 JLabel label = new JLabel("题目数量:", JLabel.CENTER); //题目数量标签 label.setBounds(10,30,95,30); label.setFont(new Font("宋体",Font.PLAIN,16)); JLabel labe2 = new JLabel(("题目数量不能大于5"), JLabel.CENTER); labe2.setBounds(141,30,180,30); labe2.setFont(new Font("宋体",Font.PLAIN,16)); JLabel labe3 = new JLabel((""), JLabel.LEFT);//题目显示在窗口 labe3.setBounds(5,75,250,200); labe3.setFont(new Font("宋体",Font.PLAIN,16)); JLabel labe4 = new JLabel((""), JLabel.LEFT);//题目显示在窗口 labe4.setBounds(10,242,170,120); labe4.setFont(new Font("宋体",Font.PLAIN,15)); Double[] arr=new Double[10]; exerciseNum.setBounds(320, 30, 120, 30); // 设置位置与大小 summitAns.setBounds(180, 300, 120, 30); // 设置位置与大小 changeBgc.setBounds(310, 300, 120, 30); // 设置位置与大小 jf.setSize(500, 400); JTextField textField = new JTextField(); textField.setBounds(100, 30, 40, 30); textField.setVisible(true); JTextField textField1 = new JTextField(); textField1.setBounds(180, 85, 40, 20); textField1.setVisible(false); JTextField textField2 = new JTextField(); textField2.setBounds(180, 125, 40, 20); textField2.setVisible(false); JTextField textField3 = new JTextField(); textField3.setBounds(180, 160, 40, 20); textField3.setVisible(false); JTextField textField4 = new JTextField(); textField4.setBounds(180, 200, 40, 20); textField4.setVisible(false); JTextField textField5 = new JTextField(); textField5.setBounds(180, 235, 40, 20); textField5.setVisible(false); JLabel label1 = new JLabel(""); //题目数量标签 label1.setBounds(240,85,200,30); JLabel label2 = new JLabel(""); //题目数量标签 label2.setBounds(240,125,200,30); JLabel label3 = new JLabel(""); //题目数量标签 label3.setBounds(240,160,200,30); JLabel label4 = new JLabel(""); //题目数量标签 label4.setBounds(240,200,200,30); JLabel label5 = new JLabel(""); //题目数量标签 label5.setBounds(240,235,200,30); label1.setFont(new Font("宋体",Font.PLAIN,15)); label2.setFont(new Font("宋体",Font.PLAIN,15)); label3.setFont(new Font("宋体",Font.PLAIN,15)); label4.setFont(new Font("宋体",Font.PLAIN,15)); label5.setFont(new Font("宋体",Font.PLAIN,15));
单击提交答案,算出所用时间和算出得分。
单击颜色修改可以修改背景颜色:
五.问题与解决
1.构造窗体及元素布置方面不熟悉。
以前有学习一些这方面的知识,不过只是学的一些皮毛,所以在开始做之前,我们通过百度还有书籍熟悉一些知识。
2.怎么做到鼠标单击响应事件,还有事件之间值的传递。
一开始想了很久都没搞懂怎么在两个之间传递局部变量,后来上网才知道两个事件间不能传值,所以通过定义全局变量来实现共用。
六.结队工作照片
七.统计表
PSP2.1 | Personal Software Process Stages | Time Senior Student(h) | Time(h) |
Planning | 计划 | 1 | 1 |
· Estimate | 估计这个任务需要多少时间 | 50 | 55 |
Development | 开发 | 3 | 3 |
· Analysis | 需求分析 (包括学习新技术) | 1 | 1 |
· Design Spec | 生成设计文档 | 1 | 1 |
· Design Review | 设计复审 | 2 | 2 |
· Coding Standard | 代码规范 | 5 | 5 |
· Design | 具体设计 | 1 | 1 |
· Coding | 具体编码 | 20 | 22 |
· Code Review | 代码复审 | 5 | 5 |
· Test | 测试(自我测试,修改代码,提交修改) | 10 | 13 |
Reporting | 报告 | 2 | 2 |
· | 测试报告 | 0.5 | 0.5 |
· | 计算工作量 | 1 | 1 |
· | 并提出过程改进计划 | 0.5 | 0.5 |