欢迎光临
我们一直在努力

ATM系统生成卡号 登录功能

生成卡号:

  解题思路分析:

        1.生成8位随机数字卡号,初始化空字符串cardId用于拼接数字,创建Random对象生成随机数,通过for循环执行8次,每次生成0-9之间的随机整数,将随机数拼接到cardId中,最终得到8位数字组成的字符串。

        2.校验卡号调用getAccountCardId(cardId)方法,检查新生成的卡号是否已存在于系统中,通过方法遍历存储所有账户的accounts集合,一个个取出集合中的Account对象,若找到匹配号卡则返回Account对象,若未找到匹配返回null。

        3.若该方法返回null,则直接返回cardId并跳出循环,若返回null,则while循环重新执行,再次生成新的8位卡号,直到生成唯一卡号。

  代码过程:

/**根据卡号查询账户对象返回 accounts = [c1,c2,c3…]*/
private Account getAccountByCardId(String cardId){
//遍历全部的账户对象
for (int i = 0; i < accounts.size(); i++) {
Account acc = accounts.get(i);
//判断这个账号对象acc中的卡号是否是我们要找的卡号
if(acc.getCardId().equals(cardId)){
return acc;
}
}
return null; //查无此账号,这个卡号不存在的
}
/**返回一个8位 数字的卡号,而且这个卡号不能与其他账户的卡号重复*/
private String createCardTd(){
while(true){
//1.定义一个String类型的变量记住8位数字作为一个卡号
String cardId = "";
//2.使用循环,循环8次,每次产生一个随机数给cardId连接起来
Random r = new Random();
for (int i = 0; i < 8; i++) {
int data = r.nextInt(10);//0-9
cardId += data;
}
//3.判断cardId中记住的卡号,是否与其他账户的卡号重复了,没有重复,才可以作为一个新卡号返回
Account acc = this.getAccountByCardId(cardId);
if(acc == null){
//说明cardId没有找到账户对象,因此cardId没有与其他账号的卡号重复,可以返回他作为一个新卡号
return cardId;
}
}
}

登录功能:

  解题思路分析:

       先判断accounts集合是否为空,如果为空则提示“先开户”,直接结束登录流程

        在系统中存在账户对象,直接开始进行登录操作,首先使用内层while循环,持续输入卡号,直到输入有效卡号,调用getAccountByCardId方法,根据卡号查询账户对象,返回null则账户不存在提示重试,否则进入验证密码正确环节

        再次使用内层while循环,让用户持续输入密码,一直到输入的密码与最初开户时的密码一致,当密码正确时将当前账户赋值给loginAcc,打印信息,结束方法;若密码不正确,继续循环让用户重试,直到密码正确

        登录成功后执行return跳出所有循环,结束登录方法

  代码过程:

private Account loginAcc;//记住登录后的用户账户
/**完成用户的登录操作*/
public void login(){
System.out.println("=======用户登录操作=======");
//1.判断系统中是否存在账户对象,存在才能登录,如果不存在,我们直接结束登录操作
if(accounts.size() == 0){
System.out.println("当前系统中没有账户,请先开户");
return;//跳出登录操作
}
//2.系统中存在账户对象,可以开始进行登录操作了
while(true){
System.out.println("请输入您的卡号:");
String cardId = sc.next();
//3.判断这个卡号是否存在
Account acc = getAccountByCardId(cardId);
if(acc == null){
//说明这个卡号不存在
System.out.println("您输入的卡号不存在,请重新输入");
}else{
while(true){
//卡号存在了,接着让用户输入密码
System.out.println("请输入您的密码:");
String password = sc.next();
//4.判断密码是否正确
if(acc.getPassword().equals(password)){
loginAcc = acc;
//密码正确了,登录成功了
System.out.println("恭喜您" + acc.getName() + "成功登录了系统,您的卡号是" + acc.getCardId());
//TODO 把展示登录界面的功能写成一个方法,写好了再回来调用
this.createAccount();
return;//跳出并结束当前登录方法
}else{
System.out.println("您输入的密码有误,请重新输入");
}
}
}
}
}

赞(0)
未经允许不得转载:171主机测评 » ATM系统生成卡号 登录功能
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址