Java类和对象实现简单的银行ATM系统

用类和对象实现的最简单的银行ATM操作系统,不包含继承,多态等概念,对初学类和对象的朋友有很好的借鉴之处,不支持跨行转账,如果想要支持跨行转账也可以单独把各个银行当做对象实现更多功能。大体思路:ATM单独作为一个类,里面组合银行Bank类,Bank里面再组合银行卡BankCard类,层层递进,所有的操作围绕ATM类里面的Operate方法入手,用到什么操作再在外面单独封装好。

import java.util.Scanner;

public class ATM {
    private Bank bank;
    public ATM(){
        bank = new Bank();
    }
    private BankCard login(int id,int passwd){
//        BankCard[] arr = bank.getCards();
//        int size = bank.getSize();
//        for(int i=0;i<size;i++){
//            if(arr[i].getId() == id && arr[i].getPasswd() == passwd){
//                System.out.println("登陆成功");
//                return;
//            }
//        }
//        System.out.println("登陆失败");

        return bank.searchCard(id,passwd);
    }
    private boolean register(int id,int passwd){
        return bank.addCard(id,passwd);
    }
    private void loginSuccess(BankCard card){
        while (true) {
            System.out.println("1.存款 2,取款 3.查余额 4 转账 5.退卡");
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();
            if(choice == 5){
                break;
            }
            switch (choice){
                case 1:
                    System.out.println("请输入存款金额:");
                    int money = scanner.nextInt();
                    card.saveMoney(money);
                    break;
                case 2:
                    System.out.println("请输入取款金额:");
                    money = scanner.nextInt();
                    card.withdrawMoney(money);
                    break;
                case 3:
                    System.out.println("当前余额:"+card.getMoney());
                    break;
                case 4:
                    System.out.println("请输入转账用户id:");
                    int id = scanner.nextInt();
                    BankCard cardUser = bank.searchCardOfID(id);
                    if(cardUser == null){
                        System.out.println("无此用户");
                        break;
                    }
                    System.out.println("请输入转账金额:");
                    money = scanner.nextInt();
                   if(card.withdrawMoney(money)) {
                       cardUser.saveMoney(money);
                   }
                    break;
            }
        }
    }
    public void operate() {
        while (true) {
            System.out.println("1.登陆 2.注册 3.退出");
            Scanner scanner = new Scanner(System.in);
            int chioce = scanner.nextInt();
            if (chioce == 3) {
                return;
            }
            System.out.println("请输入账号,密码:");
            int id = scanner.nextInt();
            int passwd = scanner.nextInt();
            switch (chioce) {
                case 1:
                    BankCard card = login(id,passwd);
                    if(card==null){
                        System.out.println("登陆失败");
                    }else{
                        System.out.println("登陆成功");
                        loginSuccess(card);
                    }
                    break;
                case 2:
                    boolean bool = register(id,passwd);
                    if(!bool){
                        System.out.println("注册失败");
                    }else{
                        System.out.println("注册成功");
                    }
                    break;
            }
        }
    }
}

import java.util.Arrays;

public class Bank {
    private BankCard[] cards;
    private int size;
    private static final int INITSIZE = 10;
    public Bank(){
        cards = new BankCard[INITSIZE];
    }
    public BankCard searchCard(int id,int passwd){
        for(int i=0;i<size;i++){
            if(cards[i].getId()==id && cards[i].getPasswd()==passwd){
                return cards[i];
            }
        }
        return null;
    }

    public BankCard searchCardOfID(int id){
        for(int i=0;i<size;i++){
            if(cards[i].getId()==id){
                return cards[i];
            }
        }
        return null;
    }
    public boolean addCard(int id,int passwd){
        BankCard card = searchCard(id,passwd);
        if(card != null){
            return false;
        }
        card = new BankCard(id,passwd);
        if(size == cards.length){
            cards = Arrays.copyOf(cards,cards.length*2);
        }
        cards[size++] = card;
        return true;
    }
}

public class BankCard {
    private int id;
    private int passwd;
    private int  money;

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

    public int getId() {
        return id;
    }

    public int getPasswd() {
        return passwd;
    }
    public void saveMoney(int money){
        this.money+=money;
    }
    public boolean withdrawMoney(int money){
        if(this.money >= money) {
            this.money -= money;
            return true;
        }else{
            System.out.println("余额不足");
            return false;
        }
    }
    public int getMoney(){
        return money;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值