Наследование. Добавить событие и показать его обработку - C#

Узнай цену своей работы

Формулировка задачи:

На основе задания реализовать класс наследник от базового класса, добавить событие и показать его обработку. Задание: В магазине формируется список лиц, записавшихся на покупку товара повышения спроса. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на учет. Удалить из списка все повторные записи, проверяя Ф.И.О и домашний адрес. Вот код который я написал к заданию: Файл Program.cs:
Листинг программы
  1. class Program
  2. {
  3. public static Spravka<int>[] list;
  4. static public void DisplayMenu()
  5. {
  6. Console.WriteLine("1. Создать лист");
  7. Console.WriteLine("2. Просмотреть лист...");
  8. Console.WriteLine("3. Открыть файл...");
  9. Console.WriteLine("4. Сохранить файл...");
  10. Console.WriteLine("ESC.Exit...");
  11. }
  12. static void CreateList()
  13. {
  14. Console.WriteLine();
  15. Console.Write("Список лиц: ");
  16. int s = int.Parse(Console.ReadLine());
  17. list = new Spravka<int>[s];
  18. for (int i = 0; i < s; i++)
  19. {
  20. Console.Write("Порядковый номер: ");
  21. int nomer = int.Parse(Console.ReadLine());
  22. Console.Write("Ф.И.О: ");
  23. string fio = Console.ReadLine();
  24. Console.Write("Дом. адрес покупателя: ");
  25. string adres = (Console.ReadLine());
  26. Console.Write("Дата постановки на учёт: ");
  27. string data = Console.ReadLine();
  28. Spravka<int> spravka = new Spravka<int>(nomer, fio, adres, data);
  29. list[i] = spravka;
  30. Console.WriteLine("Данные занесены!");
  31. }
  32. Проверка_Уник();
  33. }
  34. static void ViewList()
  35. {
  36. Console.WriteLine();
  37. if (list == null)
  38. {
  39. Console.WriteLine("Лист пустой!");
  40. return;
  41. }
  42. Console.WriteLine("Просмотр листа: ");
  43. for (int i = 0; i < list.Length; i++)
  44. {
  45. if (list[i] == null) continue;
  46. else
  47. {
  48. Console.WriteLine(list[i].ToString());
  49. }
  50. }
  51. }
  52. static void SaveToFile()
  53. {
  54. Console.WriteLine();
  55. if (list == null)
  56. {
  57. Console.WriteLine("Лист пустой!");
  58. return;
  59. }
  60. Console.Write("Введите название файла: ");
  61. string nf = Console.ReadLine();
  62. if (nf.Length == 0) nf = "text.txt";
  63. StreamWriter writer = new StreamWriter(nf, false);
  64. using (writer)
  65. {
  66. for (int i = 0; i < list.Length; i++)
  67. {
  68. writer.WriteLine(list[i]);
  69. }
  70. }
  71. }
  72. static void OpenFile()
  73. {
  74. string i = Directory.GetCurrentDirectory();
  75. DirectoryInfo directinfo = new DirectoryInfo(i);
  76. FileInfo[] flinfo = directinfo.GetFiles("*.txt");
  77. StreamReader streader = new StreamReader(flinfo[0].Name);
  78. using (streader)
  79. {
  80. string line;
  81. Console.WriteLine();
  82. while ((line = streader.ReadLine()) != null)
  83. {
  84. Console.Write("Файл открыт: \n" + line);
  85. }
  86. }
  87. }
  88. static void Main(string[] args)
  89. {
  90. Console.WriteLine("Выберите № пункта из нижеперечисленных: ");
  91. DisplayMenu();
  92. Console.Write("№ пункта: ");
  93. ConsoleKeyInfo cki;
  94. do
  95. {
  96. cki = Console.ReadKey(false);
  97. switch (cki.KeyChar.ToString())
  98. {
  99. case "1":
  100. CreateList();
  101. break;
  102. case "2":
  103. ViewList();
  104. break;
  105. case "3":
  106. OpenFile();
  107. break;
  108. case "4":
  109. SaveToFile();
  110. break;
  111. }
  112. }
  113. while (cki.Key != ConsoleKey.Escape);
  114. Console.ReadLine();
  115. }
  116. public static void Проверка_Уник()
  117. {
  118. try
  119. {
  120. for (int i = 0; i < list.Length - 1; i++)
  121. {
  122. if (list[i].fio == list[i + 1].fio && list[i].adres == list[i + 1].adres)
  123. {
  124. list[i + 1] = null;
  125. }
  126. }
  127. }
  128. catch { }
  129. Console.WriteLine("Удалить из списка все повторные записи, проверя Ф.И.О и Дом.адрес ");
  130. for (int i = 0; i < list.Length; i++)
  131. { Console.WriteLine(list[i]); }
  132. }
  133. }
Файл Spravka.cs:
Листинг программы
  1. public class Spravka<T>
  2. {
  3. private int nomer;
  4. public string fio;
  5. private T[] mass;
  6. public string adres;
  7. private string data;
  8. private const int MASS_SIZE = 4;
  9. public int сount;
  10. public Spravka(int nomer, string fio, string adres, string data, int ms = MASS_SIZE)
  11. {
  12. this.nomer = nomer;
  13. this.fio = fio;
  14. this.adres = adres;
  15. this.data = data;
  16. this.mass = new T[ms];
  17. }
  18. public override string ToString()
  19. {
  20. {
  21. StringBuilder sb = new StringBuilder();
  22. for (int i = 0; i < mass.Length; i++)
  23. {
  24. sb.Append(mass[i] + " ");
  25. }
  26. return "Порядковый номер: " + nomer + " " + "Ф.И.О: " + fio + " " + "Дом. адрес покупателя: " + " " + adres + " " + "Дата постановки на учёт: " + " " + data;
  27. }
  28. }
  29. }

Решение задачи: «Наследование. Добавить событие и показать его обработку»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.IO;
  5.  
  6. namespace ConsoleApp1
  7. {
  8.     struct Info
  9.     {
  10.         public int num;
  11.         public string FIO, addres, date;
  12.     }
  13.  
  14.     class Spisok//родительский класс
  15.     {
  16.         public Info[] human;
  17.         public int n;
  18.  
  19.         public void Add()//создать список
  20.         {
  21.             Console.Write("Количество записей: "); n = int.Parse(Console.ReadLine());
  22.             human = new Info[n];
  23.             for (int i = 0; i < n; i++)
  24.             {
  25.                 Console.WriteLine($"Запись {i + 1}");
  26.                 human[i].num = i;
  27.                 Console.Write("ФИО: "); human[i].FIO = Console.ReadLine();
  28.                 Console.Write("Адрес: "); human[i].addres = Console.ReadLine();
  29.                 Console.Write("Дата: "); human[i].date = Console.ReadLine();
  30.             }
  31.             Console.Clear();
  32.         }
  33.  
  34.         public void View()//вывод содержимого
  35.         {
  36.             for (int i = 0; i < human.Length; i++)
  37.             {
  38.                 if (human[i].FIO != null)
  39.                     Console.WriteLine($"{human[i].num + 1}. {human[i].FIO}; {human[i].addres}; {human[i].date}");
  40.             }
  41.             Console.WriteLine();
  42.         }
  43.  
  44.         public void FileInput()//заполнение из файла
  45.         {
  46.             Console.Write("Полный адрес файла: "); string path = Console.ReadLine();
  47.             if (!File.Exists(path))
  48.             {
  49.                 Console.Clear();
  50.                 Console.WriteLine("Файла не существует!\n");
  51.             }
  52.             else
  53.             {
  54.                 Console.Clear();
  55.                 n = File.ReadAllLines(path).Length;
  56.                 human = new Info[n];
  57.                 string[] s = File.ReadAllLines(path,Encoding.GetEncoding("windows-1251")).ToArray();
  58.                 for (int i = 0; i < n; i++)
  59.                 {
  60.                     string[] ss = s[i].Split('/').ToArray();
  61.                     human[i].num = i;
  62.                     human[i].FIO = ss[0];
  63.                     human[i].addres = ss[1];
  64.                     human[i].date = ss[2];
  65.                 }
  66.                 Console.WriteLine("Успешно!\n");
  67.             }
  68.         }
  69.  
  70.         public void SaveToFile()//вывод в файл
  71.         {
  72.             Console.Write("Полный адрес файла: "); string path = Console.ReadLine();
  73.             Console.Clear();
  74.             FileStream fcreate = File.Create(path);
  75.             fcreate.Close();
  76.             if (!Path.HasExtension(path))
  77.             {
  78.                 Console.WriteLine("Файл не может быть создан!\n");
  79.             }
  80.             else
  81.             {
  82.                 string[] s = new string[n];
  83.                 for (int i = 0; i < s.Length; i++)
  84.                     s[i] = $"{human[i].FIO}/{human[i].addres}/{human[i].date}";
  85.                 File.WriteAllText(path, String.Join(Environment.NewLine, s.Where(v => !v.StartsWith("/"))));
  86.                 Console.WriteLine("Успешно!\n");
  87.             }
  88.         }
  89.     }
  90.  
  91.     class SpisokDel : Spisok//дочерний класс
  92.     {
  93.         public void Menu()//меню
  94.         {
  95.             int c = -1;
  96.             do
  97.             {
  98.                 Console.WriteLine("1.Создать список\n2.Просмотреть список\n3.Открыть файл\n4.Сохранить в файл\n5.Удалить повторные записи\n0.Выход");
  99.                 c = int.Parse(Console.ReadLine());
  100.                 Console.Clear();
  101.                 switch (c)
  102.                 {
  103.                     case 1:
  104.                         Add();
  105.                         break;
  106.                     case 2:
  107.                         View();
  108.                         break;
  109.                     case 3:
  110.                         FileInput();
  111.                         break;
  112.                     case 4:
  113.                         SaveToFile();
  114.                         break;
  115.                     case 5:
  116.                         Del();
  117.                         break;
  118.                 }
  119.             } while (c != 0);
  120.         }
  121.  
  122.         public void Del()//удаление одинаковых
  123.         {
  124.             for (int i = 0; i < human.Length - 1; i++)
  125.             {
  126.                 for (int j = i + 1; j < human.Length; j++)
  127.                 {
  128.                     if (human[i].FIO == human[j].FIO && human[i].addres == human[j].addres)
  129.                     {
  130.                         human[j].FIO = null;
  131.                         human[j].addres = null;
  132.                         human[j].date = null;
  133.                     }
  134.                 }
  135.             }
  136.             Console.WriteLine("Повторные записи удалены!\n");
  137.         }
  138.     }
  139.  
  140.     class Program
  141.     {
  142.         static void Main()
  143.         {
  144.             SpisokDel s = new SpisokDel();
  145.             s.Menu();
  146.         }
  147.     }
  148. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы