最佳存款方案
Posted zk126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最佳存款方案相关的知识,希望对你有一定的参考价值。
一、问题描述
假设银行一年整存零取的月息为0.63%。 现在某人手中有一笔钱,他打算在今后的5年中的每年年底取出1000 元,到第5年时刚好取完,请算出他存钱时应存入多少。
二、解题思路
根据题意,可以从第五年向前推,可知第五年年底会取出1000元,则可以计算出第5年年初在银行中所存的钱数为1000/(1+12*0.0063)。
根据此可以算出第四年,第三年,第二年,第一年的年初的存款数。
第四年年初存款数=(第五年年初存款数+1000)/(1+12*0.0063)。……
三、代码实现
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cmath> using namespace std; int main() double money=0; for (int i = 0; i < 5; i++) money = (money + 1000.0) / (1 + 12 * 0.0063); printf("%.2f\\n", money); return 0;
为银行模块实现最佳模型
【中文标题】为银行模块实现最佳模型【英文标题】:Implementing the best model for a bank module 【发布时间】:2017-06-20 08:56:54 【问题描述】:我正在用 C# 实现一个银行模块,其中包含一个储蓄账户、一个支票账户和一个简易储蓄账户。所有账户都有一个所有者和一个余额,他们都可以取款和存款,但他们不能提取超过余额。到这里,很容易。现在,我们的储蓄帐户有一个新方法 applyInterest 和 checksAccount 一个方法 deductFees 和 easySavinAccount 两者都有。我想到的是使用抽象类Account:
public abstract class Account
protected string owner get; set;
//always use decimal especially for money c# created them for that purpose :)
protected decimal balance get; set;
public void deposit(decimal money)
if (money >= 0)
balance += money;
public void withdraw(decimal money)
if (money > balance)
throw new System.ArgumentException("You can't withdraw that much money from your balance");
else balance -= money;
这将被所有 3 个类继承。是否有适合以更好的方式实现这一点的设计模式?特别是对于easySaveAccount,组合可能会有所帮助吗?
谢谢!
【问题讨论】:
【参考方案1】:建议
1.implement separate interfaces declaring the methods applyInterest and deductFees.
2.You have already declared the abstract class Account.
3.Now you can implement these interfaces in your classes for savings,checkings and easy saving account.All these classes should
be implementing the abstract class.
【讨论】:
这是一个很棒的方法!这是四人组的设计模式吗?或者只是一种更好的实现方式? 我是根据 SOLID 设计原则之一的接口隔离原则提出的。你可以从中得到一些想法:codeproject.com/Articles/822791/…【参考方案2】:我建议创建一个实现IBalance
的类Balance
。所有 Account 可能只是将 withdraw\deposit
委托给该类,因此它们没有代码重复,但您可以轻松地围绕它添加一些额外的逻辑(即征税、佣金、添加交易等)
【讨论】:
以上是关于最佳存款方案的主要内容,如果未能解决你的问题,请参考以下文章