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

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

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

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

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

Здравствуйте! Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить. Подскажите пожалуйста как это реализовать, с пояснениями, пожалуйста
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 19:12  [ТС]     Создание меню в консольном приложении #21
кастанеда написал с функцией switch, а как можно, чтобы строка выделялась нажатиями стрелок "вверх" и "вниз"?
rrrFer
Заблокирован
14.11.2010, 19:18     Создание меню в консольном приложении #22
cnipni,
замените функции вывода в коде Maxwe11, на функции запуска процессов.
например:
C++
1
2
 cprintf("Про автора\n\r"); //замените на:
system("start LAB0.exe");
Если я вас правильно понял
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 19:31     Создание меню в консольном приложении #23
подскажите, пожалуйста, как, например, будет выглядеть код меню из выбора 3ух строк:
1-выполнить л.р.№1
2-выполнить л.р.№2
3-выход
??
C++
1
2
3
4
5
6
7
8
9
10
11
12
cout<<"If you want start programm \"Kill all humans\", press 1"<<endl;
cout<<"If you want start programm \"Save all humans\", press 2"<<endl;
cout<<"If you are indifferent about the fate of humans, press 0"<<endl;
int H;
cin>>H;
 switch (H)
{
   case 0: exit(0);
   case 1: system("start Kill_all_humans.exe");break;
   case 2: system("start Save_all_humans.exe");break;
   default : printf("You are useless!");
}
Добавлено через 4 минуты
Цитата Сообщение от rrrFer Посмотреть сообщение
cnipni, и еще надо посмотреть перменную среды PATH
В данном случае достаточно, чтоб екзешник был в каталоге с программой

Цитата Сообщение от cnipni Посмотреть сообщение
кастанеда написал с функцией switch
Это не я писал.
rrrFer
Заблокирован
14.11.2010, 19:35     Создание меню в консольном приложении #24
Kastaneda,
В данном случае достаточно, чтоб екзешник был в каталоге с программой
про PATH я написал на случай если он захочет калькулятор, например, запустить чтоб не копировал в каталог программы.
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
14.11.2010, 19:42  [ТС]     Создание меню в консольном приложении #25
большое всем спасибо, сейчас буду разбираться
cnipni
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 19
08.12.2010, 18:13  [ТС]     Создание меню в консольном приложении #26
все равно программа не запускается с помощью "start LAB.exe"
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
08.12.2010, 19:22     Создание меню в консольном приложении #27
Попробуйте скомпилировать и выполнить вот это:
C++
1
2
3
4
5
#include<cstdlib>
int main(){
    system("start c:\\WINDOWS\\system32\\calc.exe");
    return 0;
}
Скажите потом, что у вас получилось.

P.S. опытным путем было выяснено, что GCC почему-то не выполняет этот код, хотя компилирует. Так что если у вас gcc (ну там или DEV C++ или Code Blocks) то возможно причина в этом.
rrrFer
Заблокирован
08.12.2010, 20:05     Создание меню в консольном приложении #28
Kastaneda,
обычно c:\\WINDOWS\\system32\\ записано в PATH, поэтому:
C++
1
2
3
4
5
#include<cstdlib>
int main(){
    system("start calc");
    return 0;
}
тоже работает.
Цитата Сообщение от Kastaneda Посмотреть сообщение
P.S. опытным путем было выяснено, что GCC почему-то не выполняет этот код, хотя компилирует.
Извиняюсь что придираюсь к словам, но вообще не понял что вы имели ввиду. GCC вообще не выполняет код, разве нет?
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
08.12.2010, 20:14     Создание меню в консольном приложении #29
Ну да, не правильно выразился)
Правильно так: программа, скомпилированная компилятором gcc, не запускает калькулятор, просто ни чего не происходит, хотя при компиляции ошибок не было, т.е. ф-цию system() он (компилятор) распознал.
rrrFer
08.12.2010, 20:24
  #30

Не по теме:

Kastaneda, если используете именно gcc(как вы пишите) то МБ cstdlib надо заменить на stdlib.h?
Как компилируете вообще?

Kastaneda
08.12.2010, 20:30
  #31

Не по теме:

Цитата Сообщение от rrrFer Посмотреть сообщение
Как компилируете вообще?
Код
g++ a.cpp
да не, дело не в этом, еслиб хедер cstdlib не был найден, то не скомпилировалось тогда вообще.

rrrFer
Заблокирован
08.12.2010, 21:34     Создание меню в консольном приложении #32
Цитата Сообщение от Kastaneda Посмотреть сообщение
g++ a.cpp
в результате разве не a.o получится?
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
09.12.2010, 14:17     Создание меню в консольном приложении #33

Не по теме:

Я под виндой в CygWin'е. Получается a.exe.



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

Не по теме:

Я проверил в Dev_C++ все нормально, просто причина наверно в том, что в CygWin'е не команды start, так, что на счет gcc я прогнал))

vhejhcle
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 8
08.10.2011, 21:38     Создание меню в консольном приложении #34
Здравствуйте.
у меня то же вопрос по теме. почему то не компелируется программа. вроде выписал из рабочей а свое что то сделать не получилось. и здесь упоминался данный вариант. глянте пожалуйста где ошибка?

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
#include <iostream>
//#include <fstream>
#include<stdlib.h>
using namespace std;
 
 
//int menu();
//int x,t;
void enter(), report();
int choice;
 
int main()
{
//-------------------------------------------------
          //int menu()
          int choice;
              //choice = menu()
          cout << "MENU";
          cout << "\n";
            cout << "0. vihod iz podprogrammi\n";
            cout << "1. generator chisl\n";
            cout << "2. Zapis v fail\n";
            cout << "\n viberite komandu: ";
            cin >> choice;
//------------------------------------------
        //int choice;
    //do 
    {
       // choice = menu(); // получаем команду, 
                         // выбраную пользователем
        switch(choice) {
        case 0: break;
        case 1: enter();
        break;
        case 2: report();
        break;
        default: cout << "Poprobuite eshe raz.\n\n";
 
        } //while(choice != 0);
        //return 0;
        }
        
//int menu()
       // {
 
            
            //return choice;
           // }
//----------------------------------- 
void enter()
            {
            int x,t;  
cout << "eto pervii 1 razdel menu\n";
}
//------------------------------------ 
void report()
            {
            int x,t;  
cout << "eto vtoroi 2 razdel menu\n";
}
//------------------------------------- 
        cout << "\n";
        system("PAUSE");
        //cout << "\a";
        return EXIT_SUCCESS;  
}
Закоментированый код это то что осталось от рабочей программы. оставил специально, так как не понял. правда меню немного отличается от выводимого сообщения, это я упростил что бы разобраться в главном. не плохо было бы еще добавить выход из подпрограммы (возврат в меню) но я такого еще не встречал.

 Комментарий модератора 
Используйте теги форматирования кода!
Axiles1305
0 / 0 / 0
Регистрация: 21.07.2011
Сообщений: 20
08.10.2011, 21:49     Создание меню в консольном приложении #35
такая подойдет


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
#include <iostream>
#include <conio.h>
using namespace std;
void f1();
void f2();
void f3();
void f4();
void main(){
    setlocale(LC_ALL, "RUS");
    int key=0, index=0;
    const int size=4;
    char * menu [size]={"Пункт1","Пункт2","Пункт3","Пункт4"};
    for (;key!=27;){
        system("cls");
        for (int i=0;i<size;i++)
            if (index==i)
                cout<<(char)26<<menu[i]<<"\n";
            else
                cout<<" "<<menu[i]<<"\n";
        key=getch();
        if(key==224||key==0)
            key=getch();
        switch(key){
        case 72:
            if (index>0)
                index--;
            else
                index=size-1;
            break;
        case 80:
            if (index<size-1)
                index++;
            else
                index=0;
            break;
        case 13:
            switch (index){
            case 0: f1(); break;
                case 1: f2(); break;
                    case 2: f3(); break;
                        case 3: f4(); break;
                            case 4: cout<<"Выход\n";
                            key=27; break;
            }
            system("pause");
        }
    }
}
void f1(){
    cout<<"Выбран Пунк1\n";
}
void f2(){
    cout<<"Выбран Пунк2\n";
}
void f3(){
    cout<<"Выбран Пунк3\n";
}
void f4(){
    cout<<"Выбран Пунк4\n";
}
 Комментарий модератора 
Используйте теги форматирования кода!
vhejhcle
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 8
09.10.2011, 18:04     Создание меню в консольном приложении #36
почему то Dev-C++ b вилдер 6 выкидывает ошибку. билдер указывает на место смайла.

Добавлено через 18 часов 10 минут
после форматирования и смаил пропал. так и думал что в месть смайла что то длжно быть. вау СПАСИБО!!! чудо меню. я такого не встречал еще. со стрелочкой. :-)
СПАСИБО!!!

Добавлено через 1 час 46 минут
может как то мою пролграмму доработать можно? у меня расширить (добавить пункт) вашу не получилось. да и сам не разобрася. в основе все равно ведь
switch(choice){
case 0: break;
.........
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 22:46     Создание меню в консольном приложении
Еще ссылки по теме:
Вывод в консольном приложении C++
Графика в консольном приложении VS C++
Timer в консольном приложении C++
C++ Изображение в консольном приложении.
CAsyncSocket в консольном приложении C++

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

Или воспользуйтесь поиском по форуму:
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
16.04.2013, 22:46     Создание меню в консольном приложении #37
помогите написать консольную менюху типо этой
Миниатюры
Создание меню в консольном приложении  
Yandex
Объявления
16.04.2013, 22:46     Создание меню в консольном приложении
Ответ Создать тему
Опции темы

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