ATM模拟系统

//键盘输入的准备
    public static Scanner sc = new Scanner(System.in);
    
    public static String[][] us=new String[10][3];//第一个[]中放置行数,第二个[]每条数据上有几个空间
    
    public static int loginIndex=-1;//登录成功时,信息所在二维数组中的行位置
  
 static {
        us[0][0]="woniu";
        us[0][1]="1";
        us[0][2]="5000";
        
        us[1][0]="Lucy";
        us[1][1]="2";
        us[1][2]="3000";
    }
    /*
     * 登录功能的实现
     * 1.先判断这个us容器是否存在
     * 2.先输入账号和密码
     * 3.读取容器中的数据与输入的账号和密码比较
     * 4.比较有相同的,代表成功,否则登录失败
     * 5.登录成功,操作钱
     * 
     * */

    public static void main(String[] args) {
        System.out.println("=====欢迎使用蜗牛ATM无限制存取款系统=========");
        System.out.println("===请输入你的选项,1:登录 2:注册 3:退出=========");
        System.out.println("========================================");
        
        
        int input=sc.nextInt();
        
        switch(input) {
            case 1:
                login();
                break;
            case 2:
                regedit();
                break;
            case 3:
                System.exit(-1);
                break;
            default:
                System.out.println("请正确输入");    
                break;
        }
        
        //当再次输入的时候,判断用户输入的数是否有效
        //如果有效进入下一步操作,无效则让用户再次重新输入

        这一块需要解决的问题:当用户连续输入错误2次以上怎么处理
        int secondInput=sc.nextInt();
         
        switch(secondInput) {
        case 1:
            login();
            break;
        case 2:
            regedit();
            break;
        case 3:
            System.exit(-1);
            break;
        default:
            System.out.println("请正确输入");    
            break;
        }
        

        
    }
    public static void login() {
        if(us!=null) {//判断这个us容器是否存在
            System.out.println("输入账号");
            String lname=sc.next();
            System.out.println("请输入密码");
            String psw=sc.next();
            
            boolean isLoginOk =false;//登录是否成功的标记,默认值是登录失败
            
            for(int i=0;i<us.length;i++) {
                String[] u=us[i];
                if(u[0]!=null && u[0].equals(lname) && u[1]!=null && u[1].equals(psw)) {
                    //登录成功
                    System.out.println("恭喜登录成功");
                    isLoginOk=true;
                    
                    
                    //缓存登录成功时这个用户所在数组的行值
                    loginIndex=i;
                    //操作钱
                    doMoney();
                    break;
                }
            }
            //当isLoginOk是false的时候,进入失败处理
            if(!isLoginOk) {
                System.out.println("登录失败");
            }
        }
    }
    //账号钱的操作
    public static void doMoney() {
        System.out.println("==================请输入你的选项:=====================");
        System.out.println("==1:查询余额 2:转账3:取款 4:取款 5:返回菜单 6:退出==");
        System.out.println("====================================================");
        
        int n=sc.nextInt();
        switch(n) {
        case 1:
            showMoney();
            break;
        case 2:
            transfer();
            break;
        case 3:
            System.out.println("取款功能正在建设中...");
            break;
        case 4:
            System.out.println("存款功能正在建设中");
            break;
        case 5://返回主菜单
            main(null);
            break;
        default:
            System.out.println("请正确输入");
            break;
        }
    }
    /*
     * 展示余额
     * */

    public static void showMoney() {
        
        System.out.println("当前用户"+us[loginIndex][0]+"的账号余额"+us[loginIndex][2]);
        //回到子菜单的选项
        doMoney();
    }
    
    /*
     * 转账功能实现
     * 1.输入转入账号
     * 2.判断账号是否存在,存在了可以转,不存在友好提示
     * 3.判断钱够不够,够了才可以转
     * 4.给对方的余额增加,自己余额减少
     * 
     * */

    public static void transfer() {
        System.out.println("请输入转入账号");
        String yourLname=sc.next();
        
        //判断对方账号是否存在
        for(int i=0;i<us.length;i++) {
            if(us[i][0]!=null  && us[i][0].equals(yourLname)) {
                //有账号了
                System.out.println(us[loginIndex][0]+"的当前余额是"+us[loginIndex][2]);
                System.out.println();
                System.out.println("请输入转账金额");
                int money=sc.nextInt();
                
                if(money<=0) {
                    System.out.println("请输入大于0的金额");
                    break;
                }
                
                //将登陆用户的钱的字符串转为int类型
                int loginMoney=Integer.parseInt(us[loginIndex][2]);
                if(money<=loginMoney) {
                    //可以进行转账了
                    int otherMoney=Integer.parseInt(us[i][2]);//对方原有的余额
                    //给对方增加
                    us[i][2]=otherMoney+money+"";//“ ”把int类型转为字符串
                    //给当前账号减钱
                    us[loginIndex][2]=loginMoney-money+"";
                    
                    System.out.println("转账成功");
                    System.out.println("您的当前账户余额为:"+us[loginIndex][2]);
                    System.out.println("对方当前账户余额为:"+us[i][2]);
                    
                }else {
                    System.out.println("你的余额不足,余额是:"+loginMoney);
                }
            }else {
                System.out.println("您输入的账号不存在");
            }
            //继续操作钱
            System.out.println();
            doMoney();
        }
        
    }
    /*
     * 注册
     * 1.输入注册的账号和密码
     * 2.找到存放账号和密码的位置
     * 3.存放账号密码,以及有个默认的金额5000
     * 4.跳转至登录功能
     * */

     public static void regedit() {
        System.out.println("请输入要注册的账号");
        String lname=sc.next();
        System.out.println("请输入要注册的密码");
        String psw=sc.next();
        
        boolean isRegeditOk=false;//是否成功的标记,默认没有注册成功
        
        //找到存放账号和密码的位置
        for(int i=0;i<us.length;i++) {//行中的每列
            
                //第i行第0列中内容为null,直接进行注册
                if(us[i][0]==null) {
                    us[i][0]=lname;//赋值给第i行上的的第0列为输入账号
                    us[i][1]=psw;//赋值给第i行上的的第1列为输入密码
                    us[i][2]="5000";//赋值给第i行上的的第2列为默认钱5000

                    isRegeditOk=true;
                    break;
                }
            
            if(isRegeditOk) {
                break;
            }
        }
        //注册后的处理
        if(isRegeditOk) {
            //调用登录的方法
            System.out.println("====注册成功,请登录====");
            login();
        }else {//失败的处理
            System.out.println("注册失败");
        }
    }
     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值