diff --git a/Report/report.md b/Report/report.md index a42f274..56ca2b7 100644 --- a/Report/report.md +++ b/Report/report.md @@ -1,109 +1,144 @@ # Лабораторная работа 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() - ``` +Пользовательский визуальный компонент, который наследуется от UserControl. +Этот компонент является оберткой вокруг стандартного ListBox и предоставляет функционал для выбора значений из списка. +Класс поддерживает заполнение списка значениями, очистку списка, +обработку выбора элемента и уведомление об ошибках. -__Свойства__: -- Событие возникающие при изменении списка - ```c# - public event EventHandler ValueChanged - ``` -- Обработка ошибок - ```c# - public event Action AnErrorOccurred - ``` -- Выбранное значение - ```c# - public string Selected - ``` - +--- + +### Свойства: + +1. Selected (тип: `string`) + - Функция: Возвращает или устанавливает выбранное значение в списке. + - get: Возвращает выбранный элемент списка или пустую строку, если элемент не выбран. + - set: Устанавливает выбранный элемент списка, если он существует. + +--- + +### Методы: + +1. FillValues(IEnumerable strings) + - Функция: Заполняет список значениями из переданной коллекции строк. + +2. Clear() + - Функция: Очищает список, сбрасывает выбор и обновляет отображение. + +--- + +### Поля: + +1. _selectedChanged (тип: `EventHandler?`) + - Функция: Хранит подписчиков на событие изменения выбранного элемента. + +2. _errorOccured (тип: `Action?`) + - Функция: Хранит подписчиков на событие возникновения ошибки. + +--- + +### События: + +1. ValueChanged (тип: `EventHandler`) + - Функция: Событие, возникающее при изменении выбранного элемента в списке. + +2. AnErrorOccurred (тип: `Action`) + - Функция: Событие, возникающее при возникновении ошибки в процессе обработки выбранного элемента. + +### CustomDataTable + +CustomDataTable представляет собой пользовательский визуальный компонент, который наследуется от UserControl. +Этот компонент является оберткой вокруг стандартного DataGridView +и предоставляет функционал для отображения и управления таблицей данных. Класс поддерживает настройку столбцов, +заполнение таблицы данными, очистку таблицы, выбор строки и получение данных из строки в виде объекта. + +--- + +### Свойства: + +1. SelectedRow (тип: `int`) + - Функция: Возвращает или устанавливает индекс выбранной строки в таблице. + - get: Возвращает индекс текущей выбранной строки. + - set: Устанавливает выбранную строку по индексу. + +--- + +### Методы: + +1. ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters) + - Функция: Настраивает столбцы таблицы на основе переданных параметров. + +2. Clear() + - Функция: Очищает таблицу, удаляя все строки. + +3. GetRow(int rowIndex) + - Функция: Возвращает данные из указанной строки таблицы в виде объекта типа TType. + +4. Fill(IList insertValues) + - Функция: Заполняет таблицу данными из переданного списка объектов. + +--- + +### Поля: + +- outDataGridView (тип: `DataGridView`) + - Функция: Внутренний элемент управления DataGridView, используемый для отображения таблицы. + +--- ### CustomNumericInputField -Визуальный компонент ввода целочисленного значения допускающего null -__Свойства__: -- Событие возникающие при изменении поля ввода - ```c# - public event EventHandler NumericInputChanged - ``` -- Обработка ошибок - ```c# - public event Action AnErrorOccurred - ``` -- Значения поля ввода - ```c# - public int? Value - ``` - _Возможно исключение ```InvalidNumericInputValueException```_ +CustomNumericInputField представляет собой пользовательский визуальный компонент, +который наследуется от UserControl. +Этот компонент предназначен для ввода целочисленных значений, которые могут быть null. +Он включает текстовое поле для ввода числа и флажок (чекбокс) для указания, +что значение должно быть null. Компонент также поддерживает события для обработки изменений ввода и ошибок. + +--- + +### Свойства: + +1. Value (тип: `int?`) + - Функция: Возвращает или устанавливает значение поля ввода. + - get: Возвращает введенное целое число или null, если флажок "null" активен. + Если введенное значение не является числом, выбрасывает исключение InvalidNumericInputValueException. + - set: Устанавливает значение поля ввода. Если значение null, активирует флажок "null" и очищает текстовое поле. + +--- + +### Методы: + +1. Приватный: IsNullcheckBox_CheckedChanged(object sender, EventArgs e) + - Функция: Обрабатывает изменение состояния флажка "null". Если флажок активен, + отключает текстовое поле и очищает его. Вызывает событие _numericInputChanged или _errorOccurred в случае ошибки. + +2. Приватный: InputField_TextChanged(object sender, EventArgs e) + - Функция: Обрабатывает изменение текста в поле ввода. + Вызывает событие _numericInputChanged или _errorOccurred в случае ошибки. + +--- + +### Поля: + +1. _numericInputChanged (тип: `EventHandler?`) + - Функция: Хранит подписчиков на событие изменения значения в поле ввода. + +2. _errorOccured (тип: `Action?`) + - Функция: Хранит подписчиков на событие возникновения ошибки. + +--- + +### События: + +1. NumericInputChanged (тип: `EventHandler`) + - Функция: Событие, возникающее при изменении значения в поле ввода (включая активацию флажка "null"). + +2. AnErrorOccurred (тип: `Action`) + - Функция: Событие, возникающее при возникновении ошибки в процессе обработки ввода. + +--- # Лабораторная работа 2 @@ -111,131 +146,92 @@ __Свойства__: ### CustomPdfTable -Компонент для сохранения таблицы в пдф +Класс CustomPdfTable представляет собой компонент, который сохраняет данные в виде таблицы в PDF-документ. +Этот компонент использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов. +Класс поддерживает добавление заголовка документа, +создание таблиц на основе двумерных массивов строк и сохранение документа по указанному пути. -__Публичные Методы__: -- Определить структуру таблицы - ```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; } = []; - } - ``` +1. SaveToPdf(PdfTableInfo tableInfo) + - Функция: Сохраняет данные в PDF-документ с таблицами. + - Параметры: + - tableInfo: Объект типа PdfTableInfo, + - содержащий информацию о пути сохранения файла, заголовке документа и таблицах. + - Логика: + - Проверяет, что таблицы не пусты. + - Создает PDF-документ с помощью PdfCreator. + - Добавляет заголовок документа. + - Для каждой таблицы создает строки и столбцы на основе двумерного массива строк. + - Сохраняет документ по указанному пути. + +--- ### 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"; +CustomPdfTableWithGrouping создает PDF-документ с таблицей, +группируя данные по первому столбцу. +Использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов. +Класс поддерживает настройку заголовка таблицы, столбцов, строк и группировку данных. - /// - /// название документа(заголовок в документе) - /// - public string Title { get; init; } = "Таблица"; +--- - /// - /// Высота заголовков - /// - public float HeaderHeight { get; init; } = 0.5f; +### Методы: - /// - /// Параметры столбцов - /// - public IEnumerable Columns { get; init; } = []; +1. SaveToPdf(PdfTableWithGroupingInfo tableInfo) + - Функция: Сохраняет данные в PDF-документ с таблицей, группируя строки по первому столбцу. + - Параметры: + - tableInfo: Объект типа PdfTableWithGroupingInfo, + содержащий информацию о пути сохранения файла, заголовке таблицы, столбцах и строках. + - Логика: + - Проверяет, что столбцы и строки не пусты. + - Создает PDF-документ с помощью PdfCreator. + - Добавляет заголовок таблицы в документ. + - Создает таблицу с указанными столбцами и строками, группируя данные по первому столбцу. + - Сохраняет документ по указанному пути. + + +--- - /// - /// Список таблиц - /// - 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; } - } - ``` +CustomPdfHistogram представляет собой компонент, который сохраняет гистограмму в PDF-документ. +Этот компонент использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов. +Класс поддерживает добавление заголовка документа, +создание гистограммы на основе переданных данных и сохранение документа по указанному пути. +--- + +### Методы: + +1. SaveToPdf(PdfHistigramInfo histogramInfo) + - Функция: Сохраняет гистограмму в PDF-документ. + - Параметры: + - histogramInfo: Объект типа PdfHistigramInfo, содержащий информацию о пути сохранения файла, заголовке документа, + заголовке диаграммы, данных и положении легенды. + - Логика: + - Проверяет корректность входных данных (путь к файлу, заголовки, данные). + - Создает PDF-документ с помощью PdfCreator. + - Добавляет заголовок документа. + - Создает линейную диаграмму на основе переданных данных. + - Сохраняет документ по указанному пути. + - Исключения: + - ArgumentException: Если входные данные некорректны (например, отсутствует путь к файлу, заголовок или данные). + +--- # Лабораторная работа 3 Программный продукт предназначен для учета успеваемости студентов и управления их данными. Он позволяет хранить информацию о каждом студенте, формировать отчеты в различных форматах (Word, PDF, Excel) -и визуализировать данные с помощью круговой диаграммы. +и визуализировать данные с помощью линейной диаграммы. ### Цель программы -Цель программы — автоматизация процесса учета успеваемости студентов, упрощение работы с данными и формирование отчетов для анализа успеваемости и стипендиальных выплат. +Цель программы — автоматизация процесса учета успеваемости студентов, +упрощение работы с данными и формирование отчетов для анализа успеваемости студентов. ### Функционал программы - Хранение данных о студентах: @@ -281,18 +277,21 @@ __Публичные Методы__: 1) Дать описание паттернов, указанных во вариантах, для каких целей они могут применяться, какие участники там фигурируют. 2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности, - относящиеся к той же предметной области, что описаны в задании и реализация которых + относящиеся к той же предметной области, что описаны в задании и реализация которых бы в приложении потребовала применения паттерна. ### Ограничения: - На каждый паттерн свои сущности - - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы, а не элементы разработки (что-то типа «У меня паттерн Singleton, укажу ка я класс-подключение к БД через него», не принимается). -3) Создать диаграммы классов, отражающие взаимодействие новых -сущностей (а также используемый паттерн) с классами, -созданными в рамках 3 лабораторной работы. Отдельно отметить -классы, которые являются участниками паттерна + - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы, + а не элементы разработки (что-то типа «У меня паттерн Singleton, + укажу ка я класс-подключение к БД через него», не принимается). +3) Создать диаграммы классов, отражающие взаимодействие новых + сущностей (а также используемый паттерн) с классами, + созданными в рамках 3 лабораторной работы. Отдельно отметить + классы, которые являются участниками паттерна ## Вариант 3: _Adapter, Composite, Proxy_ ### Паттерн Adapter + Паттерн Адаптер используется для того, чтобы объекты с несовместимыми интерфейсами могли работать вместе. Он оборачивает один интерфейс в другой, @@ -419,7 +418,7 @@ __Публичные Методы__: - FivePointLaggingStudentsReport и HundredPointLaggingStudentsReport (Concrete Products) отчеты по отстающим студентам для 5- и 10-балльной систем. - ReportManager (Client) класс, который обрабатывает отчеты -![img_4.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/raw/branch/dev/Lab5-6/img_4.png) +![img_4.png](https://i.pinimg.com/originals/43/89/ed/4389ed56415070fc606be04621db69cc.jpg) ### Паттерн FactoryMethod @@ -506,7 +505,7 @@ Object Pool (пул объектов) — это поведенческий па - Student ConcreteColleague2 - Студент - Dean`s Office ConcreteMediator - Деканат -![img_8.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/raw/branch/dev/Lab5-6/img_8.png) +![img_8.png](https://i.pinimg.com/originals/7f/c3/40/7fc340de38957f5c29de3a6a6689a252.png) - ILms Mediator - Сайт лмс - User Colleague - Пользователь лмс @@ -514,7 +513,7 @@ Object Pool (пул объектов) — это поведенческий па - Student ConcreteColleague2 - Студент - Lms ConcreteMediator - Логика сайта лмс -![img_7.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/raw/branch/dev/Lab5-6/img_7.png) +![img_7.png](https://i.pinimg.com/originals/ac/c5/67/acc567be76d33349c35fd5fc10f84b9f.jpg) ### Паттерн Strategy