鱼C论坛

 找回密码
 立即注册
查看: 1886|回复: 3

救救孩子吧!

[复制链接]
发表于 2023-10-24 19:41:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.设计一个类BankCard,模拟完成银行卡的基本功能。银行卡的属性有:卡号(cardNo)、密码(password)、余额(balance)、姓名(name)、身份证号(uid)。银行卡的基本功能有:存款(deposit)、取款(drawMoney)、修改密码(changePwd)、查询余额(getBalance)、查询姓名(getName)、查询密码(getPassword)、银行卡办理(BankCard)以及显示银行卡信息(toString)。要求:然后根据类图设计BankCard类。然后利用面向对象中继承和多态的思想,完善银行卡类的设计,扩展其属性和方法,满足多人在多家银行办理多张银行卡的业务需求,使其更接近实际应用场景。具体要求如下:
(1)保证每张银行卡的卡号不同,实现不同银行卡之间跨行转账。
(2)实现办理空卡、银行开户以及开户时同时存钱。
(3)实现银行卡的密码长度都是6位数字的限制。
(4)存款和取款时,实现存入的金额不能为负数。
(5)实现修改密码、取款、存款之前先验证密码。
(6)编程实现中国工商银行、贵州银行、贵州农商银行的银行卡。
(7)编写一个测试类,实现实现各类银行卡对象的创建,并调用其成员方法实现存款、取款、查余额、查密码、转账等功能。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-24 19:43:17 | 显示全部楼层
首先,我们需要设计一个BankCard类,满足题目中给出的要求。以下是BankCard类的设计:

  1. public class BankCard {
  2.     private String cardNo; // 卡号
  3.     private String password; // 密码
  4.     private double balance; // 余额
  5.     private String name; // 姓名
  6.     private String uid; // 身份证号

  7.     public BankCard(String cardNo, String password, double balance, String name, String uid) {
  8.         this.cardNo = cardNo;
  9.         this.password = password;
  10.         this.balance = balance;
  11.         this.name = name;
  12.         this.uid = uid;
  13.     }

  14.     public String getCardNo() {
  15.         return cardNo;
  16.     }

  17.     public String getPassword() {
  18.         return password;
  19.     }

  20.     public double getBalance() {
  21.         return balance;
  22.     }

  23.     public String getName() {
  24.         return name;
  25.     }

  26.     public String getUid() {
  27.         return uid;
  28.     }

  29.     public void deposit(double amount) {
  30.         if (amount >= 0) {
  31.             balance += amount;
  32.             System.out.println("存款成功");
  33.         } else {
  34.             System.out.println("存款金额不能为负数");
  35.         }
  36.     }

  37.     public void drawMoney(double amount) {
  38.         if (amount >= 0) {
  39.             if (amount <= balance) {
  40.                 balance -= amount;
  41.                 System.out.println("取款成功");
  42.             } else {
  43.                 System.out.println("余额不足");
  44.             }
  45.         } else {
  46.             System.out.println("取款金额不能为负数");
  47.         }
  48.     }

  49.     public void changePwd(String oldPwd, String newPwd) {
  50.         if (password.equals(oldPwd)) {
  51.             if (newPwd.length() == 6 && newPwd.matches("\\d+")) {
  52.                 password = newPwd;
  53.                 System.out.println("密码修改成功");
  54.             } else {
  55.                 System.out.println("新密码必须为6位数字");
  56.             }
  57.         } else {
  58.             System.out.println("原密码错误");
  59.         }
  60.     }

  61.     public void getBalance() {
  62.         System.out.println("当前余额为:" + balance);
  63.     }

  64.     public void getName() {
  65.         System.out.println("姓名:" + name);
  66.     }

  67.     public void toString() {
  68.         System.out.println("卡号:" + cardNo);
  69.         System.out.println("密码:" + password);
  70.         System.out.println("余额:" + balance);
  71.         System.out.println("姓名:" + name);
  72.         System.out.println("身份证号:" + uid);
  73.     }
  74. }
复制代码


接下来,我们需要实现中国工商银行、贵州银行、贵州农商银行的银行卡。我们可以通过继承BankCard类来实现:

  1. public class ICBCBankCard extends BankCard {
  2.     public ICBCBankCard(String cardNo, String password, double balance, String name, String uid) {
  3.         super(cardNo, password, balance, name, uid);
  4.     }
  5. }

  6. public class GuizhouBankCard extends BankCard {
  7.     public GuizhouBankCard(String cardNo, String password, double balance, String name, String uid) {
  8.         super(cardNo, password, balance, name, uid);
  9.     }
  10. }

  11. public class GuizhouRuralBankCard extends BankCard {
  12.     public GuizhouRuralBankCard(String cardNo, String password, double balance, String name, String uid) {
  13.         super(cardNo, password, balance, name, uid);
  14.     }
  15. }
复制代码


最后,我们可以编写一个测试类来创建各类银行卡对象,并调用其成员方法实现存款、取款、查余额、查密码、转账等功能:

  1. public class BankCardTest {
  2.     public static void main(String[] args) {
  3.         BankCard icbcCard = new ICBCBankCard("123456", "123456", 1000.0, "张三", "1234567890");
  4.         BankCard guizhouBankCard = new GuizhouBankCard("654321", "123456", 2000.0, "李四", "0987654321");
  5.         BankCard guizhouRuralBankCard = new GuizhouRuralBankCard("987654", "123456", 3000.0, "王五", "5678901234");

  6.         icbcCard.deposit(500.0);
  7.         guizhouBankCard.drawMoney(1000.0);
  8.         guizhouRuralBankCard.changePwd("123456", "654321");
  9.         icbcCard.getBalance();
  10.         guizhouBankCard.getName();
  11.         guizhouRuralBankCard.toString();
  12.     }
  13. }
复制代码


以上就是根据题目要求设计的BankCard类及其子类,并编写的测试类。通过测试类,我们可以创建不同银行的银行卡对象,并调用其方法完成各种操作。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-24 19:45:17 | 显示全部楼层
怎么实现每张卡都不同呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-29 17:47:52 | 显示全部楼层
isdkz 发表于 2023-10-24 19:43
首先,我们需要设计一个BankCard类,满足题目中给出的要求。以下是BankCard类的设计:

类图怎么写?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 00:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表