Переменная
double balance
не может быть передана как ссылка.Он делает копию, поэтому, когда вы пытаетесь манипулировать ею, это не повлияет на оригинал, который вы передаете в качестве аргумента.Вам необходимо обновить значение, используя возвращаемое значение, которое есть в функции.
Для того, чтобы оно работало, вы должны выполнить:
case 4: //deposit money
// note here that you need to update the balance variable using the return value that
// you put in the function
balance = acc.deposit(balance, amount);
break;
Примечание : Ваш дизайн, отделяющий баланс от класса Account, не идеален для ответа @ Psyrus.Вы должны сохранить баланс как часть класса Account.Причина в том, что баланс является частью учетной записи, и если ваша программа будет обрабатывать несколько учетных записей (только для примера), отделение переменного баланса от учетной записи создаст головную боль при обслуживании (представьте, что с двумя экземплярами учетной записи вы будетеиметь переменные balance1 и balance2 (или как вы это называете) в MyProgram2, главном приложении).Хотя я и объяснил причину вашей проблемы с передачей переменных, вы должны рефакторинг вашего кода, следуя предложению @Psyrus.