开启Java之旅——ATM机系统代码(24.4.9)

这篇文章详细介绍了使用Java编写的ATM机模拟程序,包含主菜单、登录、注册、存款、取款、转账、查询、注销、修改密码和退出等核心功能的代码实现。
摘要由CSDN通过智能技术生成

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

完整代码 

menu.java

package com.sh.ATM;
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

package com.sh.ATM;

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; }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值