实现简单的ATM
功能类
package bank;
import java.util.Scanner;
public class ATM {
public Scanner sc = new Scanner(System.in);
public User[] arr = new User[10];
// 创建用户
public User[] creat(User[] arr) {
User a = new User("admin0", "123456", 1000);
User b = new User("admin1", "111111", 1000);
User c = new User("admin2", "222222", 1000);
User d = new User("admin3", "333333", 1000);
User e = new User("admin4", "444444", 1000);
User f = new User("admin5", "555555", 1000);
User g = new User("admin6", "666666", 1000);
User h = new User("admin7", "777777", 1000);
User i = new User("admin8", "888888", 1000);
User j = new User("admin9", "999999", 1000);
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
arr[4] = e;
arr[5] = f;
arr[6] = g;
arr[7] = h;
arr[8] = i;
arr[9] = j;
return arr;
}
//主程序
public void runATM(User[] arr) {
int load = denglu(arr); // 接收一个用户数据
if (load == -1) {
System.out.println("您的账户已被锁定,请您尽快去柜台激活!");
} else {
menu(arr[load],arr);
}
}
// 登录
public int denglu(User[] arr) {
System.out.println("欢迎使用阿喃的ATM");
Scanner sc = new Scanner(System.in);
int a = -1;
int count = 3;
while (count > 0) {
System.out.println("请输入账号:");
String acc = sc.next();
a = yzacc(acc, arr); // 验证账号
System.out.println("请输入密码:");
String pass = sc.next();
boolean pas = yzpass(pass, arr, a); // 验证密码
if (pas) {
System.out.println("登陆成功");
break;
} else {
count--;
System.out.println("账号或密码错误,您还有" + count + "次机会, 请重新输入");
if (count == 0)
break;
}
}
return a; // 返回一个用户数据
}
// 验证账户
private int yzacc(String acc, User[] arr) {
for (int i = 0; i < arr.length; i++) {
if (((arr[i]).id).equals(acc)) {
return i;
}
}
return -1;
}
// 验证密码
private boolean yzpass(String pass, User[] arr, int a) {
if (a == -1) {
return false;
} else if ((pass).equals(arr[a].password) && pass != null) {
return true;
}
return false;
}
// 功能菜单
public void menu(User load,User[] arr) {
while (true) {
System.out.println("请输入您的操作:1:修改密码 2:存款 3:取款 4:查余额 5:转账 0:退卡");
int getNum = sc.nextInt();
switch (getNum) {
case 0:
System.out.println("您已退出");
System.exit(0);
case 1:
this.changePass(load);
break;
case 2:
this.deposit(load);
break;
case 3:
this.undeposit(load);
break;
case 4:
balance(load);
break;
case 5:
this.transferAcc(load, arr);
break;
default:
System.out.println("输入错误,没有此选项,请重新输入!");
break;
}
}
}
// 修改密码
public User changePass(User load) {
Scanner sc = new Scanner(System.in);
String aa = "";
while (true) {
System.out.println("请输入新密码:");
String inputpass = sc.nextLine();
aa = "" + inputpass;
try {
int mm = Integer.parseInt(aa);
if (aa.length() == 6) {
System.out.println("恭喜您修改密码成功");
break;
} else {
System.out.println("密码位数为6位");
}
} catch (Exception e) {
System.out.println("密码必须为数字");
}
load.password = inputpass;
}
return load;
}
// 存款功能
public User deposit(User load) {
while (true) {
System.out.println("请输入存款金额:");
sc.nextLine();
String ss = sc.nextLine();
try {
double input = Double.parseDouble(ss);
if (input > 0) {
System.out.println("恭喜您成功存款" + input + "元");
load.money += input;
break;
}
System.out.println("请输入正确的存款金额:");
} catch (Exception e) {
System.out.println("要求金额为大于0的数");
}
}
return load;
}
// 取款功能
public User undeposit(User load) {
Scanner scan = new Scanner(System.in); // bug
while (true) {
System.out.println("请输入取款金额:");
String ss = scan.nextLine();
try {
double input = Double.parseDouble(ss);
if (input < load.money) {
System.out.println("恭喜您成功取款" + input + "元");
load.money -= input;
break;
}
System.out.println("您的余额不足");
} catch (Exception e) {
System.out.println("要求金额为大于0的数");
}
}
return load;
}
// 查询余额
public void balance(User load) {
System.out.println("您的余额为" + load.money + "元");
}
// 转账功能
public User transferAcc(User load, User[] arr) {
sc.nextLine();
while (true) {
System.out.println("请输入您要转账的账户:");
String inputid = sc.nextLine();
boolean res=panzhanghu(inputid,arr);
if (res) {
System.out.println("请输入您要转账的金额:");
double inputmoney = sc.nextDouble();
if (inputmoney < load.money) {
load.money-=inputmoney;
System.out.println("恭喜您成功转账" + inputmoney + "元");
break;
} else {
System.out.println("您的余额不足");
break;
}
}
else {
System.out.println("账户输入错误");
}
}
return load;
}
//转账时判断账户是否正确
private boolean panzhanghu(String inputid, User[] arr) {
for (int i = 0; i < arr.length; i++) {
if (inputid.equals(arr[i].id)) {
return true;
}
}
return false;
}
}
用户类
package bank;
public class User {
public String id;
public String password;
public double money;
public User(String id,String password,double money){
this.id=id;
this.password=password;
this.money=money;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
测试类
package bank;
public class Test {
public static void main(String[] args) {
ATM a=new ATM();
User[] arr=new User[10];
arr =a.creat(arr) ;
a.runATM(arr);
}
}