• 需要ATM机类,该类完成主菜单的相关操作,在取钱和转账时,需判断余额情况

要求:实现数据持久化存储(方式不限)

  • 根据自身需要看是否要创建BankCard银行卡类,如需创建,可以直接用以下属性:

创建模拟ATM银行类实现各种功能

package cn.zuoye;import java.io.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** 该类完成主菜单的相关操作,在取钱和转账时,需判断余额情况*/
public class ATM {private BankCard bankCard;//卡槽private BankCard bankCard2;//收款账号Scanner scanner = new Scanner(System.in);/*** 登录ATM*/public void login(){System.out.println("*****************");System.out.println("*** 欢迎使用ATM **");System.out.println("*****************");System.out.println("请输入卡号:");String account = new Scanner(System.in).next();System.out.println("请输入密码:");String password = new Scanner(System.in).next();//如果正确了就继续使用try {BufferedReader br = new BufferedReader(new FileReader("data.txt"));String s = null;while((s=br.readLine())!=null){//把读取到的一行数据(一个账户信息)获取账号和密码字段,判断是否正确String[] arr = s.split(",");//2022001,123456,2000,中国银行,令狐冲if(account.equals(arr[0]) && password.equals(arr[1])){System.out.println("-->登录成功!!");BankCard bankCard = new BankCard();bankCard.setAccount(arr[0]);bankCard.setPassword(arr[1]);bankCard.setBalance(Double.parseDouble(arr[2]));bankCard.setBankName(arr[3]);bankCard.setName(arr[4]);this.bankCard=bankCard;//卡连接到卡槽main();//登录成功后,进入ATM操作菜单break;}}br.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}if(this.bankCard==null){System.out.println("--警告:登录失败");login();}}/*** 菜单*/private void main() {while(true){System.out.println("**********❤ ❤ ❤ ❤**********");System.out.println("******❤请输入你想要操作类型❤****");System.out.println("*****❤1.余额查询  2.取款❤******");System.out.println("*****❤3.存款     4.转账❤******");System.out.println("*****❤5.打印     6.退卡❤******");System.out.println("*****❤7.查询转账信息❤*********");System.out.println("**********❤ ❤ ❤ ❤**********");//选择执行功能int key = new Scanner(System.in).nextInt();switch (key){case 1:this.balanceSearch();break; //余额查询case 2:this.withdrawMoney();break; //取款case 3:this.deposit();break; //存款case 4:this.transferAccounts();break; //转账case 5:this.print();break; //打印case 6://把数据更新到data.txt文件中dataUpdate();System.exit(0); //退卡case 7:this.searchTransferAccounts();break; //查询转账信息}}}/*** 更新数据*/private void dataUpdate() {List<String> list = new ArrayList<>();try {BufferedReader br = new BufferedReader(new FileReader("data.txt"));String s = null;while((s=br.readLine())!=null){//把读取到的一行数据(一个账户信息)获取账号和密码字段,判断是否正确String[] arr = s.split(",");//2022001,123456,2000,中国银行,令狐冲if(this.bankCard.getAccount().equals(arr[0])){list.add(this.bankCard.getAccount()+","+this.bankCard.getPassword()+","+this.bankCard.getBalance()+","+this.bankCard.getBankName()+","+this.bankCard.getName());}else if(this.bankCard2!=null && this.bankCard2.getAccount().equals(arr[0])){list.add(this.bankCard2.getAccount()+","+this.bankCard2.getPassword()+","+this.bankCard2.getBalance()+","+this.bankCard2.getBankName()+","+this.bankCard2.getName());}else {list.add(s);}}br.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}try {//写入文件BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"));for (String s:list) {bw.write(s);bw.newLine();}bw.close();} catch (IOException e) {e.printStackTrace();}}private void searchTransferAccounts() {}private void print() {}/*** 转账*  把钱转到另一个账号*/private void transferAccounts() {System.out.println("请输入收款卡号");String account = scanner.next();//收款账号System.out.println("请输入转账金额");double money = scanner.nextDouble();//转多少钱//从data.txt查询收款卡号的信息try {BufferedReader br = new BufferedReader(new FileReader("data.txt"));String s = null;while((s=br.readLine())!=null){//把读取到的一行数据(一个账户信息)获取账号和密码字段,判断是否正确String[] arr = s.split(",");//2022001,123456,2000,中国银行,令狐冲if(account.equals(arr[0])){System.out.println("-->收款账号存在!!");BankCard bankCard = new BankCard();bankCard.setAccount(arr[0]);bankCard.setPassword(arr[1]);bankCard.setBalance(Double.parseDouble(arr[2]));bankCard.setBankName(arr[3]);bankCard.setName(arr[4]);this.bankCard2=bankCard;//收款银行卡break;}}br.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}if(this.bankCard2==null){System.out.println("收款卡号不存在!!!转账失败");return;}//收款账号,收款账号要+钱this.bankCard2.setBalance(this.bankCard2.getBalance()+money);//当前账号,要-钱this.bankCard.setBalance(this.bankCard.getBalance()-money);DecimalFormat df = new DecimalFormat("0.0");String balance = df.format(this.bankCard.getBalance());System.out.println("当前余额为 "+balance);dataUpdate();//转账后直接写入this.bankCard2=null;}/*** 存款*/private void deposit() {}/*** 取款*/private void withdrawMoney() {System.out.println("*****请选择你要操作菜单的序号*****");System.out.println("*****1.100                        2.200****");System.out.println("*****3.500                        4.800****");System.out.println("*****5.1000                      6.2000***");System.out.println("*****7.其它                       8.返回****");int key = scanner.nextInt();double money=0;if(key==1){money=100;}else if(key==2){money=200;}else if(key==3){money=500;}else if(key==4){money=800;}else if(key==5){money=1000;}else if(key==6){money=2000;}else if(key==7){money=scanner.nextInt();}else if(key==8){return;}this.bankCard.setBalance(this.bankCard.getBalance()-money);DecimalFormat df = new DecimalFormat("0.0");String balance = df.format(this.bankCard.getBalance());System.out.println("当前余额为 "+balance);}/*** 余额查询*/private void balanceSearch() {DecimalFormat df = new DecimalFormat("0.0");String balance = df.format(this.bankCard.getBalance());System.out.println("当前账户余额为:"+balance);}public BankCard getBankCard2() {return bankCard2;}public void setBankCard2(BankCard bankCard2) {this.bankCard2 = bankCard2;}public BankCard getBankCard() {return bankCard;}public void setBankCard(BankCard bankCard) {this.bankCard = bankCard;}
}

创建BankCard类设置属性及构造方法、set、get等方法

package cn.zuoye;/*** 银行卡*/
public class BankCard {private String account;  //账号private String password; //密码private double balance;  //余额private String bankName; //银行卡名字private String name;     //持卡人姓名@Overridepublic String toString() {return "BankCard{" +"account='" + account + '\'' +", password='" + password + '\'' +", balance=" + balance +", bankName='" + bankName + '\'' +", name='" + name + '\'' +'}';}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}public String getBankName() {return bankName;}public void setBankName(String bankName) {this.bankName = bankName;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

测试Demo01类

package cn.zuoye;import jdk.internal.org.objectweb.asm.tree.MultiANewArrayInsnNode;public class Demo01 {public static void main(String[] args) {ATM atm = new ATM();atm.login();}
}

模拟银行取款,存款,转账,余额查询等功能7-19相关推荐

  1. 模拟银行ATM存款存取款的相关功能

    模拟银行ATM存款存取款的相关功能 具体需求: 模拟.3张银行卡,1001,1002,1003,分别设置密码和余额(可以用9个变里分别保存卡号.密码和余额) 提示用户输入银行卡和密码 如果用户输入正确 ...

  2. python循环案例:模拟银行ATM存款取款

    案例:模拟银行ATM存款取款 1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式): 2.提示用户输入银行卡和密码,遍历每张卡的信息验证是否成功: 3.如果用 ...

  3. python循环结构练习(五)—— 模拟银行ATM存款取款

    一. 场景描述案例:模拟银行ATM存款取款 1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式): 2.提示用户输入银行卡和密码,遍历每张卡的信息验证是否成功 ...

  4. shell模拟银行取款功能流程脚本

    文章目录 介绍 执行效果 脚本 普通版 优化版 介绍 模拟功能:登录.查询.提现.转账.存款.清屏.退出 登录次数限制:3次错误强制退出程序 登录用户1:zzp/123 登录用户2:cj/456 执行 ...

  5. 模拟银行转账取款存款

    class BankClerk{ //银行对象public void open(Customer c,Account a){c.account=a;} }public class Method_Exe ...

  6. 多线程三种同步方式(模拟银行取款)

    方法一:同步代码块 Accoun package com.bjsxt.synch1;/*** 银行账户类*/ public class Account {private int balance = 6 ...

  7. java线程模拟银行取款_多线程模拟银行取款

    packagetestsynchrozied;/*** 功能:多个用户同时对一个账户取款 * 使用线程的同步 * * 1.设计一个账户类 余额,取款,显示余额 * 2.取款的线程 * 3.用户同时取款 ...

  8. java模拟银行账户业务转账_模拟银行账户汇款操作(并发控制)

    import java.util.Arrays; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Tim ...

  9. java多线程银行取钱_用java线程同步实现银行取款和存款。

    题目是:编写程序实现线程的同步.假设一个银行的ATM机,它可以允许用户存款也可以取款.现在一个账户上有200元,用户A和用户B都拥有在这个账户上存款和取款的权利.用户A将存入100元... 题目是:编 ...

最新文章

  1. linux更换网卡不识别_详解Linux双网卡绑定脚本的方法示例
  2. CTF-练习平台-WEB之 签到题
  3. ALV报表复制程序标准工具栏
  4. Qt Creator导出3D资产Exporting 3D Assets
  5. 07.十分钟学会tomcat数据源
  6. mysql 中 and和or 一起使用和之间的优先级
  7. StringUtils详细介绍
  8. 华为云基于云原生媒体网络,又出重磅新品
  9. 在Blazor中构建数据库应用程序——第1部分——项目结构和框架
  10. 如何仅用300行代码完成spring基本框架?
  11. java 多线程 6 : 同步锁(Lock)
  12. 404为什么是404?
  13. 【Unity】制作简易三维场景
  14. NXP LPC芯片程序下载
  15. 如何利用Python实现自动打卡签到
  16. 建立数据驱动,关键字驱动和混合Selenium框架这些你了解吗
  17. python+selenium实战之无限评论
  18. QUALCOMM MDM9X15 LCD初始化流程
  19. Android View详解(三) 视图状态及重绘流程分析
  20. 跟我学ABAP/4-初识ABAP

热门文章

  1. HTML 5 video 视频标签全属性详解(转)
  2. wow转服务器微信支付,魔兽世界经典旧世怀旧服 付费角色转移服务现已开启
  3. Flask有线打印机转无线打印机(电脑和手机)
  4. linux mount 指定用户名,mount命令怎么用?Linux版mount命令完全使用手册
  5. 7、【斯纳克学生微信在线缴费平台】手机端解除绑定学生
  6. 利用喜欢的字给小孩取名
  7. 诚风老师-直销十三步走
  8. android 摇一摇动画效果,Android实现微信摇一摇功能
  9. Rapidshare搜索引擎大全
  10. 今麦郎VS五谷道场:闯入者的天堂与地狱