Example #1
0
        static void Main(string[] args)
        {
            string path = @"C:\Users\MSI\source\repos\Lab9 (1.Net)\Lab9 (1.Net)\lab.txt";
            DoublyLinkedList <Restaraunts> restaraunt = new DoublyLinkedList <Restaraunts>();
            bool First = true;

            using (StreamReader sr = new StreamReader(path))
            {
                while (sr.Peek() > -1)
                {
                    string name     = sr.ReadLine();
                    string typeText = sr.ReadLine();
                    Type   type     = new Type();
                    if (typeText == "Р")
                    {
                        type = Type.;
                    }
                    if (typeText == "К")
                    {
                        type = Type.К;
                    }
                    if (typeText == "РБП")
                    {
                        type = Type.БП;
                    }
                    string      adr = sr.ReadLine();
                    int         rat = Convert.ToInt32(sr.ReadLine());
                    Restaraunts restaraunts1;
                    restaraunts1.name    = name;
                    restaraunts1.type    = type;
                    restaraunts1.address = adr;
                    restaraunts1.rating  = rat;
                    if (First)
                    {
                        restaraunt.AddFirst(restaraunts1);
                        First = false;
                    }
                    else
                    {
                        restaraunt.Add(restaraunts1);
                    }
                }
            }
            List <Log> log      = new List <Log>();
            DateTime   time1    = DateTime.Now;
            DateTime   time2    = DateTime.Now;
            TimeSpan   interval = time2 - time1;
            String     prompt   = "1 – Просмотр таблицы\n2 – Добавить запись\n3 – Удалить запись\n4 – Обновить запись\n5 – Поиск записей\n6 – Просмотреть лог\n7 - Сортировка по рейтингу\n8 - Выход";

            Console.WriteLine(prompt);
            int x = int.Parse(Console.ReadLine());

            for (int y = x; y != 8;)
            {
                if (y == 1)
                {
                    Console.WriteLine("____________________________________________________________________________________________________");
                    Console.WriteLine("|{0,-98}|", "Рестраны и Кафе");
                    Console.WriteLine("____________________________________________________________________________________________________");
                    Console.WriteLine("|{0,-33}|{1,-10}|{2,-42}|{3,-10}|", "Название", "Тип", "Адресс", "Рейтинг");
                    Console.WriteLine("____________________________________________________________________________________________________");
                    foreach (Restaraunts info in restaraunt)
                    {
                        Console.WriteLine("|{0,-33}|{1,-10}|{2,-42}|{3,-10}|", info.name, info.type, info.address, info.rating);
                    }
                    Console.WriteLine("____________________________________________________________________________________________________");
                }
                if (y == 2)
                {
                    Console.WriteLine("Введите название:");
                    string name = Console.ReadLine();
                    Type   type = new Type();
                    Console.WriteLine("Выбирите вид:1-Ресторан, 2-Кафе, 3-РБП");
                    int h = int.Parse(Console.ReadLine()) - 1;
                    type = (Type)h;
                    Console.WriteLine("Введите адрес:");
                    string address = Console.ReadLine();
                    Console.WriteLine("Введите рейтинг:");
                    int         rating = Convert.ToInt32(Console.ReadLine());
                    Restaraunts res;
                    res.name    = name;
                    res.type    = type;
                    res.address = address;
                    res.rating  = rating;
                    restaraunt.Add(res);
                    Log ADD;
                    ADD.Time = DateTime.Now;
                    ADD.Act  = "Добавлена запись";
                    ADD.Str  = name;
                    log.Add(ADD);
                    time1 = DateTime.Now;
                    TimeSpan inteval2 = time1 - time2;
                    if (interval < inteval2)
                    {
                        interval = inteval2;
                    }
                    time2 = ADD.Time;
                }
                if (y == 3)
                {
                    Console.WriteLine("Какую запись вы хотите удалить:");
                    int index = int.Parse(Console.ReadLine()) - 1;
                    if (index > restaraunt.Count || index < 0)
                    {
                        continue;
                    }
                    Log DELETE;
                    DELETE.Time = DateTime.Now;
                    DELETE.Act  = "Запись удалена";
                    int    cnt1       = 0;
                    string DeleteName = "";
                    foreach (Restaraunts info in restaraunt)
                    {
                        if (cnt1 == index)
                        {
                            DeleteName = info.name;
                            restaraunt.Remove(info);
                        }
                        cnt1++;
                    }
                    DELETE.Str = DeleteName;
                    log.Add(DELETE);
                    time1 = DateTime.Now;
                    TimeSpan inteval2 = time1 - time2;
                    if (interval < inteval2)
                    {
                        interval = inteval2;
                    }
                    time2 = DELETE.Time;
                }
                if (y == 4)
                {
                    Console.WriteLine("Какую запись вы хотите обновить:");
                    int index = int.Parse(Console.ReadLine()) - 1;
                    if (index > restaraunt.Count || index < 0)
                    {
                        continue;
                    }
                    string oldName = "";
                    int    count   = 0;
                    foreach (Restaraunts info in restaraunt)
                    {
                        if (count == index)
                        {
                            oldName = info.name;
                            restaraunt.Remove(info);
                        }
                        count++;
                    }
                    Console.WriteLine("Введите название:");
                    string name = Console.ReadLine();
                    Console.WriteLine("Выбирите вид:1-Ресторан, 2-Кафе, 3-РБП");
                    int  h    = int.Parse(Console.ReadLine());
                    Type type = (Type)h;
                    Console.WriteLine("Введите адрес:");
                    string address = Console.ReadLine();
                    Console.WriteLine("Введите рейтинг:");
                    int         r = Convert.ToInt32(Console.ReadLine());
                    Restaraunts res;
                    res.name    = name;
                    res.type    = type;
                    res.address = address;
                    res.rating  = r;

                    Log UPDATE;
                    UPDATE.Time = DateTime.Now;
                    UPDATE.Act  = "Запись обнавлена";
                    UPDATE.Str  = oldName;
                    log.Add(UPDATE);
                    time1 = UPDATE.Time;
                    TimeSpan inteval2 = time1 - time2;
                    if (interval < inteval2)
                    {
                        interval = inteval2;
                    }
                    time2 = UPDATE.Time;
                    restaraunt.AddToPosition(res, index);
                }
                if (y == 5)
                {
                    Console.WriteLine("Выберите вид заведения:\n1 - Ресторан\n2 - Кафе\n3 - Ресторан быстрого питания");
                    int u = int.Parse(Console.ReadLine()) - 1;
                    foreach (Restaraunts info in restaraunt)
                    {
                        if (u == 0)
                        {
                            if (info.type == (Type)u)
                            {
                                string e = info.name;
                                Console.WriteLine("По вышему поиску:{0}", e);
                                Console.WriteLine();
                            }
                        }
                        if (u == 1)
                        {
                            if (info.type == (Type)u)
                            {
                                string e = info.name;
                                Console.WriteLine("По вышему поиску:{0}", e);
                                Console.WriteLine();
                            }
                        }
                        if (u == 2)
                        {
                            if (info.type == (Type)u)
                            {
                                string e = info.name;
                                Console.WriteLine("По вышему поиску:{0}", e);
                                Console.WriteLine();
                            }
                        }
                    }
                }
                if (y == 6)
                {
                    for (int i = 0; i < log.Count; i++)
                    {
                        log[i].DisplayLog();
                    }
                    Console.WriteLine();
                    Console.WriteLine(interval + " - Самый долгий период бездействия пользователя");
                    break;
                }
                if (y == 7)
                {
                    List <Restaraunts> sorted = new List <Restaraunts>();

                    Restaraunts res;
                    foreach (Restaraunts user in restaraunt)
                    {
                        res.name    = user.name;
                        res.type    = user.type;
                        res.address = user.address;
                        res.rating  = user.rating;
                        sorted.Add(res);
                    }
                    Console.WriteLine("Выберите тип сортировки:\n1.По убыванию\n2.По возравстанию");
                    int u = Convert.ToInt32(Console.ReadLine());
                    if (u == 1)
                    {
                        InsertSortDes(sorted, 0, sorted.Count - 1);
                    }
                    if (u == 2)
                    {
                        InsertSortAsc(sorted, 0, sorted.Count - 1);
                    }
                    restaraunt.Clear();
                    bool F = true;
                    for (int i = 0; i < sorted.Count; i++)
                    {
                        res.name    = sorted[i].name;
                        res.type    = sorted[i].type;
                        res.address = sorted[i].address;
                        res.rating  = sorted[i].rating;
                        if (F)
                        {
                            restaraunt.AddFirst(res);
                            F = false;
                        }
                        else
                        {
                            restaraunt.Add(res);
                        }
                    }
                }
                Console.WriteLine(prompt);
                y = int.Parse(Console.ReadLine());
            }
            using (StreamWriter sw = new StreamWriter(path, false))
            {
                foreach (Restaraunts info in restaraunt)
                {
                    sw.WriteLine(info.name + "\n" + info.type + "\n" + info.address + "\n" + info.rating);
                }
                sw.Close();
            }
        }