Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;can';t更新我的一个变量_C++_Database - Fatal编程技术网

C++ C++;can';t更新我的一个变量

C++ C++;can';t更新我的一个变量,c++,database,C++,Database,我有一个学校的任务是制造一台自动取款机。我让它工作,但如果我存款或取款,并查看我的帐户余额后,它仍然没有更新。如果有人能告诉我我做错了什么,并且对如何改进我的代码提出建议,我将不胜感激 #include <iostream> #include <fstream> #include <string> #include <cmath> using namespace std; void WelcomeMenu(); void Menu(); void

我有一个学校的任务是制造一台自动取款机。我让它工作,但如果我存款或取款,并查看我的帐户余额后,它仍然没有更新。如果有人能告诉我我做错了什么,并且对如何改进我的代码提出建议,我将不胜感激

#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;

void WelcomeMenu();
void Menu();
void userChoiceDeposite(double accountbalance);
void userChoiceWithdraw(double accountbalance);
void userChoiceView(double accountbalance);
void printReceipt();


int main ()
{
//clear receipt.txt from previous transactions
ofstream clearFile("Receipt.txt");
clearFile.close();


//Declaring variables
string userInput;
char userAction;

//prompt user for input, start the program or quit
cout <<"Enter start to continue, or Q/q to quit ";
getline (cin, userInput);
cout <<endl;

//check the input
if ((userInput == "q") || (userInput == "Q"))
{
    cout <<"Have a nice day!" <<endl;
    return 0;
}

else if (userInput == "start")
{
const int sizeLimit = 50;
string firstName[sizeLimit], lastName[sizeLimit], passWord[sizeLimit];
double accountBalance[sizeLimit];
int count = 0;

ifstream readFile("Accounts.txt");

 while (!readFile.eof())
 {
    readFile >> firstName[count];
    readFile >> lastName[count];
    readFile >> passWord[count];
    readFile >> accountBalance[count];
    count++;
 }
    //ask for username/pw
    string fName, lName, pwd;
    double accountbalance;
    bool exists = false;

 do
 {
    cout <<"Enter First Name: ";
    cin >> fName;
    cout <<"Enter Last Name: ";
    cin >>lName;
    cout <<"Enter Password: ";
    cin >> pwd;

    for (int i=0; i<sizeLimit; i++)
    {
        if (firstName[i] == fName)
        {
            if (lastName[i] == lName)
            {
                if (passWord[i] == pwd)
                {
                    exists = true;
                    accountbalance = accountBalance[i];
                }
            }
        }
    }
 }
 while (exists == false);
    //if correct display menu
    WelcomeMenu();
    cin >> userAction;
    //while login is valid (true)
    while (userAction != 'q')
    {


        if (userAction == 'D' || userAction == 'd')
        {
            userChoiceDeposite(accountbalance);
        }
        else if (userAction == 'W' || userAction == 'w')
        {
            userChoiceWithdraw(accountbalance);
        }
        else if (userAction == 'V' || userAction == 'v')
        {
            userChoiceView(accountbalance);
        }
        else if (userAction == 'P' || userAction == 'p')
        {
            printReceipt();
            return 0;
        }
        else
        {
            cout <<"Have a nice Day" <<endl;
            return 0;
        }
        Menu();
        cin >> userAction;


    }
}

else
{
    cout <<"Input Error..." <<endl;
}


return 0;
}


//welcome menu display function
void WelcomeMenu()
{

cout <<"Welcome to your account " <<endl;
cout <<endl;
cout <<"[D/d] Deposit Money" <<endl;
cout <<"[W/w] Withdraw Money" <<endl;
cout <<"[V/v] View Account Balance" <<endl;
cout <<"[Q/q] Quit" <<endl;

}
//function after action was taken (add print option)
void Menu()
{
cout <<endl;
cout <<"[D/d] Deposit Money" <<endl;
cout <<"[W/w] Withdraw Money" <<endl;
cout <<"[V/v] View Account Balance" <<endl;
cout <<"[P/p] Print Receipt and quit" <<endl;
cout <<"[Q/q] Quit" <<endl;

}
//deposit function
void userChoiceDeposite(double accountbalance)
{

int depositMoney;
cout <<"Enter the ammount of money you want to deposit. Max $10000"         <<endl;
cin >> depositMoney;

if ((depositMoney > 0) && (depositMoney <= 10000))
{
    accountbalance = accountbalance + depositMoney;
    ofstream saveAction("Receipt.txt", ios_base::app);
    saveAction << "You made a deposit of $" <<depositMoney <<endl;
    saveAction.close();

}
else
{
    cout <<"Incorrect ammount" <<endl;
    return userChoiceDeposite(1);
}

}
//withdraw function
void userChoiceWithdraw(double accountbalance)
{
int withdrawMoney;
cout <<"Enter the ammount of $ you want to withdraw:";
cin >> withdrawMoney;

if (accountbalance < withdrawMoney)
{
    cout <<"You dont have that much money"<<endl;
    return userChoiceWithdraw(1);
}
else
{
    accountbalance = accountbalance - withdrawMoney;
    ofstream saveAction("Receipt.txt", ios_base::app);
    saveAction << "You withdrew $" <<withdrawMoney <<endl;
    saveAction.close();
}
}
//view function
void userChoiceView(double accountbalance)
{
cout <<"Your account balance is $" <<accountbalance <<endl;
ofstream saveAction("Receipt.txt", ios_base::app);
saveAction << "You viewed your account balance" <<endl;
saveAction.close();


}
//print receipt function
void printReceipt()
{
ofstream saveAction("Receipt.txt", ios_base::app);
saveAction << "" <<endl;
saveAction << "" <<endl;
saveAction << "" <<endl;
saveAction << "Thank you! Come again!" <<endl;
saveAction.close();
}
#包括
#包括
#包括
#包括
使用名称空间std;
void WelcomeMenu();
无效菜单();
作废用户选择存储(双倍账户余额);
作废用户选择取款(双倍账户余额);
作废用户选择视图(双倍账户余额);
作废打印收据();
int main()
{
//从以前的交易中清除receive.txt
流clearFile(“Receipt.txt”);
clearFile.close();
//声明变量
字符串用户输入;
字符用户行为;
//提示用户输入、启动程序或退出
会计科目余额[计数];
计数++;
}
//询问用户名/pw
字符串fName,lName,pwd;
双重账户余额;
bool exists=false;
做
{
cout fName;
名称;
cout-pwd;
对于(inti=0;i>userAction;
//登录有效时(true)
while(userAction!=“q”)
{
if(userAction='D'| | userAction=='D')
{
userChoiceDeposite(账户余额);
}
else if(userAction='W'| | userAction=='W')
{
用户选择取款(账户余额);
}
else if(userAction='V'| | userAction=='V')
{
用户选择视图(账户余额);
}
else if(userAction=='P'| | userAction=='P')
{
打印收据();
返回0;
}
其他的
{

cout您只更改传递到函数中的值(因此不会更改函数外部的accountbalance)。对于需要更新accountbalance的方法,您需要:

  • 参照
  • 创建一个全局变量
  • 使用返回值更新帐户余额

试一下其中的一个。< /P>相关/ DUPE:也值得阅读:考虑替换<代码>(Read Fixe>FrestNoth[Cal])> LSTNEST[计数] >密码[计数] > ActualStale[计数] {{C++};}。

这利用了
>
返回对输入流的引用,从而允许IO链接和可能的重复