Вход

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

Курсовая работа* по информатике и информационным технологиям
Дата добавления: 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 - 2024