简单的ATM系统

实现简单的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);
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值