复利/单利计算程序进度
1.客户说:帮我开发一个复利计算软件。
完成复利公式计算程序,并成功PUSH到github上。
截止时间:3.10晚12点之前。
按照这个要求完成了。
演示。
计算:本金为100,000元,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:100,000×(1+3%)^30
1 Scanner in1=new Scanner(System.in); 2 System.out.println("请输入本金:"); 3 double money =in1.nextDouble(); //本金 4 System.out.println("请输入存款年数:"); 5 int years = in1.nextInt(); //存钱年数 6 System.out.println("请输入利率:"); 7 float r = in1.nextFloat(); //利率 8 float sum =1; 9 //float sum = (float) ((1+r)*years*money); 10 //System.out.println("存款总额为:"+sum); 11 for(int i = 1 ; i<=years; i++){ 12 sum = (float) (sum*(1+ r)); 13 } 14 System.out.println("存款总额为:"+sum*money); 15 }
1.0----------------------------------------------------------------------------
2.客户提出:
2.如果按照单利计算,本息又是多少呢?
3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?
完成23功能,并成功PUSH到github上。
截止时间:3.12晚11点之前
另外,是否预感到客户会有进一步的要求,而在下次会面演示之前有所准备呢?
1 package fuli; 2 3 import java.util.Scanner; 4 5 public class fuli { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 Scanner in=new Scanner(System.in); 10 System.out.println("请选择1.复利/2.单利:"); 11 int a = in.nextInt(); 12 if(a==1) 13 Count.fulijisuan(); 14 else 15 Count.danlijisuan(); 19 } 20 }
static void fulijisuan() { Scanner in1=new Scanner(System.in);
System.out.println("请输入本金:");
double money =in1.nextDouble(); //本金
System.out.println("请输入存款年数:");
int years = in1.nextInt(); //存钱年数
System.out.println("请输入利率:");
float r = in1.nextFloat(); //利率
float sum =1;
//float sum = (float) ((1+r)*years*money);
//System.out.println("存款总额为:"+sum);
for(int i = 1 ; i<=years; i++){
sum = (float) (sum*(1+ r));
}
System.out.println("存款总额为:"+sum*money);
} } static void danlijisuan() { Scanner in1 = new Scanner(System.in); double sum = 0; System.out.println("请输入本金:"); double money = in1.nextDouble(); // 本金 System.out.println("请输入存款年数:"); int years = in1.nextInt(); // 存钱年数 System.out.println("请输入利率:"); double r = in1.nextDouble(); // 利率 for (int i = 1; i <= years; i++) { sum = (1 + r * i) * money; System.out.println("当前所需本金:" + sum); } }
2.0----------------------------------------------------------------------------
3.客户又想:
4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?
5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?
6.统计前两次实验提交的代码数据:所用语言,代码行,工作量(人时)。
估计完成4、5所需代码行与工作量,并做记录。
完成过程中注意记录自己的实际工作量,完成之后与自己之前所做的估计进行对照。
回顾并总结这三次实验,发布一篇博客。
截止时间:3.17晚11点之前
1 public class fuli3 { 2 3 public static void main(String[] args) { 4 // TODO 自动生成的方法存根 5 Scanner in=new Scanner(System.in); 6 System.out.println("请选择1.复利/2.单利:"); 7 int a = in.nextInt(); 8 if(a==1) 9 Count.fulijisuan(); 10 else 11 Count.danlijisuan();; 12 } 13 }
1 public class Count { 2 3 // TODO 自动生成的方法存根 4 static void fulijisuan(){ 5 Scanner in=new Scanner(System.in); 6 System.out.println("请选择1.计算收入/2.计算本金/3.计算时间/4.计算利率:"); 7 int a = in.nextInt(); 8 if(a==1) 9 Fuli.shouru(); 10 else if(a==2) 11 Fuli.benjin(); 12 else if(a==3) 13 Fuli.shijian(); 14 else 15 Fuli.lilv(); 16 } 17 22 static void danlijisuan(){ 23 Scanner in1=new Scanner(System.in); 24 double sum=0; 25 System.out.println("请输入本金:"); 26 double money =in1.nextDouble(); //本金 27 System.out.println("请输入存款年数:"); 28 int years = in1.nextInt(); //存钱年数 29 System.out.println("请输入利率:"); 30 double r = in1.nextDouble(); //利率 31 for(int i = 1 ; i<=years; i++){ 32 sum = (1+ r * i )*money; 33 System.out.println("当前所需本金:"+sum); 34 } 35 } 38 }
1 public class Fuli { 2 // 复利计算:总额=本金×(1+利率)^存期 3 static void shouru(){ 4 Scanner in1=new Scanner(System.in); 5 System.out.println("请输入本金:"); 6 double money =in1.nextDouble(); //本金 7 System.out.println("请输入存款年数:"); 8 int years = in1.nextInt(); //存钱年数 9 System.out.println("请输入利率:"); 10 float r = in1.nextFloat(); //利率 11 float sum =1; 12 for(int i = 1 ; i<=years; i++){ 13 sum = (float) (sum*(1+ r)); 14 } 15 System.out.println("存款总额为:"+sum*money); 16 } 17 18 static void benjin(){ 19 Scanner in1=new Scanner(System.in); 20 System.out.println("请输入复利终值:"); 21 double sum =in1.nextDouble(); 22 System.out.println("请输入存款年数:"); 23 int years = in1.nextInt(); 24 System.out.println("请输入利率:"); 25 float r = in1.nextFloat(); 26 //double money,n=1; 27 //for(int i = 1 ; i<=years; i++){ 28 // n=(1+r)*n; 29 //} 30 //money = sum/n; 31 float money=(float)( sum/(1+years*r)); 32 System.out.println("应投入本金为:"+money); 33 } 34 35 36 static void shijian(){ 37 Scanner in1=new Scanner(System.in); 38 System.out.println("请输入本金:"); 39 double money =in1.nextDouble(); //本金 40 System.out.println("请输入复利终值:"); 41 int sum = in1.nextInt(); //存钱年数 42 System.out.println("请输入利率:"); 43 double r = in1.nextDouble(); //利率 44 int years=(int)((Math.log(sum)/Math.log(1+r))-(Math.log(money)/Math.log(1+r))); 45 System.out.println("应存储时间为:"+years); 46 } 47 48 49 static void lilv(){ 50 Scanner in1=new Scanner(System.in); 51 System.out.println("请输入本金:"); 52 double money =in1.nextDouble(); //本金 53 System.out.println("请输入存款年数:"); 54 int years = in1.nextInt(); //存钱年数 55 System.out.println("请输入复利终值:"); 56 double sum = in1.nextDouble(); //终值 57 float r=(float)( (Math.pow(sum/money, 1.0/years))-1 ); 58 System.out.println("报酬率应为:"+r*100+"%"); 59 } 60 }
本来是想下午就弄好的,结果拖到了晚上。。。看来在写代码方面还不够熟悉和细心。git那里好像上传不上去。。。、
3.0----------------------------------------------------------------------------
7. 你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应?
相互观赏程序运行情况。
8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)
改善完成至要求8,并成功PUSH到github上。
9. 好书不读就浪费钱了,阅读教材《构建之法》第1.2.3章,适当扩展阅读,看不懂不理解的时候记得百度, 并写一个读后感博客,每章必须至少提一个问题。在博客中要列出问题是关于哪一章,哪一节,你的困惑在哪里? 有什么思考?更重要的,让博客园铭记我们纷纷而来的收获与感悟。
10. 另外,我们准备找搭档了,找到你志趣相投的小伙伴。
论伙伴的重要性,看电影《硅谷传奇》,感受下传奇牛人的影响一生的搭档。
截止时间:2016.3.21晚11点之前
1 public class Count { 2 3 // TODO 自动生成的方法存根 4 static void fulijisuan(){ 5 Scanner in=new Scanner(System.in); 6 System.out.println("请选择1.计算收入/2.计算本金/3.计算时间/4.计算利率/5.复利条件下等额还款金额:"); 7 int a = in.nextInt(); 8 if(a==1) 9 Fuli.shouru(); 10 else if(a==2) 11 Fuli.benjin(); 12 else if(a==3) 13 Fuli.shijian(); 14 else if(a==4) 15 Fuli.lilv(); 16 else if(a==5) 17 Fuli.dengehuankuan(); 18 } 19 20 21 22 static void danlijisuan(){ 23 Scanner in1=new Scanner(System.in); 24 double sum=0; 25 System.out.println("请输入本金:"); 26 double money =in1.nextDouble(); //本金 27 System.out.println("请输入存款年数:"); 28 int years = in1.nextInt(); //存钱年数 29 System.out.println("请输入利率:"); 30 double r = in1.nextDouble(); //利率 31 for(int i = 1 ; i<=years; i++){ 32 sum = (1+ r * i )*money; 33 System.out.println("当前所需本金:"+sum); 34 } 35 } 38 }
1 public class Fuli { 2 3 // TODO 自动生成的方法存根 4 // 复利计算:总额=本金×(1+利率)^存期 5 static void shouru(){ 6 Scanner in1=new Scanner(System.in); 7 System.out.println("请输入本金:"); 8 double money =in1.nextDouble(); //本金 9 System.out.println("请输入存款年数:"); 10 int years = in1.nextInt(); //存钱年数 11 System.out.println("请输入利率:"); 12 float r = in1.nextFloat(); //利率 13 float sum =1; 14 //float sum = (float) ((1+r)*years*money); 15 //System.out.println("存款总额为:"+sum); 16 for(int i = 1 ; i<=years; i++){ 17 sum = (float) (sum*(1+ r)); 18 } 19 System.out.println("存款总额为:"+sum*money); 20 } 21 22 23 static void benjin(){ 24 Scanner in1=new Scanner(System.in); 25 System.out.println("请输入复利终值:"); 26 double sum =in1.nextDouble(); //本金 27 System.out.println("请输入存款年数:"); 28 int years = in1.nextInt(); //存钱年数 29 System.out.println("请输入利率:"); 30 float r = in1.nextFloat(); //利率 31 //double money,n=1; 32 //for(int i = 1 ; i<=years; i++){ 33 // n=(1+r)*n; 34 //} 35 //money = sum/n; 36 float money=(float)( sum/(Math .pow(1+r,years)) ); 37 System.out.println("应投入本金为:"+money); 38 } 39 40 41 static void shijian(){ 42 Scanner in1=new Scanner(System.in); 43 System.out.println("请输入本金:"); 44 double money =in1.nextDouble(); //本金 45 System.out.println("请输入复利终值:"); 46 int sum = in1.nextInt(); //存钱年数 47 System.out.println("请输入利率:"); 48 double r = in1.nextDouble(); //利率 49 int years=(int)( sum/(Math .pow(1+r,money)) ); 50 System.out.println("应存储时间为:"+years); 51 } 52 53 54 static void lilv(){ 55 Scanner in1=new Scanner(System.in); 56 System.out.println("请输入本金:"); 57 double money =in1.nextDouble(); //本金 58 System.out.println("请输入存款年数:"); 59 int years = in1.nextInt(); //存钱年数 60 System.out.println("请输入复利终值:"); 61 double sum = in1.nextDouble(); //终值 62 float r=(float)( (Math.pow(sum/money, 1.0/years))-1 ); 63 System.out.println("报酬率应为:"+r*100+"%"); 64 } 65 66 static void dengehuankuan(){ 67 Scanner in1=new Scanner(System.in); 68 System.out.println("请输入贷款金额:"); 69 double money =in1.nextDouble(); 70 System.out.println("请输入存款年数:"); 71 int years = in1.nextInt(); 72 System.out.println("请输入利率:"); 73 double r = in1.nextDouble(); 74 double m; 75 m=money*r/(12*(1+r)*(Math.pow(1+r,years)-1)); 76 System.out.println("每月等额还款金额为:"+m+"元"); 77 } 78 79 static void exit(){ 80 Scanner in1=new Scanner(System.in); 81 System.out.println("感谢您使用复利计算软件.\n"); 82 } 83 }
4.0----------------------------------------------------------------------------
找好搭档,2人一组,把分组名单汇总于学委处,学委更新到博客列表上。
12. 即要追求利益,又要面对不可预知的金融投资风险, “不能把鸡蛋放在同一个篮子里”,所以有必要进行组合投资。
通过上述计算与对比,可以帮助客户进行投资决策。
客户:那么能否帮我记录下一笔一笔不同类型的投资,并动态显示资金现值呢?
我们已经完成的这些功能,已经足以做成一个独立应用了。
但是并没有以商业标准来要求。
现在假设金融公司为客户算收益直接调用我们的计算函数,能不能保证万无一失?