21xrx.com
2024-11-22 11:45:28 Friday
登录
文章检索 我的文章 写文章
C++返回上一级菜单的实现方式
2023-06-24 04:19:59 深夜i     --     --
C++ 返回 上一级菜单 实现方式

在许多应用程序和游戏中,用户需要进入多级菜单以访问需要的选项。在C++编程中,需要实现一个可以让用户返回到上一个菜单的机制,以提高用户体验和交互性。

实现返回上一级菜单的方法可以通过使用栈来存储用户的操作历史。当用户进入新的子菜单时,程序可以将上一个菜单的标识存储到栈中。当用户请求返回上一个菜单时,程序可以从栈中弹出最近的标识,然后跳转到相应的菜单。

以下是一个C++程序示例,该程序演示了如何使用栈来实现返回上一级菜单的功能。


#include<iostream>

#include<stack>

using namespace std;

// 定义菜单标识

enum menu

  SUB_MENU_1;

int main() {

  // 初始化

  stack<menu> menuStack;

  menu currentMenu = MAIN_MENU;

  bool isRunning = true;

  // 循环检查用户输入

  while (isRunning) {

    // 显示当前菜单

    switch (currentMenu) {

    case MAIN_MENU:

      cout << "Main Menu:\n";

      cout << "1. Submenu 1\n";

      cout << "2. Submenu 2\n";

      cout << "3. Submenu 3\n";

      break;

    case SUB_MENU_1:

      cout << "Submenu 1:\n";

      cout << "1. Option 1\n";

      cout << "2. Option 2\n";

      break;

    case SUB_MENU_2:

      cout << "Submenu 2:\n";

      cout << "1. Option 1\n";

      cout << "2. Option 2\n";

      break;

    case SUB_MENU_3:

      cout << "Submenu 3:\n";

      cout << "1. Option 1\n";

      cout << "2. Option 2\n";

      break;

    default:

      break;

    }

    // 获取用户输入

    int userInput;

    cin >> userInput;

    // 处理用户输入

    switch (currentMenu) {

    case MAIN_MENU:

      if (userInput == 1) {

        // 进入子菜单1

        menuStack.push(currentMenu);

        currentMenu = SUB_MENU_1;

      }

      else if (userInput == 2) {

        // 进入子菜单2

        menuStack.push(currentMenu);

        currentMenu = SUB_MENU_2;

      }

      else if (userInput == 3) {

        // 进入子菜单3

        menuStack.push(currentMenu);

        currentMenu = SUB_MENU_3;

      }

      else {

        // 无效选项

        cout << "Invalid option!\n";

      }

      break;

    case SUB_MENU_1:

    case SUB_MENU_2:

    case SUB_MENU_3:

      if (userInput == 1) {

        // 处理选项1

        cout << "Processing Option 1...\n";

      }

      else if (userInput == 2) {

        // 处理选项2

        cout << "Processing Option 2...\n";

      }

      else if (userInput == 0 && !menuStack.empty()) {

        // 返回上一级菜单

        currentMenu = menuStack.top();

        menuStack.pop();

      }

      else {

        // 无效选项

        cout << "Invalid option!\n";

      }

      break;

    default:

      break;

    }

  }

  return 0;

}

在上面的示例中,程序使用枚举类型来定义菜单标识。当用户进入新的子菜单时,程序将当前菜单的标识压入栈中。当用户请求返回上一个菜单时,程序从栈中弹出最近的标识,并将当前菜单设置为弹出的标识。如果当前菜单是主菜单,则没有上一个菜单,程序会退出。当用户输入无效选项时,程序会提示用户并继续等待输入。

通过实现返回上一级菜单的机制,C++程序可以增强用户交互性和使用体验。用户可以方便地回到之前的菜单,而不必重新输入整个菜单序列。这对于大型应用程序和游戏来说特别有用,因为它们通常有许多层次的菜单。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复