package com.atm;
import java.util.Scanner;/**
* ATM类实现
*
* @author 向往的生活*/
public classATM {public static voidmain(String[] args) {
String[] user= new String[2];
String[] password= new String[2];double[] amount = new double[2];
loginSelect(user, password, amount);
}/**
* 登录业务的菜单选择
*
* @param user
* @param password*/
public static voidloginSelect(String[] user, String[] password,double[] amount) {
System.out.println("#####欢迎#####");int n = 1;while (true) {
System.out.println("A.开户");
System.out.println("B.登录");
System.out.println("C.退出");
System.out.println("D.修改密码");
Scanner scanner= new Scanner(System.in);
System.out.println("选择菜单:");
String number=scanner.nextLine();
number=number.toUpperCase();char[] chr =number.toCharArray();switch (chr[0]) {case 'A':
openAnAccount(user, password);
loginSelect(user, password, amount);break;case 'B':int index = login(user, password);//记录登录人的下标
if (index != -1) {select(user, password, amount, index);
}else{
n++;//登录3次失败,则退出
if (n == 3) {break;
}
}break;case 'C':
System.out.println("退出ATM");
System.exit(-1);break;case 'D':
updatePassword(user, password);
System.out.println("修改密码");break;default:
System.out.println("录入的操作错误!");break;
}
}
}/**
* 核心业务菜单选择
*
* @param user
* @param password*/
public static void select(String[] user, String[] password,double[] amount, intindex) {while (true) {
System.out.println("###########您好:" + user[index] + "#########");
System.out.println("A.存款");
System.out.println("B.取款");
System.out.println("C.转账");
System.out.println("D.查询账户余额");
System.out.println("E.返回主菜单");
Scanner scanner= new Scanner(System.in);
System.out.println("选择菜单:");
String input=scanner.nextLine();
input=input.toUpperCase();char chr = input.toCharArray()[0];switch(chr) {case 'A':
saveMoney(user, amount, index);break;case 'B':
getMoney(user, amount, index);break;case 'C':
transferAccounts(user, amount, index);break;case 'D':
query(user, amount, index);break;case 'E':
loginSelect(user, password, amount);break;default:
System.out.println("操作错误请重新输入!");break;
}
}
}/**
* 登录
*
* @return*/
public static intlogin(String[] user, String[] password) {
Scanner input= new Scanner(System.in);
System.out.println("请输入用户名:");
String userName=input.nextLine();
System.out.println("请输入密码:");
String pwd=input.nextLine();//通过userName数据,找到user下标,
int index = -1;for (int i = 0; i < user.length; i++) {if (user[i] == null) {
System.out.println("请去开户,您没有注册卡号!");
loginSelect(user, password,null);return -1;
}else{if(user[i].equals(userName)) {
index=i;break;
}
}
}//然后通过user下标找到password中相应的密码。
if(password[index].equals(pwd)) {returnindex;
}else{
System.out.println("用户名或者密码输入错误,请从新输入!");
}return -1;//因为密码不匹配因此返回-1
}/**
* 开户
*
* @return*/
public static voidopenAnAccount(String[] user, String[] password) {int index = -1;//搜索下标
for (int i = 0; i < user.length; i++) {if (user[i] == null) {
index=i;break;
}
}if (index == -1) {//如果存储空间满了,则提示联系管理员处理
System.out.println("系统存储已经满了,请联系管理员处理!");return;
}//新增用于与密码
Scanner scanner = new Scanner(System.in);
System.out.println("输入登录名:");
String loginName=scanner.nextLine();
user[index]=loginName;
System.out.println("输入密码:");
String pwdValue=scanner.nextLine();
password[index]=pwdValue;
}/***************************************************************************
* 查询账户余额
*
* @return*/
public static void query(String[] user, double[] amount, intindex) {
System.out.println(user[index] + "您的余额为:" +amount[index]);
}/**
* 取款
*
* @return*/
public static void getMoney(String[] user, double[] amount, intindex) {
System.out.println("A 100 B 200");
System.out.println("C 300 D 500");
System.out.println("E 1000 F 2000");
System.out.println("G 其他金额");
Scanner scanner= new Scanner(System.in);
System.out.println("选择取款金额:");
String money=scanner.nextLine();
money=money.toUpperCase();double number = 0.0;char chr = money.toCharArray()[0];switch(chr) {case 'A':
number= 100;break;case 'B':
number= 200;break;case 'C':
number= 300;break;case 'D':
number= 500;break;case 'E':
number= 1000;break;case 'F':
number= 2000;break;case 'G':
Scanner input= new Scanner(System.in);
System.out.println("输入取款金额:");
number=input.nextDouble();break;default:
System.out.println("您输入的金额错误!");break;
}//检查存款的金额校验
if (!checkMoney(number)) {return;
}if(amount[index]
System.out.println("您账户余额不足,不能取款!");return;
}
amount[index]= amount[index] -number;
System.out.println("取款成功,余额为:" + amount[index]);//显示余额
return;
}/**
* 检查存款的金额校验
*
* @param number
* @return*/
public static boolean checkMoney(doublenumber) {if (number < 100) {
System.out.println("取款失败:只能取出大于等100的金额!");return false;
}//只能存入100的整数
if (number % 100 != 0) {
System.out.println("取款失败:只能取出100的整数!");return false;
}return true;
}/**
* 存款*/
public static void saveMoney(String[] user, double[] amount, intindex) {
Scanner scanner= new Scanner(System.in);
System.out.println("输入存款金额:");double number =scanner.nextDouble();//检查存款的金额校验
if (!checkMoney(number)) {return;
}
amount[index]= amount[index] +number;
System.out.println("存款成功,余额为:" + amount[index]);//显示余额
return;
}/**
* 转账
*
* @return*/
public static void transferAccounts(String[] user, double[] amount,intindex) {int tragetIndex = -1;for (int i = 0; i < 3; i++) {
tragetIndex=ifHaveUser(user);if (tragetIndex != -1) {break;
}else {//没找到相应的用户
System.out.println("第" + (i + 1) + "次,您输入的用户不存在!");
}
}if (tragetIndex == -1) {
System.out.println("超过3次返回上级菜单!");return;
}if (tragetIndex == index) {//如果下标相等提示您不能给自己转账
System.out.println("您不能给自己转账");
}else{for (int i = 0; i < amount.length; i++) {
Scanner scanner= new Scanner(System.in);
System.out.println("输入您的转账金额:");double tranAmount =scanner.nextDouble();//检查存款的金额校验
if (!checkMoney(tranAmount)) {return;
}if (tranAmount > amount[index]) {//如果转账金额大于,账户余额提示
System.out.println("您余额不足!");break;
}else{
amount[index]= amount[index] -tranAmount;
amount[tragetIndex]=tranAmount;break;
}
}
}
System.out.println("您的余额为:" +amount[index]);
}/***************************************************************************
*
* @return*/
public static intifHaveUser(String[] user) {
Scanner scanner= new Scanner(System.in);
System.out.println("输入转账用户:");
String userName=scanner.nextLine();int index = -1;for (int i = 0; i < user.length; i++) {if(userName.equals(user[i])) {
index=i;
}
}returnindex;
}/***************************************************************************
* 修改密码
*
* @return*/
public static voidupdatePassword(String[] user, String[] password) {
Scanner input= new Scanner(System.in);
System.out.println("请输入用户名:");
String userName=input.nextLine();while (true) {int index = -1;
String oldPwd= null;for (int i = 0; i < user.length; i++) {//首先要找到当前用户
if(userName.equals(user[i])) {
index=i;
oldPwd=password[i];
}
}if(index == -1) {
System.out.println("还没有开户,请开户后再来修改密码!");return;
}
System.out.println("请输入旧密码:");
String inputOldPwd=input.nextLine();
System.out.println("请输入新密码:");
String newpwd=input.nextLine();
System.out.println("请输入确认密码:");
String confimpwd=input.nextLine();if(!inputOldPwd.equals(oldPwd)) {//如果输入的旧密码不等于新密码,则重新输入
System.out.println("您输入的旧密码不正确!");continue;
}if(!newpwd.equals(confimpwd)) {//新密码与确认密码不匹配
System.out.println("新密码与确认密码不匹配!");continue;
}
password[index]=newpwd;
System.out.println("密码修改成功!");break;
}
}
}