package ATM;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATM {
// 存放数据容器
private ArrayList<Account> account = new ArrayList<>();
Scanner sr = new Scanner(System.in);
private Account loginAcc; //记住登录后的账户
//启动APM系统 展示欢迎见面
public void start() {
while (true) {
System.out.println("欢迎你进入到ATM系统");
System.out.println("1.用户登录");
System.out.println("2.用户开户");
System.out.println("请选择");
String conmand = sr.next();
switch (conmand) {
case "1"://登录
login();
break;
case "2"://开户
careateAccount();
break;
//随机输入返回
default:
System.out.println("你输入有误");
}
}
}
// 登录操作
private void login(){
System.out.println("==系统登录==");
//1.判断系统中是对象 存在登录 如果 不存在登录结束
if (account.size()==0){
System.out.println("系统里无账号~~ 请先开户账户~");
return;
}
//2系统中有对象那么我们开始登录
while (true) {
System.out.println(" 请输入你的卡号:");
String caredId=sr.next();
Account acc =getAccauntbycardeid(caredId);
if (acc==null){
System.out.println("请确认再输入!卡号不存在~~");
}else {
//进来这里那卡号存在
while (true) {
System.out.println("请输入登录密码:");
String passWord=sr.next();
if (acc.getPassWord().equals(passWord)){
loginAcc=acc;
//密码成功
System.out.println("登陆成功!"+ acc.getUsrName() +":\t你的卡号:"+ acc.getCardId());
showUserCommande();
return;
}else{
System.out.println("请你输入正确密码, 你输入有误~~");
}
}
}
}
}
//展示登录后的见面
private void showUserCommande(){
while (true) {
System.out.println(loginAcc.getUsrName()+":\t你可以选择如下功能进行账户处理===");
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 cmmand= sr.nextInt();
switch(cmmand){
case 1:
//查询账户
ShowloginAccont();
break;
case 2:
//存款
depositMoney();
break;
case 3:
//取款
drawMoney();
break;
case 4:
//转账
transferMoney();
break;
case 5:
//密码修改
opdatePassword();
return;
case 6:
//退出
System.out.println(loginAcc.getUsrName()+"退出成功!");
return;//跳出swutch 循环
case 7:
if (deletAccount()) {
return;
}
break;
default:
//注销当前账号
System.out.println("你输入第命令有误");
}
}
}
//修改密码
private void opdatePassword() {
while (true) {
System.out.println("====账号密码修改操作===");
System.out.println("请输入当前密码:");
String passWord=sr.next();
if (loginAcc.getPassWord().equals(passWord)){
while (true) {
System.out.println("请输入新的密码:");
String OkpassWord=sr.next();
System.out.println("请输入确认密码:");
String okpassWord=sr.next();
//判断两个密码是否相同
if (okpassWord.equals(OkpassWord)){
loginAcc.setPassWord(OkpassWord);
System.out.println("密码修改成功!");
return;
}else{
System.out.println("两次密码不一致~~");
}
}
}else {
System.out.println("请输入正确的密码~~");
}
}
}
//注销账户
private boolean deletAccount() {
System.out.println("====进入注销账号操作====");
System.out.println("注销账号吗?y/n");
String cmmaunde=sr.next();
switch (cmmaunde){
case "y":
if (loginAcc.getMoney()==0){
account.remove(loginAcc);
System.out.println("你的账户注销成功了!");
return true;
}else {
System.out.println("请你的账户有:\t"+loginAcc.getMoney()+ "不允许注销账户!");
return false;
}
default:
System.out.println("好的你的账号保留!");
return false;
}
}
//专账
private void transferMoney() {
System.out.println("===专账===");
if (account.size()<2){
System.out.println("系统没有其他账号?");
return;
}
//判断自己有没有钱
if (loginAcc.getMoney()==0){
System.out.println("自己都没钱别转了吧!");
return;
}
while (true) {
//开始转账了
System.out.println("请输入对方的卡号:");
String cardeId=sr.next();
// 卡号判断
Account acc =getAccauntbycardeid(cardeId);
if (acc==null){
System.out.println("请卡号不存在请你确认");
}else {
//认证对方的信息
// 使用substring(1) 从1开始显示
String name="*"+acc.getUsrName().substring(1);
System.out.println("请输入对方的【"+name+"】姓名");
String perName=sr.next();
//判断输入的姓名是否正确
if (acc.getUsrName().startsWith(perName)){
while (true) {
System.out.println("请输入转账金额:");
double money=sr.nextDouble();
//判断自己的金额足够还是?
if (loginAcc.getMoney()>=money){
//更新自己的账户
loginAcc.setMoney(loginAcc.getMoney()-money);
System.out.println("转账成功!");
//更新对方的账号
acc.setMoney(acc.getMoney()+money);
return;
}else {