Разработка приложения для моделирования работы аэропорта
Ознакомление с процессом проектирования дизайна табло аэропорта. Рассмотрение основных этапов программирования приложения. Изучение основных направлений организации моделирования и структуры для хранения накапливаемой информации о текущем моделировании.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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