【Java】—— Java面向对象基础:使用Java模拟银行账户与客户交易系统

news2024/12/25 9:18:25

目录

账户类(Account)

客户类(Customer)

测试类(CustomerTest)

运行结果


        在今天的博文中,我们将通过Java编程语言来模拟一个简单的银行账户与客户交易系统。这个系统将包括两个主要类:Account(账户类)和Customer(客户类),以及一个测试类CustomerTest来演示如何使用这些类。

账户类(Account)

        首先,我们创建一个Account类来模拟银行账户。这个类包含三个私有属性:账号ID(id)、余额(balance)和年利率(annualInterestRate。此外,该类还提供了相应的getter和setter方法来访问和修改这些属性。

        我们还实现了两个重要的方法:deposit(double amount)用于存款,withdraw(double amount)用于取款。这两个方法都进行了简单的验证,以确保取款金额不超过账户余额,并且存款金额大于0


public class Account {
    // 属性
    private int id;             //账号id
    private double balance;     // 余额
    private double annualnterestRate;   // 年利率

    // 构造器
    public Account(int i, double b, double a) {
        id = i;
        balance = b;
        annualnterestRate = a;
    }


    public void setId(int i) {
        id = i;
    }

    public void setBalance(double b) {
        balance = b;
    }

    public void setAnnualnterestRate(double a) {
        annualnterestRate = a;
    }

    public int getId() {
        return id;
    }

    public double getBalance() {
        return balance;
    }

    public double getAnnualnterestRate() {
        return annualnterestRate;
    }

    // 取钱方法
    public void withdraw(double amount) {
        if (amount <= balance && amount > 0) {
            balance -= amount;
            System.out.println("成功取出:" + amount);
        } else {
            System.out.println("余额不足,取款失败");
        }
    }

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

客户类(Customer)

        接下来,我们创建Customer类来模拟客户。这个类包含三个私有属性:名字(firstName)、姓氏(lastName)和关联的账户(account。我们还提供了构造器来初始化客户的名字和姓氏,并提供了存取器方法来访问这些属性。此外,我们提供了setAccountgetAccount方法来分别设置和获取客户的账户信息。

public class Customer {
    // 属性
    private String firstName;
    private String lastName;
    private Account account;

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

    public String getFirstName(){
        return firstName;
    }
    public String getLastName(){
        return lastName;
    }
    public void setAccount(Account a){
        account = a;
    }
    public Account getAccount(){
        return account;
    }

}

测试类(CustomerTest)

        最后,我们通过CustomerTest类来测试我们的系统。在这个类中,我们首先创建了一个名为Jane Smith的客户,并为她创建了一个账号为1000、余额为2000元、年利率为1.23%的账户。然后,我们对这个账户进行了一系列操作:存入100元,取出960元,再尝试取出2000元(这次会失败,因为余额不足)。最后,我们打印出Jane Smith的基本信息和她的账户信息。

public class CustomerTest {
    public static void main(String[] args) {
        // 创建一个customer
        Customer customer = new Customer("Jane","smith");

        Account account = new Account(1000,2000,0.0123);
        // 将账户的地址值赋值给客户,客户就拿到账户的信息
        customer.setAccount(account);

        // 针对于客户的账户的进行取钱、存钱的操作
        customer.getAccount().deposit(100);     // 存100
        customer.getAccount().withdraw(960);    // 取960
        customer.getAccount().withdraw(2000);   // 取2000

        // 输出客户的信息
        System.out.println("Customer [" + customer.getLastName() + ", " + customer.getFirstName() +
                "] has a account: " + customer.getAccount().getId() + ", annualnterestRate is " +
                customer.getAccount().getAnnualnterestRate()*100 + "%, balance is " +
                customer.getAccount().getBalance());

    }
}

运行结果

        通过这个简单的示例,我们展示了如何使用Java类来模拟现实世界中的银行账户和客户交易系统。希望这个示例能够帮助你理解面向对象编程的基本概念,并激发你对Java编程的进一步兴趣。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2083574.html

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

相关文章

算法设计:实验四回溯法

【实验目的】 应用回溯法求解图的着色问题 【实验要求】 设下图G(V,E)是一连通无向图&#xff0c;有3种颜色&#xff0c;用这些颜色为G的各顶点着色&#xff0c;每个顶点着一种颜色&#xff0c;且相邻顶点颜色不同。试用回溯法设计一个算法&#xff0c;找出所有可能满足上述…

Cookie、Session、Token、JWT的区别

先总结 其实比较的话就只是Session、Token、JWT的区别&#xff0c;Session是基于Cookie的 这里暂时只比较Session和JWT的区别 存放位置不同 Session基于Cookie存储在服务端JWT存放在客户端&#xff0c;通常是在浏览器的Cookie或LocalStorage中。 JWT将 Token 和 Payload 加…

从学习到工作,2024年不可或缺的翻译助手精选

翻译工具利用先进的机器学习和自然语言处理技术&#xff0c;能够迅速将一种语言的文档转换为另一种语言&#xff0c;极大地促进了信息的无障碍流通。接下来&#xff0c;我们将介绍几款功能强大、操作简便的类似deepl翻译的工具&#xff0c;帮助你轻松应对各种翻译需求。 第一款…

容器网络(桥接、host、none)及跨主机网络(etcd、flannel、docker)

1.本地网络 1.bridge 所有容器连接到桥就可以使用外网&#xff0c;使用nat让容器可以访问外网&#xff0c;使用ip a s指令查看桥&#xff0c;所有容器连接到此桥&#xff0c;ip地址都是 172.17.0.0/16网段&#xff0c;桥是启动docker服务后出现&#xff0c;在centos使用bridge…

深度强化学习算法(五)(附带MATLAB程序)

深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;结合了深度学习和强化学习的优点&#xff0c;能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数&#xff0c;从而提高学习能力和决策效率…

数据结构(6.4_2)——最短路径问题_BFS算法

最短路径问题 BFS求无权图的单源最短路径 原代码 改造visit函数后

list的使用及其相关知识点

目录 ◉list的底层逻辑 ◉关于list的新增功能 ▲splice功能 ▲remove函数 ▲unique函数 ▲merge函数 ▲sort函数 ▣迭代器类型 ▲reverse函数 作为数据容器之一的list和其他容器的使用上有很多相似的地方&#xff0c;比如都有大致相同的构造函数&#xff0c;大致相同的头插尾插…

CUDA编程之CUDA Sample-5_Domain_Specific-volumeFiltering(光线追踪)

volumeFiltering演示了使用 3D 纹理和 3D 表面写入进行 3D 体积过滤。它从磁盘加载一个 3D 体积&#xff0c;并使用光线步进和 3D 纹理进行显示。 以下是该示例的主要内容和功能&#xff1a; 主要功能 3D 体积加载: 从磁盘加载 3D 体积数据&#xff0c;通常为医学成像数据或体…

图像处理中的腐蚀与膨胀算法详解

引言 在图像处理领域&#xff0c;形态学操作&#xff08;Morphological Operations&#xff09;是处理二值图像的重要工具。腐蚀&#xff08;Erosion&#xff09;和膨胀&#xff08;Dilation&#xff09;是形态学操作的两种基本形式&#xff0c;它们常用于消除噪声、分割图像、…

深入解析C#中的锁机制:`lock(this)`、`lock(privateObj)`与`lock(staticObj)`的区别

前言 在C#的多线程编程中&#xff0c;lock关键字是确保线程安全的重要工具。它通过锁定特定的对象&#xff0c;防止多个线程同时访问同一块代码&#xff0c;从而避免数据竞争和资源冲突。然而&#xff0c;选择适当的锁对象对于实现高效的线程同步至关重要。本文将深入探讨使用…

三种tcp并发服务器实现程序

都需先进行tcp连接 1、多进程并发 2、多线程并发 3、IO多路复用并发 &#xff08;1&#xff09;select &#xff08;2&#xff09;epoll

在VB.net中,LINQ在数据统计方面的应用,举例说明

标题 在VB.net中&#xff0c;LINQ在数据统计方面的应用&#xff0c;举例说明 正文 在VB.NET中&#xff0c;LINQ&#xff08;Language Integrated Query&#xff09;在数据统计方面有着广泛的应用。LINQ允许开发者以声明性的方式对数据集合进行复杂的查询和统计操作&#xff0c;…

笔记:Echarts 饼图 图例legend 自定义 换行

配置后效果&#xff1a;&#x1f447; 配置&#xff1a; let option {legend: [{data: ["融云", "融AI", "融安全", "融平台"],show: true,right: "3%",bottom: "20%",left: "center",icon: "re…

乾元通渠道商中标大理市自然灾害应急能力提升项目

近日&#xff0c;乾元通渠道商中标云南省大理市自然灾害应急能力提升项目&#xff0c;乾元通作为设备厂家&#xff0c;为项目提供通信指挥类装备&#xff08;多链路聚合设备&#xff09;QYT-X1。 青岛乾元通数码科技有限公司作为国家应急产业企业&#xff0c;深耕于数据调度算法…

医疗数字化转型数据中台架构方案(一)

为推进医疗数字化转型&#xff0c;我们提出构建数据中台架构方案&#xff1a;通过集成医院内外多个数据源&#xff0c;利用大数据、人工智能等技术对数据进行清洗、整合、标准化处理&#xff0c;形成高质量的数据资产&#xff1b;再基于云原生技术构建湖仓一体化大数据平台&…

【Python数据结构与算法】栈----合法出栈序列

题目&#xff1a;合法出栈序列 描述 给定一个由大小写字母和数字构成的&#xff0c;没有重复字符的长度不超过62的字符串x&#xff0c;现在要将该字符串的字符依次压入栈中&#xff0c;然后再全部弹出。 要求左边的字符一定比右边的字符先入栈&#xff0c;出栈顺序无要求。 …

守护夏日清凉:EasyCVR+AI视频智能管理方案为水上乐园安全保驾护航

随着夏季的来临&#xff0c;水上乐园成为了人们避暑消夏、亲子互动的理想去处。然而&#xff0c;随着游客量的激增&#xff0c;如何确保水上乐园的安全与秩序&#xff0c;提升游客体验&#xff0c;成为了管理者亟待解决的问题。为此&#xff0c;引入一套高效、智能的视频监控方…

Node.js原生开发脚手架工具(下)

前言 在现代软件开发中&#xff0c;脚手架工具成为提高开发效率和一致性的关键利器。使用Node.js原生开发自己的脚手架工具不仅能帮助自动化常见任务&#xff0c;还能根据具体需求进行高度定制。Node.js的异步非阻塞特性和丰富的模块系统使其成为构建这种工具的理想选择。本篇文…

使用 pnpm workspace 和 standalone 模式构建 Next.js 的 Docker 镜像

引言 本文将探讨如何利用 pnpm workspace 和 standalone 模式来构建 Next.js 应用程序的轻量级 Docker 镜像。这种方法通过仅在 node_modules 目录中包含必要的文件&#xff0c;显著减少了最终 Docker 镜像的大小。 Standalone 模式简介 通常情况下&#xff0c;所有在 depe…

MyPrint打印设计器(四)vue3 函数式调用组件

vue3 函数式调用组件 vue中&#xff0c;通常情况下调用一个组件需要以下步骤 导入组件在template引入组件&#xff0c;并且设置ref属性在js模块定义对应的ref属性通过ref对象调用对应的方法 如果这个组件在template是不必要的&#xff0c;那么可以通过函数式调用组件&#xff…