Java模擬實現銀行系統

  1. 服務端
    服務端包括賬戶和銀行
    創建賬戶和銀行的類
package com.bank.account;
//賬戶
public class Account {
    //賬戶名稱
    private String name;
    //賬戶餘額
    private double balance;
    //賬戶密碼
    private String password;
    //賬戶狀態,默認是激活的狀態
    private boolean status = true;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getBalance() {
        return balance;
    }
    public void setBalance(double balance) {
        this.balance = balance;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public boolean isStatus() {
        return status;
    }
    public void setStatus(boolean status) {
        this.status = status;
    }

}

銀行代碼實現

package com.bank.account;

    //初始設置銀行有1000個賬戶
    private Account[] accounts = new Account[1000];
    //判斷是否存在該賬戶,注意此處異常
    public Account isExits(String name){
        try {
            for (Account account : accounts) {
                if(account.getName().equals(name)){
                    return account;
                }
            }
        } catch (Exception e) {
            return null;
        }
        return null;
    }
    //添加銀行賬戶
    public int addAccount(Account acc){
        int index=-1;
        for(int i=0;i<accounts.length;i++){
            if(accounts[i]==null){
                index = i;
                break;
            }
        }
        if(index!=-1){
            accounts[index]=acc;
            return 1;
        }else{
            return -1;
        }
    }
    //驗證ATM機輸入的信息是否正確,如果正確返回該賬戶
    public Account validate(String usename,
        String password){
        try {
            for (Account account : accounts) {
                if(account.getName().equals(usename)&&
            account.getPassword().equals(password)){
                    return account;
                }
            }
        } catch (Exception e) {
            return null;
        }
        return null;
    }
    //顯示銀行所有的賬戶信息
    public void show(){
        System.out.println("賬戶名"+"\t賬戶狀態");
        for(int i=0;i<accounts.length;i++){
            if(accounts[i]!=null){
                System.out.println("-------------------------");
                System.out.println(accounts[i].getName()+"\t"+
                accounts[i].isStatus());
            }
        }
    }
}
  1. ATM端
package com.bank.atm;

import java.util.Scanner;

import com.bank.account.Account;
import com.bank.account.Bank;

public class ATM {
    private Bank bank = new Bank();
    private Scanner sc = new Scanner(System.in);
    //開始界面
    public void start() {
        System.out.println("請選擇菜單項:");
        System.out.println("1.創建賬戶");
        System.out.println("2.插卡");
        System.out.println("3.系統管理");
        System.out.println("4.退出系統");
        switch (sc.nextInt()) {
        case 1:
            //創建賬戶
            creatAccount();
            break;
        case 2:
            //插卡
            insertCard();
            break;
        case 3:
            //銀行管理賬戶
            manager(bank);
            break;
        case 4:
            //退出系統
            System.exit(0);
            break;

        }
    }
    //銀行管理賬戶
    private void manager(Bank bank) {
        System.out.println("請輸入管理員口令");
        if (sc.next().equals("123456")) {
            System.out.println("登錄成功!");
            manageItem(bank);
        } else {
            System.out.println("口令錯誤");
            manager(bank);
        }
    }

    public void manageItem(Bank bank) {
        System.out.println("請選擇菜單項:");
        System.out.println("1.顯示所有賬戶");
        System.out.println("2.凍結賬戶");
        System.out.println("3.恢復賬戶");
        System.out.println("4.返回主菜單");
        switch (sc.nextInt()) {
        case 1:
            bank.show();
            manageItem(bank);
            break;
        case 2:
            freezAccount(bank);
            break;
        case 3:
            reback(bank);
            break;
        case 4:
            start();
            break;

        }
    }
//恢復凍結的賬戶
    private void reback(Bank bank) {
        System.out.println("請輸入要恢復賬戶的名字:");
        String name = sc.next();
        Account account = bank.isExits(name);
        if(account==null){
            System.out.println(name+"不存在");
            reback(bank);;
        }else{
            account.setStatus(true);
            manageItem(bank);
        }
    }
//凍結賬戶
    private void freezAccount(Bank bank) {
        System.out.println("請輸入要凍結賬戶的名字:");
        String name = sc.next();
        Account account = bank.isExits(name);
        if(account==null){
            System.out.println(name+"不存在");
            freezAccount(bank);
        }else{
            account.setStatus(false);
            manageItem(bank);
        }
    }
//插卡驗證
    private void insertCard() {
        System.out.println("請輸入用戶名和密碼");
        String usename = sc.next();
        String password = sc.next();
        Account account = bank.validate(usename, password);
        if (account != null) {
            System.out.println("登錄成功!");
            operation(account);
        } else {
            System.out.println("登錄失敗");
            insertCard();
        }
    }
//賬戶操作界面
    private void operation(Account acc) {
        System.out.println("請選擇菜單項:");
        System.out.println("1、查詢餘額:");
        System.out.println("2、取款:");
        System.out.println("3、轉賬:");
        System.out.println("4、存款:");
        System.out.println("5、修改密碼:");
        System.out.println("6、返回主菜單:");
        switch (sc.nextInt()) {
        case 1:
        //獲取賬戶餘額
            System.out.println(acc.getBalance());
            operation(acc);
            break;
        case 2:
        //取款
            withdraw(acc);
            break;
        case 3:
        //轉賬
            transfer(acc);
            break;
        case 4:
        //存款
            deposit(acc);
            break;
        case 5:
        //修改密碼
            modifyPassword(acc);
            break;
        case 6:
        //返回系統界面
            start();
            break;
        }

    }
//修改密碼方法
    private void modifyPassword(Account acc) {
        System.out.println("請輸入新的密碼:");
        acc.setPassword(sc.next());
    }
//存款
    private void deposit(Account acc) {
        System.out.println("請輸入存款金額");
        double d = sc.nextDouble();
        acc.setBalance(acc.getBalance() + d);
        System.out.println("您現在卡上有金額" + acc.getBalance());
        operation(acc);
    }
//轉賬
    private void transfer(Account acc) {
        System.out.println("請輸入要轉賬的賬戶名");
        String name = sc.next();
        Account account = bank.isExits(name);
        if (account != null) {
            trans(acc, account);
        }
    }

    private void trans(Account acc, Account acc1) {
        System.out.println("請輸入轉賬金額:");
        double d = sc.nextDouble();
        if (d > acc.getBalance()) {
            System.out.println("超出賬戶餘額!轉賬失敗!");
            operation(acc);
        } else {
            acc.setBalance(acc.getBalance() - d);
            acc1.setBalance(acc1.getBalance() + d);
            operation(acc);
        }
    }
//取款
    private void withdraw(Account acc) {
        System.out.println("請輸入取款金額:");
        double money = sc.nextDouble();
        if (money > acc.getBalance()) {
            System.out.println("餘額不足,取款失敗。");
            withdraw(acc);
        } else {
            acc.setBalance(acc.getBalance() - money);
            System.out.println("取款成功,還剩餘額" + acc.getBalance());
            operation(acc);
        }
    }
    //創建賬戶
    private void creatAccount() {
        System.out.println("請輸入新賬號:");
        String name = sc.next();
        System.out.println("請輸入新密碼:");
        String password = sc.next();
    //從Bank類中調用驗證方法,判斷賬戶是否存在
        Account accou = bank.isExits(name);
        if (accou != null) {
            System.out.println("賬號已經存在,請重新輸入:");
            creatAccount();
        } else {
            Account account = new Account();
            account.setName(name);
            account.setPassword(password);
            //用戶不存在添加用戶
            int i = bank.addAccount(account);
            if (i > 0) {
                System.out.println("存儲成功");
                start();
            } else {
                System.out.println("系統繁忙……存儲失敗!");
            }
        }

    }
}

package com.bank.account;

public class Bank {
private Account[] accounts = new Account[1000];
public Account isExits(String name){
try {
for (Account account : accounts) {
if(account.getName().equals(name)){
return account;
}
}
} catch (Exception e) {
return null;
}
return null;
}
public int addAccount(Account acc){
int index=-1;
for(int i=0;i

測試

package com.bank.test;

import com.bank.atm.ATM;

public class Test {

public static void main(String[] args) {
    ATM atm = new ATM();
    atm.start();
}

}

“`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章