ATM机类
public class ATM {
// 内部先保存三个账号的信息 私有外界不能访问,static,代表所有ATM对象所公用的账号信息!不是每个ATM对象所独有的一套!
private static Account[] accounts = {
new Account("zs", "123", 1000), new Account("ls", "123", 2000),
new Account("ww", "123", 3000) };
// 保存当前已经登录成功的那个活动账号信息,谁登录就赋值为谁!!1
private Account activeAccount;
// 设置一个已经登录的标志//不是必须,我们可以通过activeAccount是不是null来判断有无账号登录!
private boolean isLogin = false;
// ATM的编号!
private String code;
// 只提供有参,不提供无参,必须使用这个来构造对象,必须提供编号
public ATM(String code) {
this.code = code;
}
private Scanner sc = new Scanner(System.in);
/**
* ATM机的启动方法,运行方法,这里是ATM机的主要逻辑!
*
*/
public void run() {
// 1:让用户登录
customerLogin();
if (isLogin == false) {
// 客户没登录成功!
System.out.println("三次失败!ATM将锁定你的账号10分钟!暂时无法使用");
return;// 结束掉run() 结束ATM本次运行
}
// 2:根据用户登录的结果 A:登录失败 B:登录成功
while (true) {
//此循环是让ATM一直执行,直到用户选择5 退出系统!!!
System.out.println("登录成功!欢迎使用本ATM!");
System.out.println("____________操作____________");
System.out.println("1:查询余额");
System.out.println("2:存钱");
System.out.println("3:取钱");
System.out.println("4:修改密码");
System.out.println("5:退出系统");
System.out.println("____________操作____________");
String choose = sc.next();
switch (choose) {
case "1":
showBalance();
break;
case "2":
add();
break;
case "3":
draw();
break;
case "4":
modifyPASS();
break;
case "5":
System.out.println("本次使用结束!退出系统");
return;
default:
System.out.println("无此选项");
break;
}
}
}
private void modifyPASS() {
System.out.println("输入旧密码:");
String oldPASS = sc.next();
if(oldPASS.equals(this.activeAccount.getPassword())) {
//密码不对!
System.out.println("旧密码错误!本次取消!");
return;//结束此方法!
}
System.out.println("输入新密码:");
String newPASS = sc.next();
System.out.println("重复输入新密码:");
String repeatPASS = sc.next();
if(newPASS.equals(repeatPASS)) {
System.out.println("两次输入新密码不一致!本次取消!");
return;
}
this.activeAccount.setPassword(newPASS);
System.out.println("修改密码成功!");
}
private void add() {
System.out.println("放入要存入的钱:");
int add = sc.nextInt();
if(add>0) {
int balance = this.activeAccount.getBalance();
this.activeAccount.setBalance(add+balance);
System.out.println("存钱成功!");
}else {
System.out.println("要存的钱有问题!本次存钱取消!");
}
}
private void draw() {
System.out.println("输入你要取出的钱:");
int take = sc.nextInt();
int balance = this.activeAccount.getBalance();//当前余额
if(take > balance || take <= 0) {
System.out.println("超出余额或要取出的数量有问题!本次取钱取消!");
}else {
this.activeAccount.setBalance(balance - take);
System.out.println("成功取出"+take+"元");
}
}
private void showBalance() {
System.out.println("你的余额:"+this.activeAccount.getBalance()+"元");
}
// 客户有三次登录机会
private void customerLogin() {
for (int i = 1; i <= 3; i++) {
System.out.println("输入用户名:");
String username = sc.next();
System.out.println("输入密码:");
String password = sc.next();
// 拿着用户名和密码到accounts 数组里去逐个匹配!
for (Account account : accounts) {
if (username.equals(account.getUsername()) && password.equals(account.getPassword())) {
// 修改登录标记,记录当前登录的账号
isLogin = true;
activeAccount = account;
break;// 不需要再继续匹配余下的账号!
}
}
if (isLogin == true) {
// 循环匹配到了账号,登录成功,登录成功就不需要剩余的次数来登录了
break;// 结束外循环,次数的循环
} else {
// 当前这一次外循环没有登录成功!打印!
int times = 3 - i;
System.out.println("本次登陆失败!还剩" + times + "次机会!");
}
}
}
public static void main(String[] args) {
// 创建一个ATM机
ATM atm = new ATM("城中村101号");
atm.run();
}
}
Account数组对象
/**
* 本需求中的账号信息:封装了用户名 密码 余额
* @author 86188
*
*/
public class Account {
private String username;
private String password;
private int balance;
public Account() {
// TODO Auto-generated constructor stub
}
public Account(String username, String password, int balance) {
this.username = username;
this.password = password;
this.balance = balance;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
}
所有的解析都写在了文字注释中,还请批评指正。
对我的博客或其他方面有任何见解或问题的话都可以私信我
或者联系本人QQ:3128909688
微信:DreamHerome
欢迎致电