您的位置 首页 java

java模拟实现ATM机功能

java模拟实现ATM机功能

案例:

模拟实现ATM机的功能:
功能描述:

  • 实现用户程登录及创建,实现查询余额,取出,存款,转账等

1、 测试 类:

 public class Atm {
    public static void main(String[] args) {
        Method me =new Method();
        me.start();
    }
12345  

2、用户类:

 public class Usr {
    private  String  account  ;					//账户
    private String cood;							//密码
    private long  balance ;							//余额

    public Usr(String account,String cood,long balance) {
        this.cood=cood;
        this.account=account;
        this.balance=balance;

    }

    public Usr() {
    }

    public void setCood(String cood) {
        this.cood=cood;
    }
    public String getCood() {
        return cood;
    }

    public void setAccount(String account) {
        this.account=account;
    }
    public String getAccount() {
        return account;
    }

    public void setBalance(long balance) {
        this.balance=balance;
    }
    public long getBalance() {
        return balance;
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

    @Override
    public String toString() {
        return "Usr{" +
                "account='" + account + ''' +
                ", cood='" + cood + ''' +
                ", balance=" + balance +
                '}';
    }
}

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051  

3、方法类:

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

public class Method {
    Random ran = new Random();
    ArrayList<Usr> list = new ArrayList<Usr>();
    Scanner sc = new Scanner(System.in);
    Usr usr = new Usr();

    public void method00() {                        //创建4个初始账户
        Usr usr1 = new Usr("123456", "666666", 100000);
        Usr usr2 = new Usr("888888", "666666", 200000);
        Usr usr3 = new Usr("666666", "666666", 300000);
        Usr usr4 = new Usr("999999", "666666", 400000);
        list.add(usr1);
        list.add(usr2);
        list.add(usr3);
        list.add(usr4);
    }

    public void start() {
        method00();
        System.out.println("这里创建了4个供测试的账户分别是:");
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        System.out.println(list.get(3));
        System.out.println("欢迎使用本公司ATM机,请选择您需要的服务");
        method01();
    }

    public void method01() {                         // 选择服务编号


        System.out.println("1.登陆    2.创建账户    3.退出");
        int a = shuRu(1, 3);
        switch (a) {
            case 1:
                // 有账户,直接登陆;
                dl();
                 break ;
            case 2:
                // 无账户,创建账户
                cj();
                break;
            case 3:
                break;
        }
    }

    public int shuRu(int min, int max) {        //输入
        int aa = 0;
        while (true) {
            String str = sc.nextLine();
            try {
                int a =  Integer .valueOf(str);
                if (a >= min && a <= max) {
                    aa = a;
                    break;
                } else {
                    System.out.println("请输入正确的服务编号");
                }
            } catch (Exception e) {
                System.out.println("输入不合法,请您输入正确的服务编号");
            }
        }
        return aa;
    }

    public int shuRu(int min) {        //输入
        int aa = 0;
        while (true) {
            String str = sc.nextLine();
            try {
                int a = Integer.valueOf(str);
                if (a >= min && a <= Integer.MAX_VALUE) {
                    aa = a;
                    break;
                } else {
                    System.out.println("请输入合理的金额,您最小的操作金额为100元");
                }
            } catch (Exception e) {
                System.out.println("输入不合法");
            }
        }
        return aa;
    }

    public void cj() { // 创建账户
        System.out.println("请输入您的六位密码,您共有三次输入机会");
        String str1 = method020101();
        if (str1 == "") {
            System.out.println("您的输入机会以用完,请重新选择服务");
            method01();
        } else {
            System.out.println("请确认您的六位密码,您共有三次确认机会");
            String str2 = method020101();
            if (str1 == "") {
                System.out.println("您的输入机会以用完,请重新选择服务");
                method01();
            } else {
                boolean a = method020102(str1, str2);    //比较两次输入
                if (a) {
                    String str3 = sczh();
                    usr.setA cc ount(str3);
                    usr.setCood(str1);
                    list.add(usr);
                    System.out.println("恭喜您,您的账户创建成功,账号为:" + str3 + "您的密码为:" + str1);
                    fw(str3, str1);
                } else {
                    System.out.println("您两次输入的密码不同,请选择您需要的服务");
                    method01();
                }
            }
        }
    }

    public String method020101() { // 输入密码
        String str = "";
        for (int a = 3; a >= 1; a--) {
            String str1 = sc.nextLine();
            try {
                int aa = Integer.valueOf(str1);
                if (str1.length() == 6) {
                    str = str1;
                    a = 0;
                } else {
                    if (a > 1) {
                        System.out.println("请您输入6位密码,您还有" + (a - 1) + "次机会");
                    } else {
                        break;
                    }
                }

            } catch (Exception e) {
                if (a > 1) {
                    System.out.println("输入格式不合法,请输入6位数字,例如666666");
                }
            }

        }
        return str;
    }

    public boolean method020102(String str1, String str2) {                //比较两次输入
        boolean a;
        if (str1.equals(str2)) {
            a = true;
        } else {
            a = false;
        }
        return a;
    }

    public String sczh() {                               //随机生成账户
        String str = "";
        for (int b = 0; b < 6; b++) {
            int a = ran.nextInt(10);
            str += a;
        }
        for (int a = 0; a < list.size(); a++) {
            if (str.equals(list.get(a).getAccount())) {
                System.out.println("该账户以存在,请重新选择服务编号");
                method01();
                break;
            }
        }
        return str;
    }

    public void dl() {                                 //登录
        System.out.println("尊敬的客户,您好,请输入您的账户,您共有三次输入机会");
        String zz;
        String str;
        for (int a = 3; a >= 1; a--) {
            str = sc.nextLine();
            try {
                int aa = Integer.valueOf(str);
                if (str.length() == 6) {
                    for (int cc = 0; cc < list.size(); cc++) {
                        if (str.equals(list.get(cc).getAccount())) {
                            System.out.println("请输入您的六位密码");
                            String str1 = method020101();
                            if (str1.equals(list.get(cc).getCood())) {
                                zz = list.get(cc).getAccount();
                                System.out.println("登录成功,请选择您需要的服务");
                                fw(zz, str1);
                                a = 0;
                                break;
                            } else {
                                System.out.println("密码输入错误,请重新选择服务编号");
                                method01();
                                a = 0;
                                cc = list.size();
                                break;
                            }

                        } else if (!str.equals(list.get(cc).getAccount()) && cc == list.size() - 1) {
                            System.out.println("账户不存在,请重新输入");
                        }
                    }
                } else {
                    if (a > 1) {
                        System.out.println("输入错误,请重新输入您的账户,您还有" + (a - 1) + "次机会");
                    } else {
                        System.out.println("您的输入机会以用完,请重新选择服务");
                        method01();
                        a = 0;
                        break;
                    }
                }
            } catch (Exception e) {
                if (a > 1) {
                    System.out.println("输入格式错误,请重新输入您的账户,您还有" + (a - 1) + "次机会");
                } else {
                    System.out.println("您的输入机会以用完,请重新选择服务");
                    method01();
                    a = 0;
                    break;
                }
            }
        }
    }

    public void fw(String account, String cood) {
        System.out.println("尊敬的客户,您好,请选择您需要的服务:1.修改密码   2.存款   3.取款   4.查询余额   5.转账   0.退出");
        int a = shuRu(0, 5);
        int b = czzh(account, cood, a);
        switch (a) {
            case 1:
                fw1(account, cood, b);
                break;
            case 2:
                fw2(account, cood, b);
                break;
            case 3:
                fw3(account, cood, b);
                break;
            case 4:
                fw4(account, cood, b);
                break;
            case 5:
                fw5(account, cood, b);
                break;
            case 0:
                System.out.println("服务结束,欢迎您的下次使用");
        }
    }

    public void fw1(String account, String cood, int b) {
        System.out.println("您确定要修改您的密码,1、确定   2、返回");
        int bb = shuRu(1, 2);
        switch (bb) {
            case 1:
                System.out.println("请输入您的原密码");
                String str = method020101();
                boolean aa = method020102(str, cood);
                if (aa) {
                    System.out.println("请输入您的新密码");
                    String str1 = method020101();
                    System.out.println("请确认您的新密码");
                    String str2 = method020101();
                    boolean a = method020102(str1, str2);
                    if (a) {
                        list.get(b).setCood(str1);
                        System.out.println("您的密码修改成功,您的新密码为:" + str1);
                        fw(account, cood);

                    } else {
                        System.out.println("您两次输入的密码不同,请重新选择服务");
                        fw(account, cood);
                    }
                } else {
                    System.out.println("您的密码输入错误,请重新选择服务");
                    fw(account, cood);
                }
                break;
            case 2:
                fw(account, cood);
                break;
        }
    }

    public void fw2(String account, String cood, int b) {//不可能这个账户不存在,所以没有进行判断
        System.out.println("请输入您要存入的金额");
        int a = shuRu(100);
        list.get(b).setBalance((list.get(b).getBalance()) + a);
        System.out.println("存款成功,您的余额为:" + list.get(b).getBalance());
        fw(account, cood);
    }

    public void fw3(String account, String cood, int b) {
        System.out.println("请输入你要取出的金额");
        int a = shuRu(100);
        if (a <= list.get(b).getBalance()) {
            list.get(b).setBalance((list.get(b).getBalance()) - a);
            System.out.println("取款成功,您的余额为:" + list.get(b).getBalance());
            fw(account, cood);
        } else {
            System.out.println("您的余额不足,请确认余额");
            fw(account, cood);
        }
    }

    public void fw4(String account, String cood, int b) {
        System.out.println("您的余额为:" + list.get(b).getBalance());
        fw(account, cood);
    }

    public void fw5(String account, String cood, int b) {
        System.out.println("请输入对方的账户");
        String str = fw501();
        boolean a = fw0502(str);
        if (a) {
            System.out.println("请输入您要转账的金额");
            int c = shuRu(100);
            if (c <= list.get(b).getBalance()) {
                list.get(b).setBalance(list.get(b).getBalance() - c);
                System.out.println("转账成功,您的余额为:" + list.get(b).getBalance());
                fw(account, cood);
            } else {
                System.out.println("您的余额不足,请确认您的余额后重试");
                fw(account, cood);
            }
        } else {
            System.out.println("账户不存在,请确认后再操作");
            fw(account, cood);
        }
    }

    public String fw501() {
        String str;
        while (true) {
            String str1 = sc.nextLine();
            try {
                int aa = Integer.valueOf(str1);
                if (str1.length() == 6) {
                    str = str1;
                    break;
                } else {
                    System.out.println("请输入正确的六位账户");
                }
            } catch (Exception e) {
                System.out.println("格式错误,请输入正整数");
            }
        }
        return str;
    }

    public boolean fw0502(String str) {
        boolean aa = false;
        for (int a = 0; a < list.size(); a++) {
            if (str.equals(list.get(a).getAccount())) {
                aa = true;
            }
        }
        return aa;
    }

    public int czzh(String account, String cood, int a) {                 //查找账户在集合中是第几号元素
        int aa = -1;
        for (int b = 0; b < list.size(); b++) {
            if (account.equals(list.get(b).getAccount())) {
                aa = b;
            }
        }
        return aa;
    }

}
  

如有不同看法,欢迎留下您宝贵的意见!

文章来源:智云一二三科技

文章标题:java模拟实现ATM机功能

文章地址:https://www.zhihuclub.com/199933.shtml

关于作者: 智云科技

热门文章

网站地图