[java->ATM小系统]--用户开户功能实现


个人名片:
🐅作者简介:一名大二在校生,热爱生活,爱好敲码!
‍💅个人主页🥇:holy-wangle
➡系列内容:🖼️tkinter前端窗口界面创建与优化
✨个性签名:🍭不积跬步,无以至千里;不积小流,无以成江海。


案例文章

     0. 完整代码位置

  1. 系统准备、首页设计
  2. 用户开户功能实现
  3. 用户登录功能实现
  4. 用户操作页设计、查询账户、退出账户功能实现
  5. 用户存款功能实现
  6. 用户取款功能实现
  7. 用户转账功能实现
  8. 用户密码修改、销户功能实现 

2.用户开户功能实现

开户功能其实就是往系统的集合容器中存入一个新的账户对象的信息。

具体实现:

开户应该定义成一个方法,并传入账户集合

创建一个Account账户类的对象用于封装账户信息(姓名、密码、卡号)

键盘录入姓名、密码、确认密码(需保证两次密码一致)

生成账户卡号,卡号必须是系统自动生成的8位数字(且卡号唯一)

把Account账户对象存入到集合accounts中去。

代码实现:

  • 注册
private static void register(ArrayList<Account> accounts,Scanner sc) {
        // 开户功能实现
       System.out.println("===============ATM系统开户功能===============");
       Account account = new Account();
       System.out.println("请您输入账号名:");
       String name = sc.next();
       account.setUserNames(name);
       while (true) {
           System.out.println("请您输入密码:");
           String passWord = sc.next();
           System.out.println("请您再次输入密码:");
           String okPassWord = sc.next();
           if (passWord.equals(okPassWord))
           {
               System.out.println("密码确认成功!");
               account.setPassWord(okPassWord);
               break;
           }
           else
           {
               System.out.println("抱歉!两次密码输入不一致,请重新输入!");
           }
       }
       System.out.println("请设置当初提现最大额度:");
       double quoteMoney = sc.nextDouble();
       account.setQuotaMoney(quoteMoney);

       // 为账号随机生成一个8位数的卡号且不重复的号码(独立功能,独立方法)
       String cardId = getCardId(accounts);
       account.setCardId(cardId);

       //3.把账户对象添加到账户集合去
       System.out.println("账号添加完成!");
       accounts.add(account);
       System.out.println("恭喜!" + name + "先生/女士," + "\n" + "您的账户注册成功!"
               + "卡号是:" + cardId);

    }
  • 得到唯一的卡号

    /**
     * 随机生成卡号不重复
     * @return
     */

    private static String getCardId(ArrayList<Account> accounts) {
        // 随机生成8个数字
        Random r = new Random();
        while (true) {
            String cardId = "";
            for (int i = 0; i < 8; i++) {
                int data = r.nextInt(10);
                cardId += data;

            }
            // 这里再定义一个方法去,获得独一无二的卡号
            Account acc  = getSureCardId(cardId,accounts);
            // 如果为空的话,证明没有出现该卡号,就可以使用该卡号
            if (acc == null)
            {
                return cardId;
            }
        }

    }

    /**
     * 根据卡号查询处一个账户对象
     * @param cardId 生成的卡号
     * @param accounts 账户集合
     * @return 返回一个账户对象地址
     */
    private static Account getSureCardId(String cardId, ArrayList<Account> accounts) {
        for (int i = 0; i < accounts.size(); i++) {
            Account acc = accounts.get(i);
            if (acc.getCardId().equals(cardId)) {
                return acc;
            }
        }
        return null;//查无此账号

    }


好了,今天的分享就这么多了,有什么不清楚或者我写错的地方,请多多指教!

私信,评论我呗!!!!!!

关注我下一篇不迷路哦!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值