3.ATM综合案例---黑马程序员

ATM案例

D:\code\黑马\code\ATM-system

image-20230724112524242

image-20230724113218993

  • 实体类

    public class Account {
        private String cardId;
        private String userName;
        private char sex;
        private String passWord;
        private double money;
        private double limit; // 限额
    
        public Account() {
        }
    
        public Account(String cardId, String userName, char sex, String passWord, double money, double limit) {
            this.cardId = cardId;
            this.userName = userName;
            this.sex = sex;
            this.passWord = passWord;
            this.money = money;
            this.limit = limit;
        }
    
        public String getCardId() {
            return cardId;
        }
    
        public void setCardId(String cardId) {
            this.cardId = cardId;
        }
    
        public String getUserName() {
            return userName + ( sex  == '男' ? "先生" : "女士");
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public char getSex() {
            return sex;
        }
    
        public void setSex(char sex) {
            this.sex = sex;
        }
    
        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;
        }
    
        public double getLimit() {
            return limit;
        }
    
        public void setLimit(double limit) {
            this.limit = limit;
        }
    }
    
  • 操作类

    • 欢迎界面

      public void start(){
              while (true) {
                  System.out.println("===欢迎您进入到了ATM系统===");
                  System.out.println("1、用户登录");
                  System.out.println("2、用户开户");
                  System.out.println("请选择:");
                  String command = sc.next();
                  switch (command){
                      case "1":
                          // 用户登录
                          login();
                          break;
                      case "2":
                          // 用户开户
                          createAccount();
                          break;
                      default:
                          System.out.println("没有该操作~~");
                  }
              }
          }
      
    • 开户功能

      image-20230724114729073

          private void createAccount(){
              System.out.println("==系统开户操作==");
              Account acc = new Account();
      
              System.out.println("请您输入您的账户名称:");
              String name = sc.next();
              acc.setUserName(name);
      
              while (true) {
                  System.out.println("请您输入您的性别:");
                  char sex = sc.next().charAt(0);
                  if(sex == '男' || sex == '女'){
                      acc.setSex(sex);
                      break;
                  }else {
                      System.out.println("您输入的性别有误~只能是男或者女~");
                  }
              }
      
              while (true) {
                  System.out.println("请您输入您的账户密码:");
                  String passWord  = sc.next();
                  System.out.println("请您输入您的确认密码:");
                  String okPassWord  = sc.next();
                  if(okPassWord.equals(passWord)){
                      acc.setPassWord(okPassWord);
                      break;
                  }else {
                      System.out.println("您输入的2次密码不一致,请您确认~~");
                  }
              }
      
              System.out.println("请您输入您的取现额度:");
              double limit = sc.nextDouble();
              acc.setLimit(limit);
              
              String newCardId = createCardId();
              acc.setCardId(newCardId);
      
              accounts.add(acc);
              System.out.println("恭喜您," + acc.getUserName() + "开户成功,您的卡号是:" + acc.getCardId());
          }
      
      • 生成八位随机数且不重复作为卡号
       private String createCardId(){
              while (true) {
                  String cardId = "";
                  Random r = new Random();
                  for (int i = 0; i < 8; i++) {
                      int data = r.nextInt(10); // 0 - 9
                      cardId += data;
                  }
                  Account acc = getAccountByCardId(cardId);
                  if(acc == null){
                      return cardId;
                  }
              }
          }
      
      private Account getAccountByCardId(String cardId){
              for (int i = 0; i < accounts.size(); i++) {
                  Account acc = accounts.get(i);
                  if(acc.getCardId().equals(cardId)){
                      return acc;
                  }
              }
              return null; 
      
    • 登录功能

      image-20230724131152857

          private void login(){
              System.out.println("==系统登录==");
              if(accounts.size() == 0){
                  System.out.println("当前系统中无任何账户,请先开户再来登录~~");
                  return; 
              }
      
              while (true) {
                  System.out.println("请您输入您的登录卡号:");
                  String cardId = sc.next();
                  Account acc = getAccountByCardId(cardId);
                  if(acc == null){
                      System.out.println("您输入的登录卡号不存在,请确认~~");
                  }else {
                      while (true) {
                          System.out.println("请您输入登录密码:");
                          String passWord = sc.next();
                          if(acc.getPassWord().equals(passWord)){
                              loginAcc = acc;
                              System.out.println("恭喜您," + acc.getUserName() + "成功登录了系统,您的卡号是:" + acc.getCardId());
                              showUserCommand();
                              return; 
                          }else {
                              System.out.println("您输入的密码不正确,请确认~~");
                          }
                      }
                  }
              }
          }
      
    • 登录成功后续功能(详见代码)

      在这里插入图片描述

  • 测试类

    public class Test {
        public static void main(String[] args) {
            ATM atm =  new ATM();
            atm.start();
        }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值