эх
This commit is contained in:
parent
d10a98650d
commit
237a890a7b
419
Report/report.md
419
Report/report.md
@ -1,109 +1,144 @@
|
||||
# Лабораторная работа 1
|
||||
## Компоненты:
|
||||
|
||||
### CustomDataTable:
|
||||
Визуальный компонент вывода таблицы значений
|
||||
|
||||
__Публичные Методы__:
|
||||
- Определить структуру таблицы
|
||||
```c#
|
||||
void ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters)
|
||||
```
|
||||
CustomDataTableColumnParameter
|
||||
```c#
|
||||
/// <summary>
|
||||
/// Параметры столбца таблицы
|
||||
/// </summary>
|
||||
public record CustomDataTableColumnParameter
|
||||
{
|
||||
/// <summary>
|
||||
/// Заголовок
|
||||
/// </summary>
|
||||
public string HeaderName { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина
|
||||
/// </summary>
|
||||
public int Width { get; init; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Видимость
|
||||
/// </summary>
|
||||
public bool Visible { get; init; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Название свойства
|
||||
/// </summary>
|
||||
public string PropertyName { get; init; } = string.Empty;
|
||||
}
|
||||
```
|
||||
- Отчистить таблицу
|
||||
```c#
|
||||
public void Clear()
|
||||
```
|
||||
- Заполнить таблицу
|
||||
```c#
|
||||
public void Fill<TType>(IList<TType> insertValues)
|
||||
```
|
||||
|
||||
__Публичные Функции__:
|
||||
- Получить стоку таблицы в виде объекта
|
||||
```c#
|
||||
public TType? GetRow<TType>(int rowIndex) where TType : new()
|
||||
```
|
||||
|
||||
__Свойства__:
|
||||
- Индекс выбранной строки
|
||||
```c#
|
||||
public int SelectedRow
|
||||
```
|
||||
|
||||
|
||||
### CustomListBox
|
||||
Визуальный компонент выбора из списка значений
|
||||
|
||||
__Публичные Методы__:
|
||||
- Заполнить список значениями
|
||||
```c#
|
||||
public void FillValues(IEnumerable<string> strings)
|
||||
```
|
||||
- Очистить список
|
||||
```c#
|
||||
public void Clear()
|
||||
```
|
||||
Пользовательский визуальный компонент, который наследуется от UserControl.
|
||||
Этот компонент является оберткой вокруг стандартного ListBox и предоставляет функционал для выбора значений из списка.
|
||||
Класс поддерживает заполнение списка значениями, очистку списка,
|
||||
обработку выбора элемента и уведомление об ошибках.
|
||||
|
||||
__Свойства__:
|
||||
- Событие возникающие при изменении списка
|
||||
```c#
|
||||
public event EventHandler ValueChanged
|
||||
```
|
||||
- Обработка ошибок
|
||||
```c#
|
||||
public event Action<Exception> AnErrorOccurred
|
||||
```
|
||||
- Выбранное значение
|
||||
```c#
|
||||
public string Selected
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Свойства:
|
||||
|
||||
1. Selected (тип: `string`)
|
||||
- Функция: Возвращает или устанавливает выбранное значение в списке.
|
||||
- get: Возвращает выбранный элемент списка или пустую строку, если элемент не выбран.
|
||||
- set: Устанавливает выбранный элемент списка, если он существует.
|
||||
|
||||
---
|
||||
|
||||
### Методы:
|
||||
|
||||
1. FillValues(IEnumerable<string> strings)
|
||||
- Функция: Заполняет список значениями из переданной коллекции строк.
|
||||
|
||||
2. Clear()
|
||||
- Функция: Очищает список, сбрасывает выбор и обновляет отображение.
|
||||
|
||||
---
|
||||
|
||||
### Поля:
|
||||
|
||||
1. _selectedChanged (тип: `EventHandler?`)
|
||||
- Функция: Хранит подписчиков на событие изменения выбранного элемента.
|
||||
|
||||
2. _errorOccured (тип: `Action<Exception>?`)
|
||||
- Функция: Хранит подписчиков на событие возникновения ошибки.
|
||||
|
||||
---
|
||||
|
||||
### События:
|
||||
|
||||
1. ValueChanged (тип: `EventHandler`)
|
||||
- Функция: Событие, возникающее при изменении выбранного элемента в списке.
|
||||
|
||||
2. AnErrorOccurred (тип: `Action<Exception>`)
|
||||
- Функция: Событие, возникающее при возникновении ошибки в процессе обработки выбранного элемента.
|
||||
|
||||
### CustomDataTable
|
||||
|
||||
CustomDataTable представляет собой пользовательский визуальный компонент, который наследуется от UserControl.
|
||||
Этот компонент является оберткой вокруг стандартного DataGridView
|
||||
и предоставляет функционал для отображения и управления таблицей данных. Класс поддерживает настройку столбцов,
|
||||
заполнение таблицы данными, очистку таблицы, выбор строки и получение данных из строки в виде объекта.
|
||||
|
||||
---
|
||||
|
||||
### Свойства:
|
||||
|
||||
1. SelectedRow (тип: `int`)
|
||||
- Функция: Возвращает или устанавливает индекс выбранной строки в таблице.
|
||||
- get: Возвращает индекс текущей выбранной строки.
|
||||
- set: Устанавливает выбранную строку по индексу.
|
||||
|
||||
---
|
||||
|
||||
### Методы:
|
||||
|
||||
1. ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters)
|
||||
- Функция: Настраивает столбцы таблицы на основе переданных параметров.
|
||||
|
||||
2. Clear()
|
||||
- Функция: Очищает таблицу, удаляя все строки.
|
||||
|
||||
3. GetRow<TType>(int rowIndex)
|
||||
- Функция: Возвращает данные из указанной строки таблицы в виде объекта типа TType.
|
||||
|
||||
4. Fill<TType>(IList<TType> insertValues)
|
||||
- Функция: Заполняет таблицу данными из переданного списка объектов.
|
||||
|
||||
---
|
||||
|
||||
### Поля:
|
||||
|
||||
- outDataGridView (тип: `DataGridView`)
|
||||
- Функция: Внутренний элемент управления DataGridView, используемый для отображения таблицы.
|
||||
|
||||
---
|
||||
|
||||
### CustomNumericInputField
|
||||
Визуальный компонент ввода целочисленного значения допускающего null
|
||||
|
||||
__Свойства__:
|
||||
- Событие возникающие при изменении поля ввода
|
||||
```c#
|
||||
public event EventHandler NumericInputChanged
|
||||
```
|
||||
- Обработка ошибок
|
||||
```c#
|
||||
public event Action<Exception> 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<Exception>?`)
|
||||
- Функция: Хранит подписчиков на событие возникновения ошибки.
|
||||
|
||||
---
|
||||
|
||||
### События:
|
||||
|
||||
1. NumericInputChanged (тип: `EventHandler`)
|
||||
- Функция: Событие, возникающее при изменении значения в поле ввода (включая активацию флажка "null").
|
||||
|
||||
2. AnErrorOccurred (тип: `Action<Exception>`)
|
||||
- Функция: Событие, возникающее при возникновении ошибки в процессе обработки ввода.
|
||||
|
||||
---
|
||||
|
||||
|
||||
# Лабораторная работа 2
|
||||
@ -111,131 +146,92 @@ __Свойства__:
|
||||
|
||||
### CustomPdfTable
|
||||
|
||||
Компонент для сохранения таблицы в пдф
|
||||
Класс CustomPdfTable представляет собой компонент, который сохраняет данные в виде таблицы в PDF-документ.
|
||||
Этот компонент использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов.
|
||||
Класс поддерживает добавление заголовка документа,
|
||||
создание таблиц на основе двумерных массивов строк и сохранение документа по указанному пути.
|
||||
|
||||
__Публичные Методы__:
|
||||
- Определить структуру таблицы
|
||||
```c#
|
||||
public void SaveToPdf(PdfTableInfo tableInfo)
|
||||
```
|
||||
PdfTableInfo
|
||||
```c#
|
||||
/// <summary>
|
||||
/// Параметры для создания таблиц в пдф
|
||||
/// </summary>
|
||||
public record PdfTableInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// имя файла (включая путь до файла)
|
||||
/// </summary>
|
||||
public string FilePath { get; init; } = @"C:\pdfTable.pdf";
|
||||
---
|
||||
|
||||
/// <summary>
|
||||
/// название документа(заголовок в документе)
|
||||
/// </summary>
|
||||
public string Title { get; init; } = "Таблица";
|
||||
### Методы:
|
||||
|
||||
/// <summary>
|
||||
/// Список таблиц
|
||||
/// </summary>
|
||||
public IEnumerable<string[,]> Tables { get; init; } = [];
|
||||
}
|
||||
```
|
||||
1. SaveToPdf(PdfTableInfo tableInfo)
|
||||
- Функция: Сохраняет данные в PDF-документ с таблицами.
|
||||
- Параметры:
|
||||
- tableInfo: Объект типа PdfTableInfo,
|
||||
- содержащий информацию о пути сохранения файла, заголовке документа и таблицах.
|
||||
- Логика:
|
||||
- Проверяет, что таблицы не пусты.
|
||||
- Создает PDF-документ с помощью PdfCreator.
|
||||
- Добавляет заголовок документа.
|
||||
- Для каждой таблицы создает строки и столбцы на основе двумерного массива строк.
|
||||
- Сохраняет документ по указанному пути.
|
||||
|
||||
---
|
||||
|
||||
### CustomPdfTableWithGrouping
|
||||
|
||||
Компонент создающий таблицу и группирует элементы по 1 столбцу
|
||||
__Публичные Методы__:
|
||||
- Сохранить в пдф
|
||||
```c#
|
||||
public void SaveToPdf<TType>(PdfTableWithGroupingInfo<TType> tableInfo) where TType : class
|
||||
```
|
||||
PdfTableWithGroupingInfo
|
||||
```c#
|
||||
/// <summary>
|
||||
/// Параметры для создания таблицы в пдф с группировкой по 1 столбцу
|
||||
/// </summary>
|
||||
public class PdfTableWithGroupingInfo<TType> where TType : class
|
||||
{
|
||||
/// <summary>
|
||||
/// имя файла (включая путь до файла)
|
||||
/// </summary>
|
||||
public string FilePath { get; init; } = @"C:\pdfTable.pdf";
|
||||
CustomPdfTableWithGrouping создает PDF-документ с таблицей,
|
||||
группируя данные по первому столбцу.
|
||||
Использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов.
|
||||
Класс поддерживает настройку заголовка таблицы, столбцов, строк и группировку данных.
|
||||
|
||||
/// <summary>
|
||||
/// название документа(заголовок в документе)
|
||||
/// </summary>
|
||||
public string Title { get; init; } = "Таблица";
|
||||
---
|
||||
|
||||
/// <summary>
|
||||
/// Высота заголовков
|
||||
/// </summary>
|
||||
public float HeaderHeight { get; init; } = 0.5f;
|
||||
### Методы:
|
||||
|
||||
/// <summary>
|
||||
/// Параметры столбцов
|
||||
/// </summary>
|
||||
public IEnumerable<ColumnInfo> Columns { get; init; } = [];
|
||||
1. SaveToPdf<TType>(PdfTableWithGroupingInfo<TType> tableInfo)
|
||||
- Функция: Сохраняет данные в PDF-документ с таблицей, группируя строки по первому столбцу.
|
||||
- Параметры:
|
||||
- tableInfo: Объект типа PdfTableWithGroupingInfo<TType>,
|
||||
содержащий информацию о пути сохранения файла, заголовке таблицы, столбцах и строках.
|
||||
- Логика:
|
||||
- Проверяет, что столбцы и строки не пусты.
|
||||
- Создает PDF-документ с помощью PdfCreator.
|
||||
- Добавляет заголовок таблицы в документ.
|
||||
- Создает таблицу с указанными столбцами и строками, группируя данные по первому столбцу.
|
||||
- Сохраняет документ по указанному пути.
|
||||
|
||||
|
||||
---
|
||||
|
||||
/// <summary>
|
||||
/// Список таблиц
|
||||
/// </summary>
|
||||
public IEnumerable<RowInfo<TType>> Rows { get; init; } = [];
|
||||
}
|
||||
```
|
||||
|
||||
### CustomPdfHistogram
|
||||
|
||||
Компонент создающий линейную диаграмму
|
||||
__Публичные Методы__:
|
||||
- Сохранить гистограмму в пдф
|
||||
```c#
|
||||
public void SaveToPdf(PdfHistigramInfo histogramInfo)
|
||||
```
|
||||
PdfHistigramInfo
|
||||
```c#
|
||||
/// <summary>
|
||||
/// Параметры для создания линейной диаграммы
|
||||
/// </summary>
|
||||
public record PdfHistigramInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Имя файла (включая путь до файла)
|
||||
/// </summary>
|
||||
public string FilePath { get; init; } = @"C:\pdfTable.pdf";
|
||||
|
||||
/// <summary>
|
||||
/// Заголовок документа
|
||||
/// </summary>
|
||||
public string DocumentTitle { get; init; } = "Гистограмма";
|
||||
|
||||
/// <summary>
|
||||
/// Заголовок диаграммы
|
||||
/// </summary>
|
||||
public string HistogramTitle { get; init; } = "Гистограмма";
|
||||
|
||||
/// <summary>
|
||||
/// Расположение легенды
|
||||
/// </summary>
|
||||
public PdfLegendPosition LegendPosition { get; init; } = PdfLegendPosition.Bottom;
|
||||
|
||||
/// <summary>
|
||||
/// Значения
|
||||
/// </summary>
|
||||
public required IEnumerable<PdfHistogramLineInfo> 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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user