Описание модульной (файловой) структуры

advertisement
Отчет по Практикуму на ЭВМ 8-ого семестра обучения
студента 424 группы кафедры Алгоритмических языков
ВМиК МГУ им. М.В. Ломоносова,
Клишина Арсения
Москва, 2010 г.
Уточненная постановка задачи:
Вариант С-Б. Моделирование работы банка
Необходимо создать компьютерную модель обслуживания потока заявок,
поступающих от клиентов банка, несколькими (от двух до семи) клерками
банка.
Известно недельное расписание работы банка: 5 дней по 8 часов и один день
– 6 часов, возможны перерывы на обед. Во время работы банка заявки (т.е.
приход клиентов) поступают случайным образом.
Операции с клиентами приносят банку прибыль, генерирующуюся
случайным образом в рамках от 20-ти до 2000 рублей.
Поступившие заявки (клиенты) образуют общую очередь, имеющую
некоторую максимальную длину. Если очередь достигла такой длины, то
вновь прибывающие клиенты уходят, и вероятность прихода следующих
уменьшается – тем самым банк теряет своих потенциальных клиентов.
В параметры моделирования включены:





число клерков банка
промежуток между приходом клиентов и время их обслуживания
максимальная и опасная длина очереди
степень уменьшения потока клиентов при наличии большой очереди
шаг моделирования
За каждые сутки и за каждую неделю работы банка подводятся итоги в виде
статистики.
В дневную статистику включаются такие результаты, как доход, число
потерянных клиентов, максимальная длина очереди, средняя длина очереди.
В недельную статистику входят те же параметры, подсчитанные как средние
от результатов за прошедшую неделю. Выдается она в воскресенье (каждый
седьмой день работы банка).
Диаграмма классов:
Описание классов и их взаимодействие:
1)bank - класс, отвечающий за работу и параметры банка в целом.
Атрибуты:
public var opened:Boolean - переменная, сообщающая открыт банк, или
закрыт.
public var numbcame:int - текущее количество посетителей банка
public var numbserved:int - текущее количество обслуженных клиентов
public var profit:int - текущая прибыль за день
public var lost:int - количество потерянных клиентов за день
public var unpop:int - текущая непопулярность банка, отражающаяся на
максимальном времени до прихода нового клиента.
public var crowdlen:int - суммарное количество клиентов в очереди в каждую
секунду работы банка. Требуется для выведения статистики по средней
очереди (при выведении статистики разделится на общее количество минут
работы банка и получится среднее значение)
public var crowdmax:int - максимальная длина очереди на данный момент
Методы:
client_in - метод, который определяет поведение в момент прихода
посетителя - уйдет клиент или встанет в очередь. Метод использует для
работы объект класса client.
manage_serving - метод, проверяющий, может ли в данную минуту кто-то из
клерков принять первого клиента из очереди и в случае утвердительного
ответа вызывающий метод free_clerk. Взаимодействие с объектом классов
clerk и client.
free_clerk - метод, который выводит на табло номер свободного клерка и
клиента, которого готовы обслужить, и отправляет этого клиента на к
соответствующему окну (метод класса clerk - serve). Используются объекты
классов clerk, client и table.
2)clerk - класс, описывающий работу клерков.
Атрибуты:
public var busy:Boolean - атрибут, сообщающий занят ли клерк в данный
момент.
public var clTimer:Timer - таймер, с помощью которого идет отсчет до
момента ухода обслуживаемого клиента.
public var clerknum:int - номер клерка в банке.
Методы:
serve - обслуживание клиента.
served - когда таймер показывает, что время для обслуживания клиента
вышло, активируется этот метод и корректным образом завершает работу с
клиентом.
Класс clerk работает со следующими классами client и details.
3)client - класс, описывающий поведение клиента банка.
Атрибуты:
public var number:int - порядковый номер клиента в банке
public var profit:int - комиссия, которая идет банку за счет операции
public var time:int - время, которое отнимет клиент у клерка (генерируется с
учетом данных моделирования)
Из собственных методов clerk имеет только конструктор, в котором
определяются его атрибуты.
Класс client работает с классом details.
4) clock - часы банка.
Атрибуты:
public var weekday:int;
public var daynum:int;
public var minutes:int;
public var hours:int;
С помощью этих атрибутов отражается текущее время модели.
Методы:
clock1 - вызывается с каждым шагом моделирования - это часы. То есть
функция увеличения времени, написанная вручную.
clock_set - выводит данные о текущем времени на экран.
Часы являются классом, который сам не взаимодействует с другими
классами, а используется для выведения на экран информации, полезной для
пользователя (текущее время) и для сообщения этого времени другим
классам модели.
5)details - класс с параметрами моделирования
Атрибуты:
public var cl_qu:int - количество клерков
public var cl_co:int - максимальное время до прихода посетителя
public var max_qu:int - максимальная возможная очередь
public var dang_qu:int - очередь, при которой клиенты начинают злиться
public var ang_eff:int - эффект, оказываемый на неэффективный банк слухами
(время на которое увеличивается максимальное время до прихода нового
клиента)
public var max_se:int - максимальное время обслуживания одного клиента
public var mod_step:int - шаг моделирования
Методы:
make - заносит те параметры, которые ввел пользователь в объект класса
(метод-конструктор устанавливает в начале значения по умолчанию).
С этим классом взаимодействует большая часть классов для получения
параметров моделирования.
6)inter - класс, который отвечает за установку режима паузы и промотку
времени до начала работы банка по желанию пользователя.
Атрибуты:
public var paused:int - находится ли модель в режиме паузы или нет.
Методы:
skip - в зависимости от нажатой клавиши ("P" или "Space"), ставит модель на
паузу или пропускает время до момента, когда банк открывается, либо до
того, как заканчиваются сутки (в зависимости от момента нажатия).
Взаимодействует с clock.
7)stats - класс, отвечающий за подсчет статистики. Является классом,
который имеет визуальное представление в виде таблицы со статистикой и
все его атрибуты используются для того, чтобы демонстрировать их
пользователю.
Атрибуты:
daynum - порядковый номер дня с момента начала работы модели (по
времени модели)
profit - доход
lost - количество потерянных клиентов
av_crowd - средняя длина очереди
max_crowd - максимальная длина очереди
status - тип статистики (дневная - regular или недельная - week stats)
Методы:
day_stats - подсчет дневной статистики (подсчитывается на основе значений
атрибутов банка, которые сбрасываются в 00.00 каждого дня).
week_stats - подсчет недельной статистики (подсчитывается исходя из
данных за предыдущие 6 суток).
8)table - класс отвечающий за работу табло, показывающего номер клерка к
которому нужно подойти клиенту с соответствующим номером.
Имеет переменные cli и cle типа int, в которых содержатся номера клиента и
клерка соответственно, которые необходимо вынести на табло.
Класс нужен для того, чтобы пользователю легче было ориентироваться в
работе модели.
Перечень использованных инструментальных средств –
указание языка объектно-ориентированного
программирования, библиотеки и\или интегрированной среды:
Язык разработки – ActionScript 3.0
Среда разработки – Adobe Flash CS4
Использовались исключительно библиотеки, входящие в стандартный набор
среды Adobe Flash CS4.
Описание модульной (файловой) структуры программы, т.е.
список файлов с указанием классов, описанных в каждом
файле:
Каждый файл, который имеет расширение .as содержит в себе только
соответствующий названию класс.
Файл bank.fla - главный файл, в котором содержатся все слои картинки и чтото вроде функции main.
bank.swf - итоговое приложение.
Краткое описание пользовательского интерфейса (вид
диалогового окна для ввода параметров моделирования и окна
визуализации процесса моделирования):
В самом начале пользователю предлагается ввести собственные значения
параметров моделирования (параметры по умолчанию присутствуют).
Изменить параметры по умолчанию можно нажав на интересуещее вас
значение (например, на 3 в пункте clerks quantity и поменять количество
клерков, введя желаемую цифру):
Отображение статистики:
Пример того, как отображается работа банка:
Download