diff --git a/Report/report.md b/Report/report.md
new file mode 100644
index 0000000..0ac5e08
--- /dev/null
+++ b/Report/report.md
@@ -0,0 +1,537 @@
+# Лабораторная работа 1
+## Компоненты:
+
+### CustomDataTable:
+Визуальный компонент вывода таблицы значений
+
+__Публичные Методы__:
+- Определить структуру таблицы
+ ```c#
+ void ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters)
+ ```
+ CustomDataTableColumnParameter
+ ```c#
+ ///
+ /// Параметры столбца таблицы
+ ///
+ public record CustomDataTableColumnParameter
+ {
+ ///
+ /// Заголовок
+ ///
+ public string HeaderName { get; init; } = string.Empty;
+
+ ///
+ /// Ширина
+ ///
+ public int Width { get; init; } = 0;
+
+ ///
+ /// Видимость
+ ///
+ public bool Visible { get; init; } = true;
+
+ ///
+ /// Название свойства
+ ///
+ public string PropertyName { get; init; } = string.Empty;
+ }
+ ```
+- Отчистить таблицу
+ ```c#
+ public void Clear()
+ ```
+- Заполнить таблицу
+ ```c#
+ public void Fill(IList insertValues)
+ ```
+
+__Публичные Функции__:
+- Получить стоку таблицы в виде объекта
+ ```c#
+ public TType? GetRow(int rowIndex) where TType : new()
+ ```
+
+__Свойства__:
+- Индекс выбранной строки
+ ```c#
+ public int SelectedRow
+ ```
+
+
+### CustomListBox
+Визуальный компонент выбора из списка значений
+
+__Публичные Методы__:
+- Заполнить список значениями
+ ```c#
+ public void FillValues(IEnumerable strings)
+ ```
+- Очистить список
+ ```c#
+ public void Clear()
+ ```
+
+__Свойства__:
+- Событие возникающие при изменении списка
+ ```c#
+ public event EventHandler ValueChanged
+ ```
+- Обработка ошибок
+ ```c#
+ public event Action AnErrorOccurred
+ ```
+- Выбранное значение
+ ```c#
+ public string Selected
+ ```
+
+
+### CustomNumericInputField
+Визуальный компонент ввода целочисленного значения допускающего null
+
+__Свойства__:
+- Событие возникающие при изменении поля ввода
+ ```c#
+ public event EventHandler NumericInputChanged
+ ```
+- Обработка ошибок
+ ```c#
+ public event Action AnErrorOccurred
+ ```
+- Значения поля ввода
+ ```c#
+ public int? Value
+ ```
+ _Возможно исключение ```InvalidNumericInputValueException```_
+
+
+# Лабораторная работа 2
+## Компоненты:
+
+### CustomPdfTable
+
+Компонент для сохранения таблицы в пдф
+
+__Публичные Методы__:
+- Определить структуру таблицы
+ ```c#
+ public void SaveToPdf(PdfTableInfo tableInfo)
+ ```
+ PdfTableInfo
+ ```c#
+ ///
+ /// Параметры для создания таблиц в пдф
+ ///
+ public record PdfTableInfo
+ {
+ ///
+ /// имя файла (включая путь до файла)
+ ///
+ public string FilePath { get; init; } = @"C:\pdfTable.pdf";
+
+ ///
+ /// название документа(заголовок в документе)
+ ///
+ public string Title { get; init; } = "Таблица";
+
+ ///
+ /// Список таблиц
+ ///
+ public IEnumerable Tables { get; init; } = [];
+ }
+ ```
+
+### CustomPdfTableWithGrouping
+
+Компонент создающий таблицу и группирует элементы по 1 столбцу
+__Публичные Методы__:
+- Сохранить в пдф
+ ```c#
+ public void SaveToPdf(PdfTableWithGroupingInfo tableInfo) where TType : class
+ ```
+ PdfTableWithGroupingInfo
+ ```c#
+ ///
+ /// Параметры для создания таблицы в пдф с группировкой по 1 столбцу
+ ///
+ public class PdfTableWithGroupingInfo where TType : class
+ {
+ ///
+ /// имя файла (включая путь до файла)
+ ///
+ public string FilePath { get; init; } = @"C:\pdfTable.pdf";
+
+ ///
+ /// название документа(заголовок в документе)
+ ///
+ public string Title { get; init; } = "Таблица";
+
+ ///
+ /// Высота заголовков
+ ///
+ public float HeaderHeight { get; init; } = 0.5f;
+
+ ///
+ /// Параметры столбцов
+ ///
+ public IEnumerable Columns { get; init; } = [];
+
+ ///
+ /// Список таблиц
+ ///
+ public IEnumerable> Rows { get; init; } = [];
+ }
+ ```
+
+### CustomPdfHistogram
+
+Компонент создающий линейную диаграмму
+__Публичные Методы__:
+- Сохранить гистограмму в пдф
+ ```c#
+ public void SaveToPdf(PdfHistigramInfo histogramInfo)
+ ```
+ PdfHistigramInfo
+ ```c#
+ ///
+ /// Параметры для создания линейной диаграммы
+ ///
+ public record PdfHistigramInfo
+ {
+ ///
+ /// Имя файла (включая путь до файла)
+ ///
+ public string FilePath { get; init; } = @"C:\pdfTable.pdf";
+
+ ///
+ /// Заголовок документа
+ ///
+ public string DocumentTitle { get; init; } = "Гистограмма";
+
+ ///
+ /// Заголовок диаграммы
+ ///
+ public string HistogramTitle { get; init; } = "Гистограмма";
+
+ ///
+ /// Расположение легенды
+ ///
+ public PdfLegendPosition LegendPosition { get; init; } = PdfLegendPosition.Bottom;
+
+ ///
+ /// Значения
+ ///
+ public required IEnumerable Values { get; init; }
+ }
+ ```
+
+
+# Лабораторная работа 3
+
+Программный продукт предназначен для учета успеваемости студентов и управления их данными.
+Он позволяет хранить информацию о каждом студенте,
+формировать отчеты в различных форматах (Word, PDF, Excel)
+и визуализировать данные с помощью круговой диаграммы.
+
+### Цель программы
+Цель программы — автоматизация процесса учета успеваемости студентов, упрощение работы с данными и формирование отчетов для анализа успеваемости и стипендиальных выплат.
+
+### Функционал программы
+- Хранение данных о студентах:
+
+1. ФИО студента.
+2. Дата поступления
+3. Форма обучения (выбирается из выпадающего списка).
+4. Успеваемость
+
+- Отображение данных в виде списка
+ Данные о студентах выводятся на главной форме в виде списка строк
+
+- Формирование документа в PDF:
+ Создается таблица с данными о средних баллах студентов по сессиям.
+ Колонки таблицы: сессии от 1 до 6.
+ Строки таблицы: средние баллы студентов (без указания ФИО).
+
+- Формирование таблицы в excel:
+ Создается табличный отчет с информацией по всем студентам.
+
+ Шапка таблицы:
+ - Id
+ - ФИО
+ - Образование
+ - Форма обучения
+ - Дата поступления
+
+- Создание круговой диаграммы в Word:
+ Формируется линейная диаграмма, отображающая распределение студентов по форме обучения,
+ поступивших в разнык года
+
+| Компонент | Преимущества | Недостатки |
+|--------------------------|--------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| CustomDateTimePicker | Понятные и логичные названия переменных | Занимаемое компонентом место не оптимизировано (могут возникнуть трудности с контейнерами) |
+| VisualSelectionComponent | Содержит большую часть требуемого функцинонала | В базовой поставке отсутствует функционал заполнения, отсутствует xml документация, функции имеют не оправдано длинное название, границы компонента занимают чуть больше места чем вложенные элементы |
+| ComponentDiagram | Реализует функционал создания диограммы в текстовом документе word | Использует комерческую библиотеку с бесплатным доступом, на документе остаётся водяной знак, в функцию создания документа передаётся объект, но его поля нужно инициализировать в конструкторе, отсутствует xml документация |
+| CustomExcelTable | Удобные настройки таблицы, понятные наименования функций и классов | Отсутствует xml документация |
+
+# Лабораторная работа №5.
+# Применение структурных паттернов.
+
+## Задание
+1) Дать описание паттернов, указанных во вариантах, для каких целей они могут применяться,
+ какие участники там фигурируют.
+2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности,
+ относящиеся к той же предметной области, что описаны в задании и реализация которых
+ бы в приложении потребовала применения паттерна.
+ ### Ограничения:
+ - На каждый паттерн свои сущности
+ - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы, а не элементы разработки (что-то типа «У меня паттерн Singleton, укажу ка я класс-подключение к БД через него», не принимается).
+3) Создать диаграммы классов, отражающие взаимодействие новых
+сущностей (а также используемый паттерн) с классами,
+созданными в рамках 3 лабораторной работы. Отдельно отметить
+классы, которые являются участниками паттерна
+
+## Вариант 3: _Adapter, Composite, Proxy_
+### Паттерн Adapter
+Паттерн Адаптер используется для того,
+чтобы объекты с несовместимыми интерфейсами могли работать вместе.
+Он оборачивает один интерфейс в другой,
+делая несовместимые классы совместимыми без изменения их исходного кода.
+
+Задачи, которые решает паттерн Adapter:
+- Интеграция стороннего кода или библиотек:
+когда требуется использовать стороннюю библиотеку с вашим приложением,
+но её интерфейс отличается от имеющегося интерфейса.
+- Обратная совместимость: когда нужно подключить новый код к старому интерфейсу, не изменяя существующий.
+- Упрощение взаимодействия: уменьшает сложность работы с несколькими несовместимыми компонентами.
+
+Участники:
+- Target: представляет объекты, которые используются клиентом.
+- Client: использует объекты Target для реализации своих задач.
+- Adaptee: представляет адаптируемый класс, который хотелось бы использовать у клиента вместо объектов Target.
+- Adapter: сам адаптер, который позволяет работать с объектами Adaptee как с объектами Target.
+
+**Пример реализации для рассматриваемой предметной области:**
+
+Классы, реализующие паттерн:
+- IStudentTracker (Target) – Интерфейс системы отслеживания успеваемости студентов
+- StudentManager (Client) – Использует данные о успеваемости, для определеня судьбы студентов
+- AttendanceTracker (Adaptee) – Реализализовывает систему отслеживания посещаемости студентов
+- StudentTrackerAdapter (Adapter) – "оборачивает" стороннюю систему и преобразует её в интерфейс, ожидаемый клиентом
+
+![img_3.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_3.png)
+
+### Паттерн Composite
+Паттерн Компоновщик (Composite) объединяет группы объектов в древовидную структуру
+по принципу "часть-целое и позволяет клиенту одинаково работать как с отдельными объектами,
+так и с группой объектов.
+
+Образно реализацию паттерна можно представить в виде меню,
+которое имеет различные пункты. Эти пункты могут содержать подменю, в которых,
+в свою очередь, также имеются пункты. То есть пункт меню служит с одной стороны частью меню,
+а с другой стороны еще одним меню. В итоге мы однообразно можем работать как с пунктом меню,
+так и со всем меню в целом.
+
+Участники:
+
+- Component – определяет интерфейс для всех компонентов в древовидной структуре
+- Composite – представляет компонент, который может содержать другие компоненты
+и реализует механизм для их добавления и удаления
+- Leaf – представляет отдельный компонент, который не может содержать другие компоненты
+- Client – клиент, который использует компоненты
+
+Классы, реализующие паттерн:
+- IStudent (Component) – Студент обучающийся в вузе
+- Group (Composite) – Группировка студентов (групаа в потоке, поток, курс...)
+- Student (Leaf) – Конкретный студент
+- University (Client) – Обеспечивает обучение студентов
+
+![img.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img.png)
+
+### Паттерн Proxy
+
+Паттерн Заместитель (Proxy) предоставляет объект-заместитель, который управляет доступом к другому объекту.
+То есть создается объект-суррогат, который может выступать в роли другого объекта и замещать его.
+
+Участники:
+
+- Subject – определяет общий интерфейс для Proxy и RealSubject. Поэтому Proxy может использоваться вместо RealSubject
+- RealSubject – представляет реальный объект, для которого создается прокси
+- Proxy – заместитель реального объекта. Хранит ссылку на реальный объект, контролирует к нему доступ,
+может управлять его созданием и удалением. При необходимости Proxy переадресует запросы объекту RealSubject
+- Client – использует объект Proxy для доступа к объекту RealSubject
+
+Классы, реализующие паттерн:
+- IStudent (Subject) – Студент
+- Student (RealSubject) – Студент из группы
+- Elder (Proxy) – Староста отвечает на вопросы преподователя, при надомности спрашивает студентов группы
+- Lecturer (Client) - Задаёт вопросы студентам через старосту
+
+![img_2.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_2.png)
+
+
+# Лабораторная работа №6.
+# Применение структурных паттернов.
+
+## Задание
+1) Дать описание паттернов, указанных во вариантах, для каких целей они могут применяться,
+ какие участники там фигурируют.
+2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности,
+ относящиеся к той же предметной области, что описаны в задании и реализация которых
+ бы в приложении потребовала применения паттерна.
+ ### Ограничения
+ - На каждый паттерн свои сущности
+ - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы,
+ а не элементы разработки (что-то типа «У меня паттерн Singleton,
+ укажу ка я класс-подключение к БД через него», не принимается).
+3) Создать диаграммы классов, отражающие взаимодействие новых
+сущностей (а также используемый паттерн) с классами,
+созданными в рамках 3 лабораторной работы. Отдельно отметить
+классы, которые являются участниками паттерна
+
+## Вариант 3 _AbstractFactory, FactoryMethod, ObjectPool._
+
+### Паттерн AbstractFactory
+
+Паттерн "Абстрактная фабрика" (Abstract Factory) предоставляет интерфейс для создания семейств
+взаимосвязанных объектов с определенными интерфейсами без указания конкретных типов данных объектов.
+
+Участники
+
+- AbstractProductA и AbstractProductB – абстрактные классы, определяющие интерфейс для классов,
+объекты которых будут создаваться в программе
+- ProductA1 / ProductA2 и ProductB1 / ProductB2 – конкретные классы,
+представляющие конкретную реализацию абстрактных классов.
+- AbstractFactory - Абстрактный класс фабрики определяет методы для создания объектов.
+Причем методы возвращают абстрактные продукты, а не их конкретные реализации.
+- Client – класс клиента, использующий класс фабрики для создания объектов.
+При этом он использует исключительно абстрактный класс фабрики AbstractFactory
+и абстрактные классы продуктов AbstractProductA и AbstractProductB и никак не зависит от их конкретных реализаций.
+
+Классы, реализующие паттерн:
+
+- IReportFactory (Abstract Factory) интерфейс фабрики для создания отчетов.
+- FivePointReportFactory (Concrete Factory) фабрика для 5-балльной системы.
+- HundredPointReportFactory (Concrete Factory) фабрика для 100-балльной системы.
+- IPerformanceReport (Abstract Product) интерфейс для отчета по успеваемости.
+- FivePointPerformanceReport и HundredPointPerformanceReport (Concrete Products) конкретные реализации отчетов по успеваемости для 5- и 10-балльной систем.
+- ILaggingStudentsReport (Abstract Product) интерфейс для отчета по отстающим студентам.
+- FivePointLaggingStudentsReport и HundredPointLaggingStudentsReport (Concrete Products) отчеты по отстающим студентам для 5- и 10-балльной систем.
+- ReportManager (Client) класс, который обрабатывает отчеты
+
+![img_4.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_4.png)
+
+### Паттерн FactoryMethod
+
+Фабричный метод (Factory Method) - это паттерн, который определяет интерфейс для создания объектов некоторого класса,
+но непосредственное решение о том, объект какого класса создавать происходит в подклассах.
+То есть паттерн предполагает, что базовый класс делегирует создание объектов классам-наследникам.
+
+Участники:
+
+- Product – интерфейс или абстрактный класс, определяющий структуру создаваемых объектов.
+- ConcreteProductA и ConcreteProductB – конкретные реализации интерфейса “Product”, представляющие первый и второй тип продукта.
+- Creator – абстрактный класс или интерфейс, который определяет фабричный метод для создания объектов типа “Product”.
+- ConcreteCreatorA и ConcreteCreatorB – конкретные реализации “Creator”, которая создаёт объекты типа “ConcreteProductA” и “ConcreteCreatorB” соответственно.
+
+Классы, реализующие паттерн:
+
+- Product IReport – определяет интерфейс для всех отчетов.
+- ConcreteProductA и ConcreteProductB GradeReport и AttendanceReport – конкретные реализации интерфейса “IReport”.
+- Creator ReportCreator – определяет фабричный метод для создания объектов типа “IReport”.
+- ConcreteCreatorA и ConcreteCreatorB GradeReportCreator и AttendanceReportCreator – конкретные реализации “ReportCreator”.
+
+![img_5.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_5.png)
+
+### Паттерн ObjectPool
+
+Object Pool (пул объектов) — это поведенческий паттерн, который используется для оптимизации управления ресурсами.
+Он позволяет многократно использовать уже созданные объекты вместо их повторного создания и уничтожения.
+Это особенно полезно, когда создание объектов является дорогой операцией с точки зрения времени или ресурсов.
+
+Участники:
+
+- Pool – управляет коллекцией объектов. Отвечает за выдачу и возврат объектов из пула. Решает, когда создавать новый объект или использовать существующий.
+- ReusableObject (повторно используемый объект) - объект, который находится в пуле и может быть многократно использован. Включает логику и состояние объекта.
+- Client - получает объект из пула для использования. Возвращает объект обратно в пул, когда он больше не нужен.
+
+Классы, реализующие паттерн:
+
+- Pool FormatPool – управляет доступностью объектов “Format”. Позволяет выдавать объекты формы обучения для студентов.
+- ReusableObject Format – содержит данные, связанные с конкретной формой обучения.
+- Client Student – представляет студента и содержит данные о нем.
+
+![img_6.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_6.png)
+
+
+# Лабораторная работа №7.
+# Применение структурных паттернов.
+
+## Задание
+1) Дать описание паттернов, указанных во вариантах, для каких целей они могут применяться,
+ какие участники там фигурируют.
+2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности,
+ относящиеся к той же предметной области, что описаны в задании и реализация которых
+ бы в приложении потребовала применения паттерна.
+ ### Ограничения
+ - На каждый паттерн свои сущности
+ - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы,
+ а не элементы разработки (что-то типа «У меня паттерн Singleton,
+ укажу ка я класс-подключение к БД через него», не принимается).
+3) Создать диаграммы классов, отражающие взаимодействие новых
+сущностей (а также используемый паттерн) с классами,
+созданными в рамках 3 лабораторной работы. Отдельно отметить
+классы, которые являются участниками паттерна
+
+## Вариант 3 _Mediator, Mediator (2 различных реализации), Strategy._
+
+### Паттерн Mediator
+
+Паттерн "Посредник" (Mediator) представляет такой шаблон проектирования,
+который обеспечивает взаимодействие множества объектов без необходимости ссылаться друг на друга.
+Тем самым достигается слабосвязанность взаимодействующих объектов.
+
+Участники
+
+- Mediator - представляет интерфейс для взаимодействия с объектами Colleague.
+- Colleague - представляет интерфейс для взаимодействия с объектом Mediator.
+- ConcreteColleague1 и ConcreteColleague2 - конкретные классы коллег,
+которые обмениваются друг с другом через объект Mediator.
+- ConcreteMediator - конкретный посредник, реализующий интерфейс типа Mediator.
+
+Классы, реализующие паттерн:
+- Secretary Mediator - Секретарь
+- Client Colleague - Участник вузовской системы
+- Teacher ConcreteColleague1 - Преподователь
+- Student ConcreteColleague2 - Студент
+- Dean`s Office ConcreteMediator - Деканат
+
+![img_8.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_8.png)
+
+- ILms Mediator - Сайт лмс
+- User Colleague - Пользователь лмс
+- Teacher ConcreteColleague1 - Преподователь
+- Student ConcreteColleague2 - Студент
+- Lms ConcreteMediator - Логика сайта лмс
+
+![img_7.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_7.png)
+
+### Паттерн Strategy
+
+Strategy (Стратегия) — шаблон проектирования, который определяет набор алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. В зависимости от ситуации мы можем легко заменить один используемый алгоритм другим. При этом замена алгоритма происходит независимо от объекта, который использует данный алгоритм.
+
+Участники:
+
+- IStrategy: интерфейс, который определяет метод Algorithm(). Это общий интерфейс для всех реализующих его алгоритмов. Вместо интерфейса здесь также можно было бы использовать абстрактный класс.
+- ConcreteStrategy1 и ConcreteStrategy2: классы, которые реализуют интерфейс IStrategy, предоставляя свою версию метода Algorithm(). Подобных классов-реализаций может быть множество.
+- Context: класс, который хранит ссылку на объект IStrategy и связан с интерфейсом IStrategy отношением агрегации.
+
+Классы, реализующие паттерн:
+
+- IStrategy IReportStrategy – общий интерфейс для всех стратегий формирования отчетов.
+- PdfReportStrategy, ExcelkReportStrategy, WordReportStrategy - классы, реализующие формирование отчета в pdf, excel и word.
+- Context ReportContext – контекст, который использует стратегию для формирования отчета.
+
+Этот подход позволяет легко добавлять новые форматы отчетов (например, JSON или HTML) без изменения существующего кода, реализуя принцип открытости/закрытости.
+
+![img_9.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/src/branch/dev/Lab5-6/img_9.png)
\ No newline at end of file