所以我正在使用数据结构创建一个简单的控制台项目,但是我想知道哪种方法最适合实现控制台菜单,我想知道什么是最佳实践,这是我的实际菜单
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上的大量资源。
答案 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);
}
只要您没有选择结束编程,它就不会结束并且更加干净。
如果需要,可以用相同的方式制作子菜单。