Suren97 Ответов: 1

C# как я могу сохранить свои входные данные в списке в файл .txt


мне нужно сохранить данные в списке, который я ввожу в консоль.У меня есть 3 функции ' Show(),Add(),Delete(). Когда я ввожу 1,он должен показать мне список моих данных,когда я ввожу 2,он должен попросить меня "ввести новые данные пользователя с запятой", например "Джон, 25", затем он должен быть сохранен в моем списке, то есть когда я ввожу 1,он должен показать мне мой список + новые добавленные данные, а когда я ввожу 3, он должен спросить меня "пожалуйста, введите индекс человека, которого вы хотите удалить", например, я введу 2, и он должен удалить второго индексного человека, а затем, когда я ввожу 1, он должен показать мне мой список без второго индексного человека.
Но в моем коде это не работает, после добавления или удаления он не показывает мне того человека, которого я добавил или удалил.
Пожалуйста,помогите мне, в чем моя ошибка???????

Что я уже пробовал:

class Controller
    {
        public List<Person> all; 
        public void Show()
        {
            string path = "C:/Users/User/Desktop/mardik.txt";
            FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
            BinaryFormatter bf = new BinaryFormatter();
            List<Person> all = bf.Deserialize(fs) as List<Person>;
            foreach (Person item in all)
            {
                Console.WriteLine(item.name + " " + item.age);
            }
            fs.Close();
        }
        public void Add()
        {
            string path = "C:/Users/User/Desktop/mardik.txt";
            FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            BinaryFormatter bf = new BinaryFormatter();
            List<Person> all = bf.Deserialize(fs) as List<Person>;
            
            Console.WriteLine("Enter new user's data with comma");
            string text = Console.ReadLine();
            string[] segments = text.Split(',');
            string a = segments[0];
            int b;
            bool hajoxvec = int.TryParse(segments[1], out b);
            if (!hajoxvec)
            {
                Console.WriteLine("Please try again");
                this.Add();
            }
            else
            {
                all.Add(new Person(a, b));

            }
                foreach (Person item in all)
                {
                    Console.WriteLine(item.name + " " + item.age);
                }
            
            fs.Close();
        }
        public void Delete()
        {
            string path = "C:/Users/User/Desktop/mardik.txt";
            FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            BinaryFormatter bf = new BinaryFormatter();
            List<Person> all = bf.Deserialize(fs) as List<Person>;
            Console.WriteLine();
            Console.WriteLine("Please type the index of Person, whom you want to delete");
            int num = int.Parse(Console.ReadLine());
            if (num < 0 || num > 4)
            {
                Console.WriteLine("Please try again");
                this.Delete();
            }
            else
            {
                all.RemoveAt(num);
            }
            foreach (Person item in all)
            {
                Console.WriteLine(item.name + " " + item.age);
            }
            fs.Close();
        }
    }





[Serializable]
    class Person
    {
        public string name;
        public int age;
        public Person(string a, int b)
        {
            this.name = a;
            this.age = b;
        }
    }




static void Main(string[] args)
        {
            string path = "C:/Users/User/Desktop/mardik.txt";
            //List<Person> mardik = new List<Person>();
            //mardik.Add(new Person("Valod", 20));
            //mardik.Add(new Person("Petros", 23));
            //mardik.Add(new Person("Poghos", 25));
            //mardik.Add(new Person("Hranush", 22));
            //mardik.Add(new Person("Suren", 18));
            //FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
            //BinaryFormatter bf = new BinaryFormatter();
            //bf.Serialize(fs, mardik);
            //fs.Close();
            Controller c = new Controller();
            while (true)
            {
                Console.WriteLine();
                Console.WriteLine("Incheq uzum anel:\n1.Show all People\n2.Add new person\n3.Delete any person");
                int x = int.Parse(Console.ReadLine());
                switch (x)
                {
                    case 1:
                        c.Show();
                        break;
                    case 2:
                        c.Add();
                        break;
                    case 3:
                        c.Delete();
                        break;
                }
            }
        }

1 Ответов

Рейтинг:
0

OriginalGriff

Есть ли смысл задавать вопросы, если вы просто собираетесь игнорировать все, что мы вам говорим?
Как добавить данные из списка в файл .txt с помощью switch-case[^]
Конечно, кажется, что нет никакого смысла отвечать на них...


Suren97

я не мог найти там ответа на свой вопрос :)

Suren97

я думаю, что это будет немного кода, но я не могу решить эту маленькую проблему :(

OriginalGriff

Вы не можете решить ее, потому что не слушаете, что вам говорят.
Вернитесь туда и прочтите то, что я сказал вчера.
Как много из этого вы на самом деле сделали?

Suren97

Не могли бы вы прислать мне какой-нибудь источник, где я мог бы найти ответ на свой вопрос?