Java实现简单的银行管理系统(最基本的功能/易上手)


实现了一个最基本的银行管理系统(基于类与对象),无复杂功能,易于初学者上手操作。基本框架实现后,可继续丰富其功能,实现更强大的管理功能,或实现图形界面、输入输出流保存、连接数据库等等。

一、简介

  1. 问题描述
    实现一个简单的银行储蓄系统,完成活期用户的存款和取款业务。

  2. 基本要求
    1.实现描述银行的类,记录系统中现有哪些储户(提示:可用对象数组实现,但须注意判断数组越界的情况),该类中要求包含三个方法:
    (1)生成新储户的方法;
    (2)按照账户删除储户的方法;
    (3)按照账户查询储户的方法,要求显示查询结果。
    2.定义储户类。其属性包含账号,存款人姓名、身份证号、地址、存款余额;其操作有存款、取款、显示储户信息。
    3.编写测试类,测试上述所要求的各项功能。
    设计简单的菜单界面,以供功能选择。

  3. 实现的功能
    1.增添账户信息
    2.存(取)款操作
    3.删除账户信息(按卡号/姓名检索)
    4.读取账户信息(按卡号/姓名检索)

二、详细设计

本程序用户的存储结构为对象数组
1)Despositor类

package BankSystem;
public class Depositor{
    
    
	private int number;      /*卡号*/
	private String name;        /*姓名*/
	private String personId;          /*身份证号*/
	private String address;     /*邮箱地址*/
	private String password;        /*密码*/
	private float balance;        /*余额*/

	public Depositor(){
    
             /*不带形参的构造函数,用来初始化*/
        number=0;
        name="0";
        personId="0";
        address="0";
        password="123456";
        balance=0;
    }

    public int shownumber() {
    
    return number;}
    public String showname() {
    
    return name;}
    public String showid() {
    
    return personId;}
    public String showaddress() {
    
    return address;}
    public String showkey() {
    
    return password;}
    public float showbalance() {
    
    return balance;}
    
    public void inputnumber(int number){
    
    this.number=number;}
    public void inputname(String name){
    
    this.name=name;}
    public void inputid(String id){
    
    this.personId=id;}
    public void inputaddress(String address){
    
    this.address=address;}
    public void inputkey(String password){
    
    this.password=password;}
    public void inputbalance(float balance){
    
    this.balance=balance;}

    public void inputbalance(int money){
    
    
    	this.balance +=money;
    	System.out.println("您已经存入" + money + "元,账户余额为" + balance );
    }
    
    public void deposit(int money) {
    
    
    	this.balance -= money;
    	System.out.println("您已经取出" + money + "元,账户余额为" + balance );
    }
    
    public void show() {
    
    
    	System.out.println("******************************");
    	System.out.println("*账户创建成功!您的账户信息如下:");
    	System.out.println("*银行卡号为:"+ number );
    	System.out.println("*密码为:"+ password);
    	System.out.println("*姓名为:"+ name);
    	System.out.println("*身份证号码为:"+ personId);
    	System.out.println("*邮箱地址为:"+ address);
    	System.out.println("*账户余额为:" + balance);	
    	System.out.println("******************************");
    }
    public void show1() {
    
    
    	System.out.println("******************************");
    	System.out.println("*账户信息如下:");
    	System.out.println("*银行卡号为:"+ number );
    	//System.out.println("*密码为:"+ password);
    	System.out.println("*姓名为:"+ name);
    	System.out.println("*身份证号码为:"+ personId);
    	System.out.println("*邮箱地址为:"+ address);
    	System.out.println("*账户余额为:" + balance);	
    	System.out.println("******************************");
    }

};

2)增添账户信息

3)存取款操作

4)查询账户信息
Step1 输入管理员密码。正确执行Step2,否则执行Step7。
Step2 :
a) 选择按卡号检索,执行Step3,
b) 选择姓名检索,执行Step4。
Step3 输出所有账户卡号,输入卡号选择某一账户,执行Step5。
Step4 输出所有账户姓名,输入姓名选择某一账户。
Step5 输出该账户信息。
Step6 输入修改信息。
Step7 返回主菜单。

5)删除账户信息
输入管理员密码以及检索方式同4),此处不再赘述。
Step1 输入要删除的账户,给出删除警告,“是”则执行Step2,“否”则执行Step5。
Step2 如果该账户是已有对象数组的最后一个,则执行Step3,否则执行Step4。
Step3 同时将现有人数COUNT减一,执行Step。
Step4 将最后一个数组的信息赋给要删除的那一个,同时将现有人数COUNT减一。
Step5 返回主菜单。

6)数据的读取与保存(未实现)
采用OutStreamWriter和InputStreamReader,保存在txt文件中,数据用空格隔开,实现数据的读取与保存。

三、代码

在这里插入图片描述
1.Depositor类见上

2.Bank类
银行管理员未用单独的类来实现,以Bank类中的manage()方法来实现

package BankSystem;
import java.util.Scanner;

public class Bank {
    
    
	int i;
	private Depositor[] depositor = new Depositor[100];
	private int accountNum = 0; 
	private String password1;
	int number = 100000;
	int j=1;
	private String manage_password = "@123456";
	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、登入账户**************");
        System.out.println("******3、管理员登录**************");
        
    }
    
    public void select() {
    
    
        int select = sc.nextInt();
        switch(select) {
    
    
        case 1 : this.openAccount();
        break;
        case 2 : this.enter();
        break;
        case 3: this.manage();
        break;
      }
    }
    
    
    public void manage() {
    
    
    	boolean flag = false;    	
    	System.out.println("请输入您的密码");
        String password = sc.next();
        
        if(password.equals(manage_password)) {
    
    
        	flag = true;
        }
        
    	if(flag == false) {
    
    
    		System.out.println("登录失败!!!");
    	}
    	
    	if(flag == true) {
    
    
    		System.out.println("登录成功!!!");
    		do {
    
    
                System.out.println("请选择操作:");
                System.out.println("******1、查改账户信息*****************");
                System.out.println("******2、删除账户信息*****************");
                System.out.println("******3、按任意键退出*****************");
                
                insert = sc.nextInt();
                switch(insert) {
    
    
                case 1 :     //1、查询账户信息
                	System.out.println("请选择操作:");
                    System.out.println("******1、按卡号检索*****************");
                    System.out.println("******2、按姓名检索*****************");
                    insert = sc.nextInt();
                    
                    switch(insert) {
    
    
                    case 1://按卡号
                    	for(int i=0;i<accountNum;i++) {
    
    
                    		System.out.println("用户"+ (++i) +":" + depositor[--i].shownumber());                   		
                    	}
                    	                                      	
                    	System.out.println("请选择用户:");
                    	insert = sc.nextInt();
                    	if(insert-1<accountNum)
                    		depositor[insert-1].show1();
                    	else
                    		System.out.println("无用户!");
                    	break;
                    	
                    case 2://按姓名
                    	for(int i=0;i<accountNum;i++) {
    
    
                    		System.out.println("用户"+ (++i) +":" + depositor[--i].showname());                   		
                    	}
                    	System.out.println("请选择用户:");
                    	insert = sc.nextInt();
                    	if(insert-1<accountNum)
                    		depositor[insert-1].show1();
                    	else
                    		System.out.println("无用户!");
                    	break;
                    }
                                            
                    break;
 
                case 2://  2、删除账户信息    
                	
                	System.out.println("请选择操作:");
                    System.out.println("******1、按卡号检索*****************");
                    System.out.println("******2、按姓名检索*****************");
                    insert = sc.nextInt();
                    
                    switch(insert) {
    
    
                    case 1://按卡号
                    	for(int i=0;i<accountNum;i++) {
    
    
                    		System.out.println("用户"+ (++i) +":" + depositor[--i].shownumber());                   		
                    	}                                      	
                    	System.out.println("请选择用户:");
                    	insert = sc.nextInt();
                    	if(insert == accountNum){
    
    
                    		accountNum--;
                    		
                    		System.out.println("剩余用户:");
                    		for(int i=0;i<accountNum;i++) {
    
    
                        		System.out.println("用户"+ (++i) +":" + depositor[--i].shownumber());                   		
                        	}
                    		System.out.println("删除成功!");
                    	}	
                    	else {
    
    
                    		depositor[insert-1].inputname(depositor[accountNum-1].showname()); 
                    		depositor[insert-1].inputnumber(depositor[accountNum-1].shownumber()); 
                    		depositor[insert-1].inputid(depositor[accountNum-1].showid()); 
                    		depositor[insert-1].inputkey(depositor[accountNum-1].showkey()); 
                    		depositor[insert-1].inputaddress(depositor[accountNum-1].showaddress()); 
                    		depositor[insert-1].inputbalance(depositor[accountNum-1].showbalance()); 
                    		accountNum--;
                    		System.out.println("剩余用户:");
                    		for(int i=0;i<accountNum;i++) {
    
    
                        		System.out.println("用户"+ (++i) +":" + depositor[--i].shownumber());                   		
                        	}
                    		System.out.println("删除成功!");
                    	}
                    		
                    	//depositor[insert-1].show1();
                    	break;
                    	
                    case 2://按姓名
                    	for(int i=0;i<accountNum;i++) {
    
    
                    		System.out.println("用户"+ (++i) +":" + depositor[--i].showname());                   		
                    	}
                    	System.out.println("请选择用户:");
                    	insert = sc.nextInt();
                    	
                    	if(insert == accountNum){
    
    
                    		accountNum--;
                    		System.out.println("剩余用户:");
                    		for(int i=0;i<accountNum;i++) {
    
    
                        		System.out.println("用户"+ (++i) +":" + depositor[--i].showname());                   		
                        	}
                    		System.out.println("删除成功!");
                    		
                    	}	
                    	else {
    
    
                    		depositor[insert-1].inputname(depositor[accountNum-1].showname()); 
                    		depositor[insert-1].inputnumber(depositor[accountNum-1].shownumber()); 
                    		depositor[insert-1].inputid(depositor[accountNum-1].showid()); 
                    		depositor[insert-1].inputkey(depositor[accountNum-1].showkey()); 
                    		depositor[insert-1].inputaddress(depositor[accountNum-1].showaddress()); 
                    		depositor[insert-1].inputbalance(depositor[accountNum-1].showbalance()); 
                    		accountNum--;
                    		System.out.println("剩余用户:");
                    		for(int i=0;i<accountNum;i++) {
    
    
                        		System.out.println("用户"+ (++i) +":" + depositor[--i].showname());                   		
                        	}
                    		System.out.println("删除成功!");
                    	}
                    	break;
                    }
                                            
                    break;
                	
 
                }
            } while(insert == 1 || insert == 2 );
    	}
    	
    }
    
    public Depositor openAccount(){
    
    
    	System.out.println("请输入您的姓名");
        String name = sc.next();
        
        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();
        
        depositor[accountNum] = new Depositor();
        depositor[accountNum].inputnumber(100000 + j);
        depositor[accountNum].inputname(name);
        depositor[accountNum].inputkey(password);
        depositor[accountNum].inputid(personId);
        depositor[accountNum].inputaddress(email);
        depositor[accountNum].show();  //显示账户信息
        j++;
        accountNum++;
        return depositor[accountNum];
    }
    
    public Depositor 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 == depositor[i].shownumber() && password.equals(depositor[i].showkey())) {
    
    //判断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、按任意键退出*************");
                insert = sc.nextInt();
                switch(insert) {
    
    
                case 1 :     
                    System.out.println("******请输入存款金额*****************");
                    int money = sc.nextInt();
                    depositor[i].inputbalance(money);                                
                    break;
 
                case 2:      
                	System.out.println("******请输入取款金额*****************");
                	money = sc.nextInt();
                	depositor[i].deposit(money);//调用取款方法
                	break;
 
                }
            } while(insert == 1 || insert == 2 );
        }    
        return depositor[i];
    }
}

3、Test类

package BankSystem;
import java.util.Scanner;
public class Test {
    
    
	 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; 
	            case 3: b.manage();
	            		break;
	            default: System.out.println("选择业务异常,请重新选择");
	            break;
	            }
	            
	            System.out.println("是否继续选择其他业务");
	            System.out.println("退出请按   0");
	            System.out.println("继续选择其他业务请按  1");
	            
	            select = sc.nextInt();
	            if (select == 0) {
    
    
	                break;
	            }
	        }
	 }

}

四、测试结果

1)主菜单窗口
在这里插入图片描述
2)增添信息
在这里插入图片描述
3) 存取款
在这里插入图片描述
4)按姓名检索
在这里插入图片描述

5)删除
在这里插入图片描述

五、总结

程序未实现修改用户信息的功能,没能实现文件流的处理操作。有需要的朋友可以自行改进。整体来看,代码有些繁琐,部分功能封装不到位,代码重复较多。此外,很多细节并未处理到位,例如对异常的处理等。

猜你喜欢

转载自blog.csdn.net/qq_51879318/article/details/122643164