Нахождение кратчайшего пути между городами Минской области

Автор работы: Пользователь скрыл имя, 09 Января 2013 в 21:48, курсовая работа

Краткое описание

1.1 Сущность задачи
Задачей данного проекта является автоматизация расчета кратчайшего расстояния между городами Минской области. Программное приложение должно выводить сведения об оптимальном пути маршрута.
В Минской области осуществляется автобусное сообщение между следующими городами:

Содержание работы

Содержание
1 Объектно-ориентированный анализ и проектирование системы 3
Сущность задачи 3
Проектирование модели 5
2 Вычислительная система 8
2.1 Требования к аппаратным и операционным ресурсам 8
2.2 Инструменты разработки 8
3 Проектирование задачи 11
3.1 Требования к приложению 11
3.2 Концептуальный прототип 11
3.3 Организация данных 12
3.4 Функции и элементы управления 12
3.5 Проектирование справочной системы приложения 17
4 Описание программного средства 19
4.1 Общие сведения 19
4.2 Функциональное назначение 19
4.3 Входные данные 19
4.4 Выходные данные 19
5 Методика испытаний 20
5.1 Технические требования 20
5.2 Порядок проведения испытаний 20
5.2.1 Функциональное тестирование 20
5.2.2 Полное тестирование 26
6 Применение 39
6.1 Назначение программы 39
6.2 Условия применения 39
6.3 Справочная система 39
Заключение 45
Литература 46
Приложение А 47

Содержимое работы - 1 файл

ПЗ КП Пархимчик Т-992.docx

— 6.01 Мб (Скачать файл)

                //18

                {9999,9999,54,9999,9999,9999,9999,9999,9999,9999,32,9999,9999,9999,107,9999,9999,0,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999},

                //19

                {65,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9,9999,9999,9999,9999,9999,0,9999,9999,9999,9999,9999,9999,26,9999,9999,9999,9999},

                //20

                {115,9999,9999,9999,9999,9999,9999,76,41,9999,9999,49,9999,9999,9999,9999,75,9999,9999,0,9999,37,49,9999,75,9999,9999,9999,9999,9999},

                //21

                {55,9999,9999,9999,9999,9999,21,9999,9999,9999,29,9999,9999,9999,9999,9999,9999,9999,9999,9999,0,9999,9999,9999,9999,80,9999,9999,9999,9999},

                //22

                {9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,37,9999,0,9999,9999,9999,9999,9999,9999,9999,9999},

                //23

                {9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,68,9999,9999,9999,9999,9999,9999,49,9999,9999,0,9999,9999,9999,9999,9999,9999,9999},

                //24

                {9999,9999,9999,9999,9999,38,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,33,9999,9999,9999,9999,9999,9999,0,9999,9999,9999,9999,9999,9999},

                //25

                {9999,9999,9999,9999,9999,35,9999,9999,52,9999,9999,9999,9999,9999,9999,9999,57,9999,9999,75,9999,9999,9999,9999,0,9999,9999,9999,9999,9999},

                //26

                {9999,44,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,32,9999,9999,9999,9999,9999,26,9999,80,9999,9999,9999,9999,0,30,9999,9999,9999},

                //27

                {38,9999,45,99999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,30,0,9999,9999,9999},

                //28

                {44,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,34,99999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,0,9999,9999},

                //29

                {45,9999,9999,9999,37,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,0,9999},

                //30

                {26,9999,9999,9999,9999,16,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,9999,0}};

 

        int[,] S = new int[30, 30];

 

        string[] Cites = new string[30] { "Минск", "Беризино", "Борисов", "Вилейка", "Воложин", "Дзержинск", "Жодино", "Клецк", "Копыль",

            "Крупки", "Логойск", "Любань", "Марьина горка", "Молодечно", "Мядель", "Нарочь", "Несвиж", "Плещеницы", "Пуховичи",

            "Слуцк", "Смолевичи", "Солигорск", "Ст. Дороги", "Столбцы", "Узда", "Червень","Cмиловичи","Радошковичи","Раков","Фаниполь"};

        public string MinP(int x, int y, int z)

        {

            if (x == y)

            {

                MessageBox.Show("Пункт назначения соответствует пункту прибытия.\nУбедитесь в правильности выбора.");

                return "Измените один из пунктов и попробуйте снова!";                   

            }

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

            {

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

                {

                    if (i != j) S[i, j] = j+1;

                    else S[i, j] = 0;

                }

            }

            int sum = 0;

            for (int r = 0; r < 30; r++)

            {

            

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

                {

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

                    {

                        sum = D[r, j] + D[i, r];

                        if (D[i, j] > sum)

                        {

                            D[i, j] = sum;

                            S[i, j] = r + 1;

                        }

                    }

                }

            }

            string end1;

            string buf;

            int end;

            string str = "->";

            int begin = x;

            if (z != 0)

            {

                end = z;

            }

            else

            {

                end = y;

            }

            end1 = Convert.ToString(end);

            int asd = end;

            string begin1 = Convert.ToString(begin);

            string s = Cites[begin];

        opop:

            if (asd != (S[begin, end] - 1))

            {

                if (S[begin, end] != 0)

                {

                    int qwe = begin;

                    begin = S[qwe, end] - 1;

                    buf = Convert.ToString(Cites[begin]);

                    s = s + str + buf;

                }

                goto opop;

            }

            else

            {

                if (z != 0)

                {

                    s += str;

                    begin = z;

                    end = y;                   

                    asd = end;                  

                    s += Cites[begin];

                opop1:

                    if (asd != (S[begin, end] - 1))

                    {

                        if (S[begin, end] != 0)

                        {

                            int qwe = begin;

                            begin = S[qwe, end] - 1;

                            buf = Convert.ToString(Cites[begin]);

                            s = s + str + buf;

                        }

                        goto opop1;

                    }

                    else

                        return s + str + Cites[y];

                }

                else

                {

                    return s + str + Cites[y];

                }

            }   

        }

        public string MinS(int x, int y, int z)

        {

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

            {

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

                {

                    if (i != j) S[i, j] = j + 1;

                    else S[i, j] = 0;

                }

            }

            int sum = 0;

            for (int r = 0; r < 30; r++)

            {

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

                {

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

                    {

                        sum = D[r, j] + D[i, r];

                        if (D[i, j] > sum)

                        {

                            D[i, j] = sum;

                            S[i, j] = r + 1;

                        }

                    }

                }

            }

            string km;

            if (z == 0)

                km =  "Кратчайшее расстояние = "+Convert.ToString(D[x, y]) + " км";

            else

                km = "Кратчайшее расстояние = " + Convert.ToString((D[x, z]+D[z, y])) + " км";          

          

            return km;

        }         

    }

 

 

 



 

 


 


 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 



 


Информация о работе Нахождение кратчайшего пути между городами Минской области