0

このコードは、顧客の預金、残高の確認、口座からのお金の引き出しを処理する「仮想 ATM マシン」プログラムからのものです。お金を入金すると、入金されたことが表示されます..しかし...問題を述べる前にコードを次に示します。

double bankAccount::deposit()
{
      bankAccount b;

       double amt;

       system("cls");
       cout << " -----------------------------------------------------------------------  \n";
       cout << "|                              Customer Menu                            | \n";
       cout << " ----------------- ----------------- ----------------- -----------------  \n";

       cout << "\n\nYOUR CURRENT BALANCE: " << balance << endl;
       cout << "\nEnter amount to deposit: ";
       cin >> amt;

       balance = (balance + amt);

       cout << "\nAmount depositted successfully!" << endl;
       cout <<"\nYOUR CURRENT BALANCE: " << balance;

       getch();
       customer_actions();
       return balance;

}

「customer_actions()」は顧客向けのメイン メニューで、その画面に戻って残高を確認するオプションを選択すると、ゼロと表示されます。これは、値が前の関数から更新されなかったことを意味します。クラスファイルで構成されるヘッダーファイルは次のとおりです。

#ifndef bank
#define bank


using namespace std;


class bankAccount
{
    public:
        int accNo;
        int password;

        double balance;
        double withdrawamt;
        double depositamt;

        char name[20];
        char address[40];
        char username[10];

    public:

        double checkbalance();
        double deposit();
        double withdraw();


    public:
           bankAccount()
           {
              balance = 0; // Is this the reason?
           }    

};


#endif

プログラムがあるメニューから別のメニューに切り替わると、値がリセットされると思います。親愛なる皆さん、何か提案はありますか?

前もって感謝します!

CUSTOMER_ACTIONS:

int customer_actions()
    {
          bankAccount b;
          int cust_selection;
          system("cls");

   cout << " -----------------------------------------------------------------------  \n";
   cout << "|                              Customer Menu                            | \n";
   cout << " ----------------- ----------------- ----------------- -----------------  \n";
   cout << "                     Please Select option to continue:              \n" << endl << endl;

   cout << "1) Check balance    : Press 1" << endl;
   cout << "2) Withdraw Cash    : Press 2" << endl;
   cout << "3) Deposit Cash     : Press 3" << endl;
   cout << "4) Transfer Cash    : Press 4" << endl;
   cout << "5) Return home      : Press 5" << endl;
   cout << "\nEnter option: ";
   cin >> cust_selection;               


   switch(cust_selection)
   {
      case 1: b.checkbalance();   break;
      case 2: b.withdraw(); break;
      case 3: b.deposit(); break;
      case 4: break;
      case 5: main(); break;   
    }

}
4

2 に答える 2

1

あなたの問題(私が見ることができるものから)は、ユーザーが終了するまでメニューの変更を押し続けることができる無限ループを作成しようとしていることです。ただし、これについてはcustomer_actions()、deposit 関数内から呼び出します。

deposit外側のメソッドで無限ループを作成してから、を呼び出さずに から戻ってみてくださいcustomer_actions()

OP編集後

これを試して:

int main(...)
{
     int result = 0;
     while(result == 0)
     {
         result = customer_actions();
     }
}

次に、switch ステートメントを次のcustomer_actionsように変更します。

switch(cust_selection)
{
      case 1: b.checkbalance();   break;
      case 2: b.withdraw(); break;
      case 3: b.deposit(); break;
      case 4: break;
      case 5: return 1; // This is the change
}
return 0;
于 2013-05-23T11:04:44.837 に答える