在 switch() 中更改数据,累积

changing datas inside switch(), accumulation

本文关键字:数据 累积 switch      更新时间:2023-10-16

>我正在做一个刺激 ATM 的项目,C++并且累加器遇到了一些麻烦,我的问题是:我使用 switch(这里是情况 1)来更改在包含 switch() 的函数中声明的 2 个变量的值,但是这些值仅在情况 1 内更改,并且它们将自己重置为原始值(如 const 声明), 因此,当我尝试打印支票并保存(在情况 3 和 4 中)时,它会打印出原始金额 (1000)。所以我不知道我在这里做错了什么。问题不在于金额,我尝试用数值替换金额,但仍然不起作用。请帮忙

int transactions()
{   
    double checking = 1000.00, saving = 1000.00;
    double amount;
    switch (inputRange(menu()))
    {
    case 1: system("cls");
            amount = getAmount("Enter an amount to transfer from checking to saving: ");
            checking -= amount; 
            saving += amount;
            cout << checking << " " << saving; // they only change inside case 1
            cout << "nTransaction completed! nnPress ENTER to return to main menu...";
            cin.ignore(99,'n');
            break;

更新***我已经明白了,伙计们,谢谢,只是忘记了&,这有效

   int transactions(double &checkBal, double &saveBal)
{       
    double amount;
    //set precision
    cout << fixed << showpoint << setprecision(2);
    switch (inputRange(menu()))
    {
    case 1: system("cls");
            checkingToSaving (getAmount("Enter an amount to transfer from checking to saving: "), checkBal, saveBal);
            cout << "nTransaction completed! nnPress ENTER to return to main menu...";
            cin.ignore(99,'n');
            break;

问题是checkingsaving只存在于对transactions()的一次调用期间。

当调用transactions()时,它们就会出现,被初始化,你的代码会改变它们,它们会在transactions()返回的那一刻消失。当再次调用该函数时,整个循环将重复。

这两个变量需要存在于函数之外(可能作为某个类的数据成员)。

声明一个"客户"类(带有名称、地址、储蓄、支票等成员)。 在"事务"之外创建实例,并将实例作为参数传入。

那个,或者DB。

对直接问题的一个粗略答案是使用静态变量:

int transactions()
{   
    static double checking = 1000.00;
    static double saving = 1000.00;
    .
    .

这种类型的方法只为您提供一个检查和保存的实例。 如果要扩展程序以具有多个帐户,则应考虑使用类实例来保存数据:

class Account{
    double checking;
    double saving;
public:
    int transactions();
};