银行账户类(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;
    }
}


目录
相关文章
支付系统39----支付宝支付,定时查单,每隔30秒执行1次,查询超过5分钟,并且未支付的订单
支付系统39----支付宝支付,定时查单,每隔30秒执行1次,查询超过5分钟,并且未支付的订单
|
8月前
|
安全 API 开发者
转账到支付宝账户接口:一次开发,提升打款效率
转账到支付宝账户接口:一次开发,提升打款效率
166 0
|
机器人
如何查询OpenAI账户余额?ChatGPT怎么查看账户余额的方法
ChatGPT是美国OpenAI研发的聊天机器人程序,也是最近火爆全网的热门应用和话题之王。很多用户在使用openai的时候不知道如何查询OpenAI账户余额?
2323 0
单笔转账报错PAYEE_NOT_EXIST(收款账户不存在)-排查方案
报错原因 接口中用户账户参数设置存在问题,导致显示用户收款账户不存在。 排查方案 1、检查payee_account, payee_type是否匹配,如匹配,请检查payee_account是否存在; (1)payee_type设置要求 ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。
3764 12
|
2月前
|
存储 供应链 监控
如何有效防止欺诈性交易
如何有效防止欺诈性交易
|
6月前
|
JSON 数据格式
支付系统41----定时查单-订单未支付
支付系统41----定时查单-订单未支付
GoDaddy用支付宝付款时出现我们无法处理这笔交易,请查看您的付款信息并重试。...
GoDaddy用支付宝付款时出现我们无法处理这笔交易,请查看您的付款信息并重试。...
299 0
C++编程练习:设计一个银行账户类,包含户名、帐号以及当前余额属性,并且能完成开户、存款、取款和查询余额等行为。
C++编程练习:设计一个银行账户类,包含户名、帐号以及当前余额属性,并且能完成开户、存款、取款和查询余额等行为。
C++编程练习:设计一个银行账户类,包含户名、帐号以及当前余额属性,并且能完成开户、存款、取款和查询余额等行为。
支付宝交易状态快速掌握
1. 支付宝返回的常见的交易状态包含以下:     2. 状态说明   WAIT_BUYER_PAY :交易创建,等待买家付款   TRADE_CLOSED :在指定时间段内未支付时关闭的交易或在交易完成全额退款成功时关闭的交易   TRADE_SUCCESS:商户签约的产品支持退款功能的前提下,买家付款成功   TRADE_FINISHED:商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能 的前提下,交易已经成功并且已经超过可退款期限。
1650 12
|
JSON 数据格式
单笔转账到支付宝账户接入流程
功能场景说明: 1. 支付宝商户向其他支付宝账户单笔转账; 2. 目前仅支持账户余额渠道付款; 3.可集成到商户自身业务系统,无需登录支付宝,可用于商户间的货款结算,商户给个人用户发放佣金等; 4.提现场景/发放工资场景等; 产品规则: 1.最低额度为0.1元。
2319 0