Розробка програми вибору маршуту автотранспортного сполучення

Розробка схеми маршруту, його програмне забезпечення. Напрямок переміщення туриста за схемою. Графічна модель організації подорожі. Вибір засобів пересування по місцевості. Опис структури файлів та кодів. Програми автоматизації вибору пункту призначення.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 20.05.2014
Размер файла 2,8 M

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

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Зміст

  • Постановка задачі
    • Етапи І
    • Етап ІІ
    • Етапи ІІІ
  • Опис алгоритму розв'язання задачі та програми
    • Етап IV
    • Етап V
  • Опис структури файлів
  • Опис програми
  • Специфікація функцій програми
  • Оцінка достовірності результатів
  • Висновки
  • Література

Постановка задачі

Розробка туру включає такі етапи: вибір пунктів маршруту, ієрархізація цих пунктів, вибір пунктів початку та закінчення маршруту, після чого провадиться розробка схеми маршруту та його оптимізація. Розробка схеми маршруту та його програмне забезпечення є нерозривно пов'язаними паралельними процесами. турист маршрут схема

Етапи І

Вибір пунктів маршруту. Критерієм відбору є атрактивність об'єктів показу для задоволення мети подорожі, можливість забезпечити різноманітність програми перебування в даному населеному пункті, його транспортна доступність та забезпеченість послугами гостинності.

Етап ІІ

Ієрархізація пунктів маршруту провадиться за вказаними вище критеріями, при цьому основна увага повинна бути звернута на клас гостинності та транспортну доступність обраних пунктів маршруту. Метою даного етапу є виділення диференціація пунктів маршруту відповідно до мети подорожі з виділенням пунктів дислокації з тривалим програмним забезпеченням та екскурсійних пунктів.

Етапи ІІІ

Вибір початкового та кінцевого пунктів маршруту здійснюється за показником транспортної доступності, тобто зв'язності з місцем постійного проживання потенційних туристів (зоною дії туроператора), взаємозамінності видів транспорту, типу транспортних засобів.

Опис алгоритму розв'язання задачі та програми

Етап IV

Розробка схеми маршруту

Схема маршруту залежить від обраної форми. Маршрут -це напрямок переміщення туриста. За схемою маршрути можуть бути лінійні, кільцеві, радіальні та комбіновані, (мал. 5). Вибір пунктів по маршруту узгоджується з програмою відповідно до виду туризму, терміну та класу обслуговування.

Мал.5. Схеми маршрутів

Умовні позначення: Пп - початковий пункт маршруту;

Пр - проміжний пункт з порядковим номером 1,2,...n;

Кп - кінцевий пункт маршруту; ---> напрямок руху

Вибір схеми маршруту залежить від транспортної системи: конфігурації транспортної мережі, її густоти та технічного стану, рівня розвитку окремих видів транспорту, рівня розвитку транспортної інфраструктури, що забезпечує надійність та безпеку роботи транспорту.

Найпоширенішим випадком при розробці схеми є варіант, коли за обмежений термін при мінімізації витрат часу на переміщення між основними пунктами маршруту бажано забезпечити максимально можливу інформативність подорожі, тобто охопити якнайбільше об'єктів показу задля задоволення пізнавальної мети. Такий варіант отримав назву "задача комівояжера".

При вирішенні цієї задачи можна застосовувати методичний аппарат теорії графів. Графо-аналітичні методи дають можливість виокремити найсуттєвіші елементи, унаочнити наявну інформацію, обгрунтувати відбір та ієрархізацію пунктів маршруту. Задача зводиться до побудови графа - математичного відображення просторової організації турпродукту. Граф являє собою певним чином організовану кінцеву множину вершин і множинність ребер. Вершини і ребра є елементами графа, що роблять його зв'язним. Граф називається метризованим, коли його елементам надається певне значення, наприклад, метризація вершин задається атрактивністю об'єктів показу в балах, місткістю та класністю готельної бази, бальною оцінкою різнорідності програми тощо; ребра графа відображають наявний зв'язок між вершинами і в нашому випадку це перш за все транспортний зв'язок, який відтворює або тільки наявність шляхів сполучення, або їх категорію чи полімагістральність. Значення ребер може задаватися відстанню (в км) між пунктами маршруту або часом, необхідним для його долання тим чи іншим видом транспорту (такий варіант кращий, коли немає взаємозамінності транспортних засобів). Тобто сам процес побудови графа є певним впорядкуванням та генералізацією інформації відповідно до мети подорожі. Таким чином, ми маємо графічне зображення територіальної структури майбутнього турпродукту, що задана елементами графу. Иоршинами графа (V) є пункти, обрані за визначеними криюріями, а ребрами (Е) - наявний зв'язок між ними, юпіо шляхи сполучення певної категорії.

Оцінка положення кожної вершини в графі, визначені п місця в загальній системі атрактивних ресурсів, а також оцінка графа в цілому (його зв'язність, конфігурація) і його параметризація за витратами часу провадиться за допомогою топологічних мір. Ці міри визначаються на множині відношень між елементами графа. Виділяють міри концентрації та диференціації, за якими оцінюється положення вершин в графі, і міри інтеграції та композиції, що дають змогу оцінити граф в цілому.

Розглянемо умовний приклад. На певній території за умов атрактивності туристичних ресурсів, рівня розвитку юіельної бази та транспортного забезпечення виділені п'ять пунктів, що зв'язані між собою автошляхами вищої категорії та залізничним сполученням (мал. 6). Треба оцінити положення кожної вершини в графі. Для цього використовується показник центральності (А), що визначається за кількістю інциденцій (це кількість ребер, що ниходять з даної вершини) - таблиця 3.

Мал. 6. Графо-аналітична модель організації маршруту.

1-5 - пункти маршруту, з них 2,3,5 - пункти ночівлі,

1,4 - екскурсійні пункти; стрілками показаний напрямок руху

Таблиця 3. Показники оцінки вершин графа

показники

1

2

3

4

5

центральності

1

3

3

1

2

ієрархічності

4

1

2

4

3

Як видно з мал. 6, найкраще положення в графі займають пункти V2та V3 , але в пункті V2 наявний міжнародний аеропорт, тому за показником ієрархічності він займає перше місце і визначений як початковий пункт маршруту. Пункти V1 та V4, які мають найнижчі показники центральності та ієрархічності, обираються як екскурсійні пункти, що забезпечують програму перебування відповідно в пунктах V2 та V3. Схема маршруту в даному випадку складається як комбінована і має два варіанти руху: 1) V2 - V5 - V3 чи 2) V2 - V3 - V5 ? Варіативність побудови маршруту визначається за показником цілісності (м), який в теорії графів називається цикломатичним числом і показує кількість замкнених циклів в графі (чим більше р- тим ціліснішим є граф і більше варіантів маємо при побудові схеми маршруту). Оскільки ми маємо різні варіанти побудови схеми руху по маршруту, суттєвим є оцінка графа в цілому задля порівняльної параметризації пропонованих схем. Для цього використовується показник зв'язності (в) який обраховується як відношення суми ребер графа до суми його вершин: в = Е / V. Показники міри композиції дають змогу оцінити конфігурацію та компактність пропонованої схеми маршруту. Загальну конфігурацію графа оцінюють за показником форми (р), який обраховується за формулою:

р = E / д

де д - діаметр графа або мінімальна кількість ребер, що з'єднує максимально віддалені його вершини. Чим більше значення показника к, тим більш компактну форму має схема маршрута (відповідно до умов мал. 6 <?> Е, 2 + Е23 + Е34). Щоб оцінити саме компактність пропонованої схеми використовуюсь показник компактності (//), який визначається за формулою:

з = е / V

де е периметр графа, тобто сукупність ребер, що є зовнішньою гранню графа (за мал. 6 є = Еь2 + Е2|5 + Е53 + і І <ІЛ). Показник компактності оцінює протяжність графа -чим менше його значення, тим компактніший граф, тобто і им менше витрати часу на долання відстаней між пунктами маршруту (таблиця 4).

Таблиця 4. Оцінка схеми маршруту*

м

в

д

р

е

з

1

1

3

1,7

4

0,8

Показники задаються по кожному варіанту схеми маршруту

Таким чином, обирається комбінована схема маршруту ма першим варіантом руху (V2 - V5- V3).

Етап V

Оптимізація маршруту полягає у нсіановлені ряду об'єктивних та суб'єктивних обмежень. Об'єктивні обмеження виходять з умов сегментації ринку, а суб'єктивні визначаються можливостями туроператора. Обмеження визначаються перш за все цільовим споживчим сегментом (вік, життєвий цикл сім'ї, стиль та рівень життя тощо). Часові обмеження стосуються сезонності та юрміну подорожі. Економічні обмеження виходять з умов функціонування ринку (кон'юнктура ринку, стан конкурентного середовища, цінова політика тощо).

Основним обмеженням на початковому етапі розробки туру є обмеження в часі та засобах по забезпеченню комфортності подорожування. Саме часові обмеження визначають вибір транспортних засобів та їх тип під час проходження маршруту. Вибір транспортного засобу слід розглядати як введення певних обмежень в організаційні параметри туру (кількість туристів в групі і відповідно вибір форми туру впливають на його організацію та вартість).

Види транспорту та типи транспортних засобів дуже різняться за своїми характеристиками. При виборі засобів пересування керуються відстанню, а при вборі типу транспортного засобу - його комфортністю (швидкість, місткість, зручності). В пасажирських перевезеннях на далекі відстані домінує повітряний транспорт. За останні 15 років частка туристів в міжнародних повітряних пасажироперевезеннях зросла більш ніж удвічі (з 30 до 70%). В перевезеннях на короткі відстані найбільшою популярністю користується автомобільний транспорт, що стимулюється як зростаючою автомобілізацією населення, так і технологічними змінами в автомобілебудуваннія в бік збільшення швидкості та комфортності та зменшення енергомісткості. Так, обсяг автобусних пасажироперевезень за останні 20 років збільшився майже вдвічі. У внутрішньоконтинентальних перевезеннях пасажирів автомобільний транспорт переважив залізничний.

Опис структури файлів

Файл in.txt - це текстовий файл, кожен рядок якого являє собою відповідний запис про об'єкт. Кожна лексема містить дані, що привласнюються відповідній властивості об'єкта. Лексеми розділяються символом ”; ”

Опис коду

Програма розроблена мовою С++ за принципами, описаними в [2]. Вона складається з функції main, власних та бібліотечних функцій.

У програмі використані наступні основні типи даних та змінні:

struct structCity

{

char cname[32];

int rcount;

char**routes;

};

int getCityID(const char c_name[], structCity *cInfo, int n)

{

for(int i = 0; i < n; i++)

if(strcmp(cInfo[i].cname, c_name) == 0)

return i;

return -1;

}

ifstream fin("in.txt"); - потік введення даних з бази.

setlocale(0, "Russian"); - потік виведення результатів.

#include <stdio.h>

#include <iostream>

#include <conio.h>

#include <fstream>

#include <time.h>

#include <windows.h>

#include <string.h>

using namespace std;

struct structCity

{

char cname[32];

int rcount;

char **routes;

};

int getCityID(const char c_name[], structCity *cInfo, int n)

{

for(int i = 0; i < n; i++)

if(strcmp(cInfo[i].cname, c_name) == 0)

return i;

return -1;

}

int **SearchTheTrainWay(char from_c[], char to_c[], structCity *cInfo, int n, int &route, bool *c_flag, int **routeslist, int currRoute[]);

int main()

{

setlocale(0, "Russian");

ifstream fin("in.txt");

if(!fin)

{

cout<<"Не могу открыть файл in.txt";

_getch();

return 0;

}

int n = 0;

char string[64], *tmp;

while(!fin.eof())

{

fin.getline(string, 64);

n++;

}

fin.clear();

fin.seekg(0);

structCity *cInfo = new structCity[n];

n = 0;

while(!fin.eof())

{

fin.getline(string, 64);

tmp = strtok(string, ",");

strcpy(cInfo[n].cname, tmp);

tmp = strtok(NULL, ",");

char *cpy_tmp = new char [strlen(tmp)];

strcpy(cpy_tmp, tmp);

int count = 0;

char *r = strtok(cpy_tmp, ";");

while(r != NULL)

{

r = strtok(NULL, ";");

count++;

}

cInfo[n].rcount = count;

cInfo[n].routes = new char* [count];

for(int i = 0; i < count; i++)

cInfo[n].routes[i] = new char [32];

strcpy(cpy_tmp, tmp);

r = strtok(cpy_tmp, ";");

int i = 0;

while(r != NULL)

{

strcpy(cInfo[n].routes[i++], r);

r = strtok(NULL, ";");

}

n++;

}

for(int i = 0; i < n; i++)

{

cout<<cInfo[i].cname<<" связан с городами:";

for(int j = 0; j < cInfo[i].rcount; j++)

cout<<cInfo[i].routes[j]<<", ";

cout<<endl;

}

char from_c[16], to_c[16];

cout<<endl<<"Откуда вы хотите ехать?"<<endl;

cin.getline(from_c, 16);

while(getCityID(from_c, cInfo, n) == -1)

{

cout<<"Вы ввели несущшствующий город!"<<endl;

cin.getline(from_c, 16);

}

cout<<"Куда вы хотите поехать?"<<endl;

cin.getline(to_c, 16);

while(getCityID(to_c, cInfo, n) == -1)

{

cout<<"Такого города несуществует!"<<endl;

cin.getline(to_c, 16);

}

int id = getCityID(from_c, cInfo, n), to_id = getCityID(to_c, cInfo, n);

bool *c_flag = new bool [n];

for(int i = 0; i < n; i++)

c_flag[i] = false;

int route = 0;

int **routeslist = new int *[1];

routeslist[0] = new int[n];

for(int j = 0; j < n; j++)

routeslist[0][j] = -1;

int *currRoute = new int [n];

for(int j = 0; j < n; j++)

currRoute[j] = -1;

routeslist = SearchTheTrainWay(cInfo[id].cname, to_c, cInfo, n, route, c_flag, routeslist, currRoute);

cout<<"Список возможных маршрутов: "<<endl;

for(int i = 0; i < route; i++)

{

cout<<i+1<<") ";

for(int j = 0; j < n; j++)

if(routeslist[i][j] != -1)

cout<<cInfo[routeslist[i][j]].cname<<" - ";

cout<<cInfo[to_id].cname<<endl;

}

getch();

return 0;

}

int **SearchTheAutoWay(char from_c[], char to_c[], structCity *cInfo, int n, int &route, bool *c_flag, int **routeslist, int *currRoute)

{

int id = getCityID(from_c, cInfo, n), to_id = getCityID(to_c, cInfo, n);

for(int i = 0; i < n; i++)

if(currRoute[i] == -1)

{

currRoute[i] = id;

break;

}

for(int i = 0; i < cInfo[id].rcount; i++)

{

if(getCityID(cInfo[id].routes[i], cInfo, n) == -1 || c_flag[getCityID(cInfo[id].routes[i], cInfo, n)] == true)

continue;

c_flag[id] = true;

char nextn[16];

strcpy(nextn, cInfo[id].routes[i]);

int next_id = getCityID(cInfo[id].routes[i], cInfo, n);

if(to_id != next_id)

{

for(int j = 0; j < n; j++)

{

routeslist[route][j] = currRoute[j];

if(routeslist[route][j] < 0) {

routeslist[route][j] = next_id; /*cout<<next_id<<" ";*/ break;}

}

routeslist = SearchTheTrainWay(cInfo[next_id].cname, to_c, cInfo, n, route, c_flag, routeslist, currRoute);

}

else

{

for(int j = 0; j < n; j++)

routeslist[route][j] = currRoute[j];

=route++;

int **tmp_r = new int *[route];

for(int j = 0; j < route; j++)

{

tmp_r[j] = new int [n];

for(int x = 0; x < n; x++)

tmp_r[j][x] = routeslist[j][x];

}

delete [] routeslist;

routeslist = new int *[route+2];

for(int j = 0; j < route; j++)

{

routeslist[j] = new int [n];

for(int x = 0; x < n; x++)

routeslist[j][x] = tmp_r[j][x];

}

routeslist[route] = new int [n];

for(int x = 0; x < n; x++)

routeslist[route][x] = -1;

delete [] tmp_r;

}

{

for(int i = n - 1; i > -1; i--)

if(currRoute[i] != -1)

{

currRoute[i] = -1;

break;

}

c_flag[id] = false;

return routeslist;

}

Специфікація функцій програми

Функція та її застосування

Призначення функції і параметрів

1

ifstream fin("in.txt")

зчитування бази даних

2

setlocale(0, "Russian");

запис в файл

3

cout

вивід на консоль

4

fout

вивід в файл

5

fin.getline(c, 1000)

зчитування строчки

6

strcpy(S[i].punkt,P)

запис пункту призначення

7

S[i].vartyst=toInt(P)

запис вартості як числового значення

8

fin.clear();

скидання прапора "кінець файла"

9

fin.seekg(0);

скидання прапора

10

P=strtok(c,"; ");

розбиття на окремі рядки

11

S[i].dalnist=toInt(P);

запис дальності польоту як числового значення

12

char punkt[100];

Виділення пам'яті під назву пункту призначення

13

delete[]S;

очистка пам'яті

14

setlocale(LC_CTYPE,"");

Команда яка дозволяє писати в cout( російськими буквами)

Оцінка достовірності результатів

Маршрут - 1,Lviv - Odessa - Kyiv

Маршрут - 2,Odessa - Zaporizhzhya - Kyiv

Маршрут - 3,Donetsk - Kharkiv - Kyiv

Висновок

В курсовій роботі розглянуті деякі аспекти вибору маршруту згідно технічного завдання. Розглянуто прототип програми автоматизації вибору маршруту на прикладі програми <<Яндекс.Карти>>. Розроблено алгоритм та програма обробки даних про зарплату з можливістю виводу результатів на екран та у файл. Кожна функція програми детально документована. Проведено оцінка достовірності роботи програми. Програма відповідає поставленому технічному завданню.

Література

1. Бардачов, Ю. М. Дискретна математика [Текст] підручник / За ред. Ходакова В.Є. - К. Вища школа, 2002. - 287 с.

2. Колдаев В.Д. Основы алгоритмизации и программирования [Текст] Учебное пособие / Под ред. проф. Л.Г. Гагариной. - М.: ИД «ФОРУМ»: ИНФРА-М, 2006. - 416 с.

3. Ковалюк, Т. В. Основи програмування [Текст] підручник / Т.В. Ковалюк. - К. Видавнича група BHV, 2005. - 384 с.

4. Прата Стивен Язык программирования С++. Лекции и упражнения. Учебник: Пер. с англ./Стивен Прата - СПб.: ООО «ДиаСофтЮП», 2005. - 1104 с.

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


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

  • Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.

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

  • Теоретичні відомості про язик С++. Розробка програми, що виконує основні арифметичні дії над простими та складними числами на язику С++. Опис алгоритму програми та її код. Інструкція по користуванню. Обгрунтовування вибору та складу технічних засобів.

    курсовая работа [852,8 K], добавлен 30.11.2011

  • Обґрунтування вибору автоматизованої системи для створення конструкторської документації. Проектування 3D моделі і креслення деталі в системі SolidWorks. Розробка API програми. Призначення деталі "прес-форма". Розробка керуючої програми для устаткування.

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

  • Призначення драйверів та порядок роботи з драйверами в MS-DOS. Розробка драйверів консолі. Структура драйвера та призначення компонентів. Розробка структури алгоритму, програми налагодження драйвера. Опис змінних програми та роботи модулів програми.

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

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

    курсовая работа [312,2 K], добавлен 01.04.2016

  • Модель обробки файлів растрових зображень. Середній квадрат яскравості. Фільтри для виділення перепадів і границь. Опис та обґрунтування вибору складу технічних та програмних засобів. Опис інтерфейсу програми. Зображення діалогового вікна програми.

    курсовая работа [664,3 K], добавлен 30.06.2009

  • Розробка ефективних засобів навчання. Виявлення системи, способів, що сприяють підвищенню активності учнів. Призначення та область використання програми електронний довідник. Розробка алгоритму програми. Обґрунтування вибору мови і системи програмування.

    курсовая работа [161,7 K], добавлен 02.06.2014

  • Вибір первинних вимірювальних перетворювачів та виконавчих механізмів, мікропроцесорних засобів автоматизації. Розробка блок-схеми системи автоматичного керування, програми функціонування вибраних засобів, принципових електричних схем зовнішніх з’єднань.

    курсовая работа [176,5 K], добавлен 08.03.2015

  • Розробка програми стеження за натиснутими клавішами клавіатури. Програмне забезпечення, необхідне для функціонування програми, мови програмування. Опис логічної структури, алгоритм програми та її зв'язок з іншими програмами. Характер та організація даних.

    курсовая работа [375,4 K], добавлен 01.04.2016

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

    курсовая работа [943,8 K], добавлен 15.03.2014

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