package com.china.atm;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/
* ATM系统的入口类
*/
public class ATMSystem {
public static void main(String[] args) {
// 1,定义账户类
// 2,定义一个集合容器,负责以后存储全部的账户对象,进行相关业务的操作
ArrayList<Account> accounts = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while (true) {
// 3,展示系统的首页
System.out.println("===============小岛ATM系统===============");
System.out.println("1、账户登录");
java集合练习题基础 System.out.println("2、账户开户");
System.out.println("请您选择操作");
int commands = scanner.nextInt();
// swsitch:先执行表达式的值,拿表达式的值去与case后的值匹配,哪个case匹配的值为true,就执行哪个case。
// 遇到break就跳出switch分支。
// 如果case后的值都不匹配则执行default代码
switch (commands) {
case 1:
// 用户登录操作
login(accounts, scanner);
break;
case 2:
// 登陆账户开户(ALT + Enter,快捷键)
regist(accounts, scanner);
break;
default:
System.out.println("您输入的操作命令不存在!");
}
}
}
/
* 登录功能
*
* @param accounts 全部账户对象的集合
* @param scanner 扫描器
*/
private static void login(ArrayList<Account> accounts, Scanner scanner) {
System.out.println("===============系统登陆操作===============");
// 1,判断账户集合中是否存在账户,如果不存在账户,登录功能不能执行
if (accounts.size() == 0) {
System.out.println("当前系统中,无任何账户,请先开户,再来登录~~~");
regist(accounts,scanner);
return; //结束方法
}
//2,正式进行登录操作
while (true) {
System.out.println("请输入登录卡号:");
String cardId = scanner.next();
//3,判断卡号是否存在,根据卡号去账户集合查询账户对象
Account acc = getAccountByCardId(cardId, accounts);//接收的是String cardId = scanner.next();
if (acc != null) {//说明该账户卡号和输入的字符串卡号匹配,则说明输入的卡号存在
while (true) {
// 卡号存在,让用户输入密码
System.out.println("请您输入密码");
String passWord = scanner.next();
// 判断当前账户对象的密码是否与用户输入的密码一致
if (acc.getPassWord().equals(passWord)) {
// 登录成功
System.out.println("恭喜您," + acc.getUserName() + "先生/女士进入系统,您的卡号是:" + acc.getCardId());
// ……查询 转账 取款
// 展示登录后的操作页
showUserCommand(scanner, acc, accounts);
break; // 干掉登录方法
}
else {
System.out.println("您输入的密码有误,请重新输入");//继续while循环
}
}
}
break;
else {
System.out.println("系统中不存在该账户卡号");
}
}
}
/
* 展示登陆后的操作页
*/
private static void showUserCommand(Scanner scanner, Account acc, ArrayList<Account> accounts) {
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 command = scanner.nextInt();
switch (command) {
case 1:
// 查询账户(展示当前登录的账户信息)
showAccount(acc);
break;
case 2:
// 存款
depositMoney(acc, scanner);
break;
case 3:
// 取款
drawMoney(acc, scanner);
break;
case 4:
// 转账
transferMoney(scanner, acc, accounts);
break;
case 5:
// 修改密码
updatePassWord(scanner, acc);
return; // 让当前方法停止执行,跳出去
case 6:
// 退出
System.out.println("退出成功,欢迎下次光临");
return; // 让当前方法停止执行,跳出去
case 7:
// 注销账户
deleteAccount(acc, scanner, accounts);
break;
default:
System.out.println("您输入的操作命令不正确");
}
}
}
/
* 销户功能
*
* @param acc 当前登录成功的对象
* @param scanner 扫描器
* @param accounts 当前账户中所有集合
*/
private static void deleteAccount(Account acc, Scanner scanner, ArrayList<Account> accounts) {
System.out.println("===============用户密码修改===============");
System.out.println("您真的要销户吗!?y/n");
String re = scanner.next();
switch (re) {
case "y":
// 真的销户
// 从当前账户集合中,删除当前账户对象,销毁就完成了
if (acc.getMoney() > 0) {
System.out.println("您账户中还有钱没有取完,不允许销户");
} else {
accounts.remove(acc);
System.out.println("您的账户销户完成");
}
break;
default:
System.out.println("当前账户继续保留");
}
}
/
* 修改密码
*
* @param scanner 扫描器
* @param acc 当前登录成功的账户对象
*/
private static void updatePassWord(Scanner scanner, Account acc) {
System.out.println("===============用户密码修改===============");
while (true) {
System.out.println("请您输入当前密码");
String passWord = scanner.next();
// 1, 判断这个密码是否正确
if (acc.getPassWord().equals(passWord)) {
while (true) {
// 密码正确
// 2,输入新密码
System.out.println("请您输入新密码");
String newPassWord = scanner.next();
System.out.println("请您输入在次新密码");
String okPassWord = scanner.next();
if (newPassWord.equals(okPassWord)) {
// 2次密码一致,可以修改
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18602.html