简单的ATM自助系统

在这里插入图片描述
在这里插入图片描述
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;
}

}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值