创建控制台菜单C ++的最佳方法

时间:2018-07-13 15:27:41

标签: c++

所以我正在使用数据结构创建一个简单的控制台项目,但是我想知道哪种方法最适合实现控制台菜单,我想知道什么是最佳实践,这是我的实际菜单

void MainMenu(){
  while(1) 
{
    int opt;

    cout << endl << "----------------------------" << endl;
    cout << endl << "      Main Menu   " << endl;
    cout << endl << "----------------------------" << endl;

    cin >> opt;
    cout << "\n" << endl;

    switch (opt) 
    {
        case 1:
            SubMenu();
            break;
        case 2:
            //Code
            break;
        case 0:
            exit(1);
        default:
            break;
    }
}

一个子菜单示例就是这个

void Submenu()
{
bool exit=true;
while(exit) 
{
   int opt;

   cout << endl << "----------------------------" << endl;
   cout << endl << "      SubMenu   " << endl;
   cout << endl << "----------------------------" << endl;
   cin >> opt;


    switch (opt) 
        {
          case 1:
            //Code
            break;
          case 0:
                exit = false;
        }

}

我想知道这是实现菜单的好方法还是有更好的方法,我也想知道在哪里可以找到书籍或文档,以便以正确的方式编写代码我的程序不要使用PC上的大量资源。

2 个答案:

答案 0 :(得分:2)

恕我直言,表格驱动的控制台菜单非常好。
它们允许常量数据(可以存储在只读存储器中)。
它们是数据驱动的(您无需添加代码即可添加更多选项)。
“引擎”或驱动程序只能测试一次;如果使用相同的结构,则可以使用一个功能来处理许多菜单。

Sub Test2()
'This will load a webpage in IE
Dim i As Long
Dim URL As String
Dim IE As Object

'Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")

'Set IE.Visible = True to make IE visible, or False for IE to run in the background
IE.Visible = False

'Define URL
URL = "https://script.google.com/macros/s/AKfycbxU2ZL39IdtMzQXu0OLJZz3shSOx1JNTCbe1_SCxunIimLJVqY/exec"

'Navigate to URL
IE.Navigate URL

' Wait while IE loading...
'IE ReadyState = 4 signifies the webpage has loaded (the first loop is set to avoid inadvertently skipping over the second loop)
Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until
MsgBox (IE.document.body.innerText)

'Unload IE
Set IE = Nothing
End Sub

当选择无效时,您必须实现循环。
以上是该技术的要点。

答案 1 :(得分:1)

我将使用其他循环然后切换大小写:

void MainMenu(){
    char coice='';
    while(coice !='#') 
    {
        int opt;

        cout << endl << "----------------------------" << endl;
        cout << endl << "      Main Menu   " << endl;
        cout << endl << "----------------------------" << endl;

        cin >> opt;
        cout << "\n" << endl;

        if(coice =='1') 
        {
            SubMenu();
        }
        if(coice =='2') 
        {
            //Code
        }
    }
    exit(1);
}

只要您没有选择结束编程,它就不会结束并且更加干净。

如果需要,可以用相同的方式制作子菜单。