个人作业一
https://coding.net/u/zhang1995/p/Demo/git/blob/master/Myapp.java
题目描述:
看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习、练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序
从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:
- 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
- 运算符为 +, −, ×, ÷
- 并且要求能处理用户的输入,并判断对错,打分统计正确率。
- 要求能处理用户输入的真分数, 如 1/2, 5/12 等
- 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10
个人软件过程耗时估计与统计表:
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student | Time (%) |
Planning | 计划 | 6 | 8 |
· Estimate | 估计这个任务需要多少时间 | 6 | 4 |
Development | 开发 | 82 | 88 |
· Analysis | 需求分析 (包括学习新技术) | 5 | 10 |
· Design Spec | 生成设计文档 | 4 | 6 |
· Design Review | 设计复审 | 3 | 6 |
· Coding Standard | 代码规范 | 2 | 3 |
· Design | 具体设计 | 10 | 12 |
· Coding | 具体编码 | 36 | 21 |
· Code Review | 代码复审 | 7 | 9 |
· Test | 测试(自我测试,修改代码,提交修改) | 13 | 21 |
Reporting | 报告 | 9 | 6 |
· | 测试报告 | 3 | 2 |
· | 计算工作量 | 2 | 1 |
· | 并提出过程改进计划 | 3 | 3 |
代码:https://coding.net/u/zhang1995/p/first/git/blob/master/Myapp.java
a.需求分析
需要完整的四项基本的计算功能,能计算10以内的各种算法。
b.功能设计
基本功能
基础的加减乘除
扩展功能
真分数的各种计算
高级功能
c.设计实现
先用随机数控制分数或者整数的计算,然后在整数和分数的类中再加入随机数控制加减乘除四种算法的出现。
d.代码说明
以下是关于加法的代码设计,因为分数和整数用的同一个算法所以用了四个参数可以引入分数的两个分子和分母,然后返回其答案。其中利用了for循环找出得出后的分子分母的最小公倍数,以算出最简的表达方式。
private static String jia(int a, int b, int c, int d) {
String ans=" ";
int ans1=a*d+b*c;
int ans2=b*d;
int Max=0;
for(int i=ans1;i>=1;i--){
if(ans1%i==0&&ans2%i==0)
{
Max = i;
break;
}
}
if(ans1%ans2==0){
ans=ans1/ans2+"";
}else{
ans=(ans1/Max)+"/"+(ans2/Max);
}
return ans;
}
e.测试运行
除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10
PSP:在编辑 四种算法时候因为输出的原因所以一直出现错误,花了很多时间,在后面要用参数控制输出正确率的时候也因为给算法增加了返回值在IF中会再运行而导致一直出现很多次的输出双倍题目,这一些小的问题。
小结:更多的还是要认真做,先把想法想好,不要做到一半再临时改变想法,这会要需要很多时间。