Разработка приложения для моделирования работы аэропорта

Ознакомление с процессом проектирования дизайна табло аэропорта. Рассмотрение основных этапов программирования приложения. Изучение основных направлений организации моделирования и структуры для хранения накапливаемой информации о текущем моделировании.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 04.05.2014
Размер файла 673,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

int leftL = 0, int rightL = 0, int leftS = 0, int rightS = 0,

int leftDL = 0, int rightDL = 0, int leftDS = 0, int rightDS = 0, char *way = "chronology.txt")

: Port(Fog, Rain, Wind)

{

way_txt= (way == 0 ? "chronology.txt":way);

EVqueue= new list<event>();//Инициализация данных,не зависящих

curr_event= NULL;//от уст. пользователя.

new_event= NULL;//

counter= 2;//

time_sim= CommonTime;

now_time= 0;

left_lndng= leftL < 0 ? 0:leftL;//Эти данные инициализируются

right_lndng= rightL < 0 ? 0:rightL;//в соответствии с данными пользо-

left_start= leftS < 0 ? 0:leftS;//вателя.

right_start= rightS < 0 ? 0:rightS;//

left_dur_l= leftDL < 0 ? 0:leftDL;//

right_dur_l= rightDL < 0 ? 0:rightDL;//

left_dur_s= leftDS < 0 ? 0:leftDS;//

right_dur_s= rightDS < 0 ? 0:rightDS;//

curr_event = getNextEvent(landing, 1);//Занесли первое событие.

if(curr_event->time < time_sim)//Но с проверкой рамок времени.

EVqueue->Insert(curr_event);//

else {delete curr_event; curr_event = NULL; }//

}

SimulatorPort::~SimulatorPort()

{

delete EVqueue;

delete way_txt;

}

//ЗАПУСК МОДЕЛИРОВАНИЯ

void SimulatorPort::Run()

{

ofstream fout(way_txt);

if(!fout) return;

while(!EVqueue->ChekEmpty())//Главный цикл программы.Пока все события не извлекутся.

{

curr_event = EVqueue->Extract();//Извлекли событие из списка.

now_time = curr_event->time;//Основное время перешло к времени события

if(getRoad()->closetime() <= now_time) getRoad()->set_time(0);//Если время до которого полоса была занята прошло,то она свободна.

if(curr_event->type == landing)

{

if(!curr_event->stopped)//Если это не повторно прилетевший самолет.

{

new_event = getNextEvent(landing, counter);//Получаем следующее событие.

new_event->plus_time(now_time);//Корректируем время в мировое.

if(ChekEvent_andAdd(new_event)) ++counter;//Если событие не выходит за рамки,то включим и счетчик увеличим;

}

if(!getRoad()->closetime())//Если полоса свободна.

{

fout << "Время(" << now_time << ") : " << "Борт №" << curr_event->code << ". Посадка. Продолжительность "

<< curr_event->duration << " мин." << endl << endl;

if(!curr_event->stopped) stat.clear_land++;//Подсчет "чистых" посадок.

getRoad()->set_time(now_time + curr_event->duration);//Дорогa занята на время продолжительности действия.

if(getRoad()->closetime() > time_sim)//Если полоса освободится после события вне пределов моделирования,

stat.plus_work_road(time_sim - now_time);//занесем время работы полосы только до окончания симуляции,а не

else stat.plus_work_road(curr_event->duration);//с захлестом за пределы.

stat.land_bort++;//Отметили в счетчике прилетевших.

new_event = getNextEvent(start, curr_event->code);

new_event->plus_time(now_time);

ChekEvent_andAdd(new_event);//Включаем в список(если в пред. времени)

delete curr_event;

}

else//Если полоса занята

{

if(curr_event->stopped == MAX_EXTRA_CIRC)

{

fout << "Время(" << now_time << ") :" << " Борт №" << curr_event->code

<< ". Ушел на запасной эародром." << endl << endl;

stat.to_reserv_port++;

delete curr_event;

}

else

{

fout << "Время(" << now_time << ") : " << "Борт №" << curr_event->code

<< ". Пошел на " << curr_event->stopped + 1 << "й доп. круг." << endl << endl;

curr_event->plus_time(TIME_EXTRA_CIRC);

stat.plus_land_wait(TIME_EXTRA_CIRC);

if(ChekEvent_andAdd(curr_event)) curr_event->stopped++;//Включаем в список событий

stat.full_retry_circ++;//если время лежит в границах модел-ия.

}

}

}//Конец "если полоса занята"

else //Если это взлет

{

if(!getRoad()->closetime())//Если полоса свободна.

{

fout << "Время(" << now_time << ") : " << "Борт №" << curr_event->code

<< ". Взлет. Продолжительность " << curr_event->duration << " мин." << endl << endl;

stat.start_bort++;

if(!curr_event->stopped) stat.clear_start++;

getRoad()->set_time(now_time + curr_event->duration);//Заняли полосу.

if(getRoad()->closetime() > time_sim)//Если полоса освободится после события вне пределов моделирования,

stat.plus_work_road(time_sim - now_time);//занесем время работы полосы только до окончания симуляции,а не

else stat.plus_work_road(curr_event->duration);//с захлестом за пределы.

delete curr_event;

}

else//Если полоса занята.

{

fout << "Время(" << now_time << ") : " << "Борт №" << curr_event->code

<< ". Взлет задерживается на " << getRoad()->closetime() - now_time << " мин." << endl << endl;

curr_event->time = getRoad()->closetime();//Задержка до освобождения полосы.

curr_event->stopped++;//Плюс задержание в счетчик.

if(ChekEvent_andAdd(curr_event))

stat.plus_start_wait(getRoad()->closetime() - now_time);

}

}//конец "если это взлет"

}//Конец основного цикла.

fout << "Время(" << time_sim << ") " << "Конец моделирования." << endl;

}

//Получить время следующего события "посадка" из заданного интервала

int SimulatorPort::getNextLanding()

{

return (left_lndng + rnd.Random(right_lndng - left_lndng + 1));

}

//Получить время следующего события "взлет" из заданного интервала

int SimulatorPort::getNextStart()

{

return (left_start + rnd.Random(right_start - left_start + 1));

}

//Получить продолжительность события с учетом влияния погоды

int SimulatorPort::getDuration(flag type_event)

{

int time;

if(type_event == landing)//

time = left_dur_l + rnd.Random(right_dur_l - left_dur_l + 1);//Время посадки чистое.

else//

return (left_dur_s + rnd.Random(right_dur_s - left_dur_s + 1));//

switch(getWether()->fog)

{

case none: time = time + time * METEO_EF_none;

break;

case easy: time = time + time * METEO_EF_easy;

break;

case medium: time = time + time * METEO_EF_medium;

break;

case hard: time = time + time * METEO_EF_hard;

break;

}

switch(getWether()->rain)

{

case none: time = time + (int)(time * METEO_EF_none);

break;

case easy: time = time + (int)(time * METEO_EF_easy);

break;

case medium: time = time + (int)(time * METEO_EF_medium);

break;

case hard: time = time + (int)(time * METEO_EF_hard);

break;

}

time = time + (int)(getWether()->wind * METEO_EF_wind);

return time;

}

//Создает динамически новое событие и возаращает указатель

event *SimulatorPort::getNextEvent(flag even_type, int number)

{

event *nextEV = new event(even_type, number);

if(even_type == landing) nextEV->time = getNextLanding();

else nextEV->time = getNextStart();

nextEV->duration = getDuration(even_type);

return nextEV;

}

//Метод,проверяющий,не выходит ли событие за пределы времени и если все хорошо,добавляет в очередь.

bool SimulatorPort::ChekEvent_andAdd(event *tested)

{

if(tested->time < time_sim)

EVqueue->Insert(tested);

else

{

delete tested;

tested = NULL;

return false;

}

return true;

}

void SimulatorPort::setCOM_TIME(int time)

{

time_sim = (time < 0 ? 0:time);

}

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

void SimulatorPort::setINTERVAL_L(int LL, int RL)

{

left_lndng= (LL < 0 ? 0:LL);

right_lndng = (RL < 0 ? 0:RL);

}

//Интервал времени для появления события взлет.

void SimulatorPort::setINTERVAL_S(int LS, int RS)

{

left_start= (LS < 0 ? 0:LS);

right_start = (RS < 0 ? 0:RS);

}

//Интервал продолжительности события посадки.

void SimulatorPort::setDUR_LAND (int value1, int value2)

{

left_dur_l= (value1 < 0 ? 0:value1);

right_dur_l = (value2 < 0 ? 0:value2);

}

//Интервал продолжительности события взлет.

void SimulatorPort::setDUR_START(int value1, int value2)

{

left_dur_s= (value1 < 0 ? 0:value1);

right_dur_s = (value2 < 0 ? 0:value2);

}

void SimulatorPort::Print(System::Windows::Forms::RichTextBox^ screen)

{

screen->Text += "******************************РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ*******************************" + "\n\n";

screen->Text += "Время работы:" + time_sim + " мин." + "\n";

screen->Text += "Время последнего события:" + now_time + " мин." + "\n\n";

screen->Text += "Всего приземлилось:" + stat.land_bort + " самолетов." + "\n";

screen->Text += "Приземлилось без задержек:" + stat.clear_land + " самолетов." + "\n\n";

screen->Text += "Взлетело:" + stat.start_bort + " самолетов."+ "\n";

screen->Text += "Взлетело без задержек:" + stat.clear_start + " самолетов."+ "\n\n";

screen->Text += "Всего было сделано дополнительных кругов: " + stat.full_retry_circ + "\n";

screen->Text += "Общее время ожид. при посадке: \t" + stat.land_wait_borts + " мин." + "\n";

screen->Text += "На запасной аэродром улетело:" + stat.to_reserv_port + " самолетов." + "\n";

screen->Text += "Общее время задержания взлетов:" + stat.strt_wait_borts + " мин." + "\n";

screen->Text += "Нагрузка полосы:" + System::Convert::ToString((float)(stat.worktime_road*100)/time_sim) + "%" +".\n\n";

screen->Text += "Журнал событий:" + and_CharToSysString(way_txt) + "\n";

screen->Text += "**********************************************************************************************************" + "\n\n";

}

//////////////////////////////////////////////////////////////////////

char *and_SysStringToChar(System::String^ string)

{

return (char*)(void*)Marshal::StringToHGlobalAnsi(string);

}

System::String^ and_CharToSysString(char* ch)

{

char *chr = new char[] = ch;

System::String^ str;

for(int i = 0; chr[i] != '\0'; i++)

str += wchar_t(ch[i]);

return str;

}

Размещено на Allbest.ru

...

Подобные документы

  • Разработка программного продукта, обеспечивающего автоматизацию работы городского аэропорта. Анализ предметной области автоматизированной информационной системы. Этапы проектирования структуры баз данных, координирующих работу городского аэропорта.

    курсовая работа [1,5 M], добавлен 22.04.2014

  • Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.

    курсовая работа [2,2 M], добавлен 14.04.2019

  • Рассмотрение основных этапов создания приложения "Записная книжка", основное предназначение. Анализ способов выбора среды программирования. Знакомство с элементом управления Data Grid View. Общая характеристика методов конструкции языка программирования.

    контрольная работа [1002,4 K], добавлен 21.06.2014

  • Разработка структуры класса "Экран курсового проектирования", которая будет основой для хранения информации о студентах, выполняющих курсовые работы. Реализация визуального приложения для тестирования иерархии классов на языке программирования С++.

    курсовая работа [3,3 M], добавлен 18.03.2011

  • Проектирование информационной системы отслеживания финансовой стороны работы автосервиса. Спецификация требований к системе. Проектирование прецедентов, определение классов приложения. Описание основных форм проектируемого интерфейса приложения.

    курсовая работа [865,9 K], добавлен 12.10.2014

  • Изучение инструментальной графической среды программирования промышленных контроллеров и языка программирования FBD. Разработка приложения, реализующего вычисление арифметических и логических выражений. Проверка работы приложения программой "Maple".

    контрольная работа [2,2 M], добавлен 26.05.2015

  • Проблема организации и хранения данных в информационной сети аэропорта. Разработка и заполнение таблиц соответствующими данными. Установление типа связей ячеек. Создание запросов для вывода необходимых полей, применение формы, отчетов и макросов.

    курсовая работа [1,9 M], добавлен 27.12.2014

  • Обзор средств компьютерного имитационного моделирования по созданию веб-приложения для визуализации имитационных моделей. Система имитационного моделирования AnyLogic, Arena, SimuLab. Серверная, клиентская часть. Модель работы отдела банка и участка цеха.

    дипломная работа [3,3 M], добавлен 25.05.2015

  • Прикладное значение для проектирования приложения Google Earth, преимущества программы SketchUp. Алгоритм действий пользователя при импорте данных из Google Warehouse в Sketchup и экспорте проекта. Особенности моделирования объектов для Google Earth.

    курсовая работа [2,3 M], добавлен 23.02.2011

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

  • Классификация пользователей проекта Web-приложения "Такси "Люкс". Выбор основных методов и средств разработки. Описание дизайна сайта. Исходный код обработчиков основных событий на страницах. Расчет себестоимости разработки программного продукта.

    дипломная работа [2,5 M], добавлен 26.06.2012

  • Создание систем имитационного моделирования AnyLogic, Arena, SimuLab, Simbigraph и Forio. Серверная и клиентская часть. Разработка модели работы отдела банка, участка цеха, движения автобуса по маршруту и социальной сети. Описание web-приложения.

    дипломная работа [3,4 M], добавлен 25.05.2015

  • Понятие технологии проектирования информационных систем. Создание Web-приложения по подготовке школьников к написанию научных проектов с использованием различных диаграмм, наглядно отображающих структуру приложения. Методология моделирования IDEFX.

    курсовая работа [1,8 M], добавлен 07.01.2014

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

    курсовая работа [2,8 M], добавлен 20.11.2012

  • Виды социальных медиа. Критерии эффективности продвижения аккаунта в социальных сетях. Программная реализация алгоритма моделирования распространения информации в социальной сети "Twitter". Разработка клиентского приложения. Апробация интерфейса системы.

    дипломная работа [5,4 M], добавлен 08.02.2016

  • Исследование основных отличий ассоциативных массивов от массивов скаляров. Разработка библиотеки классов. Выбор языка программирования. Сравнение языка C++ с Delphi, Java и JavaScript. Изучение методики тестирования и структуры тестового приложения.

    практическая работа [390,2 K], добавлен 06.01.2013

  • Анализ возможных подходов к созданию web-приложения с использованием программирования Java и CGI. Разработка структуры базы данных и реализация полученной модели в рамках СУБД. Обеспечение диалога CGI-программы с пользователем, используя браузер.

    курсовая работа [310,9 K], добавлен 07.08.2011

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.04.2017

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • Разработка программного решения по созданию мобильного приложения. Изучение технологий для разработки приложений. Анализ работы торговых агентов. Обоснование выбора языка программирования. Проектирование интерфейса структуры и верстка, листинг программы.

    дипломная работа [2,2 M], добавлен 08.06.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.