package p1;
import java.util.Scanner;
public class TestBank{
public static void main(String []args){
Bank bank = new Bank();
bank.login();
}
}
class Bank{
Scanner input = new Scanner(System.in);
User []users = new User[3];
int post;
public Bank(){
users[0] = new User(“6222020200001234567”, “123456”, “13900000000”,“11010119910203”, 2000.0);
users[1] = new User(“6222020200001237777”, “123456”, “13900000123”,“11010119914567”, 3000.0);
users[2] = new User(“6222020200001238888”, “123456”, “13900055667”,“11010119914321”, 4000.0);
}
// 登录(登录成功-进入操作界面;不成功,提示用户名不存在或是密码错误)
public void login() {
boolean boo;
do{
boo = false;
System.out.println("-----欢迎使用百知ATM自助终端-----");
System.out.println("-------根据提示请先登录---------");
System.out.print("请输入卡号:");
String acc = input.next();
System.out.print("请输入密码:");
String pwd = input.next();
// 判断:卡号和密码是否正确
boolean bn = false;
for (int i = 0; i < users.length; i++) {
if (users[i].getAccount().equals(acc) && users[i].getPassword().equals(pwd)) {
post = i;
showMenu();
bn = true;
}
}
if(bn == false){
System.out.println("用户名不存在或是密码错误!");
System.out.println("重新输入-true,退出-false");
boo = input.nextBoolean();
}
}while(boo);
}
public void showMenu(){
int choice;
do {
System.out.println("-----------欢迎使用zxwATM自助终端操作界面--------");
System.out.println("1.查询余额 2.修改密码 3.存款 4.取款 5.转账 6.退出");
System.out.println("---------------根据提示进行操作-------------------");
System.out.print("请输入操作编号:");
choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("查询余额");
choice = queryBalance(choice);
break;
case 2:
System.out.println("修改密码");
choice = updatePassword(choice);
break;
case 3:
System.out.println("存款");
choice = save(choice);
break;
case 4:
System.out.println("取款");
choice = take(choice);
break;
case 5:
System.out.println("转账");
choice = transfer(choice);
case 6:
System.out.println("欢迎下次使用~~~");
break;
default:
System.out.println("输入错误,请重新输入!");
break;
}
} while (choice!=6);// 有误就循环
}
// 查询余额
public int queryBalance(int choice){
if(users[post].verifyPassword()){
System.out.println("您当前账户的余额为: " + users[post].getBalance() + "元");
}else{
choice = 6;
}
return choice;
}
//修改密码 如果二级密码错误三次,直接强制退出,提示账户冻结
public int updatePassword(int choice){
boolean bn;
do{
bn = true;
if(users[post].verifyPassword()){
boolean bool;
do{
bool = true;
System.out.print("新密码: ");
String newPassword1 = input.next();
System.out.println();
if(newPassword1.equals(users[post].getPassword())){
System.out.println("原密码和新密码相同,重新设置新密码-true,退出-false");
bool = input.nextBoolean();
}else if(newPassword1.length() < 6){
System.out.println("新密码过短,请输入一个6位数的密码:");
}else if (newPassword1.length() > 6){
System.out.println("新密码过长,请输入一个6位数的密码:");
}else{
boolean bo;
do{
System.out.println("请再次输入新密码:");
String newPassword2 = input.next();
if(newPassword1.equals(newPassword2)){
users[post].setPassword(newPassword1);
System.out.println("密码修改成功!");
bo = false;
}else{
System.out.println("两次密码输入不一致!请按下面提示输入!");
System.out.println("重新输入-true,重新设置新密码-false");
bo = input.nextBoolean();
if(bo == false){
bn = true;
}
}
}while(bo);
bool = false;
}
}while(bool);
}else{
choice = 6;
}
return choice;
}while(bn);
}
// 存款
public int save(int choice) {
if(users[post].verifyPassword()){
System.out.println("您要存多少钱:");
double saveMoney = input.nextDouble();
if(saveMoney < 0){
System.out.println("存款金额不合法!");
}else{
users[post].setBalance(users[post].getBalance() + saveMoney);
System.out.println("存款成功!");
}
}else{
choice = 6;
}
return choice;
}
// 取款
public int take(int choice) {
if(users[post].verifyPassword()){
System.out.println("请输入您的取款金额: ");
double takeMoney = input.nextDouble();
double balance = users[post].getBalance();
if(takeMoney < 0){
System.out.println("取款金额不合法!");
}else if (takeMoney > balance){
System.out.println("账户余额不足!您当前的可用余额为: " + balance + "元");
}else{
users[post].setBalance(balance - takeMoney);
System.out.println("取款成功!");
}
}else{
choice = 6;
}
return choice;
}
//转账
public int transfer(int choice) {
if(users[post].verifyPassword()){
boolean boo;
do{
boo = false;
System.out.println("请输入您需要转账的卡号: ");
String acc = input.next();
// 判断:转账账户是否存在
boolean bn = false;
for (int i = 0; i < users.length; i++) {
if (users[i].getAccount().equals(acc)) {
System.out.println("请确认这是否为您要转账的用户手机号: " + users[i].getPhone().replaceAll("\\d{7}(\\d{4})", "*******$1"));
System.out.println("确认-true,重新输入-false");
boo = input.nextBoolean();
boolean boole;
do{
boole = false;
if(boo){
System.out.println("请输入您的转账金额: " );
double transferMoney = input.nextDouble();
double balance = users[post].getBalance();
if(transferMoney < 0){
System.out.println("转账金额不合法!");
}else if (transferMoney > balance){
System.out.println("账户余额不足!您当前的可用余额为: " + balance + "元");
System.out.println("重新输入金额-true,退出-false");
boole = input.nextBoolean();
}else{
users[post].setBalance(balance - transferMoney);
System.out.println("转账成功!");
}
}
}while(boole);
bn = true;
}
}
if(bn == false){
System.out.println("该用户不存在!");
System.out.println("重新输入-true,退出-false");
if(input.nextBoolean()){
boo = false;
}else{
boo = true;
}
}
}while(boo == false);
}else{
choice = 6;
}
return choice;
}
}
class User{
Scanner s = new Scanner(System.in);
private String account;// 账户
private String password;// 密码
private String phone;// 电话
private String idCard;// 身份证
private double balance;// 余额
private String securityPassword;
public User(){}
public User(String account, String password, String phone,String idCard, double balance){
setAccount(account);
setPassword(password);
setPhone(phone);
setIdCard(idCard);
setBalance(balance);
}
public void setAccount(String account){
this.account = account;
}
public String getAccount(){
return account;
}
public void setPassword(String password){
boolean bn;
do{
bn = false;
if(securityPassword(password)){
this.password = password;
}else{
System.out.println("请重新设置一个密码:");
String newPassword = s.next();
bn = true;
}
}while(bn);
}
public String getPassword(){
return password;
}
public void setPhone(String phone){
this.phone = phone;
}
public String getPhone(){
return phone;
}
public void setIdCard(String idCard){
this.idCard = idCard;
}
public String getIdCard(){
return idCard;
}
public void setBalance(double balance){
this.balance = balance;
}
public double getBalance(){
return balance;
}
//验证密码的有效性
public boolean securityPassword(String password){
boolean bn;
if(password.length() < 6){
System.out.println("密码过短,请输入一个6位数的密码:");
bn = false;
}else if (password.length() > 6){
System.out.println("密码过长,请输入一个6位数的密码:");
bn = false;
}else{
bn = true;
}
return bn;
}
//密码校对
public boolean verifyPassword(){
for(int i = 1;i <= 3;i++){
boolean bn;
bn = true;
System.out.println("原密码:");
String vp = s.next();
if(vp.equals(password)){
return true;
}else if(i < 3){
System.out.println("输入错误,你今天还有" + (3-i) + "次机会");
}else{
System.out.println("今日输入密码的次数已达上限!账户已被冻结~~");
}
}
return false;
}
}