Простейшее меню для консольной программы на С++
Мда, оказалось актуальны такие интерфейсики-то при изучении Си, ведь разбирать что-то из этих исходников - попросту долго и не нужно сегодня... а если классов и визуальных сред ещё не учили, но обходиться голой командной строкой уже не хочется (скажем, в курсовом), то как-то так:
Пришлось потратить традиционные "полчаса для себя" вот на что :(
Подробнее и скачать - на странице статьи
Ну а без нестандартной conio.h
и цветовых излишеств можно сделать, например, так:
/* Создать пустой проект C++, меню Проект - Добавить новый элемент, выбрать "Файл C++ (.cpp)" */ #include <iostream> #include <cstdlib> #include <windows.h> typedef void (*Menu_Processing_Function_Pointer)(void); struct Menu_Option { char choice; char const* p_selection_text; Menu_Processing_Function_Pointer p_processing_function; }; void Process_Selection_One() { std::cout << "Выполнено действие 1"; } void Process_Selection_Two() { std::cout << "Выполнено действие 2"; } void Process_Selection_Three() { exit(0); } static const Menu_Option main_menu[] = { {'1', "Пункт 1", Process_Selection_One}, {'2', "Пункт 2", Process_Selection_Two}, {'3', "Выход", Process_Selection_Three}, }; static const size_t quantity_selections = sizeof(main_menu) / sizeof(main_menu[0]); int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); static const char* menu_title = (const char*)"\n\ ------------------------------\n\ Главное меню\n\ ------------------------------\n"; do { std::cout << menu_title; for (size_t i = 0; i < quantity_selections; i++) { std::cout << main_menu[i].choice << ". " << main_menu[i].p_selection_text << "\n"; } std::cout << "Выберите действие: "; char choice; std::cin >> choice; std::cin.clear(); std::cin.ignore(100, '\n'); for (size_t i = 0; i < quantity_selections; ++i) { if (choice == main_menu[i].choice) { Menu_Processing_Function_Pointer p_function = main_menu[i].p_processing_function; (p_function)(); break; } } } while (1); }
28.10.2012, 22:08 [12656 просмотров]