JAVA简单的银行管理系统

小Demo 专栏收录该内容
13 篇文章 0 订阅

账户类

package Account;

public abstract class Account {
    private int id;//账号
    private String password;//密码
    private String name;//姓名
    private String personId;//身份证号码
    private String email;//邮箱
    private double ceiling;//贷款属性
    private static double balance;//账户余额
    
    public Account() {}

    public Account(int id, String password, String name, String personId,
            String email, double balance,double ceiling) {
        super();
        this.id = id;
        this.password = password;
        this.name = name;
        this.personId = personId;
        this.email = email;
        this.balance = balance;
        this.ceiling = ceiling;
    }
    public Account(int id, String password, String name, String personId,
            String email) {
        super();
        this.id = id;
        this.password = password;
        this.name = name;
        this.personId = personId;
        this.email = email;
    }
    public Account(int id, String password) {
        this.id =id;
        this.password = password;
    }
    //开户函数
    public Account openAccount() {
        return null;
    }
    //显示开户成功的信息函数
    public void show() {
        System.out.println("账户ID为 : " + id + "密码为:  " + password + "姓名为:  " + name + "身份证号码为:  " + personId + "邮箱为:   " + email);
    }
    //登入函数
    public void enter() {
        
    }
    //取款方法  为抽象方法
    public abstract void deposit(double money); 
        
    //存款方法
    public static void withdraw(double money) {
        balance = balance + money;
            System.out.println("您已经存入" + money + "元,账户余额为" + balance );
    }
//    public abstract void requestLoan(double money);

    public double getCeiling() {
        return ceiling;
    }

    public void setCeiling(double ceiling) {
        this.ceiling = ceiling;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public double getBalance() {
        return balance;
    }
    public void setBalance(double balance) {
        this.balance = balance;
    }

    
    
}

 

 

Bank类

package Account;

import java.util.Scanner;

public class Bank {
    int i;// 账户编号
    private Account[] account = new Account[100];// 账户对象数组
    private int accountNum = 0;// 账户数量
    private int type;// 账户类型
    private String password1;// 确认密码
    int id = 100000;//第一个开户账号
    int j = 1;//常量控制开户账号每次+1
    Scanner sc = new Scanner(System.in);
    int insert;

    public Bank() {
    }

    // 主界面
    public void mainView() {
        System.out.println("******欢迎登入银行管理系统********");
        System.out.println("******请选择业务***************");
        System.out.println("******1、创建账户**************");
        System.out.println("******2、登入账户**************");
    }

    //功能选择函数
    public void select() {
        int select = sc.nextInt();
        switch(select) {
        case 1 : this.openAccount();
        break;
        case 2 : this.enter();
        break;
        }


    }

    // 开户函数
    public Account openAccount() {
        System.out.println("请输入您的姓名");
        String name = sc.next();

        //        System.out.println("请输入您的卡号");
        //        int id = sc.nextInt();
        System.out.println("请输入您的密码");
        String password = sc.next();

        System.out.println("请再次确认您的密码");
        String password1 = sc.next();
        while (!password1.equals(password)) {
            System.out.println("对不起,两次输入的密码不一致,请重新输入");
            System.out.println("请重新输入您的密码");
            password = sc.next();
            System.out.println("请再次确认您的密码");
            password1 = sc.next();
        }

        System.out.println("请输入您的身份证号码");
        String personId = sc.next();

        System.out.println("请输入您的邮箱");
        String email = sc.next();

        System.out.println("请输入您的账户类型");
        System.out.println("1、存储卡                        2、信用卡");
        type = sc.nextInt();
        switch (type) {
        case 1:
            account[accountNum] = new LoanSavingAccount(100000 + j, password, name,
                    personId, email, 0, 0); // 创建存储卡账户对象,初始余额为0,默认贷款金额为0元
            account[accountNum].show();//调用显示账户信息函数
            System.out.println("卡类型为:存储卡");
            accountNum++;
            j++;
            return account[accountNum];
        case 2:
            account[accountNum] = new LoanCreditAccount(100000 + j, password, name,
                    personId, email, 0, 0, 5000); // 创建信用卡账户对象,多一个透资属性,初始透资金额为5000元
            account[accountNum].show();//调用显示账户信息函数a
            System.out.println("卡类型为: 信用卡");
            accountNum++;
            j++;
            return account[accountNum];
        }
        return null;

    }

    // System.out.println("恭喜您,创建账号成功啦!!!" + "您的账号名为"+ account.getId() +
    // "您的账户类型为" + type);
    // return account;

    // 登入函数
    public Account enter() {
        System.out.println("请输入您的银行卡号");
        int id = sc.nextInt();
        System.out.println("请输入您的密码");
        String password = sc.next();
        if (accountNum == 0) {
            System.out.println("未注册账户,请先注册!");
            this.openAccount();
            this.mainView();
            this.select();
        }  
        boolean flag = false;
        for (i = 0; i < accountNum; i++) {
            if (id == account[i].getId() && password.equals(account[i].getPassword())) {//判断Id和输入的账户密码是否一致
                flag = true;
                break;
            }
        }
        if (!flag) {
            System.out.println("登入失败!!!");
        }
        if (flag) {
            System.out.println("登入成功!!!!");
            do {
                System.out.println("请选择业务");
                System.out.println("******1、存款*****************");
                System.out.println("******2、取款*****************");
                System.out.println("******3、贷款*****************");
                System.out.println("******4、还款*****************");
                System.out.println("******3、按任意键退出*************");
                insert = sc.nextInt();
                switch(insert) {
                case 1 :     
                    System.out.println("******请输入存款金额*****************");
                    int money = sc.nextInt();
                    account[i].withdraw(money);                                
                    break;

                case 2:      System.out.println("******请输入取款金额*****************");
                money = sc.nextInt();
                account[i].deposit(money);//调用取款方法
                break;

                case 3:      judge();
                             break;


                case 4:      repay();
                             break;
                }
            } while(insert == 1 || insert == 2 || insert == 3 || insert == 4);

        }    
        return account[i];


    }

    //存款方法
    public void withdraw() {
        System.out.println("请输入存款金额");
        int money = sc.nextInt();
        account[i].withdraw(money);
    }
    //取款方法
    public void deposit() {
        System.out.println("请输入取款金额");
        int money = sc.nextInt();
        account[i].deposit(200);
    }

    //计算银行余额总数方法
    public void Accountsum() {
        double savSum = 0;
        for (int i = 0; i < accountNum; i++) {
            savSum += account[i].getBalance();
        }
    }

    //判断是LoanSavingAccount 类还是LoacCreditAccount
    //贷款方法
    public void judge() {
        System.out.println("******请输入贷款金额*****************");
        int money = sc.nextInt();
        if (account[accountNum - 1] instanceof LoanSavingAccount) {
            LoanSavingAccount a = (LoanSavingAccount) account[accountNum - 1];
            a.requestLoan(money);
        }else {
            LoanCreditAccount b = (LoanCreditAccount) account[accountNum -1 ];
            b.requestLoan(money);
            System.out.println("成功调用了贷款方法");
        }

    }

    //还款方法
    public void repay() {
        System.out.println("******请输入还款金额*****************");
        int money = sc.nextInt();
        if (account[accountNum - 1] instanceof LoanSavingAccount) {
//            System.out.println("判断过了1");
            LoanSavingAccount a = (LoanSavingAccount) account[accountNum - 1];
            a.payLoan(money);
        }else {
//            System.out.println("判断过了2");
            LoanCreditAccount b1 = (LoanCreditAccount) account[accountNum - 1];
            b1.payLoan(money);
        }

    }


}

信用卡类

 

package Account;


public class CreditAccount extends Account {                  //信用卡
    private double overdraft;//透资属性
    
    public CreditAccount() {}

    public CreditAccount(int id, String password, String name, String personId,String email, double balance, double ceiling, double overdraft) {
        super(id,password,name, personId, email, balance, ceiling);
        this.overdraft = overdraft;//多出一个透资属性
    }
    


    //    public void withdraw(double money) {
//        super.setBalance(super.getBalance() + money);
//        System.out.println("你的卡号为" + super.getId() +"的卡,您已经存入" + money + "元,账户余额为" + super.getBalance() );
//    }
    public void deposit(double money) {//信用卡取款方法
        if ((super.getBalance() + overdraft) >= money) {
             super.setBalance(super.getBalance() - money) ;
             System.out.println("您取了" + money + "钱,您的余额为" + super.getBalance());
        }else System.out.println("对不起您的余额和透支额度不足!");
        
        
    }

//    @Override
//    public void requestLoan() {
//        // TODO Auto-generated method stub
//        
//    }
    

}


package Account;

public interface General {
    void requestLoan(double money);//贷款方法
    void payLoan(double money);//还款
//    void getLoan();//获取用户总额
    

}


信用卡子类

package Account;

import java.util.Scanner;


public class LoanCreditAccount extends CreditAccount implements General {
    Scanner sc = new Scanner(System.in);

    public LoanCreditAccount(){}
    public  LoanCreditAccount(int id, String password, String name, String personId,String email, double balance, double ceiling,double overdraft) {
        super(id, password, name, personId, email, balance, ceiling, overdraft);
    }
    public void requestLoan(double money) {//贷款方法
        if ( 0 <= money&& money <= 10000) {//贷款上限为10000
            System.out.println("贷款成功,您的贷款金额为: " + money);
            System.out.println("您还能贷款的金额为: " + (10000 - money));
            super.setCeiling(money);//把贷款的钱传给贷款属性
            super.setBalance(super.getBalance() + money);//更新余额值
            System.out.println("您现在的余额为: " + super.getBalance());
        }else {
            System.out.println("对不起您的额度不够,贷款失败!");
        }
    }
    public void payLoan(double money) {//还款
        //三个判断条件:1. 还款金额小于等于贷款金额    2.还款金额小于所剩余额 3.还款金额大于0
        
        if (super.getBalance() >= money && money <= super.getCeiling() && money >= 0) {
            super.setBalance(super.getBalance() - money); //更新余额
            super.setCeiling(super.getCeiling() - money);
            System.out.println(" 您现在的余额为" + super.getBalance());
            if (super.getCeiling() ==0) {
                System.out.println("您已经全部还清!!谢谢光临!!");
            }else {
                
                System.out.println("您已经还了" + money +"您还需要还" + super.getCeiling()  );
            }
        }else {
            System.out.println("对不起,您的账户余额不足或者输入的还款额度超出范围!");
        }
        
    }
    public void getLoan() {//获取用户贷款总额
        double savSum = 0;
    };

}


 

package Account;

import java.util.Scanner;

import com_Day_7_11.SavingAccount;


//存储卡子类
public class LoanSavingAccount extends SavingAccount implements General{
    Scanner sc = new Scanner(System.in);


    public LoanSavingAccount(int id, String password, String name,
            String personId, String email, double balance, double ceiling) {
        super(id, password, name, personId, email, balance, ceiling);
        
    }
    public void requestLoan(double money) {//贷款方法
        if ( 0 <= money&& money <= 10000) {//贷款上限为10000
            System.out.println("贷款成功,您的贷款金额为: " + money);
            System.out.println("您还能贷款的金额为: " + (10000 - money));
            super.setCeiling(money);//把贷款的钱传给贷款属性
            super.setBalance(super.getBalance() + money);//更新余额值
            System.out.println("您现在的余额为: " + super.getBalance());
        }else {
            System.out.println("对不起您的额度不够,贷款失败!");
        }
    }
    public void payLoan(double money) {//还款
        //三个判断条件:1. 还款金额小于等于贷款金额    2.还款金额小于所剩余额 3.还款金额大于0
        
        if (super.getBalance() >= money && money <= super.getCeiling() && money >= 0) {
            super.setBalance(super.getBalance() - money); //更新余额
            super.setCeiling(super.getCeiling() - money);
            System.out.println(" 您现在的余额为" + super.getBalance());
            if (super.getCeiling() ==0) {
                System.out.println("您已经全部还清!!谢谢光临!!");
            }else {
                
                System.out.println("您已经还了" + money +"您还需要还" + super.getCeiling()  );
            }
        }else {
            System.out.println("对不起,您的账户余额不足或者输入的还款额度超出范围!");
        }
        
    }

}


 

主界面测试函数

package Account;

import java.util.Scanner;


public class Text {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        Bank b = new Bank();
        while (true) {
            b.mainView();//调用界面函数
            int select = sc.nextInt();
            switch(select) {
            case 1: b.openAccount();//创建账户
                break;
            case 2: b.enter();//登入
                    break;    
            default: System.out.println("选择业务异常,请重新选择");
            break;
            }
            System.out.println("是否继续选择其他业务");
            System.out.println("退出请按   0");
            System.out.println("继续选择其他业务请按  1");
            select = sc.nextInt();
            if (select == 0) {
                break;
            }
        }

    }

}

 

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值