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 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.0
package bank;

//测试类
public class Text {
 public static void main(String[] args){
 Bank bank =new Bank();
 User user = new User();
 bank.welcome(user);
 }
}

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

(0)

相关推荐

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

    本文实例为大家分享了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机取款业务操作.分享给大家供大家参考,具体如下: 代码: 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机系统(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机,供大家参考,具体内容如下 实现登录,查询,转账,取款,修改密码,退出功能. 源码 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实现简单ATM机功能

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

  • c#模拟银行atm机示例分享

    账户类Account:Id:账户号码PassWord:账户密码Name:真实姓名PersonId:身份证号码Email:客户的电子邮箱Balance:账户余额 Deposit:存款方法,参数是double型的金额Withdraw:取款方法,参数是double型的金额 银行的客户分为两种类型:储蓄账户(SavingAccount)和信用账户(CreditAccount)两者的区别是储蓄账户不许透支,而信用账户可以透支,并允许用户设置自己的透支额度(使用ceiling表示) Bank类,属性如下(1

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

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

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

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

  • Java实现ATM机操作系统

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

随机推荐