Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.81
coleso
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 4
#1

Консольное меню - C++

27.03.2012, 00:55. Просмотров 6071. Ответов 11
Метки нет (Все метки)

Здравствуйте кто может помочь с консольным меню. Расклад таков.
Верхнее меню должно состоять из 6 пунктов.
1) --> Ауди
---
---
---
2) --> BMW
---
---
---
3)--> Лада
У каждого меню должно быть подменю. И чтоб можно было перемещаться по меню как посредством клавиш так и цифрами. Но ещё при нажатии Enter чтоб открывалось подменю, Esc выходило в меню. Спасибо большое)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2012, 00:55     Консольное меню
Посмотрите здесь:

Консольное меню MVC - C++
С моего последнего проектика прошло не так уж много времени, а я вновь здесь и уже с новыми исходниками:) Снова паттерны и каркас MVC, и...

TextUserInterface меню(Консольное приложение) - C++
Здравствуйте, есть меню в котором 5 пунктов. В пункте 1 есть есть аналогичное подменю с такой же структурой. Проблема в том, что при...

Создать консольное меню с более чем 10-ю пунктами - C++
Есть такая проблема, нужно создать меню в консоле, где более 10 пунктов. Когда вводишь числа с 1-9 всё работает прекрасно, но начиная с 10,...

подскажите - консольное меню не реагирует на нажатие клавиш (case) - C++
вот код, mv 2008 компилируется без ошибок, но при выборе 1, 2, 3 или 4 в меню ничего происходит где косяк? #include "stdafx.h" ...

Консольное окно - C++
STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi)...

консольное окно - C++
Заранее извеняюсь за то что задаю тупой вопрос, как надо изменить размеры (т.е. высоту и ширину) консольного окна?? Если можно приведите...

LAN и консольное приложение - C++
Здравствуйте, заинтересовал такой вопрос: а можно ли написать 2 приложения на С++ и между ними что-то типа чата.. 1й клиент отправляет...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
29.03.2012, 17:24     Консольное меню #2
coleso, вот простенько на плюсах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <conio.h>
using namespace std;
 
void p1(){cout<<"You choose punk 1\n";}
void p2(){cout<<"You choose punk 2\n";}
void p3(){cout<<"You choose punk 3\n";}
void p4(){cout<<"You choose punk 4\n";}
void p5(){cout<<"You choose punk 5\n";}
void p6(){cout<<"You choose punk 6\n";}
 
int main()
{
    char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
        cout<<"***MENU***\n";
        cout<<"1 - pynkt menu 1\n";
        cout<<"2 - pynkt menu 1\n";
        cout<<"3 - pynkt menu 1\n";
        cout<<"4 - pynkt menu 1\n";
        cout<<"5 - pynkt menu 1\n";
        cout<<"6 - pynkt menu 1\n";
        cout<<"ESC - vihod\n";
        //cout<<(ch_key = getch())<<endl;
        switch((ch_key = _getch()))
        {
        case '1':
            p1();
            break;
        case '2':
            p2();
            break;
        case '3':
            p3();
            break;
        case '4':
            p4();
            break;
        case '5':
            p5();
            break;
        case '6':
            p6();
            break;
        case 27:
            bMENU = false;
            cout<<"Exit from program\n";
            break;
        default:
            cout<<"Unsupported key was pressed\n";
            break;
        }
    }
    system("pause");
    return 0;
}
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
void p1(){cout<<"You choose punk 1\n";}
void p2(){cout<<"You choose punk 2\n";}
void p3(){cout<<"You choose punk 3\n";}
void p4(){cout<<"You choose punk 4\n";}
void p5(){cout<<"You choose punk 5\n";}
void p6(){cout<<"You choose punk 6\n";}
- это прототипы функций обработчиков соответствующих пунктов меню, в них можно писать все те команды которые предусмотрены для конкретного подпункта, я лишь ограничился выводом соответсвующей надписи, понятное дело в каждом p() можно накодить всё что угодно...
Миниатюры
Консольное меню  
riv94
64 / 64 / 11
Регистрация: 13.02.2011
Сообщений: 390
17.11.2012, 12:58     Консольное меню #3
-=ЮрА=-, а меня вот такой вопрос интересует! если я собираюсь строит многоуровневое меню, я могу его реализовать через switch второй, к примеру, вложенный в один из case'ов switch'а первого?) так же с помощью бесконечного цикла и т.д.
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
17.11.2012, 13:33     Консольное меню #4
riv94, можно, почему нет? Я так в курсаче делал)
riv94
64 / 64 / 11
Регистрация: 13.02.2011
Сообщений: 390
17.11.2012, 13:53     Консольное меню #5
!Андрей!, дело в том, что я сейчас как раз пишу курсач на эту тему ну раз уж вы тут просвещены, то не подмкажете ли, можно ли здесь как-то прописать так, чтоб перемещаться по иерархической структуре меню и в обратном направлении... т.е. с нижнего уровня, ворачиваться на верхний!
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2012, 16:10     Консольное меню #6
riv94, думаю ты это ищешь Меню со вставкой
riv94
64 / 64 / 11
Регистрация: 13.02.2011
Сообщений: 390
20.11.2012, 01:47     Консольное меню #7
все уже реализовал как switch в switch
selo4404
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 11
20.11.2012, 04:47     Консольное меню #8
Вот еще вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "conio.h"
#include "time.h"
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    int i, i1;
    cout<<""<<endl;
    cout<<""<<endl;
    cout<<""<<endl;
    cout<<""<<endl;
    cout<<""<<endl;
    cout<<""<<endl;
    cin>>i;
    if (i==1)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    if (i==2)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    if (i==2)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    if (i==3)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    if (i==4)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    if (i==5)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    if (i==6)
    {
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cin>>i1;
        if (i1==1)
        {
 
        }
        if (i1==2)
        {
 
        }
    }
    return 0;
}
-=ЮрА=-
20.11.2012, 13:14
  #9

Не по теме:

selo4404, вариант не плох для начинающего, а так тихий ужастик...

riv94
64 / 64 / 11
Регистрация: 13.02.2011
Сообщений: 390
23.11.2012, 21:46     Консольное меню #10
selo4404, вариант довольно хорош)) но тут такое дело, что если выбрал один пункт, то наверное уже вряд ли ты сможешь его снова выбрать, т.к. прога уже прошла этот шаг... да и вернуться в предыдущее меню невозможно))как сдам свой курсач - выброшу его сюда))
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
23.11.2012, 22:58     Консольное меню #11
Исходники : Вывод дерева в виде иерархий папок

Класс расположенный в отдельном юните
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <string>
#include <vector>
#include <iostream>
//-----------------------------------------------------------------------------
namespace my
{
struct console_menu
{
  console_menu* parent;
  std::string name;
  std::vector<console_menu*> items;
  //---------------------------------
  console_menu(std::string name,console_menu* parent=NULL)
    {
    this->name=name;
    this->parent=parent;
    }
  //---------------------------------
  ~console_menu()
    {
    std::cout<<"destroy  "<<name<<std::endl;
    for(unsigned i=0;i<items.size();i++)
       if(items[i]) delete items[i];
    }
  //---------------------------------
  console_menu* add_item(std::string item_name)
   {
   console_menu* new_item= new console_menu(item_name,this);
   items.push_back(new_item);
   return  new_item;
   }
  //---------------------------------
  void show()
   {
    for(unsigned i=0;i<items.size();i++)   std::cout<<items[i]->name<<std::endl;
   }
 //---------------------------------
  std::string path()
   {
   std::string s=name;
   console_menu* pos=parent;
   for(;pos;) { s.insert(0,pos->name+"\/"); pos=pos->parent;}
   return s;
   }
};
};
//---------------------------------------------------------------------------
Использование

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using namespace std;
using namespace my;
//-------------------------------------------------
int main()
{
 console_menu* main_menu= new console_menu("main_menu");
 
 main_menu->add_item("0. item0");
 main_menu->add_item("1. item1");
 main_menu->add_item("2. item2");
 main_menu->add_item("3. item3");
 
 main_menu->items[1]->add_item("0 sub item 1.1");
 
    main_menu->items[1]->items[0]->add_item("0 sub sub item 1.1.1");
 
 main_menu->items[1]->add_item("1 subitem 1.2");
 
 console_menu* current_menu;
 
 current_menu= main_menu;
 cout<<"\/"<<current_menu->path()<<endl;
 current_menu->show();
 
 char key;
 unsigned index;
 string str;
 
 for(;;)
   {
    cin>>str;
    key=str[0];
 
    if(isdigit(key))
     {
     index= atoi(str.c_str());
 
     if(index<current_menu->items.size())
        {
        current_menu= current_menu->items[index];
        cout<<"\/"<<current_menu->path()<<endl;
        current_menu->show();
        }
     else cerr<<"error"<<endl;
     }
    else
     if(str=="exit"||str=="quit")  break;
     else
          if(str=="back" && current_menu->parent)
            {
            current_menu= current_menu->parent;
            cout<<current_menu->path()<<endl;
            current_menu->show();
            }
   }
delete  main_menu;
system("pause");
}
//---------------------------------------------------------------------------
Добавлено через 17 минут
back возврат в предыдущее меню
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 23:17     Консольное меню
Еще ссылки по теме:

Разработать консольное приложение - C++
Условие: Разработать консольное приложение для управления программными проектами Вся информация приложения хранится в трех файлах: ...

Консольное приложение. sizeof; - C++
Здравствуйте, хочу создать программу &quot;ConsoleAppliction&quot;, которая будет выводить в консоли либо 4, либо 2. (Иными словами будет говорить о...

Новое консольное окно - C++
Есть консольная программа, которая запускет другие консольные программы. так вот хотелось бы, чтобы для каждой программы открывалось...

Консольное приложение и MFC - C++
Пишу консольное приложение. Приложение дает возможность хранить, удалять и добавлять объекты класса (все через консольное меню). Необходимо...

Консольное приложение C++ не работает - C++
Всем доброго времени суток. вот начал изучать язык C++. попробовал написать простейшее консольное приложение в Visual studio 2012....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
selo4404
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 11
23.11.2012, 23:17     Консольное меню #12
Цитата Сообщение от riv94 Посмотреть сообщение
вариант довольно хорош)) но тут такое дело, что если выбрал один пункт, то наверное уже вряд ли ты сможешь его снова выбрать, т.к. прога уже прошла этот шаг... да и вернуться в предыдущее меню невозможно))как сдам свой курсач - выброшу его сюда))
а в чем проблема между 14 и 15 строчкой задаем еще 1 for который будет выполнять действие, например: "сколько примеров надо решить... получается примерно такая вещь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 #include "stdafx.h"
#include "iostream"
#include "math.h"
#include "conio.h"
#include "time.h"
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    double a, c=1, n, z;
    int i=1, ik=1;
    cout<<"Умножение."<<endl<<endl;
    cout<<"Введите колличество примеров: ";
    cin>>z;
    cout<<endl<<endl;
    for (ik; ik<z+1; ik++)
    {
    cout<<"Введите колличество множителей"<<endl;
    cout<<"Колличество = ";
    cin>>n;
    cout<<endl;
    for (i; i<n+1; i++)
    {
        cout<<"Введите "<<i<<" множитель"<<endl;
        cout<<"Множитель равен ";
        cin>>a;
        if (a==0)
        {
            cout<<"Вы ввели 0. При умножении на результат всегда будет 0"<<endl<<endl;
            system("CLS");
            break;
        }
        cout<<endl;
        c=c*a;
    
        cout<<"После "<<i<<" множителя мы имеем результат: "<<c<<endl;
    }
    }
    if (c!=0)
    {
    cout<<endl<<endl<<"Ответ: "<<c<<endl<<endl<<"Для выхода из программы нажмите 'Enter'";
    }
    if (c==0)
        {
            cout<<"Вы ввели 0. При умножении на результат всегда будет 0"<<endl<<endl<<"Для выхода из программы нажмите 'Enter'";
        }
    
    _getch();
    return 0;
}
все в твоих руках, но главное фантазия и Великий FOR)))))))))
Yandex
Объявления
23.11.2012, 23:17     Консольное меню
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru