用JAVA编程设计一个银行账户类,其中包括以下内容,并用字符界面模拟存款和取款过程。

用JAVA编程设计一个银行账户类,其中包括以下内容,并用字符界面模拟存款和取款过程。,第1张

import java.util.Scanner

public class ZH {

private String zh//账户

 private String password//密码

 private String openTime//开户时间

 private String sfz//身份z号

 private double je//存款金额

 public String getZh() {

  return zh

 }

 public void setZh(String zh) {

  this.zh = zh

 }

 public String getPassword() {

  return password

 }

 public void setPassword(String password) {

  this.password = password

 }

 public String getOpenTime() {

  return openTime

 }

 public void setOpenTime(String openTime) {

  this.openTime = openTime

 }

 public String getSfz() {

  return sfz

 }

 public void setSfz(String sfz) {

  this.sfz = sfz

 }

 public double getJe() {

  return je

 }

 public void setJe(double je) {

  this.je = je

 }

 

 //存款方法

 public void ck(double je){

  this.je=this.je+je//存入的金额加上原有的金额

 }

 

 //取款方法

 public void qk(double je){

  if(je>this.je){//取款金额大于余额

   System.out.println("存款余额不足")

  }else{

   this.je=this.je-je//原有的金额减去取出的金额

  }

 }

 public static void main(String[] args) {

  ZH zh = new ZH()//初始化一个账户信息

  zh.setJe(10000.0)//向zh账户添加余额

  zh.setOpenTime("2013.12.3")//向zh账户添加开发时间

  zh.setPassword("123456")//向zh账户添加密码

  zh.setSfz("123456789")//向zh账户添加身份z

  zh.setZh("zhangsan")//向zh账户添加账号

  System.out.println("欢迎光临模拟银行")

  Scanner scan = new Scanner(System.in)

  int count=0//记录输入错误的次数

  while(1==1){//循环

   System.out.println("请输入账号")

   String zhm=scan.next()

   System.out.println("请输入密码")

   String mm=scan.next()

   if(zhm.equals(zh.getZh()) &&mm.equals(zh.getPassword())){//输入的信息与zh账户信息的密码和账号一致

    while(1==1){

     System.out.println("当前余额为:"+zh.getJe()+"元。请选择 *** 作:1.存款;2.取款;3.退出(只能输入数字)")

     String cz=scan.next()

     switch (Integer.parseInt(cz)) {

     case 1:

      System.out.println("请输入存款金额(输入小数)")

      double ckje=scan.nextDouble()

      zh.ck(ckje)

      System.out.println("实施存款:"+ckje+"元,当前余额为"+zh.getJe()+"元")

      break

     case 2:

      System.out.println("请输入取款金额(输入小数)")

      double qkje=scan.nextDouble()

      zh.qk(qkje)

      System.out.println("实施取款:"+qkje+"元,当前余额为"+zh.getJe()+"元")

      break

     case 3:

      break

     default:

      System.out.println("暂无此功能")//输入1或者2、3以外的 *** 作

      break

     }

     if("3".equals(cz)){

      break

     }

    }

    System.out.println("退出 *** 作")

    break

   }else{

    

    if(count>=3){

     System.out.println("已输入错误三次,账号被锁")

     break//结束循环

    }else{

     System.out.println("账号或密码错误,请重新输入")

     count++//错误一次count+1

     continue//进入下次循环

    }

   }

  }

  

 }

}

我帮你一共写了四个类,一个账户Account类,两个账户类的子类(xyk账户CreditCardAccount类和借记卡DebitCardAccount类),另外再加上一个演示透支效果测试Test类。 代码贴在下面:

/**

* 账户类。

*

* @author CodingMouse

* @version 1.0

*/

public abstract class Account { protected String accountNumber // 账号

protected double overage// 余额

protected double annualInterestRate // 年利率

/**

* 参数化构造器方法。

*

* 用于开户。

* @param accountNumber 预设账号

* @param overage 初始余额

* @param 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

}

/**

* 查询账号。

* @return 返回账号。

*/

public String getAccountNumber() {

return this.accountNumber

}

/**

* 设置账号。

* @param accountNumber 新账号。

*/

public void setAccountNumber(String accountNumber) {

this.accountNumber = accountNumber

} /**

* 查询余额方法。

* @return 返回账户余额。

*/

public double getOverage() {

return this.overage

} /**

* 存款方法。

* @param money 要存入的金额。

* @return 返回true时存款成功,否则存款失败。

*/

public boolean depositMoney(double money) {

// 如果金额小于零,则不能存款

if (money <= 0)

return false

// 否则将相应的金额累加到账户余额中

this.overage += money

return true

}

/**

* 取款方法。

*

* 默认不能透支。

* @param money 要取出的金额。

* @return 返回true时取款成功,否则取款失败。

*/

public boolean drawMoney(double money) {

// 如果账户余额不足,则不能取款

if (this.overage <money)

return false

// 否则从账户余额中扣除相应的金额

this.overage -= money

return true

} /**

* 查询年利率。

* @return 返回年利率。

*/

public double getAnnualInterestRate() {

return this.annualInterestRate

} /**

* 设置年利率。

* @param annualInterestRate 新的年利率。

*/

public void setAnnualInterestRate(double annualInterestRate) {

this.annualInterestRate = annualInterestRate

}

}

--------------------------------------------------

/**

* 借记卡账户。

*

* 不能透支。

* @author CodingMouse

* @version 1.0

*/

public class DebitCardAccount extends Account { /**

* 重写父类构造器。

* @param accountNumber 预设账号

* @param overage 初始余额

* @param annualInterestRate 预设年利率

*/

public DebitCardAccount(String accountNumber, double overage,

double annualInterestRate) {

super(accountNumber, overage, annualInterestRate)

}}

-------------------------------------------------

/**

* xyk账户。

*

* 可以透支。

* @author CodingMouse

* @version 1.0

*/

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

/**

* 重载构造器。

*

* 便于构建可透支的xyk账户实例。

* @param accountNumber 预设账号

* @param overage 初始余额

* @param annualInterestRate 预设年利率

* @param overdraftLimit 透支限度

*/

public CreditCardAccount(String accountNumber, double overage,

double annualInterestRate, double overdraftLimit) {

super(accountNumber, overage, annualInterestRate)

this.overdraftLimit = overdraftLimit

} /**

* 查询透支限度的方法。

* @return 透支限度金额。

*/

public double getOverdraftLimit() {

return this.overdraftLimit

} /**

* 设置透支限度的方法。

* @param overdraftLimit 新的透支限度金额。

*/

public void setOverdraftLimit(double overdraftLimit) {

// 透支限度必须为零和正数,否则为零。

this.overdraftLimit = overdraftLimit >= 0 ? overdraftLimit : 0

} /**

* 重写父类构造器。

* @param accountNumber 预设账号

* @param overage 初始余额

* @param annualInterestRate 预设年利率

*/

public CreditCardAccount(String accountNumber, double overage,

double annualInterestRate) {

super(accountNumber, overage, annualInterestRate)

} /**

* 重写父类取款方法。

*

* 将默认不能透支的取款改为可以透支的取款。

* @param money 要取出的金额。

* @return 返回true时取款成功,否则取款失败。

*/

@Override

public boolean drawMoney(double money) {

// 如果账户余额 + 透支限度的总金额仍不足,则不能取款

if (this.overage + this.overdraftLimit <money)

return false

// 否则从账户余额中扣除相应的金额

this.overage -= money

return true

}}

------------------------------------------

/**

* 测试账户使用。

*

* @author CodingMouse

* @version 1.0

*/

public class Test { /**

* 主程序方法。

* @param args 入口参数。

*/

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))

// 创建一个可以透支的xyk账户。

System.out.println("------------ xyk账户 ------------")

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

------------ xyk账户 ------------

取90元的结果:true

取120元的结果:true

取160元的结果:false ----------------------------------------- 这个题目只是简单考查了下封装、继承、多态三大面向对象特性,我提供的代码仅作参考。 如果你懒得复制,想要程序源代码文件或有不明白的地方,可以发邮件到我QQ邮箱,我再回给你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11461438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存