尚硅谷 Java 基础实战—Bank 项目—实验题目4

简介: 尚硅谷 Java 基础实战—Bank 项目—实验题目4

实验题目

将用数组实现银行与客户间的多重关系。

实验目的

在类中使用数组作为模拟集合操作。

提示

对银行来说,可添加 Bank 类。 Bank 对象跟踪自身与其客户间的关系。用 Customer 对象的数组实现这个集合化的关系。还要保持一个整数属性来跟踪 银 行当前有多少客户。image.png

  1. 创建 Bank 类
  2. 为 Bank 类 增 加 两 个 属 性 : customers(Customer对象的数组 ) 和 numberOfCustomers(整数,跟踪下一个 customers 数组索引)
  3. 添加公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。
  4. 添加 addCustomer 方法。该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。
  5. 添加 getNumOfCustomers 访问方法,它返回 numberofCustomers 属 性值。
  6. 添加 getCustomer方法。它返回与给出的index参数相关的客户。
  7. 编译并运行 TestBanking 程序。可以看到下列输出结果
Customer [1] isSimms, JaneCustomer [2] isBryant, OwenCustomer [3] isSoley, TimCustomer [4] isSoley, Maria

代码

【Account.java】类

packagebanking;
publicclassAccount {
privatedoublebalance;    //银行帐户的当前(或即时)余额//公有构造器 ,这个参数为 balance 属性赋值publicAccount(doubleinit_balance) {
this.balance=init_balance;
    }
//用于获取经常余额publicdoublegetBalance() {
returnbalance;
    }
/*** 向当前余额增加金额* @param amt   增加金额* @return  返回 true(意味所有存款是成功的)*/publicbooleandeposit(doubleamt){
balance+=amt;
returntrue;
    }
/*** 从当前余额中减去金额* @param amt   提款数目* @return  如果 amt小于 balance, 则从余额中扣除提款数目并返回 true,否则余额不变返回 false。*/publicbooleanwithdraw(doubleamt){
if (amt<balance){
balance-=amt;
returntrue;
        }else{
returnfalse;
        }
    }
}

【Customer.java】类

packagebanking;
publicclassCustomer {
privateStringfirstName;
privateStringlastName;
privateAccountaccount;
publicCustomer(Stringf, Stringl) {
this.firstName=f;
this.lastName=l;
    }
publicStringgetFirstName() {
returnfirstName;
    }
publicStringgetLastName() {
returnlastName;
    }
publicAccountgetAccount() {
returnaccount;
    }
publicvoidsetAccount(Accountacct) {
this.account=acct;
    }
}

【Bank.java】类

packagebanking;
/*** 银行类*/publicclassBank {
privateCustomer[] customers;   //Customer对象的数组privateintnumberOfCustomer;   //整数,跟踪下一个 customers 数组索引/*** 公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。*/publicBank() {
customers=newCustomer[10];
    }
/***  该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。* @param f 姓* @param l 名*/publicvoidaddCustomer(Stringf,Stringl){
customers[numberOfCustomer++]=newCustomer(f,l);
    }
/*** 通过下标索引获取 customer* @param index 下标索引* @return  customer*/publicCustomergetCustomer(intindex) {
returncustomers[index];
    }
publicintgetNumOfCustomers() {
returnnumberOfCustomer;
    }
}

【TestBanking.java】类

packagebanking;/** This class creates the program to test the banking classes.* It creates a new Bank, sets the Customer (with an initial balance),* and performs a series of transactions with the Account object.*/importbanking.*;
publicclassTestBanking {
publicstaticvoidmain(String[] args) {
Bankbank=newBank();
// Add Customer Jane, Simms//codebank.addCustomer("Jane","Simms");
//Add Customer Owen, Bryant//codebank.addCustomer("Owen","Bryant");
// Add Customer Tim, Soley//codebank.addCustomer("Tim","Soley");
// Add Customer Maria, Soley//codebank.addCustomer("Maria","Soley");
for (inti=0; i<bank.getNumOfCustomers(); i++) {
Customercustomer=bank.getCustomer(i);
System.out.println("Customer ["+ (i+1) +"] is "+customer.getLastName()
+", "+customer.getFirstName());
        }
    }
}


目录
相关文章
|
3月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
290 119
|
4月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
488 0
|
4月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
489 100
|
4月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
1423 8
|
4月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
694 12
|
3月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
4月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
215 1
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
927 37
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
523 4
|
存储 安全 Java
java基础面试题
java基础面试题
111 2