• 简易的银行系统(使用ArrayList集合)


    使用面向对象来完成一个银行系统的功能

    1. 账户类,首页设计
    2. 用户开户功能实现
    3. 用户登录功能实现
    4. 用户操作页面设计,查询账户,退出账户功能
    5. 用户存款取款功能设计
    6. 用户转账功能设计
    7. 用户密码修改功能,销户功能
    package com.zxx.test;
    
    public class Account {
        private String cardId;
        private String userName;
        private String password;
        private double money;
        private double quoteMoney;
    
        public Account(String cardId, String userName, String password, double quoteMoney) {
            this.cardId = cardId;
            this.userName = userName;
            this.password = password;
            this.quoteMoney = quoteMoney;
        }
    
        public Account() {
        }
    
        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 getQuoteMoney() {
            return quoteMoney;
        }
    
        public void setQuoteMoney(double quoteMoney) {
            this.quoteMoney = quoteMoney;
        }
    }
    
    package com.zxx.test;
    
    import java.util.ArrayList;
    import java.util.Random;
    import java.util.Scanner;
    
    public class ATMSystem {
        public static void main(String[] args) {
            ArrayList<Account> accounts=new ArrayList<>();
           showMain(accounts);
        }
    
        private static void showMain(ArrayList<Account> accounts) {
            while (true) {
                System.out.println("欢迎您进入黑马ATM系统");
                System.out.println("1.登录账户");
                System.out.println("2.注册开户");
                System.out.println("请输入命令1,2选择对应的操作");
                Scanner sc=new Scanner(System.in);
                int command=sc.nextInt();
                switch (command){
                    case 1://登录
                        login(accounts,sc);
                        break;
                    case 2://注册
                        reginster(accounts,sc);
                        break;
                    default:
                        System.out.println("输入有误,");
                        break;
                }
            }
        }
    
        private static void login(ArrayList<Account> accounts, Scanner sc) {
            if (accounts.size()==0){
                System.out.println("系统中暂无任何账户");
                return;
            }
            System.out.println("===============欢迎来到登录页面=================");
            while (true) {
                System.out.println("请您输入您的卡号");
                String cardId=sc.next();
                Account acc=getAccountById(accounts,cardId);///////////////////////////////从这传的acc
                //一定要去判断一下这个用户是不是空的,否则会出现空指针异常
                if (acc != null) {
                    if (acc.getCardId().equals(cardId)){
                        System.out.println("请输入您的密码");
                        String password=sc.next();
                        if (acc.getPassword().equals(password)){
                            System.out.println(acc.getUserName()+"先生/女士,欢迎您进入系统!");
                            showAccount(accounts,acc,sc);
                            return;
                        }else {
                            System.out.println("密码有误!!");
                        }
    
                    }else {
                        System.out.println("卡号输入错误");
                    }
    
                }else {
                    System.out.println("无该卡号的信息,请重新输入");
                }
    
            }
    
        }
        private static void showAccount(ArrayList<Account> accounts,Account acc, Scanner sc) {
            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.注销账户");
                System.out.println("您可以继续选择功能进行操作:");
                int type=sc.nextInt();
                switch (type){
                    case 1://查询
                        find(acc,sc);
                        break;
                    case 2://存款
                        depositMoney(acc,sc);
                        break;
                    case 3://取款
                        drawMoney(acc,sc);
                        break;
                    case 4://转账
                        transfromMoney(acc,sc,accounts);
                        break;
                    case 5://修改密码
                        updatePassword(acc,sc);
                        return;
                    case 6://退出
                        System.out.println("感谢您的信赖和光临");
                        return;
                    case 7://注销
                        accounts.remove(acc);
                        return;
                    default:
                        System.out.println("输入有误");
                        break;
                }
            }
        }
    
        private static void transfromMoney(Account acc, Scanner sc, ArrayList<Account> accounts) {
            System.out.println("===============欢迎来到转账页面=================");
            if (accounts.size()<2){
                System.out.println("当前系统中无其它用户!");
                return;
            }
            if (acc.getMoney()<0){
                System.out.println("穷逼,自己都没钱还转啥转");
                return;
            }
            while (true) {
                System.out.println("请输入转账用户的ID");
                String cardId=sc.next();
               Account account= getAccountById(accounts,cardId);
                if (acc.getCardId().equals(cardId)){
                    System.out.println("调皮,不能给自己转账!");
                }else {
                    if (cardId==null){
                        System.out.println("卡号输入错误");
                    }else {
                        String name="*"+acc.getUserName().substring(1);
                        System.out.println("您当前要为"+name+"转账!");
                        System.out.println("请输入姓氏来进一步确认");
                        String userName=sc.next();
                        if (acc.getUserName().startsWith(userName)){
                            System.out.println("请输入转账金额:");
                            double money=sc.nextDouble();
                            if (money>acc.getMoney()){
                                System.out.println("账户余额不足");
                            }else {
                                acc.setMoney(acc.getMoney()-money);
                                account.setMoney(account.getMoney()+money);
                                System.out.println("转账成功!账户当前余额为:"+acc.getMoney());
                                return;
                            }
                        }else {
                            System.out.println("姓氏验证有误");
                        }
                    }
    
                }
            }
    
        }
    
        private static void updatePassword(Account acc, Scanner sc) {
            System.out.println("===============欢迎来到修改密码页面=================");
            while (true) {
                System.out.println("请输入原来密码");
                String password=sc.next();
                if (acc.getPassword().equals(password)){
                    System.out.println("请输入修改后的密码");
                    String upPassword=sc.next();
                    System.out.println("请确认修改后的密码");
                    String okPassword=sc.next();
                    if (upPassword.equals(okPassword)){
                        acc.setPassword(upPassword);
                        System.out.println("修改密码成功!");
                        return;
                    }else {
                        System.out.println("两次密码不一致~~");
                    }
                }else {
                    System.out.println("密码错误!");
                }
            }
    
        }
    
        private static void drawMoney(Account acc, Scanner sc) {
            System.out.println("===============欢迎来到取钱页面=================");
            if (acc.getMoney()<100){
                System.out.println("兄弟先存钱吧,余额不足100");
                return;
            }
            while (true) {
                System.out.println("请输入取款的金额");
                double money=sc.nextDouble();
                if (money>acc.getQuoteMoney()){
                    System.out.println("您当前取款金额大与当次限额");
                }else {
                    if (money>acc.getMoney()){
                        System.out.println("余额不足!");
                    }else {
                        acc.setMoney(acc.getMoney()-money);
                        System.out.println("取钱成功!当前余额为:"+acc.getMoney());
                        return;
                    }
                }
            }
    
    
        }
    
        private static void depositMoney(Account acc, Scanner sc) {
            System.out.println("===============欢迎来到存款页面=================");
            System.out.println("请输入存款的金额");
            double money=sc.nextDouble();
            acc.setMoney(acc.getMoney()+money);
            System.out.println("存款成功!当前余额为:"+acc.getMoney());
    
        }
    
        private static void find(Account acc, Scanner sc) {
            System.out.println("===============欢迎来到查询页面=================");
            System.out.println("您的账户信息如下:");
            System.out.println("卡号:"+acc.getCardId());
            System.out.println("姓名:"+acc.getUserName());
            System.out.println("余额:"+acc.getMoney());
            System.out.println("取现额度:"+acc.getQuoteMoney());
    
        }
    
        private static void reginster(ArrayList<Account> accounts, Scanner sc) {
            System.out.println("===============欢迎来到注册页面=================");
            System.out.println("请输入您的账户名");
            String name=sc.next();
            String password;
            while (true) {
                System.out.println("请输入您的密码");
                 password=sc.next();
                System.out.println("请再次确认密码");
                String okPassword=sc.next();
                if (password.equals(okPassword)){
                    break;
                }else {
                    System.out.println("两次密码不一致~~~");
                }
            }
            System.out.println("请设置当次的取现额度");
            double quoteMoney=sc.nextDouble();
            String cardId=creatCardId(accounts);
            accounts.add(new Account(cardId,name,password,quoteMoney));
            System.out.println(name+"先生/女士,您的账户开卡成功,您的卡号是:"+cardId);
    
    
        }
    
        private static String creatCardId(ArrayList<Account> accounts) {
            while (true) {
                Random r=new Random();
                String cardId="";
                for (int i = 0; i < 8; i++) {
                    cardId+=r.nextInt(10);
                }
                Account acc=getAccountById(accounts,cardId);
                if (acc==null){
                    return cardId;
                }
            }
        }
    
        private static Account getAccountById(ArrayList<Account> accounts, String cardId) {
            for (int i = 0; i < accounts.size(); i++) {
                Account acc=accounts.get(i);
                if (cardId.equals(acc.getCardId())){
                    return acc;
                }
            }
            return null;
    
        }
    }
    
    星星上的张优秀
  • 相关阅读:
    【CSDN博客之星评选】我为什么坚持写博客
    关于纯css布局的概况
    IIS服务器下301跳转是怎么样实现的?
    如何使用数据库保存session的方法简介
    PHP如何通过SQL语句将数据写入MySQL数据库呢?
    PHP中文函数顺序排列一数组且其序数不变
    angular实时显示checkbox被选中的元素
    oracle查询正在执行的语句以及正被锁的对象
    angular中ng-repeat去重
    接口自动化测试框架--http请求的get、post方法的实现
  • 原文地址:https://www.cnblogs.com/1112zx/p/15072908.html
Copyright © 2020-2023  润新知