软件工程----5.0 单元测试-

一.主要的功能需求:开发一个复利计算软件

功能细分: 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.你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应?

8.如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)

9.要追求利益,又要面对不可预知的金融投资风险, “不能把鸡蛋放在同一个篮子里”,所以有必要进行组合投资。

二.开发结果

1.复利计算

2.单利计算

3.本金计算

4.存款期限计算

5.存款利率计算

6.投资计算

8.贷款分期还款计算

9.错误提示

三.核心代码

 1 public double installmentPaymentCalculation(double P, double i, double n) {
 2         double F;
 3         F = P
 4                 * (((i / 12) * (Math.pow(1 + i / 12, n * 12))) / (Math
 5                         .pow((1 + i / 12), n * 12) - 1));
 6         return F;
 7     }
 8 
 9     public double theInvestmentCalculation(double P, double i, double n) {
10         double F;
11         for (int j = 0; j < n; j++) {
12             P += P * i;
13         }
14         F = P;
15         return F;
16     }
17 
18     public double interestRate(double P, double n, double F) {
19         double i;
20         i = (Math.pow(F / P, 1.0 / n)) - 1;
21         return i;
22     }
23 
24     public double theTermsOfDepositCalculation(double P, double i, double F) {
25         double n;
26         n = Math.log((double) (F / P))
27                 / (Math.log((double) (1 + i)));
28         return n;
29     }
30 
31     public double calculationOfThePrincipal(double i, double n, double F) {
32         double P;
33         P = F / Math.pow((1 + i), n);
34         return P;
35     }
36 
37     public double simpleInterest(double P, double i, double n) {
38         double F;
39         F = P * (1 + i * n);
40         return F;
41     }
42 
43     public double compounding(double P, double i, double n, double m) {
44         double F;
45         F = P * (Math.pow((1 + i / m), n * m));
46         return F;
47     }

代码链接:

https://github.com/helloyoucan/compoundung/blob/master/Compounding4_1.java

https://github.com/helloyoucan/compoundung/blob/master/DataTreating.java

四.单元测试

1.测试结果

2.测试程序代码链接:

https://github.com/helloyoucan/compoundung/blob/master/DataTreatingTest.java

原文地址:https://www.cnblogs.com/wucanlong/p/5325650.html