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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 163, средняя оценка - 4.72
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
#1

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

14.11.2010, 16:05. Просмотров 23776. Ответов 36
Метки нет (Все метки)

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

Меню в консольном приложении - C++
есть ошибки не могу исправить #include <iostream> #include <iomanip> #include <ctime> #include <cstdlib> using namespace std; ...

Таблица в консольном приложении - C++
Здравствуйте. Помогите пожалуйста советом, как организовать таблицу в консольном приложении? Таблица состоит из n строк и 2 столбцов.

Timer в консольном приложении - C++
Доброе время суток! Подскажите пожалуйста, как в консольном приложении создать таймер, который бы срабатывал каждые n минут или в...

Изображение в консольном приложении. - C++
Помогите, пожалуйста, с загрузкой и отображением изображений формата bmp в консольном приложении C++. Очень надо! Заранее спасибо.

Ошибка в консольном приложении - C++
{ class Program { public struct Point { public int X; public int Y; ...

Графика в консольном приложении - C++
Помогите создать приблизительно такую штуку, которая будет высвечиваться при запуске консольной программы, и по нажатию на любую клавишу...

36
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
14.11.2010, 16:07 #2
Цитата Сообщение от cnipni Посмотреть сообщение
Каждый пункт в меню - программа
Тут не совсем понятно. Это должен быть самостоятельный екзешник? Да и еще, это консольный проект или GUI ?
0
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:12  [ТС] #3
нет, не самостоятельный. консольный
0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
14.11.2010, 16:17 #4
То есть вызов какой-то процедуры?
И что вы понимаете под "меню"?
0
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:28  [ТС] #5
например мне нужно выбрать, какую лабораторную запустить
0
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;
}
}
3
rrrFer
Заблокирован
14.11.2010, 16:36 #7
kingskeeper,
думаю [TC] требуется автоматически формировать меню("нужно выбрать, какую лабораторную запустить ")
то-есть что типа того чтобы найти файл в каталоге. по каким-то его характеристикам(наверное имени) определить к какой лабораторной он относится и поместить его в меню.

Добавлено через 43 секунды
а может я не прав в любом случае,cnipni, проясните.
1
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
14.11.2010, 16:38 #8
Цитата Сообщение от cnipni Посмотреть сообщение
Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить.
Ну вот если судить по этому высказыванию,то даже такой кривоватый вариант, что у меня, должен подойти
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 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();
}
4
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:47  [ТС] #10
Цитата Сообщение от rrrFer Посмотреть сообщение
kingskeeper,
то-есть что типа того чтобы найти файл в каталоге. по каким-то его характеристикам(наверное имени) определить к какой лабораторной он относится и поместить его в меню.
это в идеале, но будет для меня слишком сложно. А вот каким образом, если все лабораторные в коде одной программы?
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.11.2010, 16:51 #11
оформить каждую лабораторную функцией которую и запускать при выборе пункта меню

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

Не по теме:

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

1
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
14.11.2010, 17:04 #12
Если бы лабораторные были в виде екзешников, то можно было бы делать так:
C++
1
system("start LAB1.exe");
1
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
}
там где "оператор" можно выполнять не один оператор, а несколько?
0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
14.11.2010, 17:18 #14
сколко угодно до оператор break;

Добавлено через 1 минуту
C++
1
default (a>2): do smth
это вы от куда взяли?
1
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-выход
??
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 17:30
Привет! Вот еще темы с ответами:

Таймер в консольном приложении - C++
Подскажите, как сделать чтобы консольное приложение было постоянно запущено и раз в 1 минуту выполняло одну из функций? Добавлено...

WxWidgets - в консольном приложении - C++
Начал изучение библиотек wxWidgets в Code Blocks, столкнулся с проблемой компиляции, вроде все подключено,просто строку в консоль выводит а...

Графика в консольном приложении VS - C++
подскажите как построить систему координат X,Y. в консольном приложении.Какие модули следует подключать и порядок ввода вывода линий и...

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
14.11.2010, 17:30
Ответ Создать тему
Опции темы

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