Загрузка данных



class Contact
{
    public string Name { get; set; }
    public string Phone { get; set; }

    public Contact(string name, string phone)
    {
        Name = name;
        Phone = phone;
    }

    public override string ToString()
    {
        return $"{Name}:{Phone}";
    }

    public static Contact FromString(string line)
    {
        var parts = line.Split(':');
        return new Contact(parts[0], parts[1]);
    }
}

class Program
{
    static List<Contact> contacts = new List<Contact>();
    static string fileName = "phonebook.txt";

    static void Main()
    {
        LoadContacts();
        bool running = true;

        while (running)
        {
            Console.WriteLine("\n--- Телефонный справочник ---");
            Console.WriteLine("1. Добавить контакт");
            Console.WriteLine("2. Найти по имени");
            Console.WriteLine("3. Удалить контакт");
            Console.WriteLine("4. Показать все контакты");
            Console.WriteLine("5. Выход");
            Console.Write("Выберите действие: ");

            string choice = Console.ReadLine();
            switch (choice)
            {
                case "1":
                    AddContact();
                    break;
                case "2":
                    FindContact();
                    break;
                case "3":
                    DeleteContact();
                    break;
                case "4":
                    ShowAllContacts();
                    break;
                case "5":
                    running = false;
                    break;
                default:
                    Console.WriteLine("Неверный ввод.");
                    break;
            }
        }
    }

    static void LoadContacts()
    {
        if (File.Exists(fileName))
        {
            var lines = File.ReadAllLines(fileName);
            foreach (var line in lines)
            {
                contacts.Add(Contact.FromString(line));
            }
        }
    }

    static void SaveContacts()
    {
        var lines = contacts.Select(c => c.ToString()).ToArray();
        File.WriteAllLines(fileName, lines);
    }

    static void AddContact()
    {
        Console.Write("Имя: ");
        string name = Console.ReadLine();
        Console.Write("Телефон: ");
        string phone = Console.ReadLine();
        contacts.Add(new Contact(name, phone));
        SaveContacts();
        Console.WriteLine("Контакт добавлен.");
    }

    static void FindContact()
    {
        Console.Write("Введите имя для поиска: ");
        string name = Console.ReadLine();
        var found = contacts.Where(c => c.Name.Equals(name, StringComparison.OrdinalIgnoreCase)).ToList();
        if (found.Count == 0)
            Console.WriteLine("Контакт не найден.");
        else
            foreach (var c in found)
                Console.WriteLine($"{c.Name} — {c.Phone}");
    }

    static void DeleteContact()
    {
        Console.Write("Введите имя контакта для удаления: ");
        string name = Console.ReadLine();
        int removed = contacts.RemoveAll(c => c.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
        if (removed > 0)
        {
            SaveContacts();
            Console.WriteLine($"Удалено {removed} контакт(ов).");
        }
        else
            Console.WriteLine("Контакт не найден.");
    }

    static void ShowAllContacts()
    {
        if (contacts.Count == 0)
        {
            Console.WriteLine("Справочник пуст.");
            return;
        }
        foreach (var c in contacts)
            Console.WriteLine($"{c.Name} — {c.Phone}");
    }
}