JAVA简单ATM的实现

实验要求

登陆界面

1.登陆   2.注册    3.退出

操作界面

1.存款   2.取款 3.转账  4.查余额  5.退卡

效果图

源代码

ATM类

package com.company;
import java.util.Scanner;
public class ATM {
    private Bank bank;
    private BankCard bankcard;
    private double money;
    private int id;
    private  int passwd;

    public ATM(){

        bank=new Bank();
    }
    public void login(int id,int passwd){//登陆
        if(bank.contains(id,passwd)){
            bankcard=bank.getcard(id,passwd);
            start2();

        }else{
            System.out.println("账号密码错误");
        }

    }
    public boolean register(int id,int passwd){//注册
        if(bank.contains(id,passwd)){
            System.out.println("账号已经被注册");
            return false;
        }
        BankCard card=new BankCard(id,passwd);
        bank.add(card);
        System.out.println("注册成功");
        return true;

    }
    public void start() {//菜单页面
        while (true){
        System.out.println("1. 登陆 2.注册 3.退出");
        Scanner scanner = new Scanner(System.in);
        int chioce = scanner.nextInt();
        if (chioce == 3) {
            break;
        }
        System.out.println("请输入账号:");
        int id = scanner.nextInt();
        System.out.println("请输入密码:");
        int passwd = scanner.nextInt();
        switch (chioce) {
            case 1:
                login(id, passwd);
                break;
            case 2:
                register(id, passwd);
                break;
        }
        }
    }
    public void start2(){//登陆之后菜单
        while (true){
        int id1=0;
        System.out.println("1. 存款 2.取款 3.转账 4.查余额 5.退卡");
        Scanner scanner = new Scanner(System.in);
        int chioce = scanner.nextInt();
        if (chioce == 5) {//退出
            return;
        }

        switch (chioce) {
            case 1://存款
                System.out.println("请输入存款金额:");
                money = scanner.nextDouble();
                bank.deposit(bankcard,money);
                System.out.println("存款成功!");
                break;
            case 2://取款
                System.out.println("请输入取款金额:");
                money = scanner.nextDouble();
                if(bank.withdrawMoney (bankcard,money)) {
                System.out.println("取款成功!");
                }
                break;
            case 3://转账
                System.out.println("请输入转账用户id:");
                id1=scanner.nextInt();
                if(!bank.contains2(id1)){//检查账户是否注册
                    System.out.println("账户未注册");
                }else{
                    System.out.println("请输入转账金额:");
                    money = scanner.nextDouble();
                    if(bank.transferAccounts(bankcard,bank.getCard1(id1),money)){
                        System.out.println("转账成功");
                    }else{
                        System.out.println("余额不足,转账失败");
                    }
                }

            case 4://查询余额
                System.out.println("余额为:"+bank.queryAccounts(bankcard));
        }
        }
    }

}

Bank类

package com.company;

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 void add(BankCard card){//添加一张银行卡
        if(cards.length==size){
            cards= Arrays.copyOf(cards,cards.length+(cards.length>>1));
        }
        cards[size]=card;
        size++;
    }


    public boolean contains(int id,int passwd){//查询是否存在银行卡id和passwd
        for(int i=0;i<size;i++) {
            if (cards[i].getId()== id && cards[i].getPasswd() == passwd) {
                return true;
            }
        }
        return false;
    }
    public boolean contains2(int id){//查询是否存在银行卡id和passwd
        for(int i=0;i<size;i++) {
            if (cards[i].getId()== id) {
                return true;
            }
        }
        return false;
    }

    public BankCard getcard(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 getCard1(int id) {//输入卡号返回银行卡
        for(int i=0;i<size;i++){
            if(cards[i].getId()== id ){
                return cards[i];
            }
        }
        return null;

    }

    public  boolean deposit(BankCard card, double money) {//存款,利用boolean类型返回两种情况,方便给用户提示;
        return card.setMoney(money);
    }

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

    public boolean transferAccounts(BankCard card,BankCard card1, double money) {//转账
        if (card.getMoney(money)) {
            card1.setMoney(money);
            return true;
        } else {
            return false;
        }


    }

    public double queryAccounts(BankCard card) {//查询余额;
        return card.getBalance();


    }
}

Bankcard类

package com.company;

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

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

    public boolean getMoney(double money) {//在账户上取钱
        if(this.money>=money){
        this.money-=money;
        return true;
        }else{
            return false;
        }
    }

    public boolean setMoney(double money) {//在账户哦上存款
        this.money += money;
        return true;
    }

    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 double getBalance() {//返回this.money值
        return this.money;
    }
}

猜你喜欢

转载自blog.csdn.net/tdongmu/article/details/109102807