Java基础十一(案例)

案例

  • 写一个用户程序测试Account类,在用户程序中,
  • 创建一个账号为1122、余额为20000、年利率4.5%的Account对象
  • 使用withdraw方法提取30000元,并打印余额
  • 在使用withdraw方法取款2500元
  • 使用deposit方法存款3000元,然后打印余额和月利率
public class Account {
    private int id;//账号
    private double balance;//余额
    private double annualInterestRate;//年利率

    public Account(int id, double balance, double annualInterestRate) {
        super();
        this.id = id;
        this.balance = balance;
        this.annualInterestRate = annualInterestRate;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getAnnualInterestRate() {
        return annualInterestRate;
    }

    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    //返回月利率
    public double getMonthlyInterest(){
        return annualInterestRate / 12;
    }

    //取钱
    public void withdraw(double amount){
        if(balance >= amount){
            balance -= amount;
            return;
        }
        System.out.println("余额不足");
    }

    //存钱
    public void deposit(double amount){
        if (amount > 0){
            balance += amount;
        }
    }
}

public class AccountTest {
    public static void main(String[] args) {
        Account acct = new Account(1122, 20000, 0.045);

        acct.withdraw(30000);
        System.out.println("您的账户余额为:" + acct.getBalance());

        acct.withdraw(2500);
        System.out.println("您的账户余额为:" + acct.getBalance());

        acct.deposit(3000);
        System.out.println("您的账户余额为:" + acct.getBalance());

        System.out.println("月利率为:" + acct.getAnnualInterestRate() * 100 + "%");
    }

}

案例

  • 创建Account类的一个子类CheckAccount代表可透支的账户,该账户中定义一个属性overdraft代表可以透支限额

  • 在CheckAccount类中重写withdraw方法,算法如下:

  • 如果(取款金额<账户金额),

  • 可直接取款

  • 如果(取款金额>账户金额),

  • 计算需要透支的额度

  • 判断可透支额overdraft是否足够支付本次透支需要,如果可以,将账户余额修改为0,冲减可透支金额

  • 如果不可以,提示用户超过可透支额的限额

  • 写一个用户程序测试CheckAccount类,在用户程序中,

  • 创建一个账号为1122、余额为20000、年利率4.5%的CheckAccount对象

  • 使用withdraw方法提取5000元,并打印余额和可透支额

  • 在使用withdraw方法取款18000元,并打印余额和可透支额

  • 使用withdraw方法取款3000元,并打印余额和可透支额

public class CheckAccount extends Account{
    private double overdraft;//可透支限额

    public CheckAccount(int id, double balance, double annualInterestRate, double overdraft){
        super(id, balance, annualInterestRate);
        this.overdraft = overdraft;
    }

    public double getOverdraft() {
        return overdraft;
    }

    public void setOverdraft(double overdraft) {
        this.overdraft = overdraft;
    }

    @Override
    public void withdraw(double amount) {
        if(getBalance() >= amount){//余额足够消费
            //方式一
//            setBalance(getBalance() - amount);
            //方式二
            super.withdraw(amount);
        }else if(overdraft >= (amount - getBalance())){//透支范围内足够消费
            overdraft -= (amount - getBalance());
            setBalance(0);
            //方式二
//            super.withdraw(getBalance());
        }else{
            System.out.println("超过可透支限额!");
        }
    }
}
public class CheckAccountTest {
    public static void main(String[] args) {
        CheckAccount acct = new CheckAccount(1122, 20000, 0.045, 5000);
        acct.withdraw(5000);

        System.out.println("您的账户余额为:" + acct.getBalance());
        System.out.println("您的可透支额为:" + acct.getOverdraft());

        acct.withdraw(18000);

        System.out.println("您的账户余额为:" + acct.getBalance());
        System.out.println("您的可透支额为:" + acct.getOverdraft());

        acct.withdraw(3000);

        System.out.println("您的账户余额为:" + acct.getBalance());
        System.out.println("您的可透支额为:" + acct.getOverdraft());

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值