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();
}

}

“`

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