21xrx.com
2024-12-22 22:37:18 Sunday
登录
文章检索 我的文章 写文章
C++中如何返回上级菜单
2023-06-28 14:10:59 深夜i     --     --
返回 上级菜单 C++

在C++编程中,我们经常需要设计菜单来完成各种功能。但是,当用户进入二级或更深层次的菜单时,想要返回到上一级菜单有时候会变得比较复杂。在本文中,我们将介绍一些C++中如何返回上级菜单的方法。

1.使用递归函数

递归函数是一种在程序执行过程中调用自身的函数。通过在函数调用时传递当前菜单项的指针,我们可以在下一级菜单中仍然调用同一个函数,以便用户能够回到上一级菜单。下面是一个示例代码:


#include <iostream>

using namespace std;

void menu1() {

  cout << "Menu 1" << endl;

  cout << "1. Submenu 1" << endl;

  cout << "2. Submenu 2" << endl;

  cout << "3. Exit" << endl;

  int choice;

  cin >> choice;

  switch(choice) {

    case 1:

      menu1();

      break;

    case 2:

      cout << "Submenu 2" << endl;

      break;

    case 3:

      cout << "Goodbye!" << endl;

      exit(0);

      break;

    default:

      cout << "Invalid choice" << endl;

  }

}

int main() {

  menu1();

  return 0;

}

在上面的代码中,我们定义了一个名为menu1()的函数,它包含3个菜单项:Submenu 1,Submenu 2和Exit。如果用户选择了第一个菜单项,将会调用menu1()函数,此时用户可以继续选择子菜单。如果用户选择了Exit选项,则程序将退出运行,否则,用户将始终处于当前菜单中。

2.压栈和出栈

另一种实现返回上级菜单的方式是使用栈。当用户进入下一级菜单时,我们将当前菜单的指针压入栈中,当用户想要返回上一级菜单时,我们从栈中弹出上级菜单的指针。

下面是一个简单的示例代码:


#include <iostream>

#include <stack>

using namespace std;

void menu1(stack<void (*)()>& s) {

  cout << "Menu 1" << endl;

  cout << "1. Submenu 1" << endl;

  cout << "2. Submenu 2" << endl;

  cout << "3. Exit" << endl;

  int choice;

  cin >> choice;

  switch(choice) {

    case 1:

      s.push(menu1);

      menu1(s);

      break;

    case 2:

      cout << "Submenu 2" << endl;

      break;

    case 3:

      cout << "Goodbye!" << endl;

      exit(0);

      break;

    default:

      cout << "Invalid choice" << endl;

  }

  if (!s.empty()) {

    s.top()();

    s.pop();

  }

}

int main() {

  stack<void (*)()> s;

  menu1(s);

  return 0;

}

在上面的代码中,我们使用了一个名为stack 的栈来存储菜单指针。当用户进入子菜单时,我们将当前菜单的指针压入栈中,并调用 menu1(s) 函数,以便用户可以选择子菜单。当用户想要返回上一级菜单时,我们从栈中弹出菜单指针,并调用该指针指向的函数。

总之,无论是使用递归函数还是栈,我们都可以在C++中方便地返回上级菜单。这些方法可以帮助我们设计出更加用户友好的菜单,使用户可以轻松地浏览和使用各种功能。

  
  

评论区

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