- 作业要求: https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
- github地址:https://github.com/LiuQSong/learnning
- 同伴姓名学号+博客地址:刘庆松 201606120033 https://www.cnblogs.com/lqscmz/p/9845339.html
一、程序基本要求如下:
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、扩展方向(8选4)
1、可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 2、用户答题结束以后,程序可以显示用户答题所用的时间
- 3、用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 4、程序可以出单个整数阶乘的题目:如:4!=24
三、时间记录表
PSP2.1 |
Personal Software Process Stages |
Time Senior Student(h) |
Time(h) |
Planning |
计划 |
1.5 |
1 |
· Estimate |
估计这个任务需要多少时间 |
16 |
18.1 |
Development |
开发 |
2 |
3 |
· Analysis |
需求分析 (包括学习新技术) |
1.5 |
3 |
· Design Spec |
生成设计文档 |
0 |
0 |
· Design Review |
设计复审 |
0.2 |
0.3 |
· Coding Standard |
代码规范 |
0.4 |
0.2 |
· Design |
具体设计 |
2 |
2.5 |
· Coding |
具体编码 |
3 |
6 |
· Code Review |
代码复审 |
1 |
0.8 |
· Test |
测试(自我测试,修改代码,提交修改) |
0.5 |
0.5 |
Reporting |
报告 |
0 |
0 |
Test Report |
测试报告 |
0.2 |
0.2 |
·workload |
计算工作量 |
0.2 |
0.3 |
·correction |
并提出过程改进计划 |
0.3 |
0.3 |
四、结对过程
1.结对成员
- 刘庆松:把在控制台运行程序转成简单的可视化程序,程序可以出单个整数阶乘的题目:如:4!=24功能,用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数功能
- 赵铭杰:对用户开始进行答题进行计时处理,在最后结束答题后,会提示所用的总时间;对随机生成的负数进行规范化处理,在负数的位置匹配括号。
2.开发环境
调试并编写代码
3. 结对照片
4. 部分代码及运行截图
窗口布局文件代码(start.java)
JFrame frame = new Start(); frame.setTitle("四则运算"); frame.setSize(300, 200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
随机生成数值和符号的核心代码(start.java)
int sign1 = (int) (Math.random() * 3); //产生0-3的随机数 int sign2 = (int) (Math.random() * 3); //产生0-3的随机数 int x = -(int) (Math.random() * 99)+(int) (Math.random() * 99); int y = -(int) (Math.random() * 99)+(int) (Math.random() * 99); int z = -(int) (Math.random() * 99)+(int) (Math.random() * 99); int j = 1 + (int) (Math.random() * 9); int sign3 = 1 + (int) (Math.random() * 3); String result = "";
通过递归计算阶乘的结果功能代码(EasyOperation.java)
public int jiecheng(int number){ if (number <= 1) return 1; else return number * jiecheng(number - 1); } }
生成题目计算答案的功能代码(EasyOperation.java)
public double count1(int x,int y,int z,int sign1,int sign2){ double result=0; if((sign1==0)&&(sign2==0)){ result=x+y+z; } if((sign1==0)&&(sign2==1)){ result=x+y-z; } if((sign1==0)&&(sign2==2)){ result=x+y*z; } if((sign1==0)&&(sign2==3)){ result=x+y/z; } if((sign1==1)&&(sign2==0)){ result=x-y+z; } if((sign1==1)&&(sign2==1)){ result=x-y-z; } if((sign1==1)&&(sign2==2)){ result=x-y*z; } if((sign1==1)&&(sign2==3)){ result=x-y/z; } if((sign1==2)&&(sign2==0)){ result=x*y+z; } if((sign1==2)&&(sign2==1)){ result=x*y-z; } if((sign1==2)&&(sign2==2)){ result=x*y*z; } if((sign1==2)&&(sign2==3)){ result=x*y/z; } if((sign1==3)&&(sign2==0)){ result=x/y+z; } if((sign1==3)&&(sign2==1)){ result=x/y-z; } if((sign1==3)&&(sign2==2)){ result=x/y*z; } if((sign1==3)&&(sign2==3)){ result=x/y/z; } String test =new DecimalFormat("0.0").format(result); result = Double.valueOf(test); return result; }
生成“题目“”的字符串功能代码(EasyOperation.java)
public String count(int x,int y,int z,int sign1,int sign2){ String result=""; String sign3=""; String sign4=""; String x1 = String.valueOf(x); String y1 = String.valueOf(y); String z1 = String.valueOf(z); if(x<0)x1="("+x1+")"; if(y<0)y1="("+y1+")"; if(z<0)z1="("+z1+")"; switch(sign1){ case 0:sign3="+";break; case 1:sign3="-";break; case 2:sign3="x";break; case 3:sign3="/";break; default:sign3="+"; } switch(sign2){ case 0:sign4="+";break; case 1:sign4="-";break; case 2:sign4="x";break; case 3:sign4="/";break; default:sign4="+"; } result=x1+sign3+y1+sign4+z1; return result; }
运行界面截图(start.java)
用户答案判断提示(EasyOperation.java)
统计用时提示(TimerCount.java)
提示用户答题数已超过五题(start.java)