Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 14.07.2019, 02:18   #1
Anonymous4722
 
Аватар для Anonymous4722
 
Регистрация: 28.03.2013
Сообщений: 4
По умолчанию Создание меню на Си++ (консольное) есть наработки

Нужно создать меню, допустим: 1. Выбрать действие: 1.1 ввести число или строку, потом результат ввода строки или числа записать в файл. Примерно так надо сделать. Задание ниже:

Я сделал заготовки, но не пойму, как реализовать само меню и самое сложное это записать потом результат в файл. Я искал в интернете примеры и не мог найти. И еще, очень желательно вместо массива использовать векторы, которые мы еще не проходили.

Разработать классы: "Пункт меню", "Меню". Меню содержит массив указателей на пункты меню (агрегация).
Необходимо создать несколько пунктов меню, разместить их в меню.
Вывести меню (позволяет выбрать пункт и выполнить).
Реализовать сохранение всей структуры объектов на диск и чтение всей структуры объектов с диска. При запуске программы считывать с диска - и создавать все объекты, и отображать получившееся меню.


Код:
#include "pch.h"
#include <iostream>
#include <string>
#include <Windows.h>
#include <typeinfo>
#include <vector>
using namespace std;
const char n = '\n';
 
class menu_item;
class menu;
class user_int;
 
void act()
{
    cout << n << "hi" << n;
}
 
class user_int
{
public:
    user_int();
    ~user_int();
    void add(menu_item item);
    void addMenu1(menu_item item); 
    void showMenu1();
 
private:
    vector<menu_item> items;
    menu *m1, *m2;
 
};
 
class menu_item
{
public:
    menu_item(string title, void(*actoin)())
        :title(title), action(action) {}
    void print()
    {
        cout << title << n;
    }
 
    void execute()
    {
        action();
    }
 
private:
    string title;
    void(*action)();
};
 
class menu
{
public:
    menu(string titile)
        :title(title) {}
    void add(menu_item* item_ptr)
    {
        items.push_back(item_ptr); // чтобы добавить 
    }
 
    void show() // она не реализована
    {
        for (size_t i = 0; i < items.size(); i++)
        {
            cout << items[i] << n;
        }
    }
private:
    string title;
    vector<menu_item*> items;
};
 
user_int::user_int()
{
    // todo
 
}
 
user_int::~user_int()
{
    // todo
}
 
void user_int::add(menu_item item)
{
    items.push_back(item);
    
}
 
void user_int::showMenu1()
{
    // todo
}
 
int main()
{
    setlocale(0, "");
 
    user_int ui;
    ui.add(menu_item("item 1", act));
}
Skype: Anonymous4722
ICQ: 220592937
e-mail: balashov_vadim@mail.ru
Anonymous4722 вне форума Ответить с цитированием
Старый 14.07.2019, 14:26   #2
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 534
По умолчанию

Здесь нечто похожее на Ваше задание:
Работа с файлом
https://www.programmersforum.ru/show...E0+switch+case

Или воспользуйтесь поиском форума:
Нажмите, на этом форуме, ссылку "Расширенный поиск". В поле "Ключевые слова:" введите фразу – "чтение запись файла switch case", или фраза "чтение файла". В поле выбора разделов форума "Поиск по разделам" выберите раздел "C++". Затем нажмите кнопку "Поиск". Найдется много тем с вариантами решения вопроса.
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 14.07.2019 в 14:29.
Desc вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание проекта. Нет в меню кнопки "Консольное приложение" ttn11 C# (си шарп) 2 24.01.2016 17:26
Часы(есть наработки) sllh_111 Помощь студентам 2 19.04.2010 17:04
Pascal, наработки есть. Otre4eHHbIu Помощь студентам 1 24.12.2009 09:43
Паскаль, массивы, наработки есть. Otre4eHHbIu Помощь студентам 3 12.05.2009 12:26