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链接和可能的重复