ATM案例(2)
开户功能写完就是登录功能进行查询账户存款取款操作解题逻辑前置校验若集合中无账户直接提示开户终止登录循环接收用户输入的卡号调用getAccountCardId()校验卡号是否存在卡号存在后循环校验密码密码正确则将该账户赋值给loginAcc并展示操作菜单全程通过循环保证用户输入错误时可重新输入直到输入正确或退出。.核心操作模块查询 / 存款 / 取款1查询账户showLoginAccount ()直接读取loginAcc的属性卡号、姓名、余额等展示给用户依赖loginAcc的非空性必须登录后才能调用。2存款depositMoney ()解题逻辑接收用户输入的存款金额通过loginAcc.setMoney()更新账户余额原余额 存款金额提示存款成功并展示最新余额。3取款drawMoney ()解题逻辑前置校验账户余额不足 100 元时禁止取款循环接收用户输入的取款金额做两层校验校验 1余额是否≥取款金额不足则提示校验 2取款金额是否≤单次取现额度超出则提示限额校验通过后更新账户余额原余额 - 取款金额提示取款成功并展示最新余额。菜单交互模块主菜单start ()循环展示「登录 / 开户」通过 switch 执行对应操作操作菜单showUserCommand ()登录成功后循环展示「查询 / 存款 / 取款等」通过 switch 执行对应操作选择 “退出” 则终止当前循环回到主菜单。package com.sy; import com.sy.Account; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class ATM { //创建一个存储账户对象的集合 private ArrayListAccount accounts new ArrayList(); //创建一个键盘录入对象 Scanner sc new Scanner(System.in); //启动ATM系统 展示欢迎页面 public void start(){ while (true){ System.out.println(欢迎您进入到了ATM系统); System.out.println(1.用户登录); System.out.println(2.用户开户); System.out.println(请选择); int command sc.nextInt(); switch (command ){ case 1: this.login(); showLoginAccount(); depositMoney(); drawMoney(); break; case 2: this.createAccount(); break; default: System.out.println(没有该操作~~); } } } //完成用户开户功能 private void createAccount(){ System.out.println(系统用户开户操作); //1.创建一个账户对象用于封装用户的开户信息 Account acc new Account(); //2.让用户输入自己的开户信息赋值给账户对象 System.out.println(请输入您的账户名称); String name sc.next(); acc.setUserName(name); while (true){ System.out.println(请输入您的性别); char sex sc.next().charAt(0); if (sex 男 || sex 女){ acc.setSex(sex); break; }else { System.out.println(请输入的性别有误~); } } while (true){ System.out.println(请输入您的账户密码); String passWord sc.next(); System.out.println(请您再次输入确认密码); String okPassWord sc.next(); if (okPassWord.equals(passWord)){ acc.setPassWord(okPassWord); break; }else { System.out.println(您输入的2次密码不一样请您重新输入~); } } System.out.println(请您输入您的取现额度); double limit sc.nextDouble(); acc.setLimit(limit); //生成一个卡号 String newCardId createCardId(); acc.setCardId(newCardId); //把这个账户对象存储到集合中去 accounts.add(acc); System.out.println(恭喜您 acc.getUserName() 开户成功您的卡号是 acc.getCardId()); } //根据卡号查询账户对象返回 private Account getAccountCardId(String cradId){ //遍历全部账户对象 for (int i 0; i accounts.size(); i) { Account acc accounts.get(i); if (acc.getCardId().equals(cradId)){ return acc; } } return null;//查无此账户这个卡号不存在 } //生成卡号 private String createCardId(){ while (true){ //1.定义一个String类型的变量 String cardId ; //2.使用循环 Random r new Random(); for (int i 0; i 8; i) { int data r.nextInt(10); cardId data; } //3.判断cardId中记住的卡号 Account acc getAccountCardId(cardId); if (acc null){ return cardId; } } } //记住登录后的用户账户 private Account loginAcc; //完成用户的登录操作 private void login(){ System.out.println(系统登录); //1.判断系统中是否存在账户对象存在才能登陆如果不存在直接结束 if (accounts.size() 0){ System.out.println(当前系统中无任何账户请先开户再来登录~); return; } //2.系统中存在账户对象可以开始进行登录操作了 while (true){ System.out.println(请您输入登录卡号); String cardId sc.next(); //3.判断这个卡号是否存在 Account acc getAccountCardId(cardId); if (acc null){ System.out.println(您输入的登录卡号不存在请确认~); }else{ while (true){ //卡号存在 System.out.println(请您输入登录密码); String passWord sc.next(); if (acc.getPassWord().equals(passWord)){ loginAcc acc; System.out.println(恭喜您 acc.getUserName() 登录成功您的卡号是 acc.getCardId() ); showUserCommand(); return; }else { System.out.println(您输入的密码不正确请确认~); } } } } } //展示登录后的操作页面 private void showUserCommand(){ while(true){ System.out.println(loginAcc.getUserName() 您可以选择如下功能进行账户的处理); 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 command sc.nextInt(); switch (command){ case 1: //查询当前账户 showLoginAccount(); break; case 2: //存款 depositMoney(); break; case 3: //取款 drawMoney(); break; case 4: //转账 break; case 5: //密码修改 break; case 6: //退出 System.out.println(loginAcc.getUserName() 退出成功); return; case 7: //注销 break; default: System.out.println(您选择的操作不存在~); } } } //展示当前登录信息 private void showLoginAccount(){ System.out.println(当前您的账户信息如下); System.out.println(卡号 loginAcc.getCardId()); System.out.println(户主 loginAcc.getUserName()); System.out.println(性别 loginAcc.getSex()); System.out.println(余额 loginAcc.getMoney()); System.out.println(每次取现额度 loginAcc.getLimit()); } //存钱 public void depositMoney(){ System.out.println(存钱操作); System.out.println(请您输入存款金额); double money sc.nextInt(); //更新当前登录的账户余额 loginAcc.setMoney(loginAcc.getMoney() money); System.out.println(恭喜您您存入 money 成功当前余额为 loginAcc.getMoney()); } //取款 private void drawMoney(){ System.out.println(取钱操作); //1.判断账户余额是否达到了100元 if (loginAcc.getMoney() 100){ System.out.println(您的账户余额不足100不允许取钱~); return; } //2.让用户输入取款金额 while(true){ System.out.println(请您输入取款金额); double money sc.nextInt(); //3.判断账户余额是否足够 if (loginAcc.getMoney() money){ //4.判断当前金额是否超出最大限额 if (money loginAcc.getLimit()){ System.out.println(您当前取款金额超过了每次限额您最多可取: loginAcc.getLimit() 元); }else { //代表可以开始取钱了,更新当前账户余额 loginAcc.setMoney(loginAcc.getMoney() - money); System.out.println(您取款 money 成功现在余额是 loginAcc.getMoney()); break; } }else { System.out.println(余额不足您账户当前余额 loginAcc.getMoney()); } } } }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2443880.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!