JAVA初学(七):银行账户演示程序【改进版】

版权声明:文章为作者原创,若要转载请获得作者同意。尊重版权,从你我做起! https://blog.csdn.net/qq_37768971/article/details/87831438

一、编程说明

在上一篇博客中,笔者通过Scanner实现了由键盘对银行账户的控制,虽说直观性更强一些,但是复杂度也增加了不少,甚至造成最后编出的代码有点离题的意思。因此在借鉴了网上的代码并加以自己的理解、修改和补充,重新书写博客以圆满完成本次编程练习。

借鉴说明:

作者:河工大某某

原文:https://blog.csdn.net/diOSyu/article/details/80215705

二、设计梗概

做一个简单的银行、账户演示程序。

(1)定义一个账户类,包含用户名、密码、余额等属性、存钱、取钱等方法。

(2)定义一个银行类,包含银行名、账户列表等属性,开账户、查账户的功能。账户列表可以使用集合相关的类,如ArrayList,最好同时使用泛型。

(3)定义一个测试类及main函数,在其中创建一个银行,开设一些账号,模拟存钱、取钱、显示余额等。

三、设计代码

代码内容作出了详细注解,并且添加了closeAccount方法,完善和修改了部分方法,使得代码可读性更强。

/*
* @项目名称:银行账户演示程序
* @作者:IMUHERO
* @创作时间:2019/2/20
* @实现功能:做一个简单的银行、账户演示程序。
(1)定义一个账户类,包含用户名、密码、余额等属性、存钱、取钱等方法。
(2)定义一个银行类,包含银行名、账户列表等属性,开账户、查账户的功能。账户列表可以使用集合相关的类,如ArrayList,最好同时使用泛型。
(3)定义一个测试类及main函数,在其中创建一个银行,开设一些账号,模拟存钱、取钱、显示余额等。
* */
package NewBank;

import java.util.ArrayList;

public class test {
    public static void main(String[]arg){
        Bank bank = new Bank("HDBank");
        bank.openAccount("xiaoming","666",0);
        bank.openAccount("xiaoli","777",0);
        bank.openAccount("xiaohong","888",0);
        bank.saveMoney("xiaoli",100);
        //向特定账户存钱
        bank.drawMoney("xiaoli",50,"777");
        //从特定账户取钱,需验证密码
        bank.showAccount("xiaoli");
        //显示xiaoli账户信息
        bank.drawMoney("xiaoli",100,"a wrong password");
        //密码错误,取钱失败的情况
        bank.drawMoney("xiaoli",100,"777");
        //余额不足的情况
        bank.closeAccount("xiaoming");
        bank.showAccount("xioming");
        //关闭账户,以及通过账户信息显示来判断是否关闭成功

    }

}
/*
* @类名:账户类
* @作者:IMUHERO
*功能:实现账户的底层功能,包括获取账户名,密码,余额,验证账号密码是否正确等功能
 *  */
class Account{
    String name;
    String password;
    double banlance;
//构造方法,获得账户名,密码,和余额
     Account(String name,String password,double banlance){
         this.name=name;
         this.password=password;
         this.banlance=banlance;
     }
//返回账户名的方法
     public String getName(){
         return name;
     }
//返回密码的方法
     public String getPassword(){
         return password;
     }
//放回账户信息:账户名+余额的方法
public void show(){
    System.out.printf("userName:%s\n",name);
    System.out.printf("balance:%.2f\n",banlance);
}
//测试用户登录的账户名和密码是否正确
     public void accountTest(String name,String password){
         if(name.equals(this.name)){
             if(password.equals(this.password))System.out.println("账号密码输入正确,欢迎您的使用");
         }else System.out.println("本行无此账号,请重新输入");
     }
//存钱方法
     public void save(double money){
        banlance+=money;
        System.out.println("已存入:,"+money+"目前账户余额为:"+banlance);
     }
//取钱方法
     public void draw(double money){
         if(money>banlance){
             System.out.println("欲取出金额:"+money+"元,大于当前存款:"+banlance+"元;取款失败!");
         }else {
             banlance-=money;
             System.out.println("已取出:"+money+"元,账户余额:"+banlance+"元");
         }
     }
}
/*
* @类名:银行类
* @作者:IMUHERO
* @功能:用于银行后台操作:开账户、关账户、查账户等功能
* */
class Bank{
    String bankName;
    private ArrayList<Account>accounts;
//银行类构造方法:获取银行名,并且创建一个ArrayList
    Bank(String bankName){
        this.bankName=bankName;
        accounts =new ArrayList<Account>();
    }
//开账户方法:用于新开银行账户
    public void openAccount(String name,String password,double banlance){
        accounts.add(new Account(name,password,banlance));
    }
//寻找账户方法:用于寻找该账户,并返回账户
    public Account seekAccount(String userName){
        for (Account account:accounts) {
            if (userName.equals(account.getName())){
                return account;
            }

        }
        return null;
    }

//关账户方法:用于关闭银行账户
    public void closeAccount(String name) {
        int number=accounts.indexOf(seekAccount(name));
        accounts.remove(number);

    }
//存钱方法
    public void saveMoney(String name,double money){
        Account account = seekAccount(name); //查找
        if(account==null)
            System.out.println("该账户不存在。");
        else
            account.save(money);
    }
//取钱方法
    public void drawMoney(String name,double money,String password){
        Account account = seekAccount(name); //查找
        if(account==null)
            System.out.println("该账户不存在。");
        else {
            if(password.equals(account.getPassword())) {
                account.draw(money);
            }else {
                System.out.println("密码不正确,取钱失败。");
            }
        }
    }
//显示账户信息
    public void showAccount(String userName){
      Account account=seekAccount(userName);
         if(account==null)
             System.out.println("该账户不存在。");
             else
            account.show();
}
}

四、结果演示

注:

1.鉴于作者水平有限,文中疏漏在所难免,希望各位同行予以批评指正。

2.本文为作者原创文章,若欲转发请事先获得作者同意,谢谢合作。

 

猜你喜欢

转载自blog.csdn.net/qq_37768971/article/details/87831438