48563 (Разработка имитационной модели системы массового обслуживания), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Разработка имитационной модели системы массового обслуживания", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48563"

Текст 3 страницы из документа "48563"

Выбранный нами НЖМД имеет скорость вращения шпинделя 4200 оборотов в минуту, что будет вполне достаточно для разработки и использования нашего проекта.

Размер кэш-памяти. Кэш-память - быстрая "буферная" память небольшого объема, в которую компьютер помещает наиболее часто используемые данные. Она есть у процессоров, она есть у материнских плат. Но ведь собственной кэш-памятью оборудован и жесткий диск! Ее размер у современных моделей винчестеров колеблется в диапазоне от 2 Мбайт до 8 Мбайт (у большинства современных винчестеров размер кэш-памяти составляет 2 Мбайт). Нетрудно понять, что чем кэш больше, тем быстрее и стабильнее работает жесткий диск...

Принимаем жесткий диск IC25N020ATMR04 емкостью 20 Гб, с частотой вращения 4200об/мин, средним временем поиска 12 мс. Эти значения являются следствием разумного компромисса между производительностью и стоимостью.

2.7.8 Клавиатура

Особых требований к клавиатуре нет, выбираем стандартную клавиатуру со 101 клавишей с разъёмом PS/2 (Genius Comfy KB-10X).


2.7.9 Мышь

Мышь - это манипулятор для компьютера. Выбираем мышь по параметрам цены и качества, которым соответствуют мыши Genius NetScroll+PS/2.


3. Практическая часть

3.1 Выбор среды разработки программирования

В качестве внутреннего языка для данной работы был выбран ObjectPascal, который используется в среде программирования Delphi. Этот язык использует принципы объектно-ориентированного и визуального программирования.

Язык ObjectPascal является одним из высокоразвитых языков объектно-ориентированного программирования. И среди других, например, таких как Visual Basic или Visual C++, отличается простотой программного кода, достаточным количеством литературы по этому языку.

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

По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.

Delphi - это комбинация нескольких важнейших технологий:

Высокопроизводительный компилятор в машинный код

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

Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов

Масштабируемые средства для построения баз данных

Программирование в Delphi строится на тесном взаимодействии двух процессов:

•процесса конструирования визуального проявления программы (т.е. ее Windows-окна),

•процесса написания кода, придающего элементам этого окна и программе в целом необходимую функциональность.

Основные преимущества среды программирования Delphi:

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

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

Объектно-ориентированное программирование (ООП) в визуальной среде.

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения.

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

3.2 Выбор алгоритма решения

Алгоритм моделирования выглядит так:

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

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

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

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

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

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

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

При этом формируем массив с клиентами, поступившими в очередь. Там содержится информация: время попадания в очередь, номер клиента в массиве с клиентами, информация по процедурам.

Если какая-то процедура клиента свободна, состояние ее приравниваем 1 (означает, что процедура занята). В массив у клиента заносим номер текущей процедуры.

Затем проверяем по массиву клиентов информацию по каждому клиенту. Если у клиента стоит номер текущей процедуры, значит в ячейке, где стоит время данной процедуры у клиента, отнимаем единицу. А у процедуры прибавляем единицу к времени занятости. Смотрим, если у клиента время прохождения процедуры закончилось, состояние процедуры приравниваем к нулю ("Свободна"). К числу обслуженных клиентов в массиве процедуры прибавляем единицу. А у клиента прибавляем количество прошедших процедур и переходим к пункту 6, т.е. опять начало работы. Если все процедуры пройдены, конечное состояние приравниваем 1 (полностью обслужился).

Если у клиента нет номера текущей процедуры и все остальные процедуры заняты, увеличиваем счетчик длины очереди на единицу, а у клиента прибавляем время ожидания на единицу. Смотрим, не превысило ли время ожидания максимального. Если да, смотрим, если ни одной процедуры не пройдено, конечное состояние приравниваем 3 (полностью необслуженные); если хоть одна процедура пройдена, конечное состояние приравниваем 2 (не полностью обслуженные).

Затем проверяем по процедурам, если какая-то освободилась, смотрим, нет ли клиентов для данной процедуры в массиве процедур. Если есть, выбираем всех клиентов по данной процедуре, и выбираем того, у кого меньшее время попадания, т.е. тот, кто раньше попал в очередь; у процедуры состояние приравниваем 1.

Смотрим массив процедур. Те процедуры, у которых состояние равно нулю, время простоя увеличиваем на единицу.

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

3.3 Структура программы

Модуль "Unit2" проекта служит показательной формой при загрузке имитационной модели СМО. Модуль "Unit1" является главным в работе всей программы. Модуль "Unit3" предназначен для вывода справки об авторе.

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

procedure Klientov - Формирование новых клиентов;

procedure FormCreate (Sender: TObject) - Начальные установки при открытии формы;

procedure Timer1Timer (Sender: TObject) - Процедура моделирования;

procedure Button1Click (Sender: TObject) - Кнопка "Пуск";

procedure FormCanResize (Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean) - Процедура изменения размеров формы;

procedure FormClose (Sender: TObject; var Action: TCloseAction) -Закрытие формы;

procedure BitBtn1Click (Sender: TObject) - Кнопка "Выход";

procedure Button2Click (Sender: TObject) - Кнопка "Остановить";

procedure Edit3Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure Edit3KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState) - Проверка на ошибки основных параметров;

procedure Edit8Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure Edit8KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure Edit2KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure Edit3KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure Edit4KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure Edit9KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure Edit5KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure Edit1KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure SpinEdit1Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure Edit2Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure Edit4Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure Edit9Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure Edit5Change (Sender: TObject) - Проверка на ошибки основных параметров;

procedure N10Click (Sender: TObject) - Выбор вкладки главного меню "Запуск";

procedure N11Click (Sender: TObject- Выбор вкладки главного меню "Остановить";

procedure r1KeyPress (Sender: TObject; var Key: Char) - Проверка на ошибки основных параметров;

procedure N2Click (Sender: TObject) - Выбор вкладки главного меню "Сохранить отчет";

procedure N1Click (Sender: TObject) - Выбор вкладки главного меню "Файл";

procedure N3Click (Sender: TObject) - Выбор вкладки главного меню "Начальные параметры";

procedure N4Click (Sender: TObject) - Выбор вкладки главного меню "Результаты";

procedure N5Click (Sender: TObject) - Выбор вкладки главного меню "Выход";

procedure N12Click (Sender: TObject) - Выбор вкладки главного меню "Очистить параметры";

procedure N13Click (Sender: TObject) - Выбор вкладки главного меню "Показать отчет";

procedure ToolButton1Click (Sender: TObject) - Нажатие на панели инструментов кнопки "Сохранить отчет";

procedure ToolButton2Click (Sender: TObject) - Нажатие на панели инструментов кнопки "Запуск ";

procedureToolButton4Click (Sender: TObject) - Нажатие на панели инструментов кнопки "Очистить параметры ";

procedure ToolButton3Click (Sender: TObject) - Нажатие на панели инструментов кнопки "Справка ";

procedure ToolButton5Click (Sender: TObject) - Нажатие на панели инструментов кнопки "Остановить ";

procedure N6Click (Sender: TObject) - Выбор вкладки главного меню "Моделирование";

procedure BitBtn1Click (Sender: TObject);

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5136
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее