学习目标:
用java语言基础知识写一个简易的ATM机控制台程序
代码如下
import java.util.Scanner;
public class ATM {
public static void main(String[] args) throws InterruptedException {
String[][] name = new String[10][5];
name[0][0]="hy";name[0][1]="hy";
name[1][0]="xw";name[1][1]="xw";
double[][] balance = new double[10][5];
balance[0][0]=999;
balance[1][0]=999;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("---------欢迎使用湖北银行ATM机---------");
System.out.println("请选择以下功能:");
System.out.println("1.注册账号\n2.登录账号\n3.退出系统");
int i = sc.nextInt();
switch (i) {
case 1:
System.out.println("请输入注册账号:");
String a = sc.next();
System.out.println("请输入注册密码:");
String b = sc.next();
boolean duplicate = false;//检查是否已经存在相同的账户
for (int j = 0; j < name.length; j++) {
if (name[j][0] == null) { // 新建账户
break;
} else if (name[j][0].equals(a)) { // 账户已存在
System.out.println("该账号已存在,请重新输入!");
duplicate = true;
break;
}
}
if (!duplicate) {
for (int j = 2; j < name.length; j++) {
if (name[j][0] == null) {
name[j][0] = a;
name[j][1] = b;
balance[j][0] = 0.0;
System.out.println("注册成功!");
break;
}
}
}
break;
case 2:
int tryTimes = 0;
while (tryTimes < 3) {
System.out.println("请输入您的银行卡账号:");
String d = sc.next();
System.out.println("请输入您的密码:");
String e = sc.next();
for (int j = 2; j < name.length; j++) {
if (name[j][0] != null && name[j][0].equals(d) && name[j][1].equals(e)) {
// 登录成功,重置登录次数
tryTimes = 0;
boolean flag = true;
while (flag) {
System.out.println("========================");
System.out.println("请选择以下功能:");
System.out.println("1.查询余额\n2.取款\n3.存款\n4.转账\n5.修改密码\n6.退卡");
System.out.println("========================");
int n = sc.nextInt();
switch (n) {
case 1:
System.out.println("您的账户余额为:" + balance[j][0]);
break;
case 2:
System.out.println("请输入取款金额:");
double l1 = sc.nextDouble();
if (l1 % 50 != 0 || l1 <= 0) {
System.out.println("取款金额应为50或100的整数倍!");
} else if (balance[j][0] < l1) {
System.out.println("对不起,账户余额不足!");
} else {
balance[j][0] -= l1;
System.out.println("取款成功!您的账户余额为:" + balance[j][0]);
}
break;
case 3:
System.out.println("请输入存款金额:");
double j1 = sc.nextDouble();
if (j1 % 50 != 0 || j1 <= 0) {
System.out.println("存款金额应为50或100的整数倍!");
} else {
balance[j][0] += j1;
System.out.println("存款成功!您的账户余额为:" + balance[j][0]);
}
break;
case 4:
System.out.println("请输入转账账号:");
String l2 = sc.next();
System.out.println("请输入转账金额:");
double t1 = sc.nextDouble();
int j2 = -1;
for (int k = 0; k < name.length; k++) {
if (name[k][0] != null && name[k][0].equals(l2)) {
j2 = k;
break;
}
}
if (j2 == -1 || j2 == j) {
System.out.println("对不起,转账账号不存在或者不能向自己转账!");
} else if (t1 % 50 != 0 || t1 <= 0) {
System.out.println("取款金额应为50或100的整数倍!");
} else if (balance[j][0] < t1) {
System.out.println("对不起,账户余额不足!");
} else {
balance[j][0] -= t1;
balance[j2][0] += t1;
System.out.println("转账成功!您的余额为¥" + balance[j][0]);
}
break;
case 5:
System.out.println("请输入原密码:");
String oldPwd = sc.next();
if (oldPwd.equals(name[j][1])) {
System.out.println("请输入新密码:");
String newPwd = sc.next();
System.out.println("请再次输入新密码确认修改:");
String newPwd2 = sc.next();
if (oldPwd.equals(newPwd)) {
System.out.println("原密码与新密码重复,密码修改失败!");
}
else if(newPwd.equals(newPwd2)) {
name[j][1] = newPwd;
System.out.println("密码修改成功!请重新登录");
flag = false;
}
else {
System.out.println("两次输入的新密码不一致,密码修改失败!");
}
} else {
System.out.println("原密码不正确,密码修改失败!");
}
break;
case 6:
System.out.println("已成功退卡!");
System.out.println("-----返回到登录界面-----");
flag = false;
break;
default:
System.out.println("输入有误,请输入1—6的数字!");
break;
}
}
break;
} else {
// 登录失败,记录登录次数
tryTimes++;
System.out.println("密码错误,请重新输入!还有" + (3 - tryTimes) + "次机会!");
}
}}
// 登录超过限制,等待5分钟
System.out.println("登录次数超过限制,请等待5分钟之后再尝试登录!");
Thread.sleep(300000); // 5分钟=300秒=300000毫秒
break;
case 3:
System.out.println("感谢您的使用,再见!");
System.exit(0);
break;
default:
System.out.println("输入有误,请输入1—3的数字!");
break;
}
}
}
}