功能实现

此案例可以实现简单的,银行卡注册,登录,以及登陆后,实现存钱、取钱(可跨银行)、以及存取操作完成后的查询余额功能。

1.定义一个Bank类,需要定义银行卡类型,容量;

    public class Bank {private BankCard[]cards;private int size;//给定银行容量private final int INITCAPACITY;public Bank(){cards = new BankCard[10];size = 0;INITCAPACITY = 10;}}

2.定义一个bankCard类,定义id,密码(password),以及存、取的钱数;

    public class BankCard {private int id;private int passwd;private int money;public BankCard(int id,int passwd){this.id =id;this.passwd = passwd;this.money = 0;}
}

3.定义一个ATM类,这里我们定义两个银行,分别在此类中实现银行卡的注册、登录,以及登录成功后的、取、查询余额的功能;

public class ATM {private Bank bankGS;private Bank bankNH;public ATM() {bankGS = new Bank();bankNH = new Bank();}//此类实现登录,注册银行卡功能public void operator() {}//此类实现1.存钱 2.取钱 3.转账 4.查余额 5.退卡 功能private void loginSuccessOperator(BankCard card) {}

代码实现

Bank类:

public class Bank {private BankCard[]cards;private int size;//给定银行容量private final int INITCAPACITY;public Bank(){cards = new BankCard[10];size = 0;INITCAPACITY = 10;}public BankCard[] getCards(){return cards;}//确保卡容量足够,若不够需要扩容;private void ensureCapacity(int capacity){if(capacity == cards.length){cards = Arrays.copyOf(cards,cards.length+(cards.length>>1));}}public void add(BankCard card){ensureCapacity(size);cards[size] = card;size++;}public int getSize(){return size;}
}

bankCard类:

public class BankCard {private int id;private int passwd;private int money;public BankCard(int id,int passwd){this.id =id;this.passwd = passwd;this.money = 0;}public int getId() {return id;}public int getPasswd() {return passwd;}//定义 存钱 取钱public void saveMoney(int money){this.money+=money;}public void withdraw(int money){//取钱的数要大于初始数if(this.money >= money) {this.money -= money;}else{System.out.println("取钱失败");}}public int getMoney(){return money;}
}

ATM类:

public class ATM {//定义两个银行 工商  农行private Bank bankGS;private Bank bankNH;public ATM() {bankGS = new Bank();bankNH = new Bank();}//搜索卡,若找到则返回卡private BankCard searchCard(Bank bank, int id, int passwd) {BankCard[] arr = bank.getCards();for (int i = 0; i < bank.getSize(); i++) {if (arr[i].getId() == id && arr[i].getPasswd() == passwd) {return arr[i];}}return null;}//登录(在两个银行分别实现登录)private BankCard login(String bankName, int id, int passwd) {if (bankName.equals("农业银行")) {return searchCard(bankNH, id, passwd);} else if (bankName.equals("工商银行")) {return searchCard(bankGS, id, passwd);}return null;}//实现注册功能private BankCard register(String bankName, int id, int passwd) {//是否之前以注册了这张卡,若存在则注册失败BankCard card = new BankCard(id, passwd);if (bankName.equals("农业银行")) {//这里需要用到搜索功能类,查找卡BankCard searchCard = searchCard(bankNH, id, passwd);if (searchCard != null) {System.out.println("注册失败");return null;}bankNH.add(card);}if (bankName.equals("工商银行")) {BankCard searchCard = searchCard(bankGS, id, passwd);if (searchCard != null) {System.out.println("注册失败");return null;}bankGS.add(card);}return card;}//操作(登录,注册)public void operator() {while (true) {System.out.println("1.登陆  2.注册  3.退出");Scanner scanner = new Scanner(System.in);int chioce = scanner.nextInt();//退出直接返回if (chioce == 3) {return;}System.out.println("请输入银行名:农业银行or工商银行");String bankName = scanner.next();System.out.println("请输入账号:");int id = scanner.nextInt();System.out.println("请输入密码:");int passwd = scanner.nextInt();switch (chioce) {case 1://登录BankCard successCard = login(bankName, id, passwd);if (successCard != null) {//登录成功后的功能loginSuccessOperator(successCard);} else {System.out.println("登陆失败");}break;case 2://注册BankCard card = register(bankName, id, passwd);if (card != null) {System.out.println("注册成功");} else {System.out.println("注册失败");}break;}}}//登录成功后 实现存、取、转账、查余额功能private void loginSuccessOperator(BankCard card) {while (true) {System.out.println("1.存钱 2.取钱 3.转账 4.查余额 5.退卡");Scanner scanner = new Scanner(System.in);int chioce = scanner.nextInt();//退卡,直接返回if (chioce == 5) {return;}switch (chioce) {//存钱case 1:System.out.println("输入存款金额:");int money = scanner.nextInt();card.saveMoney(money);break;//取钱case 2:System.out.println("输入取款金额:");money = scanner.nextInt();card.withdraw(money);break;//转账case 3:transfer(card);break;//查询余额case 4:System.out.println("当前余额:" + card.getMoney());break;}}}//实现转账功能private void transfer(BankCard card) {Scanner scanner = new Scanner(System.in);System.out.println("请输入转账银行名:");String bankName = scanner.next();System.out.println("请输入转账用户id:");int id = scanner.nextInt();if (bankName.equals("农业银行")) {BankCard[] arr = bankNH.getCards();//获取转账用户的id,只有找到才实现转账功能for (int i = 0; i < bankNH.getSize(); i++) {if (arr[i].getId() == id) {System.out.println("转账金额 :");int money = scanner.nextInt();//若转账金额足够,此卡钱减少(取钱),转账的卡钱增加(存钱)if (money <= card.getMoney()) {card.withdraw(money);arr[i].saveMoney(money);} else {System.out.println("转账失败");}}}}if (bankName.equals("工商银行")) {BankCard[] arr = bankGS.getCards();for (int i = 0; i < bankGS.getSize(); i++) {if (arr[i].getId() == id) {System.out.println("转账金额:");int money = scanner.nextInt();if (money <= card.getMoney()) {card.withdraw(money);arr[i].saveMoney(money);} else {System.out.println("转账失败");}}}}}
}

测试代码:

public class TestDome {public static void main(String[] args) {ATM atm = new ATM();atm.operator();}
}

运行结果:

这里我们注册了一个农业银行 id为111的卡,给其中存入1000,一个工商银行id为222的卡;111的卡转账580给222的卡 最后的查询余额结果(由于图太长,这里截取一部分)

农业银行 id为111的卡,给其中存入1000,转账580后的余额:

111卡转账后,登录222卡后查询余额 :

【Java】简单银行案例实现相关推荐

  1. java面向对象银行案例_Java程序设计-面向对象分析案例:银行储蓄系统.ppt

    面向对象分析 1 基本过程 2 需求陈述 3 建立对象模型 4 建立动态模型 5 建立功能模型 6 定义服务 1 面向对象分析的基本过程 在面向对象建模的过程中,系统分析员必须认真向领域专家学习. 在 ...

  2. Java网络编程案例--CS模型的简单实现

    Java网络编程案例–CS模型的简单实现 Java网络编程案例CS模型的简单实现 基本概述 程序原理图 源代码 基本概述 该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传 ...

  3. 2.JAVA简单实现银行账户存取钱

    JAVA简单实现银行账户存取钱 文章目录 题目重述 问题分析以及求解思路 程序代码 题目重述 定义一个银行帐户类BankAccount实现银行帐户的概念,在BankAccount类中定义两个变量:&q ...

  4. java打印输出万年历_Java基础之打印万年历的简单实现(案例)

    Java基础之打印万年历的简单实现(案例) 问题:输入年,月,打印对应年月的日历. 示例: 问题分析: 1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星 ...

  5. java简单atm_Java实现简单银行ATM功能

    本文实例为大家分享了Java实现简单银行ATM功能的具体代码,供大家参考,具体内容如下 实现功能 1.用户需要通过输入银行卡号和密码才能进入ATM系统 2.用户可以在ATM中实现取款.存款.转账.余额 ...

  6. java内存泄漏案例_寻找内存泄漏:一个案例研究

    java内存泄漏案例 一周前,我被要求修复一个有内存泄漏问题的webapp. 考虑到过去两年左右的时间里我已经看到并修复了数百个泄漏,我想这有多难. 但是事实证明这是一个挑战. 12小时后,我发现该应 ...

  7. SpringMVC简单小案例

    SpringMVC简单小案例 导入spring-webmvc下的所有包 采用Maven导入 <dependency><groupId>org.springframework&l ...

  8. Java简单设计模式

    Java简单设计模式 V哥官网:http://www.vgxit.com 本博客对应视频教程:http://www.vgxit.com/course/21 1,为什么要学习这门课 我们很多人都喜欢金庸 ...

  9. drools的简单入门案例

    文章目录 一.背景 二.为什么要学习drools 三.实现上方这个简单的打折案例 1.引入jar包 2.编写kmodule.xml配置文件 3.编写规则文件 1.规则文件的语法 2.编写规则文件 3. ...

最新文章

  1. Linux基础(二)--基础的命令ls和date的详细用法
  2. python类_python类和对象
  3. php语言出现弹框 再提交怎么写,jquery/php和多语言确认/警报框
  4. nodejs安装部署与运行
  5. Thread类学习(一)
  6. vue获取编辑器纯文字_vue中使用富文本编辑器
  7. CMake 手册详解(十八)
  8. evolving checkers players [Fogel and Chellapilla, 2002]
  9. 孙鑫VC学习笔记:第十三讲 (四) 生成可串行化的类
  10. 卡夫卡(kafka)详解
  11. 像素,分辨率,PPI(像素密度),BPP 扫盲
  12. SCP,NFS,TFTP的初步认识
  13. 最简单的springboot整合websocket方式
  14. 小程序记账项目源码-采用云开发
  15. Flex布局搭建网页布局更方便
  16. Latex使用技巧:插入动态图
  17. 准确率99.9%!小猿口算靠AI批改数学题,误判率仅为人工1/10,计算填空应用题都能批改...
  18. 地平线发布AI on Horizon战略,与首汽约车、禾赛科技分别达成战略合作 | 2019上海车展...
  19. python实现网页微信登录_网站微信登录-python 实现
  20. oracle存储过程批量导入数据,Oracle 存储过程之批量添加数据

热门文章

  1. 2012第三届蓝桥杯预赛题
  2. 车牌识别github资源
  3. C语言之简单版本银行储蓄系统4(结构体版本)
  4. 【虚拟化与云计算】走进Docker
  5. word转换成pdf,包括导航目录和图片不变黑
  6. CAD中如何绘制带有箭头的引出标注?
  7. 一位老兄看 深圳西安北京上海 大众收入与消费
  8. 【快速上手教程1】疯壳·开源编队无人机-开机测试
  9. dspace安装及应用
  10. macOS 上如何禁用 Adob​​e 后台进程,但保存 CPU、内存和网络活动呢