Курсовой проект По дисциплине «Моделирование систем» СОДЕРЖАНИЕ Введение 1 Описание задачи 1.1 Постановка задачи 1.2 Описание предметной области 1.3 Описание математического аппарата 1.4 Метод решения 2 Описание применения 2.1 Назначение и условия применения программы 2.2 Входные и выходные данные 2.3 Инструкция пользователя 14 3
Описание программы 3.1 Общие сведения и функциональное назначение 3.2 Алгоритм работы программы 3.3 Описание логической структуры 3.4 Используемые технические средства, вызов, загрузка 3.5 Контрольный пример 28 Заключение 20 Список использованной литературы 21 Приложение А. Текст программы 22 Приложение Б. Экранные формы 29
Приложение В. Блок-схема алгоритма 30 Приложение Г. Q-Схема 31 ВВЕДЕНИЕ Системный анализ – это научная дисциплина, которая разрабатывает общие принципы исследования сложных объектов с учетом их системного характера. Под системным анализом также понимают методологию анализа объектов посредством представления их в качестве систем и исследования этих систем. Системным анализом называется такой способ изучения сложных явлений
и процессов, при котором рассматриваются их части называемые подсистемами и элементами с целью выяснения влияния связей и подсистем на свойства объектов в целом. Существует 4 понятия: а) системный анализ; б) теория систем; в) системный подход; г) системотехника. Инструментом системного подхода является системный анализ, который тео-ретически базируется на теории систем. Системотехника – часть системного анализа, направленная на создание авто-матизированных систем,
т.е. систем, в составе которых функционируют люди и компьютеры. Модель – есть способ существования знаний. Модель – это объект-заменитель объекта-оригинала. Моделирование – замещение одного объекта другим с целью получения ин-формации о важнейших свойствах объекта-оригинала с помощью объекта-модели путем проведения эксперимента. Теория моделирования – теория замещения одних объектов (оригиналов) дру-гими (моделями) и исследование
свойств объектов на их моделях. Машинное моделирование – это наиболее универсальный и эффективный ме-тод оценки характеристик больших и сложных систем. Машинное моделирование наиболее успешно в таких случаях, когда: а) тяжело четко сформулировать критерии оценки качества функционирова-ния объекта; б) цель не поддается полной формализации. Таким образом, компьютерная модель должна сочетать программно-технические возможности
ЭВМ и неформальное мышление, то есть интеллект. Моделирование с помощью ЭВМ используется в следующих случаях: а) для исследования объекта до того, как он спроектирован. Цель - определе-ние чувствительности характеристик к изменениям структуры, алгоритмов и пара-метров объектов и внешней среды; б) на этапе проектирования объекта с целью анализа и синтеза вариантов объ-екта и выбора среди альтернативных наиболее эффективного; в) при эксплуатации объекта, т.е. после завершения
проектирования и внедре-ния объекта. Цель – получение информации, дополняющей результаты натурных испытаний (эксплуатации) реального объекта и для получения прогнозов эволюции объекта во времени. 1 ОПИСАНИЕ ЗАДАЧИ 1.1 Постановка задачи В студенческом зале размещены 2 мини-ЭВМ и устройство подготовки данных (УПД). Студенты приходят с интервалом в 8±2 минуты и треть из них хочет использовать УПД совместно с ЭВМ, остальные только
ЭВМ. Допустимая очередь в машинном зале составляет 4 человека, включая работающего с УПД. Работа на УПД занимает 8±1 минут, а на ЭВМ – 17. Кроме этого, 20% работающих на ЭВМ возвра-щаются для повторного использования ЭВМ. Необходимо смоделировать работу машинного зала в течение 60 часов. Опре-делить нагрузку УПД, ЭВМ и вероятность отказа в обслуживаниив виду переполне-ния очереди.
Определить соотношение желающих работать на ЭВМ и на УПД в очереди. 1.2 Описание предметной области Одним из основных подходов, используемых при построении математических моделей процессов функционирования систем, является непрерывно-стохастический подход. Схемы массового обслуживания представляют собой класс математических схем, разработанных в теории массового обслуживания и различных приложениях для формализации процессов функционирования систем, которые по
сути своей яв-ляются процессами обслуживания. В качестве процесса обслуживания могут быть представлены разные по своей функциональной природе процессы функционирования экономических, производст-венных, технических и других систем: а) потоки поставок продукции предприятию; б) потоки деталей и комплектующих изделий на сборочном конвейере цеха; в) заявки на обработку информации ЭВМ от отдельных терминалов; г) обслуживание покупателей в магазине или клиентов банка кассиром.
Задачи массового обслуживания возникают в тех случаях, когда условия на выполнение работы поступают в случайные моменты времени, а на выполнение этих работ, называемые обслуживанием, осуществляется одним или несколькими обслуживающими устройствами. Длительность выполнения отдельных требований предполагается случайной. В любом элементарном акте обслуживания можно выделить две основные со-ставляющие: ожидание обслуживания и собственно обслуживание заявки. Характерной особенностью задач массового обслуживания
является возник-новение несоответствия между скоростью обслуживания, в результате чего или ока-зываются простаивающими обслуживаемые приборы или образуется очередь на об-служивание. Поэтому принципиальный интерес представляют следующие характе-ристики СМО: а) длина очереди в различные моменты времени; б) общая продолжительность нахождения требования в системе обслужива-ния; в) доля времени, в течении которого обслуживающие приборы были не заня-ты.
1.3 Описание математического аппарата В данной курсовом проекте рассматривается модель трехканальной системы обслуживания: три канала обслуживания – две ЭВМ и УПД. Схема модели имеет один накопитель и три канала обслуживания. (Приложение Б). Обслуживание производится свободным в данный момент времени каналом. При чем, если очерелная заявка из накопителя берется по такому правилу: если за-явка не требует
УПД и есть свободная ЭВМ, то заявка принимается на обработку. Если УПД занята, то заявка пропускается и обрабатывается следующая в накопите-ле. В качестве математической модели можно представить модели всех компо-нентов моделируемой системы. Основным элементом модели является тип-запись TUserInfo, который служит для представления обслуживаемых студентов. Этот тип лишь поле NeedPPD, кото-рые определяет надобность в
УПД. Кроме того, в программе описаны объекты TEVM и TQueue. Класс TEVM определяет поведение объекта ЭВМ. Он моделирует работу от-дельной ЭВМ в системе, которая имеет свои свойства и изменяет их независимо от других элементов системы. Т.е. каждая ЭВМ является отдельной независимой ча-стью всей системы. Класс TQueue реализует модель работы накопителя. Объект отвечает за пове-дение заявок: поступление,
хранение, удаление, передачу на обработку в ЭВМ. В соответствии с условием через каждый промежуток времени на вход нако-пителя поступает новая заявка. Если накопитель может ее принять, он это делает, иначе заявка игнорируется и записывается сведение в статистику. Каждый такт система проверяет доступность одной из ЭВМ. Попадание заяв-ки на обработку регулируется с помощью правила.
По окончанию выполнения завя-ки, если не требуется продлить время работы, заявка покидает ЭВМ. Работа данной системы реализуется в соответствии с Q-схемой, которая опреде-ляется следующим набором: Q = <W, U, H, Z, R, A> (1.1) где: W – подмножество входящих потоков заявок на обслуживание: U – подмножество потоков обслуживания; H – подмножество собственных параметров;
Z – подмножество состояний элементов структуры (ZiH, ZiK); R – оператор сопряжения элементов структуры (каналов и накопителей); A – оператор алгоритмов обслуживания заявок (оператор поведения заявок). Подмножество собственных параметров H для данной схемы: Hi = {Lф, Lki, Lik, Li} (1.2) где: Lф– количество фаз.
Lф = 2; Lki– количество каналов. Lk1 = 1, Lk2=1; Lнj– количество накопителей. Lн1 = 1, Lн2 = 1; Lнi¬ – ёмкость i-го накопителя. Теоретически не ограниченна. Подмножество состояний системы определяется выражением: Zi=(ZiH, ZiK) (1.3) где – ZiH состояние накопителя (Zi = 0– накопитель пуст, Zi = 1 – в накопителе име-ется 1 заявка Zi = Li – накопитель полностью заполнен);
Li – ёмкость накопителя, измеряемая числом помещаемых в нём заявок; ZiK – состояние канала Кi ( Zi = 0– канал свободен, Zi = 1– канал занят). В курсовом проекте имеется статистика, описанная в постановке задач. При генерации завяки увеличивается значение счетчика AllCount. На каждом такте работы программа информирует пользователя о состоянии счетчика.
Edit1.Text := inttostr(queue.AllCount); Также ведется подсчет количества отклоненных заявок Rejected Edit2.Text := inttostr(queue.Rejected); Кроме того ведется подсчет заявок, требующих УПД Edit4.Text := inttostr(inPPD); Для расчета соотношения if queue.AllCount = 0 then Edit5.Text := '0%' else Edit5.Text := floattostr(roundto((outLine/queue.AllCou nt*100), -2)) + '%'; Расчет соотношения заявок, требующих
УПД ко всем заявкам вычисляется по такой формуле. if queue.AllCount = 0 then Edit6.Text := '0' + '%' else Edit6.Text := floattostr(roundto((inPPD/queue.AllCount *100), -2)) + '%'; 1.4 Метод решения Поставленная задача была реализована при помощи объектно-ориентирован-ного и структурного программирования. Суть структурного программирования заключается в оформлении часто ис-пользуемых последовательностей
команд как отдельных функций и процедур и в объединении данных, связанных по смыслу, в сложные структуры данных. Структурное программирование – это программирование, которое основано на основных вычислительных структурах. При использовании этого метода придержи-ваются строгих правил построения алгоритма. Всякая структурированная блок-схема может быть выражена как композиция из четырёх основных элементарных блок-схем: - композиции, то есть последовательным решением двух задач.
Если первая задача вырабатывает какую-то информацию необходимую для второй задачи, то они образуют составной блок. В такой подстановке задача разделяется на отдельные части. Объекты первой задачи могут являться глобальными для второй задачи. - альтернативы. В такой блок-схеме вычисляется значение предиката и вы-полняется задача 1 или 2. Задача 2 может при этом отсутствовать. Эта блок-схема легко реализуется оператором
IF THEN ELSE. - итерации повторения, то есть производится повторения вычисления по-ставленной задачи. Структурированное программирование состоит из этих элементарных блок-схем, образуя блоки задач, которые, в свою очередь, могут содержать в себе блок-схемы, описанные выше. 2 ОПИСАНИЕ ПРИМЕНЕНИЯ 2.1 Назначение и условия применения программы Программа “ Моделирование работы компьютерного зала по информацион-ному обслуживанию студентов ” предназначена
для удобного и наглядного модели-рования работы компьютерного зала. Программа имеет наглядный интерфейс, который позволяет проследить визу-ально процессы, проходящие в системе. Программа может быть использована на IBM AT совместимом компьютере, в котором установлена операционная система Windows 9x, 2000, NT, XP, и среда про-граммирования Delphi 6. Общие требования к системе определяются требованиями операционной сис-темы и среды программирования
Delphi 6. 2.2 Входные и выходные данные Входными к программе являются параметры моделирования, а именно: - объем накопителя; - временные параметры обработки заявок; - вероятностные показатели поведения заявок; К выходным данным относятся результаты моделирования, которые отобра-жаются на экране монитора: - количество обслуженных заявок; - количество отклоненных заявок. - время работы системы; - процент УПД заявок от общего количества; 2.3 Инструкция пользователя
Запуск программы “Моделирование работы компьютерного зала по информа-ционному обслуживанию студентов” осуществляется при помощи файла Pro-ject1.exe. После запуска появится окно программы, в котором имеются все необходи-мые средства для моделирования. Суть моделирования заключается в том, что происходит запуск процесса на основании исходных данных, и на экране отображается ход процесса. Кнопка «Старт» служит для запуска моделирования. Кнопка «Пауза» предназначении для временной остановки
процесса модели-рования. Информацию о моделировании отображается в окне моделирования. Также окно содержит журнал событий. Он отображает все события, которые происходили в системе. Визуальная модель состоит из очереди, 2 ЭВМ и УПД. Если объект свободен, он отображается зеленым цветом, иначе – красным. 3 ОПИСАНИЕ ПРОГРАММЫ 3.1 Общие сведения и функциональное назначение
Программа “Моделирование работы компьютерного зала по информационно-му обслуживанию студентов” представляет собой законченный программный про-дукт, который предназначен для моделирования работы компьютерного зала. Выполнение данной программы производилось при помощи средств языка программирования Delphi 7. Borland Delphi представляет собой язык программирования общего назначе-ния. Наиболее эффективно он может быть использован для быстрого создания не-больших и надежных приложений.
Однако он с успехом может использоваться и при написании сложных проектов. Borland Delphi оперирует объектами, присущими типичной ЭВМ: символами, строками, целыми числами различной длины, числами с плавающей запятой. К важнейшим достоинствам языка Borland Delphi относятся очень быстрая компиляция программ, объединение компилятора с интерактивной средой разработ-чика, средства быстрой разработки приложений, предупреждение
об ошибках на уровне исходной программы, обширная библиотека программ и полезные расшире-ния в виде компонентов. Delphi – современный язык. Он включает в себя те управляющие конструкции, которые рекомендуются теоретическим и практическим программированием. Его структура пробуждает программиста использовать в своей работе структурное про-граммирование и пошаговую разработку модулей. Результатом такого подхода яв-ляется надежная и хорошо читаемая программа.
Важнейшей особенностью языка является иерархическая структура программ. Она возможна благодаря наличию процедур и функций, обеспечивающих возможность практической реализации принципов структурного программирования. Ориентируясь на эти принципы, мож-но разделить большую программу на ряд меньших, оформив их как процедуры или функции. Эти процедуры отлаживаются отдельно и независимо, а затем уже могут использоваться в главной программе
как готовые и независимые. Благодаря операторам, процедурам и функциям языка возможно написание ряда сложных и разнообразных по структуре, применению и выполняемым функци-ям программ. Данная задача является задачей обработки множества однотипных заявок, а такие задачи решаются с помощью систем массового обслуживания. Системы массового обслуживания представляют собой класс ма¬тематических схем, разработанных в теории массового обслуживания и различных приложениях для формализации процессов
функционирова¬ния систем, которая по своей сути яв-ляются процессами обслужива¬ния. Задачи массового обслуживания возникают в тех случаях, ког¬да условия на выполнение роботы поступают в случайные моменты времени, а выполнение этих работ, называемые обслуживанием, осу¬ществляется одним или несколькими обслу-живающими устройствами. Длительность выполнения отдельных требований пред-полагается слу¬чайной. Устройство, способное в любой момент времени обслуживать лишь одно тре-бование, называется
каналом обслуживания. Характерной особенностью задач массового обслуживания яв¬ляется возник-новение несоответствия между скоростью поступления требований и скоростью об-служивания, в результате чего или оказы¬ваются простаивающими обслуживаемые приборы или образуется оче¬редь на обслуживание. В данной работе в накопителях возникают очере¬ди на обслуживание. Исходный текст программы находится в следующих файлах:
Project1.dpr, Unit1.pas. Исполняемый модуль под именем Kursak.exe имеет размер 401408 байт. 3.2 Алгоритм работы программы Шаг1. Запуск процесса моделирования. Шаг 2. Шаг2. Обработка ЭВМ. Шаг 3 Шаг3. Генерация новых заявок. Шаг 4 Шаг4. Проверка времени работы. 6 часов – шаг 5. меньше – шаг 2.
Шаг5. Генерация результатов 3.3 Описание логической структуры Программа «Моделирование работы компьютерного зала по информационно-му обслуживанию студентов» написана в соответствии с принципами объектно-ориентированного программирования. В качестве среды разработки была использо-вана программная среда Delphi 7, которая позволяет довольно быстро создавать на-дежные приложения и удобный интерфейс.
Программа состоит из следующих частей: - Project1.dpr – файл проекта, содержащий сведения, необходимые для началь-ной инициализации всего проекта. - Unit1.pas – основной модуль программы, который служит собственно для выполнения задания, т.е. этот модуль осуществляет непосредственно процесс моде-лирования. - Unit1.dfm – файл, содержащий сведения о внешнем виде формы основного модуля. Собственно процесс моделирования описан в модуле Unit1.
Этот модуль ус-ловно можно разделить на несколько частей: заголовочная часть, в которой содер-жится имя программы и указан список всех используемых модулей; часть описания, в которой приведено описание всех переменных, типов, функций и процедур, ис-пользуемых в программе; и основная часть, содержащая основной текст программы. Далее весь процесс моделирования определяется действиями пользователя. Если была нажата кнопка «Старт», то в результате этого, в системе выполня-ются следующие действия:
активизируется и запускается таймер – компонент, кото-рый срабатывает через определенные интервалы времени, при этом выполняя дейст-вия, описанные внутри процедуры Timer1Timer. Процедура Timer1Timer выполняет ряд действий, меняющих состояние каждой ЭВМ, накопителя и счетчиков. Работа таймера продолжается до тех пор, пока время моделирования не закон-чится, после чего таймер останавливается (свойство
Enabled принимает значение False), что означает конец моделирования. Если во время моделирования нажать кнопку «Пауза», то выполнение таймера останавливается, а при нажатии кнопки «Продолжить» выполнение возобновляется (устанавливает свойство Enabled в значение False). 3.4 Используемые технические средства, вызов, загрузка Для разработки данной программы был использован IBM
PC-совместимый компьютер c оперативной памятью 1024 Мбайт, жесткий диск с объемом 300 Гбай-та, монитор SVGA 19”. Программа была разработана в среде программирования Delphi7. Требования к системе определяются требованиями компилятора языка Delphi7 и операционной системы. Для работы программы необходимо наличие
ОС Microsoft Windows 9x, 2000, NT или XP. 3.5 Контрольный пример Процесс моделирования был запущен с использованием оптимальных данных, для решения задания. Были получены результаты, приведенные ниже. Исходные данные описаны в постановке задачи. Результаты: - количество заявок: 400 - отклонено: 3 - время работы: 60 минут; - заявок на УПД: 105; - вероятность попадания в очередь:
0,75% - соотношение УПД к ЭВМ: 26,25% ЗАКЛЮЧЕНИЕ Целью данного проекта было приобретение, и закрепление навыков модели-рования систем, теоретические основы которого были изложены в курсе «Основы системного анализа объектов и процессов компьютеризации». Результатом разра-ботки проекта является программа, моделирующая работу компьютерного зала. Мо-делируемая система была реализована на основе математической модели, называе-мой Q-схемой. Программа «Моделирование работы компьютерного зала по информационно-му обслуживанию студентов»
позволяет успешно промоделировать изучаемую сис-тему, и получить конкретные результаты, которые можно подвергнуть анализу с це-лью улучшения работы системы, если это необходимо. В программе реализован механизм выдачи статистических данных. Таким об-разом, можно фиксировать результаты работы системы в любой момент времени. Программа имеет удобный интерфейс, который позволяет ориентироваться в про-цессе функционирования системы.
Программа была написана на объектно-ориентированном языке программиро-вания Delphi 7. При необходимости ее можно легко усовершенствовать, для реали-зации более сложных процессов. В общем, исходя из перечисленного выше, можно сделать вывод, что цель курсового проекта была достигнута. Материал, изложенный в курсе «Основы сис-темного анализа объектов и процессов компьютеризации» был усвоен и закреплен. СПИСОК ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ 1.
Фаронов В. В. Delphi 5 Учебный курс М.: Нолидж, 2001. – 270 с. 2. Методические указания по выполнению курсового проекта по дисциплине “Основы системного анализа объектов и процессов компьютеризации”. В.О. Костин - Херсон. 2000. – 28 с. 3. Советов Б.Я Яковлев С.А. Лабораторный практикум M.: Высш. шк. 1983. – 260 с. 4. Советов Б.Я Яковлев
С.А. Моделирование систем. Куpсовое пpоектиpование.: М.Высшая школа, 1988. – 135 c. 5. Советов Б.Я Яковлев С.А. Моделирование систем М.: Высш. шк 1985. – 275 с. Приложение А Текст программы unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls, math; const EVM_COUNT = 2; MAXQ = 10; C_QWIDTH = 40; C_QHEIGHT = 60; EVM_WORK = 17; type TUserInfo = record NeedPPD: boolean; end; type TEVM = object public Panel: TPanel; busy: boolean; constructor Create(p: TPanel); procedure StartUserWork(cUser: TUserInfo); procedure
OnBusy; procedure OnRelease; private iTimer: integer; //сколько тактов занят user: TUserInfo; end; type TQueue = object public constructor Create(x, y, cnt: integer; owner: TWinControl); destructor Destroy; procedure EmptyField(k: integer); procedure EmptyAll; procedure OnBusy(k: integer); procedure OnRelease(k: integer); procedure
OnUserAddFault; procedure MoveQ(k: integer); function IsEmpty: boolean; function GenerateUser: integer; //-1 - full queue function GetEmptyIndex: integer; //-1 full private Indicators: array [1 MAXQ] of TPanel; Status: array [1 MAXQ] of boolean; //true - busy Users: array [1 MAXQ] of TUserInfo; Count: integer;
AllCount: integer; //все заявки Rejected: integer; end; type TForm1 = class(TForm) Memo1: TMemo; Panel30: TPanel; Panel1: TPanel; Panel2: TPanel; Panel20: TPanel; Button1: TButton; Button2: TButton; Panel3: TPanel; Edit1: TEdit; Label1: TLabel; Timer1: TTimer; Edit2: TEdit; Label2:
TLabel; Edit3: TEdit; Label3: TLabel; Edit4: TEdit; Label4: TLabel; Edit5: TEdit; Label5: TLabel; Edit6: TEdit; Label6: TLabel; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer1Timer(Sender:
TObject); function GetEmptyEVM: integer; procedure Button1Click(Sender: TObject); procedure OnPPDBusy; procedure OnPPDRelease; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; mach: array [1 EVM_COUNT] of TEVM; queue:
TQueue; iLastUserTime: integer; //when last came iPDDTime: integer; bPDDBusy: boolean; minutes: integer; inPPD, outLine: integer; implementation {$R *.dfm} constructor TQueue.Create(x, y, cnt: integer; owner: TWinControl); var i: integer; begin if cnt > MAXQ then begin Exception.Create('Слишком большая очередь'); exit; end; Count := cnt; for i := 1 to cnt do begin Indicators[i] :=
TPanel.Create(owner); Indicators[i].Height := C_QHEIGHT; Indicators[i].Width := C_QWIDTH; Indicators[i].Left := x + (i-1)*C_QWIDTH; Indicators[i].top := y; Indicators[i].Caption := inttostr(i); Indicators[i].BevelInner := bvLowered; Indicators[i].Parent := owner; end; EmptyAll; end; destructor TQueue.
Destroy; var i: integer; begin {for i := 1 to Count do Indicators[i].Free; } end; procedure TQueue.OnUserAddFault; begin inc(rejected); end; function TQueue.GetEmptyIndex: integer; var i: integer; begin result := -1; for i := count downto 1 do if not status[i] then begin result := i; break; end; end; function TQueue.GenerateUser: integer; begin inc(AllCount); result :=
GetEmptyIndex; if result = -1 then begin OnUserAddFault; exit; end; OnBusy(result); randomize; //init user // Users[result].NeedPPD := (random(30) mod 3 = 0); Users[result].NeedPPD := (random(2) = 1); end; function TQueue.IsEmpty: boolean; var i: integer; begin result := false; for i := 1 to Count do if status[i] then exit; result := true; end; procedure
TQueue.MoveQ(k: integer); var i: integer; begin if k = 1 then exit; if IsEmpty then exit; for i := k downto 2 do begin //Indicators[i] := Indicators[i-1]; Status[i] := Status[i-1]; Users[i] := Users[i-1]; if Status[i] then OnBusy(i) else OnRelease(i); end; OnRelease(1); end; procedure TQueue.OnBusy(k: integer); begin
Status[k] := true; Indicators[k].Color := clRed; end; procedure TQueue.OnRelease(k: integer); begin Status[k] := false; Indicators[k].Color := clGreen; end; procedure TQueue.EmptyField(k: integer); begin OnRelease(k); Status[k] := false; end; procedure TQueue.EmptyAll; var i: integer; begin for i := 1 to count do
EmptyField(i); AllCount := 0; Rejected:= 0; end; constructor TEVM.Create(p: TPanel); begin panel := p; OnRelease; end; procedure TEVM.OnBusy; begin busy := true; panel.Color := clRed; end; procedure TEVM.OnRelease; begin busy := false; panel.Color := clGreen; end; procedure TEVM.StartUserWork(cUser: TUserInfo); begin user := cuser; iTimer := 0;
OnBusy; end; procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin for i := 1 to EVM_COUNT do mach[i].Create(TPanel(findcomponent('pan el'+inttostr(i)))); //queue := TQUEUE.Create(100, 100, 4, form1); queue.Create(100, 50, 4, Panel30); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Button2.Click; queue.Destroy; end; function
TForm1.GetEmptyEVM: integer; var i: integer; begin result := -1; for i := 1 to EVM_COUNT do if not mach[i].busy then begin result := i; break; end; end; procedure TForm1.OnPPDBusy; begin bPDDBusy := true; Panel20.Color := clRed; iPDDTime := 0; memo1.Lines.Add('Занят ППД'); end; procedure TForm1.OnPPDRelease; begin bPDDBusy := false; Panel20.Color := clGreen; memo1.Lines.Add('Освободилось
ППД'); end; procedure TForm1.Timer1Timer(Sender: TObject); var i, k, j: integer; newuser: boolean; s: string; begin //user from EVM s := ; for i := 1 to EVM_COUNT do begin if mach[i].Busy then inc(mach[i].iTimer); if (mach[i].Busy) and (mach[i].iTimer >= EVM_WORK) then begin //user time out ) mach[i].iTimer := 0; randomize; if (random(4) = 1) then begin //20% mach[i].iTimer := 0; memo1.Lines.
Add('Пользоваель вернулся'); end else begin //empty EVM mach[i].busy := false; mach[i].OnRelease; memo1.Lines.Add('Пользователь закончил работу на машине' + inttostr(i)); end; end; end; //user from PPD if (bPDDBusy) and (iPDDTime >= 8) then begin OnPPDRelease; end else inc(iPDDTime); //user to EVM if not queue.
IsEmpty then for i := 1 to EVM_COUNT do if not mach[i].busy then begin for j := queue.Count downto 1 do if queue.Status[j] then begin if ((queue.Users[j].NeedPPD = true) and (bPDDBusy = false)) or (queue.Users[j].NeedPPD = false) then begin //add if queue.Users[j].NeedPPD then memo1.Lines.Add('Новый пользователь с
ППД') else memo1.Lines.Add('Новый пользователь без ППД'); if (queue.Users[j].NeedPPD = true) then begin OnPPDBusy; end; mach[i].user := queue.Users[j]; mach[i].iTimer := 0; mach[i].OnBusy; queue.MoveQ(j); end; end; end; //display values Edit1.Text := inttostr(queue.AllCount); Edit2.Text := inttostr(queue.
Rejected); Edit4.Text := inttostr(inPPD); if queue.AllCount = 0 then Edit5.Text := '0%' else Edit5.Text := floattostr(roundto((outLine/queue.AllCou nt*100), -2)) + '%'; if queue.AllCount = 0 then Edit6.Text := '0' + '%' else Edit6.Text := floattostr(roundto((inPPD/queue.AllCount *100), -2)) + '%'; minutes:= minutes + 1; j := minutes div 60; if j = 60 then begin edit3.Text
:= '60:00'; memo1.Lines.Add('Конец работы'); Timer1.Enabled := false; exit; end; if j = 0 then s := '00' else if j < 10 then s := '0'+inttostr(j) else s := inttostr(j); s := s + ':'; j := minutes - j*60; if j = 0 then s := '00' else if j < 10 then s := s + '0'+inttostr(j) else s := s + inttostr(j); edit3.Text := s; end; procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin bPDDBusy := false; iPDDTime := 0; queue.
EmptyAll; for i := 1 to EVM_COUNT do mach[i].busy := false; Timer1.Enabled := true; minutes := 0; inPPD := 0; outLine := 0; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled := false; end; end. Приложение Б Экранные формы Рис.Б.1. Программа моделирования Приложение В Блок-схема алгоритма Приложение Г Q-схема
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |