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);

 }
}

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

(0)

相关推荐

  • Java使用嵌套循环模拟ATM机取款业务操作示例

    本文实例讲述了Java使用嵌套循环模拟ATM机取款业务操作.分享给大家供大家参考,具体如下: 代码: package com.jredu.ch03; import java.util.Scanner; public class Work4 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); for (int i =

  • Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { //模拟多功能ATM机 public static void main(String[] args) { ATM atm = new ATM(); atm.opearte(); } } 主类:实现主方法 public class ATM { private Bank bank; public ATM()

  • Java实现ATM取款机程序

    本文实例为大家分享了Java实现ATM取款机程序的具体代码,供大家参考,具体内容如下 对象说明: 功能:该程序的功能为实现模拟银行ATM自动取款机取款,存款,查询余额,转账等功能,只是完成了基本的功能. 思路:第一.登录判断,密码限制三次,使用for循环.第二.成功登录,选择相应的功能,使用switch语句.第四.实现功能的反复循环操作,因为次数不确定,使用while结构.第五.对每个功能模块进行填充完善. 代码展示: import java.util.Scanner; public class

  • java方法实现简易ATM功能

    用java方法写简易ATM,供大家参考,具体内容如下 本文需求:用java写一个简易ATM 功能:有登陆,有查询资金功能,有存款功能,有取款功能,有转账功能,有退出: 简述: (java方法)类似于javascript中的函数,用于封装一些代码,以便代码的复用: 技术需求:方法 效果如下: 代码如下: package com.atm; import java.util.Scanner; /** * * @author 小zz *创建时间2019年5月9日下午4:13:10 *@version 1

  • Java模拟实现ATM机

    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 newPassw

  • java GUI实现ATM机系统(3.0版)

    写个小项目了解一下GUI.用java GUI实现银行ATM自动取款机,实现登录界面.登录成功界面.各个操作功能实现界面. 用java GUI实现一个ATM机系统(3.0版) 设计思路 设计两个包(bank包,atmJFrame包) 1.bank包: (1).ATM类:实现用户各种操作; (2).Data类:从user文件中获取所有用户信息,并返回要找的用户,再将修改完之后的用户信息写入user文件中: (3).user文件储存所有用户信息. 2.atmJFrame包: (1).MyJFrame类

  • 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类

  • Java实现ATM机操作系统

    本文实例为大家分享了Java实现ATM机操作系统的具体代码,供大家参考,具体内容如下 用IO流操作txt文件作为数据库模拟实现一个ATM业务操作系统---->网上银行,实现登录,查询余额,存款,取款,转账,开户,销户等业务功能看代码 1.用户类----->User: package atm; import java.io.Serializable; public class User implements Serializable{          //建议除了私有属性  无参数有参数构造方

  • java模拟实现银行ATM机操作

    java模拟银行ATM机操作(基础版),供大家参考,具体内容如下 实现的功能需求: 修改密码之后,就会自动退出登录,再重新登录,若登录成功才能验证修改密码成功,这里用到 [跳出指定循环], 其他功能都是基本操作,作为入门入手程序. 准备两个实体类(一个银行类,一个用户类),一个测试类,注意,这里暂且存储了两个用户,这里可以优化,暂且不优化了 Blank.java package com.demo2; public class Blank {     /*数组模拟数据库后台,并初始化*/    

  • C语言实现ATM机存取款系统

    本文实例为大家分享了C语言实现ATM机存取款系统的具体代码,供大家参考,具体内容如下 利用结构体和构造函数并且采用输入输出文件实现ATM机系统. 主要功能有: 利用三种方法查询.开户.登陆.菜单.取款.修改密码.存款.转账.创建个人信息.输出.删除.增加.退出. 是一个功能齐全,完备的ATM机系统. #include<stdio.h> #include<string.h> #include<stdlib.h> struct per //定义结构体 { char name

  • 用Java实现简单ATM机功能

    本文实例为大家分享了Java实现简单ATM机功能的具体代码,供大家参考,具体内容如下 项目介绍 基于大家使用银行卡在ATM机取款操作,进行相对应ATM机操作流程的实现. 项目功能 1.注册功能: 根据用户输入的账号密码申请一张银行卡,存储在银行卡类型的数组中(一张银行卡对应一个有效用户). 2.登录功能: 登陆失败:重新登陆 或 注册登陆成功:对登陆的这张银行卡可以进行一下操作:存款.取款.查余额.转账.退卡功能. 项目知识点 3.java基本语法的使用4.一维数组5.函数调用,封装6.Java

  • Java详解实现ATM机模拟系统

    目录 一.概述 二.程序概要设计 三.程序详细设计 四.程序演示 一.概述 (1)选题分析 (2) 开发环境 开发环境,选择IDEA这一Java开发软件,基于JDK1.8版本,在本机window上开发本ATM模拟程序. 二.程序概要设计 (1) 功能模块设计 经过对题目的分析,把本ATM模拟程序分为管理员端和用户模式两大模块.其中,管理员具有查询所有账户.导出所有账户信息到文件.注销功能.用户模块具有查询余额.ATM转账.ATM存款.ATM取款.修改密码.查询交易记录.导出记录.退卡等功能. 系

随机推荐