您的位置:首页 > 其它

单复利软件单元测试

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.

单元测试预期结果及其代码:

测试模块

测试输入

预期结果

运行结果

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);
}

}
}










在测试当中发现输入本金,时间和利率等如果输入非数字时会输出死循环“输入错误,请重新输入“。

在测试单利计算结果正确,答案无错误。测试复利计算时发现错误,答案有很大误差,应该是计算复利的公式错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: