Advertisement
myloyo

serialization (18-19).3

Mar 15th, 2024 (edited)
678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.71 KB | None | 0 0
  1. // класс публикация
  2. using System;
  3.  
  4. namespace myloyorrr
  5. {
  6.     [Serializable]
  7.     abstract public class Publication:IComparable<Publication>
  8.     {
  9.         public string title { get; set; }
  10.         public string author { get; set; }
  11.  
  12.         public Publication(string title, string author)
  13.         {
  14.             this.title = title;
  15.             this.author = author;
  16.         }
  17.  
  18.         public override string ToString() // вывод данных на экран
  19.         {
  20.             return $"{title}, {author}";
  21.         }
  22.  
  23.         public int CompareTo(Publication item) // является ли искомым
  24.         {
  25.             if(this.author == item.author)
  26.             {
  27.                 return 0;
  28.             }
  29.             else
  30.             {
  31.                 if(this.author[0] > item.author[0])
  32.                 {
  33.                     return 1;
  34.                 }
  35.                 else
  36.                 {
  37.                     return -1;
  38.                 }
  39.             }
  40.  
  41.         }
  42.  
  43.         public bool IsName(string auth) //поиск имени
  44.         {
  45.             if (this.author == auth)
  46.             {
  47.                 return true;
  48.             }
  49.             else
  50.             {
  51.                 return false;
  52.             }
  53.         }
  54.     }
  55. }
  56. // производный класс книга
  57. using System;
  58.  
  59. namespace myloyorrr
  60. {
  61.     [Serializable]
  62.     class Book: Publication
  63.     {
  64.         public int year { get; set; }
  65.         public string edition { get; set; }
  66.  
  67.         public Book(string title, string author, int year, string edition):base(title, author)
  68.         {
  69.             this.year = year;
  70.             this.edition = edition;
  71.         }
  72.  
  73.         public override string ToString()
  74.         {
  75.             return $"{title}, {author}, {year}, {edition}";
  76.         }
  77.     }
  78. }
  79. // производный класс article
  80. using System;
  81.  
  82. namespace myloyorrr
  83. {
  84.     [Serializable]
  85.     class Article: Publication
  86.     {
  87.         public string JournalTitle { get; set; }
  88.         public int number { get; set; }
  89.         public int year { get; set; }
  90.  
  91.         public Article(string title, string author, string journalTitle, int number, int year):base(title, author)
  92.         {
  93.             JournalTitle = journalTitle;
  94.             this.number = number;
  95.             this.year = year;
  96.         }
  97.  
  98.         public override string ToString()
  99.         {
  100.             return $"{title}, {author}, {JournalTitle}, {number}, {year}";
  101.         }
  102.     }
  103. }
  104. // производный класс EResource
  105. using System;
  106.  
  107. namespace myloyorrr
  108. {
  109.     [Serializable]
  110.     class EResource: Publication
  111.     {
  112.         public string link { get; set; }
  113.         public string annotation { get; set; }
  114.  
  115.         public EResource(string title, string author, string link, string annotation):base(title, author)
  116.         {
  117.             this.link = link;
  118.             this.annotation = annotation;
  119.         }
  120.  
  121.         public override string ToString()
  122.         {
  123.             return $"{title}, {author}, {link}, {annotation}";
  124.         }
  125.     }
  126. }
  127.  
  128. using System;
  129. using System.IO;
  130. using System.Runtime.Serialization.Formatters.Binary;
  131. using System.Collections.Generic;
  132. using System.Runtime.Serialization;
  133.  
  134. namespace myloyorrr
  135. {
  136.     class Program
  137.     {
  138.         static void Print(List<Publication> objects)
  139.         {
  140.             if (objects.Count == 0)
  141.             {
  142.                 Console.WriteLine("Список пуст");
  143.             }
  144.             else
  145.             {
  146.                 Console.WriteLine("Список объектов:");
  147.                 foreach (Publication publication in objects)
  148.                 {
  149.                     //Console.Write(publication.title + " ");
  150.                     //Console.WriteLine(publication.author);
  151.                    // string h = publication.ToString();
  152.                     Console.WriteLine(publication);
  153.  
  154.                 }
  155.             }
  156.         }
  157.        
  158.         static void Main()
  159.         {
  160.             List<Publication> objects = new List<Publication>();
  161.            
  162.             BinaryFormatter formatter = new BinaryFormatter();
  163.  
  164.             using (FileStream f = new FileStream("C:/Настя/книит/in.dat",
  165.                FileMode.OpenOrCreate))
  166.             {
  167.                 if (f.Length != 0)
  168.                 {
  169.                     objects = (List<Publication>)formatter.Deserialize(f);
  170.                 }
  171.                 else
  172.                 {
  173.                     //objects.Add(new Book("1984", "Orwell", 2000, "52"));
  174.                     //objects.Add(new Article("1984", "Orwell", "Magazine", 73, 2001));
  175.                     //objects.Add(new EResource("sgu", "author", "sgu.ru", "annotation"));
  176.                 }
  177.             }
  178.  
  179.             Print(objects);
  180.             objects.Add(new Book("19841", "Orwell", 2000, "52"));
  181.             objects.Add(new Article("19841", "Orwell", "Magazine", 73, 2001));
  182.             objects.Add(new EResource("sgu1", "Author", "sgu.ru", "annotation"));
  183.  
  184.             Console.WriteLine("Поиск по фамилии автора:");
  185.  
  186.             for(int i = 0; i < objects.Count; i++)
  187.             {
  188.                 if (objects[i].IsName("Author"))
  189.                 {
  190.                     Console.WriteLine(objects[i]);
  191.                 }
  192.             }
  193.  
  194.             Console.WriteLine();
  195.             Console.WriteLine("сортировка");
  196.  
  197.             objects.Sort(delegate (Publication x, Publication y) { return x.CompareTo(y); });
  198.            
  199.             Print(objects);
  200.  
  201.             using (FileStream f = new FileStream("C:/Настя/книит/in.dat",
  202.                FileMode.OpenOrCreate))
  203.             {
  204.                 formatter.Serialize(f, objects);
  205.             }
  206.  
  207.  
  208.         }
  209.     }
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement