Java实现ATM银行模拟系统(含完整代码)

这篇具有很好参考价值的文章主要介绍了Java实现ATM银行模拟系统(含完整代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

引言

功能简介

登录和注册

1、注册 

2、登录

具体功能实现 

1、存款功能 

2、取款功能 

3、转账功能 

4、查询功能 

 5、注销账号

 6、修改密码

 7、退出

完整代码 


引言

🏧🏧🏧本文主要介绍了如何通过Java实现ATM银行模拟系统,主要目的是为了能够对之前所学知识做一个简单的总结、更好的巩固一下。本次代码主要使用的是循环语句、方法、集合、类、API等知识。

🔥🔥🔥好了,废话不多说,直接开始看代码吧!

Java实现ATM银行模拟系统(含完整代码)

功能简介

😀😀😀首先是创建两个Java文件,一个文件用于各种功能的实现,另一个用于储存客户的信息类。该银行模拟系统首先能够实现的是登录注册的实现,随后在注册成功并实现登录以后,呈现出各个可实现的功能页面,这些功能主要分为七个,分别是:“存款、取款、转账、查询、注销账号、修改密码、退出”。接下来就对这些功能详略得当地进行讲解。 

登录和注册

 本块代码主要通过三个方法实现,分别是主菜单、登录、注册。

📖主菜单

通过简单的循环语句实现主菜单页面,各个功能实现过后重新返回主菜单页面

public static void main_menu(ArrayList<Account> b,Scanner sc){
        while (true){
            System.out.println("------------------------");
            System.out.println("1、登录账户");
            System.out.println("2、注册账号");
            System.out.println("------------------------");
            System.out.println("请选择你任意一个功能:");
            int choice = sc.nextInt();
            switch (choice) {
                case 1 -> login(b,sc);
                case 2 -> enroll(b,sc);
            }
        }
    }

1、注册 

🧧注册

在注册功能中,主要注册四个信息,分别是“账户、密码、可控制额度(在转账或者提现的最高限额)、银行卡号”,前面三个只需要为其赋值即可实现,银行卡号的随机生成才是重中之重,这里来着重讲解:首先进入while循环,定义字符串num用于获取卡号,通过一个简单的for循环获取六位随机生成的0到9的数字,生成号银行卡号之后,需要对银行卡号查重,首先判断集合中是否存有其他账户,若没有,则可以直接生成银行卡号,反之则需要将新生成的卡号与其他卡号一一比较,若出现重复,则重新随机生成银行卡号,反之则退出循环,将该账户的所有信息添加进集合中。

public static void enroll(ArrayList<Account> b,Scanner sc){                   //注册
        Account a = new Account();
        System.out.println("账户:");
        a.setName(sc.next());
        System.out.println("密码:");
        a.setPwd(sc.next());
        System.out.println("可控制额度:");
        a.setLine(sc.nextInt());
        Random r = new Random();
        boolean flag = true;
        while (flag) {
            String num = "";
            for (int i = 0; i < 6; i++) {
                int count = r.nextInt(0, 10);
                num += count;
            }
            if (b.size()>0) {
                for (int j = 0; j < b.size(); j++) {
                    if (num.equals(b.get(j).getNum())) {
                        flag = true;
                    } else {
                        flag = false;
                        a.setNum(num);
                        System.out.println("您的银行卡号是:" + num);
                    }
                }
            }else {
                flag=false;
                a.setNum(num);
                System.out.println("您的银行卡号是:" + num);
            }
        }
        b.add(a);
    }

2、登录

🏝️登录

通过方法获取集合b,并在代码头部位置通过b.size()判断集合中是否存有数据(即有无账户),若有账户,则进入while循环,先进行账户名的判断,通过count与b.size()比较,判断是否还有可判断的账户名,若没有则显示“账户名错误!请重新输入:”(判断失败一次,count自增1,直到count与b.size()相等的情况下),若有账户名,则通过API中的equala()函数对字符串进行比较,用户名正确则进入while循环中判断密码是否正确,不正确则重新输入密码,正确则跳转至Menu()函数。

public static void login(ArrayList<Account> b, Scanner sc){                    //登录
        int count = 0;
        if(b.size()==0){
            System.out.println("Sry,该系统中还没有账户");
        }else {
            while (true) {
                while (count < b.size()) {
                    System.out.println("账户名:");
                    String name = sc.next();
                    for (int i = 0; i < b.size(); i++) {
                        Account a = b.get(i);
                        if (a.getName().equals(name)) {
                            while (true) {
                                System.out.println("密码:");
                                String pwd = sc.next();
                                if (pwd.equals(a.getPwd())) {
                                    System.out.println("登录成功!");
                                    Menu(b,a,sc);
                                } else {
                                    System.out.print("密码错误!请重新输入:");
                                }
                            }
                        } else {
                            count++;
                            if (count == b.size()) {
                                System.out.print("账户名错误!请重新输入:");
                            }
                        }
                    }
                }
            }
        }
    }

Java实现ATM银行模拟系统(含完整代码)

具体功能实现 

✨功能展览页面 

public static void Menu(ArrayList<Account> b,Account a,Scanner sc){                            //菜单
        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、退出");
        System.out.println("------------------------");
        int choice = sc.nextInt();
        switch (choice){
            case 1 ->savings(b,a,sc);
            case 2 ->withdrawal(b,a,sc);
            case 3 ->transfer(b,a,sc);
            case 4 ->view(b,a,sc);
            case 5 ->logout(b,a,sc);
            case 6 ->change(b,a,sc);
            case 7 -> exit(b,a,sc);
        }
    }

1、存款功能 

💰存款 

通过简单的输入语句即可实现

public static void savings(ArrayList<Account> b,Account a,Scanner sc){                  //存款
        System.out.println("请输入存款金额:");
        int count = sc.nextInt();
        a.setBalance(a.getBalance()+count);
        System.out.println("存款成功:"+count);
        System.out.println("该账户的余额为:"+a.getBalance());
        Menu(b,a,sc);
    }

2、取款功能 

🤑取款

在取款功能中主要通过两个if语句实现对“余额是否足够”、“是否超出可控制额度”判断,只有在二者均实现的情况下,才可以完成取款功能。

public static void withdrawal(ArrayList<Account> b,Account a,Scanner sc){               //取款
        boolean flag = true;
        while (flag) {
            System.out.println("请输入取款金额:");
            int count = sc.nextInt();
            if (count > a.getBalance()) {
                System.out.println("不好意思您没有这么多的钱");
            } else {
                if(count>a.getLine()){
                    System.out.println("超出可控制余额!");
                }else {
                    a.setBalance(a.getBalance() - count);
                    System.out.println("取款成功:" + count);
                    System.out.println("该账户的余额为:" + a.getBalance());
                    Menu(b, a, sc);
                }

            }
        }
    }

3、转账功能 

Java实现ATM银行模拟系统(含完整代码)

🧧转账

首先通过一个if语句判断是否系统中有第二个账户可供转账,若没有则直接跳转至Menu()页面,进入转账页面之后,通过与输入的账户卡号比较,若未查询到,则重新跳转至Menu()页面,若查询到,则输出此账户的账户名(遮挡住姓氏),通过对姓氏的确认来判断转账目标是否正确,不正确则重新输入。之后的代码则与取款有异曲同工之妙。

public static void transfer(ArrayList<Account> b,Account a,Scanner sc) {                 //转账
        if (b.size() == 1) {
            System.out.println("该系统中没有可供转账的账户!");
            Menu(b, a, sc);
        }
        int count1 = 1;
        System.out.println("请输入要转账的账户:");
        String num = sc.next();
        boolean flag1 = true;
        boolean flag2 = true;
        for (int i = 0; i < b.size(); i++) {
            if (b.get(i).getNum().equals(num)) {
                Account c = b.get(i);
                String str1 ="*";
                str1 += c.getName().substring(1);
                System.out.println("查询到"+str1+"的客户");
                while (flag1) {
                    System.out.println("输入该客户的姓氏以确定目标正确:");
                    char str2 = sc.next().charAt(0);
                    if (str2 == c.getName().charAt(0)) {
                        System.out.println("客户目标正确!");
                        flag1 = false;
                    } else {
                        System.out.println("客户目标错误!");
                    }
                }
                while (flag2) {
                    System.out.println("输入转账金额:");
                    int count = sc.nextInt();
                    if (count > a.getBalance()) {
                        System.out.println("不好意思您没有这么多的钱");
                    }else {
                        if(count>a.getLine()){
                            System.out.println("超出可控制余额!");
                        }else {
                            flag2 =false;
                            c.setBalance(c.getBalance()+count);
                            a.setBalance(a.getBalance()-count);
                            System.out.println("转账成功:"+count);
                        }

                    }
                }
            }else {
                count1+=1;
                if(count1==b.size()){
                    System.out.println("查无此人");
                }
            }
        }
        Menu(b, a, sc);
    }

4、查询功能 

ℹ️查询

public static void view(ArrayList<Account> b,Account a,Scanner sc){                     //查询
        System.out.println("账户:"+a.getName());
        System.out.println("余额:"+a.getBalance());
        System.out.println("可控制余额:"+a.getLine());
        System.out.println("卡号:"+a.getNum());
        Menu(b, a, sc);
    }

 5、注销账号

😐注销 

通过集合中remove函数实现对账户的删除

public static void logout(ArrayList<Account> b,Account a,Scanner sc){                   //注销账号
        b.remove(a);
        System.out.println("注销成功!");
        Menu(b, a, sc);
    }

 6、修改密码

😟修改密码 

修改密码的时候,通过比较两次密码是否一致来确定修改是否成功

public static void change(ArrayList<Account> b,Account a,Scanner sc){                   //修改密码
        System.out.println("输入要修改的密码:");
        String pwd1 = sc.next();
        boolean flag = true;
        while (flag){
            System.out.println("确认密码:");
            String pwd2 = sc.next();
            if (pwd1.equals(pwd2)){
                flag=false;
                System.out.println("修改成功!");
            }else{
                System.out.println("密码有误!");
            }
        }
        Menu(b, a, sc);
    }

 7、退出

😭退出 

无需多言,直接返回至菜单界面

public static void exit(ArrayList<Account> b,Account a,Scanner sc){                     //退出
    main_menu(b,sc);
    }
}

创作不易给个三连吧 

Java实现ATM银行模拟系统(含完整代码)

完整代码 

menu.java 

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class menu {
    public static void main(String[] args) {
        ArrayList<Account> Accounts = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        main_menu(Accounts,sc);
    }
    public static void main_menu(ArrayList<Account> b,Scanner sc){
        while (true){
            System.out.println("------------------------");
            System.out.println("1、登录账户");
            System.out.println("2、注册账号");
            System.out.println("------------------------");
            System.out.println("请选择你任意一个功能:");
            int choice = sc.nextInt();
            switch (choice) {
                case 1 -> login(b,sc);
                case 2 -> enroll(b,sc);
            }
        }
    }
    public static void Menu(ArrayList<Account> b,Account a,Scanner sc){                            //菜单
        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、退出");
        System.out.println("------------------------");
        int choice = sc.nextInt();
        switch (choice){
            case 1 ->savings(b,a,sc);
            case 2 ->withdrawal(b,a,sc);
            case 3 ->transfer(b,a,sc);
            case 4 ->view(b,a,sc);
            case 5 ->logout(b,a,sc);
            case 6 ->change(b,a,sc);
            case 7 -> exit(b,a,sc);
        }
    }
    public static void login(ArrayList<Account> b, Scanner sc){                    //登录
        int count = 0;
        if(b.size()==0){
            System.out.println("Sry,该系统中还没有账户");
        }else {
            while (true) {
                while (count < b.size()) {
                    System.out.println("账户名:");
                    String name = sc.next();
                    for (int i = 0; i < b.size(); i++) {
                        Account a = b.get(i);
                        if (a.getName().equals(name)) {
                            while (true) {
                                System.out.println("密码:");
                                String pwd = sc.next();
                                if (pwd.equals(a.getPwd())) {
                                    System.out.println("登录成功!");
                                    Menu(b,a,sc);
                                } else {
                                    System.out.print("密码错误!请重新输入:");
                                }
                            }
                        } else {
                            count++;
                            if (count == b.size()) {
                                System.out.print("账户名错误!请重新输入");
                            }
                        }
                    }
                }
            }
        }
    }
    public static void enroll(ArrayList<Account> b,Scanner sc){                   //注册
        Account a = new Account();
        System.out.println("账户:");
        a.setName(sc.next());
        System.out.println("密码:");
        a.setPwd(sc.next());
        System.out.println("可控制额度:");
        a.setLine(sc.nextInt());
        Random r = new Random();
        boolean flag = true;
        while (flag) {
            String num = "";
            for (int i = 0; i < 6; i++) {
                int count = r.nextInt(0, 10);
                num += count;
            }
            if (b.size()>0) {
                for (int j = 0; j < b.size(); j++) {
                    if (num.equals(b.get(j).getNum())) {
                        flag = true;
                    } else {
                        flag = false;
                        a.setNum(num);
                        System.out.println("您的银行卡号是:" + num);
                    }
                }
            }else {
                flag=false;
                a.setNum(num);
                System.out.println("您的银行卡号是:" + num);
            }
        }
        b.add(a);
    }
    public static void savings(ArrayList<Account> b,Account a,Scanner sc){                  //存款
        System.out.println("请输入存款金额:");
        int count = sc.nextInt();
        a.setBalance(a.getBalance()+count);
        System.out.println("存款成功:"+count);
        System.out.println("该账户的余额为:"+a.getBalance());
        Menu(b,a,sc);
    }
    public static void withdrawal(ArrayList<Account> b,Account a,Scanner sc){               //取款
        boolean flag = true;
        while (flag) {
            System.out.println("请输入取款金额:");
            int count = sc.nextInt();
            if (count > a.getBalance()) {
                System.out.println("不好意思您没有这么多的钱");
            } else {
                if(count>a.getLine()){
                    System.out.println("超出可控制余额!");
                }else {
                    a.setBalance(a.getBalance() - count);
                    System.out.println("取款成功:" + count);
                    System.out.println("该账户的余额为:" + a.getBalance());
                    Menu(b, a, sc);
                }

            }
        }
    }
    public static void transfer(ArrayList<Account> b,Account a,Scanner sc) {                 //转账
        if (b.size() == 1) {
            System.out.println("该系统中没有可供转账的账户!");
            Menu(b, a, sc);
        }
        int count1 = 1;
        System.out.println("请输入要转账的账户:");
        String num = sc.next();
        boolean flag1 = true;
        boolean flag2 = true;
        for (int i = 0; i < b.size(); i++) {
            if (b.get(i).getNum().equals(num)) {
                Account c = b.get(i);
                String str1 ="*";
                str1 += c.getName().substring(1);
                System.out.println("查询到"+str1+"的客户");
                while (flag1) {
                    System.out.println("输入该客户的姓氏以确定目标正确:");
                    char str2 = sc.next().charAt(0);
                    if (str2 == c.getName().charAt(0)) {
                        System.out.println("客户目标正确!");
                        flag1 = false;
                    } else {
                        System.out.println("客户目标错误!");
                    }
                }
                while (flag2) {
                    System.out.println("输入转账金额:");
                    int count = sc.nextInt();
                    if (count > a.getBalance()) {
                        System.out.println("不好意思您没有这么多的钱");
                    }else {
                        if(count>a.getLine()){
                            System.out.println("超出可控制余额!");
                        }else {
                            flag2 =false;
                            c.setBalance(c.getBalance()+count);
                            a.setBalance(a.getBalance()-count);
                            System.out.println("转账成功:"+count);
                        }

                    }
                }
            }else {
                count1+=1;
                if(count1==b.size()){
                    System.out.println("查无此人");
                }
            }
        }
        Menu(b, a, sc);
    }
    public static void view(ArrayList<Account> b,Account a,Scanner sc){                     //查询
        System.out.println("账户:"+a.getName());
        System.out.println("余额:"+a.getBalance());
        System.out.println("可控制余额:"+a.getLine());
        System.out.println("卡号:"+a.getNum());
        Menu(b, a, sc);
    }
    public static void logout(ArrayList<Account> b,Account a,Scanner sc){                   //注销账号
        b.remove(a);
        System.out.println("注销成功!");
        Menu(b, a, sc);
    }
    public static void change(ArrayList<Account> b,Account a,Scanner sc){                   //修改密码
        System.out.println("输入要修改的密码:");
        String pwd1 = sc.next();
        boolean flag = true;
        while (flag){
            System.out.println("确认密码:");
            String pwd2 = sc.next();
            if (pwd1.equals(pwd2)){
                flag=false;
                System.out.println("修改成功!");
            }else{
                System.out.println("密码有误!");
            }
        }
        Menu(b, a, sc);
    }
    public static void exit(ArrayList<Account> b,Account a,Scanner sc){                     //退出
    main_menu(b,sc);
    }
}

Account.java 文章来源地址https://www.toymoban.com/news/detail-405106.html

public class Account {
    private String name;
    private String pwd;
    private int balance=0;//余额
    private int line;//可控制额度
    private String num;
    public Account() {
    }
    public Account(String name, String pwd, int balance, int line,String num) {
        this.name = name;
        this.pwd = pwd;
        this.balance = balance;
        this.line = line;
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }

    public int getLine() {
        return line;
    }

    public void setLine(int line) { this.line = line; }

    public String getNum() { return num;}

    public void setNum(String num) { this.num = num; }
}

到了这里,关于Java实现ATM银行模拟系统(含完整代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【操作系统原理实验】银行家算法模拟实现

    选择一种高级语言如C/C++等,编写一个银行家算法的模拟实现程序。1) 设计相关数据结构;2) 实现系统资源状态查看、资源请求的输入等模块;3) 实现资源的预分配及确认或回滚程序;4) 实现系统状态安全检查程序;5) 组装各模块成一个完整的模拟系统。 (1)设计思想: 1、

    2024年02月01日
    浏览(44)
  • 图书管理系统(Java实现)[附完整代码]

    作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:JavaSE 作者专栏:大三学生,希望跟大家一起进步! wx:csy1330748830 需要可以加,免费给。我是女孩子,别叫我哥,呜呜。 文章目录 目录 文章目录 一、图书管理系统菜单 二、实现基本框架  三、实现业务 3.1 打印所有图书  

    2023年04月23日
    浏览(39)
  • 案例:模拟京东秒杀倒计时(完整代码)【前端实现】

    目录 实现效果  案例分析 代码分析 代码实现 (完整) 背景图片引用   实现效果  案例分析  1.倒计时是不断变化的 所以需要一个定时器( setInterval )  2.三个盒子通过 innerHTML 进行赋值 放入时分秒  3.使用 Date() 对象获取当前时间(时间戳)  4.传递参数获取活动开始的时间

    2024年02月09日
    浏览(56)
  • 基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)

    本课题下的功能要求有: 实现学生信息、班级、院系、专业等的管理 实现课程、学生成绩信息管理 实现学生的奖惩信息管理 创建规则用于限制性别项只能输入“男”或“女” 创建视图查询各个学生的学号、姓名、班级、专业、院系 创建存储过程查询指定学生的成绩单 创建

    2024年02月11日
    浏览(58)
  • java实现简单的银行存款取款系统

    java实现简单的银行存款取款系统 本次代码适合初学者小白,连数据库都没有运用。一次性程序哈哈。 你得先了解java中以下基本内容。 1、 数组 2、 方法 3、 类 4、 Scanner扫描器 : 在写这段代码的过程中,我学到了以下几个知识点: 1、 类和方法的灵活应用。 2、类既然可以

    2024年02月08日
    浏览(37)
  • 【java】【基础8】入门结业-ATM系统实战

      目录 一、ATM项目技术  二、能达成的能力  三、开始编码 3.1 系统架构搭建、欢迎页设计  3.1.1 Account 3.1.2 ATM  3.1.3 Test 3.2 开户功能实现 3.2.1 修改AccountgetUserName()  3.2.2 ATM 开户操作  3.2.3 ATM为新用户生成一个随机卡号​编辑 3.3 登录功能实现 3.4 操作页展示、查询账户、退出

    2024年02月16日
    浏览(42)
  • 银行客户关系管理系统springboot财务金融进销存java jsp源代码

    本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 银行客户关系管理系统springboot 系统有1权限:管理员 系统管理 用户管理 角色管理 菜单管理 部门管理 岗位

    2024年02月12日
    浏览(48)
  • 【模拟 简易银行系统~python】

    个人昵称:lxw-pro 个人主页:欢迎关注 我的主页 个人感悟: “失败乃成功之母”,这是不变的道理,在失败中总结,在失败中成长,才能成为IT界的一代宗师。 现在呀,虽说已经大面积的使用微信支付、支付宝支付等,可要想微信、支付宝等留有余额,还是离不开我们的存

    2023年04月16日
    浏览(28)
  • java每日一题——ATM系统编写(答案及编程思路)

    基础语句学完,也可以编写一些像样的程序了,现在要做的是多加练习,巩固下知识点,打好基础,daydayup! 题目:模仿银行ATM系统,可以创建用户,存钱,转账,修改密码注销账户等操作 思路:利用面向对象编程:1, 定义一个账户类 Account,至少需要包含(卡号、姓名、性

    2024年01月20日
    浏览(41)
  • 基于Javaweb实现ATM机系统开发实战(十)取款功能实现

    老规矩,先看前端页面:  创建同名servlet: 接口: 实现类: 数据层: 这里我们为了方便实现交易记录的查询,先创建一个实体类:

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包