一.主要的功能需求:开发一个复利计算软件
功能细分: 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