C++ 从另一个菜单返回菜单?

C++ 从另一个菜单返回菜单?,c++,C++,我创建了一个菜单来调用不同的程序。我的第五个程序里面还有一个菜单,可以执行不同的功能 我想知道的是如何允许用户退出程序5并返回原始主菜单。看来我应该知道这个 下面是我的代码示例: 主菜单: int main() { while (true) { system("cls"); int option = menuOption(); switch (option) { case 1: Program1(); break; case 2: Program

我创建了一个菜单来调用不同的程序。我的第五个程序里面还有一个菜单,可以执行不同的功能

我想知道的是如何允许用户退出程序5并返回原始主菜单。看来我应该知道这个

下面是我的代码示例:

主菜单:

int main() {
while (true)
{
    system("cls");
    int option = menuOption();

    switch (option)
    {
    case 1: Program1(); break;
    case 2: Program2(); break;
    case 3: Program3(); break;
    case 4: Program4(); break;
    case 5: Program5(); break;
    default: return 0;
    }
    system("pause");
}
return 0;
}
程序5菜单:

void Program5() {
int score, selection;
string player;

while (true)
{
    system("cls");
    cout << "\n\t   Menu\n\t==========\n";
    cout << "1. Add a player and score\n";
    cout << "2. Show top 10 players & scores\n";
    cout << "3. Search for a player\n";
    cout << "4. Remove a player\n";
    cout << "5. Exit to main menu\n";
    cout << "\t==========\n";
    cout << "Option: \n";
    cin >> selection;
    cout << endl;

    switch (selection)
    {
    case 1:
        //Doesn't matter
    case 2:
        //Doesn't matter
    case 3:
        //Doesn't matter
    case 4:
        //Doesn't matter
    case 5:
        return;
        break;
    default: exit(1);
    }
    system("pause");
}
}
void程序5(){
int评分,选择;
弦乐演奏者;
while(true)
{
系统(“cls”);

cout通过返回,可以返回main。例如,以下代码:

#include <iostream>

using namespace std;

void Program1(){

}

void Program2(){

}

void Program3(){

}

void Program4(){

}

void Program5(){
    int score, selection;
    string player;

    while (true)
    {
        system("cls");
        cout << "\n\t   Menu\n\t==========\n";
        cout << "1. Add a player and score\n";
        cout << "2. Show top 10 players & scores\n";
        cout << "3. Search for a player\n";
        cout << "4. Remove a player\n";
        cout << "5. Exit to main menu\n";
        cout << "\t==========\n";
        cout << "Option: \n";
        cin >> selection;
        cout << endl;

        switch (selection)
        {
        case 1:
            //Doesn't matter
        case 2:
            //Doesn't matter
        case 3:
            //Doesn't matter
        case 4:
            //Doesn't matter
        case 5:
            return;
            break;
        default: exit(1);
        }
        system("pause");
    }
}

int main(){
    while(true){
        cout << "In main():\n";
        int option;
        cin >> option;

        switch (option)
        {
        case 1: Program1(); break;
        case 2: Program2(); break;
        case 3: Program3(); break;
        case 4: Program4(); break;
        case 5: Program5(); break;
        default: return 0;
        }
    }
}

您应该删除
系统(“暂停”);
语句和
默认值:退出(1);
语句。您不想退出程序。

之后,根据您的代码,它应该返回到
main
,并执行另一次while循环迭代,询问菜单选项。

对于初学者,从
main
Program5
函数中删除那些
系统(暂停)
调用。然后删除该
退出(1)
程序5
函数中的语句。之后代码应该可以工作。@selbie只是好奇。一般来说,没有默认值不是很明智吗?@sethFrias您不应该退出(1)如果用户的选择无效,而是通知他所做的选择无效,让他尝试again@sethFrias-对于是否需要
default
case语句或是最佳实践,没有硬性规定。这完全取决于您希望默认体验或代码路径是什么。@selbie啊,我明白了。另外,remov选择选项5后,暂停仍然不会重定向到主菜单。您的意思有点困惑。因此,它返回到主菜单,但不显示菜单?替换“主菜单中”使用菜单。我没有在主菜单中显示菜单,因此它不会显示。@sethFrias。当您从函数返回时,执行从调用函数的位置开始。因此,当您从程序5返回时,它会返回到开关盒的情况5。它会断开然后继续while循环
In main():
5


           Menu
        ==========
1. Add a player and score
2. Show top 10 players & scores
3. Search for a player
4. Remove a player
5. Exit to main menu
        ==========
Option: 
5

In main():