package cn.oracle;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Atm {
public static void main(String[] args) {
new Atm();
}
String name;
String pwd;
String nm;
String pw;
String op;
String history = "";
public double money = 0;
// 控制台输入
Scanner sc = new Scanner(System.in);
// 注册、登录、退出
public Atm() {
one: while (true) {
System.err.println("1.注册\n2.登录\n0.退出\n");
String op = sc.nextLine();
switch (op) {
case "1":
reg();
break;
case "2":
login();
break;
case "0":
System.err.println("欢迎下次使用,谢谢!");
break one;
default:
System.err.println("输入不正确,请重新输入!");
break;
}
}
}
// 定义注册方法
public void reg() {
System.err.println("*************欢迎使用*************");
System.err.println("请输入用户名:");
name = sc.nextLine();
System.err.println("请输入密码:");
String pwd1 = sc.nextLine();
System.err.println("请重新输入密码:");
String pwd2 = sc.nextLine();
if(pwd1.equals(pwd2)){
pwd = pwd1;
System.err.println("注册成功!");
System.err.println("用户名为:" + name);
}else{
System.err.println("输入前后两次密码不一致,请重新输入:");
reg();
}
}
// 登录
public void login() {
System.err.println("请输入用户名和密码:");
nm = sc.nextLine();
pw = sc.nextLine();
if (nm.equals(name) && pw.equals(pwd)) {
System.err.println("登陆成功!");
operation();
} else {
System.err.println("输入有误,请重新输入:");
}
}
// 登陆成功后,进行选择存款、取款、查询余额、退出
public void operation() {
System.err.println("1.存款\n2.取款\n3.查询余额\n4.修改密码\n5.历史记录\n0.退出");
op = sc.nextLine();
two: while (true) {
switch (op) {
case "1":
save();
break;
case "2":
withdraw();
break;
case "3":
balance();
break;
case "4":
resetkey();
break;
case "5":
history();
break;
case "0":
System.err.println("返回登录界面");
break two;
default:
System.err.println("选择不正确,请重新选择!");
break;
}
operation();
return;
}
}
// 定义实时时间
public String dt() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(new Date());
return str;
}
// 定义历史记录方法
public void history() {
System.err.println("**************************************************************************************");
System.err.println("\t时间\t\t操作\t\t金额(元)\t\t余额(元)");
System.err.println(history);
System.err.println("**************************************************************************************");
}
// 存款 + *******************存款金额限制*******************************
public void save() {
System.err.println("请输入存款金额:");
int money = Integer.parseInt(sc.nextLine()); // 为什么必须要用强制转换 nextLine作用
if (money <= 0) {
System.err.println("输入有误,请重新输入:");
save();
} else if(money > 3000){
System.err.println("输入金额超出可存最大金额,请重新输入!");
save();
}
else {
this.money = this.money + money;
System.err.println("余额为:" + money);
history += "\n" + dt() + "\t存钱\t\t" + money + "\t\t" + this.money;
}
}
// 取款 *******************取款金额限制*******************************
public void withdraw() {
System.err.println("请输入取款金额:");
int money = Integer.parseInt(sc.nextLine());
if (money < 0 || money > this.money) {
System.err.println("输入有误或余额不足,请重新输入:");
withdraw();
} else if(money > 3000){
System.err.println("输入金额超出可取最大金额,请重新输入!");
withdraw();
}else {
this.money = this.money - money;
System.err.println("余额为:" + this.money);
history += "\n" + dt() + "\t取款\t\t" + money + "\t\t" + this.money;
}
}
// 查询余额
public void balance() {
System.err.println("余额为:" + this.money);
history += "\n" + dt() + "\t查询余额\t\t" + "**" + "\t\t" + this.money;
}
// 修改密码
public void resetkey() {
System.err.println("请输入密码:");
String pwd1 = sc.nextLine();
System.err.println("请重新输入:");
String pwd2 = sc.nextLine();
if (pwd1.equals(pwd2)) {
if (pwd1.equals(pwd)) {
System.err.println("修改前后密码一致!");
return;
} else {
pwd = pwd1;
System.err.println("修改密码成功!");
history += "\n" + dt() + "\t修改密码\t\t" + "**" + "\t\t" + this.money;
}
} else {
System.err.println("两次输入不一致,请重新输入!");
resetkey();
}
}
}