#ATM系统

##功能

模拟银行ATM机系统,具有注册、登录功能
用户登录后可实现以下功能:
1)存款 2)取款 3)转账 4)查询 5)退出

##设计思路

首先,要进行ATM机操作应该具有银行卡和ATM,所以我们要设计一个ATM类和Bankcard类,ATM具有存取款等操作,Bankcard用来记录用户存取款等操作后的越,其次因为ATM同时为多个用户服务,所以我们应该识别每张卡,这里增加一个Bank类来记录银行卡个数以及各个用户持有哪些银行卡。

##具体代码

###Bank类

import java.util.Arrays;/*** @author:zl* @Date 22:30 2020/10/9*/public class Bank {private BankCard[] cards;private int size;// 有效用户个数private static final int INITSIZE  =10;public Bank(){this(INITSIZE);}public Bank(int num){cards = new BankCard[num];}public boolean add(BankCard card){//如果注册过,增加失败if(contains(card.getID(),card.getPasswd())!=null){return false;}if(size==cards.length){cards= Arrays.copyOf(cards,cards.length>>1);//长度不够时进行扩容}cards[size++] = card;//return true;}public boolean search(int id,int passwd){//查询是否存在这张卡boolean k=true;for(int i=0;i<size;i++){if((cards[i].getID()==id)&&(cards[i].getPasswd()==passwd)){k=true;}else k=false;}return k;}public BankCard contains(int id,int passwd){//查询并返回这张卡BankCard card=null;for(int i=0;i<size;i++){if((cards[i].getID()==id)&&(cards[i].getPasswd()==passwd)){card=cards[i];break;}}return card;}}

###Bankcard类

import java.util.Scanner;public class BankCard {private int id;private int passwd;public int money=0;public  BankCard(int id,int passwd){this.id=id;this.passwd=passwd;}public int getID(){return this.id;}public int getPasswd(){return this.passwd;}/*** 存款*/public void saveMoney(int money){this.money+=money;}/*** 取款*/public boolean withDraw(int money){boolean flag=false;if(this.money>=money){this.money-=money;flag=true;}return flag;}/*** 返回余额* @return*/public int  getMoney(){return this.money;}
}

###ATM类

import java.util.Scanner;
import src3.BankCard;public class ATM {private Bank bank;private static Scanner scanner;public ATM(){bank = new Bank();scanner = new Scanner(System.in);}public void start(){while (true) {System.out.println("1. 登陆 2.注册 3.关机");int chioce = scanner.nextInt();if (chioce == 3) {break;}System.out.println("请输入账号密码");int id = scanner.nextInt();int passwd = scanner.nextInt();BankCard successCard = null;switch (chioce){case 1:successCard = login(id,passwd);if(successCard != null){System.out.println("登陆成功");loginSuccess(successCard);}else{System.out.println("登陆失败");}break;case 2:if(regiter(id,passwd)){System.out.println("注册成功");}else{System.out.println("注册失败");}break;}}}private void loginSuccess(BankCard successCard){while (true) {System.out.println("1. 存款 2.取款 3.转账 4.余额 5.退卡");int chioce = scanner.nextInt();if (chioce == 5) {break;}switch (chioce) {case 1:System.out.println("请输入存款金额");int money = scanner.nextInt();successCard.saveMoney(money);System.out.println("存款成功");break;case 2:System.out.println("请输入取款金额");money = scanner.nextInt();if (successCard.withDraw(money)) {System.out.println("取款成功");} else {System.out.println("取款失败");}break;case 3:System.out.println("请输入转账金额");money = scanner.nextInt();System.out.println("请输入转账用户账号,密码");int id = scanner.nextInt();int passwd = scanner.nextInt();BankCard userCard = bank.contains(id, passwd);if (userCard != null) {if (successCard.withDraw(money)) {// 当前卡取款成功userCard.saveMoney(money);System.out.println("转账成功");} else {System.out.println("余额不足");}} else {System.out.println("没有此用户");}break;case 4:System.out.println("余额:" + successCard.getMoney());break;}}}private boolean regiter(int id,int passwd){BankCard card = new BankCard(id,passwd);return bank.add(card);}private BankCard login(int id,int passwd){return bank.contains(id,passwd);}
}

###测试类

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

java实现简单银行ATM系统相关推荐

  1. 用Java模拟一个银行ATM系统

    用Java模拟一个银行ATM系统 系统功能介绍: 全部代码 示例截图 系统功能介绍: 使用面向对象的编程思想,尽可能模拟真实世界中的银行ATM业务流程. main方法里通过调用一行代码,完成整个业务流 ...

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

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

  3. 银行ATM系统问题陈述与词汇表

    银行ATM系统问题陈述与词汇表 1.问题陈述 1.1问题背景 ATM自动取款机是由计算机控制的持卡人自我服务型的金融专用设备.可以提供最基础的银行服务之一,即出钞交易,同时,作为自助式金融服务终端,除 ...

  4. Java选择题简单的考试系统

    Java选择题简单的考试系统 做前声明: 此系统包括了Java中:面向对象-封装.String-StringBuilder.ArrayList集合.继承-抽象-final.static-接口-多态.四 ...

  5. 银行ATM系统 OOAD

    银行ATM系统 一.问题陈述 随着ATM等自助银行业务所占比重不断加大,各家商业银行自助设备规模快速扩张,而银行自助设备系统建设仍相对滞后.如果银行的ATM系统能够更好地面向客户,满足客户各项需求,那 ...

  6. java毕业设计某银行OA系统某银行OA系统演示2021mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计某银行OA系统某银行OA系统演示2021mybatis+源码+调试部署+系统+数据库+lw java毕业设计某银行OA系统某银行OA系统演示2021mybatis+源码+调试部署+系统 ...

  7. 银行ATM系统——活动图及文档

    一.图形文档 活动图(activity diagram)是描述动作.动作的执行次序以及动作的输入与输出的图,它由动作结点和边构成. 针对银行ATM系统,我设计了五个主要功能的活动图: 1.验证密码活动 ...

  8. 用Java程序模拟银行ATM机,实现包括存款、取款、查询、转账功能的简单应用

    (1)想象现实世界中的相关操作沙及哪些实体呢?一个是储户,一个是ATM机.因 此根据面向对象中的抽象原则,可将其抽象为两个类:代表储户的账户信息类,代表银行 ATM机的ATM类.外加一个主类(负责实例 ...

  9. c语言实现简易的银行ATM系统

    用C做一个简易的ATM系统,代码都有备注,简单易懂. 不多说,代码如下: #include<stdio.h> #include<stdlib.h> #include<st ...

最新文章

  1. 复旦 计算机 学硕 延毕,研究生招考呈现新趋势:非全日制招生遇冷 延期毕业现象越发明显...
  2. 置换 ---- 2020-2021 ICPC NERC 的 K. King‘s Task[置换类型思维题]
  3. php echo中的点是什么?,php编程中echo用逗号和用点号连接的区别,echo逗号_PHP教程...
  4. 人工智障学习笔记——机器学习(2)线性模型
  5. NGINX内容缓存配置
  6. 重构-改善既有的代码设计-------代码的坏味道
  7. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令
  8. Activity与Fragment生命周期
  9. 什么是 Hadoop 生态系统
  10. 项目cookie优化之cookie数量限制和多页面共享污染数据问题
  11. DTCC参会归来有感
  12. npm安装依赖报错:npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\misal\AppData\R
  13. word文档替换技巧(空行替换、空格替换、软回车替换成硬回车)
  14. 基于Qt的在线抢答系统
  15. ssm是java框架吗,大名鼎鼎的SSM是指哪几个开源Java框架?( )
  16. 【JAVA今法修真】 第四章 redis特性 击穿雪崩
  17. 用“法外狂徒”理解C++中的引用
  18. COBIT(cobit框架)
  19. HTML的语义化理解
  20. 音乐精灵 - Bandari

热门文章

  1. MySQL——MySQL安装时初始化出错的解决办法
  2. 立宏安全-5G CPE MN1工业物联采集器-物联网关/4G/5G通讯盒子
  3. 5G工业互联网应用(1)——闭环控制
  4. 【机器学习/数据分析大项目】黑色星期五销售预测(详细报告)
  5. android接入京东开普勒-2017年12月对接
  6. 一个数被异或两次等于没有异或,原理研究
  7. OS系统中swap分区和虚拟内存关系
  8. 如何将销售效果最大化:从人工智能聊天机器人到即时聊天
  9. 微机原理——平方值查表
  10. Cloneable接口以及深拷贝和浅拷贝