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

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

1、题目背景

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

2、题目要求

为了实现此功能需要设计几个类?

这些类之间的关系是什么?请用UML图表示(注意单线关联和双向关联表示的不同)。

请写出你的设计的类的代码(先画UML图,图中标注主要数据域和方法,再展示代码)。

账户要包含用户名字、账户id,账户年利率,账户余额,账户所有的交易信息,账户创建的日期等信息(对实验六的Account类做部分修改)。

交易信息包含交易的时间,交易的类型(D表示取钱,W表示存钱),交易的数额、交易之后的余额。

编写一个测试程序,创建一个年利率为1.5%、收支额为1000、id为1122而名为George的Account。向账户存入30美元、40美元、50美元并从该账户中取出5美元、4美元、2美元。打印账户清单,显示账户持有者名字,利率,收支额和所有的交易。

以下代码仅供参考

以下代码仅供参考

以下代码仅供参考

最后的输出格式和编译器有关,不同编译器最终对齐方式可能有所不同,最终输出格式请自己修改。

/**
 *作者:魏宝航
 *2020年11月23日,下午16:04
 */
import java.util.Date;
public class Test{
    public static void main(String[] args) {
        Account George=new Account(1122,1000,"George");
        Account.setAnnualInterestRate(150);
        System.out.println("Name:"+George.getName());
        System.out.println("Annual interest:"+George.getAnnual());
        George.deposit(30);
        George.deposit(40);
        George.deposit(50);
        George.withdraw(5);
        George.withdraw(4);
        George.withdraw(2);
        System.out.println("Balance:"+George.getBalance());
        System.out.println("Date\t\t\t\t"+"Type\t\t"+"Amount\t\t"+"Balance");
        for(int i=0;i<George.data.count;i++){
            System.out.println(George.data.string[i][0]);
        }
    }
}
class Account {
    private int id;
    private String name;
    private double balance;
    private static double annualInterestRate;//年利率
    Data data=new Data();
    private java.util.Date dateCreated;
    {
        dateCreated = new java.util.Date();
    }
    public Account() { }
    public Account(int newId, double newBalance,String name) {
        id = newId;
        balance = newBalance;
        this.name=name;
    }
    public int getId() { return this.id; }
    public double getBalance() { return balance; }
    public static double getAnnualInterestRate() { return annualInterestRate; }
    public void setId(int newId) { id = newId; }
    public void setBalance(double newBalance) {
        if(newBalance>0)
            balance = newBalance;
    }
    public static void setAnnualInterestRate(double newAnnualInterestRate) {
        annualInterestRate = newAnnualInterestRate;
    }
    public String getName(){
        return name;
    }
    public double getMonthlyInterest() { return balance * (annualInterestRate / 1200); }
    public double getYearlyInterest() { return balance * (annualInterestRate / 100); }
    public java.util.Date getDateCreated() { return dateCreated; }
    public void withdraw(double amount) {
        this.setBalance(balance-amount);
        String s;
        if(amount<10){
            s=dateCreated+"\t"+"W"+"\t\t"+amount+"\t\t"+balance;
        }
        else{
            s=dateCreated+"\t"+"W"+"\t\t"+amount+"\t\t"+balance;
        }
        data.string[data.count++][0]=s;
    }
    public void deposit(double amount) {
        if(amount<0) return;
        this.setBalance(balance+amount);
        String s=dateCreated+"\t"+"D"+"\t\t"+amount+"\t\t"+balance;
        data.string[data.count++][0]=s;
    }
    public double getAnnual(){
        return annualInterestRate/100;
    }
}
class Data{
    Date date=new Date();
    String type="";
    double amount=0;
    double balance=0;
    int count=0;
    String[][] string=new String[1000][1];
    Data(){
    }
    Data(Date date,String type,double amount,double balance){
        this.date=date;
        this.type=type;
        this.amount=amount;
        this.balance=balance;
    }
}


目录
相关文章
单笔转账报错PAYEE_NOT_EXIST(收款账户不存在)-排查方案
报错原因 接口中用户账户参数设置存在问题,导致显示用户收款账户不存在。 排查方案 1、检查payee_account, payee_type是否匹配,如匹配,请检查payee_account是否存在; (1)payee_type设置要求 ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。
3441 0
|
4月前
银行,客户,账户
银行,客户,账户
18 0
银行,客户,账户
|
5月前
|
开发者
【公告】2021-2022年未兑换积分即将过期,用户等级权益调整
社区用户2021-2022年未兑换积分将于2024年2月29日过期,同时用户等级权益内容将进行调整。
|
存储 编译器 uml
创建一个银行账户的继承层次,表示银行的所有客户的账户。每个客户都能在他们的银行账户存钱,取钱。但是账户可以分为更具体的两种类型,例如,依靠存款生息的存储账户SavingsAccount类,另一种就是信
创建一个银行账户的继承层次,表示银行的所有客户的账户。每个客户都能在他们的银行账户存钱,取钱。但是账户可以分为更具体的两种类型,例如,依靠存款生息的存储账户SavingsAccount类,另一种就是信
146 0
|
测试技术 定位技术 开发工具
支付交易风险控制小知识:iOS设备限制境外交易
支付交易风险控制小知识:iOS设备限制境外交易
260 0
支付交易风险控制小知识:iOS设备限制境外交易
支付宝交易状态快速掌握
1. 支付宝返回的常见的交易状态包含以下:     2. 状态说明   WAIT_BUYER_PAY :交易创建,等待买家付款   TRADE_CLOSED :在指定时间段内未支付时关闭的交易或在交易完成全额退款成功时关闭的交易   TRADE_SUCCESS:商户签约的产品支持退款功能的前提下,买家付款成功   TRADE_FINISHED:商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能 的前提下,交易已经成功并且已经超过可退款期限。
1415 0
|
JSON 数据格式
单笔转账到支付宝账户接入流程
功能场景说明: 1. 支付宝商户向其他支付宝账户单笔转账; 2. 目前仅支持账户余额渠道付款; 3.可集成到商户自身业务系统,无需登录支付宝,可用于商户间的货款结算,商户给个人用户发放佣金等; 4.提现场景/发放工资场景等; 产品规则: 1.最低额度为0.1元。
2069 0
控制会员可兑换金额
控制会员可兑换金额
1318 0