大纲
   ATM 机系统 
                  1.注册(账户(系统随机生成 15 位) - 密码(6位) - 余额) 
                  2.登录
                  4.修改密码
                  3.查询余额
                  4.存钱 -(显示操作完成后的余额) 
                  5.取钱 - (显示操作完成后的余额)
                  6.退出 
                7.支持通过银行卡转账功能(未完成)
                  8.数据持久化(未完成)

public class User {
        //用户类
        private String userId;//账户
        private String userPassword;//密码
        private double money;//余额
        
        public User() {
                super();
        }

public String getUserId() {
                return userId;
        }

public void setUserId(String userId) {
                this.userId = userId;
        }

public String getUserPassword() {
                return userPassword;
        }

public void setUserPassword(String userPassword) {
                this.userPassword = userPassword;
        }

public double getMoney() {
                return money;
        }

public void setMoney(double money) {
                this.money = money;
        }
}
//功能类
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
import java.util.function.DoublePredicate;
import java.util.regex.Pattern;

public class ATMSystem {
        private ArrayList<User> users;
        private Scanner scanner;
        private int loginIndex;

public ATMSystem() {
                this.users = new ArrayList<>();//分配空间
                this.scanner = new Scanner(System.in);
                stratCaiDan();
        }
        private void stratCaiDan() {
                System.out.println("【1】注册 【2】登录 【3】退出");
                System.out.print(">");
                String result = scanner.nextLine();

switch (result) {
                case "1":// 注册
                        register();
                        stratCaiDan();
                        break;
                case "2":// 登入
                        login();
                        break;
                case "3":// 退出
                        break;
                }
        }
        //功能菜单
        private void bankCaiDan() {
                System.out.println("【1】查询余额 【2】 存钱 【3】取钱 【4】修改密码 【5】转账 【6】退出");
                System.out.print(">");
                String result = scanner.nextLine();
                
                switch (result) {
                case "1"://查询余额
                        showMoney();
                        bankCaiDan();
                        break;
                case "2"://存钱
                        saveMoney();
                        bankCaiDan();
                        break;
                case "3"://取钱
                        drawMoney();
                        bankCaiDan();
                        break;
                case "4"://修改密码
                        updatePassword();
                        bankCaiDan();
                        break;
                case "5"://转账
                        
                        break;
                case "6"://退出
                        break;
                }
        }
        
        //查询余额
        public void showMoney() {
                System.out.println("余额:"+users.get(loginIndex).getMoney());
        }
        
        //存钱
        public void saveMoney() {
                System.out.print("请输入存款金额:");
                String money = scanner.nextLine();
                users.get(loginIndex).setMoney(users.get(loginIndex).getMoney()+Double.parseDouble(money));
                System.out.println("存款成功");
                showMoney();
        }
        
        //取钱
        public void drawMoney() {
                System.out.print("请输入取款金额:");
                String money = scanner.nextLine();
                if(users.get(loginIndex).getMoney()>=Double.parseDouble(money)) {
                        users.get(loginIndex).setMoney(users.get(loginIndex).getMoney()-                                 Double.parseDouble(money));
                }else {
                        System.out.println("余额不足!");
                        return;
                }
                System.out.println("取款成功");
                showMoney();
        }
        
        //修改密码方法
        public void updatePassword() {
                System.out.print("请输入原密码:");
                String password = scanner.nextLine();
                if(!users.get(loginIndex).getUserPassword().equals(password)) {
                        System.out.println("密码错误!");
                        return;
                }
                while (true) {
                        System.out.print("请输入新密码:");// 设置密码
                        String newPassword = scanner.nextLine();
                        if (!Pattern.matches("[0-9]{6}", newPassword)) {
                                System.out.println("密码输入有误,请重新输入");
                                continue;
                        }
                        System.out.print("请确认新密码:");
                        String rePassword = scanner.nextLine();
                        if (!rePassword.equals(newPassword)) {
                                System.out.println("您两次输入的密码不一样,请重新输入");
                                continue;
                        }
                        users.get(loginIndex).setUserPassword(newPassword);
                        System.out.println("修改密码成功");
                        break;
                }
        }
        
        
        // 登录方法
        private void login() {
                System.out.print("请输入您的卡号:");
                String id = scanner.nextLine();
                int index = getUserIndexById(id);
                if (index == -1) {
                        System.out.println("您输入的账号不存在,请检查后再试");
                }
                System.out.print("请输入密码:");
                String password = scanner.nextLine();
                if(users.get(index).getUserPassword().equals(password)) {
                        System.out.println("登入成功");
                        this.loginIndex = index;
//                        stratCaiDan();
                        //登录成功,跳转功能页面
                        bankCaiDan();
                }else {
                        System.out.println("密码错误,请检查后再试");
                        login();
                        return;
                }

}
        
        //根据下标获取用户方法
        private int getUserIndexById(String id) {
                for (int index = 0; index < users.size(); index++) {
                        if (users.get(index).getUserId().equals(id)) {
                                return index;
                        }
                }
                return -1;
        }

// 注册方法
        private void register() {
                User user = new User();
                Random ran = new Random();
                // 随机生成一个账号
                for (int i = 0; i < 15; i++) {
                        if (i == 0) {
                                user.setUserId(ran.nextInt(9) + 1 + "");
                        } else {
                                user.setUserId(user.getUserId() + ran.nextInt(10));
                        }
                }
                System.out.println("账号 :" + user.getUserId() + "请妥善保管");
                while (true) {
                        System.out.print("请输入密码:");// 设置密码
                        String password = scanner.nextLine();
                        if (!Pattern.matches("[0-9]{6}", password)) {
                                System.out.println("密码输入有误,请重新输入");
                                continue;
                        }
                        System.out.print("请确认密码:");
                        String rePassword = scanner.nextLine();
                        if (!rePassword.equals(password)) {
                                System.out.println("您两次输入的密码不一样,请重新输入");
                                continue;
                        }
                        user.setUserPassword(password);
                        users.add(user);
                        System.out.println("注册成功。账户为:" + user.getUserId());
                        break;
                }
        }
}

//启动测试类
public class Test {
        public static void main(String[] args) {
                new ATMSystem();
        }
}

Java的简易ATM系统的更多相关文章

  1. 实验01——java模拟银行ATM系统

    用java写的一个模拟银行系统,比较初级. ATM.java package cn.tedu.yinhang; import java.util.Scanner; /** * @author 赵瑞鑫 ...

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

    用java实现一个ATM机系统(2.0版) java实现银行ATM自助取款机,实现功能:用户登录.余额查询.存钱.取钱.转账.修改密码.退出系统. 文章目录 用java实现一个ATM机系统(2.0版) ...

  3. ATM系统开发(Java版)

    ATM系统开发 技术点分析 1.面向对象编程 每个用户的账户都是一个对象,所以需要设计账户类Accent用于创建账户对象封装账户信息. 2.使用集合容器 系统需要提供一个容器用于存储这些账户对象的信息 ...

  4. 简易ATM机

    简易ATM机(代码如下): /* * 功能:简易银行系统 */package day8; import java.util.Scanner; /** * * @FengYan Huang Admini ...

  5. 高仿中国银行ATM系统

    温馨提示由于代码太多只是上传了ATM客户端部分,管理员和超级管理员还有数据库部分上传了工程包,可以直接点击https://i.cnblogs.com/Files.aspx去里面找.package At ...

  6. JAVA中获取当前系统时间及格式转换

    JAVA中获取当前系统时间   一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...

  7. java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET

    java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET 亲,“社区之星”已经一周岁了!      社区福利快来领取免费参加MDCC大会机会哦    Tag功能介绍—我们 ...

  8. [JAVA] java_实例 获得系统字体

    这个代码可以帮助理解java是如何获取系统字体并设置文字字体: import java.awt.*; import java.awt.event.*; import javax.swing.JComb ...

  9. 使用apache daemon让java程序在unix系统上以服务方式运行

    通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...

随机推荐

  1. alert(1&&2)的输出问题

    此文章转载自http://blog.csdn.net/xiaotao_css/article/details/61940664 一.先来说说 ||(逻辑或),从字面上来说,只有前后都是false的时候 ...

  2. 关于python请求库Selenium安装所遇到的问题

    今天,初次接触python,在网上买了一本关于爬虫的书,因为之前电脑上存在python,所以就对着书直接进行的请求库的安装,安装的时候,主要遇到了下边一个问题,在安装Selenium的时候,出现以下提 ...

  3. [NOI2017]蚯蚓排队(链表+hash)

    这题看题面感觉挺玄学的,但其实会挂链式hash就能暴力切了,就是纸老虎,考察选手的语文水平.不过三年没写挂链hash也应该写一下了…… 首先模数设成自然溢出ull,然后挂链时的模数取2^24.然后就可 ...

  4. 深入分析Java反射(五)-类实例化和类加载

    前提 其实在前面写过的<深入分析Java反射(一)-核心类库和方法>已经介绍过通过类名或者java.lang.Class实例去实例化一个对象,在<浅析Java中的资源加载>中也 ...

  5. texshop 使用技巧

    mac osX上使用latex 的技巧 指定编译器, 通过宏定义, 也就是在文件开头, 加上类似命令 % !TEX TS-program = pdflatex 多个文件设定主文件, 通过宏定义, 加上 ...

  6. 3.redis认证

    redis认证方法 1.redis.conf requirepass PASSWORD 2.redis-cli auth PASSWORD redis清空数据库 flushdb //清空当前数据库 f ...

  7. 第1章 分布式系统概念与ZooKeeper简介

    ZooKeeper分布式专题与Dubbo微服务入门 第1章 分布式系统概念与ZooKeeper简介 1-1 zookeeper简介 1-2 什么是分布式系统 略 1-3 分布式系统的瓶颈以及zk的相关 ...

  8. TS写法

    主题句常用句型: ...can/may... ...有助于/帮助.....,(定语从句) ...enable/allows sb. To do... By doing .....,...can.... ...

  9. 分享一套好看的PyCharm Color Shceme 配色方案

    配色方案图1 点击可查看大图 (color shceme 配色文件下载链接已经放在文末) 配色方案图2 配色方案图3 picture1 picture2 整体效果 下载链接 https://files ...

  10. 计量经济与时间序列_ACF自相关与PACF偏自相关算法解析(Python,TB(交易开拓者))

    1   在时间序列中ACF图和PACF图是非常重要的两个概念,如果运用时间序列做建模.交易或者预测的话.这两个概念是必须的. 2   ACF和PACF分别为:自相关函数(系数)和偏自相关函数(系数). ...