Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/246: Рейтинг темы: голосов - 246, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить. Подскажите пожалуйста как это реализовать, с пояснениями, пожалуйста
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2010, 16:05
Ответы с готовыми решениями:

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

Вывод в консольном приложении
Всем доброго времени суток. Написал приложение выводящие через printf 5 строк с паузой в 1 сек. При обычном запуске всё работает хорошо....

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

36
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.11.2010, 16:07
Цитата Сообщение от cnipni Посмотреть сообщение
Каждый пункт в меню - программа
Тут не совсем понятно. Это должен быть самостоятельный екзешник? Да и еще, это консольный проект или GUI ?
0
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:12  [ТС]
нет, не самостоятельный. консольный
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.11.2010, 16:17
То есть вызов какой-то процедуры?
И что вы понимаете под "меню"?
0
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:28  [ТС]
например мне нужно выбрать, какую лабораторную запустить
0
7 / 7 / 0
Регистрация: 08.11.2010
Сообщений: 26
14.11.2010, 16:31
например так?
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
Заблокирован
14.11.2010, 16:36
kingskeeper,
думаю [TC] требуется автоматически формировать меню("нужно выбрать, какую лабораторную запустить ")
то-есть что типа того чтобы найти файл в каталоге. по каким-то его характеристикам(наверное имени) определить к какой лабораторной он относится и поместить его в меню.

Добавлено через 43 секунды
а может я не прав в любом случае,cnipni, проясните.
1
7 / 7 / 0
Регистрация: 08.11.2010
Сообщений: 26
14.11.2010, 16:38
Цитата Сообщение от cnipni Посмотреть сообщение
Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить.
Ну вот если судить по этому высказыванию,то даже такой кривоватый вариант, что у меня, должен подойти
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.11.2010, 16:39
Лучший ответ Сообщение было отмечено как решение

Решение

вот вам меню с запуском екзешников) только для древнего 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
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 16:47  [ТС]
Цитата Сообщение от rrrFer Посмотреть сообщение
kingskeeper,
то-есть что типа того чтобы найти файл в каталоге. по каким-то его характеристикам(наверное имени) определить к какой лабораторной он относится и поместить его в меню.
это в идеале, но будет для меня слишком сложно. А вот каким образом, если все лабораторные в коде одной программы?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.11.2010, 16:51
оформить каждую лабораторную функцией которую и запускать при выборе пункта меню

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

Не по теме:

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

1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.11.2010, 17:04
Если бы лабораторные были в виде екзешников, то можно было бы делать так:
C++
1
system("start LAB1.exe");
1
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 17:15  [ТС]
а если пробовать через 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
}
там где "оператор" можно выполнять не один оператор, а несколько?
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.11.2010, 17:18
сколко угодно до оператор break;

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

Добавлено через 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-выход
??
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.11.2010, 17:33
Цитата Сообщение от 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
2
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 17:37  [ТС]
из какого каталога функция system запускает экзешники? из того же, в котором сама находится?
0
Заблокирован
14.11.2010, 18:28
cnipni, и еще надо посмотреть перменную среды PATH
1
2 / 2 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 18:38  [ТС]
ув.rrrFer, подскажите, пожалуйста, как, например, будет выглядеть код меню из выбора 3ух строк:
1-выполнить л.р.№1
2-выполнить л.р.№2
3-выход
??
0
Заблокирован
14.11.2010, 18:52
cnipni, Kastaneda ведь написал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2010, 18:52
Помогаю со студенческими работами здесь

Вывод в консольном приложении
Мне надо после 19 вернуться на прежнюю строку. Что бы после 19 числа начали выводиться вверх ( по спирали, и что бы ничего не стиралось )....

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru