当前位置: 首页 > article >正文

【Java】—— Java面向对象进阶:Java银行账户管理系统设计与实现

目录

1. 账户类(Account)

2. 客户类(Customer)

3. 银行类(Bank)

4. 测试类(BankTest)

运行结果


        在今天的博文中,我们将一起探讨一个简单的Java银行账户管理系统的设计与实现。该系统将包含几个关键类:Account(账户类)、Bank(银行类)、Customer(客户类)以及一个测试类BankTest。通过这些类,我们将能够模拟基本的银行账户操作,如存款、取款以及管理客户信息。

1. 账户类(Account)

        首先,我们定义了一个Account类,用于表示银行账户。这个类包含了余额属性(balance),并提供了构造器来初始化账户余额。此外,还实现了getBalance方法用于获取账户余额,deposit方法用于存款,以及withdraw方法用于取款。

package exer2;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 * 账户类
 *
 * @Author zyjstart
 * @Create:2024/8/29 20:53
 */
public class Account {

    private double balance;     // 余额

    public Account(double init_balance) {
        this.balance = init_balance;
    }

    public double getBalance() {
        return balance;
    }

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

    // 取钱
    public void withdraw(double amt) {
        if (balance >= amt) {
            balance -= amt;
            System.out.println("成功取出:" + amt);
        } else {
            System.out.println("取款数额有误或余额不足!");
        }
    }


}

2. 客户类(Customer)

        接着,我们定义了Customer类,用于表示银行的客户。每个客户都有自己的姓名(姓和名)和一个与之关联的Account对象Customer类提供了构造器、获取姓名和账户的方法,以及设置账户的方法。

package exer2;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *      客户类
 * @Author zyjstart
 * @Create:2024/8/29 20:59
 */
public class Customer {
    private String firstName;   // 名
    private String lastName;    // 姓
    private Account account;    // 账户


    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)

        然后,我们定义了Bank类,用于表示银行。银行需要能够管理多个客户,因此我们使用了一个Customer数组来存储客户列表,并维护了一个计数器来跟踪存储的客户数量。Bank类提供了添加客户、获取客户数量和根据客户索引获取客户的方法。

package exer2;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 * 银行类
 *
 * @Author zyjstart
 * @Create:2024/8/29 21:10
 */
public class Bank {

    private Customer[] customers;   // 用于保存多个客户
    private int numberOfCustomer;   // 用于记录存储的客户的个数


    public Bank() {
        customers = new Customer[10];
    }

    /**
     * 将指定姓名的客户保存在银行的客户列表中
     *
     * @param f // 姓
     * @param l // 名
     */
    public void addCustomer(String f, String l) {
        Customer cust = new Customer(f, l);
        customers[numberOfCustomer] = cust;
        numberOfCustomer++;
    }

    /**
     * 获取客户列表中存储的客户的个数
     *
     * @return
     */
    public int getNumOfCustomer() {
        return numberOfCustomer;
    }

    /**
     * 获取指定索引位置上的客户
     *
     * @param index
     * @return
     */
    public Customer getCustomer(int index) {
        if (index < 0 || index >= numberOfCustomer) {
            return null;
        }
        return customers[index];
    }
}

4. 测试类(BankTest)

        最后,我们通过一个测试类BankTest来验证整个系统的功能。在这个测试类中,我们创建了一个Bank对象,添加了两个客户,并为第一个客户创建了一个账户并进行了取款操作。

package exer2;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *
 * @Author zyjstart
 * @Create:2024/8/29 21:15
 */
public class BankTest {
    public static void main(String[] args) {
        Bank bank = new Bank();

        bank.addCustomer("操","曹");
        bank.addCustomer("备","刘");

        bank.getCustomer(0).setAccount(new Account(1000));
        bank.getCustomer(0).getAccount().withdraw(50);

        System.out.println("账户余额为:" + bank.getCustomer(0).getAccount().getBalance());

    }
}

运行结果

        通过运行BankTest类,我们可以看到控制台输出了取款成功的消息以及账户当前的余额,验证了我们的银行账户管理系统能够正常工作。

        以上就是这个简单的Java银行账户管理系统的设计与实现。虽然这个系统很简单,但它涵盖了面向对象编程的基本概念和技能,如类的定义、对象的创建、方法的实现以及类的关联等。希望这个示例能够帮助你更好地理解Java编程和面向对象设计。


http://www.kler.cn/a/282109.html

相关文章:

  • django从入门到实战(三)——CBV视图介绍
  • nodejs+mysql+vue3 应用实例剖析
  • Qt 之 qwt和QCustomplot对比
  • 学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着
  • WebRTC视频 02 - 视频采集类 VideoCaptureModule
  • 微服务即时通讯系统的实现(客户端)----(2)
  • 分布式数据一致性小结
  • 【爬虫采集工具】用python开发的快手评论区采集软件
  • 单片机原理及技术(八)—— 串行口的工作原理及应用
  • 墨者学院 手工注入题解(oracle数据库)
  • 华为2016校园招聘上机笔试题
  • 取模+背包
  • 【Word与WPS如何冻结首行首列及窗口】
  • Linux常见基础命令
  • 责任链模式-升级版
  • python办公自动化:使用`Python-PPTX`进行文本框和段落操作
  • Python统计FreeMind测试用例数量
  • 【办公类-54-03】20240828班级点名册模版(双休国定假涂成灰色)
  • 网络层 I(网络层的功能)【★★★★★★】
  • wpf prism 《1》、区域 、模块化
  • 2024 年顶级 Flutter UI 框架和库
  • JAVA基础之二-面向对象简述
  • UE5学习笔记16-游戏模式中的一些事件,如何改变网格体和摄像头的碰撞
  • MosaicML-面向生成式AI的机器学习平台
  • 仅利用一维数组实现等值线图效果(附完整代码)
  • TeamTalk消息服务器学习