返回顶部
首页 > 资讯 > 后端开发 > Python >java实现ATM机系统(2.0版)
  • 696
分享到

java实现ATM机系统(2.0版)

2024-04-02 19:04:59 696人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。 用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);

 }
}

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

--结束END--

本文标题: java实现ATM机系统(2.0版)

本文链接: https://lsjlt.com/news/122126.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java实现ATM机系统(2.0版)
    java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。 用java实现一个ATM机系统(2.0版) 设计思路 设计五个类包括测试类: ...
    99+
    2024-04-02
  • javaGUI实现ATM机系统(3.0版)
    写个小项目了解一下GUI。用java GUI实现银行ATM自动取款机,实现登录界面、登录成功界面、各个操作功能实现界面。 用java GUI实现一个ATM机系统(3.0版) 设计思路...
    99+
    2024-04-02
  • Java实现ATM机操作系统
    本文实例为大家分享了Java实现ATM机操作系统的具体代码,供大家参考,具体内容如下 用IO流操作txt文件作为数据库模拟实现一个ATM业务操作系统---->网上银行,实现登录...
    99+
    2024-04-02
  • Java实现简单控制台版ATM系统
    本文实例为大家分享了Java实现简单控制台版ATM系统的具体代码,供大家参考,具体内容如下 ATM系统项目 ATM系统要实现的功能 1.查询:账号必须存在,密码(三次机会,不对就锁卡...
    99+
    2024-04-02
  • Java如何实现ATM机模拟系统
    这篇“Java如何实现ATM机模拟系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现ATM机模拟系统”文章吧...
    99+
    2023-07-02
  • Java详解实现ATM机模拟系统
    目录一、概述二、程序概要设计三、程序详细设计四、程序演示一、概述 (1)选题分析 (2) 开发环境 开发环境,选择IDEA这一Java开发软件,基于JDK1.8版本,在本机windo...
    99+
    2024-04-02
  • Java如何实现ATM机操作系统
    这篇“Java如何实现ATM机操作系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现ATM机操作系统”文章吧...
    99+
    2023-06-30
  • Java如何实现ATM系统
    这篇文章主要介绍Java如何实现ATM系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.系统准备,首页,用户开户功能系统准备,首页设计系统准备内容分析:每个用户的账户信息都是一个对象,需要提供账户类需要准备一个容...
    99+
    2023-06-29
  • Java如何实现简单控制台版ATM系统
    本篇内容主要讲解“Java如何实现简单控制台版ATM系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现简单控制台版ATM系统”吧!ATM系统项目ATM系统要实现的功能查询:账号必...
    99+
    2023-06-30
  • Java实现ATM银行管理系统(控制台版本)
    目录前言介绍创建抽象类Card类创建普通银行类继承Card创建普通信用卡继承Card创建普通医保卡继承CardATM主要方法业务类逻辑实现main方法测试启动类控制台打印前言介绍 最...
    99+
    2024-04-02
  • java实现简单银行ATM系统
    本文实例为大家分享了java实现简单银行ATM系统的具体代码,供大家参考,具体内容如下 #ATM系统 ##功能 模拟银行ATM机系统,具有注册、登录功能用户登录后可实现以下功能:1)...
    99+
    2024-04-02
  • Java简单实现银行ATM系统
    本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下 实现步骤: 定义账户类,用于后期创建账户对象封装用户的账户信息。 账户类中的信息至少需要包含(卡号...
    99+
    2024-04-02
  • Java实现基础银行ATM系统
    目录一、前言二、使用步骤三、运行效果图:本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下 一、前言 银行ATM系列简单操作 二、使用步骤 1.创建...
    99+
    2024-04-02
  • java实现银行ATM管理系统
    本文实例为大家分享了java实现银行ATM管理系统的具体代码,供大家参考,具体内容如下 功能 账户类、首页设计 分析 ① 每个用户一个账户对象,需要设计账户类,账户类至少包含(卡号、...
    99+
    2024-04-02
  • Java模拟实现ATM机
    Java模拟ATM机,供大家参考,具体内容如下 实现登录,查询,转账,取款,修改密码,退出功能。 源码 package bank; import java.io.*; impo...
    99+
    2024-04-02
  • Java如何实现ATM银行管理系统控制台版本
    这篇文章主要讲解了“Java如何实现ATM银行管理系统控制台版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现ATM银行管理系统控制台版本”吧!创建抽象类Card类abstr...
    99+
    2023-07-02
  • C语言实现ATM机存取款系统
    本文实例为大家分享了C语言实现ATM机存取款系统的具体代码,供大家参考,具体内容如下 利用结构体和构造函数并且采用输入输出文件实现ATM机系统。 主要功能有: 利用三种方法查询、开户...
    99+
    2024-04-02
  • java如何实现简单银行ATM系统
    这篇文章主要介绍了java如何实现简单银行ATM系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java如何实现简单银行ATM系统文章都会有所收获,下面我们一起来看看吧。#ATM系统##功能模拟银行ATM机系...
    99+
    2023-06-30
  • Java基于控制台界面实现ATM系统
    本文实例为大家分享了Java实现ATM系统的具体代码,供大家参考,具体内容如下 这应该算最基础的Javase项目了,但其中逻辑还是得想想的。 功能还算完善,只是对输入数据的校验没做全...
    99+
    2024-04-02
  • 用Java实现简单ATM机功能
    本文实例为大家分享了Java实现简单ATM机功能的具体代码,供大家参考,具体内容如下 项目介绍 基于大家使用银行卡在ATM机取款操作,进行相对应ATM机操作流程的实现。 项目功能 1...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作