当前位置: 首页 > news >正文

JAVA_ONE-NINE_ATM机案例

需求:

1.定义一个账户类Account,至少需要包含(卡号,姓名,性别,密码,余额,每次提现额度)

2.定义一个ATM类,用来代表ATM,负责提供所有的业务需求,比如:展示ATM的系统欢迎页,开通账户,登录,取款,存款,转账。

3.定义一个测试类Test,负责我们开发的ATM系统进行测试。

主函数

import static org.example.object_atm.ATM.start;public class Test {public static void main(String[] args) {start();}}

封装函数

public class Account {private String cardId;private String name;private String sex;private String password;private double balance;private double limit;public Account() {}public Account(String cardId, String name, String sex, String password, double balance, double limit) {this.cardId = cardId;this.name = name;this.sex = sex;this.password = password;this.balance = balance;this.limit = limit;}public String getCardId() {return cardId;}public void setCardId(String cardId) {this.cardId = cardId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}public double getLimit() {return limit;}public void setLimit(double limit) {this.limit = limit;}
}

功能函数


import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class ATM {//1.定义数组,接受账户信息static ArrayList<Account> arrayList = new ArrayList<>();//2.用户开户操作public static void creatAccount() {//开始一个封装操作Account account = new Account();//开始命令操作Scanner sc = new Scanner(System.in);System.out.println("********欢迎进入银行开户系统,请按指令进行操作******");//存入姓名System.out.println("1.请输入你的姓名:");String name = sc.next();account.setName(name);//存入性别while (true) {System.out.println("2.请输入你的性别:");String sex = sc.next();if (sex.equals("男") || sex.equals("女")) {account.setSex(sex);break;} else {System.out.println("请输入‘男’ 或 ‘女’");}}//存入密码while (true) {System.out.println("3.请输入你的银行卡密码:");String password = sc.next();System.out.println("3.请再次输入银行卡密码,进行确认:");String password1 = sc.next();if (password.equals(password1)) {account.setPassword(password);break;} else {System.out.println("两次密码不同,请重新输入!");}}//统一存入余额0.0account.setBalance(0.0);//存入转账限制额度System.out.println("4.请输入你的转账额度限制:");double limit = sc.nextDouble();account.setLimit(limit);//存入银行卡号while (true) {Random random = new Random();String cardId = "";String card = "0123456789";for (int i = 0; i < 8; i++) {int x = random.nextInt(10);cardId += card.charAt(x);}if (!arrayList.contains(cardId)) {account.setCardId(cardId);System.out.println("你的银行卡号为:" + account.getCardId());break;}}//对封装信息存入arraylistarrayList.add(account);System.out.println("银行账户信息存入成功!");}//3.用户登录操作public static void loginAccount() {Account account;Scanner sc = new Scanner(System.in);System.out.println("********欢迎进入银行登录系统,请按指令进行操作******");//设置用户账号密码判断符 0~失败 1~成功int flag = 0;//登录操作while (true) {System.out.println("1.请输入登录账号");String card = sc.next();for (int i = 0; i < arrayList.size(); i++) { //进行遍历,赋值给Accountaccount = arrayList.get(i);if (account.getCardId().equals(card)) { //判断账号System.out.println("2.请输入账号密码");String password = sc.next();if (account.getPassword().equals(password)) { //判断密码Operate(account,i);flag = 1;break;} else {System.out.println("密码不正确,请检查银行卡号密码重新进行输入");}}}if (flag == 0) {System.out.println("账号不正确,请检查银行卡号重新进行输入,或进行银行开户");} else {System.out.println("登录成功");break;}}}//4.爱莉银行ATM开始界面public static void start() {while (true) {System.out.println("***********欢迎来到爱莉银行ATM系统************");System.out.println("1.用户登录");System.out.println("2.用户开户");System.out.println("3.退出程序");//输入操作命令System.out.println("请输入操作命令");Scanner sc = new Scanner(System.in);String command = sc.next();switch (command) {case "1"://用户登录loginAccount();break;case "2"://用户开户creatAccount();break;case "3":System.out.println("程序结束,期待下次使用!");return;default:System.out.println("操作错误,请输入正确操作命令符!");break;}}}//5.登入账户后操作界面public static void Operate(Account account,int i) {System.out.println("欢迎您," + account.getName());Scanner sc = new Scanner(System.in);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.返回主界面");String op = sc.next();switch (op) {case "1":showAccount(account);  //用户银行信息展示页面break;case "2":Withdrawal(account);  //进行取款操作break;case "3":Saving(account);  //进行存款操作break;case "4":Transfer(account);  //进行转账操作break;case "5":if(accountClosure(account,i)){ //进行销户操作return;}else {break;}case "6":revisePassword(account); //进行密码更改break;case "7":return;default:System.out.println("命令符错误,请重新输入");break;}}}//6.用户银行信息展示页面public static void showAccount(Account account) {System.out.println("账户名:" + account.getName());System.out.println("性别:" + account.getSex());System.out.println("账户余额:" + account.getBalance());System.out.println("转账限制:" + account.getLimit());}//7.进行取款操作public static void Withdrawal(Account account) {Scanner sc = new Scanner(System.in);double maxMoney = 5000;while (true) {System.out.println("请输入取款金额(最大取款为5000)或按0键返回上一级");double money = sc.nextDouble();if (maxMoney > money && account.getBalance() >= money) {account.setBalance(account.getBalance() - money);System.out.println("取款成功,已取出" + money + "元");break;} else if (money == 0) {return;} else {System.out.println("取款失败,超出限额或余额不足,请重新输入!");}}}//8.进行存款操作public static void Saving(Account account) {Scanner sc = new Scanner(System.in);double maxMoney = 100000;while (true) {System.out.println("请输入存款金额(最大存款金额为100000)或按0键返回上一级");double money = sc.nextDouble();if (maxMoney > money) {account.setBalance(account.getBalance() + money);System.out.println("存款成功,已存入" + money + "元");break;} else if (money == 0) {return;} else {System.out.println("存款失败,超出限额,请重新输入!");}}}//9.进行转账操作public static void Transfer(Account account) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("---请输入转账账号卡号或按0放回上一级界面---:");String cardId = sc.next();for (int i = 0; i < arrayList.size(); i++) {  //寻找arraylist中是否存在转账账号Account account1 = arrayList.get(i);  //定义新的account对象接受转账账号信息if (account1.getCardId().equals(cardId)) {while (true) {   //输入转账金额System.out.println("---请输入转账金额或按0放回上一级界面---:");Double money = sc.nextDouble();if (money == 0) {break;}if (account.getBalance() >= money) {account.setBalance(account.getBalance() - money);account1.setBalance(account1.getBalance() + money);System.out.println("转账成功" + money);} else {System.out.println("超出转账金额限制账户余额不足,请重新输入");}}break;  //找到即停止,不在继续向下循环} else if (cardId.equals("0")) {return;}}}}//10.进行销户操作public static boolean accountClosure(Account account,int number) {Scanner sc = new Scanner(System.in);System.out.println("是否进行销户操作,请确认");System.out.println("按1确认");System.out.println("按2取消");String str = sc.next();switch (str) {case "1":if(account.getBalance()>0){System.out.println("销户失败,请先清空余额");return false;}else {arrayList.remove(number);System.out.println("销户成功");return true;}case "2":return false;default:System.out.println("命令不正确");break;}return false;}//11.进行密码更改public static void revisePassword(Account account){Scanner sc=new Scanner(System.in);while (true) {System.out.println("请输入你的旧密码或按0返回上一级界面");String password=sc.next();if (password.equals("0")){break;}if(account.getPassword().equals(password)){while (true) {System.out.println("请输入你的新密码或按0返回上一级界面");String newPassword=sc.next();if(newPassword.equals("0")){break;}System.out.println("请重新输入你的新密码");String newPassword1=sc.next();if(newPassword.equals(newPassword1)){account.setPassword(newPassword);System.out.println("密码更改成功");return;}else {System.out.println("请重新输入");}}}else {System.out.println("密码不对,请重新输入");}}}
}

http://www.dtcms.com/a/293298.html

相关文章:

  • 秋招Day17 - Spring - 事务
  • 【JavaEE】认识计算机(二)
  • useOptimistic介绍和使用闭坑
  • 机器学习/归一化
  • MS523NA非接触式读卡器 IC
  • 如何在 Windows 10 下部署多个 PHP 版本7.4,8.2
  • adb的使用
  • Java(Set接口和HashSet的分析)
  • SpringBoot全局异常报错处理和信息返回
  • 米家打印机驱动:Wi-Fi 无线打印丝滑顺畅不卡顿,从此告别对打印机干瞪眼
  • Java基础 7.22
  • 原型模式及优化
  • C++11相关知识点
  • 自动化测试报告生成【Allure】
  • Linux--指令初识
  • 一文读懂DQN改进算法(Double DQN+Dueling DQN)—强化学习(7)
  • Docker实战系列:使用Docker部署AI SSH客户端工具IntelliSSH
  • MCP消息协议和传输协议(Java角度)
  • 航班调度优化策略全局概览
  • TCP day39
  • 帆软实现审批流配置
  • C++ 模板库map数据结构的概念和使用案例
  • Rabbit安装
  • vben ruoyi 数据字典解决方案
  • 16.多生成树MSTP
  • Linux文件系统理解1
  • Selenium+Java 自动化测试入门到实践:从环境搭建到元素操作
  • ubuntu22.04 录视屏软件推荐
  • Three.js 实现梦幻星河流光粒子特效原理与实践
  • Redis 5.0中的 Stream是什么?