时间:2021-05-20
Java模拟ATM机,供大家参考,具体内容如下
实现登录,查询,转账,取款,修改密码,退出功能。
源码
package bank;import java.io.*;import java.util.Scanner;//ATM类public class Atm { private String[] user;//用户全部信息 private double money;//修改钱数 private double userMoney;//用户的钱 private String newPassword; private String userInFo; private int index; private int a =0; private int count = 10; public void show(){//显示界面 index = logIn(); if(index != -1){ working(); } } private String[] newStringUser(String[] str){ count=count+10; String[] newUser = new String[count]; for(int i=0;i<a;i++) newUser[i] = str[i]; return newUser; } private void getUser(){//从文件获取全部用户 String str; String[] strings = new String[count]; File file = new File("src\\bank\\user"); FileReader fileReader = null; BufferedReader bufferedReader = null; try{ fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader); while((str = bufferedReader.readLine())!=null){ if(a<=count) strings[a++] = str; else strings = newStringUser(strings); } user = new String[a]; for(int i=0;i<a;i++) user[i] = strings[i]; strings = null; }catch(Exception e){ e.printStackTrace(); if((fileReader!=null)&&(bufferedReader!=null)){ try { bufferedReader.close(); fileReader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } private int logIn(){//用户登录 getUser(); String name,password,user; String[] a; int i = 0; int number = -1; Scanner input = new Scanner(System.in); a:while(i<3){ System.out.println("请输入用户名:"); name = input.nextLine(); System.out.println("请输入用户密码:"); password = input.nextLine(); user = name + "*" + password; for(int j=0;j<this.user.length;j++){ a = this.user[j].split("\\*"); userInFo = a[0]+"*"+a[1]; if(userInFo.equals(user)){ number = j; break a; } } i++; System.out.println("账户或密码错误请重新输入。。。"); } if(number!=-1){ System.out.println("登录成功"); try{ Thread.sleep(1000); }catch(Exception e){ e.printStackTrace(); } } else System.out.println("您已输入错误三次,卡已被吞!请到银行柜台询问!"); return number; } private int anthorLogin(){//查询转账用户是否存在 Scanner input = new Scanner(System.in); String antherUserName; String[] a; int x=-1; System.out.println("请输入要转账的用户名:"); antherUserName = input.nextLine(); for(int i=0;i<user.length;i++){ a = this.user[i].split("\\*"); if(a[0].equals(antherUserName)){ x=i; break; } } return x; } private void show1(){ System.out.println("**********************"); System.out.println("\t欢迎使用ATM"); System.out.println("1,账户余额查询\n2,存钱\n3,取钱\n4,转账\n5,修改用户密码\n6,退出系统\n"); System.out.println("**********************"); } private void changeUser(int x){//改变用户数组里的数据 String[] str = user[index].split("\\*"); if(x==1) user[index] = str[0]+"*"+newPassword+"*"+str[2]; else user[index] = str[0]+"*"+str[1]+"*"+userMoney; } private void working(){//atm办理的业务 String number; setMoney(); do{ show1(); System.out.println("请输入要办理的业务序号:"); Scanner input = new Scanner(System.in); number = input.nextLine(); switch(number){ case "1": look(); break; case "2": saveMoney(); break; case "3": getMoney(); break; case "4": giveMoney(); break; case "5": changePassword(); break; case "6": System.out.println("欢迎下次光临!"); write(); break; default: System.out.println("您输入有误,请重新输入。。。。"); } }while(!number.equals("6")); } private void setMoney(){ String u = user[index]; userMoney = Double.parseDouble(u.split("\\*")[2]); } private void look(){//办理查看余额业务 System.out.println("用户余额为:"+userMoney); try{ Thread.sleep(2000); }catch(Exception e){ e.printStackTrace(); } } private void saveMoney(){//办理存钱业务 money = howMuch("存钱"); userMoney = userMoney+money; changeUser(2); look(); if(isContinue()) saveMoney(); } private void getMoney(){//办理取钱业务 money = howMuch("取钱"); if(money <= userMoney){ userMoney = userMoney-money; changeUser(2); look(); if(isContinue()) getMoney(); } else System.out.println("您的余额不足!"); } private void giveMoney(){//办理转账业务 int anthorIndex = anthorLogin(); if(anthorIndex!=-1){ money = howMuch("转账"); if(money <= userMoney){ userMoney = userMoney - money; changeUser(2); String anthorUser = user[anthorIndex]; String[] str =anthorUser.split("\\*"); double money1 = Double.parseDouble(str[2]); money = money + money1; user[anthorIndex] = str[0]+"*"+str[1]+"*"+money; System.out.println("转账成功!"); look(); } else System.out.println("您的余额不足!"); } else System.out.println("该用户不存在。。。。"); } private double howMuch(String str){ System.out.println("欢迎办理"+str+"业务。。。。。。"); System.out.println("请输入金额(只能是整数且是100的倍数,最多为10000):"); Scanner input = new Scanner(System.in); double money = input.nextDouble(); if(money%10==0) return money; else{ System.out.println("您输入有误!"); return 0.0; } } private void changePassword(){//办理修改密码业务 System.out.println("请输入新密码:"); Scanner input = new Scanner(System.in); newPassword = input.nextLine(); changeUser(1); System.out.println("密码修改成功!"); } private boolean isContinue(){ System.out.println("是否继续办理该项业务?(请输入Y(y)/N(n))"); Scanner input = new Scanner(System.in); String str = input.nextLine(); if(str.equalsIgnoreCase("y")) return true; else return false; } private void write(){ String str = ""; String s; for(int i=0;i<user.length;i++){ s = user[i]; if(i!=user.length-1) str = str + s + "\n"; else str = str + s; } File file = new File("src\\bank\\user"); FileWriter out = null; try { out = new FileWriter(file); out.write(str); out.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } }}package bank;//银行类public class Bank { private Atm atm = new Atm(); public void welcome(User user){ System.out.println("欢迎使用atm"); user.useAtm(atm); }}package bank;//用户类public class User { public void useAtm(Atm atm){ atm.show(); }}//创建user文件当数据库张三*456*100.0李四*123*300.0王五*789*200.0package bank;//测试类public class Text { public static void main(String[] args){ Bank bank =new Bank(); User user = new User(); bank.welcome(user); }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下项目名称模拟ATM机项目描述简单实现ATM机功能代码实现测试类publiccla
java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。用java实现一个ATM机系统(2.0版)设计思路设计五个
本文实例讲述了Java使用嵌套循环模拟ATM机取款业务操作。分享给大家供大家参考,具体如下:代码:packagecom.jredu.ch03;importjav
用Java模拟一个银行ATM系统,供大家参考,具体内容如下系统功能介绍:使用面向对象的编程思想,尽可能模拟真实世界中的银行ATM业务流程。main方法里通过调用
本文实例为大家分享了java模拟ATM功能的具体代码,供大家参考,具体内容如下有三个类:Test.java、Customer.java、CustomerDAO.