当前位置: 首页 > 知识库问答 >
问题:

简单银行账户程序无法正确存储余额

曹均
2023-03-14

我目前正在完成我的银行账户计划,但在完成的过程中遇到了一些问题。这个问题似乎很容易解决,但我不知道该如何着手解决它。

我将首先包括以下作业:

>

实现一个类库。这家银行有两个对象,即支票和储蓄,这两种类型的账户是在上一次练习中开发的。

实现四种实例方法:

存款(双倍金额,String账户)
提现(双倍金额,String账户)
转账(双倍金额,String账户)
printBalance()

这里的帐户字符串是“S”或“C”。对于存款或取款,它表明哪个账户受到影响。对于转账,它表示从中取钱的账户;钱会自动转入另一个账户。

唯一的问题似乎是在账户的余额变量中实际存储每个账户的信息。cpp文件。它只是停留在0,这就是为什么我觉得这个问题应该很容易解决。我想我只是忘记了关于类实现的一些非常基本的东西,但这就是为什么我在这里!现在回想起来,我想我的困惑部分来自这样一个事实:我以前实现过类似的程序,但只使用数组而不是变量,我没有遇到同样的问题。数据似乎被存储到数组中,所以这可能是我的问题?代码如下:

账户h:

#include <iostream>
#include <string>
#include <iomanip>      

using namespace std;

class Account
{
public:
    Account();
    Account(double balance);
    void Add(double money);
    void Withdraw(double money);
    double GetBalance();

private:
    double balance; 
};

账户cpp:

#include "Account.h"

//  Penalty Fee Constant
const double PENALTY_FEE = 5.00;

Account::Account()
{
    balance = 0.00;
}

Account::Account(double money)
{
    balance = money;
}

void Account::Add(double money)
{
    balance += money;
}

void Account::Withdraw(double money)
{
    if(money > balance)
        balance += PENALTY_FEE;
    else
        balance -= money;
}

double Account::GetBalance()
{
    return balance;
}

银行cpp:

#include "Account.h"

void deposit(double, string);
void withdraw(double, string);
void transfer(double, string);
void printBalances();

int main()
{
    string accountChoice;
    int selection;
    double transaction = 0;

    //  !!!!!!!!!!!!!!!!!!HAVE TO STILL COMPUTE INTEREST!!!!!!!!!!!!!!!!

    cout << fixed << showpoint << setprecision(2);

    do
    {
        cout << "Please make a selection:" << endl;
        cout << "1.) Deposit" << endl;
        cout << "2.) Withdraw" << endl;
        cout << "3.) Transfer" << endl;
        cout << "4.) Print balances" << endl;
        cout << "5.) Quit" << endl;
        cin >> selection;

        if(selection == 1)
        {
            cout << endl << "Please select the account you would like to perform operations on(S or C):" << endl;
            cin >> accountChoice;
            cout << endl << "Please enter the amount to be deposited:" << endl;
            cin >> transaction;
            cout << endl;

            deposit(transaction, accountChoice);
        }
        else if(selection == 2)
        {
            cout << endl << "Please select the account you would like to perform operations on(S or C):" << endl;
            cin >> accountChoice;
            cout << endl << "Please enter the amount to be withdrawn:" << endl;
            cin >> transaction;
            cout << endl;

            withdraw(transaction, accountChoice);
        }
        else if(selection == 3)
        {
            cout << endl << "Please select the account you would like to perform operations on(S or C):" << endl;
            cin >> accountChoice;
            cout << endl << "Please enter the amount to be transferred:" << endl;
            cin >> transaction;
            cout << endl;

            transfer(transaction, accountChoice);
        }
        else if(selection == 4)
            printBalances();
        else
            cout << "Closing program -- Thank you for using the ATM teller!" << endl;
    }while(selection != 5);


    system("pause");
    return 0;
}

void deposit(double amount, string account)
{
    Account savings, checking;

    if(account == "S" || account == "s")
        savings.Add(amount);
    else
        checking.Add(amount);
}

void withdraw(double amount, string account)
{
    Account savings, checking;

    if(account == "S" || account == "s")
        savings.Withdraw(amount);
    else
        checking.Withdraw(amount);
}

void transfer(double amount, string account)
{
    Account savings, checking;

    if(account == "S" || account == "s")
    {
        savings.Withdraw(amount);
        checking.Add(amount);
    }
    else
    {
        checking.Withdraw(amount);
        savings.Add(amount);
    }
}

void printBalances()
{
    Account savings, checking;

    cout << "The current balance in savings is: " << savings.GetBalance() << endl;
    cout << "The current balance in checking is: " << checking.GetBalance() << endl << endl;
}

共有2个答案

仲璞瑜
2023-03-14

每次需要时,您都会创建一个新的Account对象。当然,当您打印它时,它将是0,因为默认构造函数将余额初始化为0。

相反,当应用程序启动时,作为用户来识别他的帐户或其他东西,并创建相应的帐户实例。该实例需要在用户操作它的整个时间内都在那里。

因此,不要在方法中实例化,而是在主函数中实例化。并将实例传递给方法,作为根据需要修改实例的一种方式。

壤驷华美
2023-03-14

我认为如果你声明另一个类“客户”,并给他们一个名字、客户号码和一个支票和储蓄账户,总体上可能会更清楚。客户应该在流程生命周期的某个地方实例化,这样他们就不会被删除,例如在静态容器中,例如std::map。

自动取款机(抱歉!),您似乎有一些非成员函数实例化帐户,对它们进行处理,然后在函数返回时删除它们。

 类似资料:
  • 我想在取款后把账户上的余额换一下,但它只是停留在10点。我不知道如何在SavingsAccount中正确应用一个会改变它的方法。我试了但没有成功。

  • 该简介旨在创建一个ID为1122、余额为20000英镑、年利率为4.5%、取款方式为2500英镑、存款方式为3000英镑、打印余额、月利率和账户创建日期的账户对象。 我写了下面的代码,但主要方法是初始余额错误应该是20000英镑,而不是20500英镑,提款和存款也错误。金额应该是提款=17,500英镑,存款=20,500英镑。关于如何重新爱这个有什么建议吗?

  • 我知道甚至这个问题已经被提出了几次,但没有找到解决这个问题的方法。我使用的编译命令:。我使用的运行命令: 错误:

  • 我一直试图使用JDBC在JAVA中创建一个简单的数据库应用程序。到目前为止,我所有的尝试都没有成功,甚至在加载驱动程序。了解我是Java新手,刚刚开始学习。以下是我的步骤: 程序总是给出这个例外: 线程“main”Java.lang.ClassNotFoundException:com.microsoft.sqlServer.jdbc.sqlServerDriver在Java.net.URLCla

  • 我目前正在开发一个应用程序,用户A可以从用户B那里购买东西。 我想做的是让用户A用PayPal付款。然后在后端,我增加用户B在我的数据库中的帐户余额,然后允许用户B将这笔钱提取到他的银行帐户。这是我的问题,是否可以将钱从PayPal转移到各种银行账户?例如,用户B通过表单发送他的银行帐号,并在后端进行适当的API调用以转移资金。 如果没有使用PayPal,那么我如何执行这种类型的转移,可能是使用其

  • 我对以下语法有一些问题。 我目前正在学习Java,并一直在复习过去的试卷,以帮助我积累Java知识。 问题是: 编写一个类帐户,其中包含帐户编号和当前余额的实例变量。实现一个构造函数和方法getAccountNumber()、getBalance()、借记(双倍金额)和贷记(双倍金额)。在执行借记和贷记时,请检查指定的金额是否为正数,并且在借记方法中不会导致透支。在这些情况下返回false。否则,