Vla_DOS

Struct

Apr 4th, 2022 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace TelephoneNetSubscribers
  5. {
  6.     public struct TelephoneNetSubscribers
  7.     {
  8.         public string LastName { get; set; } // Свойство (поле)
  9.         public string PhoneNumber { get; set; }
  10.         public double ConversationDuration { get; set; }
  11.  
  12.         // Конструктор з параметрами:
  13.         public TelephoneNetSubscribers(string _lastName, string _phoneNumber, double _conversationDuration)
  14.         {            
  15.             LastName = _lastName;
  16.             PhoneNumber = _phoneNumber;
  17.             ConversationDuration = _conversationDuration;
  18.         }
  19.     }
  20.     class Program
  21.     {
  22.         // Метод з параматерами, для вводу данних до списку:
  23.         static void Input(List<TelephoneNetSubscribers> l, uint count)
  24.         {
  25.             for (int i = 0; i < count; i++)
  26.             {
  27.                 Console.Write("Введiть прiзвище: ");
  28.                 string LastName = Console.ReadLine(); // Вводим з клави дані
  29.  
  30.                 Console.Write("Введiть номер телефона: ");
  31.                 string PhoneNumber = Console.ReadLine();
  32.  
  33.                 Console.Write("Введiть тривалiсть розмови: ");
  34.                 double ConversationDuration = double.Parse(Console.ReadLine());
  35.  
  36.                 // Створюємо екземпляр класу, оскільки в нас є конструктор, одразу записуємо туди дані
  37.                 TelephoneNetSubscribers t = new TelephoneNetSubscribers(LastName, PhoneNumber, ConversationDuration);
  38.                 l.Add(t); // Додаємо дані в список, оскільки в нас цикл, з кожною ітерацією будуть додаватись нові дані
  39.                 Console.WriteLine();
  40.             }
  41.         }
  42.         static void GetList(List<TelephoneNetSubscribers> l)
  43.         {
  44.             // Перебираємо всі елементи списку, через цикл і виводимо дані в консоль
  45.             foreach (var i in l)
  46.                 Console.WriteLine($"Прiзвище: { i.LastName}. Номер телефона: {i.PhoneNumber}. Тривалiсть розмови: {i.ConversationDuration}\n");
  47.         }
  48.  
  49.         // Метод для видалення данних:
  50.         static void Delete(List<TelephoneNetSubscribers> l, string lastNameDel)
  51.         {
  52.             for (int i = 0; i < l.Count; i++)
  53.             {
  54.                 if (l[i].LastName == lastNameDel) // Перевірка, чи введене прiзвище є в списку
  55.                 {
  56.                     l.RemoveAt(i); // Видаляємо по знайденому індексу
  57.                 }
  58.             }
  59.         }
  60.         // Метод для оновлення данних:
  61.         static void Update(List<TelephoneNetSubscribers> l, string lastNameSearch, string lastNameUp, string phoneNumberUp, int ConversationDurationUp)
  62.         {
  63.             TelephoneNetSubscribers t = new TelephoneNetSubscribers();
  64.             for (int i = 0; i < l.Count; i++)
  65.             {
  66.                 if (l[i].LastName == lastNameSearch)
  67.                 {
  68.                     t.LastName = lastNameUp; // Записуємо дані, які добавляться в список
  69.                     t.PhoneNumber = phoneNumberUp;
  70.                     t.ConversationDuration = ConversationDurationUp;
  71.                     l.RemoveAt(i); // Видаляємо дані за індексом
  72.                     l.Insert(i, t); // На їх місце записуємо нові
  73.                 }
  74.             }
  75.         }
  76.  
  77.         static void SortByLastName(List<TelephoneNetSubscribers> l) => l.Sort((s1, s2) => s1.LastName.CompareTo(s2.LastName));
  78.        
  79.         static void GetListByLastName(List<TelephoneNetSubscribers> l, string lastName)
  80.         {
  81.             foreach (var i in l)
  82.             {
  83.                 if (i.LastName == lastName)
  84.                     Console.WriteLine($"Прiзвище: { i.LastName}. Номер телефона: {i.PhoneNumber}. Тривалiсть розмови: {i.ConversationDuration}\n");
  85.             }
  86.         }
  87.  
  88.         static string Line() => "--------------------------------------------";
  89.         static void Menu()
  90.         {
  91.             Console.WriteLine($"{Line()}\n\t\tМеню:\n{Line()}".ToUpper());
  92.             Console.WriteLine("1. Уведення даних;".ToUpper());
  93.             Console.WriteLine("2. Сортування за прiзвищем;".ToUpper());
  94.             Console.WriteLine("3. Пошук за вказаним прiзвищем;".ToUpper());
  95.             Console.WriteLine("4. Оновлення данних;".ToUpper());
  96.             Console.WriteLine("5. Вилучення данних;".ToUpper());
  97.             Console.WriteLine("6. Вивiд на екран даних;".ToUpper());
  98.             Console.WriteLine($"0. Вихiд.\n{Line()}".ToUpper());
  99.             Console.WriteLine();
  100.         }
  101.  
  102.         // Метод перевірки, чи є введене прiзвище в списку, інакше даних може не бути і програма зламається
  103.         static bool CheckNameInList(List<TelephoneNetSubscribers> l, string lastName)
  104.         {
  105.             bool check = false;
  106.             foreach (var i in l)
  107.                 check = i.LastName.Contains(lastName); // За допомогою метода Contains перевіряємо чи є прiзвище в списку
  108.             return check; // Вертає true, якщо є, або false - немає
  109.         }
  110.         static void Main()
  111.         {
  112.             List<TelephoneNetSubscribers> l = new List<TelephoneNetSubscribers>();
  113.             int number;
  114.             try
  115.             {
  116.                 do
  117.                 {
  118.                     Menu(); // Визиваємо меню, оскільки в нас цикл, буде з'являтись кожного разу, до поки ми не вийдемо
  119.                     number = int.Parse(Console.ReadLine()); // Вводимо, який пункт меню вибрати
  120.  
  121.                     switch (number)
  122.                     {
  123.                         case 1:
  124.                             Console.Write("Введiть кiлькiсть абонентiв: ");
  125.                             uint count = uint.Parse(Console.ReadLine());
  126.                             Input(l, count);
  127.                             break;
  128.                         case 2:
  129.                             SortByLastName(l);
  130.                             Console.WriteLine("Данi успiшно вiдсортовано!");
  131.                             break;
  132.                         case 3:
  133.                             Console.Write("Введiть прiзвище: ");
  134.                             string lastName = Console.ReadLine();
  135.                             GetListByLastName(l, lastName);
  136.                             break;
  137.                         case 4:
  138.                             Console.Write("Введiть прiзвище: ");
  139.                             string lastNameSearch = Console.ReadLine();
  140.  
  141.                             if (CheckNameInList(l, lastNameSearch)) // Перевірка, чи прiзвище є в списку
  142.                             {
  143.                                 Console.WriteLine("Введiть данi, для оновлення:");
  144.                                 Console.Write(" Введiть прiзвище: ");
  145.                                 string lastNameUp = Console.ReadLine();
  146.  
  147.                                 Console.Write(" Введiть номер телефону: ");
  148.                                 string phoneNumberUp = Console.ReadLine();
  149.  
  150.                                 Console.Write(" Введiть тривалiсть розмови: ");
  151.                                 int ConversationDurationUp = int.Parse(Console.ReadLine());
  152.  
  153.                                 Update(l, lastNameSearch, lastNameUp, phoneNumberUp, ConversationDurationUp); // Записуємо дані в параметр метода
  154.                                 Console.WriteLine("Данi успiшно оновлено!");
  155.                             }
  156.                             else
  157.                                 Console.WriteLine("Прiзвища не знайдено!");
  158.                             break;
  159.                         case 5:
  160.                             Console.Write("Введiть прiзвище: ");
  161.                             string lastNameDel = Console.ReadLine();
  162.  
  163.                             if (CheckNameInList(l, lastNameDel)) // Перевірка, чи прiзвище є в списку
  164.                             {
  165.                                 Delete(l, lastNameDel);
  166.                                 Console.WriteLine("Данi успiшно видалено!");
  167.                             }
  168.                             else
  169.                                 Console.WriteLine("Прiзвища не знайдено!");
  170.                             break;
  171.                         case 6:
  172.                             Console.WriteLine("\nДанi про всiх абонентів:");
  173.                             GetList(l);
  174.                             break;
  175.                         default:
  176.                             Console.WriteLine("Натиснiть Enter, шоб закрити консоль!");
  177.                             break;
  178.                     }
  179.                 } while (number != 0); // Якщо ввести 0 - вихід
  180.             }
  181.             catch(Exception ex)
  182.             {
  183.                 Console.WriteLine(ex.Message); // "Обработка исключний" (try/cath), якщо будуть введені некоректні дані, в консолі виб'є, в чому саме проблема
  184.             }
  185.             Console.ReadLine();
  186.         }
  187.     }
  188. }
Add Comment
Please, Sign In to add comment