永发信息网

JAVA 编程创建Account 类模拟银行账户。

答案:1  悬赏:0  手机版
解决时间 2021-11-29 16:44
JAVA 编程创建Account 类模拟银行账户。
最佳答案
我帮你一共写了四个类,一个账户Account类,两个账户类的子类(信用卡账户CreditCardAccount类和借记卡DebitCardAccount类),另外再加上一个演示透支效果测试Test类。 代码贴在下面:

public abstract class Account { protected String accountNumber; // 账号
protected double overage; // 余额
protected double annualInterestRate; // 年利率


public Account(String accountNumber, double overage, double annualInterestRate) {
super();
// 设定账号。
this.accountNumber = accountNumber;
// 设定初始余额,至少为零。
this.overage = overage >= 0 ? overage : 0;
// 设定年利率,至少为零。
this.annualInterestRate = annualInterestRate >= 0 ? annualInterestRate : 0;
}


public String getAccountNumber() {
return this.accountNumber;
}


public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public double getOverage() {
return this.overage;
}
public boolean depositMoney(double money) {
// 如果金额小于零,则不能存款
if (money <= 0)
return false;
// 否则将相应的金额累加到账户余额中
this.overage += money;
return true;
}


public boolean drawMoney(double money) {
// 如果账户余额不足,则不能取款
if (this.overage < money)
return false;
// 否则从账户余额中扣除相应的金额
this.overage -= money;
return true;
}
public double getAnnualInterestRate() {
return this.annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
}

}
--------------------------------------------------

public class DebitCardAccount extends Account {
public DebitCardAccount(String accountNumber, double overage,
double annualInterestRate) {
super(accountNumber, overage, annualInterestRate);
}}
-------------------------------------------------

public class CreditCardAccount extends Account { private double overdraftLimit; // 透支限度


public CreditCardAccount(String accountNumber, double overage,
double annualInterestRate, double overdraftLimit) {
super(accountNumber, overage, annualInterestRate);
this.overdraftLimit = overdraftLimit;
}
public double getOverdraftLimit() {
return this.overdraftLimit;
}
public void setOverdraftLimit(double overdraftLimit) {
// 透支限度必须为零和正数,否则为零。
this.overdraftLimit = overdraftLimit >= 0 ? overdraftLimit : 0;
}
public CreditCardAccount(String accountNumber, double overage,
double annualInterestRate) {
super(accountNumber, overage, annualInterestRate);
}
@Override
public boolean drawMoney(double money) {
// 如果账户余额 + 透支限度的总金额仍不足,则不能取款
if (this.overage + this.overdraftLimit < money)
return false;
// 否则从账户余额中扣除相应的金额
this.overage -= money;
return true;
}}
------------------------------------------

public class Test {
public static void main(String[] args) {

// 创建一个不能透支的借记卡账户。
System.out.println("------------ 借记卡账户 ------------");
DebitCardAccount debitCardAccount = new DebitCardAccount("CHK20100117001", 100, 0.02);
// 初始余额有100元,调用并打印取90元和取120元的结果。
System.out.println("取90元的结果:" + debitCardAccount.drawMoney(90));
// 重新存入90元
debitCardAccount.depositMoney(90);
System.out.println("取120元的结果:" + debitCardAccount.drawMoney(120));

// 创建一个可以透支的信用卡账户。
System.out.println("------------ 信用卡账户 ------------");
CreditCardAccount crebitCardAccount = new CreditCardAccount("CHK20100117002", 100, 0.03, 50);
// 初始余额有100元,并且透支限度为50元,调用并打印取90元、取120元和取160元的结果。
System.out.println("取90元的结果:" + crebitCardAccount.drawMoney(90));
// 重新存入90元
crebitCardAccount.depositMoney(90);
System.out.println("取120元的结果:" + crebitCardAccount.drawMoney(120));
// 重新存入120元
crebitCardAccount.depositMoney(120);
System.out.println("取160元的结果:" + crebitCardAccount.drawMoney(160));

}

}
-------------------------------------- 在我机器上的测试打印结果为: ------------ 借记卡账户 ------------
取90元的结果:true
取120元的结果:false
------------ 信用卡账户 ------------
取90元的结果:true
取120元的结果:true
取160元的结果:false ----------------------------------------- 这个题目只是简单考查了下封装、继承、多态三大面向对象特性,我提供的代码仅作参考。 如果你懒得复制,想要程序源代码文件或有不明白的地方,可以发邮件到我QQ邮箱,我再回给你。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
要使洗过的衣服尽快变干,请写出四种有效的办
悦字的部首是()除去部首还剩()画组词()
中国的餐馆很少做到像麦当劳这样的主要原因
电影《不许动》观后感
奔驰c2oo电池装在什么位置?
佛教比丘怎样续七衣?
我想问,三阶魔方二十秒以内的有多少人?
哪个数比64少一些,59和63选哪个
合肥国营棉纺织厂有几家
张宏每个雨节省20零花钱,请把表填下来
锐志2.5S和2.5V的区别在哪里
现在有业余的搏击散打比赛吗,怎么参加
至惠商城瑞士机298元取消订单不要你们商城的
邓州市小杨营乡中学地址在什么地方,想过去办
止字开头成语接龙
推荐资讯
究竟美林湖怡景湾能不能拿房产证
psp2000 音乐播放
从燕京航城到北京西火车站要多长时间
两个时间相减,如果有个时间超过24小时了,比
Children love playing games. That is a wel
舌字加一笔是什么字
卓娅和舒垃的故事
新陈代谢是什么意思啊?
这个说是翡翠边角料.A货.大概多少钱.证书在图
求一篇英语对话,在电话中讨论周末做什么的!
某计算机字长32位,存储容量为4MB,若按字编
幼升小:父母双方户口不在一起,怎么入学
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?