java银行账户类_使用Java编写银行账户类(面向对象思考实验)
银行账户类(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编写银行账户类(面向对象思考实验)相关推荐
- 按要求编写一个Java应用程序:(1)编写一个矩形类Rect,包含:两个属性...2、定义一个接口Shape,包括计算图形面积(getArea)和周长(getcir)...
1.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含:两个属性:矩形的宽width和高height:一个带有两个参数的构造方法,用于将width和height属性初化:两个方法:求 ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- C# - 类_使用新成员隐藏基类成员
1 using System; 2 3 namespace 类_使用新成员隐藏基类成员 4 { 5 // 基类 : Animal 6 public class Animal 7 { 8 // 基类的普 ...
- 使用Java编写银行账户类(面向对象思考实验)
银行账户类(Accoount)可以为账户存储交易.取款和存款都会产生交易信息.需要记录账户每次交易(Transaction)的信息,包括取钱还是存钱,交易的金额,交易时间和交易之后的余额.系统可以通过 ...
- java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)
用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...
- Java正则表达式校验工具类_【Java工具类】----正则表达式校验工具类
/** * @Title: RegexValidateUtil.java * @Package org.csun.nc.util * @Description: TODO * @author chis ...
- JAVA设计一个电视机类_漫谈Java程序设计中的接口应用
Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...
- java mysql jdbc 封装_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)...
近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...
- java collection 常用类_分析Collection常用的实现类
Conllection(集合)概念 在Java中我们通常使用OOP来编写程序,所以,在这个面向对象编程中最小的单位是一个对象(类),为了方便使用多个对象,我们将对象进行了存储,我们在使用中,最常见的就 ...
- java刘备猜拳游戏类_基于java实现人机猜拳游戏
本文实例为大家分享了java实现人机猜拳游戏的具体代码,供大家参考,具体内容如下 完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑通过程序中的随机数实现出拳,每一局结束后都要输出结果.当用 ...
最新文章
- 影像组学视频学习笔记(12)-支持向量机(SVM)参数优化(代码)、Li‘s have a solution and plan.
- Python 动态生成多维数组
- pytorch笔记:Dataloader
- 查看db2数据库名linux,【名说】DB2数据库备份与恢复(linux环境)
- (王道408考研操作系统)第三章内存管理-第一节5:动态分区分配算法(首次适应、和邻近适应)
- NYOJ-491 幸运三角形
- java集合之列表:ArrayList、Vector、LinkedList
- [转载] Java——System.exit()用法及个人理解
- keras中TimeDistributed的用法
- 最详细的Mysql操作手册(一)
- 除了Scrcpy,还有哪些免费的多屏协同软件,例举3款
- arcgis怎么做poi_基于POI数据与ArcGIS空间分析技术的城市公交站点现状容量评价方法...
- 智能电视怎么安装鸿蒙,智能电视如何通过手机电脑安装第三方软件,两种操作方法亲测可用...
- php怎么把中文转,php如何把汉字转换成拼音
- [9i] 我们常说的好朋友:“哥们”、“兄弟”、“死党”、“闺蜜”,以及坏朋友:“小人”、“背叛者”在英文中怎么说。
- Java:判断是一年的第几天
- easypoi 语法_高考阅读amp;语法填空amp;完型amp;词汇amp;句型amp;翻译amp;语法 系列大合集 找资料不愁了...
- vs2015 产品密钥
- 网络安全学习笔记——红队实战攻防(中)
- Spark Submit提交及参数调优