ATM机类

  • 需要ATM机类,该类完成主菜单的相关操作,在取钱和转账时,需判断余额情况

要求:实现数据持久化存储(方式不限)

package YY;

import java.util.Scanner;

public class ATM {

    private static boolean flag = true;
    private int id;
    private int passwd;

    private BankCard bankCard;

    private static Bank bank;
    /* 不写跳1空异常*/
    public ATM(){
        bank = new Bank();
    }

    Scanner scanner = new Scanner(System.in);


    public void start(){
        int chioce;

        while (flag == true){
            System.out.println("************\n" +
                    "**欢迎使用ATM**\n" +
                    "***************");
            System.out.println("请选择: 1.注册 2.登录 3.退出");
            chioce = scanner.nextInt();
            switch(chioce){
                case 1:

                    System.out.println(" *************\n" +
                            "**欢迎使用ATM**\n" +
                            "*************请输入账号和密码:");
                    id = scanner.nextInt();
                    passwd = scanner.nextInt();

                    register(id,passwd);

                    break;
                case 2:

                    System.out.println("请输入账号和密码:");
                    id = scanner.nextInt();
                    passwd = scanner.nextInt();

                    login(id,passwd);

                    break;
                case 3:

                    flag = false;
                    break;
            }
        }

    }

    //注册
    private void register(int id, int passwd) {

        //检查此卡号是否存在
        if(bank.contains(id)){
            System.out.println("此卡号已存在,注册失败!");
        }
        else{
            bankCard = new BankCard(id,passwd);
            bank.add(bankCard);
            System.out.println("注册成功!");

        }
    }

    //登录
    private void login(int id, int passwd) {

        //检查此卡号是否存在
        if(bank.login(id,passwd)){
            System.out.println("登陆成功!");
            //登陆成功 返回卡的信息
            bankCard = bank.getcard(id,passwd);
            //调用 ATM功能函数
            function(bankCard);

        }else{
            System.out.println("登陆失败! 请重新登录");
        }
    }

    //ATM功能函数
    private void function(BankCard bankCard) {
        double money;
        int count = 0;

        int chioce;
        while (flag == true){
            System.out.println("" +
                    "***********************************\n" +
                    "*******请输入你想要操作类型*******\n" +
                    "******1.存款  2.取款***********\n" +
                    "******3.查余额        4.转账***********\n" +
                    "******5.退卡       6.打印***********\n" +
                    "**********************************");
            chioce = scanner.nextInt();
            switch(chioce){
                case 1:
                    System.out.println("请输入存款金额:");
                    money = scanner.nextDouble();
                    bank.setMoney(bankCard,money);
                    System.out.println("存款成功!");

                    break;
                case 2:
                    System.out.println("请输入取款金额:");
                    money = scanner.nextDouble();
                    if(bank.getMoney(bankCard,money)){
                        System.out.println("取款成功!");
                    }else{
                        System.out.println("余额不足取款失败!");
                    }

                    break;
                case 3:

                    System.out.println("余额为:"+bank.getBalance(bankCard));

                    break;
                case 4:

                    System.out.println("请输入转账的账号:");
                    while(flag){
                        count = scanner.nextInt();
                        //检查此卡号是否存在
                        if(!bank.contains(count)){
                            System.out.println("此卡号不存在,请重新输入:");
                        } else{
                            flag =false;
                        }
                    }
                    System.out.println("请输入转账的金额:");
                    money = scanner.nextDouble();
                    if(bank.transfer(bankCard,bank.getcard1(count),money)){
                        System.out.println("转账成功!");
                    }else{
                        System.out.println("余额不足,转账失败!");
                    }

                    break;
                //莫名结束??
                case 5:

                    flag = false;
                    break;
            }

        }



    }





}
package YY;

import java.util.Arrays;

public class Bank {

        private BankCard[] cards;
        private static int cardsnum = 0;
        //  private static double cardsmoney = 0.0;
        private static final int INITSIZE = 10;

        public Bank(){
            cards = new BankCard[INITSIZE];
        }



        //查询卡是否存在
        public boolean contains(int id) {
            for(int i=0;i<cardsnum;i++){

                if (cards[i].getId() == id){
                    return true;
                }
            }
            return false;
        }

        //登录
        public boolean login(int id,int passwd) {
            for(int i=0;i<cardsnum;i++){

                if (cards[i].getId() == id && cards[i].getPasswd() == passwd){
                    return true;
                }
            }
            return false;
        }

        //添加一张银行卡
        public void add(BankCard card) {
            //判断存卡的数组是否已满
            if(cards.length == cardsnum){
                //数组已满执行扩容操作
                cards = Arrays.copyOf(cards,cards.length+(cards.length>>1));
            }

            //银行卡存入银行卡类型数组
            cards[cardsnum] = card;
            //银行卡数+1
            cardsnum++;


        }
        //输入卡号,密码返回银行卡
        public BankCard getcard(int id, int passwd){

            for(int i=0;i<cardsnum;i++){
                if (cards[i].getId() == id && cards[i].getPasswd() == passwd){
                    return cards[i];
                }
            }

            return null;
        }

        //存款
        public boolean setMoney(BankCard card,double money){
            return card.setMoney(money);

        }

        //取款
        public boolean getMoney(BankCard card,double money){
            return card.getMoney(money);
        }

        //查余额
        public double getBalance(BankCard card){

            return card.getBalance();
        }

        //转账
        public boolean transfer(BankCard card, BankCard tempcard, double money){
            if( card.getMoney(money)){
                tempcard.setMoney(money);
                return true;
            }

            return false;
        }

        //输入卡号,密码返回银行卡
        public BankCard getcard1(int id){

            for(int i=0;i<cardsnum;i++){
                if (cards[i].getId() == id){
                    return cards[i];
                }
            }

            return null;
        }

    }


package YY;

public class BankCard {

        private int id;
        private int passwd;
        private double money;


        public BankCard(int id, int passwd) {
            this.id = id;
            this.passwd = passwd;
        }


        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public int getPasswd() {
            return passwd;
        }

        public void setPasswd(int passwd) {
            this.passwd = passwd;
        }

        public boolean getMoney(double money) {
            if(this.money>=money){
                this.money -= money;
                return true;
            }else{
                return false;
            }
        }

        public boolean setMoney(double deposit) {
            this.money += deposit;
            return true;
        }

        public double getBalance(){
            return this.money;
        }



    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值