结对项目(四则运算升级版)
作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
上传Github地址:https://github.com/CTqin/CTqin
一、基本要求
从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、我做的扩展方向
1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66(保留两位小数功能实现,不支持出带括号题目)
2.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8(function6实现)
3.程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现两种颜色切换)
三、开发坏境
四、具体代码
1. 主要利用以下这个函数去产生随机数去出题目
int x=(int)(Math.random()*5); int x=(int)(Math.random()*5); switch(x) { case 0: function1();//一个运算符,整数,整数 break; case 1: function2();//一个运算符,整数,分数 break; case 2: function3();//一个运算符,分数,分数 break; case 3: function4();//两个运算符 break; case 4: function5();//求阶乘 break; case 5: function6();//题目出现负数 break; }
2.可以处理负数的题目的实现代码
private void function6()//表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。 { int a=(int)(Math.random()*99+1)*-1;//随机生成-1~-99的负整数 int b=(int)(Math.random()*10+1); int x1=(int)(Math.random()*4); switch(x1) { case 0: { t.setText("("+a+") "+String.valueOf(ch[0])+" "+b); answer =a+b; } break; case 1: { t.setText("("+a+") "+String.valueOf(ch[1])+" "+b); answer =a-b; } break; case 2: { t.setText("("+a+") "+String.valueOf(ch[2])+" "+b); answer =a*b; } break; case 3: { t.setText("("+a+") "+String.valueOf(ch[3])+" "+b); answer =(float)a/(float)b; } break; } }
3.功能框背景颜色的变动
if(e.getSource()==colorchangebtn) { if (colorchange==true) { p1.setBackground(Color.red); p2.setBackground(Color.red); colorchange=false; } else { p1.setBackground(Color.white); p2.setBackground(Color.white); colorchange=true; } }
先使按钮装一个监听器,两种颜色在里面循环。自己百度改变框背景的方法。
五、解决问题
前期在于配对的问题,找不到作业的伙伴,几经匹配,才配上队。队员陈挺钦(他的博客),他封装和加工漂亮以及上传代码。大部分他做,我只是参与其中一部分的讨论。负责的功能都是大胆构思,小心实践就出来。按照自己的逻辑和经验。唯有颜色变化没涉及过。上网百度之后,比较之后选出最简单的方法应用到代码之中。没太大的问题,可能老师给的时间也很足,所以没感到太大的压迫。
附图:统计表
PSP2.1 |
Personal Software Process Stages |
Time Senior Student(h) |
Time(h) |
Planning |
计划 |
0 |
0 |
· Estimate |
估计这个任务需要多少时间 |
7 |
8 |
Development |
开发 |
1 |
1.5 |
· Analysis |
需求分析 (包括学习新技术) |
0.1 |
0.3 |
· Design Spec |
生成设计文档 |
0 |
0 |
· Design Review |
设计复审 |
3 |
1 |
· Coding Standard |
代码规范 |
0.1 |
0.1 |
· Design |
具体设计 |
0.5 |
1 |
· Coding |
具体编码 |
1 |
1 |
· Code Review |
代码复审 |
1 |
1.1 |
· Test |
测试(自我测试,修改代码,提交修改) |
0.5 |
1 |
Reporting |
报告 |
0 |
0 |
Test Report |
测试报告 |
0 |
0.5 |
·workload |
计算工作量 |
0 |
0.5 |
·correction |
并提出过程改进计划 |
0 |
0 |
结对编程分工:
何铠江201606120010:背景颜色设置,整数相加减乘除,时间更新
陈廷钦201606120003:页面布局,点击时间处理,答案判断,阶乘计算,代码细节(具体博客)
工作图(本人右边)