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

Создание меню в консольном приложении - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 163, средняя оценка - 4.72
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:05     Создание меню в консольном приложении #1
Здравствуйте! Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить. Подскажите пожалуйста как это реализовать, с пояснениями, пожалуйста
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 16:05     Создание меню в консольном приложении
Посмотрите здесь:

C++ Таймер в консольном приложении
Таблица в консольном приложении C++
Timer в консольном приложении C++
C++ Изображение в консольном приложении.
C++ Вывод в консольном приложении
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 16:07     Создание меню в консольном приложении #2
Цитата Сообщение от cnipni Посмотреть сообщение
Каждый пункт в меню - программа
Тут не совсем понятно. Это должен быть самостоятельный екзешник? Да и еще, это консольный проект или GUI ?
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:12  [ТС]     Создание меню в консольном приложении #3
нет, не самостоятельный. консольный
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 16:17     Создание меню в консольном приложении #4
То есть вызов какой-то процедуры?
И что вы понимаете под "меню"?
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:28  [ТС]     Создание меню в консольном приложении #5
например мне нужно выбрать, какую лабораторную запустить
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
14.11.2010, 16:31     Создание меню в консольном приложении #6
например так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
while (1)
{clrscr();
cout<<" 0 : Exit\n"
<<" *************************************************************\n"
<<" 1 :....... "
<<" 2 :........ "
<<" 3 : .........."
<<"You order:  ";
cin>>j;
if(cin.good())
switch(j)
{
case 0: cout<<"Program is canceled "; getch();return;
case 1: .....
case 2: .....
case 3: ......
default:cout<<"It is not this variant... please repeat\n";
}
else{cout<<"Please repeat"; getch(); cin.clear();
while(cin.get()!='\n') continue;
}
}
rrrFer
Заблокирован
14.11.2010, 16:36     Создание меню в консольном приложении #7
kingskeeper,
думаю [TC] требуется автоматически формировать меню("нужно выбрать, какую лабораторную запустить ")
то-есть что типа того чтобы найти файл в каталоге. по каким-то его характеристикам(наверное имени) определить к какой лабораторной он относится и поместить его в меню.

Добавлено через 43 секунды
а может я не прав в любом случае,cnipni, проясните.
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
14.11.2010, 16:38     Создание меню в консольном приложении #8
Цитата Сообщение от cnipni Посмотреть сообщение
Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить.
Ну вот если судить по этому высказыванию,то даже такой кривоватый вариант, что у меня, должен подойти
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.11.2010, 16:39     Создание меню в консольном приложении #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
вот вам меню с запуском екзешников) только для древнего Turbo C++ 3.1
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
#include <bios.h >
#include < conio.h >
#include < stdio.h >
#include < process.h>
#include < dos s.h>
void SOUND(int freq);  // звук
void OUTPUT(int p1,int p2,int p3,int p4,int p5);  //Вывод меню
void CLEAR();
int main(int argc, char *argv[])
{  int count=1, key;
   struct text_info ti;
   char buf[4096];
   gettextinfo(&ti);
   gettext(1,1,80,25,buf);
   _setcursortype(_NOCURSOR);
   while (count <= 5)
   {  if(bioskey(1)!=0) key = bioskey(0);
      window(10,6,70,19);
      textbackground(BLUE);
      clrscr();
      switch(count)
      {  case 1:   OUTPUT(0x4f,0x1f,0x1f,0x1f,0x1f);
           gotoxy(10,20);
           cprintf("Информация про автора программы");
           if(key==7181)  //про автора // ЕНТЕР
           {  CLEAR();
              cprintf("ТВ-92 л.р.№2");
           }
           break;
     case 2:   OUTPUT(0x1f,0x4f,0x1f,0x1f,0x1f);
           gotoxy(10,20);
           cprintf("Запуск лабораторной роботы №1");
           if(key==7181)  // лабораторная №1 // ЕНТЕР
           {  CLEAR();
              spawnl(P_WAIT," L1(DOCH).exe",NULL);
           }
           break;
     case 3:   OUTPUT(0x1f,0x1f,0x4f,0x1f,0x1f);
           gotoxy(10,20);
           cprintf("Запуск лабораторной роботы №2");
           if(key==7181)  // лабораторная №2 // ЕНТЕР
           {  CLEAR();
              spawnl(P_WAIT," L2(DOCH)","1", argv[1], NULL);
           }
           break;
     case 4:   OUTPUT(0x1f,0x1f,0x1f,0x4f,0x1f);
           gotoxy(10,20);
           cprintf("Справка о использовании программы");
           if(key==7181)  // справка // ЕНТЕР
           {
              CLEAR();
              cprintf("Для перемещения по меню используйте '%c' и '%c'.Для выбора пункта меню, выделете его и нажмите 'Enter'. Для выхода нажмите  'Esc'.", 24, 25);
           }
           break;
     case 5:   OUTPUT(0x1f,0x1f,0x1f,0x1f,0x4f);
           gotoxy(10,20);
           cprintf("Выход");
           if(key==7181) return 0;  //выход // ЕНТЕР
           break;
    default: break;
      }
      key = bioskey(0);
      if (key == 20480)   //клавиша вниз
      { SOUND(1760);
    if(count==5) count = 1;
    else count++;
      }
      if (key == 18432)   //клавиша вверх
      { SOUND(1760);
    if(count==1) count = 5;
    else count--;
      }
      if(key==283) return 0;  // выход по нажатию ESC
   }
   fflush(stdin);
   textmode(ti.currmode);
   textattr(ti.attribute);
   puttext(1,1,80,25,buf);
   return 0;
}
void SOUND(int freq)  // звук
   {  sound(freq);
      delay(10);
      nosound();
   }
void OUTPUT(int p1,int p2,int p3,int p4,int p5)  //Вывод меню
{  clrscr();
   textattr(p1);
   cprintf("Про автора\n\r");
   textattr(p2);
   cprintf("Лабораторная робота №1\n\r");
   textattr(p3);
   cprintf("Лабораторная робота №2\n\r");
   textattr(p4);
   cprintf("HELP\n\r");
   textattr(p5);
   cprintf("Выход");
   window(10,20,70,20);
   textattr(0x04f);
   clrscr();
}
void CLEAR()
{  window(10,6,70,20);
   textattr(0x0f);
   clrscr();
}
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:47  [ТС]     Создание меню в консольном приложении #10
Цитата Сообщение от rrrFer Посмотреть сообщение
kingskeeper,
то-есть что типа того чтобы найти файл в каталоге. по каким-то его характеристикам(наверное имени) определить к какой лабораторной он относится и поместить его в меню.
это в идеале, но будет для меня слишком сложно. А вот каким образом, если все лабораторные в коде одной программы?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.11.2010, 16:51     Создание меню в консольном приложении #11
оформить каждую лабораторную функцией которую и запускать при выборе пункта меню

Добавлено через 1 минуту

Не по теме:

но если вы в будущем программист, то рекомендую разобратся с запуском екзешников, почитать о функциях spawn и exec

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 17:04     Создание меню в консольном приложении #12
Если бы лабораторные были в виде екзешников, то можно было бы делать так:
C++
1
system("start LAB1.exe");
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 17:15  [ТС]     Создание меню в консольном приложении #13
а если пробовать через switch
C++
1
2
3
4
5
6
7
switch (a)
{
   case 0: оператор1;
   case 1: оператор2;
   case 2: оператор3;
   default (a>2): do smth
}
там где "оператор" можно выполнять не один оператор, а несколько?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 17:18     Создание меню в консольном приложении #14
сколко угодно до оператор break;

Добавлено через 1 минуту
C++
1
default (a>2): do smth
это вы от куда взяли?
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 17:30  [ТС]     Создание меню в консольном приложении #15
ой, это "делать что-то" чтобы не переключать раскладку написано..
не обращайте внимания

Добавлено через 5 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
Если бы лабораторные были в виде екзешников, то можно было бы делать так:
C++
1
system("start LAB1.exe");
а эта функция входит в состав какой библиотеки?
т.е. можно было бы написать
C++
1
2
3
4
5
6
switch (a)
{
   case 0: system("start LAB0.exe");
   case 1: system("start LAB1.exe");
   case 2: system("start LAB2.exe");
   default (a>2): printf("Нет такой л.р.");
????

Добавлено через 4 минуты
вы мне пишите сразу очень большие коды, в которых я не могу разобраться..а как, например, будет выглядеть меню из выбора 3ух строк:
1-выполнить л.р.№1
2-выполнить л.р.№2
3-выход
??
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 17:33     Создание меню в консольном приложении #16
Цитата Сообщение от cnipni Посмотреть сообщение
а эта функция входит в состав какой библиотеки?
stdlib.h, но можете не писать #include<stdlib.h>, компилятор ее включит.
т.е. можно было бы написать
C++
1
2
3
4
5
6
switch (a)
{
   case 0: system("start LAB0.exe");
   case 1: system("start LAB1.exe");
   case 2: system("start LAB2.exe");
   default (a>2): printf("Нет такой л.р.");
????
Да. Только писать (a>2) не нужно. И добавьте break; в каждом case
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 17:37  [ТС]     Создание меню в консольном приложении #17
из какого каталога функция system запускает экзешники? из того же, в котором сама находится?
rrrFer
Заблокирован
14.11.2010, 18:28     Создание меню в консольном приложении #18
cnipni, и еще надо посмотреть перменную среды PATH
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 18:38  [ТС]     Создание меню в консольном приложении #19
ув.rrrFer, подскажите, пожалуйста, как, например, будет выглядеть код меню из выбора 3ух строк:
1-выполнить л.р.№1
2-выполнить л.р.№2
3-выход
??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 18:52     Создание меню в консольном приложении
Еще ссылки по теме:

Графика в консольном приложении C++
Тетрис в консольном приложении C++
C++ Меню в консольном приложении

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

Или воспользуйтесь поиском по форуму:
rrrFer
Заблокирован
14.11.2010, 18:52     Создание меню в консольном приложении #20
cnipni, Kastaneda ведь написал
Yandex
Объявления
14.11.2010, 18:52     Создание меню в консольном приложении
Ответ Создать тему
Опции темы

Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru