基于Java开发实现ATM系统

本文实例为大家分享了Java开发实现ATM系统的具体代码,供大家参考,具体内容如下

一.业务分析

通过使用Java面向对象的基础知识,开发一个ATM系统,实现存款,取款,转账,修改密码,注销账户等功能。

二.开发准备

首先,创建一个用户类,为建立用户对象做准备,用户类主要包括用户卡号(系统随机生成),用户名,账户密码,余额,取现额度。并搭建构造器,以及get,set。

public class user {
    private String cardId ;     //卡号
    private String username;    //用户名
    private String password;    //密码
    private double money;       //余额
    private double qumoney;     //取现额度
 
 
    public user(String cardId, String username, String password,  double qumoney) {
        this.cardId = cardId;
        this.username = username;
        this.password = password;
        this.qumoney = qumoney;
    }
 
    public user() {
    }
 
    public String getCardId() {
        return cardId;
    }
 
    public void setCardId(String cardId) {
        this.cardId = cardId;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public double getMoney() {
        return money;
    }
 
    public void setMoney(double money) {
        this.money = money;
    }
 
    public double getQumoney() {
        return qumoney;
    }
 
    public void setQumoney(double qumoney) {
        this.qumoney = qumoney;
    }
}

三.创建测试类,写入main方法

public class ATMSystem {
    public static void main(String[] args) {
        ArrayList<user> users = new ArrayList<>();
        Main(users);
    }

四.将主界面设置成Main方法,设计主界面,包括登录账户,注册账户,并且设置登录方法,注册方法,再调用。

public static void Main(ArrayList<user> users) {
        System.out.println("==========欢迎进入xx银行ATM系统==========");
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1.登录账户");
            System.out.println("2.注册账户");
            Scanner sc = new Scanner(System.in);
            int command = sc.nextInt();
            switch (command) {
                case 1:                 //登录
                    denglu(users, sc);
                    break;
                case 2:                 //注册
                    zhuce(users, sc);
                    break;
                default:
                    System.out.println("功能不存在!");
            }
        }
    }

运行结果:

五.将注册账户写成方法

public static void zhuce(ArrayList<user> users, Scanner sc) {
        System.out.println("==========注册账户==========");
        String password = "";
        String password2 = "";
        System.out.println("请输入您的账号名称:");
        sc = new Scanner(System.in);
        String name = sc.next();
        while (true) {
            System.out.println("请输入您的账号密码:");
            password = sc.next();
            System.out.println("请您再次输入密码:");
            password2 = sc.next();
            if (password2.equals(password)) {
                break;
            } else {
                System.out.println("两次密码输入不一致!,请重新输入");
            }
        }
        //生成卡号
        System.out.println("请输入账号当次限额");
        double qumoney = sc.nextDouble();
        String cardId = kahao(users);
        user u1 = new user(cardId, name, password, qumoney);
        users.add(u1);
        System.out.println("恭喜开户成功!,您的卡号是" + u1.getCardId() + ",请您保管");
 
    }

其中,涉及到生成卡号,以及查询系统生成的卡号是否相同,需要再写两个方法:

//生成卡号
    public static String kahao(ArrayList<user> users) {
        while (true) {
            Random rs = new Random();
            String cardId = "";
            for (int i = 0; i < 8; i++) {
                cardId += rs.nextInt(10);
            }
            user a = getcardId(cardId, users);
            if (a == null) {
                //无重复
                return cardId;
            }
        }
    }
//查询卡号
    public static user getcardId(String kahao, ArrayList<user> users) {
        for (int i = 0; i < users.size(); i++) {
            user a = users.get(i);
            if (a.getCardId().equals(kahao)) {
                return a;
            }
        }
        return null;
    }

六.将登录账户写成方法,并设计主界面

public static void denglu(ArrayList<user> users, Scanner sc) {
        System.out.println("==========登录账户==========");
        if (users.size() == 0) {
            System.out.println("系统中无账户!请先注册");
            return;
        }
        while (true) {
            System.out.println("请输入您的卡号:");
            String cardId = sc.next();
            String password = "";
            user acc = getcardId(cardId, users);
            if (acc != null) {
                while (true) {
                    System.out.println("请输入您的密码:");
                    password = sc.next();
                    //判断密码是否正确
                    if (acc.getPassword().equals(password)) {
                        System.out.println("登录成功!,欢迎卡号" + acc.getCardId() + "的贵宾" + acc.getUsername() + "进入系统");
                        //展示系统登录后的操作界面
                        jiemian(sc, acc, users);
                        return;
                    } else {
                        System.out.println("密码错误!请重新输入");
                    }
                }
            } else {
                System.out.println("不存在该卡号!");
            }
        }
    }

六.1编写 展示主界面方法

public static void jiemian(Scanner sc, user acc, ArrayList<user> users) {
        while (true) {
            System.out.println("==========欢迎进入xx银行用户操作界面===========");
            System.out.println("请您输入操作命令:");
            System.out.println("1.查询:");
            System.out.println("2.存款:");
            System.out.println("3.取款:");
            System.out.println("4.转账:");
            System.out.println("5.修改密码:");
            System.out.println("6.退出:");
            System.out.println("7.注销当前账户");
            sc = new Scanner(System.in);
            int commend = sc.nextInt();
            switch (commend) {
                case 1:
                    atm1(acc);
                    break;
                case 2:
                    atm2(acc, sc);
                    break;
                case 3:
                    atm3(acc, sc);
                    break;
                case 4:
                    atm4(users, acc, sc);
                    break;
                case 5:
                    atm5(acc, sc);
                    return;
                case 6:
                    System.out.println("欢迎下次来到ATM系统");
                    return;
                case 7:
                    System.out.println("是否确认注销账户?按1确认,按2取消注销");
                    int tf = sc.nextInt();
                    if (tf == 1) {
                        users.remove(acc);
                        System.out.println("注销成功!");
                        return;
                    } else {
                        System.out.println("取消注销");
                        break;
                    }
                default:
                    System.out.println("不存在该功能!");
            }
        }
 
    }

七.接下来,依次编写各个功能的方法

//查询功能
    private static void atm1(user acc) {
        System.out.println("========当前账户详情=========");
        System.out.println("卡号:" + acc.getCardId());
        System.out.println("姓名:" + acc.getUsername());
        System.out.println("余额:" + acc.getMoney());
        System.out.println("当次取款限额:" + acc.getQumoney());
    }
 
    //存款功能
    private static void atm2(user acc, Scanner sc) {
        System.out.println("=========存款操作=========");
        System.out.println("请您输入存款金额:");
        double money = sc.nextDouble();
        acc.setMoney(acc.getMoney() + money);
        System.out.println("存款成功!");
        atm1(acc);
 
    }
 
    //取款
    private static void atm3(user acc, Scanner sc) {
        System.out.println("=========取款操作=========");
        if (acc.getMoney() < 100) {
            System.out.println("您的账户余额不足100元!无法取款");
            return;
        } else {
            while (true) {
                System.out.println("请您输入取款金额:");
                double money = sc.nextDouble();
                if (money > acc.getMoney()) {
                    System.out.println("账户余额不足!");
                    System.out.println("继续取款按1,退出取款按2");
                    int commend = sc.nextInt();
                    switch (commend) {
                        case 1:
                            break;
                        case 2:
                            return;
                    }
                } else if (money > acc.getQumoney()) {
                    System.out.println("超过了当次取款限额!,每次最多可以取" + acc.getQumoney() + "元");
                } else {
                    System.out.println("取款成功!");
                    acc.setMoney(acc.getMoney() - money);
                    atm1(acc);
                    return;
                }
            }
        }
    }
 
    //转账
    private static void atm4(ArrayList<user> users, user acc, Scanner sc) {
        System.out.println("=========转账操作=========");
        //判断系统中是否有两个以上账户
        if (users.size() < 2) {
            System.out.println("系统中无其他账户,不可以转账!");
            return;
        } else {
            if (acc.getMoney() == 0) {
                System.out.println("您的账户余额为0,无法转账");
                return;
            } else {
                while (true) {
                    System.out.println("请输入对方的卡号:");
                    String dui = sc.next();
                    user c = getcardId(dui, users);
                    if (c != null) {
                        //判断账户对象是否为自己
                        if (c.getCardId().equals(acc.getCardId())) {
                            System.out.println("不能给自己转账!");
                        } else {
                            //确认对方姓氏
                            String name = "*" + c.getUsername().substring(1);
                            System.out.println("请您确认[" + name + "]的姓氏");
                            String xingshi = sc.next();
                            if (c.getUsername().startsWith(xingshi)) {
                                System.out.println("输入正确!");
                                while (true) {
                                    System.out.println("请您输入转账金额:");
                                    double money = sc.nextDouble();
                                    if (money > acc.getMoney()) {
                                        System.out.println("余额不足!");
                                        System.out.println("继续转账按1,退出转账按2");
                                        int commend = sc.nextInt();
                                        switch (commend) {
                                            case 1:
                                                break;
                                            case 2:
                                                return;
                                        }
                                    } else {
                                        acc.setMoney(acc.getMoney() - money);
                                        c.setMoney(c.getMoney() + money);
                                        System.out.println("为" + c.getUsername() + "用户" + "转账成功");
                                        atm1(acc);
                                        return;
                                    }
                                }
                            } else {
                                System.out.println("对不起,您输入的信息有误!");
                            }
                        }
 
                    } else {
                        System.out.println("对不起,您输入卡号有误!");
                    }
                }
            }
        }
    }
 
    //修改密码操作
    private static void atm5(user acc, Scanner sc) {
        System.out.println("=========修改密码操作=========");
        while (true) {
            System.out.println("请输入您的旧密码:");
            String oldpassword = sc.next();
            String newpassword = "";
            if (oldpassword.equals(acc.getPassword())) {
                while (true) {
                    System.out.println("请输入新密码:");
                    newpassword = sc.next();
                    if (newpassword.equals(oldpassword)) {
                        System.out.println("新密码不能与旧密码重复!");
                    } else {
                        System.out.println("请再次输入密码:");
                        String okpassword = sc.next();
                        if (newpassword.equals(okpassword)) {
                            System.out.println("修改密码成功!");
                            acc.setPassword(newpassword);
                            return;
                        } else {
                            System.out.println("两次密码输入不一致!");
                        }
                    }
                }
            }
                else{
                        System.out.println("旧密码输入错误!");
                    }
        }
    }

至此,所有功能完成。

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

(0)

相关推荐

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

  • Java实现银行ATM系统

    用Java模拟一个银行ATM系统,供大家参考,具体内容如下 系统功能介绍: 使用面向对象的编程思想,尽可能模拟真实世界中的银行ATM业务流程. main方法里通过调用一行代码,完成整个业务流程的顺序调用. 加入了身份证号,手机号等元素,虽然他们不涉及银行卡的业务处理,但它们是真实世界中办理银行卡的必需条件,这些在代码中也有所体现. 为了尽可能使得随机生成的身份证号码和手机号码和银行卡号切合实际,还手动设计了一个工具类,用来生成随机的号码. 其中涉及到的知识,包括但不限于static修饰符的使用,

  • Java实现ATM系统超全面步骤解读建议收藏

    目录 1.系统准备,首页,用户开户功能 系统准备,首页设计 总结 总结 2.用户登入,操作页展示,查询账户,退出账户 用户登入功能实现 总结 总结 3.用户存款与取款 用户存款 总结 总结温习 4.用户转账,修改密码,销户 用户转账功能 总结温习 5.源代码在这里这里拿 系统准备内容分析 每个用户的账户信息都是一个对象,需要提供账户类 需要准备一个容器,用户存储系统全部账户对象信息 首页值需要包含:登入和注册2个功能 1.系统准备,首页,用户开户功能 系统准备,首页设计 系统准备内容分析: 每个

  • Java实现基础银行ATM系统

    目录 一.前言 二.使用步骤 三.运行效果图: 本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下 一.前言 银行ATM系列简单操作 二.使用步骤 1.创建用户信息类Account.java 代码如下(示例): package ATM; public class Account {         private String id;         private String name;         private double balance;    

  • 用Java实现简单ATM机功能

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

  • Java简单实现银行ATM系统

    实现步骤: 定义账户类,用于后期创建账户对象封装用户的账户信息. 账户类中的信息至少需要包含(卡号.姓名.密码.余额.取现额度) 需要准备一个ArrayList的集合,用于存储系统用户的账户对象. 定义一个系统启动类ATMSystem需要展示欢迎页包含2个功能:开户功能.登录账户. 账户类 Account package test;/*账户类*/public class Account {    private String cardId; //卡号    private String user

  • Java基于控制台界面实现ATM系统

    本文实例为大家分享了Java实现ATM系统的具体代码,供大家参考,具体内容如下 这应该算最基础的Javase项目了,但其中逻辑还是得想想的. 功能还算完善,只是对输入数据的校验没做全,之后做web时再加上. 没有数据库. 完整代码在最后. 流程图 登录 想模拟提款机插卡登录的,因此没做注册账号的功能,手动先塞了三个账号.有三次输入密码机会. 查询 取款 存款 转账 修改密码 退出 代码 文件结构 下面两个类复制过去放到ATM文件夹下就能运行. package ATM; import java.t

  • Java实现简单控制台版ATM系统

    本文实例为大家分享了Java实现简单控制台版ATM系统的具体代码,供大家参考,具体内容如下 ATM系统项目 ATM系统要实现的功能 1.查询:账号必须存在,密码(三次机会,不对就锁卡) 2.取款:账号必须存在,密码(三次机会,不对就锁卡),取款金额不能大于存款 3.存款:账号必须存在,存款金额不能低于0 4.转帐:你的账户,转款账户都必须存在,密码(三次机会,不对就锁卡),转账金额不能超过余额 5.锁卡:账号必须存在,使用密码冻结 6.解卡:账号必须存在,只能使用身份证号进行解锁 7.补卡:使用

  • java实现简单银行ATM系统

    本文实例为大家分享了java实现简单银行ATM系统的具体代码,供大家参考,具体内容如下 #ATM系统 ##功能 模拟银行ATM机系统,具有注册.登录功能用户登录后可实现以下功能:1)存款 2)取款 3)转账 4)查询 5)退出 ##设计思路 首先,要进行ATM机操作应该具有银行卡和ATM,所以我们要设计一个ATM类和Bankcard类,ATM具有存取款等操作,Bankcard用来记录用户存取款等操作后的越,其次因为ATM同时为多个用户服务,所以我们应该识别每张卡,这里增加一个Bank类来记录银行

随机推荐