Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная_работа_3_НикитинаДС.docx
Скачиваний:
24
Добавлен:
15.06.2021
Размер:
38.93 Кб
Скачать

Program.Cs

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Diagnostics;

namespace DashaLabs

{

class Program

{

static void Main(string[] args)

{

TestMagazineSort();

TestMagazineCollection();

TestCollectionTest();

Console.ReadKey();

}

public static void TestMagazineSort ()

{

Magazine magazine = new Magazine("Magazine", Frequency.Monthly, new DateTime(2019, 12, 12), 10);

Person p1 = new Person("Ivan", "Ivanov", new DateTime(1998, 12, 23));

Person p2 = new Person("Harry", "Potter", new DateTime(1984, 6, 11));

Person p3 = new Person("Albus", "Dumbledore", new DateTime(1943, 5, 3));

Article a1 = new Article(p1, "Art of Programming", 5.64);

Article a2 = new Article(p1, "Art of War", 4.51);

Article a3 = new Article(p3, "Fantastic Beasts", 8.54);

Article a4 = new Article(p2, "Harry Potter and the Prisoner of Azkaban", 9.59);

Article a5 = new Article(p2, "Artemis Fawl", 10);

Article a6 = new Article(p1, "Tanya Grotter", 1.41);

magazine.AddArticles(a1, a2, a3, a4, a5, a6);

Console.WriteLine("Сортировка по названию");

magazine.OrderByTitle();

Console.WriteLine(magazine);

Console.WriteLine("Сортировка по Имени автора");

magazine.OrderByEditorName();

Console.WriteLine(magazine);

Console.WriteLine("Сортировка по рейтингу");

magazine.OrderByScore();

Console.WriteLine(magazine);

}

public static void TestMagazineCollection ()

{

Magazine m1 = new Magazine("Crime and Destiny", Frequency.Monthly, new DateTime(2019, 12, 12), 10);

Magazine m2 = new Magazine("Jealous cats and dogs", Frequency.Yearly, new DateTime(2012, 12, 12), 60);

Magazine m3 = new Magazine("Games and Thrones", Frequency.Weekly, new DateTime(2013, 12, 12), 30);

Person p1 = new Person("Ivan", "Ivanov", new DateTime(1998, 12, 23));

Person p2 = new Person("Harry", "Potter", new DateTime(1984, 6, 11));

Person p3 = new Person("Albus", "Dumbledore", new DateTime(1943, 5, 3));

Article a1 = new Article(p1, "Art of Programming", 5.64);

Article a2 = new Article(p1, "Art of War", 4.51);

Article a3 = new Article(p3, "Fantastic Beasts", 8.54);

Article a4 = new Article(p2, "Harry Potter and the Prisoner of Azkaban", 9.59);

Article a5 = new Article(p2, "Artemis Fawl", 10);

Article a6 = new Article(p1, "Tanya Grotter", 1.41);

m1.AddArticles(a1, a2);

m2.AddArticles(a3, a4);

m3.AddArticles(a5, a6);

MagazineCollection<string> magazineCollection = new MagazineCollection<string>(x => x.Name);

magazineCollection.AddMagazines(m1, m2, m3);

Console.WriteLine(magazineCollection);

Console.WriteLine("Группировка по периодичности");

IEnumerable<IGrouping<Frequency, KeyValuePair<string, Magazine>>> groups = magazineCollection.Groups;

foreach (IGrouping<Frequency, KeyValuePair<string, Magazine>> entry in groups)

{

Console.WriteLine(entry.Key);

foreach(KeyValuePair<string, Magazine> mag in entry)

{

Console.WriteLine(mag);

}

}

Console.WriteLine("Ежемесячные журналы");

IEnumerable<KeyValuePair<string, Magazine>> monthlyMagazines = magazineCollection.FrequencyGroup(Frequency.Monthly);

foreach (KeyValuePair<string, Magazine> entry in monthlyMagazines)

{

Console.WriteLine(entry.Value);

}

Console.WriteLine("Рейтинги");

Console.WriteLine(magazineCollection.MaxScore);

}

public static void TestCollectionTest ()

{

GenerateElement<Edition, Magazine> generator = x =>

{

Edition edition = new Edition("edition " + x, DateTime.Now, x * 2);

Magazine magazine = new Magazine("magazine by edition " + x, (Frequency)(x % 3), DateTime.Now, x * 3);

return new KeyValuePair<Edition, Magazine>(edition, magazine);

};

TestCollections<Edition, Magazine> testCollection = new TestCollections<Edition, Magazine>(10, generator);

testCollection.RunTest();

}

}

}