Java小项目:模拟实现用户在银行的存取款功能

一、问题描述

编写一个程序,程序有四个类:
1、Account管理用户的余额,实现存钱和取钱的功能。
2、Customer设置用户的姓名,绑定其Account信息。
3、Bank实现添加用户、统计用户数量、获取指定索引的用户信息等功能
4、BankTest创建多个用户完成用户存钱、取钱等操作。

二、具体代码

在这个项目里,我把四个类分别写在四个不同的Java文件里,但是他们在同一个包下面。

1、Account类

package Bank;

public class Account {
    private double balance;

    //构造器
    public Account(double init_balance){
        this.balance = init_balance;
    }

    //公共方法
    public double getBalance(){
        return balance;
    }
    public void setBalance(double balance){
        this.balance = balance;
    }

    //取钱
    public void withdraw(double account){
        if (account > balance){
            System.out.println("余额不足,取款失败!!!");
            return;
        }
        balance -= account;
        System.out.println("成功取出:"+account);
    }

    //存钱
    public void saveMoney(double account){
        if (account > 0){
            balance += account;
        }
        System.out.println("成功存入:"+account);
    }
}

2、Customer类

package Bank;

public class Customer {
    private String firstName;
    private String lastName;
    //在一个类的属性中使用自定义类的变量
    private Account account;

    //构造器
    public Customer(){

    }
    public Customer(String f,String l){
        this.firstName = f;
        this.lastName = l;
    }

    public String getFirstName(){
        return firstName;
    }
    public String getLastName(){
        return lastName;
    }

    public Account getAccount(){
        return account;
    }
    public void setAccount(Account account){
        this.account = account;
    }
}

3、Bank类

package Bank;

public class Bank {
    private Customer[] customers;//创建customers数组,存放多个客户。
    private int numberOfCustomers;//记录客户的个数,数组的长度是容量,不是客户个数。

    //构造器
    public Bank(){
        customers = new Customer[10];
        //初始化数组不能写在方法里,那样就成了每添加一个新用户就创建一个新数组
    }

    //1、添加客户
    public void addCustomers(String f,String l){
        //创建客户对象
        Customer cust = new Customer(f,l);
//        customers[numberOfCustomers] = cust;
//        numberOfCustomers++; //numberOfCustomers默认值是0
        customers[numberOfCustomers++] = cust;
    }

    //2、获取客户个数
    public int getNumberOfCustomers(){
        return numberOfCustomers;
    }

    //3、获取指定位置的用户
    public Customer getCustomer(int index){
        if (index >= 0 && index < numberOfCustomers){
            return customers[index];
        }
        return null;
    }
}

4、BankTest类

package Bank;

public class BankTest {
    public static void main(String[] args) {
        //创建Bank对象
        Bank bank = new Bank();

        //添加第一个用户
        bank.addCustomers("卡里姆","本泽马");
        //为用户创建账户
        bank.getCustomer(0).setAccount(new Account(2000));
        //取钱
        bank.getCustomer(0).getAccount().withdraw(500);
        //显示余额
        double x = bank.getCustomer(0).getAccount().getBalance();
        System.out.println(bank.getCustomer(0).getFirstName()+"·"+
                bank.getCustomer(0).getLastName()+"账户余额:"+x);

        //创建第二个用户
        bank.addCustomers("加雷斯","贝尔");
        bank.getCustomer(1).setAccount(new Account(5000));
        bank.getCustomer(1).getAccount().saveMoney(200);
        double y = bank.getCustomer(1).getAccount().getBalance();
        System.out.println(bank.getCustomer(1).getFirstName()+"·"+
                bank.getCustomer(1).getLastName()+"账户余额"+y);

        //查询银行客户人数
        System.out.println("银行客户人数为:"+bank.getNumberOfCustomers());

        //获取位置1的账户
        Customer a = bank.getCustomer(0);
        System.out.println(a.getFirstName()+"·"+a.getLastName());
    }
}

三、图解类的关系

在这里插入图片描述

关系梳理

如上图所示,Bank类里面创建了一个Customer类型的数组,每个数组元素指向一个Customer类。而在每个Customer类里面又包含了一个Account类。在BankTest里面创建了Bank对象,当Bank对象想要调用Account类里面的属性或者方法是需要先通过索引调用相应的Customer类,然后通过Customer类调用Account类。例如下图:
在这里插入图片描述

四、运行结果

在这里插入图片描述

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵同学-

非常感谢你!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值