【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.rhkb.cn/news/411868.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端Vue使用AES的GCM模式加密

文章目录 前端加密测试Java加解密代码 写了个新的前端项目&#xff0c;公司要求&#xff0c;账号密码这些必须是加密传输的&#xff1b;后端使用了GCM模式加密&#xff0c;前端是复制的一个以前项目的代码&#xff0c;原来是有写加密的&#xff0c;使用的是CryptoJS组件CTR模式…

2024-8-28作业C++/QT

代码&#xff1a; #include <iostream> #include <cstring> #include <array> #include <iomanip> using namespace std; int main() { //array<char,128> a; //array<char,128>::iterator iter; string str; getline(c…

YOLO | YOLO目标检测算法(基础入门)

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 YOLO目标检测算法 深度学习经典检测方法1、两阶段&#xff08;Two-stage&#xff09;2、单阶段&#xff08;One-stage&#xff09; 深度学习经典检测方法 1、两阶段&a…

jenkins发布文件到远程服务器

jenkins安装 安装教程 后台启动脚本 创建脚本&#xff1a;start_jenkins.sh ls for pid in $(ps -ef|grep jenkins.war|grep -v grep|cut -c 10-16); doecho $pid;kill -9 $pid; done;nohup java -Djava.awt.headlesstrue -jar /usr/local/jenkins/jenkins.war --webroot/…

游戏分享网站|基于SprinBoot+vue的游戏分享网站系统(源码+数据库+文档)

游戏分享网站 目录 基于SprinBootvue的游戏分享网站 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2后台登录 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

SpringCloud乐尚代驾学习笔记:环境搭建(二)

文章目录 1、前端环境1.1、注册微信开发者账号1.2、开通服务与插件1.3、微信开发者工具使用 2、服务器端环境2.1、安装mysql2.2、安装rabbitmq2.3、安装redis2.4、安装nacos2.5、安装minio 3、导入初始化项目 1、前端环境 1.1、注册微信开发者账号 虽然开发微信小程序可以使用…

牛客NC313 两个数组的交集 C++

牛客NC313 两个数组的交集 C 思路&#x1f914;&#xff1a; 用哈希表存储第一个数组&#xff0c;再和第二个数组对比&#xff0c;对比成功就添加到新的数组中&#xff0c;之后将哈希表的该位置变为false&#xff0c;防止重复添加。这里数据范围仅有1000&#xff0c;所以我们可…

nginx转发接口地址【非常实用】

使用场景 由于客户的需求是要访问一个外网接口 比如http://58.20.57.190:6652 实例 http://58.20.57.190:6652//uploadBasePatient?Barcode1000000073&customerCode1 比如外网才能访问&#xff0c;科室电脑是访问不了外网的 我们就需要中间在一个既有外网又有内网的前置…

少儿编程入门,Scratch、Python与C++,谁能成为孩子的首选语言?

编程已不再是专业人士的专利&#xff0c;而是成为了一项基本技能。对于孩子们来说&#xff0c;学习编程不仅能提高逻辑思维能力&#xff0c;还能为他们的未来职业生涯打下坚实基础。那么问题来了&#xff0c;面对Scratch、Python和C这三门编程语言&#xff0c;究竟哪一款更适合…

Datawhale AI夏令营

一、物体检测算法 物体检测算法主要分为两类&#xff1a;One-Stage&#xff08;一阶段&#xff09;和Two-Stage&#xff08;两阶段&#xff09;模型。 二、One-Stage目标检测算法 定义&#xff1a;One-Stage目标检测算法是一种直接在图像上进行目标检测的方法&#xff0c;无…

Docker原理及实例

目录 一 Docker简介及部署方法 1.1 Docker简介 1.1.1 什么是docker&#xff1f; 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 2 部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服…

8月28日

思维导图 作业&#xff1a; 使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 代码&#xff1a; #include <iostream>using namespace std;using datatype int; #define MAX 30struct SeqList {private:datatype *data;int size 0;int l…

SpringBoot3与AOP完美结合:轻松追踪用户操作,实现精准日志记录

程序员必备宝典https://tmxkj.top/#/ 1.pom文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>com.alibaba</groupId&g…

Spring八股文

重点 描述一下bean的生命周期 简述版 调用构造器 或者是通过工厂的方式创建Bean对象给bean对象的属性注入值调用初始化方法&#xff0c;进行初始化&#xff0c; 初始化方法是通过init-method来指定的.使用IOC容器关闭时&#xff0c; 销毁Bean对象 详细&#xff1a; 1. 实例化 …

Qt QCustomPlot画色阶图

工作中用到QCustomPlot画曲线图和色阶图&#xff0c;并且在色阶图上添加文字&#xff0c;圆圈或者几条线段画一些图形&#xff0c;这里写个简单的例子把这几个功能记录一下&#xff0c;代码在这里&#xff1a; https://download.csdn.net/download/Sakuya__/89681279https://…

ggml 简介

ggml是一个用 C 和 C 编写、专注于 Transformer 架构模型推理的机器学习库。该项目完全开源&#xff0c;处于活跃的开发阶段&#xff0c;开发社区也在不断壮大。ggml 和 PyTorch、TensorFlow 等机器学习库比较相似&#xff0c;但由于目前处于开发的早期阶段&#xff0c;一些底层…

『功能项目』怪物受击后显示受击状态UI【12】

本专栏每10章会做一次项目优化&#xff0c;但不影响具体功能 我们可以打开优化前的项目10也可以打开优化后的项目11 双击King或者怪物熊预制体 - 进入预制体空间后创建一个Image改名为StateUI01 代表第一个受击状态 修改Canvas的渲染模式 - 改为世界WorldSpace 调节Image&…

3分钟千人被裁,IBM中国 “灭霸式“裁员背后原因?

2024年8月23日&#xff0c;IMB即有员工传出“无法访问系统”&#xff0c;“无法连接到公司网络”的消息&#xff0c;后续传出裁员的传闻。 图片来源网络 2024年8月26日周一&#xff0c;IBM召开3分钟的会议&#xff0c;宣布彻底关闭IBM中国研发部门&#xff0c;之后直接切断会议…

【Go高性能】测试(单元测试、基准测试)

Go测试 一、分类1. 单元测试2. 基准测试 二、基准测试1. 介绍2. 基准测试基本原则3. 使用testing包构建基准测试3.1 执行基准测试3.2 基准测试工作原理3.3 改进基准测试的准确性3.3.1 -benchtime3.3.2 -count3.3.3 -cpu 4. 使用benchstat工具比较基准测试(可跳过&#xff09;4.…

SpringBoot日常:Spring之@PostConstruct解析

简介 spring的Bean在创建的时候会进行初始化&#xff0c;而初始化过程会解析出PostConstruct注解的方法&#xff0c;并反射调用该方法。 PostConstruct 的使用和特点 只有一个非静态方法能使用此注解&#xff1b;被注解的方法不得有任何参数&#xff1b;被注解的方法返回值必…