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

news2024/9/20 22:38:20

目录

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.coloradmin.cn/o/2086744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE初阶】HTTP请求(Request)

&#x1f4d5;引言 HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成 本片文章将从以下四个方面对HTTP请求报文进行解析 URL方法请求报头正文 &#x1f384;认识URL 我们先抓一个包来看一下URL在包里面的位置 平时我们俗称的 “网址” 其实就是说的 URL (…

数据库——开篇

一、数据存储方式 1、内存存数据&#xff1a;当程序运行结束&#xff0c;掉电&#xff0c;数据丢失。&#xff08;数组、链表、变量等&#xff09; 2、硬盘存数据&#xff1a;程序运行结束&#xff0c;掉电&#xff0c;数据不丢失。 &#xff08;1&#xff09;文件&#xff…

盘点2024年wind录屏好用工具,这四款打工人常备!

嘿&#xff0c;朋友们&#xff0c;今天我要给大家分享一下关于Windows自带录屏系统以及几款热门录屏软件的使用方法和体验感。录屏功能对于很多小伙伴来说可是个宝贝&#xff0c;无论你是要录制游戏过程、制作教学视频还是记录生活小确幸&#xff0c;都能派上用场。接下来&…

HAL库:串口 不定长数据接收 + 循环收发缓冲区 + 空闲中断 收发数据

目录 HAL库&#xff1a;不定长数据接收 循环收发缓冲区 空闲中断 收发数据 串口&#xff1a;多指针定位收发循环使用缓冲区设计 文件架构&#xff1a; 程序部分大体思路 Uart.h Uart.c stm32fxx_It.c main.c HAL库&#xff1a;不定长数据接收 循环收发缓冲区 空闲中…

SOCKS5代理配置中的常见问题:故障排除指南

SOCKS5代理是一种灵活的网络代理协议&#xff0c;被广泛用于提高网络隐私、访问受限内容、绕过网络限制等。然而&#xff0c;用户在配置SOCKS5代理时经常会遇到各种问题&#xff0c;这些问题可能会影响网络连接的稳定性和安全性。 了解这些常见问题及其解决方案可以帮助用户更…

水陆双雄:赛艇与VELO Angel Revo Halo坐垫的平衡共舞~

在广阔的水域上&#xff0c;赛艇运动员们以划桨为笔&#xff0c;书写着速度与激情的篇章。每一桨的挥动&#xff0c;都是力量与技巧的完美结合。而在自行车运动中&#xff0c;VELO Angel Revo Halo坐垫则如同骑行者的守护神&#xff0c;以科技与环保之名&#xff0c;为长途跋涉…

【开学季】你需要这样一个桌面倒计时 时刻提醒你不负韶华

【开学季】你需要这样一个桌面倒计时 时刻提醒你不负韶华。又到开学季了&#xff0c;莘莘学子陆续的回归到校园&#xff0c;开启人生价值的提升。 时光荏苒&#xff0c;岁月如梭&#xff0c;转眼间又是开学季。这个季节&#xff0c;总是承载着太多的期待与梦想&#xff0c;它像…

推荐2024年新手友好的4款音乐剪辑软件!

最近我开始接触音乐剪辑&#xff0c;想把一些歌曲进行剪辑创作&#xff1b;于是在网上好多了很多的音频剪辑软件进行试用&#xff0c;一番下来&#xff0c;发现了4款使用起来体验感比较好的专业剪辑工具&#xff0c;在这里跟大家分享分享。这些工具都可以被应用于歌曲创作&…

样式(3)----修改主题颜色

楔子&#xff1a;做软件时&#xff0c;经常有这样的需求&#xff0c;这样配色不合适&#xff1f;或者像动态的修改样式&#xff1f;那问题来了&#xff1a;怎样修软件界面的主题、修改皮肤&#xff1f; 方法1&#xff1a;使用第三方控件&#xff0c;直接更换主题&#xff0c;p…

电商库存API:商家数字化转型的加速器

在电商行业&#xff0c;库存管理是运营的核心之一。随着业务的扩展和消费者需求的多样化&#xff0c;传统的库存管理方法已经难以满足现代电商的需求。这时&#xff0c;电商库存API应运而生&#xff0c;为商家提供了一种高效、灵活的库存管理手段。 一、对接电商库存API的重要…

如何用SpringBoot搭建摇滚乐鉴赏网站?一步步教你实现音乐分享与社区互动!

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

高效产品设计:十大关键经验教程

在当今这个竞争异常激烈的市场环境中&#xff0c;产品系统设计的效率已经迅速成为企业能否取得成功的关键因素之一。随着消费者需求的不断变化和技术发展的日新月异&#xff0c;企业必须快速响应市场动态&#xff0c;以便在激烈的竞争中保持优势。而一套高效的产品系统设计方法…

js逆向——异步栈分析(上)

案例1&#xff1a; 受害者网站&#xff1a;https://m.ctyun.cn/wap/main/auth/login 首先抓包分析一波 发现是xhr请求&#xff0c;可以跟栈调试&#xff0c;相对还是容易一些 前面三个一般是send,ajax,xmlhttprequest这种封装好的发包的库&#xff0c;一般不用在意&#xff…

图像数据处理25

六、 图像分割 6.2区域生长 6.2.1区域生长的基本概念&#xff1a;可以理解成先选择一个像素区域&#xff0c;然后将其邻接区域中相似程度高的像素合并进去&#xff0c;直到找不到可以合并的像素为止。其的主要优点是能够较为精准地将具有相同特征的联通区域分割出来。 6.2.2…

农产品品牌优化:软硬兼施,全网突围成焦点

农产品品牌想要在全网范围内脱颖而出&#xff0c;‌单靠传统的“硬实力”——如优质的产品质量、‌丰富的种植经验或是先进的生产技术&#xff0c;‌已经远远不够。‌在这个多元化的市场竞争中&#xff0c;‌软实力成为了决定品牌能否远航的关键。‌ 农产品讲究品牌软实力&…

【大模型】chatglm系列模型基础

前言&#xff1a;2022年11月&#xff0c;斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测2&#xff0c;GLM-130B 是亚洲唯一入选的大模型。GLM-130B 在准确性和恶意性指标上与 GPT-3 175B持平。chatglm1&#xff0c;2&#xff0c;3代在模型架构上基本一样&#xf…

day-43 有效的数独

思路 暴力解法&#xff1a;1.判断每行是否有重复的数字;2.判断每列是否有重复的数字&#xff1b;3.判断每一个以粗实线分隔的 3x3 宫内是否有重复的数字 解题过程 如果以上三种情况都不存在重复的数字&#xff0c;则返回true Code class Solution {public boolean isValidSu…

4G手机智能遥控开关

什么是4G手机智能遥控开关 4G手机智能遥控开关作为现代智能家居与工业自动化的重要组成部分&#xff0c;提供了便捷、高效的远程控制方案。它利用4G通信技术&#xff0c;允许用户随时随地通过智能手机或其他移动设备控制电器设备的开关状态&#xff0c;适用于家庭、办公、工业等…

读《Visual Whole-Body for Loco-Manipulation》①train

这个新项目比那些强化学习入门项目好配置多了。。。 不过需要搞个wandb账号&#xff0c;一开始运行时需要api key args Namespace(checkpoint-1,colsNone,compute_device_id0,debugFalse,experiment_nameNone,exptidSOME_YOUR_DESCRIPTION_debug,flat_terrainFalse,flexFalse…

认知杂谈43

今天分享 有人说的一段争议性的话 I I 年轻&#xff1a;潜力如海&#xff0c;挑战重重&#xff0c;绝非轻易挥霍的资本 I 咱都觉得年轻好像一张白纸&#xff0c;能在上面画出精彩人生呢。可实际上&#xff0c;年轻可不是啥简单的好事儿&#xff0c;它更像是个宝库&#xff0…