//Меню
        private void TypeQueries()
        {
            string[] queriesMenu =
            { "Запросы к типу Monarchy", "Запросы к типу Kingdom", "Запросы к типу Republic", "Назад" };
            while (true)
            {
                var sw = LiveMenu.Menu(0, "Выберите нужную опцию:", queriesMenu);
                switch (sw)
                {
                case 1:
                    Queries <Monarchy>();
                    break;

                case 2:
                    Queries <Kingdom>();
                    break;

                case 3:
                    Queries <Republic>();
                    break;

                case 4:
                    return;
                }
            }
        }
        public void Start()
        {
            string[] stackMenu =
            {
                "Создать коллекцию",                         "Добавить элемент",                      "Удалить элемент", "Выполнение запросов",
                "Клонирование коллекции.",                   "Сортировка коллекции и поиск элемента",
                "Вывод коллекции, с использованием foreach", "Назад"
            };
            var k = 6;

            while (true)
            {
                var sw = LiveMenu.Menu(k, "  Работа со словарем: ", stackMenu);
                switch (sw)
                {
                case 1:
                    CreateDictionary();
                    k = 0;
                    break;

                case 2:
                    Add();
                    break;

                case 3:
                    Delete(out k);
                    break;

                case 4:
                    TypeQueries();
                    break;

                case 5:
                    Clone();
                    break;

                case 6:
                    TypeFind();
                    break;

                case 7:
                    Output();
                    break;

                case 8:
                    return;
                }
            }
        }
        //Добавить объект
        private void Add()
        {
            string[] addMenu =
            { "Добавить монархию", "Добавить королевство", "Добавить республику", "Назад" };
            while (true)
            {
                var            sw = LiveMenu.Menu("Выберите действие:", addMenu);
                StateInterface state;
                switch (sw)
                {
                case 0:
                    Console.WriteLine("Введите монархию для добавления: ");
                    state = new Monarchy();
                    state.Input();
                    _states.Add(state.Return_Name() + " " + state.Return_GDP(), state);

                    Console.WriteLine("Объект успешно добавлен.\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 1:
                    Console.WriteLine("Введите королевство для добавления:");
                    state = new Kingdom();
                    state.Input();
                    _states.Add(state.Return_Name() + " " + state.Return_GDP(), state);

                    Console.WriteLine("Объект успешно добавлен.\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 2:
                    Console.WriteLine("Введите республику для добавления:");
                    state = new Republic();
                    state.Input();
                    _states.Add(state.Return_Name() + " " + state.Return_GDP(), state);

                    Console.WriteLine("Объект успешно добавлен.\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 3:
                    return;
                }
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            ArrayList STATE = new ArrayList();

            State[] states = new State[50];
            bool    ok     = true;

            while (ok)
            {
                int choice = LiveMenu.Menu(headlines[0], paragraphs);
                switch (choice)
                {
                case 0:                                                                     //Создание коллекции
                    states = CreateCollection();
                    Console.ReadLine();
                    break;

                case 1:                                                                     //Просмотр коллекции
                    if (states[0] != null)
                    {
                        OutputArray(states);
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.WriteLine("  Сначала необходимо создать коллекцию.");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write("\n  " + end);
                    }
                    Console.ReadLine();
                    break;

                case 2:                                                                      //Удаление объекта с заданным номером
                    if (states[0] != null)
                    {
                        DeleteElement(ref states);
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.WriteLine("  Сначала необходимо создать коллекцию.");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write("\n  " + end);
                    }
                    Console.ReadLine();
                    break;

                case 3:                                                                      //Добавление объекта
                    if (states[0] != null)
                    {
                        STATE  = Add(ref states);
                        states = (State[])STATE.ToArray(typeof(State));
                        //преобразуем коллекцию в массив элементов типа State
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.WriteLine("  Сначала необходимо создать коллекцию.");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write("\n  " + end);
                        Console.ReadLine();
                    }
                    break;

                case 4:                                                                      //Работа с запросами
                    int task = LiveMenu.Menu(headlines[0], requests);
                    switch (task)
                    {
                    case 0:                                                                  //Вывести количество объектов коллекции на данный момент
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("\n  Количество объектов в коллекции на данный момент: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write(State.counter);
                        Console.ReadLine();
                        break;

                    case 1:                                                                  //Поиск объекта в коллекции
                        if (states[0] == null)
                        {
                            Console.WriteLine();
                            Console.ForegroundColor = ConsoleColor.DarkRed;
                            Console.WriteLine("  Сначала необходимо создать коллекцию.");
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.Write("\n  " + end);
                            Console.ReadLine();
                        }
                        else
                        {
                            int sure = LiveMenu.Menu("  Коллекция будет отсортирована, вы уверены?", proof);
                            switch (sure)
                            {
                            case 0:
                                StateInterface[] StateSearch = states;
                                FindState(StateSearch);
                                break;

                            case 1:
                                break;
                            }
                        }
                        break;

                    case 2:                                                                   //Вывод республик
                        if (states[0] == null)
                        {
                            Console.WriteLine();
                            Console.ForegroundColor = ConsoleColor.DarkRed;
                            Console.WriteLine("  Сначала необходимо создать коллекцию.");
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.Write("\n  " + end);
                            Console.ReadLine();
                        }
                        else
                        {
                            int R_counter = 0;
                            for (int i = 0; i < states.Length; i++)
                            {
                                if (states[i].t == "парламентарная" || states[i].t == "президентская" || states[i].t == "смешанная")
                                {
                                    states[i].Show();
                                    R_counter++;
                                }
                            }
                            Console.WriteLine("\n  Количество республик в коллекции: " + R_counter);
                            Console.Write("\n  " + end);
                            Console.ReadLine();
                        }
                        break;

                    case 3:                                                                   //Клонирование коллекции
                        Clone(states);
                        Console.ReadLine();
                        break;

                    case 4:                                                                   //Сортировка коллекции
                        if (states[0] != null)
                        {
                            StateInterface[] StateSort = states;
                            StateSort = Sort(StateSort);
                            states    = (State[])StateSort;
                            OutputArray(states);
                        }
                        else
                        {
                            Console.WriteLine();
                            Console.ForegroundColor = ConsoleColor.DarkRed;
                            Console.WriteLine("  Сначала необходимо создать коллекцию.");
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.Write("\n  " + end);
                        }
                        Console.ReadLine();
                        break;

                    case 5:
                        break;
                    }
                    break;

                case 5:
                    var dictionary = new SortedDictionaryWork();
                    //IEnumerator myEnumerator =
                    //     dictionary.GetEnumerator();
                    dictionary.Start();
                    break;

                case 6:
                    ok = false;
                    break;
                }
            }
        }
Ejemplo n.º 5
0
        private static void FindState(StateInterface[] state)
        //Поиск объекта в коллекции
        {
            Array.Sort(state, new SortByGDP());

            bool ok = true;

            while (ok)
            {
                int index;
                int choice = LiveMenu.Menu(headlines[1], search);
                switch (choice)
                {
                case 0:
                    Monarchy monarchy = new Monarchy();
                    monarchy.Input();

                    index = Array.BinarySearch(state, monarchy);
                    try
                    {
                        Monarchy tmp = state[index] as Monarchy;
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write("\n  Искомый объект: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                        tmp.Show();
                        Console.WriteLine();
                        Console.Write("\n  Номер объекта в коллекции: {0}", index + 1);
                        Console.WriteLine();
                    }
                    catch
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write("\n  Искомый объект: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                        monarchy.Show();
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.Write("\n Отсутствует в коллекции.");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                    }

                    Console.Write("\n" + end);
                    Console.ReadLine();
                    break;

                case 1:
                    Kingdom kingdom = new Kingdom();
                    kingdom.Input();

                    index = Array.BinarySearch(state, kingdom);
                    try
                    {
                        Kingdom tmp = state[index] as Kingdom;
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write("\n  Искомый объект: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                        tmp.Show();
                        Console.WriteLine();
                        Console.Write("\n  Номер объекта в коллекции: {0}", index + 1);
                        Console.WriteLine();
                    }
                    catch
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write("\n  Искомый объект: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                        kingdom.Show();
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.Write("\n Отсутствует в коллекции.");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                    }

                    Console.Write("\n" + end);
                    Console.ReadLine();
                    break;

                case 2:
                    Republic republic = new Republic();
                    republic.Input();

                    index = Array.BinarySearch(state, republic);
                    try
                    {
                        Republic tmp = state[index] as Republic;
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write("\n  Искомый объект: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                        tmp.Show();
                        Console.WriteLine();
                        Console.Write("\n  Номер объекта в коллекции: {0}", index + 1);
                        Console.WriteLine();
                    }
                    catch
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write("\n  Искомый объект: ");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                        republic.Show();
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.Write("\n Отсутствует в коллекции.");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                    }

                    Console.Write("\n" + end);
                    Console.ReadLine();
                    break;

                case 3:
                    ok = false;
                    break;
                }
            }
        }
Ejemplo n.º 6
0
        public static ArrayList Add(ref State[] arr)
        //Добавление объекта в коллекцию
        {
            bool      ok    = true;
            ArrayList STATE = new ArrayList();

            while (ok)
            {
                int choice = LiveMenu.Menu(headlines[1], autoHand);
                switch (choice)
                {
                case 0:
                    STATE.AddRange(arr);
                    int decision = LiveMenu.Menu(headlines[1], addInfo);
                    switch (decision)
                    {
                    case 0:
                        Monarchy monarchy = new Monarchy();
                        monarchy.Input();
                        STATE.Add(monarchy);
                        break;

                    case 1:
                        Kingdom kingdom = new Kingdom();
                        kingdom.Input();
                        STATE.Add(kingdom);
                        break;

                    case 2:
                        Republic republic = new Republic();
                        republic.Input();
                        STATE.Add(republic);
                        break;

                    case 3:
                        break;
                    }

                    Console.WriteLine();
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("  Объект успешно добавлен.");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write("\n  " + end);
                    Console.ReadLine();
                    return(STATE);

                case 1:
                    int k = rnd.Next(1, 4);
                    STATE.AddRange(arr);
                    if (k == 1)
                    {
                        Republic newState = new Republic();
                        STATE.Add(newState);
                    }
                    if (k == 2)
                    {
                        Monarchy newState = new Monarchy();
                        STATE.Add(newState);
                    }
                    if (k == 3)
                    {
                        Kingdom newState = new Kingdom();
                        STATE.Add(newState);
                    }

                    Console.WriteLine();
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("  Объект успешно добавлен.");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write("\n  " + end);
                    Console.ReadLine();
                    return(STATE);
                }
            }
            return(STATE);
        }
        //Удалить объект
        private void Delete(out int k)
        {
            string[] addMenu =
            { "Удалить монархию", "Удалить королевство", "Удалить республику", "Назад" };
            k = 0;
            while (true)
            {
                var            sw = LiveMenu.Menu("Выберите действие:", addMenu);
                StateInterface state;
                switch (sw)
                {
                case 0:
                    Console.WriteLine("Введите монархию для удаления:");
                    state = new Monarchy();
                    state.Input();

                    if (!_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP()))
                    {
                        Console.
                        WriteLine("Объект для удаления отсутсвует в словаре.\n\n\nДля продолженния нажать на любую клавишу...");
                        Console.ReadKey(true);
                    }
                    else
                    {
                        _states.Remove(state.Return_Name() + " " + state.Return_GDP());
                        Console.
                        WriteLine("Объект успешно удален.\n\n\nДля продолженния нажать на любую клавишу...");
                        Console.ReadKey(true);
                    }

                    if (_states.Count == 0)
                    {
                        k = 6;
                        return;
                    }

                    break;

                case 1:
                    Console.WriteLine("Введите королевство для удаления:");
                    state = new Kingdom();
                    state.Input();
                    if (!_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP()))
                    {
                        Console.
                        WriteLine("Объект для удаления отсутсвует в словаре.\n\n\nДля продолженния нажать на любую клавишу...");
                        Console.ReadKey(true);
                    }
                    else
                    {
                        _states.Remove(state.Return_Name() + " " + state.Return_GDP());
                        Console.
                        WriteLine("Объект успешно удален.\n\n\nДля продолженния нажать на любую клавишу...");
                        Console.ReadKey(true);
                    }

                    if (_states.Count == 0)
                    {
                        k = 6;
                        return;
                    }

                    break;

                case 2:
                    Console.WriteLine("Введите республику для удаления:");
                    state = new Republic();
                    state.Input();
                    if (!_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP()))
                    {
                        Console.
                        WriteLine("Объект для удаления отсутсвует в словаре.\n\n\nДля продолженния нажать на любую клавишу...");
                        Console.ReadKey(true);
                    }
                    else
                    {
                        _states.Remove(state.Return_Name() + " " + state.Return_GDP());
                        Console.
                        WriteLine("Объект успешно удален.\n\n\nДля продолженния нажать на любую клавишу...");
                        Console.ReadKey(true);
                    }

                    if (_states.Count == 0)
                    {
                        k = 6;
                        return;
                    }

                    break;

                case 3:
                    return;
                }
            }
        }
        //Запросы
        private void Queries <T>()
        {
            string[] queriesMenu = { "Количество объектов", "Печать объектов", "Перегенерировать объекты", "Назад" };
            while (true)
            {
                var sw = LiveMenu.Menu("Выберите нужный пункт:", queriesMenu);
                switch (sw)
                {
                case 0:
                    var count = 0;
                    foreach (var key in _states.Keys)
                    {
                        try
                        {
                            var element = (T)_states[key];
                            count++;
                        }
                        catch
                        {
                            // ignored
                        }
                    }

                    Console.
                    WriteLine("Кол-во объектов выбранного типа = {0}.\n\n\nДля продолженния нажать на любую клавишу...",
                              count);
                    Console.ReadKey(true);
                    break;

                case 1:
                    Console.WriteLine("Объекты выбранного типа: ");
                    foreach (var key in _states.Keys)
                    {
                        try
                        {
                            var element = (T)_states[key];
                            IStateCreate.Show(element);
                        }
                        catch
                        {
                            // ignored
                        }
                    }

                    Console.WriteLine("\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 2:
                    count = 0;
                    var tmp = new SortedDictionary <string, StateInterface>(CloneDictionary());
                    foreach (var key in tmp.Keys)
                    {
                        try
                        {
                            var element = (T)_states[key];
                            _states.Remove(key);
                            count++;
                        }
                        catch
                        {
                            // ignored
                        }
                    }

                    for (var i = 0; i < count; i++)
                    {
                        var add = IStateCreate.CreateElement <T>();
                        _states.Add(add.Return_GDP() + " " + add.Return_Name(), add);
                    }

                    Console.
                    WriteLine("Объекты выбранного типы были перезаписаны.\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 3:
                    return;
                }
            }
        }
        //Тип поиска
        private void TypeFind()
        {
            string[] queriesMenu =
            { "Поиск элемента типа Monarchy", "Поиск элемента типа Kingdom", "Поиск элемента типа Republic", "Назад" };
            while (true)
            {
                var sw = LiveMenu.Menu("Выберите нужную опцию:", queriesMenu);
                switch (sw)
                {
                case 0:
                    StateInterface state = new Monarchy();
                    state.Input();
                    if (_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP()))
                    {
                        Console.WriteLine("\nОбъект найден: ");
                        Console.WriteLine("\n{0}.\n\n\nДля продолженния нажать на любую клавишу...",
                                          _states[state.Return_Name() + " " + state.Return_GDP()]);
                    }
                    else
                    {
                        Console.WriteLine("Заданный объект не был найден в стэке.\n\n\nДля продолженния нажать на любую клавишу...");
                    }

                    Console.ReadKey(true);
                    break;

                case 1:
                    state = new Kingdom();
                    state.Input();
                    if (_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP()))
                    {
                        Console.WriteLine("\nОбъект найден: ");
                        Console.WriteLine("\n{0}.\n\n\nДля продолженния нажать на любую клавишу...",
                                          _states[state.Return_Name() + " " + state.Return_GDP()]);
                    }
                    else
                    {
                        Console.WriteLine("Заданный объект не был найден в стэке.\n\n\nДля продолженния нажать на любую клавишу...");
                    }

                    Console.ReadKey(true);
                    break;

                case 2:
                    state = new Republic();
                    state.Input();
                    if (_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP()))
                    {
                        Console.WriteLine("\nОбъект найден: ");
                        Console.WriteLine("\n{0}.\n\n\nДля продолженния нажать на любую клавишу...",
                                          _states[state.Return_Name() + " " + state.Return_GDP()]);
                    }
                    else
                    {
                        Console.WriteLine("Заданный объект не был найден в стэке.\n\n\nДля продолженния нажать на любую клавишу...");
                    }

                    Console.ReadKey(true);
                    break;

                case 3:
                    return;
                }
            }
        }