Java简单银行ATM系统

package ATM;

/**
 * 入口类
 */

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

public class test {
    public static void main(String[] args) {

        ArrayList<atm> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("========欢迎进入ATM系统========");
            System.out.println("1.登录账号");
            System.out.println("2.注册开户");
            System.out.println("请输入想要执行操作对应的编号:");
            int x = sc.nextInt();

            switch (x){
                case 1:
                    //用户登录
                    login(list,sc);
                    break;
                case 2:
                    //用户注册
                    zhuce(list);
                    break;
                default:
                    System.out.println("您输入的命令不存在~~");
            }
        }
    }

    /**
     * 开户功能的实现
     * @param l
     */
    public static void zhuce(ArrayList<atm> l)  {
        atm a = new atm();

        System.out.println("========欢迎进入注册界面========");
        Random r = new Random(9);
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入您的姓名:");
        String c = sc.next();
        a.setName(c);

        while (true) {
            System.out.println("请输入您的密码:");
            String m1 = sc.next();
            System.out.println("请确认您的密码:");
            String m2 = sc.next();
            //密码判断
            if(m1.equals(m2)){
                System.out.println("注册成功!");
                a.setPassworld(m2);
                break;
            }else {
                System.out.println("密码不一致,请重新输入!");
            }
        }

        while (true) {
            System.out.println("请您输入您的存取限额:");
            int ed = sc.nextInt();
            if(ed <= 5000 && ed >= 1000) {
                a.setEd(ed);
                break;
            }else {
                System.out.println("额度限制为1000~5000");
            }
        }

        //生成卡号,独立出一个方法
        String cd = getCardId(l);
        a.setNumber(cd);
        //将对象添加到集合中去
        l.add(a);

        System.out.println("恭喜您" + c + "先生/女士" + "开户成功" + "您的卡号是:" + cd);
    }


    /**
     * 为账户创建一个八位数的号码,与其他账户不同
     * @return
     */
    public static String getCardId(ArrayList<atm> list){
        Random r = new Random();
        while (true) {
            //先生成
            String cd = "";
            for (int i = 0; i < 8; i++) {
                cd += r.nextInt(10);
            }
            //再判断,单独创建方法,为了方便以后的使用
            atm f = getAtmByCardId(list, cd);
            if(f == null){
                return cd;
            }
        }
    }

    /**
     * 传进来一个卡号,查出来一个账户
     * @param list
     * @param CardId
     * @return
     */
    public static atm getAtmByCardId(ArrayList<atm> list,String CardId){
        for (int i = 0; i < list.size(); i++) {
            atm l4 =list.get(i);
            if(CardId.equals(l4.getNumber())){
                return l4;
            }
        }
        return null;
    }

    /**
     * //登录功能的实现
     * @param list//全部对象的集合
     * @param sc//扫描器
     */
    private static void login(ArrayList<atm> list,Scanner sc) {
        System.out.println("========欢迎进入登录界面========");

        //判断是否存在账户
        if(list.size() == 0){
            System.out.println("当前系统无账户,请您先注册一个账户~~");
            return;
        }

        while (true) {
            System.out.println("请输入您的账号:");
            String st = sc.next();
            atm l = getAtmByCardId(list,st);
            if(l != null){
                while (true) {
                    //账号存在
                    System.out.println("请您输入密码:");
                    String mima = sc.next();
                    //判断密码
                    if(l.getPassworld().equals(mima)){
                        System.out.println("恭喜您" + l.getName() + "密码正确,登陆成功!");

                        //展示操作页
                        showUserComand(list,sc,l);
                        return;//干掉当前方法,回到主界面

                    }else {
                        System.out.println("对不起,您输入的密码有误~~");
                    }
                }
            }else {
                System.out.println("系统中未查询到该账户~~");
            }
        }
    }

    /**
     * 展示登录后的操作页
     */
    private static void showUserComand(ArrayList<atm> list,Scanner sc,atm st) {
        while (true) {
            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.注销账户");

            int i = sc.nextInt();
            switch (i){
                case 1://查询账户
                    show(st);
                    break;
                case 2://存款
                    add(st,sc);
                    break;
                case 3://取款
                    getOut(st,sc);
                    break;
                case 4://转账
                    give(list,st,sc);
                    break;
                case 5://修改密码
                    change(st,sc);
                    return;//密码更改成功,需要重新登录
                case 6://退出系统
                    System.out.println("您已退出系统~~");
                    return;//干掉当前方法 -------- 再干掉上面的登录方法即可退出到主界面
                case 7://注销账户
                    System.out.println("您确认要注销当前账户吗?");
                    System.out.println("1.确认");
                    System.out.println("2.取消");
                    int x = sc.nextInt();
                    switch (x) {
                        case 1:
                            System.out.println("您真的确认要注销账户吗?");
                            System.out.println("1.确认");
                            System.out.println("2.取消");
                            int y = sc.nextInt();
                            switch (y) {
                                case 1:
                                    System.out.println("请输入密码:");
                                    String sr = sc.next();
                                    if(sr.equals(st.getPassworld())){
                                        list.remove(st);
                                        System.out.println("销户成功,有缘再见~~");
                                        return;
                                    }
                                case 2:
                                    return;
                            }
                        case 2:
                            return;
                    }
                default:
                    System.out.println("您输入的操作指令不存在~~");
            }
        }
    }

    /**
     * 展示当前账户信息
     * @param st
     */
    private static void show(atm st) {
        System.out.println("您的账号是:" + st.getNumber());
        System.out.println("您的姓名是:" + st.getName());
        System.out.println("您的密码是:" + st.getPassworld());
        if(st.getMoney() == 0){
            System.out.println("您已经没钱了,快去存钱吧!");
        }else {
            System.out.println("您的余额是:" + st.getMoney());
        }
        System.out.println("您的存取额度是:" + st.getEd());
    }

    /**
     * 此方法用于存款
     * @param st
     */
    private static void add(atm st,Scanner sc) {
        while (true) {
            System.out.println("请输入您的存款数额");
            int x = sc.nextInt();
            if(x > st.getEd()){
                System.out.println("超出了您的存取限额,请您分批存款~~");
            }else {
                System.out.println("存款成功~~");
                int y = st.getMoney();
                st.setMoney(x + y);
                break;
            }
        }
    }

    /**
     * 此方法用于取款
     * @param st
     * @param sc
     */
    private static void getOut(atm st, Scanner sc) {
        while (true) {
            System.out.println("请输入您的存款金额:");
            int x = sc.nextInt();
            if(x > st.getMoney()){
                System.out.println("您的取款数额超过了余额,请您更改数额~~");
            }else if(x > st.getEd()){
                System.out.println("超出了您的存取限额,请分批取款~~");
            }else {
                System.out.println("取款成功~~");
                int z = st.getMoney();
                st.setMoney(z - x);
                break;
            }
        }
    }

    /**
     * 此方法用于更改密码
     * @param st
     * @param sc
     */
    private static void change(atm st, Scanner sc) {
        while (true) {
            System.out.println("请输入您的账户密码:");
            String sr = sc.next();
            if(sr.equals(st.getPassworld())){
                System.out.println("新旧密码不能一致,请重新输入");
            }else {
                System.out.println("请再次输入新密码:");
                String sr2 = sc.next();
                if(sr.equals(sr2)){
                    System.out.println("密码更改成功,请重新登录~~");
                    return;//密码已更改,需要退出系统
                }else {
                    System.out.println("两次密码不一致,请重新输入进行操作");
                }
            }
        }
    }

    /**
     * 此方法用于转账
     * @param list
     * @param st
     * @param sc
     */
    private static void give(ArrayList<atm> list, atm st, Scanner sc) {
        if(list.size() < 2){
            System.out.println("当前系统账户少于2,不支持转账");
            return;
        }else {
            System.out.println("请输入你要转账的账户:");
            String sr = sc.next();
                for (int i = 0; i < list.size(); i++) {
                    if(sr.equals(list.get(i).getNumber())){
                        System.out.println("请输入您的转账金额:");
                        int z = sc.nextInt();
                        if(z > st.getMoney()){
                            System.out.println("您的转账数额超过了余额,请您更改数额~~");
                        }else if(z > st.getEd()){
                            System.out.println("超出了您的存取限额,请分批转账~~");
                        }else {
                            System.out.println("您已经成功向" + list.get(i).getName() + "转账");
                            int x = st.getMoney();
                            st.setMoney(x - z);
                            int t = list.get(i).getMoney();
                            list.get(i).setMoney(t + z);
                            break;
                    }
                }else {
                        System.out.println("未找到账户信息,请重新输入~~");
                    }
            }
      }
  }
}
package ATM;

/**
 * 账户类
 */
public class atm {
    private String number;
    private String name;
    private String passworld;
    private int money;
    private int ed;

    public atm() {
    }

    public atm(String number, String name, String passworld, int money, int ed) {
        this.number = number;
        this.name = name;
        this.passworld = passworld;
        this.money = money;
        this.ed = ed;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

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

    public String getPassworld() {
        return passworld;
    }

    public void setPassworld(String passworld) {
        this.passworld = passworld;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public int getEd() {
        return ed;
    }

    public void setEd(int ed) {
        this.ed = ed;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值