Вход

МОДЕЛИРОВАНИЕ РАБОТЫ КОМПЬЮТЕРНОГО ЗАЛА ОБСЛУЖИВАНИЯ СТУДЕНТОВ

Курсовая работа по информатике и информационным технологиям
Дата добавления: 29 января 2011
Язык курсовой: Русский
Word, rtf, 2.4 Мб
Курсовую можно скачать бесплатно
Скачать
Данная работа не подходит - план Б:
Создаете заказ
Выбираете исполнителя
Готовый результат
Исполнители предлагают свои условия
Автор работает
Заказать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу
29 Курсовой проект По дисциплине « Моделирование систем » СОДЕРЖАНИЕ Введение 6 1 Описание задачи 8 1.1 Постановка задачи 8 1.2 Описание предметной области 8 1.3 Описание математическо го аппарата 9 1.4 Метод решения 1 1 2 Описание применения 13 2.1 Назначение и условия применения программы 13 2.2 Входные и выходные данные 13 2.3 Инструкция пользователя 14 3 Описание программы 15 3.1 Общие сведения и функциональное назначение 15 3.2 Алгоритм работы программы 17 3.3 Описание логической структуры 17 3.4 Используемые технические средства, вызов, загрузка 1 8 3.5 Контрольный пример 2 8 Заключение 2 0 Список использованной литературы 2 1 Приложение А. Текст программы 2 2 Приложение Б. Экранные формы 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 – подмножество состояний элементов структуры ( Z i H , Z i K ); R – оператор сопряжения элементов структуры (каналов и накопителей); A – оператор алгоритмов обслуживания заявок (оператор поведения заявок). Подмножество собственных параметров H для данной схемы: H i = L ф , L ki , L ik , L i (1. 2 ) где: L ф – количество фаз. L ф = 2; L ki – количество каналов. L k1 = 1, L k2 =1; L н j – количество накопителей. L н1 = 1, L н2 = 1; L нi – ёмкость i -го накопителя. Теоретически не ограниченна. Подмножество состояний системы определяется выражением: Z i =( Z i H , Z i K ) (1.3) где – Z i H состояние накопителя (Z i = 0– накопитель пуст, Z i = 1 – в накопителе им е ется 1 заявка,..., Z i = L i – накопитель полностью заполнен); L i – ёмкость накопителя, измеряемая числом помещаемых в нём заявок; Z i K – состояние канала К i ( Z i = 0– канал свободен, Z i = 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.AllCount*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 9 x , 2000, NT , XP , и среда пр о граммирования Delphi 6. Общие требования к системе определяются требованиями операционной с и стемы и среды программирования Delphi 6. 2.2 Входные и выходные данные Входными к программе являются параметры моделирования, а именно: - объем накопителя ; - временные параметры обработки заявок ; - вероятностные показатели поведения заявок; К выходным данным относятся результаты моделирования, которые отобр а жаются на экране монитора: - количество обслуженных заявок ; - количество отклоненных заявок . - время работы системы; - процент УПД заявок от общего количества; 2.3 Инструкция пользователя Запуск программы “ Моделирование работы компьютерного зала по информ а ционному обслуживанию студентов ” осуществляется при помощи файла Pr o ject 1 . exe . После запуска появится окно программы, в котором имеются все необход и мые средства для моделирования. Суть моделирования заключается в том, что происходит запуск процесса на основании исходных данных, и на экране отображается ход процесса. Кнопка « Старт » сл ужит для запуска моделирования. Кнопка «Пауза» предназначении для временной остановки процесса модел и рования. Информацию о моделировании отображается в окне моделирования. Также окно содержит журнал событий. Он отображает все события, которые происходили в системе. Визуальная модель состоит из очереди, 2 ЭВМ и УПД. Если объект свободен, он отображается зеленым цветом, иначе – красным . 3 ОПИСАНИЕ ПРОГРАММЫ 3.1 Общие сведения и функциональное назначение Программа “ Моделирование работы компьютерного зала по информационн о му обслуживанию студентов ” представляет собой законченный программный пр о дукт, который предназначен для моделирования работы компьютерного зала . Выполнение данной программы производилось при помощи средств языка программирования Delphi 7 . Borland Delphi представляет собой язык программирования общего назнач е ния. Наиболее эффективно он может быть использован для быстрого создания н е больших и надежных приложений. Однако он с успехом может использоваться и при написании сложных проектов. Borland Delphi оперирует объектами, присущими типичной ЭВМ: символами, строками, целыми числами различной длины, числами с плавающей запятой. К важнейшим достоинствам языка Borland Delphi относятся очень быстрая компиляция программ, объединение компилятора с интерактивной средой разрабо т чика, средства быстрой разработки приложений, предупреждение об ошибках на уровне исходной программы, обширная библиотека программ и полезные расшир е ния в виде компонентов. Delphi – современный язык. Он включает в себя те управляющие конструкции, которые рекомендуются теоретическим и практическим программированием. Его структура пробуждает программиста использовать в своей работе структурное пр о граммирование и пошаговую разработку модулей. Результатом такого подхода я в ляется надежная и хорошо читаемая программа. Важнейшей особенностью языка является иерархическая структура программ. Она возможна благодаря наличию процедур и функций, обеспечивающих возможность практической реализации принципов структурного программирования. Ориентируясь на эти принципы, мо ж но разделить большую программу на ряд меньших, оформив их как процедуры или функции. Эти процедуры отлаживаются отдельно и независимо, а затем уже могут использоваться в главной программе как готовые и нез а висимые. Благодаря операторам, процедурам и функциям языка возможно написание ряда сложных и разнообразных по структуре, применению и выполняемым функц и ям программ. Данная задача является задачей обработки множества однотипных заявок, а такие задачи решаются с помощью систем массового обслуживания. Системы массового обслуживания представляют собой класс ма тематических схем, разработанных в теории массового обслуживания и различных приложениях для формализации процессов функционирова ния систем, которая по своей сути я в ляются процессами обслужива ния. Задачи массового обслуживания возникают в тех случаях, ког да условия на выполнение роботы поступают в случайные моменты времени, а выполнение этих работ, называемые обслуживанием, осу ществляется одним или несколькими обсл у живающими устройствами. Длительность выполнения отдельных требований пре д полагается слу чайной. Устройство, способное в любой момент времени обслуживать лишь одно тр е бование, называется каналом обслуживания. Характерной особенностью задач массового обслуживания яв ляется возни к новение несоответствия между скоростью поступления требований и скоростью о б служивания, в результате чего или оказы ваются простаивающими обслуживаемые приборы или образуется оче редь на обслуживание. В данной работе в накопителях возникают очере ди на обслуживание. Исходный текст программы находится в следующих файлах: Project 1. dpr , Unit 1. pas . Исполняемый модуль под именем Kursak . exe имеет размер 401408 байт. 3.2 Алгоритм работы программы Шаг1. Запуск процесса моделирования. Шаг 2. Шаг2. Обработка ЭВМ. Шаг 3 Шаг3. Генерация новых заявок. Шаг 4 Шаг4. Проверка времени работы. 6 часов – шаг 5. меньше – шаг 2. Шаг5. Генерация результатов 3.3 Описание логической структуры Программа « Моделирование работы компьютерного зала по информационн о му обслуживанию студентов » написана в соответствии с принцип а ми объектно-ориентированного программирования. В качестве среды разработки была использ о вана программная среда Delphi 7 , которая позволяет довольно быстро создавать надежные приложения и удобный и н терфейс. Программа состоит из следующих частей: - Project 1 . dpr – файл проекта, содержащий сведения, необходимые для начал ь ной инициализации всего проекта. - Unit 1. pas – основной модуль программы, который служит собственно для выполнения задания, т.е. этот модуль осуществляет непосредственно процесс мод е лирования. - Unit 1. dfm – файл, содержащий сведения о внешнем виде формы основного модуля. Собственно процесс моделирования описан в модуле Unit 1. Этот модуль условно можно разделить на несколько частей: заголовочная часть, в которой с о держится имя программы и указан список всех используемых модулей; часть опис а ния, в которой приведено описание всех переменных, типов, функций и процедур, используемых в программе; и основная часть, содержащая основной текст програ м мы. Далее весь процесс моделирования определяется действиями пользователя. Если была нажата кнопка « Старт », то в результате этого, в системе выполн я ются следующие действия: активизируется и запускается таймер – компонент, кот о рый срабатывает через определенные интервалы времени, при этом выполняя де й ствия, описанные внутри процедуры Timer 1 Timer . Процедура Timer 1 Timer выпо л няет ряд действий, меняющих состояние каждой ЭВМ, накопителя и счетчиков. Работа таймера продолжается до тех пор, пока время моделирования не зако н чится, после чего таймер останавливается (свойство Enabled принимает значение False ), что о з начает конец моделирования. Если во время моделирования нажать кнопку «Пауза», то выполнение таймера останавливается, а при нажатии кнопки «Продолжить» выполнение возобновляется (устанавливает свойство E n abled в значение False ). 3.4 Используемые технические средства, вызов, загрузка Для разработки данной программы был использован IBM PC -совместимый компьютер c оперативной памятью 1024 Мбайт, жесткий диск с объемом 3 00 Гба й та, монитор SVGA 19 ”. Программа была разработана в среде программирования Delphi 7 . Требования к системе определяются требованиями компилятора языка Delphi 7 и операционной системы. Для работы программы необходимо наличие ОС Microsoft Windows 9 x , 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('panel'+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 ; memo 1. 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 memo 1. 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.AllCount*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. Программа моделирования Приложение В Блок-схема алгоритма 29 Приложение Г Q -схема
© Рефератбанк, 2002 - 2017