Java实现简易的ATM机完整注释版 (接上一篇)

Java实现简易的ATM机完整注释版 (接上一篇),第1张

Java实现简易的ATM机完整注释版 (接上一篇)

上一篇给出了工具类跟用户类, 现在给出业务类跟视图类

数据采用的是集合 ArrayList 来存储, 也可以改成用 HashMap 来存数据
废话不多说, 直接给代码好吧
首先是银行业务类 BankService

package com.ATM.service;

import com.ATM.bean.Account;

import java.util.ArrayList;
import java.util.List;


public class BankService {

    private List accountList = new ArrayList<>();

    
    public int checkCardNum(String cardNum) {
        int index = -1;
        for (int i = 0; i < accountList.size(); i++) {
            Account account = accountList.get(i);
            String ac = account.getCardNum();
            if (cardNum.equals(ac)) {
                index = i;
                break;
            }
        }
        return index;
    }

    
    public boolean openAccount(Account account) {
        if (account == null) {
            return false;
        }
        // 添加用户信息完成开户
        accountList.add(account);
        return true;
    }

    
    public int login(String cardNum, int password) {
        int index = -1;
        for (int i = 0; i < accountList.size(); i++) {
            // 循环取出每个账号
            Account account = accountList.get(i);
            if (account.getCardNum().equals(cardNum) && account.getPassword() == password) {
                index = i;
                break;
            }
        }
        return index;
    }

    
    public Account inputAccount(int index, double money) {
        if (index < 0 || index > accountList.size() || money < 1) {
            return null;
        }
        Account account = accountList.get(index);
        money = account.getMoney() + money;
        // 修改账户余额
        account.setMoney(money);
        return account;
    }

    
    public Account outAccount(int index, double money) {
        if (index < 0 || index > accountList.size() || money < 1) {
            return null;
        }
        Account account = accountList.get(index);
        double getMoney = account.getMoney();
        if (getMoney < money) {
            System.out.println("余额不足");
            return null;
        }
        account.setMoney(getMoney - money);
        return account;
    }

    
    public Account queryAccount(int index) {
        if (index < 0 || index > accountList.size()) {
            return null;
        }
        Account account = accountList.get(index);
        return account;
    }

    
    public Account transferAccount(int index, int resiveIndex, double money) {
        if (index < 0 || index > accountList.size()) {
            return null;
        }
        Account account = accountList.get(index);
        Account resiveAccount = accountList.get(resiveIndex);
        double accountMoney = account.getMoney();
        double resiveAccountMoney = resiveAccount.getMoney();
        if (accountMoney < money) {
            return null;
        }
        account.setMoney(accountMoney-money);
        resiveAccount.setMoney(resiveAccountMoney+money);
        return account;
    }
}

然后是银行的视图类 BankView

package com.ATM.view;

import com.ATM.bean.Account;
import com.ATM.service.BankService;
import com.ATM.util.DateUtil;
import com.ATM.util.KeyBoardInputUtil;

import java.util.Random;

public class BankView {

    private static BankService bankService = new BankService();
    private static int index = -1;

    public static void main(String[] args) {
        while (true) {
            System.out.println("*****************************************");
            System.out.println("*                                       *");
            System.out.println("*        (●'◡'●)  欢迎来到中国银行        *");
            System.out.println("*                                       *");
            System.out.println("*****************************************");
            System.out.println();
            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 option = KeyBoardInputUtil.getInt();

            // 开户
            if (option == 1) {
                // 重置登陆状态
                index = -1;
                // 生成卡号
                String time = DateUtil.getDate(2);
                int number = new Random().nextInt(1000);
                String cardNum = time + number;
                System.out.println(cardNum);
                // 判断卡号是否重复
                int isExists = bankService.checkCardNum(cardNum);
                if (isExists != -1) { // 找到重复的卡号
                    System.out.println("账号重复, 请重新开卡");
                } else {
                    System.out.println("请输入开户密码: ");
                    int password = KeyBoardInputUtil.getInt();
                    System.out.println("请再次输入开户密码: ");
                    int password2 = KeyBoardInputUtil.getInt();
                    if (password != password2) {
                        System.out.println("两次密码不一致, 请重试!!!");
                    } else {
                        System.out.println("请输入您的真实姓名: ");
                        String accountName = KeyBoardInputUtil.getString();
                        // 获取系统当前日期
                        String createDate = DateUtil.getDate(1);
                        // 默认开户为 0 元
                        double money = 0;
                        // 将开户需要的信息全部准备完后保存到 Account 对象中
                        Account account = new Account(cardNum, password, accountName, money, createDate);
                        boolean state = bankService.openAccount(account);
                        if (state) {
                            System.out.println("开户成功");
                        } else {
                            System.out.println("开户失败");
                        }
                    }
                }

                // 存款
            } else if (option == 2) {
                // 说明这是第一次登陆
                if (index == -1) {
                    index = login();
                }
                if (index == -1) {
                    System.out.println("登陆失败");
                } else {
                    System.out.println("登陆成功~~");
                    System.out.println("请输入您的存款金额: ");
                    double money = KeyBoardInputUtil.getDouble();
                    // 让银行业务类将存入的钱放入到相应的账户中
                    Account account = bankService.inputAccount(index, money);
                    if (account == null) {
                        System.out.println("存款失败!!!");
                    } else {
                        System.out.println("存款成功!!!");
                        // 利用返回的 Account 对象输出信息
                        System.out.println("尊敬的"+account.getAccountName()+"用户, 你的卡内余额是:  "+account.getMoney()+"元");
                    }
                }

                // 取款
            } else if (option == 3) {
                // 说明这是第一次登陆
                if (index == -1) {
                    index = login();
                }
                if (index == -1) {
                    System.out.println("登陆失败");
                } else {
                    System.out.println("登陆成功");
                    System.out.println("请输入您要取款的金额: ");
                    double money = KeyBoardInputUtil.getDouble();
                    if (money < 1) {
                        System.out.println("数据不合法");
                    } else {
                        // 让银行业务类将金额取出
                        Account account = bankService.outAccount(index, money);
                        if (account == null) {
                            System.out.println("取款失败!!!");
                        } else {
                            System.out.println("取款成功!!!");
                            //调用银行业务类查询index位置的用户信息返回
                            System.out.println("尊敬的"+account.getAccountName()+",你的卡内余额是:  "+account.getMoney()+"元");
                        }
                    }
                }

                // 查询余额
            } else if (option == 4) {
                // 说明这是第一次登陆
                if (index == -1) {
                    index = login();
                }
                if (index == -1) {
                    System.out.println("登陆失败");
                } else {
                    System.out.println("登陆成功");
                    Account account = bankService.queryAccount(index);
                    if (account == null) {
                        System.out.println("查询失败");
                    } else {
                        //调用银行业务类查询index位置的用户信息返回
                        System.out.println("尊敬的"+account.getAccountName()+",你的卡内余额是:  "+account.getMoney()+"元");
                    }
                }

                // 转账
            } else if (option == 5) {
                // 说明这是第一次登陆
                if (index == -1) {
                    index = login();
                }
                if (index == -1) {
                    System.out.println("登陆失败");
                } else {
                    System.out.println("请输入要转账的卡号: ");
                    String reviceCardNum = KeyBoardInputUtil.getString();
                    int reviceAccountIndex = bankService.checkCardNum(reviceCardNum);
                    if (reviceAccountIndex == -1) {
                        System.out.println("账号错误, 请确认后再转账!!!!");
                    } else {
                        System.out.println("请输入要转账的金额: ");
                        double money = KeyBoardInputUtil.getDouble();
                        Account account = bankService.transferAccount(index, reviceAccountIndex, money);
                        if (account!=null){
                            System.out.println("转账成功!");
                            //调用银行业务类查询index位置的用户信息返回
                            System.out.println("尊敬的"+account.getAccountName()+",你的卡内余额是:  "+account.getMoney()+"元");
                        }else{
                            System.out.println("转账失败!");
                        }
                    }
                }

                // 退卡
            } else if (option == 6) {
                if (index != -1) {
                    index = -1;
                    System.out.println("退卡成功!!!");
                } else {
                    System.out.println("您还未登陆~~");
                }

                // 退出
            } else if (option == 7) {
                System.out.println("欢迎下次来办理业务, 再见!!");
                break;

            } else {
                System.out.println("请输入正确的选项!!!!");
            }
        }
    }

    public static int login() {
        System.out.println("请输入您的账号: ");
        String cardNum = KeyBoardInputUtil.getString();
        System.out.println("请输入您的密码: ");
        int password = KeyBoardInputUtil.getInt();
        // 调用银行业务类完成验证账号密码操作
        int index = bankService.login(cardNum, password);
        return index;
    }
}

好了, 有需要完整代码的去把我上一篇的工具类跟用户类拷下来
然后放到对应的包下面就可以直接使用啦~~~~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5563097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存