高分!帮忙设计一个Java程序

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:18:41
按照下面的要求编写源文件,能编写其中的某一部分也可以

假设银行整存整取存款不同期限的月息利率分别为:
0.63% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
利息=本金*月息利率*12*存款年限。
现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。

有提示信息或菜单,帮助用户了解求解过程。

算法设计:
为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。
分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:
2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8
其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:
0<=i8<=2
0<=i5<=(20-8*i8)/5
0<=i3<=(20-8*i8-5*i5)/3
0<=i2<=(20-8*i8-5*i5-3*i3)/2
0<=i1=20-8*i8-5*i5-3*i3-2*i2
可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。

可以使用图形用户界面,也可以使用字符界面。

代码如下:(将代码拷贝到 eclipse 中后,全选,按 ctrl+i 即可调整格式。拷贝到jbuilder中后,全选,按 tab 即可调整格式。调整格式后,看起来会比较美观。)
对了,另发现你的公式:
存款人应得到的本利合计为:
2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8

有点儿问题,需要修改为:
2000*(1+rate1*12*i1)*(1+rate2*12*i2)*(1+rate3*12*i3)*(1+rate5*12*i5)*(1+rate8*12*i8)

public class Banker {

public static void main(String[] args) {
Banker banker = new Banker();
banker.caculateMoney();
}

// 具体算法
/*
按照下面的要求编写源文件,能编写其中的某一部分也可以
假设银行整存整取存款不同期限的月息利率分别为:
0.63% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
利息=本金*月息利率*12*存款年限。
本息合计=本金*(1+月息利率*12*存款年限)
现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。

有提示信息或菜单,帮助用户了解求解过程。

算法设计:
为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。
分析题意,设2000元存20年,其中1