Главная              Рефераты - Разное

Моделирование системы автоматизации проектирования работа по дисциплине «Основы системного анализа объектов и процессов компьютеризации» Пояснительная записка - реферат

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

ХЕРСОНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

МОДЕЛИРОВАНИЕ СИСТЕМЫ АВТОМАТИЗАЦИИ ПРОЕКТИРОВАНИЯ

Курсовая работа

по дисциплине «Основы системного анализа объектов и процессов компьютеризации»

Пояснительная записка

Выполнила

студентка группы 4ПР2________________________ У.С. Могилева

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

Руководитель доцент __________________________ В.О. Костин

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

Нормоконтролер доцент _______________________ В.О. Костин

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

Херсон 2002


РЕФЕРАТ

Пояснительная записка по курсовой работе "Моделирование системы автоматизации проектирования" состоит из 63 листов, количество использованной литературы – 7, количество приложений - 4.

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

Для успешной работы с представленной программой необходим компьютер IBM 8x586 или любой совместимый с ним. Для реализации данного алгоритма использовался язык программирования Delphi версии 4.0. Также необходимо наличие файла с программой project1.pas и необходимых модулей.

При написании программы использовался PC/AT совместимый компьютер класса Intel Pentium.


СОДЕРЖАНИЕ

Введение . . . . . . . . . . . . . . . . . . . . . . 6

1 Описание задачи . . . . . . . . . . . . . . . . . 8

1.1 Постановка задачи . . . . . . . . . . . . . . . . 8

1.2 Предметная область . . . . . . . . . . . . . . . 9

1.3 Математическое описание задачи . . . . . . . . . 10

1.4 Метод решения . . . . . . . . . . . . . . . . . .13

2 Описание применения . . . . . . . . . . . . . . .15

2.1 Назначение программы . . . . . . . . . . . . . . 15

2.2 Входные и выходные данные . . . . . . . . . . . .16

2.3 Инструкция пользователя . . . . . . . . . . . . .16

3 Описание программы . . . . . . . . . . . . . . . .20

3.1 Общие сведения и функциональное назначение . . . 20

3.2 Алгоритм работы программы . . . . . . . . . . . 22

3.3 Описание логической структуры . . . . . . . . . 23

3.4 Используемые технические средства,вызов,загрузка 27

3.5 Контрольный пример . . . . . . . . . . . . . . . 28

Заключение . . . . . . . . . . . . . . . . . . . . .

Список использованной литературы . . . . . . . . . .30

Приложение А Текст программы . . . . . . . . . . . . 31

Приложение Б Экранные формы . . . . . . . . . . . . .57

Приложение В Блок-схема алгоритма . . . . . . . . . .61

Приложение Г Q-схема. . . . . . . . . . . . . . . . .63


ВВЕДЕНИЕ

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

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

Для того чтобы понять необходимость теории массового обслуживания, рассмотрим простейший пример. Пусть на некоторое обслуживающее устройство или обслуживающий прибор поступает поток заявок. Допустим, путем длительных наблюдений мы установили, что среднее число поступающих на прибор заявок постоянно и равно 6 в час. Спрашивается, какую производительность должен иметь прибор, чтобы успешно справляться с поступающим на него потоком заявок? Сам собой напрашивается ответ: прибор должен обслуживать в среднем 6 заявок в час или каждую заявку за 10 мин. Конечно, осторожный проектировщик всегда сделает небольшой запас, скажем, в 10% на всякие непредвиденные обстоятельства и предложит производительность прибора, соответствующую обслуживания одной заявки за 9 мин. Дальнейшее увеличение производительности прибора вряд ли целесообразно, поскольку тогда он будет большую долю времени простаивать. Итак, ответ готов: прибор должен обслуживать заявку в среднем за 9 мин. При этом заявки перед прибором не должны накапливаться, а сам прибор в среднем 6 мин каждый час будет простаивать.

Однако на практике весьма быстро было подмечено следующее обстоятельство. Да, прибор действительно был свободен 10% времени. Но в очень многих случаях перед прибором возникала весьма значительные очереди. В среднем перед обслуживающим прибором скапливается очередь из 8 заявок. Поиски причин этого явления выявили и виновника: им оказался именно элемент случайности в поступлении и обслуживании заявок.

Дальнейший ход событий предсказать не трудно. Раз виноваты случайные явления, а случайными явлениями занимается теория вероятности, то необходимо для анализа системы массового обслуживания применять методы этой дисциплины.

Пик своего развития теория массового обслуживания достигла в 50-70-е годы. Затем интерес к теории массового облуживания несколько ослабел.

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


1 ОПИСАНИЕ ЗАДАЧИ

1.1 Постановка задачи

Задание данной курсовой работы звучит следующим образом. Система автоматизации проектирования состоит из ЭВМ и трех терминалов. Каждый проетировщик формирует задание в интерективном режиме. Набор строки задания занимает 10±5 с. Получение ответа на строку требует 3 с работы ЭВМ и 5 с работы терминала. Посля набора 10 строк задание считается сфомированным и поступает на решение, при этом в течение 10±3 с ЭВМ приостанавливает производство ответов на строки, которые вводятся. Анализ результата занимает у проектировщика 30 с, после чего цикл повторяется.

Смоделировать работу системы в течении 6 часов. Определить вероятность простоя проектировщика через занятость ЭВМ и коэффициент нагрузки ЭВМ.

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

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

В программе были использованы все принципы построения модели по Q-схеме, которые описаны в математической модели.

1.2 Предметная область

Схема данной курсовой работы может быть применена в различных отраслях народного хозяйства, в частности в химической отрасли, где ЭВМ может являться прибором – спектометром “Palmer – F402”, а терминалы – это производственные цехи.

Химическая промышленность –одна из важнейших отраслей народного хозяйства. Химизация народного хозяйства – одно из основных направлений научно-технического прогресса, характеризующееся внедрением химических методов, процессов и материалов в различные отрасли народного хозяйства.

Очень важным в химической промышленности ввиду ее вредности стало применение автоматизации и дистанционного управления процессами, а именно использование приборов, позволяющих осуществлять производственный процесс без непосредственного участия человека, лишь под его контролем. Автоматизация – это высшая степень механизации. Особенное значение имеет комплексная автоматизация с применением электронных вычислительных машин, которые получают информацию о ходе химического процесса от различных приборов-измерителей. Так, в химическую промышленность вошла наука кибернетика. Одна из насущных задач развития химической техники – широкое применение автоматизированных систем управления технологией производства – АСУ ТП.

С точки зрения химической отрасли данная задача может быть рассмотрена следующим образом. Строки задания – это вещества, являющиеся составными частями какого-либо продукта. Вещество анализируется, в течении какого времени на состав и примеси на приборе спектометре “Palmer – F402” и возвращаются в цех. Из определенного количества обработанных веществ формируется готовый продукт, который также анализируется на приборе “Palmer – F402”. Результат обрабатывается в течение какого-то времени непосредственно проектировщиком, то есть работником цеха.

Примером такой схемы функционирования может является производство кальцинированной соды Na2 CO3 . Строками-веществами являются вода (H2 O), соль (NaCl), мазут, мел (CaCO3 ), погашенная известь (CaO), аммиак (NH3 ), хлорид амония (NH4 Cl), бикарбонат натрия (NaHCO3 ), хлористый натрий (CaCl2 ), которые анализируются на приборе “Palmer – F402”. Данные из “Palmer – F402” возвращаются в цех для контроля и дозировки. В результате смешивания этих веществ и проведения различных химических реакций получается кальцинированная сода Na2 CO3 , которая также анализируется на приборе “Palmer – F402”, а затем в самом цехе. Другие терминалы-цехи могут использоваться для производства других веществ.

1.3 Математическое описание задачи

К математической модели данной задачи можно отнести модель реализации каждого из компонентов системы. Терминалы представлены в программе как массивы целых чисел ki i=1:3, где количество элементов в массиве является количеством обработанных строк. При поступлении новой строки из ЭВМ на терминал увеличивается индек соответствующего массива на единицу и увеличивается количесво элементов в массиве:

i=i+1 (1.3.1)

ki=i (1.3.2)

ЭВМ представлено ввиде элемента, который в программе реализуется с помощью типа-записи, содержащего сведенья о строке задания (время обработки строки и номер терминала, сформировавшего ее). Заполнение ЭВМ реализуется по следующей формуле:

EVM=nakopitel(1) (1.3.3)

где nakopitel[1] – первый элемент в массиве-накопителе.

Накопитель является массивом необработанных строк. При поступленнии новой строки в накопитель увеличивается индек массива и накопителю присваевается новая строка:

index_nakop=index_nakop+1 (1.3.4)

nakopitel(index_nakop)=x (1.3.5)

где х – содержит параметры строки;

index_nakop – текущее количесво элементов в массиве-накопителе.

При выдаче строки задания из накопителя в ЭВМ индекс массива уменьшается и количесво элементов в массиве уменьшается на единицу:

nakopitel(i)=nakopitel(i+1) i=1;index_nakop-1

index_nakop=index_nakop-1 (1.3.6)

Вероятность простоя проектировщика из-за занятости ЭВМ определяется по формуле:

ver=time1/time2 (1.3.7)

где ver – вероятность простоя проектировщика;

time1 – время простоя проектировщика;

time2 – время, в течении которого ЭВМ занято обработкой задания от другого проектировщика.

Коэфициент загрузки ЭВМ определяется следующим образом:

koef=time3/time (1.3.8)

где koef – коэфициент загрузки ЭВМ;

time3 – время, в течении которого ЭВМ работает;

time – время работы системы.

Работа данной системы реализуется с помощью Q-схемы, которая определяется следующим набором:

Q = <W, U, H, Z, R, A> (1.3.9)

где W – подмножество входящих потоков заявок на обслуживание:

U – подмножество потоков обслуживания;

H – подмножество собственных параметров;

Z – подмножество состояний элементов структуры (Zi H , Zi K );

R – оператор сопряжения элементов структуры (каналов и накопителей);

A – оператор алгоритмов обслуживания заявок (оператор поведения заявок).

Подмножество собственных параметров H для данной схемы определяется как

Hi = {Lф , Lki , Lik , Li } (1.3.10)

где Lф – количество фаз. Lф = 2;

Lki – количество каналов. Lk1 = 3, Lk2 =1;

Lik – количество накопителей. Lik = 1;

L – ёмкость накопителя. Теоретически не ограниченна.

Подмножество состояний системы определяется выражением:

Zi =(Zi H , Zi K ) (1.3.11)

где – Zi H состояние накопителя (Zi = 0– накопитель пуст, Zi = 1 – в накопителе имеется 1 заявка,..., Zi = Li – накопитель полностью заполнен);

Li – ёмкость накопителя, измеряемая числом помещаемых в нём заявок;

Zi K – состояние канала Кi ( Zi = 0– канал свободен, Zi = 1– занал занят).

1.4 Метод решения

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

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

Благодаря этому повышается наглядность текста и упрощается его отладка. Для удобства написанная программа была разбита на модули (отдельные процедуры и функции). Применение методов структурного программирования улучшает ясность и читабельность программ.

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

Всякая структурированная блок-схема может быть выражена как композиция из четырёх основных элементарных блок-схем:

- композиции, то есть последовательным решением двух задач. Если первая задача вырабатывает какую-то информацию необходимую для второй задачи, то они образуют составной блок. В такой подстановке задача разделяется на отдельные части. Объекты первой задачи могут являться глобальными для второй задачи.

- альтернативы. В такой блок-схеме вычисляется значение предиката и выполняется задача 1 или 2. Задача 2 может при этом отсутствовать. Эта блок-схема легко реализуется оператором IF. . . THEN. . . ELSE.

- итерации повторения, то есть производится повторения вычисления поставленной задачи.

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

2 ОПИСАНИЕ ПРИМЕНЕНИЯ

2.1 Назначение и условия применения программы

Курсовая работа предназначена для моделирования системы автоматизации проектирования.

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

Эта курсовая работа является подведением итогов, полученных знаний по дисциплине "Основы системного анализа объектов и процессов компьютеризации". Схема этой работы должна иметь возможность практической реализации.

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

Выполнение данной программы производилось при помощи средств диалекта языка программирования Delphi версии 4.0.

Требования программы: персональный компьютер на базе микроп­роцессора Intel 8x586 и выше, VGA совместимая видеокарта, накопи­тель на твёрдом магнитном диске.

Требования к операционной системе ограничены требованиями компилятора языка Delphi 4.0, то есть Windows 3.11 или выше.

Применение данной программы возможно лишь в случае наличия неповрежденных исходных файлов программы или скомпилированный программный файл.

Исходный текст программы находится в файлах под именами unit1.pas, unit2.pas, unit3.pas, unit4.pas, unit5.pas, unit6.pas, unit7.pas, unit8.pas, unit9.pas, unit10.pas, unit11.pas, unit12.pas и занимают 43,2 килобайт, а исполняемый модуль под име­нем project1.exe - 839 килобайт.

2.2 Входные и выходные данные

В качестве входных данных выступают параметры моделирования: время набора строки задания, время ответа на строку терминалом и ЭВМ, количество строк, формирующих задание, время ответа ЭВМ на задание, время анализа результата проектировщиком, время моделирования.

К выходным данным следует отнести следующие результаты моделирования (статистические данные), которые пользо­ватель сможет увидеть на экране дисплея в удобочитаемом виде: количество набранных строк от 1-го, 2-го и 3-го проектировщика, количество обработанных строк от 1-го, 2-го и 3-го проектировщика; количество полученных заданий от 1-го, 2-го и 3-го проектировщика, количество обработанных заданий от 1-го, 2-го и 3-го проектировщика; вероятность простоя 1-го, 2-го и 3-го проектировщика из-за занятости ЭВМ; коэффициент нагрузки ЭВМ.

2.3 Инструкции пользователю

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

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

Меню содержит следующие пункты: система, задание и справка.

При выборе пункта Система пользователь может реализовать следующии действия:

- моделирование, запускает программу на выполнение (может реализоваться при нажатии клавиш Ctrl+A);

- параметры, выводит окно, где можно поменять все параметры системы (может реализоваться при нажатии клавиш Ctrl+В);

- статистика, выводит окно статистических данных программы (может реализоваться при нажатии клавиш Ctrl+С);

- выход, реализует закрытие программы и выход в среду Window.

При выборе пункта Задание появляется меню из двух пунктов:

- задание, содержит текст задания (может реализоваться при нажатии клавиш Ctrl+F1);

- Q-схема, выводит окно, содержащее Q-схему курсовой работы (может реализоваться при нажатии клавиш Ctrl+F2).

При выборе пункта Справка появляется меню из трех пунктов:

- помощь, содержит сведенья о работе программы (может реализоваться при нажатии клавиши F1);

- об авторе, содержит сведенья об авторе проекта (может реализоваться при нажатии клавиши F2);

- о программе, содержит общие сведенья о программе (может реализоваться при нажатии клавиши F3).

Панель инструментов полностью дублирует пункты главного меню и предназначена для быстрого выбора наиболее часто используемых пунктов меню.

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

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

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

3 ОПИСАНИЕ ПРОГРАММЫ

3.1 Общие сведения и функциональное назначение

Предоставленный программный продукт носит название "Моделирование системы автоматизации проектирования" и служит для моделирования процесса обработки и передачи данных из трех терминалов и ЭВМ.

Исходный текст программы находится в файлах под именами unit1.pas, unit2.pas, unit3.pas, unit4.pas, unit5.pas, unit6.pas, unit7.pas, unit8.pas, unit9.pas, unit10.pas, unit11.pas, unit12.pas и занимают 43,2 килобайт, исполняемый модуль под име­нем project1.exe - 839 килобайт. В исполняемый файл компилируются все необходимые модули, библиотеки, без которых программа просто не может работать.

Для реализации данной программы использовался язык визуального программирования Delphi версии 4.0. Язык Delphi - это один из самых распространенных языков визуального программирования для ЭВМ типа IBM PC, работающих в операционных системах Windows 9.х.

Программирование в Delphi строится на тесном взаимодействии двух процессов: процесса конструирования визуального проявления программы (то есть ее Windows-окна) и процесса напиисания кода, придающего элементам этого окна и программе в целом необходимую функциональгость. Для написания кода используется окно кода, для конструирования программы – остальные окна Delphi, и прежде всего – окно формы.

Между содержимым окон формы и кода существует неразрывная связь, которая строго отслеживается Delphi. Это означает, что размещение на форму компонента приводит к автоматическому изменению кода программы и наоборот о- удаление тех или иных автоматически вставленных фракментов кода может привести к удалению соответсвующих компонентов. Помня об этом, необходимо в начале сконструировать форму, размещая на ней очередной компонент, а уже только после этого переходить, если это необходимо, к написанию фрагмента кода, обеспечивающего требуемое поведение компонента в работающей программе.

В языке Delphi имеется возможность использовать процедуры и функции, обеспечивающие возможности практической реализации принципов структурного программирования. Ориентируясь на эти принципы, можно разделить большую программу на ряд меньших, оформив их как процедуры или функции. Эти процедуры отлаживаются отдельно и независимо, а затем уже могут использоваться в главной программе (и/или других процедурах и функциях) как готовые и неизменные.

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

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

Задачи массового обслуживания возникают в тех случаях, ког­да условия на выполнение роботы поступают в случайные моменты времени, а выполнение этих работ, называемые обслуживанием, осу­ществляется одним или несколькими обслуживающими устройствами. Длительность выполнения отдельных требований предполагается слу­чайной (в моей задаче некоторые промежутки заданы однозначно, а именно, обслуживание в канале обработки и обслуживание в канале сборки; а некоторые заданы экспоненциальной зависимостью: обслу­живание в канале регулировки).

Устройство, способное в любой момент времени обслуживать лишь одно требование, называется каналом обслуживания (в данном курсовом проекте этими устройствами являются ЭВМ и три терминала).

Характерной особенностью задач массового обслуживания яв­ляется возникновение несоответствия между скоростью поступления требований и скоростью обслуживания, в результате чего или оказы­ваются простаивающими обслуживаемые приборы или образуется оче­редь на обслуживание. В данной работе в накопителе возникают очере­дь на обслуживание.

3.2 Алгоритм работы программы

Алгоритм работы программы реализован на принципах построения и функционирования Q-схемы. Он имеет следующий вид:

1) проверка времени моделирования системы;

2) если время моделирования больше чем 6 часов, то процесс моделирования окончен;

3) моделивание строки задания от проектировщика в течение 10±5 секунд;

4) обработка строки терминалом в течение 5 секунд;

5) поступление строки в накопитель;

6) проверка условия, если сформировалось задание, то есть обработано 10 строк от одного терминала, то ЭВМ выполняет это задание в течение 10±3 секунд;

7) если задание обработано ЭВМ, то оно обрабатывается проектировщиком в течение 30 секунд;

8) если не сформировано задание ни от одного терминала, то ЭВМ обрабатывает строки задания ЭВМ в течение 3 секунд;

9) обработаная строка возвращается на соответствующий терминал;

10) если в терминале накоплено 10 строк, то переходим к шагу 5;

11) цикл повторяется с начала, то есть переходим к шагу 1.

3.3 Описание логической структуры

Задание на курсовую работу "Моделирование системы автоматизации проектирования" звучит следующим образом. Система автоматизации проектирования состоит из ЭВМ и трех терминалов. Каждый проетировщик формирует задание в интерективном режиме. Набор строки задания занимает 10±5 с. Получение ответа на строку требует 3 с работы ЭВМ и 5 с работы терминала. Посля набора 10 строк задание считается сфомированным и поступает на решение, при этом в течение 10±3 с ЭВМ приостанавливает производство ответов на строки, которые вводятся. Анализ результата занимает у проектировщика 30 с, после чего цикл повторяется.

Смоделировать работу системы в течении 6 часов. Определить вероятность простоя проектировщика через занятость ЭВМ и коэффициент нагрузки ЭВМ.

Код программы основан на методах объектно-ориентированного и струкрурного программирования.

Первым этапом построения программы является определение типов используемых переменных и подключение необходимых модулей. Основными модулями, подключаемыми в программе, являются модули, хранящие процедуры и функции для обработки графической, текстовой информации, для создания форм, меню, классов, диалогов и другие. В программе определен пользовательский тип stroka, который определяет моделируемую заявку. Основным классом, используемым в программе является класс TForm, который является “контейнером” всех компонент программы и обработчиков их событий. Под компонентом понимается некий функциональный элемент, содержащий определенный свойства и размещаемый программистом в окне формы. Обработчик событий – это текст кода программы, который представляет собой последовательность текстовых строк, указывающих, что именно должна делать программа на то или иное действие пользователя.

Вторым этапом является определение обработчиков событий. В программе реализованы обработчики нажатий клавиш и пунктов меню.

При запуске программы активизуруется процедура создания формы, которая определят, что происходит в начале работы программы. В данном случае в этой процедуре всем переменным, используемым в программе присваиваются начальные данные и запускается генератор случайных чисел Randomize.

При выборе пункта меню Система-Моделирование включается таймер, который определяет интервалы времени между последовательностями определенных событий.

При выборе пункта меню Система-Параметры на экран выводится форма Form8, на которой находятся компоненты, дающие пользователю возможность смены параметров системы. В случае изменения каких-либо параметров в окне Параметры, то автоматически изменяются параметры в окне главной формы программы в помощью процедур SpinEdit1Change, которые реагируют на изменение значений в компоненте SpinEdit, с помощью которых можно легко управлять значением параметров системы.

При выборе пункта меню Система-Статистика на экране появляется окно Form5, в которое выводятся результаты работы программы.

При выборе пункта меню Система-Выход происходит закрытие программы и выход в среду Windows.

При выборе пункта меню Задание-Задание на экран выводится форма Form2, в которой находится текст задания курсовой работы.

При выборе пункта меню Задание-Q-схема на экране появляется окно Form6, в котором нарисована Q-схема задания.

При выборе пункта меню Справка-Помощь на экран выводится форма Form7, где указываются сведенью о работе программы.

При выборе пункта меню Справка-Об авторе выводится окно Form4, где указываются сведенью об авторе программы.

При выборе пункта меню Справка-О программе выводится окно AboutBox, в котором указываются сведенья о программной облочке, в которой создана программа.

При нажатии кнопок панели инструментов происходят аналогичные действия как при выборе соответствующего пункта главного меню программы. Для удобства пользователю при наведении мышкой на кнопку появляется подсказка о назначении этой кнопки.

При запуске процесса моделирования происходит запуск таймера и активизируется процедура OnTimer, в которой находится основной текст программы, моделирующий процесс функционирования системы. Раз включенный таймер все время будет возбуждать события OnTimer до тех пор, пока его свойство Enabled не примет значения False.

Для моделирования времени появления заявок и времени анализа задания ЭВМ используются функции получения времени get_st_time, которые реализуются с помощью генератора случайных чисел Randomize, где с помощью функции Random указывается интервал моделирования времени.

При нажатии на кнопку Пауза происходит выключение таймера, то есть его свойство Enabled примает значения False. Активизировать процесс можно нажатием на кнопку Старт, или при выборе пункта Моделирование, или нажатием на соответствующую кнопку панели инструментов.

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

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

3.4 Используемые технические средства, вызов, загрузка

Программа представленная в данной курсовой работе “Моделирование системы автоматизации проектирования” имеет следующие требования к аппаратному и программному обеспечению:

- персональный компьютер на базе микропроцессора Intel 80386 и выше;

- SVGA совместимая видеокарта;

- требования к операционной системе ограничены требованиями компилятора языка Delphi 4.0, т.е. Windows версии 3.11 или выше.

В силу того, что существуют определенные различия между предыдущими и последующими поколениями компьютеров и написание данной программы проводилось на персональный компьютер с микропроцессором фирмы Intel PentiumPro с частотой 166 MHz, то для корректной работы программы рекомендуется использовать следующее аппаратное и программное обеспечение:

- персональный компьютер на базе микропроцессора фирмы Intel PentiumPro с частотой 166 MHz ;

- видеокарта SVGA;

- операционная система Windows 95 или выше.

Исходный текст программы находится в файлах под именами unit1.pas, unit2.pas, unit3.pas, unit4.pas, unit5.pas, unit6.pas, unit7.pas, unit8.pas, unit9.pas, unit10.pas, unit11.pas, unit12.pas и занимают 43,2 килобайт, исполняемый модуль под име­нем project1.exe - 839 килобайт.

Возможны два варианта запуска программы “Моделирование системы автоматизации проектирования”. В первом варианте запуск производится из интегрированной среды Delphi 4.0. Для этого нужно войти в эту среду из каталога C:\Program Files\Borland\Delphi4\Bin и запустить файл delphi32.exe. После запуска интегрированной среды нужно найти файл unit1.pas и запустить его на выполнение путем нажатия клавиши F9.

Вторым вариантом запуска является запуск выполняемого модуля project1.exe. Для этого нужно в оболочке Norton (Volcov) Commander, либо Dos Navigator, либо Windows Commander, либо в проводнике Windows навести светящийся прямоугольник на запись project1.exe и нажать клавишу <Enter>.

3.5 Конторольный пример

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

Количество набранных строк от:

- 1-го проектировщика:171;

- 2-го проектировщика:173;

- 3-го проектировщика:175.

Количество обработанных строк от:

- 1-го проектировщика:145;

- 2-го проектировщика:146;

- 3-го проектировщика:151.

Количество полученных заданий от:

- 1-го проектировщика:14;

- 2-го проектировщика:14;

- 3-го проектировщика:15.

Количество обработанных заданий от:

- 1-го проектировщика:14;

- 2-го проектировщика:14;

- 3-го проектировщика:15.

Вероятность простоя:

- 1-го проектировщика:0,1520;

- 2-го проектировщика:0,1560;

- 3-го проектировщика:0,1371;

Коэффициент нагрузки ЭВМ: 0,8087.


ЗАКЛЮЧЕНИЕ

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

Данная задача была успешна решена и в итоге поставленная цель была перевыполнена, так программа реализует процесс функционирования системы не только с начальными параметрами системы, но и имеет возможность их изменения. Также данная программа, при небольших изменениях, может реализовать работу системы, включающей не только три терминала и ЭВМ, но и любое другое количество обслуживающих приборов. В программе также реализован механизм выдаче статистических данных. Таким образом пользователь может фиксировать результаты работы системы в любой момент времени. Программа имеет удобный интерфейс, который позволяет ориентироваться в процессе функционирования системы.

Программа была написана на языке визуального программирования Delphi 4.0., так что любой человек, разбирающийся в коде программы может легко дополнить ее для реализации более сложных процессов, происходящих по условиям функционирования Q-схемы.

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

СПИСОК ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ

1. Епанешников А.М., Епанешников В.А. Delphi 4 Среда разработки. –М.: Диалог-Мифи, 1999.

2. Методические указания по выполнению курсового проекта по дисциплине “Основы системного анализа объектов и процессов компьютеризации”/ В.О.Костин - Херсон.2000.

3. Советов В.Я., Яковлев С.А. Моделирование систем. Куpсовое пpоектиpование, М.Высшая школа,1988. - 135c.

4. Советов Б.Я., Яковлев С.А. Лабораторный практикум.-M.: Высш. шк. 1983. - 260 с.

5. Советов Б.Я., Яковлев С.А. Моделирование систем.- М.: Высш. шк., 1985. – 275 с.

6. Фаронов В. В. Delphi 5 Учебный курс. - М.: Нолидж, 2001.

7. Энциклопедический словарь юного химика. –М. Педагогика, 1982.


Приложение А

Текст программы

Модуль 1:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ComCtrls, ToolWin, ImgList, jpeg, ExtCtrls, StdCtrls, Gauges, Spin;

type

stroka=record

time:integer;

number:integer;

end;

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

Q1: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

ToolBar1: TToolBar;

Bevel1: TBevel;

Shape1: TShape;

Shape2: TShape;

Shape3: TShape;

Shape4: TShape;

Image1: TImage;

Image2: TImage;

Image3: TImage;

Image4: TImage;

Shape5: TShape;

Shape6: TShape;

Shape7: TShape;

Shape8: TShape;

Shape9: TShape;

Shape10: TShape;

Shape11: TShape;

Shape12: TShape;

Shape13: TShape;

Shape14: TShape;

Shape15: TShape;

Shape16: TShape;

Shape17: TShape;

Shape18: TShape;

Shape19: TShape;

Shape20: TShape;

Shape21: TShape;

ImageList1: TImageList;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

ToolButton7: TToolButton;

ToolButton8: TToolButton;

ToolButton9: TToolButton;

ToolButton10: TToolButton;

ToolButton11: TToolButton;

ToolButton12: TToolButton;

ToolButton13: TToolButton;

Shape22: TShape;

Shape23: TShape;

Shape24: TShape;

Shape25: TShape;

Shape26: TShape;

Shape27: TShape;

Shape28: TShape;

Shape29: TShape;

Shape30: TShape;

Shape31: TShape;

Shape32: TShape;

Shape33: TShape;

Shape34: TShape;

Shape35: TShape;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Panel1: TPanel;

Image6: TImage;

Image7: TImage;

Image8: TImage;

Image9: TImage;

Image10: TImage;

Panel2: TPanel;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Bevel2: TBevel;

Edit1: TEdit;

Bevel3: TBevel;

Bevel4: TBevel;

Bevel5: TBevel;

Bevel6: TBevel;

Bevel7: TBevel;

Bevel8: TBevel;

Bevel10: TBevel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

SpinEdit3: TSpinEdit;

SpinEdit4: TSpinEdit;

SpinEdit5: TSpinEdit;

SpinEdit6: TSpinEdit;

SpinEdit7: TSpinEdit;

Label24: TLabel;

Label25: TLabel;

SpinEdit8: TSpinEdit;

SpinEdit9: TSpinEdit;

SpinEdit10: TSpinEdit;

Label26: TLabel;

Label27: TLabel;

Gauge1: TGauge;

Gauge2: TGauge;

Gauge3: TGauge;

Gauge4: TGauge;

Gauge5: TGauge;

Gauge6: TGauge;

Gauge7: TGauge;

Gauge8: TGauge;

Gauge9: TGauge;

Label28: TLabel;

Label29: TLabel;

Label30: TLabel;

Label31: TLabel;

Label32: TLabel;

Label33: TLabel;

Label34: TLabel;

Label35: TLabel;

Label36: TLabel;

Label37: TLabel;

Label38: TLabel;

Label39: TLabel;

Label40: TLabel;

Label41: TLabel;

Label42: TLabel;

Timer1: TTimer;

Label43: TLabel;

Label44: TLabel;

Label45: TLabel;

Shape36: TShape;

Shape37: TShape;

procedure N9Click(Sender: TObject);

procedure Q1Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure Image10Click(Sender: TObject);

procedure ToolButton8Click(Sender: TObject);

procedure ToolButton9Click(Sender: TObject);

procedure ToolButton12Click(Sender: TObject);

procedure ToolButton13Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure Image6Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure Image7Click(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure SpinEdit3Change(Sender: TObject);

procedure SpinEdit4Change(Sender: TObject);

procedure SpinEdit2Change(Sender: TObject);

procedure SpinEdit6Change(Sender: TObject);

procedure SpinEdit5Change(Sender: TObject);

procedure SpinEdit7Change(Sender: TObject);

procedure SpinEdit10Change(Sender: TObject);

procedure SpinEdit8Change(Sender: TObject);

procedure SpinEdit9Change(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure Image8Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure ToolButton11Click(Sender: TObject);

procedure Image9Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

takt1,takt2,takt3:integer;

time_st_term,time_st_EVM:integer;

obr_st1,obr_st2,obr_st3:integer;

time_zadan_EVM:integer;

time_zadan_term:integer;

work_system:integer;

nakopitel:array [1..1000] of stroka;

EVM:stroka;

a,b,c:stroka;

time_st1,time_st2,time_st3:integer;

index_nakop:integer;

time_stEVM:integer;

k1:array [1..10] of integer;

k2:array [1..10] of integer;

k3:array [1..10] of integer;

i1,i2,i3:integer;

time_EVM_zadan:integer;

flag1,flag2,flag3,flag4:boolean;

time_analiz:integer;

time1_analiz,time2_analiz,time3_analiz:integer;

time_zanytat1,time_zanytat2,time_zanytat3,time_obch,time_zagruz:integer;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit9, Unit7, Unit8, Unit10, Unit11;

{$R *.DFM}

function get_st_time:integer;

var

temp1,temp2,flag:integer;

begin

temp2:=Random(Form1.SpinEdit3.Value);

flag:=Random(2);

if flag=1 then temp1:=Form1.SpinEdit1.Value+temp2

else temp1:=Form1.SpinEdit1.Value-temp2;

get_st_time:=temp1;

end;

function get_zadan_time:integer;

var

temp1,temp2,flag:integer;

begin

temp2:=Random(Form1.SpinEdit10.Value);

flag:=Random(2);

if flag=1 then temp1:=Form1.SpinEdit7.Value+temp2

else temp1:=Form1.SpinEdit7.Value-temp2;

get_zadan_time:=temp1;

end;

procedure get_stroka1;

begin

a.time:=get_st_time;

a.number:=1;

end;

procedure get_stroka2;

begin

b.time:=get_st_time;

b.number:=2;

end;

procedure get_stroka3;

begin

c.time:=get_st_time;

c.number:=3;

end;

procedure stop;

begin

Form1.Gauge1.Progress:=0;

Form1.Gauge2.Progress:=0;

Form1.Gauge3.Progress:=0;

Form1.Gauge4.Progress:=0;

Form1.Gauge5.Progress:=0;

Form1.Gauge6.Progress:=0;

Form1.Gauge7.Progress:=0;

Form1.Gauge8.Progress:=0;

Form1.Gauge9.Progress:=0;

Form1.Timer1.Enabled:=false;

takt1:=0;takt2:=0;takt3:=0;

get_stroka1;

get_stroka2;

get_stroka3;

time_st1:=0;

time_st2:=0;

time_st3:=0;

index_nakop:=0;

Form1.Timer1.Enabled:=false;

work_system:=0;

time_stEVM:=0;

i1:=0;i2:=0;i3:=0;

time_EVM_zadan:=0;

flag1:=false;flag2:=false;flag3:=false;flag4:=false;

time1_analiz:=0;time2_analiz:=0;time3_analiz:=0;

time_zanytat1:=0;time_zanytat2:=0;time_zanytat3:=0;

time_obch:=0;time_zagruz:=0;

Form1.Shape1.Brush.Color:=clwhite;

Form1.Shape2.Brush.Color:=clwhite;

Form1.Shape3.Brush.Color:=clwhite;

Form1.Shape4.Brush.Color:=clwhite;

Form1.Label43.Caption:='( )';

Form1.Label44.Caption:='( )';

Form1.Label45.Caption:='( )';

Form1.Label5.Caption:='( )';

Form1.Label7.Caption:=' -го терминала';

Form1.Shape18.Pen.Color:=clblack;

Form1.Shape19.Pen.Color:=clblack;

Form1.Shape20.Pen.Color:=clblack;

Form1.Shape21.Pen.Color:=clblack;

Form1.Shape22.Pen.Color:=clblack;

Form1.Shape15.Pen.Color:=clblack;

Form1.Shape16.Pen.Color:=clblack;

Form1.Shape17.Pen.Color:=clblack;

Form1.Shape12.Pen.Color:=clblack;

Form1.Shape13.Pen.Color:=clblack;

Form1.Shape14.Pen.Color:=clblack;

Form1.Shape26.Pen.Color:=clblack;

Form1.Shape27.Pen.Color:=clblack;

Form1.Shape37.Pen.Color:=clblack;

Form1.Shape30.Pen.Color:=clblack;

Form1.Shape31.Pen.Color:=clblack;

Form1.Shape32.Pen.Color:=clblack;

Form1.Shape28.Pen.Color:=clblack;

Form1.Shape29.Pen.Color:=clblack;

Form1.Shape32.Pen.Color:=clblack;

Form1.Shape8.Pen.Color:=clblack;

Form1.Shape36.Pen.Color:=clblack;

Form1.Shape6.Pen.Color:=clblack;

Form1.Shape9.Pen.Color:=clblack;

Form1.Shape7.Pen.Color:=clblack;

Form1.Shape25.Pen.Color:=clblack;

Form1.Shape24.Pen.Color:=clblack;

Form1.Shape23.Pen.Color:=clblack;

Form1.Shape10.Pen.Color:=clblack;

Form1.Shape33.Pen.Color:=clblack;

Form1.Shape34.Pen.Color:=clblack;

Form1.Edit1.Text:='0';

Form1.Edit2.Text:='0';

Form1.Edit3.Text:='0';

Form1.Edit4.Text:='0';

Form1.Edit5.Text:='0';

Form1.Edit6.Text:='0';

Form1.Edit7.Text:='0';

Form1.Edit8.Text:='0';

Form5.Edit1.Text:='0';

Form5.Edit2.Text:='0';

Form5.Edit3.Text:='0';

Form5.Edit4.Text:='0';

Form5.Edit5.Text:='0';

Form5.Edit6.Text:='0';

Form5.Edit7.Text:='0';

Form5.Edit8.Text:='0';

Form5.Edit9.Text:='0';

Form5.Edit10.Text:='0';

Form5.Edit11.Text:='0';

Form5.Edit12.Text:='0';

Form5.Edit13.Text:='0';

Form5.Edit14.Text:='0';

Form5.Edit15.Text:='0';

Form5.Edit16.Text:='0';

Form1.SpinEdit1.Value:=10;

Form1.SpinEdit3.Value:=5;

Form1.SpinEdit4.Value:=3;

Form1.SpinEdit2.Value:=5;

Form1.SpinEdit6.Value:=500;

Form1.SpinEdit5.Value:=10;

Form1.SpinEdit7.Value:=10;

Form1.SpinEdit10.Value:=3;

Form1.SpinEdit8.Value:=30;

Form1.SpinEdit9.Value:=6;

Form8.SpinEdit1.Value:=10;

Form8.SpinEdit3.Value:=5;

Form8.SpinEdit4.Value:=3;

Form8.SpinEdit2.Value:=5;

Form8.SpinEdit6.Value:=500;

Form8.SpinEdit5.Value:=10;

Form8.SpinEdit7.Value:=10;

Form8.SpinEdit10.Value:=3;

Form8.SpinEdit8.Value:=30;

Form8.SpinEdit9.Value:=6;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.Q1Click(Sender: TObject);

begin

Form6.Show;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

Form4.Show;

end;

procedure TForm1.N12Click(Sender: TObject);

begin

AboutBox2.Show;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Image10Click(Sender: TObject);

begin

close;

end;

procedure TForm1.ToolButton8Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.ToolButton9Click(Sender: TObject);

begin

Form6.Show;

end;

procedure TForm1.ToolButton12Click(Sender: TObject);

begin

Form4.Show;

end;

procedure TForm1.ToolButton13Click(Sender: TObject);

begin

AboutBox2.Show;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

Form8.Show;

end;

procedure TForm1.ToolButton5Click(Sender: TObject);

begin

Form8.Show;

end;

procedure TForm1.ToolButton6Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Randomize;

takt1:=0;takt2:=0;takt3:=0;

get_stroka1;

get_stroka2;

get_stroka3;

time_st1:=0;

time_st2:=0;

time_st3:=0;

index_nakop:=0;

Timer1.Enabled:=false;

work_system:=0;

time_stEVM:=0;

i1:=0;i2:=0;i3:=0;

time_EVM_zadan:=0;

flag1:=false;flag2:=false;flag3:=false;flag4:=false;

time1_analiz:=0;time2_analiz:=0;time3_analiz:=0;

time_zanytat1:=0;time_zanytat2:=0;time_zanytat3:=0;

time_obch:=0;time_zagruz:=0;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

i:integer;

begin

Timer1.Interval:=SpinEdit6.Value;

Timer1.Interval:=Form8.SpinEdit6.Value;

inc(work_system);

Gauge1.Progress:=round((work_system*100)/(SpinEdit9.Value*360));

Gauge1.Progress:=round((work_system*100)/(Form8.SpinEdit9.Value*360));

time_st_term:=SpinEdit2.Value;

time_st_EVM:=SpinEdit4.Value;

Shape10.Pen.Color:=clblack;

Shape33.Pen.Color:=clblack;

Shape34.Pen.Color:=clblack;

time_analiz:=SpinEdit8.Value;

if work_system>SpinEdit9.Value*360 then

begin

stop;

Timer1.Enabled:=false;

Form11.Show;

end;

begin

if time1_analiz=0 then inc(takt1);

if time2_analiz=0 then inc(takt2);

if time3_analiz=0 then inc(takt3);

{если сформировалась строка от первого терминала}

if takt1=a.time then

begin

Shape23.Pen.Color:=clred;

takt1:=0;

get_stroka1;

inc(time_st1);

Gauge9.Progress:=Gauge9.Progress+Round(100/time_st_term);

Shape1.Brush.Color:=clyellow;

Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1);

Form5.Edit1.Text:=IntToStr(StrToInt(Form5.Edit1.Text)+1);

end

else

begin

Shape23.Pen.Color:=clblack;

end;

{если сформировалась строка от второго терминала}

if takt2=b.time then

begin

Shape24.Pen.Color:=clred;

takt2:=0;

get_stroka2;

inc(time_st2);

Gauge3.Progress:=Gauge3.Progress+Round(100/time_st_term);

Shape2.Brush.Color:=clyellow;

Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1);

Form5.Edit2.Text:=IntToStr(StrToInt(Form5.Edit2.Text)+1);

end

else

Shape24.Pen.Color:=clblack;

{если сформировалась строка от третьего терминала}

if takt3=c.time then

begin

Shape25.Pen.Color:=clred;

takt3:=0;

get_stroka3;

inc(time_st3);

Gauge5.Progress:=Gauge5.Progress+Round(100/time_st_term);

Shape3.Brush.Color:=clyellow;

Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1);

Form5.Edit3.Text:=IntToStr(StrToInt(Form5.Edit3.Text)+1);

end

else

Shape25.Pen.Color:=clblack;

{время обработки строки первым терминалом}

if (time_st1<>0)and(time_st1<=time_st_term) then

begin

inc(time_st1);

if time_st1>2 then begin

Shape1.Brush.Color:=clyellow;

Gauge9.Progress:=Gauge9.Progress+Round(100/time_st_term);

end;

end

else

begin

time_st1:=0;

Shape1.Brush.Color:=clwhite;

Gauge9.Progress:=0;

end;

Shape6.Pen.Color:=clblack;

Shape9.Pen.Color:=clblack;

if time_st1-1=time_st_term then

begin

inc(index_nakop);

nakopitel[index_nakop]:=a;

Label5.Caption:='('+IntToStr(index_nakop)+')';

Shape6.Pen.Color:=clred;

Shape9.Pen.Color:=clred;

Shape10.Pen.Color:=clred;

end;

{время обработки строки вторым терминалом}

if (time_st2<>0)and(time_st2<=time_st_term) then

begin

inc(time_st2);

if time_st2>2 then begin

Shape2.Brush.Color:=clyellow;

Gauge3.Progress:=Gauge3.Progress+Round(100/time_st_term);

end;

end

else

begin

time_st2:=0;

Shape2.Brush.Color:=clwhite;

Gauge3.Progress:=0;

end;

Shape7.Pen.Color:=clblack;

if time_st2-1=time_st_term then

begin

inc(index_nakop);

nakopitel[index_nakop]:=b;

Label5.Caption:='('+IntToStr(index_nakop)+')';

Shape7.Pen.Color:=clred;

Shape10.Pen.Color:=clred;

end;

{время обработки строки третьим терминалом}

if (time_st3<>0)and(time_st3<=time_st_term) then

begin

inc(time_st3);

if time_st3>2 then begin

Shape3.Brush.Color:=clyellow;

Gauge5.Progress:=Gauge5.Progress+Round(100/time_st_term);

end;

end

else

begin

time_st3:=0;

Shape3.Brush.Color:=clwhite;

Gauge5.Progress:=0;

end;

Shape8.Pen.Color:=clblack;

Shape36.Pen.Color:=clblack;

if time_st3-1=time_st_term then

begin

inc(index_nakop);

nakopitel[index_nakop]:=c;

Label5.Caption:='('+IntToStr(index_nakop)+')';

Shape8.Pen.Color:=clred;

Shape36.Pen.Color:=clred;

Shape10.Pen.Color:=clred;

end;

Shape28.Pen.Color:=clblack;

Shape29.Pen.Color:=clblack;

Shape32.Pen.Color:=clblack;

{обработка задания от первого терминала}

if (k1[i1]=SpinEdit5.Value)and(time_EVM_zadan=0) then

begin

flag1:=true;

time_zadan_EVM:=get_zadan_time;

inc(time_EVM_zadan);

Shape4.Brush.Color:=clred;

Label7.Caption:='1-го терминала';

Edit3.Text:=IntToStr(StrToInt(Edit3.Text)+1);

Form5.Edit7.Text:=IntToStr(StrToInt(Form5.Edit7.Text)+1);

i1:=0;

for i:=1 to SpinEdit5.Value do

k1[i]:=0;

Label43.Caption:='( )';

Shape28.Pen.Color:=clred;

Shape29.Pen.Color:=clred;

Shape32.Pen.Color:=clred;

Shape33.Pen.Color:=clred;

Shape34.Pen.Color:=clred;

Gauge8.Progress:=Gauge8.Progress+round(100/time_zadan_EVM);

end;

{время выполнения задания от первого терминала}

if (time_EVM_zadan<>0)and(time_EVM_zadan<=time_zadan_EVM)and(flag1=true) then

begin

inc(time_EVM_zadan);

if time_EVM_zadan>2 then

begin

Gauge8.Progress:=Gauge8.Progress+round(100/time_zadan_EVM);

Shape4.Brush.Color:=clred;

end;

end

else

begin

if (Shape4.Brush.Color<>clgreen)and(flag2=false)and(flag3=false) then

begin

Shape4.Brush.Color:=clwhite;

Label7.Caption:=' -го терминала';

if (time_EVM_zadan-1=time_zadan_EVM)and(time_EVM_zadan<>0)then

begin

Edit4.Text:=IntToStr(StrToInt(Edit4.Text)+1);

Form5.Edit10.Text:=IntToStr(StrToInt(Form5.Edit10.Text)+1);

time1_analiz:=1;

Shape1.Brush.Color:=clblue;

Gauge4.Progress:=Gauge4.Progress+round(100/time_analiz);

end;

time_EVM_zadan:=0;

Gauge8.Progress:=0;

end;

flag1:=false;

end;

{обработка задания от второго терминала}

Shape30.Pen.Color:=clblack;

Shape31.Pen.Color:=clblack;

Shape32.Pen.Color:=clblack;

if (k2[i2]=SpinEdit5.Value)and(time_EVM_zadan=0) then

begin

flag2:=true;

time_zadan_EVM:=get_zadan_time;

inc(time_EVM_zadan);

Shape4.Brush.Color:=clred;

Label7.Caption:='2-го терминала';

Edit3.Text:=IntToStr(StrToInt(Edit3.Text)+1);

Form5.Edit8.Text:=IntToStr(StrToInt(Form5.Edit8.Text)+1);

i2:=0;

for i:=1 to SpinEdit5.Value do

k2[i]:=0;

Label44.Caption:='( )';

Shape30.Pen.Color:=clred;

Shape31.Pen.Color:=clred;

Shape32.Pen.Color:=clred;

Shape33.Pen.Color:=clred;

Shape34.Pen.Color:=clred;

Gauge8.Progress:=Gauge8.Progress+round(100/time_zadan_EVM);

end;

{время выполнения задания от второго терминала}

if (time_EVM_zadan<>0)and(time_EVM_zadan<=time_zadan_EVM)and(flag2=true) then

begin

inc(time_EVM_zadan);

if time_EVM_zadan>2 then

begin

Gauge8.Progress:=Gauge8.Progress+round(100/time_zadan_EVM);

Shape4.Brush.Color:=clred;

end;

end

else

begin

if (Shape4.Brush.Color<>clgreen)and(flag1=false)and(flag3=false) then

begin

Shape4.Brush.Color:=clwhite;

Label7.Caption:=' -го терминала';

if (time_EVM_zadan-1=time_zadan_EVM)and(time_EVM_zadan<>0)then

begin

Edit4.Text:=IntToStr(StrToInt(Edit4.Text)+1);

Form5.Edit11.Text:=IntToStr(StrToInt(Form5.Edit11.Text)+1);

time2_analiz:=1;

Shape2.Brush.Color:=clblue;

Gauge6.Progress:=Gauge6.Progress+round(100/time_analiz);

end;

time_EVM_zadan:=0;

Gauge8.Progress:=0;

end;

flag2:=false;

end;

{обработка задания от третьего терминала}

Shape26.Pen.Color:=clblack;

Shape27.Pen.Color:=clblack;

Shape37.Pen.Color:=clblack;

if (k3[i3]=SpinEdit5.Value)and(time_EVM_zadan=0) then

begin

flag3:=true;

time_zadan_EVM:=get_zadan_time;

inc(time_EVM_zadan);

Shape4.Brush.Color:=clred;

Label7.Caption:='3-го терминала';

Edit3.Text:=IntToStr(StrToInt(Edit3.Text)+1);

Form5.Edit9.Text:=IntToStr(StrToInt(Form5.Edit9.Text)+1);

i3:=0;

for i:=1 to SpinEdit5.Value do

k3[i]:=0;

Label45.Caption:='( )';

Shape26.Pen.Color:=clred;

Shape27.Pen.Color:=clred;

Shape37.Pen.Color:=clred;

Shape33.Pen.Color:=clred;

Shape34.Pen.Color:=clred;

Gauge8.Progress:=Gauge8.Progress+round(100/time_zadan_EVM);

end;

{время выполнения задания от третьего терминала}

if (time_EVM_zadan<>0)and(time_EVM_zadan<=time_zadan_EVM)and(flag3=true) then

begin

inc(time_EVM_zadan);

if time_EVM_zadan>2 then

begin

Gauge8.Progress:=Gauge8.Progress+round(100/time_zadan_EVM);

Shape4.Brush.Color:=clred;

end;

end

else

begin

if (Shape4.Brush.Color<>clgreen)and(flag1=false)and(flag2=false) then

begin

Shape4.Brush.Color:=clwhite;

Label7.Caption:=' -го терминала';

if (time_EVM_zadan-1=time_zadan_EVM)and(time_EVM_zadan<>0)then

begin

Edit4.Text:=IntToStr(StrToInt(Edit4.Text)+1);

Form5.Edit12.Text:=IntToStr(StrToInt(Form5.Edit12.Text)+1);

Shape3.Brush.Color:=clblue;

Gauge7.Progress:=Gauge7.Progress+round(100/time_analiz);

time3_analiz:=1;

end;

time_EVM_zadan:=0;

Gauge8.Progress:=0;

end;

flag3:=false;

end;

{анализ задания первым терминалом}

if (time1_analiz<>0)and(time1_analiz<=time_analiz) then

begin

inc(time1_analiz);

if time1_analiz>2 then

begin

Shape1.Brush.Color:=clblue;

Gauge4.Progress:=Gauge4.Progress+round(100/time_analiz);

end;

end

else

begin

if Shape1.Brush.Color<>clyellow then Shape1.Brush.Color:=clwhite;

Gauge4.Progress:=0;

time1_analiz:=0;

end;

{анализ задания вторым терминалом}

if (time2_analiz<>0)and(time2_analiz<=time_analiz) then

begin

inc(time2_analiz);

if time2_analiz>2 then

begin

Shape2.Brush.Color:=clblue;

Gauge6.Progress:=Gauge6.Progress+round(100/time_analiz);

end;

end

else

begin

if Shape2.Brush.Color<>clyellow then Shape2.Brush.Color:=clwhite;

Gauge6.Progress:=0;

time2_analiz:=0;

end;

{анализ задания третьим терминалом}

if (time3_analiz<>0)and(time3_analiz<=time_analiz) then

begin

inc(time3_analiz);

if time3_analiz>2 then

begin

Shape3.Brush.Color:=clblue;

Gauge7.Progress:=Gauge7.Progress+round(100/time_analiz);

end;

end

else

begin

if Shape3.Brush.Color<>clyellow then Shape3.Brush.Color:=clwhite;

Gauge7.Progress:=0;

time3_analiz:=0;

end;

{заполняем ЭВМ строкой}

if (index_nakop<>0)and(flag4=false)and(flag1=false)and(flag2=false)and(flag3=false) then

begin

flag4:=true;

Shape11.Pen.Color:=clred;

EVM:=nakopitel[1];

for i:=1 to index_nakop-1 do

nakopitel[i]:=nakopitel[i+1];

nakopitel[index_nakop].time:=0;

nakopitel[index_nakop].number:=0;

dec(index_nakop);

inc(time_stEVM);

Shape4.Brush.Color:=clgreen;

Gauge2.Progress:=Gauge2.Progress+round(100/time_st_EVM);

Label5.Caption:='('+IntToStr(index_nakop)+')';

end

else

Shape11.Pen.Color:=clblack;

if (time_stEVM<>0)and(time_stEVM<=time_st_EVM)and(flag4=true)then

begin

inc(time_stEVM);

if time_stEVM>2 then

begin

Shape4.Brush.Color:=clgreen;

Gauge2.Progress:=Gauge2.Progress+round(100/time_st_EVM)+1;

end;

end

else

begin

if (flag1=false)and(flag2=false)and(flag3=false) then

begin

Shape4.Brush.Color:=clwhite;

end;

Gauge2.Progress:=0;

time_stEVM:=0;

flag4:=false;

end;

if time_stEVM-1=time_st_EVM then

begin

if EVM.number=1 then

begin

Shape18.Pen.Color:=clred;

Shape19.Pen.Color:=clred;

Shape20.Pen.Color:=clred;

Shape21.Pen.Color:=clred;

Shape22.Pen.Color:=clred;

inc(i1);

k1[i1]:=i1;

Label43.Caption:='('+IntToStr(i1)+')';

Edit2.Text:=IntToStr(StrToInt(Edit2.Text)+1);

Form5.Edit6.Text:=IntToStr(StrToInt(Form5.Edit6.Text)+1);

end;

if EVM.number=2 then

begin

Shape15.Pen.Color:=clred;

Shape16.Pen.Color:=clred;

Shape17.Pen.Color:=clred;

inc(i2);

k2[i2]:=i2;

Label44.Caption:='('+IntToStr(i2)+')';

Edit2.Text:=IntToStr(StrToInt(Edit2.Text)+1);

Form5.Edit5.Text:=IntToStr(StrToInt(Form5.Edit5.Text)+1);

end;

if EVM.number=3 then

begin

Shape12.Pen.Color:=clred;

Shape13.Pen.Color:=clred;

Shape14.Pen.Color:=clred;

inc(i3);

k3[i3]:=i3;

Label45.Caption:='('+IntToStr(i3)+')';

Edit2.Text:=IntToStr(StrToInt(Edit2.Text)+1);

Form5.Edit4.Text:=IntToStr(StrToInt(Form5.Edit4.Text)+1);

end;

end

else

begin

Shape18.Pen.Color:=clblack;

Shape19.Pen.Color:=clblack;

Shape20.Pen.Color:=clblack;

Shape21.Pen.Color:=clblack;

Shape22.Pen.Color:=clblack;

Shape15.Pen.Color:=clblack;

Shape16.Pen.Color:=clblack;

Shape17.Pen.Color:=clblack;

Shape12.Pen.Color:=clblack;

Shape13.Pen.Color:=clblack;

Shape14.Pen.Color:=clblack;

end;

{if Shape1.Brush.Color=clblue then time_zanytat1:=time_zanytat1+1;

if Shape2.Brush.Color=clblue then time_zanytat2:=time_zanytat2+1;

if Shape3.Brush.Color=clblue then time_zanytat3:=time_zanytat3+1;}

if (Shape4.Brush.Color=clgreen)or(Shape4.Brush.Color=clred) then inc(time_zagruz);

if work_system<>0 then

begin

Edit8.Text:=FloatToStr(time_zagruz/work_system);

Form5.Edit16.Text:=FloatToStr(time_zagruz/work_system);

end;

{ if time_zagruz<>0 then Edit5.Text:=FloatToStr((work_system-time_zanytat1)/time_zagruz);}

if StrToInt(Form5.Edit1.Text)<>0 then

begin

Edit5.Text:=FloatToStr((StrToInt(Form5.Edit1.Text)-StrToInt(Form5.Edit6.Text))/StrToInt(Form5.Edit1.Text));

Form5.Edit13.Text:=FloatToStr((StrToInt(Form5.Edit1.Text)-StrToInt(Form5.Edit6.Text))/StrToInt(Form5.Edit1.Text));

end;

if StrToInt(Form5.Edit2.Text)<>0 then

begin

Edit6.Text:=FloatToStr((StrToInt(Form5.Edit2.Text)-StrToInt(Form5.Edit5.Text))/StrToInt(Form5.Edit2.Text));

Form5.Edit14.Text:=FloatToStr((StrToInt(Form5.Edit2.Text)-StrToInt(Form5.Edit5.Text))/StrToInt(Form5.Edit2.Text));

end;

if StrToInt(Form5.Edit3.Text)<>0 then

begin

Edit7.Text:=FloatToStr((StrToInt(Form5.Edit3.Text)-StrToInt(Form5.Edit4.Text))/StrToInt(Form5.Edit3.Text));

Form5.Edit15.Text:=FloatToStr((StrToInt(Form5.Edit3.Text)-StrToInt(Form5.Edit4.Text))/StrToInt(Form5.Edit3.Text));

end;

end;

end;

procedure TForm1.ToolButton1Click(Sender: TObject);

begin

Timer1.Enabled:=true;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

Timer1.Enabled:=true;

end;

procedure TForm1.Image6Click(Sender: TObject);

begin

Timer1.Enabled:=true;

end;

procedure TForm1.ToolButton2Click(Sender: TObject);

begin

Timer1.Enabled:=false;

end;

procedure TForm1.Image7Click(Sender: TObject);

begin

Timer1.Enabled:=false;

end;

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

Form8.SpinEdit1.Value:=SpinEdit1.Value;

end;

procedure TForm1.SpinEdit3Change(Sender: TObject);

begin

Form8.SpinEdit3.Value:=SpinEdit3.Value;

end;

procedure TForm1.SpinEdit4Change(Sender: TObject);

begin

Form8.SpinEdit4.Value:=SpinEdit4.Value;

end;

procedure TForm1.SpinEdit2Change(Sender: TObject);

begin

Form8.SpinEdit2.Value:=SpinEdit2.Value;

end;

procedure TForm1.SpinEdit6Change(Sender: TObject);

begin

Form8.SpinEdit6.Value:=SpinEdit6.Value;

end;

procedure TForm1.SpinEdit5Change(Sender: TObject);

begin

Form8.SpinEdit5.Value:=SpinEdit5.Value;

end;

procedure TForm1.SpinEdit7Change(Sender: TObject);

begin

Form8.SpinEdit7.Value:=SpinEdit7.Value;

end;

procedure TForm1.SpinEdit10Change(Sender: TObject);

begin

Form8.SpinEdit10.Value:=SpinEdit10.Value;

end;

procedure TForm1.SpinEdit8Change(Sender: TObject);

begin

Form8.SpinEdit8.Value:=SpinEdit8.Value;

end;

procedure TForm1.SpinEdit9Change(Sender: TObject);

begin

Form8.SpinEdit9.Value:=SpinEdit9.Value;

end;

procedure TForm1.ToolButton3Click(Sender: TObject);

begin

stop;

end;

procedure TForm1.Image8Click(Sender: TObject);

begin

stop;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

Form7.Show;

end;

procedure TForm1.ToolButton11Click(Sender: TObject);

begin

Form7.Show;

end;

procedure TForm1.Image9Click(Sender: TObject);

begin

Form7.Show;

end;

end.

Модуль 2:

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm2 = class(TForm)

Memo1: TMemo;

Label1: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit3;

{$R *.DFM}

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

close;

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

Form3.Show;

end;

end.

Модуль 3:

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm3 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

BitBtn1: TBitBtn;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

{$R *.DFM}

end.

Модуль 4:

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm4 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label5: TLabel;

Label14: TLabel;

BitBtn1: TBitBtn;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *.DFM}

procedure TForm4.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

Модуль 5:

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons, ExtCtrls;

type

TForm5 = class(TForm)

Label8: TLabel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Bevel2: TBevel;

Bevel1: TBevel;

Bevel3: TBevel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label9: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Bevel4: TBevel;

Bevel5: TBevel;

Bevel6: TBevel;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Label10: TLabel;

Label7: TLabel;

Label11: TLabel;

Label12: TLabel;

Bevel7: TBevel;

Bevel8: TBevel;

Bevel9: TBevel;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Bevel10: TBevel;

Edit10: TEdit;

Bevel11: TBevel;

Edit11: TEdit;

Bevel12: TBevel;

Edit12: TEdit;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Edit13: TEdit;

Bevel13: TBevel;

Bevel14: TBevel;

Edit14: TEdit;

Edit15: TEdit;

Bevel15: TBevel;

Label21: TLabel;

Edit16: TEdit;

Bevel16: TBevel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.DFM}

procedure TForm5.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

Модуль 6:

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls, Buttons;

type

TForm6 = class(TForm)

Image1: TImage;

BitBtn1: TBitBtn;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

{$R *.DFM}

end.

Модуль 7:

unit Unit7;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls, Buttons;

type

TForm7 = class(TForm)

Bevel1: TBevel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Image1: TImage;

Label4: TLabel;

Label5: TLabel;

Image2: TImage;

Label6: TLabel;

Label7: TLabel;

Image3: TImage;

Label8: TLabel;

Image4: TImage;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Image5: TImage;

Image6: TImage;

Splitter1: TSplitter;

Splitter2: TSplitter;

Bevel2: TBevel;

Label12: TLabel;

Label13: TLabel;

Shape1: TShape;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Shape5: TShape;

Label17: TLabel;

Shape10: TShape;

Shape2: TShape;

Label18: TLabel;

Shape3: TShape;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Shape4: TShape;

Label23: TLabel;

Label24: TLabel;

Shape6: TShape;

Label25: TLabel;

Label26: TLabel;

Label27: TLabel;

Label28: TLabel;

Label29: TLabel;

Label30: TLabel;

Label31: TLabel;

Bevel3: TBevel;

Label32: TLabel;

Label33: TLabel;

Label34: TLabel;

Label35: TLabel;

Label36: TLabel;

Label37: TLabel;

Label38: TLabel;

Label39: TLabel;

Label40: TLabel;

Label41: TLabel;

Image7: TImage;

Image8: TImage;

Label42: TLabel;

Bevel5: TBevel;

Label43: TLabel;

Label44: TLabel;

Label45: TLabel;

Image9: TImage;

Bevel4: TBevel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

{$R *.DFM}

procedure TForm7.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

Модуль 8:

unit Unit8;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox1 = class(TForm)

Panel1: TPanel;

ProgramIcon: TImage;

Version: TLabel;

Copyright: TLabel;

Comments: TLabel;

OKButton: TButton;

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox1: TAboutBox1;

implementation

{$R *.DFM}

end.

Модуль 9:

unit Unit9;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox2 = class(TForm)

Panel1: TPanel;

ProgramIcon: TImage;

ProductName: TLabel;

Version: TLabel;

Copyright: TLabel;

Comments: TLabel;

OKButton: TButton;

Label1: TLabel;

Label2: TLabel;

procedure OKButtonClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox2: TAboutBox2;

implementation

{$R *.DFM}

procedure TAboutBox2.OKButtonClick(Sender: TObject);

begin

close;

end;

end.

Модуль 10:

unit Unit10;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons, Spin;

type

TForm8 = class(TForm)

SpinEdit1: TSpinEdit;

Label24: TLabel;

SpinEdit3: TSpinEdit;

Label16: TLabel;

Label17: TLabel;

SpinEdit4: TSpinEdit;

SpinEdit2: TSpinEdit;

Label18: TLabel;

Label26: TLabel;

SpinEdit6: TSpinEdit;

Label27: TLabel;

Label23: TLabel;

Label19: TLabel;

Label20: TLabel;

SpinEdit5: TSpinEdit;

SpinEdit10: TSpinEdit;

Label25: TLabel;

SpinEdit7: TSpinEdit;

Label21: TLabel;

SpinEdit8: TSpinEdit;

SpinEdit9: TSpinEdit;

Label22: TLabel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure SpinEdit3Change(Sender: TObject);

procedure SpinEdit4Change(Sender: TObject);

procedure SpinEdit2Change(Sender: TObject);

procedure SpinEdit6Change(Sender: TObject);

procedure SpinEdit5Change(Sender: TObject);

procedure SpinEdit7Change(Sender: TObject);

procedure SpinEdit10Change(Sender: TObject);

procedure SpinEdit8Change(Sender: TObject);

procedure SpinEdit9Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm8.BitBtn1Click(Sender: TObject);

begin

close;

end;

procedure TForm8.SpinEdit1Change(Sender: TObject);

begin

Form1.SpinEdit1.Value:=SpinEdit1.Value;

end;

procedure TForm8.SpinEdit3Change(Sender: TObject);

begin

Form1.SpinEdit3.Value:=SpinEdit3.Value;

end;

procedure TForm8.SpinEdit4Change(Sender: TObject);

begin

Form1.SpinEdit4.Value:=SpinEdit4.Value;

end;

procedure TForm8.SpinEdit2Change(Sender: TObject);

begin

Form1.SpinEdit2.Value:=SpinEdit2.Value;

end;

procedure TForm8.SpinEdit6Change(Sender: TObject);

begin

Form1.SpinEdit6.Value:=SpinEdit6.Value;

end;

procedure TForm8.SpinEdit5Change(Sender: TObject);

begin

Form1.SpinEdit5.Value:=SpinEdit5.Value;

end;

procedure TForm8.SpinEdit7Change(Sender: TObject);

begin

Form1.SpinEdit7.Value:=SpinEdit7.Value;

end;

procedure TForm8.SpinEdit10Change(Sender: TObject);

begin

Form1.SpinEdit10.Value:=SpinEdit10.Value;

end;

procedure TForm8.SpinEdit8Change(Sender: TObject);

begin

Form1.SpinEdit8.Value:=SpinEdit8.Value;

end;

procedure TForm8.SpinEdit9Change(Sender: TObject);

begin

Form1.SpinEdit9.Value:=SpinEdit9.Value;

end;

end.

Модуль 11:

unit Unit11;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm11 = class(TForm)

Label1: TLabel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form11: TForm11;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm11.BitBtn1Click(Sender: TObject);

begin

close;

Form1.Timer1.Enabled:=false;

end;

end.

Модуль 12:

unit Unit12;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type

TForm12 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form12: TForm12;

implementation

{$R *.DFM}

end.

Приложение Б

Экранные формы


Окно начала моделирования:

Рис. Б.1


Окно статистических данных:

Рис. Б.2


Окно вывода параметров:

Рис. Б.3

Окно окончания моделирования:


Рис. Б.4

Приложение В

Блок-схема алгоритма



Рис. В.1

Рис. В.1

Приложение Г

Q-схема


Рис. Г.1