//Меню 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; } } }
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; } } }
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; } } }
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; } } }