Java-银行系统+交易功能

Java-银行系统+交易功能,java,Java,我正在尝试创建一个银行系统面向对象,它可以保存/存储用户必须输入的帐户信息。创建帐户后,可以使用用于取款、存款、查看交易和删除的帐号来定位/找到该帐户 我遇到的问题是交易部分。对于每个帐户,您必须只能按升序存储最后6个交易,并且必须打印此交易。你能告诉我我应该寻找哪些方面吗 class BankAccount{ private int accountNumber; private String holderName; private String holderAddress; private

我正在尝试创建一个银行系统面向对象,它可以保存/存储用户必须输入的帐户信息。创建帐户后,可以使用用于取款、存款、查看交易和删除的帐号来定位/找到该帐户

我遇到的问题是交易部分。对于每个帐户,您必须只能按升序存储最后6个交易,并且必须打印此交易。你能告诉我我应该寻找哪些方面吗

class BankAccount{

private int accountNumber;
private String holderName;
private String holderAddress;
private String openDate;
private double balance;
private double[] transactions;
private String[] transactionsSummary;
private int numOfTransactions;
private  static int noOfAccounts=0;

public String getAccountInfo(){
    return "Account number: " + accountNumber + "\nCustomer Name: " + holderName + "\nHolder's Address: " + holderAddress + "\nOpen Date: " + openDate +  "\nBalance:" + balance +"\n";
}

public String getTransactionInfo(int n)
{
    String transaction = transactionsSummary[n];
    if (transaction == null) {
        return "No transaction exists with that number.";
    }
    else {
        return transaction;
    }
}

public BankAccount(String abc, double xyz, String address, String open){
    holderName = abc;
    balance = xyz;
    holderAddress = address;
    openDate = open;
    noOfAccounts ++;
    accountNumber = noOfAccounts;
    transactions = new double[100];
    transactionsSummary = new String[100];
    transactions[0] = balance;
    transactionsSummary[0] = "A balance of : $" + Double.toString(balance) + " was deposited.";
    numOfTransactions = 1;
}

public int getAccountNum(){
    return accountNumber;
}

public int getNumberOfTransactions() {
    return numOfTransactions;
}

public void deposit(double amount){

    if (amount<=0) {
        System.out.println("Amount to be deposited should be positive");
    } else {
        balance = balance + amount;
        transactions[numOfTransactions] = amount;
        transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was deposited.";
        numOfTransactions++;
    }
}

public void withdraw(double amount)
{
    if (amount<=0){
        System.out.println("Amount to be withdrawn should be positive");
    }
    else
    {
        if (balance < amount) {
            System.out.println("Insufficient balance");
        } else {
            balance = balance - amount;
            transactions[numOfTransactions] = amount;
            transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was withdrawn.";
            numOfTransactions++;
        }
    }
}

}//end of class




class BankAccount{

private int accountNumber;
private String holderName;
private String holderAddress;
private String openDate;
private double balance;
private double[] transactions;
private String[] transactionsSummary;
private int numOfTransactions;
private  static int noOfAccounts=0;

public String getAccountInfo(){
    return "Account number: " + accountNumber + "\nCustomer Name: " + holderName + "\nHolder's Address: " + holderAddress + "\nOpen Date: " + openDate +  "\nBalance:" + balance +"\n";
}

public String getTransactionInfo(int n)
{
    String transaction = transactionsSummary[n];
    if (transaction == null) {
        return "No transaction exists with that number.";
    }
    else {
        return transaction;
    }
}

public BankAccount(String abc, double xyz, String address, String open){
    holderName = abc;
    balance = xyz;
    holderAddress = address;
    openDate = open;
    noOfAccounts ++;
    accountNumber = noOfAccounts;
    transactions = new double[100];
    transactionsSummary = new String[100];
    transactions[0] = balance;
    transactionsSummary[0] = "A balance of : $" + Double.toString(balance) + " was deposited.";
    numOfTransactions = 1;
}

public int getAccountNum(){
    return accountNumber;
}

public int getNumberOfTransactions() {
    return numOfTransactions;
}

public void deposit(double amount){

    if (amount<=0) {
        System.out.println("Amount to be deposited should be positive");
    } else {
        balance = balance + amount;
        transactions[numOfTransactions] = amount;
        transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was deposited.";
        numOfTransactions++;
    }
}

public void withdraw(double amount)
{
    if (amount<=0){
        System.out.println("Amount to be withdrawn should be positive");
    }
    else
    {
        if (balance < amount) {
            System.out.println("Insufficient balance");
        } else {
            balance = balance - amount;
            transactions[numOfTransactions] = amount;
            transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was withdrawn.";
            numOfTransactions++;
        }
    }
}

}//end of class

我只给你一些提示

首先,Java是一种OO语言,因此应该使用对象。您不应该使用两个数组来保存交易金额和交易摘要,而应该使用一个数组来保存类型为transaction的对象。事务处理类应具有字段金额和字段摘要

第二:您可以使用列表,而不是使用数组。每次新事务进入时,您都会将其添加到列表的末尾。如果列表大小大于6,则删除列表的第一个元素—最旧的元素。对于此功能,LinkedList是一个不错的选择。因为列表有一个大小,所以您不需要自己维护一个NUMOF事务。这个列表可以帮你做到这一点

您正在使用字符串来保存日期。这不是合适的类型。你应该用日期


您正在使用一个静态字段来保存已创建帐户的数量。这是个糟糕的设计。你应该有一个银行对象,包含银行的所有账户,例如地图,它允许根据账户编号查找账户。

我只给你一些提示

首先,Java是一种OO语言,因此应该使用对象。您不应该使用两个数组来保存交易金额和交易摘要,而应该使用一个数组来保存类型为transaction的对象。事务处理类应具有字段金额和字段摘要

第二:您可以使用列表,而不是使用数组。每次新事务进入时,您都会将其添加到列表的末尾。如果列表大小大于6,则删除列表的第一个元素—最旧的元素。对于此功能,LinkedList是一个不错的选择。因为列表有一个大小,所以您不需要自己维护一个NUMOF事务。这个列表可以帮你做到这一点

您正在使用字符串来保存日期。这不是合适的类型。你应该用日期


您正在使用一个静态字段来保存已创建帐户的数量。这是个糟糕的设计。你应该有一个银行对象,包含银行的所有账户,例如一个映射,它允许根据账户的编号来查找账户。

如果你想用数组来查找账户,你必须编写额外的方法,并且应该将交易和汇总放在一个类中,如@JB Nizet所说。最好是使用列表。否则,您必须自己编写所有方法。这些方法应该如下所示:

import java.util.*;

private List<Transaction> transactions = new ArrayList<Transaction>();
public void addTransaction (Transaction t) {
    if (transactions.size() + 1 > 6)
        transactions.remove(0); // deletes the list element on the first place

    transactions.add(t);
}
如果你真的想使用数组,打电话给我,我可以帮你,但我建议你使用列表


我希望这对你有帮助

如果要对数组执行此操作,则必须编写其他方法,并且应该将事务和摘要放在一个类中,如@JB Nizet所说。最好是使用列表。否则,您必须自己编写所有方法。这些方法应该如下所示:

import java.util.*;

private List<Transaction> transactions = new ArrayList<Transaction>();
public void addTransaction (Transaction t) {
    if (transactions.size() + 1 > 6)
        transactions.remove(0); // deletes the list element on the first place

    transactions.add(t);
}
如果你真的想使用数组,打电话给我,我可以帮你,但我建议你使用列表


我希望这对你有帮助

是的,对于像这样的小东西,您真的应该使用任何类似于列表接口类的列表:最大的问题是数组的大小是固定的。这意味着您必须移动数组中的每个元素,或者每次创建一个新数组时都要创建一个。我想使用列表实现类将有助于更好地理解OOP。是的,对于这样的小东西,您真的应该使用类似列表接口类的任何列表:最大的问题是数组的大小是固定的。这意味着您必须移动数组中的每个元素,或者每次创建一个新数组时都要创建一个。我想使用列表实现类将有助于更好地理解OOP。非常感谢你的帮助。我应该如何进行?我是否需要完全删除帐户和事务的数组?我在哪里实现地图和链表?您好。非常感谢你的帮助。我应该如何进行?我是否需要完全删除帐户和事务的数组?我在哪里实现地图和链表?您好。非常感谢你的帮助。我是否需要为项目完全删除阵列并将其替换为列表?我如何存储帐户和交易以便链接?BankAccount类应该有一个列表类型的字段latestTransactions。类别银行应具有Map类型的字段帐户。您没有实现Map和LinkedList。这些是JDK提供的类
他在银行里的账户到地图上了吗?accounts.putcount.getNumber,account,你看过地图的javadoc吗?如果没有,那就去做。这就是你学习如何使用课堂的方法。对不起,如果我打扰了你,但是在概念上有困难。要存储帐户,我应该在哪个类中使用哪个数据结构。我应该在事务中使用哪个数据结构,它应该在哪个类中?您好。非常感谢你的帮助。我是否需要为项目完全删除阵列并将其替换为列表?我如何存储帐户和交易以便链接?BankAccount类应该有一个列表类型的字段latestTransactions。类别银行应具有Map类型的字段帐户。您没有实现Map和LinkedList。这些是JDK提供的类。我如何将银行账户添加到地图中?accounts.putcount.getNumber,account,你读过地图的javadoc吗?如果没有,那就去做。这就是你学习如何使用课堂的方法。对不起,如果我打扰了你,但是在概念上有困难。要存储帐户,我应该在哪个类中使用哪个数据结构。我应该在事务中使用哪个数据结构,它应该在哪个类中?