public void Edit() { int index, id; Console.Write("Введите id записи: "); if (int.TryParse(Console.ReadLine(), out id) && SearchFromId(id, out index)) { Dictionary <string, Action> menu = new Dictionary <string, Action>(); menu.Add("Фамилия", delegate { Records[index].SetLastName(); }); menu.Add("Имя", delegate { Records[index].SetFirstName(); }); menu.Add("Отчество", delegate { Records[index].SetMiddName(); }); menu.Add("Дата рождения", delegate { Records[index].SetBornDate(); }); menu.Add("Страна", delegate { Records[index].SetCountry(); }); menu.Add("Телефон", delegate { Records[index].SetPhone(); }); menu.Add("Должность", delegate { Records[index].SetPost(); }); menu.Add("Организация", delegate { Records[index].SetClub(); }); menu.Add("Прочее", delegate { Records[index].SetOther(); }); Action header = delegate { Console.WriteLine(Records[index].ShowInfo(Record.ShowType.Canvas)); }; GenericMenu(menu, header); } else { Console.Clear(); ShowAs.Error("Id не найден.\n"); } }
public void SetPhone() { do { this.Phone = SetStrParam("телефон", true); if (string.IsNullOrEmpty(this.Phone)) { ShowAs.Error("Некорректно введены данные.\nПовторите попытку.\n"); } } while (string.IsNullOrEmpty(this.Phone)); }
private static int SetIntParam(string name = "параметр", int min = 0, int max = 0) { int result; do { Console.Write("Введите {0}: ", name); if (!int.TryParse(Console.ReadLine(), out result) || result < min || result > max) { ShowAs.Error("Некорректно введены данные.\nПовторите попытку.\n"); } else { return(result); } } while (true); }
private static string SetStrParam(string name = "параметр", bool IsImprove = false) { do { Console.Write("Введите {0}: ", name); string result = Console.ReadLine(); Console.Clear(); if (string.IsNullOrEmpty(result) && IsImprove) { ShowAs.Error("Некорректно введены данные.\nПовторите попытку.\n"); } else { return(result); } } while (true); }
public void ShowCanvas() { int index, id; Console.Write("Введите id записи: "); if (int.TryParse(Console.ReadLine(), out id) && SearchFromId(id, out index)) { Dictionary <string, Action> menu = new Dictionary <string, Action>(); // генерируем таблицу с записями Action header = delegate { Console.WriteLine(Records[index].ShowInfo(Record.ShowType.Canvas)); }; GenericMenu(menu, header); } else { Console.Clear(); ShowAs.Error("Id не найден.\n"); } }
public void Delete() { int index, id, symbol; Console.Write("Введите id записи: "); if (int.TryParse(Console.ReadLine(), out id) && SearchFromId(id, out index)) { Console.WriteLine("Вы уверены, что хотите удалить запись {0}?\n 1 | Да.\n 2 | Нет.\n", Records[index].Id); if (int.TryParse(Console.ReadLine(), out symbol) && symbol == 1) { Records.RemoveAt(index); } Console.Clear(); } else { Console.Clear(); ShowAs.Error("Id не найден.\n"); } }
private void GenericMenu(Dictionary <string, Action> menuPuncts, Action header) { Dictionary <string, Action> .Enumerator it; int index; bool IsDigit; do // работает до тех пора, пока пользователь не выберет существующий пункт меню { index = 0; // номер пункта меню (с 1 по N) header(); Console.WriteLine(); foreach (var item in menuPuncts) // выводим названия пуктов меню, которые являются ключами словаря menuPuncts { Console.WriteLine($" {++index} | {item.Key}"); } Console.WriteLine($" 0 | Выход"); ShowAs.Improve("\n>> "); IsDigit = int.TryParse(Console.ReadLine(), out index); // считываем номер меню с клавиатуры Console.Clear(); if (IsDigit && index <= menuPuncts.Count) { if (index == 0) { return; } it = menuPuncts.GetEnumerator(); for (int i = 0; i < index; i++) // перемещаем энумератор на нужную позицию пункта меню { it.MoveNext(); } it.Current.Value(); // вызываем метод для этого пункта } else { ShowAs.Error("Команда не найдена!\nПопробуйте еще раз.\n"); } } while (true); }