Вы находитесь на странице: 1из 79

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Сибирский государственный университет геосистем и технологий»
(СГУГиТ)
Институт геодезии и менеджмента
Кафедра прикладной информатики и информационных систем

КУРСОВАЯ РАБОТА
по дисциплине «Моделирование систем»
Разработка информационной системы анализа пространственно-временного
состояния структурных элементов техногенного объекта на примере
варианта №52

Обучающийся:
Фещенко Надежда Витальевна
_________________________________
Группа: БИ-22
Руководитель: Бугаков П.Ю., к.т.н.,
доцент
Зав. кафедрой: Бугакова Т. Ю.
Дата допуска к защите: 01.06.2022

Оценка по результатам защиты:

Подписи членов комиссии:


__________________ (Басаргин А.А.)
__________________ (Кацко С.Ю.)

Новосибирск 2022
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ГЕОСИСТЕМ И
ТЕХНОЛОГИЙ»
(СГУГиТ)
Институт геодезии и менеджмента
Кафедра прикладной информатики и информационных систем

УТВЕРЖДАЮ
Зав. кафедрой Бугакова Т.Ю.
«14» февраля 2022г.

ЗАДАНИЕ
НА КУРСОВУЮ РАБОТУ
по дисциплине Моделирование систем
Обучающемуся Фещенко Надежде Витальевне
Группа БИ-22
Тема работы (проекта): Разработка информационной системы анализа
пространственно-временного состояния структурных элементов
техногенного объекта на примере варианта №52
Руководитель: Бугаков Петр Юрьевич, к.т.н., доцент
Тема утверждена распоряжением по институту ИГиМ 12.10.2021 № Р-4
Срок сдачи выполненной работы 01.06.2022
Задание или перечень рассматриваемых вопросов:
1) РАЗРАБОТКА МОДЕЛИ ИНФОРМАЦИОННОЙ СИСТЕМЫ
НЕПРЕРЫВНО-ДИСКРЕТНОГО ПОТОКА ДАННЫХ
2) РАЗРАБОТКА ЛОГИЧЕСКОЙ СТРУКТУРЫ МОДЕЛИ
3) ТЕСТИРОВАНИЕ МОДЕЛИ МЕТОДОМ ЧЕРНОГО ЯЩИКА
Перечень графического материала с указанием основных чертежей и (или)
иллюстративного материала (формат А4) Схема расположения контрольных
точек на объекте исследования
Исходные данные к курсовой работе: Таблица геопространственных данных
контрольных точек, расположенных на объекте исследования
3

ГРАФИК
выполнения курсовой работы
Отметка о
Этапы выполнения курсовой работы (проекта) Срок выполнении этапа
исполнения работы
(дата, подпись
руководителя)
Инструктаж по ознакомлению с требованиями охраны 14.02.2022
труда, техники безопасности, пожарной безопасности,
а также правилами внутреннего трудового распорядка.
Постановка задач и целей, работа с литературой
Разработка имитационной модели непрерывно- 14.02.2022 –
дискретного потока псевдослучайных 27.02.2022
последовательности данных процедурами их
машинной генерации.
Математическое моделирование системы обработки на 28.02.2022 –
основе математических схем моделирования систем. 13.03.2022

Построение концептуальной модели системы перехода 14.03.2022 –


объекта из состояния в состояние. Переход от 20.03.2022
концептуальной модели к блочной.
Разработка логической структуры модели. 21.03.2022 –
27.03.2022
Программная реализация модели системы обработки 28.03.2022–
непрерывно-дискретного потока данных для 17.04.2022
определения перехода объекта из состояния в
состояние.
Планирование машинного эксперимента реализации 18.04.2022 –
модели системы обработки непрерывно-дискретного 02.05.2022
потока данных для определения перехода объекта из
состояния в состояние.
Тестирование модели системы. Метод «черного 03.05.2022 –
ящика» 15.05.2022
Оценка точности результатов моделирования системы 16.05.2022 –
обработки непрерывно-дискретного потока данных для 22.05.2022
определения перехода объекта из состояния в
состояние.
Подготовка отчета 23.05.2022 –
01.06.2022
Сдача отчета на кафедру 01.06.2022
Защита отчетов 02.06.2022 –
08.06.2022

Руководитель 14.02.2022, Бугаков П.Ю.


(подпись, дата)

Обучающийся 14.02.2022, Фещенко Н.В.


(подпись, дата)
4

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ......................................................................................................................
1 РАЗРАБОТКА ИМИТАЦИОННОЙ МОДЕЛИ НЕПРЕРЫВНОГО
ДИСКРЕТНОГО ПОТОКА............................................................................................
1.1 Постановка цели моделирования системы ..................................................
1.2 Описание объекта моделирования .................................................................
1.3 Концептуальная модель информационной системы ................................
1.4 Автоматизированная система мониторинга ...............................................
1.5 Математическая модель информационной системы ..............................
2 РАЗРАБОТКА ЛОГИЧЕСКОЙ СТРУКТУРЫ МОДЕЛИ СИСТЕМЫ.................
2.1 Разработка обобщенной блок схемы ...........................................................
2.2 Разработка логической блок схемы .............................................................
2.3 Разработка детальной блок-схемы ...............................................................
2.4 Разработка программной блок-схемы .........................................................
3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ ПРОГРАММЫ.............................................
3.1 Программная реализация модели .................................................................
3.2 Описание интерфейса программы ................................................................
3.3 Тестирование системы методом «черного ящика» ................................
3.3.1 Имитация пространственно-временного состояния «Состояние
покоя»...............................................................................................................54
3.3.2 Имитация пространственно-временного состояния
«Поступательное равномерное движение».................................................55
3.3.3 Имитация пространственно-временного состояния «Скачок».......56
3.3.4 Имитации пространственно-временного состояния «Циклическое
движение»........................................................................................................57
3.3.5 Проверка параметров точности системы.........................................58
ЗАКЛЮЧЕНИЕ.............................................................................................................
СПИСОК ЛИТЕРАТУРЫ.............................................................................................
ПРИЛОЖЕНИЕ А (ОБЯЗАТЕЛЬНОЕ).......................................................................
Программный код..........................................................................................................
5

ВВЕДЕНИЕ

В настоящее время повсеместно используются различные


информационные системы, позволяющие выполнять определенные задачи.
Вычислительная мощность информационной системы способна оперировать
сложными для мониторинга и расчета данными, как например, данные о
целостности некоторых техногенных объектов и прогнозе их состояния.
Обладая преимуществом в скорости и точности расчетов, информационная
система является наиболее эффективным инструментом для получения и
обработки данных.
Необходимость выявления аварийного состояния техногенного объекта
для принятия решения о его последующей эксплуатации определяет цель
разработки данной информационной системы.
Целью данной курсовой работы является разработка информационной
системы анализа пространственно-временного состояния структурных
элементов техногенного объекта.
Для достижения поставленной цели необходимо выполнить следующие
задачи:
1. Разработать модель информационной системы непрерывно-
дискретного потока данных;
2. Разработать логическую структуру модели;
3. Разработать программу для реализации задания
4. Провести тестирование методом «черного ящика».
6

1 РАЗРАБОТКА ИМИТАЦИОННОЙ МОДЕЛИ НЕПРЕРЫВНОГО


ДИСКРЕТНОГО ПОТОКА

1.1 Постановка цели моделирования системы

Цель: разработка информационной системы анализа пространственно-


временного состояния структурных элементов техногенного объекта с
помощью языка программирования С# и среды разработки Visual Studio
2022.
Для получения необходимого результата, нужно выполнить следующие
задачи:
1. Разработать модель информационной системы обработки непрерывно-
дискретного потока данных;
2. Разработать логическую структуру модели;
3. Разработать программу для реализации задания;
4. Протестировать модель методом «черного ящика».

1.2 Описание объекта моделирования

Объект моделирования представляет собой конструкцию, состоящую из


2-x структурных блоков: А и Б. На рисунке 1 представлен план объекта с
нанесенными контрольными точками.
Тип техногенного объекта: Административное здание на буронабивных
сваях.
Точность измерений Т = 0,0004 м.
7

Рисунок 1 – План конструкции объекта моделирования с распределенными


марками

На рисунке 2 представлены имитационные данные об исходных


контрольных точках, заданных в варианте.

Рисунок 2 – Исходные данные варианта

1.3 Концептуальная модель информационной системы

Первым этапом моделирования информационной системы является


построение концептуальной модели.
Концептуальная модель объекта – обобщенная формальная схема
модели, в которой определяются границы между объектом и внешней
средой, цель моделирования, метод оценки эффективности, типовые
8

математические схемы моделирования, необходимые гипотезы,


предположения и ожидаемые результаты [1].
Концептуальная модель рассматривается как теоретическая основа при
разработке моделей систем и отражает основные концепции принятия
решения о построении модели. Схематически концептуальная модель
системы показана на рисунке 3.

Рисунок 3 – Концептуальная модель информационной системы

Имитационное моделирование – это создание модели, в которой


реализуется задача, в которой путем имитации элементарных явлений,
составляющие процесс, определяется процесс функционирования системы во
времени [15].
Имитационная модель применяется в данном случае для проведения
эксперимента в искусственно созданной системе с использованием
математического описания реальных процессов, так как проведение
эксперимента на реальном объекте не представляется возможным.
В данной системе используется имитационная модель, которая
подразумевает исследования, при которых изучаемая система заменяется с
реального объекта на его модель, в целях анализа и оценки его
функционирования.
Суть имитационного моделирования заключается в декомпозиции всей
системы исследования на структурные части. При этом должно соблюдаться
9

условие сохранения всех функциональных связей между частями системы и


возможность их воспроизведения при помощи математических алгоритмов.
За счет этого появляется возможность управлять процессом имитации и
анализировать результаты [1].
Имитационную модель можно описать таким образом: датчики,
распределенные структурно по всему объекту, отправляют сигнал с
информацией о расположении на приемник, обрабатывающий эту
информацию. Полученные данные передаются в базу данных,
обновляющуюся с некоторой периодичностью для введения новой
информации. База данных передает информацию на блок аналитики и
управляется из блока управления.
Из базы данных информация о состоянии объекта передается на блок
аналитики. В нем с помощью математических средств осуществляется
обработка данных и расчеты по принципу декомпозиции и агрегирования.
Блок управления отвечает за представление полученной информации в
доступном для пользователя виде и предоставление возможности управления
системой. Подразумевается, что пользователем информационной системы
лицо, принимающее решение, последнее звено в данной имитационной
модели.

1.4 Автоматизированная система мониторинга

Автоматизированная система мониторинга конструкций (АСМК) —


система сбора, хранения и анализа основных признаков или параметров
описания конструкции для мониторинга состояния конкретного объекта в
целом.
Автоматизированная система мониторинга зданий и сооружений
позволяет обеспечить безопасное функционирование сооружений за счёт
своевременного обнаружения негативного изменения технического
состояния конструкций. АСМК необходима, для отслеживания степени и
10

скорости изменения технического состояния объекта, и принятия экстренных


мер по предотвращению его обрушения [17].
В данной работе имитируется изменение состояния системы ‒
техногенного объекта. Реальному объекту сопоставляется аналоговая модель
системы геодезических точек в виде базы данных. 
Примерами автоматизированной системы мониторинга являются:
 GeoMoSMonitor – является продуктом швейцарской компании
Lecia GeoMoS. Используется для деформационного мониторинга.
 Emercit – от компании ИАС ЭМЕРИСТ. Данная система
предназначена для организации территориально распределенного
оперативного контроля состояния окружающей среды с целью
обнаружения и прогнозирования опасных явлений и процессов.
 SAYMON – предназначен для постоянного и статистического
наблюдения и контроля состояния показателей работы сети,
оборудования, приложений и сервисов [16].
Автоматизированная система мониторинга снижает стоимость и
повышает точность периодических геодезических изысканий. Кроме того,
автоматическая съемка основных параметров и отклонений фактических
размеров от проектных показателей позволяет выявить критические дефекты
конструкции на начальных этапах, когда у владельцев объекта есть время на
их устранение. Таким образом, методы автоматического мониторинга
повышают общий уровень безопасности зданий, сооружений, линейных и
площадных объектов [4].
На состояние объекта влияет некоторая совокупность внешних
факторов, представляющих случайный процесс. Датчики на контрольных
точках отправляют на приемник сигнал с показанием высоты относительно
уровня поверхности с определенной периодичностью, составляя описание
движения объекта в целом. Данные о положении в пространстве
обрабатываются в приемнике и составляют на выходе из него базу данных,
являющуюся имитационной моделью.
11

1.5 Математическая модель информационной системы

Мaтематическую модель объекта получают путем его описания


математическими средствами, которые позволяют при помощи формальных
процедур заменять свойства реальных объектов математическими объектами:
векторами, множествами, числами, матрицами и т.д. [1].
В общем виде математическая модель объекта представляется
уравнением
F ( X , Y )=const (1)
где X, Y - множества управляемых и неуправляемых параметров модели.

Также массив данных для каждого геодезического знака можно свести к


вектор-функции:

S ( t ) =S ( H 0 ( t ) , H 1 ( t ) , … , H n (t ) ) , (2)

где цикл измерений можно характеризовать последовательностью,


которая образуется из координат точек геодезической системы:
H n=h1 ,n , h2 ,n , … , hm ,n (3)

Для анализа положения точки в 2-х мерном пространстве необходимо


рассчитать ее фазовые координаты: длину вектора М, образуемого двумя
точками и угол α, образующийся между начальным и текущим векторами.
Длина вектора М вычисляется по следующей формуле:
M =√ H 20 + H 21 +…+ H 2n (4)

Длина угла α вычисляется по следующей формуле:


H1∙ H2 (5)
α =arcos( )
|H 1|∙|H 2|
Прогнозные значения рассчитываются по следующим формулам:
12

S1= A ∙ M 0+ ( 1− A ) ∙ M 0 , (6)

S2 … n−1=A ∙ M i + ( 1− A ) ∙ M i−1 , (7)

Sn = A ∙
∑ Mi +( 1− A ) ∙ M (8)
i−1
n
Для точности вычисления рассматриваются верхняя и нижняя границы
вектора, которые вычисляются по формуле:

b i ( t i )=H i ( t i )−∆ (9)


(10)
c i ( t i ) =H i ( t i ) + ∆

С учетом формул (9, 10) будут вычисляются фазовые координаты.


Тогда, если следующие неравенство выполняется, система считается
устойчивой
¿ (11)

Алгоритм машинной генерации исходных данных начинается с расчета


среднего изменения высоты первой контрольной точки по всем эпохам по
формуле:

∆ H ср =
|H 0 + H 1|+|H 1 + H 2|+…+|H n−1+ H n|
1 1 1 1 1 1
(12)
n−1

Далее для каждой точки вычисляется H для новой эпохи по формуле:

i i ∆ H ср (13)
H new =H 0+ rand (± )
2
13

Рисунок 5 – Математическая схема


14

2 РАЗРАБОТКА ЛОГИЧЕСКОЙ СТРУКТУРЫ МОДЕЛИ СИСТЕМЫ

Логическая структура модели системы обработки непрерывно-


дискретного потока входных данных для контроля перехода объекта из
одного состояния в другое представляется следующими блок-схемами:
обобщенной блок-схемой, логической блок схемой, детальной блок-схемой,
программной блок-схемой.

2.1 Разработка обобщенной блок схемы

Обобщенная блок-схема имеет линейную структуру (без разветвлений и


циклов). Она показывает общий функциональный состав программы по
уровням декомпозиции. (рисунок 4).
15

Рисунок 4 – Обобщённая блок-схема


16

2.2 Разработка логической блок схемы

Логическая блок-схема функционирования программы отражает


порядок работы программы с точки зрения пользователя. Для обозначения
выбора того или иного пользовательского действия в составе блок-схемы
должны использоваться условия (рисунки 5-7).
17

Рисунок 5 – Логическая блок-схема (часть 1)


18

Рисунок 6 – Логическая блок-схема (часть 2)


19

Рисунок 7 – Логическая блок-схема (часть 3)


20

2.3 Разработка детальной блок-схемы

Детальная блок-схема может представлять собой одну или несколько


блок-схем, показывающих программную реализацию основных расчетных
модулей или функций. На этой блок-схеме детально изображаются все
алгоритмические конструкции с указанием используемых переменных,
массивов, структур и так далее. (рисунки 8-29).
Детальная блок-схема реализации загрузки базы данных и схемы
объекта в программу представлена на рисунке 8. Программный код 1.

Рисунок 8 – Детальная блок-схема загрузки базы данных в программу


21

Детельная блок-схема реализации выгрузки таблицы из базы данных


представлена на рисунке 9. Программный код 2.

Рисунок 9 – Детальная блок-схема выгрузки таблиц с данными из базы


данных
22

Детальная блок-схема реализация открытия выбранной пользователем


таблицы с данными представлена на рисунке 10. Програмный код 3.

Рисунок 10 – Детальная блок-схема открытия выбранной пользователем


таблицы с данными

Детальные блок-схемы реализации добавления сгенерированной строки


с данными в таблицу представлены на рисунках 11-12. Программный код 4.
23

Рисунок 11– Добавление сгенерированной строки с данными в таблицу


(часть 1)
24

Рисунок 12 – Добавление сгенерированной строки с данными в таблицу


(часть 2)

Детальные блок-схемы расчета первого уровня декомпозиции


представлены на рисунках 13-20. Программный код 5.1-5.7.
25

Рисунок 13 – Детальная блок-схема расчета первого уровня декомпозиции


(часть 1)
26

Рисунок 14 – Детальная блок-схема расчета первого уровня декомпозиции


(часть 2)
27

Рисунок 15 –Детальная блок-схема расчета первого уровня декомпозиции


(часть 3)
28

Рисунок 16 –Детальная блок-схема расчета первого уровня декомпозиции


(часть 4)
29

Рисунок 17 –Детальная блок-схема расчета первого уровня декомпозиции


(часть 5)
30

Рисунок 18 –Детальная блок-схема расчета первого уровня декомпозиции


(часть 6)
31

Рисунок 19 –Детальная блок-схема расчета первого уровня декомпозиции


(часть 7)
32

Рисунок 20 –Детальная блок-схема расчета первого уровня декомпозиции


(часть 8)

Детальные блок-схемы реализации второго уровня декомопзиции


представлены на рисунках 21-25. Програмный код 6.1-6.4.
33

Рисунок 21 – Детальная блок-схема ввода количества блоков


34

Рисунок 22 – Детальная блок-схема выбора блока для распределения точек


35

Рисунок 23 – Детальная блок-схема расчета второго уровня декомпозиции


(часть 1)
36

Рисунок 24 – Детальная блок-схема расчета второго уровня декомпозиции


(часть 2)
37

Рисунок 25 – Детальная блок-схема заполнения графика для второго уровня


декомпозиции

Детальные блок-схемы реализации четвертого уровня декомпозиции


представлены на рисунках 26-27. Программный код 7.1-7.2.
38

Рисунок 26 – Детальная блок-схема построения графика по четвертому


уровню декомпозиции
39

Рисунок 27 – Детальная блок-схема выбора точек для отображения расчетов

2.4 Разработка программной блок-схемы

Программная блок-схема изображает связь основных программных


модулей или функций, показанных в виде детальных блок-схем.
Программная блок-схема представлена на рисунках 28-30:
40

Рисунок 28 – Программная блок-схема (часть 1)


41

Рисунок 29 – Программная блок-схема (часть 2)


42

Рисунок 30 – Программная блок-схема (часть 3)


43

3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ ПРОГРАММЫ

3.1 Программная реализация модели

Программа состоит из нескольких форм.


Основная форма содержит элементы управления исходными данными и
уровнями декомпозиции (рисунок 31).
 7 элементов «Button». Используются для выбора базы данных,
открытия таблиц с данными, добавления строк в таблицу,
сохранения измененных пользователем значений Т и А, а также для
перехода к окнам расчета уровней декомпозиции.
 2 элемента «TextBox». Используются для изменения значений T и A
 3 элемента «label». Используются для подписей.
 1 элемент «ComboBox». Используется для выбора таблицы в
открытой базе данных.
 1 элемент «PictureBox». Используется для вывода схемы объекта.
 1 элемент «DataGridView». Используется для отображения таблицы
исходных данных.
 1 элемент «RichTextBox». Используется для описания подсказки.
44

Рисунок 31 – Интерфейс главного окна информационной системы

На форме «Первый уровень декомпозиции» (рисунок 32).


 1 элемент «RichTextBox». Используется для описания подсказки.
 2 элемента «label». Используются для подписей.
 2 элемента «DataGridView». Используются для отображения
результатов расчетов первого уровня декомпозиции.
 2 элемента «Chart». Используются для вывода графиков по
результатам расчета первого уровня декомпозиции.
 10 элементов «CheckBox». Используются для отображения
отдельных серий точек на графике.
45

Рисунок 32 – Интерфейс формы «Первый уровень декомпозиции»

На форме «Второй уровень декомпозиции» (рисунок 33).


 1 элемент «RichTextBox». Используется для описания подсказки.
 1 элемент «NumericUpDown». Используется для ввода количества
блоков.
 4 элемента «Button». Используются для сохранения количества
блоков; Переноса элементов из одного списка в другой; Для вывода
общих расчетов по всем блокам.
 2 элемента «ComboBox». Используются для выбора блока для
распределения марок и отображения результатов расчетов по
отдельному блоку.
 2 элемента «ListBox». Используются для распределения марок по
блокам.
 3 элемента «Chart». Используются для вывода графиков по
результатам расчета второго уровня декомпозиции.
 2 элемента «DataGridView». Используются для вывода результатов
расчетов.
46

 1 элемент «label». Используется для подписи элемента.

Рисунок 33 – Интерфейс формы «Второй уровень декомпозиции»

На форме «Четвертый уровень декомпозиции» (рисунок 34).


 1 элемент «RichTextBox». Используется для описания подсказки.
 1 элемент «CheckedListBox». Используется для выбора точки для
отображения результатов расчетов.
 1 элемента «Chart». Используется для построения графика.

Рисунок 34 – Интерфейс формы «Четвертый уровень декомпозиции»


47

3.2 Описание интерфейса программы

При запуске программы открывается основное окно (рисунок 35).

Рисунок 35 – Окно программы при запуске

Все элементы окна, кроме кнопки «Выбрать базу данных» до начала


работы с программой являются заблокированными, так как для выполнения
функций расчета программе нужны исходные данные из выбранной таблицы.
При нажатии на кнопку «Выбрать базу данных» открывается диалоговое
окно (рисунок 36).

Рисунок 36 – Диалоговое окно открытия базы данных

После выбора файла с базой данных и нажатия кнопки «Открыть»


пользователю будет предоставлена возможность выбрать из базы данных
таблицу для отображения данных в выпадающем списке «Таблица». Для
48

отображения выбранной таблицы необходимо нажать на кнопку «Открыть


таблицу» (рисунок 37).

Рисунок 37– Интерфейс основного окна с исходными данными

Для изменения значений T и A необходимо записать новые значения в


поля «Точность измерений Т» и «Коэффициент А», а затем нажать кнопку
«Сохранить Т и А. В случае неверного ввода данных программа выведет
сообщение об ошибке (рисунок 38).

Рисунок 38 – Окно сообщения об ошибке записи значений Т и А

В случае успешного сохранения новых данных программа выведет


сообщение об успешном обновлении (рисунок 39).
49

Рисунок 39 – Окно сообщения об успешном обновлении значений Т и А

При нажатии на кнопку «Добавить строку» программа добавит случайно


сгенерированные данные в конец таблицы, основываясь на уже
существующих данных таблицы (рисунок 40).

Рисунок 40 – Интерфейс основного окна с исходными данными после


добавления новых строк

По нажатию кнопки «Первый уровень декомпозиции» производятся


расчеты первого уровня, результаты расчета выводятся в соответствующие
таблицы и графики (рисунок 41).
50

Рисунок 41 – Интерфейс формы «Первый уровень декомпозиции» с


расчетами по исходным данным

По нажатию кнопки «Второй уровень декомпозиции» выводится окно


для распределения точек и блоков. Для начала работы в этом окне требуется
указать количество блоков объекта. При указании числа меньшего, чем ноль,
и большего, чем 12, программа автоматически указывает одно из крайних
значений этого диапазона. Также программа автоматически именует блоки в
алфавитном порядке (рисунок 42).
51

Рисунок 42– Интерфейс формы «Второй уровень декомпозиции» после


выбора количества блоков

После происходит распределение точек по блокам. В левом списке


выбираются точки для распределения на выбранный в выпадающем списке
блок и с помощью кнопок, представляющих стрелки, переместить в правый
список. Для подтверждения распределения точек по блокам требуется нажать
кнопку «Подтвердить». Если в один или несколько блоков было
распределено нулевое (рисунок 43) или неравное (рисунок 44) количество
точек, программа выведет сообщение об ошибке.

Рисунок 43 – Окно сообщения об ошибке при нажатии кнопки


«Подтвердить» без распределения точек
52

Рисунок 44 – Окно сообщения об ошибке при распределении разного


количества точек в блоки

При корректном распределении точек программа выведет изображение


схемы объекта. В выпадающем списке выбирается блок для отображения
расчетов второго уровня декомпозиции (рисунок 45)

Рисунок 45 – Интерфейс формы «Второй уровень декомпозиции» с


расчетами по исходным данным

При нажатии на кнопку «Четвертый уровень декомпозиции» программа


выводит окно с графиком и набором точек, доступных для отображения на
этом графике (рисунок 46)
53

Рисунок 46 – Интерфейс формы «Четвертый уровень декомпозиции» с


расчетами по исходным данным

3.3 Тестирование системы методом «черного ящика»

Модель «черного ящика» – это система с известными выходными и


входными параметрами и неизвестным внутренним устройством. На рисунке
33 изображена схема модели «чёрного ящика».
При тестировании методом «чёрного ящика» систему представляют, как
объект, внутренние механизмы которой неизвестны. Цель тестирования
методом «чёрного ящика» в воздействии на систему только через входные
данные и получения ожидаемых результатов на выходе.
Для точной проверки адекватности в модель объекта закладывают
несколько видов движения:
 Состояние покоя
 Поступательное равномерное движение
 Скачок
 Циклическое движение
54

Рисунок 58 – Модель системы «чёрный ящик»

3.3.1 Имитация пространственно-временного состояния «Состояние


покоя»

Имитация движения «Состояние покоя»: на рисунке 60 содержится


информация об исходных данных. При имитации движения «Состояние
покоя» значения высот контрольных точек не меняются с течением времени.

Рисунок 47 – Исходные данные имитации состояния покоя

Перейдём к отображению графика и расчётных значений, имитирующих


движение «Состояние покоя» (рисунок 60).

Рисунок 48 – Окно реузльтата тестирования имитации состояния покоя


55

Вывод: значения фазовых координат не меняются со временем, а


графиком фазовых координат является точка, это доказывает, что программа
адекватно отражает имитацию состояния покоя.

3.3.2 Имитация пространственно-временного состояния


«Поступательное равномерное движение»

Имитация состояния «Поступательное равномерное движение»: на


рисунке 61 содержится информация о исходных данных. При имитации
состояния «Поступательное равномерное движение» значения высот
контрольных точек меняются с течением времени, с шагом 0,0002 м.

Рисунок 49 – Исходные данные имитации поступательного


равномерного движения

Перейдём к отображению графика и расчётных значений, имитирующих


движение «Равномерное поступательное движение» (рисунок 62).

Рисунок 50 – Окно результата имитации поступательного равномерного


движения
56

Вывод: графиком фазовых координат является горизонтальная прямая,


это доказывает, что программа адекватно отражает имитацию состояния
равномерного поступательного движения.

3.3.3 Имитация пространственно-временного состояния «Скачок»

Имитация состояния «Скачок»: на рисунке 63 содержится информация


об исходных данных. В основе лежит поступательное равномерное
движение, но с резким изменением значения на 4 эпохе.

Рисунок 51 – Исходные данные имитации скачка

Перейдём к отображению графика и расчётных значений,


имитирующих движение «Скачок» (рисунке 64).

Рисунок 52 – Окно результата тестирования имитации скачка


57

Вывод: на 5 эпохе наблюдается резкое изменение значения, на графике


отображается в виде резкого повышения относительно прямой. Это
доказывает, что программа адекватно отражает имитацию скачка.

3.3.4 Имитации пространственно-временного состояния «Циклическое


движение»

Имитацию состояния «Циклическое движение»: на рисунке 65


содержится информация об исходных данных. При имитации состояния
«Циклическое движение» значения высот контрольных точек возрастают на
определенное значение с течением времени, а затем убывают.

Рисунок 53 – Исходные данные имитации циклического движения

Перейдём к отображению графика и расчётных значений, имитирующих


движение «Циклическое движение» (рисунок 66).

Рисунок 54 – Окно результата тестирования имитации циклического


движения
58

Вывод: графиком фазовой траектории является цикл. Следовательно,


программа работает корректно.

3.3.5 Проверка параметров точности системы

Для оценки реакции системы на точность в основу возьмём исходные


данные имитационной модели «Поступательное равномерное движение».
Для проверки необходимо загрузить в программу таблицы с исходными
данными и посмотреть на какой эпохе система перейдёт в неустойчивое
состояние.
Для начала вручную высчитаем на какой эпохе должен совершиться
переход.
Для этого рассчитаем двойную точность:
Точность измерение E=0,0004.
0,0004/0,0002=2 – количество устойчивых эпох без учета нулевой
строки.

Исходя из данных имитационной модели «Поступательного


равномерного движения», переход в неустойчивое состояние при
равномерном поступательном движении произойдёт на 3 эпохе. (рисунок 55).
59

Рисунок 55 – Окно результатов тестирования изменения точности на


имитации поступательного равномерного движения

Для оценки адекватности прогноза необходимо воспользоваться


формулой 14:

|M i−M i пр|≤ R . (14)

Если неравенство будет выполняется, прогноз считается адекватным


(рисунок 68).
60

Рисунок 56 – Окно оценки адекватности прогноза


61

ЗАКЛЮЧЕНИЕ

В данной работе была разработана информационная система анализа


пространственно-временного состояния структурных элементов
техногенного объекта с помощью языка программирования C# в среде
разработки Visual Studio 2022.
В ходе выполнения работы выполнены следующие задачи:
1) разработана модель информационной системы непрерывно-
дискретного потока данных;
2) разработана логическая структура модели;
3) разработана программа на языке С#;
4) модель была протестирована методом «черного ящика».
Во время тестирования методом «черного ящика» определили, что
программа работает корректно. Из этого следует, что поставленная перед
задача выполнена.
62

СПИСОК ЛИТЕРАТУРЫ

1 Бугакова, Т. Ю. Моделирование систем [Текст]: учеб. пособие / Т. Ю.


Бугакова, П. Ю. Бугаков. – Новосибирск: СГУГиТ, 2020. – 95 с
2 Бахвалов, Л. Моделирование систем / Л. Бахвалов. – М.: Горная
книга, 2015. – 878 c.
3 Системный анализ, моделирование и принятие решений [Электронный
ресурс]: учебный справочник / Т. Ю. Бугакова, И. Г. Вовк; СГГА. –
Новосибирск: СГГА, 2010. –72 с. –Режим доступа: http://lib.sgugit.ru.
4 Гуляев, Ю. П. Математическое моделирование. Прогнозирование
деформаций сооружений гидроузлов по геодезическим данным
(динамическая модель) [Электронный ресурс]: учеб. пособие / Ю. П.
Гуляев, В. С. Хорошилов. –Новосибирск: СГГА, 2014. –78 с. –Режим
доступа: http://lib.sgugit.ru.
5 Курс лекций по дисциплине "Моделирование систем”.
6 Голубева, Н. В. Математическое моделирование систем и процессов /
Н.В. Голубева. – М.: Лань, 2013. - 192 c.
7 Фролов С.В., Третьяков А.А., Путин С.Б., Скворцов С.А.
Моделирование систем: Методические указания. - Тамбов:
Издательство ТГТУ, 2007. – 23 c.
8 Советов Б. Я., Яковлев С. А. С 56 Моделирование систем: Учеб. для
вузов – 3–е изд., перераб. и доп. – М.: Высшая школа, 2001. – 343 с
9 Бугакова Т. Ю. Оценка устойчивости состояний объектов по
геодезическим данным методом фазового пространства: автореферат
диссертации на соискание ученой степени кандидата технических наук.
– Новосибирск: СГГА, 2005
10 Бугакова, Т. Ю. Моделирование систем [Текст] : учеб. пособие / Т. Ю.
Бугакова, П. Ю. Бугаков. – Новосибирск: СГУГиТ, 2020. – 95 с
63

11 Моделирование систем [текст]: Учебник для вузов/С.И.Дворецкий,


Ю.Л.Муромцев, В.А.Погонин, А.Г.Схиртладзе, - М.: Академия, 2009.–
320с
12 Вовк И. Г. Математическое моделирование экономических систем
(системный анализ и принятие решений): Модульный курс –
Новосибирск: НГИ, 2008. – 60с.
13 Бугакова Т.Ю. Оценка устойчивости состояний объектов по
геодезическим данным методом фазового пространства. Дис. канд.
техн. наук/ –Новосибирск, 2005. – 163 с.
14 Моделирование систем и процессов [Электронный ресурс]: Учебное
пособие / Н.Г. Чикуров. -М.: ИЦ РИОР: НИЦ Инфра-М, 2013. –398 с. –
Режим доступа: http://znanium.com.
15 Вовк, И.Г. Введение в математическое моделирование: учеб. пособие/
И.Г. Вовк. – Новосибирск: СГГА, 1997. – 45 с.
16 Носкова И.А., Токранова М.В. Обзор автоматизированных систем
проектирования. Санк-Петербург, 2017. – 6 с.
17 Баранова, С. Д. Автоматизированные системы мониторинга
технического состояния объектов недвижимости / С. Д. Баранова, Х. Г.
Якубов // Аллея науки. – 2017. – Т. 1. – № 10. – С. 783-789. – EDN
ZASVYB.
64

ПРИЛОЖЕНИЕ А (ОБЯЗАТЕЛЬНОЕ)
Программный код

Блок 1.
private void OpenDB_Click_1(object sender, EventArgs e)
{
OpenFileDialog openFile = new OpenFileDialog();
openFile.Filter = "Базы данных (*.db;*.sqlite)|*.db;*.sqlite|Все файлы|
*.*";
if (openFile.ShowDialog() == DialogResult.OK)
{
DataForCalculate = new DataBase(openFile.FileName);

Tables_Combo.Enabled = true;
ShowDB.Enabled = true;
pictureBox1.Enabled = true;

Tables_Combo.Items.Clear();
Tables_Combo.Items.AddRange(DataForCalculate.GetTableNames());

pictureBox1.Image = DataForCalculate.GetImage();

textbox_A.Text = DataForCalculate.GetA().ToString();
textbox_A.Enabled = true;
textbox_T.Text = DataForCalculate.GetT().ToString();
textbox_T.Enabled = true;

buttonSaveTandA.Enabled = true;
}
}
65

Блок 2.
public string[] TableNames()
{
string SQLQuery = "SELECT name FROM sqlite_master WHERE
type='table' ORDER BY name;";
SQLiteCommand command = new SQLiteCommand(SQLQuery,
SQLiteConn);
SQLiteDataReader reader = command.ExecuteReader();
List<string> TNames = new List<string>();
while (reader.Read())
{
if (reader[0].ToString() != "Данные_дополнительно")
{
TNames.Add(reader[0].ToString());
}
}
return TNames.ToArray();
}

Блок 3.
private void ShowDB_Click_1(object sender, EventArgs e)
{
if (Tables_Combo.SelectedIndex != -1)
{
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
try
{
DataForCalculate.GetTableContent(dataGridView1,
Tables_Combo.Text);
66

AddRow.Enabled = true;
Decompose_1.Enabled = true;
Decompose_2.Enabled = true;
Decompose_4.Enabled = true;
}
catch
{
MessageBox.Show("Ошибка открытия таблицы", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

Блок 4.
public void Addrow(DataGridView dataGrid)
{
double[] newRow = new double[dataGrid.ColumnCount - 1];
Random rnd = new Random();
for (int i = 0; i < dataGrid.ColumnCount - 1; i++)
{
double min = Table[0, i], max = Table[0, i];
for (int j = 1; j < dataGrid.RowCount; j++)
{
double p = Table[j, i];
min = Math.Min(p, min);
max = Math.Max(p, max);
}
newRow[i] = Math.Round(min + rnd.NextDouble() * (max - min), 4);
}
67

double[,] newTable = new double[dataGrid.Rows.Count + 1,


dataGrid.Columns.Count - 1];
for (int i = 0; i < dataGrid.Rows.Count; i++)
{
for (int j = 0; j < dataGrid.Columns.Count - 1; j++)
{
newTable[i, j] = Table[i, j];
}
}
for (int i = 0; i < dataGrid.Columns.Count - 1; i++)
{
newTable[dataGrid.Rows.Count, i] = newRow[i];
}
Table = newTable;
RowCount = RowCount + 1;
dataGrid.Rows.Add(dataGrid.Rows.Count.ToString());

for (int i = 1; i < dataGrid.Columns.Count; i++)


{
dataGrid.Rows[dataGrid.Rows.Count - 1].Cells[i].Value = newRow[i -
1];
}
}
Блок 5.1
private List<double> MCalcFunc(double[,] Table, int RowsCount, int ColCount,
double T)
{
List<double> m = new List<double>();
for (int i = 0; i < RowsCount; i++)
{
68

double summ = 0;
for (int j = 0; j < ColCount; j++)
{
summ = summ + Math.Pow(Table[i, j] + T, 2);
}
m.Add(Math.Sqrt(summ));
}
return m;
}
Блок 5.2
private List<double> AlphCalcFunc(double[,] Table, int RowsCount, int
ColCount, double T)
{
List<double> alph = new List<double>();
alph.Add(0);
for (int i = 1; i < RowsCount; i++)
{
double summ = 0;
for (int j = 0; j < ColCount; j++)
{
summ = summ + ((Table[0, j] + T ) * (Table[i, j] + T));
}
double acosVal = summ / (M[0] * M[i]);
if (acosVal <= 1 && acosVal >= -1)
{
double acosResult = Math.Acos(acosVal);
alph.Add(Math.Round(acosResult, 6) * (3600 * 180) / Math.PI);
}
else
{
69

alph.Add(0);
}
}
return alph;
}
Блок 5.3
private List<double> PrognozCalc(List<double> Znacheniya, double A)
{
List<double> PrognozList = new List<double>();
PrognozList.Add(A * Znacheniya[0] + (1 - A) * Znacheniya.Average());
for (int i = 1; i<Znacheniya.Count; i++)
{
PrognozList.Add(A * Znacheniya[i] + (1 - A) * PrognozList[i-1]);
}
PrognozList.Add(A * PrognozList.Average() + (1 - A) *
PrognozList.Last());
return PrognozList;
}
Блок 5.4
public void DataGrid1_Fill (DataGridView gridView)
{
gridView.Rows.Clear();
gridView.Columns.Clear();
gridView.Columns.Add("Эпоха", "Эпоха");
gridView.Columns.Add("M", "M");
gridView.Columns.Add("M прогноз", "M прогноз");
gridView.Columns.Add("Угол Альфа", "Угол Альфа");
gridView.Columns.Add("Угол Альфа прогноз", "Угол Альфа прогноз");
for (int i=0; i<M.M.Count; i++)
{
70

gridView.Rows.Add(i,
Math.Round(M.M[i], 4),
Math.Round(M.MProg[i], 4),
Math.Round(M.Alph[i], 4),
Math.Round(M.AlphProg[i], 4)
);
}
gridView.Rows.Add("Прогноз", "мяу", Math.Round(M.MProg.Last(), 4),
"мяу", Math.Round(M.AlphProg.Last(), 4));
}
Блок 5.5
public void DataGrid2_Fill(DataGridView gridView)
{
gridView.Rows.Clear();
gridView.Columns.Clear();
gridView.Columns.Add("Эпоха", "Эпоха");
gridView.Columns.Add("M-", "M-");
gridView.Columns.Add("M", "M");
gridView.Columns.Add("M+", "M+");
gridView.Columns.Add("R", "R");
gridView.Columns.Add("L", "L");
gridView.Columns.Add("Состояние объедка", "Состояние объедка");
double R, L;
string avar;
Color rowColor;
for (int i = 0; i < M.M.Count; i++)
{
R = (MPlus.M[i] - MMinus.M[i]) / 2;
L = Math.Abs(M.M[0] - M.M[i]);
if (R > L)
71

{
avar = "Не аварийное";
rowColor = Color.Green;
}
else if (R == L)
{
avar = "Предаварийное";
rowColor = Color.Yellow;
}
else
{
avar = "Аварийное";
rowColor = Color.Red;
}
gridView.Rows.Add(i,
Math.Round(MMinus.M[i], 4),
Math.Round(M.M[i], 4),
Math.Round(MPlus.M[i], 4),
Math.Round(R, 4),
Math.Round(L, 4),
avar
);
gridView.Rows[gridView.Rows.Count - 1].DefaultCellStyle.BackColor
= rowColor;
}
R = (MPlus.MProg.Last() - MMinus.MProg.Last()) / 2;
L = Math.Abs(M.M[0] - M.MProg.Last());
if (R > L)
{
avar = "Не аварийное";
72

rowColor = Color.Green;
}
else if (R == L)
{
avar = "Предаварийное";
rowColor = Color.Yellow;
}
else
{
avar = "Аварийное";
rowColor = Color.Red;
}
gridView.Rows.Add("Прогноз",
Math.Round(MMinus.MProg.Last(), 4),
Math.Round(M.MProg.Last(), 4),
Math.Round(MPlus.MProg.Last(), 4),
Math.Round(R, 4),
Math.Round(L, 4),
avar
);
gridView.Rows[gridView.Rows.Count - 1].DefaultCellStyle.BackColor =
rowColor;
}
Блок 5.6
public void GraphicOtklick(Chart chart1)
{
chart1.Series.Clear();
chart1.Series.Add("M");
chart1.Series.Add("M-");
chart1.Series.Add("M+");
73

chart1.Series.Add("M прогноз");
chart1.Series.Add("M- прогноз");
chart1.Series.Add("M+ прогноз");
for (int i = 0; i < chart1.Series.Count; i++)
{
chart1.Series[i].ChartType = SeriesChartType.Spline;
chart1.Series[i].BorderWidth = 2;
chart1.Series[i].Label = "#INDEX";
chart1.Series[i].MarkerStyle = MarkerStyle.Circle;
chart1.Series[i].MarkerSize = 7;
}

for (int i = 0; i < M.M.Count; i++)


{
chart1.Series["M"].Points.AddXY(M.M[i], M.Alph[i]);
chart1.Series["M-"].Points.AddXY(MMinus.M[i], MMinus.Alph[i]);
chart1.Series["M+"].Points.AddXY(MPlus.M[i], MPlus.Alph[i]);
chart1.Series["M прогноз"].Points.AddXY(M.MProg[i],
M.AlphProg[i]);
chart1.Series["M- прогноз"].Points.AddXY(MMinus.MProg[i],
MMinus.AlphProg[i]);
chart1.Series["M+ прогноз"].Points.AddXY(MPlus.MProg[i],
MPlus.AlphProg[i]);
}
chart1.Series["M прогноз"].Points.AddXY(M.MProg.Last(),
M.AlphProg.Last());
chart1.Series["M- прогноз"].Points.AddXY(MMinus.MProg.Last(),
MMinus.AlphProg.Last());
chart1.Series["M+ прогноз"].Points.AddXY(MPlus.MProg.Last(),
MPlus.AlphProg.Last());
74

chart1.ChartAreas[0].RecalculateAxesScale();
}
Блок 5.7
public void GraphicPhase(Chart chart1)
{
chart1.Series.Clear();
chart1.Series.Add("M");
chart1.Series.Add("M-");
chart1.Series.Add("M+");
chart1.Series.Add("M прогноз");
for (int i = 0; i < chart1.Series.Count; i++)
{
chart1.Series[i].ChartType = SeriesChartType.Spline;
chart1.Series[i].BorderWidth = 2;
chart1.Series[i].Label = "#INDEX";
chart1.Series[i].MarkerStyle = MarkerStyle.Circle;
chart1.Series[i].MarkerSize = 7;
}
for (int i = 0; i < M.M.Count; i++)
{
chart1.Series["M"].Points.AddXY(i, M.M[i]);
chart1.Series["M-"].Points.AddXY(i, MMinus.M[i]);
chart1.Series["M+"].Points.AddXY(i, MPlus.M[i]);
chart1.Series["M прогноз"].Points.AddXY(i, M.MProg[i]);
}
chart1.Series["M прогноз"].Points.AddXY(M.M.Count, M.MProg.Last());
chart1.ChartAreas[0].RecalculateAxesScale();
}
Блок 6.1
private void BlockNumButton_Click(object sender, EventArgs e)
75

{
kolBlocks = Convert.ToInt32(BlockNumeric.Value);

BlockCombo.Items.Clear();
BlockDataCombo.Items.Clear();
pointStorage = new List<int>[kolBlocks];
for (int i = 0; i < kolBlocks; i++)
{
BlockCombo.Items.Add("Блок " + Convert.ToChar(65 + i));
BlockDataCombo.Items.Add("Блок " + Convert.ToChar(65 + i));
pointStorage[i] = new List<int>();
}
BlockCombo.SelectedIndex = -1;
BlockCombo.SelectedIndex = 0;

listBox1.Items.Clear();
listBox2.Items.Clear();
for (int i = 0; i < DataForCalculate.ColCount; i++)
{
listBox1.Items.Add(i + 1);
}

BlockCombo.Enabled = true;
listBox1.Enabled = true;
listBox2.Enabled = true;
button1.Enabled = true;
button2.Enabled = true;
button3.Enabled = true;
}
76

Блок 6.2
private void BlockCombo_SelectedIndexChanged(object sender, EventArgs e)
{
selectedBlock = BlockCombo.SelectedIndex;
listBox2.Items.Clear();
if (BlockCombo.SelectedIndex != -1)
{
for (int i = 0; i < pointStorage[selectedBlock].Count; i++)
{
listBox2.Items.Add(pointStorage[selectedBlock][i]);
}
}
}
Блок 6.3
private void button2_Click(object sender, EventArgs e)
{
if (pointStorage[0].Count == 0)
{
MessageBox.Show("Распределите в каждый блок хотябы одну
точку", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
for (int i = 1; i < kolBlocks; i++)
{
if (pointStorage[i].Count != pointStorage[0].Count)
{
MessageBox.Show("Распределите равное количество точек!",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
77

}
calculatedData = new Decompose_1[kolBlocks];
for (int i = 0; i < kolBlocks; i++)
{
double[,] tableBlocks = new double[DataForCalculate.RowCount,
pointStorage[i].Count];
for (int j = 0; j < DataForCalculate.RowCount; j++)
{
for (int k = 0; k < pointStorage[i].Count; k++)
{
tableBlocks[j, k] = DataForCalculate.Table[j, pointStorage[i][k] -
1];
}
}
calculatedData[i] = new Decompose_1(tableBlocks,
DataForCalculate.RowCount, pointStorage[i].Count, DataForCalculate.GetT(),
DataForCalculate.GetA());
}
BlockDataCombo.Enabled = true;
FillGraphic();
}
Блок 6.4
private void FillGraphic()
{
chart3.Series.Clear();
for (int i = 0; i < kolBlocks; i++)
{
chart3.Series.Add("Блок " + Convert.ToChar(i + 65));
chart3.Series[i].ChartType =
System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
78

chart3.Series[i].Label = "#INDEX";
chart3.Series[i].MarkerStyle =
System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
chart3.Series[i].MarkerSize = 7;
chart3.Series[i].BorderWidth = 2;
chart3.ChartAreas[0].RecalculateAxesScale();
for (int j = 0; j < calculatedData[i].M.M.Count; j++)
{
chart3.Series[i].Points.AddXY(j, calculatedData[i].M.M[j]);
}
}
}
Блок 7.1
private void Form4_Load(object sender, EventArgs e)
{
checkedListBox1.Items.Clear();
chart1.Series.Clear();
for (int i = 0; i < dataBase.ColCount; i++)
{
checkedListBox1.Items.Add($"Точка {i + 1}", false);
chart1.Series.Add($"Точка {i + 1}");
chart1.Series[i].ChartType =
System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
chart1.Series[i].Label = "#INDEX";
chart1.Series[i].BorderWidth = 2;
chart1.Series[i].MarkerStyle =
System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
chart1.Series[i].MarkerSize = 7;
for (int j = 0; j < dataBase.RowCount; j++)
{
79

chart1.Series[i].Points.AddXY(j, dataBase.Table[j, i]);


}
chart1.Series[i].Enabled = false;
}
}
Блок 7.2
private void checkedListBox1_MouseUp(object sender, MouseEventArgs e)
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
chart1.Series[i].Enabled = checkedListBox1.GetItemChecked(i);
}
chart1.ChartAreas[0].RecalculateAxesScale();
}

Вам также может понравиться