单复利软件单元测试
2016-03-29 22:32
399 查看
1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30
2.如果按照单利计算,本息的最终收益
3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?
4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?
5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?
6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?(定额定投收益计算办法)
7. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)
因为为了方便测试,所以把前几次的单复利计算合起来一个程序方便测试。因为可以输入年份,本金,利率等可以输入负数,所以在每个输入都加入限制while使输入的都大于0.
单元测试预期结果及其代码:
printf(" ※※※※※※※※※\n");
printf("※请输入1或2或3或4※\n");
printf(" ※※※※※※※※※\n");
printf("----------------------------- \n");
printf("|1复利计算收益(投资年限估算) | \n");
printf("|2.最优投资项目利率估算 | \n");
printf("|3.定投计算 | \n");
printf("|4.单利计算 | \n");
printf("----------------------------- \n");
在测试当中发现输入本金,时间和利率等如果输入非数字时会输出死循环“输入错误,请重新输入“。
在测试单利计算结果正确,答案无错误。测试复利计算时发现错误,答案有很大误差,应该是计算复利的公式错了。
2.如果按照单利计算,本息的最终收益
3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?
4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?
5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?
6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?(定额定投收益计算办法)
7. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)
因为为了方便测试,所以把前几次的单复利计算合起来一个程序方便测试。因为可以输入年份,本金,利率等可以输入负数,所以在每个输入都加入限制while使输入的都大于0.
单元测试预期结果及其代码:
测试模块 | 测试输入 | 预期结果 | 运行结果 | bug跟踪 |
复利计算 | (本金,年限,利率,次数) | 终值 | ||
测试运算结果 | (1000,3,0.05,5) | √ | × | |
测试输出正数 | (1000,3,0.05,1) | √ | √ | |
测试输入负数 | (-1000,3,-0.05,1) | 输入错误请输入正确的数值 | √ | |
单利计算 | (利率,本金,年限) | 终值 | ||
测试运算结果 | ("0.03","5000","3") | √ | √ | |
测试输入负数 | ("0.03","5000","3") | 输入错误请输入正确的数值 | √ | |
测试输出正数 | ("-0.03","-5000","3") | 输入错误请输入正确的数值 | √ | |
投资年限 | (利率,本金,终值,次数) | |||
测试运算结果 | ("0.05","100.0","105.0","1") | √ | √ | |
测试输出正数 | ("0.05","100.0","105.0","1") | √ | √ | |
测试输入负数 | ("-0.05","-100.0","105.0","1") | 输入错误请输入正确的数值 | √ | |
...... | 以下结果与上表一致 |
#include<stdio.h> #include<math.h> main() { int a,f; double money,time,i,sum,b,c;
printf(" ※※※※※※※※※\n");
printf("※请输入1或2或3或4※\n");
printf(" ※※※※※※※※※\n");
printf("----------------------------- \n");
printf("|1复利计算收益(投资年限估算) | \n");
printf("|2.最优投资项目利率估算 | \n");
printf("|3.定投计算 | \n");
printf("|4.单利计算 | \n");
printf("----------------------------- \n");
scanf("%d",&a); if(a!=1&&a!=2&&a!=3&&a!=4) { printf("输入错误,请重新输入!"); scanf("%d",&a); } if(a==1) { printf("请输入本金:"); scanf("%lf",&money); while(money<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&money); } printf("请输入得到金额:"); scanf("%lf",&sum); while(sum<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&sum); } printf("请输入利率:"); scanf("%lf",&i); while(i<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&i); } time= log(sum/money) / log(1+i); printf("%lf年时间完成\n",time); } if(a==2) { printf("请输入本金:"); scanf("%lf",&money); while(money<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&money); } printf("请输入得到金额:"); scanf("%lf",&sum); while(sum<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&sum); } printf("请输入时间:"); scanf("%lf",&time); while(time<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&time); } b=pow(sum/money,1/time); i=(b-1)*100; printf("所需利率至少:%lf% \n",i); } if(a==3) { b=1; printf("请输入每年投入金额:"); scanf("%lf",&money); while(money<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&money); } c=money; printf("请输入时间:"); scanf("%lf",&time); while(time<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&time); } printf("请输入利率:"); scanf("%lf",&i); while(i<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&i); } while(b<=time) { sum=money*(1+i); money=sum+c; b++; } printf("所得到回报:%lf \n",sum); } if(a==4) { printf("1.求存年数\n"); printf("2.求利率\n"); printf("3.求时本利和\n"); scanf("%d",&f); if(f!=1&&f!=2&&f!=3) { printf("输入错误,请重新输入!\n"); scanf("%d",&f); } if(f==1) { printf("请输入本金:"); scanf("%lf",&money); while(money<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&money); } printf("请输入利率:"); scanf("%lf",&i); while(i<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&i); } printf("请输入本利和:"); scanf("%lf",&sum); while(sum<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&sum); } time=(sum-money)/money*i; printf("存年数为%lf\n",time); } if(f==2) { printf("请输入本金:"); scanf("%lf",&money); while(money<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&money); } printf("请输入本利和:"); scanf("%lf",&sum); while(sum<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&sum); } printf("请输入存年数:"); scanf("%lf",&time); while(time<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&time); } i=(sum-money)/money*time; printf("利率为%lf\n",i); } if(f==3) { printf("请输入本金:"); scanf("%lf",&money); while(money<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&money); } printf("请输入存年数:"); scanf("%lf",&time); while(time<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&time); } printf("请输入利率:"); scanf("%lf",&i); while(i<=0) { printf("输入错误,请重新输入!\n"); scanf("%lf",&i); } sum=money*time*i+money; printf("\n"); printf("本利和为%lf\n",sum); } } }
在测试当中发现输入本金,时间和利率等如果输入非数字时会输出死循环“输入错误,请重新输入“。
在测试单利计算结果正确,答案无错误。测试复利计算时发现错误,答案有很大误差,应该是计算复利的公式错了。
相关文章推荐
- 初次尝试利用脚本自动编译搭建LAMP-----php
- shell教程二: shell中的$
- C语言中的内存分配
- Linux学习路线规划
- eclipse下开发简单的Web Service
- java集合类特点总结
- 求两个数的最大公约数和最小公倍数
- oracle中的char、varchar、varchar2、nvarchar、nvarchar2区别
- 学习javaEE每一天2016.3.29
- jQuery源码学习(1):整体架构
- STL vector用法介绍
- 服务器内存类型UDIMM、RDIMM和LRDIMM比较
- 初次尝试利用脚本自动编译搭建LAMP-----php
- codeforces_600A. Extract Numbers(字符串处理)
- 零星小记备忘,浏览器差异
- MapReduce编程一
- 数据库事务解析
- 2030
- 求五位数是奇数的个数
- 初次尝试利用脚本自动编译搭建LAMP-----php