java实现ATM机系统(2.0版)

java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。

用java实现一个ATM机系统(2.0版)

设计思路

设计五个类包括测试类:

1、ATM类也是主要的类,负责实现用户一系列的操作;2、Data类,作为ATM类的一个属性,主要实现从java文件user中获取用户全部信息,并返回要找的用户,再将修改完之后的用户信息写入文件中。

这个类是ATM机与文件之间的桥梁;

3、Bank类,有ATM机(has-a),欢迎用户来使用ATM机;4、User类,使用ATM机(use-a);5、Demo类,测试类,创建一个环境,让类产生关系。

源码

需要注意java文件user的位置,Data类要进行操作它。

package newBank;import java.util.Scanner;//ATM类public class ATM { //有一个类操作数据的类 private Data data = new Data(); //ATM机里的数据 private String userName;//用户账号且唯一 private String userPassword;//用户密码 private double userMoney;//用户账户里的钱 private double money;//变量,存,取,转账的钱 private String user;//使用该台ATM机的用户全部信息 //ATM界面 public void show(){  System.out.println("欢迎使用ATM机");  //使用登录方法,输入账号和密码  int number = login();  //如果登录成功  if(number == 4)   working();//ATM机办理业务 } //登录方法 private int login(){  int number = 3;//用户输入次数  while(number > 0) {   Scanner input = new Scanner(System.in);   System.out.println("请输入账号:");   //输入账号   String inUserName = input.nextLine();   //输入密码   System.out.println("请输入密码:");   String inUserPassword = input.nextLine();   String x = data.backUser(inUserName);   //判断账户是否存在   if(!x.equals("null")){    user = x;//获取用户所有信息    String[] str = user.split("\\*");//将用户信息分割    userName = str[0];//用户名    userPassword = str[1];//用户密码    userMoney = Double.parseDouble(str[2]);//用户余额    //密码正确    if(userPassword.equals(inUserPassword)){     System.out.println("登录成功");     number = 4;//次数变为4     break;    }   }   number --;//次数减一   System.out.println("账号或密码输入错误。。。");   System.out.println("您还有" + number + "次机会");  }  return number;//是否登录成功 } //功能界面 private void functionShow(){  System.out.println("**********************");  System.out.println("\t欢迎使用ATM");  System.out.println("1,账户余额查询\n2,存钱\n3,取钱\n4,转账\n5,修改用户密码\n6,退出系统\n");  System.out.println("**********************"); } //用户要进行的操作 private void working(){  String index;//业务序号  do{   functionShow();//调用功能界面   System.out.println("请输入要办理的业务序号:");   Scanner input = new Scanner(System.in);   index = input.nextLine();   switch(index){    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("欢迎下次光临!");     user = changeUser(userName,userPassword,userMoney);     data.saveData(user,true);//用户退出后保存用户信息     break;    default:     System.out.println("您输入有误,请重新输入。。。。");   }  }while(!index.equals("6")); } //是否继续某项操作 private boolean isContinue(){  System.out.println("继续办理该项业务:请输入Y/y");  System.out.println("返回上一级:请输入N/n");  Scanner input = new Scanner(System.in);  String str = input.nextLine();  if(str.equalsIgnoreCase("Y"))   return true;  else   return false; } //存钱,取钱,转账共用 private void 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) {   System.out.println("您输入有误!");   this.money = 0;  }  else   this.money = money; } //查询实现 private void look(){  System.out.println("用户余额为:" + userMoney);  try{   Thread.sleep(2000);  }catch(Exception e){   e.printStackTrace();  } } //存钱实现 private void saveMoney(){  howMuch("存钱");  if(money != 0) {//如果存的钱正确   userMoney = userMoney + money;//存上   System.out.println("已存入");   look();//显示余额  }  if(isContinue())   saveMoney(); } //判断余额是否充足 private boolean isEnough(){  if(money <= userMoney){   userMoney = userMoney - money;   return true;  }  else{   System.out.println("您的余额不足!");   return false;  } } //取钱实现 private void getMoney(){  howMuch("取钱");  //如果取的钱正确且如果转账账户余额够  if(money != 0 && isEnough()){   look();   System.out.println("请收好您的钱");  }  if(isContinue())   getMoney(); } //转账实现 private void giveMoney(){  //只判断用户账户是否存在  Scanner input = new Scanner(System.in);  System.out.println("请输入要转账账号:");  //输入账号  String inUserName = input.nextLine();  String str = data.backUser(inUserName);  //如果该账户存在  if(!str.equals("null")) {   String antherUser = str;//获取被转账账户所有信息   String[] str1 = antherUser.split("\\*");//分割   Double x = Double.parseDouble(str1[2]);//获取被转账账户余额   howMuch("转账");   //如果转的钱正确且如果转账账户余额够   if (money != 0 && isEnough()) {    x = x + money;    antherUser = changeUser(str1[0], str1[1], x);//改变被转账账户信息    data.saveData(antherUser,false);//将用户信息传给Data类保存被转账账户信息    System.out.println("转账成功");    look();   }  }  else   System.out.println("被转账账户不存在。。。");  if(isContinue())   giveMoney(); } //修改密码实现 private void changePassword(){  System.out.println("请输入新密码:");  Scanner input = new Scanner(System.in);  userPassword = input.nextLine();  System.out.println("密码修改成功!"); } //办完业务后修改用户信息 private String changeUser(String n,String w,Double d){  String str = n + "*" + w + "*" + d;  return str; }}
package newBank;import java.io.*;import java.util.HashMap;import java.util.Map;import java.util.Set;//数据类是文件和ATM机之间操作用户信息的桥梁public class Data { //Map储存数据库里所有用户的全部信息 Map<String,String> userData = new HashMap(); //返回用户的信息 private String user; //创建数据类加载所有用户信息 public Data(){  getUsers(); } private void getUsers(){  String str;  String[] string;  File file = new File("src\\newBank\\user");  FileReader fileReader = null;  BufferedReader bufferedReader = null;  try{   fileReader = new FileReader(file);   bufferedReader = new BufferedReader(fileReader);   while((str = bufferedReader.readLine())!=null){    string = str.split("\\*",2);    userData.put(string[0],string[1]);   }  }catch(Exception e){   e.printStackTrace();   if((fileReader!=null)&&(bufferedReader!=null)){    try {     bufferedReader.close();     fileReader.close();    } catch (IOException e1) {     e1.printStackTrace();    }   }  } } //告诉用户名,如果找到返回该用户所有信息,没找到返回null public String backUser(String userName){  String str = "null";  if(userData.containsKey(userName))   str = userName + "*" + userData.get(userName);  user = str;  return user; } //修改用户数据并储存在userData图里 public void saveData(String user,boolean aBoolean){  String[] string = user.split("\\*",2);  userData.remove(string[0]);  userData.put(string[0],string[1]);  if(aBoolean)//判断用户是否操作结束   changeUser(); } //用户操作完,将userData里所有的用户再写入文件里 private void changeUser(){  String str,string="";  Set<String> keys = userData.keySet();  for(String key : keys){   str = key + "*" + userData.get(key);   string = string + str + "\n";  }  File file = new File("src\\newBank\\user");  FileWriter out = null;  try {   out = new FileWriter(file);   out.write(string);   out.flush();  } catch (IOException e) {   e.printStackTrace();  }finally{   if(out != null){    try {     out.close();    } catch (IOException e) {     e.printStackTrace();    }   }  } }}
package newBank;//银行类public class Bank { //银行有ATM机供给用户使用 private ATM atm = new ATM(); //欢迎用户使用 public void welcome(User user){  System.out.println("欢迎用户来我行使用ATM机");  user.useATM(atm); }}
package newBank;//用户类public class User { //用户使用ATM机办理业务 public void useATM(ATM atm){  atm.show(); }}
//java文件当数据库李四*123*1000.0张三*456*10000.0王五*789*100000.0
package newBank;//测试类public class Demo { public static void main(String[] args){  //创建一个银行  Bank bank = new Bank();  //创建一个用户  User user = new User();  //银行欢迎用户  bank.welcome(user); }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

真正的停下来,享受自我的体验时刻,也许浮光掠影,

java实现ATM机系统(2.0版)

相关文章:

你感兴趣的文章:

标签云: