银行管理系统4_9

package BankProjeck.package4;

class SavingsAccount{
    private int id;             //账号
    private double balance;     //余额
    private double rate;        //存款的年利率
    private int lastDate;       //上次变更余额的时期
    private double accumulation;//余额按日累加之和

    private void record(int date, double amount){
        accumulation = accumulate(date);
        lastDate = date;
        amount = (amount * 100 + 0.5) / 100;
        balance += amount;
        System.out.println(date + "\t#" + id + "\t" + amount + "\t" + balance);
    }
    //记录一笔帐,date为日期,amount为金额,desc为说明

    double accumulate(int date) {
        return accumulation + balance * (date - lastDate);
    }

    public SavingsAccount(int date, int id, double rate){
        this.id = id;
        this.rate = rate;
        lastDate = date;
        balance = 0;
        accumulation = 0;
        System.out.println(date+"\t"+id+" is created");
    }
    //构造函数

    public int getId(){
        return id;
    }
    //返回id

    public double getBalance(){
        return balance;
    }
    //返回余额

    public double getRate(){
        return rate;
    }
    //返回利率

    public void deposit(int date, double amount){
        record(date,amount);
    }
    //存入现金

    public void withdraw(int date, double amount){
        if (amount > getBalance()){
            System.out.println("Error: not enough money");
        }
        else {
            record(date, -amount);
        }
    }
    //取出现金

    public void settle(int date){
        double interest = accumulate(date) * rate / 365;
        if (interest != 0){
            record(date, -interest);
        }
        accumulation = 0;
    }
    //结算利息,每年1月1日调用一次该函数

    public void show(){
        System.out.println("#"+id+"\tBalance"+balance);
    }
}


public class bank {
    public static void main(String[] args){
        SavingsAccount sa0 = new SavingsAccount(1, 21325302, 0.015);
        SavingsAccount sa1 = new SavingsAccount(1, 58320212, 0.015);

        sa0.deposit(5, 5000);
        sa1.deposit(25, 10000);
        sa0.deposit(45, 5500);
        sa1.withdraw(60, 4000);

        //开户后第90天到了银行的计息日,结算所有账户的年息
        sa0.settle(90);
        sa1.settle(90);

        //输出各个账户信息
        sa0.show();
        sa1.show();
    }
}

上一篇:数据处理-支付


下一篇:【LeetCode】322. Coin Change 零钱兑换(Medium)(JAVA)