通过实现简单的银行接口实现账号密码验证码匹配
package com_5_9_bank;
public interface Union {
double saveMoney(double moneyCount);
void getMoney(double taste_money);
boolean checkPwdOrUser(String user, String pwd);
String Verification_Code();
}
package com_5_9_bank;
public interface CCB_Bank extends Union {
double saveMoney(double moneyCount);
void getMoney(double taste_money);
boolean checkPwdOrUser(String user, String pwd);
String Verification_Code();
}
package com_5_9_bank;
public class Card {
double money;
String user = "zhangsan";//定义了账号密码
String pwd = "1234";
}
package com_5_9_bank;
import java.util.Random;
public class ATM implements CCB_Bank {
Card c;
public boolean checkPwdOrUser(String user, String pwd) {
if ((c.user.equals(user)) && (c.pwd.equals(pwd))) {
return true;
}
return false;
}
public void insertCard(Card c) {
this.c = c;
System.out.println("插卡成功");
System.out.println("欢迎使用本行信用卡");
}
public double saveMoney(double moneyCount) {
c.money = moneyCount + c.money;
System.out.println("本次存款:" + moneyCount + " 卡内余额:" + c.money);
return c.money;
}
public void getMoney(double taste_money) {
c.money = c.money - taste_money;
System.out.println("取出:" + taste_money + "元");
System.out.println("账户余额:" + c.money);
}
public String Verification_Code() {
String str = getRandomString(7);
System.out.println("验证码为:"+str);
return str;
}
public static String getRandomString(int length) {
//生成随机字符串并返回作为其验证码
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";// 含有字符和数字的字符串
Random random = new Random();// 随机类初始化
StringBuffer sb = new StringBuffer();// StringBuffer类生成,为了拼接字符串
for (int i = 0; i < length; ++i) {
int number = random.nextInt(62);// [0,62)
sb.append(str.charAt(number));
}
return sb.toString();
}
}
package com_5_9_bank;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws InterruptedException {
ATM atm = new ATM();
Card c = new Card();
atm.insertCard(c);
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入账号密码:");
for (int i = 0; i < 3; i++) {
/* 这里只是实现了输入错误3次之后跳出循环不允许输入
如果需要直到输入正确 直接将for循环改为死循环即可*/
String user = sc.next();
String pwd = sc.next();
boolean bl = atm.checkPwdOrUser(user, pwd);
String str1 = atm.Verification_Code();
if (bl) {
System.out.println("账号密码匹配正确-------");
System.out.println("请输入验证码:");
String v_code = sc.next();
if (str1.equals(v_code)) {
System.out.println("验证码正确");
System.out.println("欢迎您");
} else {
System.out.println("验证码错误");
continue;
}
atm.saveMoney(100);
atm.getMoney(50);
break;//如果上述条件满足跳出本次循环
} else {
System.out.println("账号或密码错误-----");
continue;//如果上述条件不满足跳出当前循环执行下一次循环
}
}
}
}