银行账户类(Accoount)可以为账户存储交易。取款和存款都会产生交易信息。需要记录账户每次交易(Transaction)的信息,包括取钱还是存钱,交易的金额,交易时间和交易之后的余额。系统可以通过账户查询所有的交易次数(最多10次)。

问题一:为了实现此功能需要设计几个类?

答:两个类,Account类和Transaction类。

问题二:请写出你的设计的类的代码(先画UML图在展示代码)。

UML图:

Account类:

Transaction类:

注意: 两者之间为单项关联

代码如下:

Account类中:

public class Account {

//名字

private String name;

//用户id

private int id = 0;

//账户余额

private double balance = 0;

//账户年利率

private static double annuallnterestRate = 0;

//账户创建的日期

private Date dateCreated;

//用于存储账户所有的交易信息

private Transaction[] transactions = new Transaction[size];

//用于记录账户交易信息存储的位置

private int top = 0;

//能够记录账户最大的交易信息数量

private static int size = 10;

//无参创`在这里插入代码片`建账户

public Account() {

dateCreated = new Date();

}

//带特定id和初始余额开通账户

public Account(double annuallnterestRate, int id, double balance,String name) {

this.annuallnterestRate = annuallnterestRate;

this.id = id;

this.balance = balance;

this.name = name;

dateCreated = new Date();

}

//get和set方法

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public double getBalance() {

return balance;

}

public void setBalance(double balance) {

this.balance = balance;

}

public static double getAnnuallnterestRate() {

return annuallnterestRate;

}

public static void setAnnuallnterestRate(double annuallnterestRate) {

Account.annuallnterestRate = annuallnterestRate;

}

//获取用户创建日期

public Date getDataCreated() {

return dateCreated;

}

//获取月利润

public double getMonthlyInterest() {

return (balance * annuallnterestRate / 12) / 100;

}

//取钱

public void withDraw(double amount) {

balance = balance - amount;

if(top

transactions[top++] = new Transaction('W',amount,balance);

}else{

//如果超过了数组存储的最大容量,则删除第一个账单,后面的账单依次往前移,新帐单存在最后一个位置

for(int i = 0;i

transactions[i] = transactions[i+1];

transactions[size-1] = new Transaction('W',amount,balance);

}

}

}

//存钱

public void deposit(double amount) {

balance = balance + amount;

if(top

transactions[top++] = new Transaction('D',amount,balance);

}else{

//如果超过了数组存储的最大容量,则删除第一个账单,后面的账单依次往前移,新帐单存在最后一个位置

for(int i = 0;i

transactions[i] = transactions[i+1];

transactions[size-1] = new Transaction('D',amount,balance);

}

}

}

//输出用户信息及最近的交易记录

public void output() {

System.out.println("Name:" + name);

System.out.println("Annual interest rate : " + getAnnuallnterestRate());

System.out.println("Balance:" + balance);

System.out.printf("%-40s%-15s%-15s%-15s\n", "Date", "Type", "Amount", "Balance");

for(Transaction transaction:transactions){

if(transaction!=null){

transaction.print();

}

}

}

}

Transaction类中:

public class Transaction {

private Date tradTime;

private char tradType;

private double tradAmount;

private double balance;

Transaction(char tradType, double tradAmount, double balance) {

tradTime = new Date();

this.tradType = tradType;

this.tradAmount = tradAmount;

this.balance = balance;

}

public Date getTradTime() {

return tradTime;

}

public char getTradType() {

return tradType;

}

public double getTradAmount() {

return tradAmount;

}

public double getBalance() {

return balance;

}

public String toString() {

return getTradTime() + "\t" + getTradType() + "\t\t" + getTradAmount() + "\t" + balance;

}

public void print(){

System.out.printf("%-40s%-15s%-15s%-15s\n", getTradTime(),

getTradType(), getTradAmount(), getBalance());

}

}

Test(测试)类

public class Test {

public static void main(String[] args) {

Account a1 = new Account(1.5,1122,1000,"George");

a1.setAnnuallnterestRate(5.5);

a1.deposit(30);

a1.deposit(40);

a1.deposit(50);

a1.withDraw(5);

a1.withDraw(4);

a1.withDraw(2);

a1.output();

}

}

运行截图如下:

(未对代码进行精简,部分位置会显得冗余了,请谅解)

本文地址:https://blog.csdn.net/qq_51868285/article/details/110212598

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java银行账户类_使用Java编写银行账户类(面向对象思考实验)相关推荐

  1. 按要求编写一个Java应用程序:(1)编写一个矩形类Rect,包含:两个属性...2、定义一个接口Shape,包括计算图形面积(getArea)和周长(getcir)...

    1.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含:两个属性:矩形的宽width和高height:一个带有两个参数的构造方法,用于将width和height属性初化:两个方法:求 ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. C# - 类_使用新成员隐藏基类成员

    1 using System; 2 3 namespace 类_使用新成员隐藏基类成员 4 { 5 // 基类 : Animal 6 public class Animal 7 { 8 // 基类的普 ...

  4. 使用Java编写银行账户类(面向对象思考实验)

    银行账户类(Accoount)可以为账户存储交易.取款和存款都会产生交易信息.需要记录账户每次交易(Transaction)的信息,包括取钱还是存钱,交易的金额,交易时间和交易之后的余额.系统可以通过 ...

  5. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)

    用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...

  6. Java正则表达式校验工具类_【Java工具类】----正则表达式校验工具类

    /** * @Title: RegexValidateUtil.java * @Package org.csun.nc.util * @Description: TODO * @author chis ...

  7. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用

    Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...

  8. java mysql jdbc 封装_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)...

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  9. java collection 常用类_分析Collection常用的实现类

    Conllection(集合)概念 在Java中我们通常使用OOP来编写程序,所以,在这个面向对象编程中最小的单位是一个对象(类),为了方便使用多个对象,我们将对象进行了存储,我们在使用中,最常见的就 ...

  10. java刘备猜拳游戏类_基于java实现人机猜拳游戏

    本文实例为大家分享了java实现人机猜拳游戏的具体代码,供大家参考,具体内容如下 完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑通过程序中的随机数实现出拳,每一局结束后都要输出结果.当用 ...

最新文章

  1. 影像组学视频学习笔记(12)-支持向量机(SVM)参数优化(代码)、Li‘s have a solution and plan.
  2. Python 动态生成多维数组
  3. pytorch笔记:Dataloader
  4. 查看db2数据库名linux,【名说】DB2数据库备份与恢复(linux环境)
  5. (王道408考研操作系统)第三章内存管理-第一节5:动态分区分配算法(首次适应、和邻近适应)
  6. NYOJ-491 幸运三角形
  7. java集合之列表:ArrayList、Vector、LinkedList
  8. [转载] Java——System.exit()用法及个人理解
  9. keras中TimeDistributed的用法
  10. 最详细的Mysql操作手册(一)
  11. 除了Scrcpy,还有哪些免费的多屏协同软件,例举3款
  12. arcgis怎么做poi_基于POI数据与ArcGIS空间分析技术的城市公交站点现状容量评价方法...
  13. 智能电视怎么安装鸿蒙,智能电视如何通过手机电脑安装第三方软件,两种操作方法亲测可用...
  14. php怎么把中文转,php如何把汉字转换成拼音
  15. [9i] 我们常说的好朋友:“哥们”、“兄弟”、“死党”、“闺蜜”,以及坏朋友:“小人”、“背叛者”在英文中怎么说。
  16. Java:判断是一年的第几天
  17. easypoi 语法_高考阅读amp;语法填空amp;完型amp;词汇amp;句型amp;翻译amp;语法 系列大合集 找资料不愁了...
  18. vs2015 产品密钥
  19. 网络安全学习笔记——红队实战攻防(中)
  20. Spark Submit提交及参数调优

热门文章

  1. BootStrap实现一个简单的界面
  2. 网站微调是什么意思?能带来什么作用?
  3. Rstudio插入Excel数据
  4. 气象插值软件anusplin的使用
  5. 微粒社会,品牌如何进行营销?
  6. 基于帝企鹅算法优化BP神经网络实现数据预测(Matlab代码实现)
  7. 备考BEC高级全记录:
  8. EXCEL批量修改文件名
  9. unity android录制视频教程,Unity移动端视频录制,Android和IOS都支持
  10. 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。