Я пишу консольную программу для своей курсовой работы и задаюсь вопросом, как лучше ее структурировать, чтобы она была стабильной и эффективной.В настоящее время у меня есть
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int choice;
do
{
cout << "\E[H\E[2J" // Clear the console
<< "Main menu" << endl << endl
<< "Please select one of the following options by entering it's "
<< "number in the prompt below and pressing [ENTER]. "
<< endl << endl
<< "1. Pay my bill as a guest" << endl
<< "3. Log in" << endl
<< "2. Create an account" << endl
<< "4. Quit program" << endl;
cin >> choice;
switch (choice)
{
case 1: // Pay the bill as a guest to the system
case 2: // Log in to the system
case 3: // Create an account with the system
case 4: // Quit the program
default: // Prompt the user to choose again
}
} while !(default);
// Await user input to terminate the program
cout << "Please press [ENTER] to continue...";
cin.get();
return 0;
}
Целью приведенного выше кода является предоставление списка опций для выбора пользователя, с циклом do-while
, работающим вместе с оператором default
в switch
чтобы поймать любой неожиданный ввод.Каждый case
будет вызывать функцию, которая представляет другое меню со своим собственным списком опций, который будет структурирован с использованием того же метода do-while, switch
.Меня беспокоит то, что по мере роста моей программы число вызовов функций, вложенных в другие функции, будет увеличиваться, так что в конечном итоге я получу функцию, вызываемую изнутри функции, вызываемой из функции, и так далее.Это, очевидно, будет иметь серьезные последствия для удобства сопровождения программы: вызовы функций будут перемещаться все дальше и дальше от main()
, а выходные данные этих функций будут иметь запутанный путь вокруг программы.
Можно ли структурировать мою программу таким образом, чтобы как можно чаще возвращать выполнение к main()
, или описанная выше проблема является просто следствием такого рода программирования?
NB: Я задаю этот вопрос при том понимании, что определяемые пользователем функции должны быть вспомогательными для main()
, и что они должны выполнить задачу, прежде чем вернуть управление на main()
как можно раньше.,Я занимаюсь этим всего пару месяцев, поэтому, пожалуйста, потерпите мое невежество / недоразумение.Кроме того, игнорируйте любые возможные ошибки компилятора в коде, я еще не тестировал его, и он предоставляется только в качестве помощника в моем концептуальном вопросе.