上一篇给出了工具类跟用户类, 现在给出业务类跟视图类
数据采用的是集合 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; } }
好了, 有需要完整代码的去把我上一篇的工具类跟用户类拷下来
然后放到对应的包下面就可以直接使用啦~~~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)