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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать файл)

                //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;

        }         

    }

 

 

 

3.5 Проектирование справочной системы приложения

Справочная система будет  содержать описания всех функций  программы (от самых мелочных до основных). Информация будет понятной и доступной для понимания всем пользователям, даже самым неумелым пользователям ПК. Система будет содержать следующие пункты:

  • запуск программы;
  • поиск городов;
  • выбор городов отправления, прибытия и проезда;
  • использование карты для выбора городов;
  • поиск кратчайшего маршрута(основная функция);
  • сохранение в текстовый файл пути;
  • пункт меню «О программе»;
  • завершение работы программы.

Средством разработки справочной системы будет являться программа «Help & Manual 5.2.0»

 

4 Описание программного средства

4.1 Общие сведения

Приложение получило название «Оптимизация маршрутов».

Для функционирования программного средства необходима операционная система  Windows XP/Windows Seven.

Перечень модулей(библиотек):

  • System;
  • System.Collections.Generic;
  • System.ComponentModel;
  • System.Data;
  • System.Drawing;
  • System.Linq;
  • System.Text;
  • System.Windows.Forms;

Объем занимаемой памяти приложением  составляет около 100 Мб плюс память для  сохраненных маршрутов.

Присутствует инсталлятор  программного средства.

 

 

4.2 Функциональное назначение

Данное программное средство решает задачу оптимизации маршрутов. Это же является и назначением  программы.

Сетевой поддержки у программы  так же нет. Так как функциональные требования она выполняет без  подключения к сети.

 

4.3 Входные данные

Входными данными программы  являются названия городов. Список городов  представлен в виде CheckedListBox. Организован поиск городов.

 

4.4 Выходные данные

Выходными данными являются кратчайшие маршруты, которые пользователь может, по желанию, сохранить в текстовый  файл. В этом файле будет храниться  последовательность  городов, через  которые необходимо следовать, чтобы  добиться кратчайшего маршрута следования, а так же наименьшее расстояние между  двумя городами. Доступ к этим файлам могут осуществлять любые пользователи, не зависимо вы его создали или  нет.

 

 

 

5 Методика испытаний

5.1 Технические требования

Минимальные системные требования для проведения тестирования данного приложения представлены в таблице 3.

Таблица 3 - Минимальные системные требования

Элементы конфигурации

Описание характеристик

Процессор

Тактовая частота 1GHz

Оперативная память

Объём 256 mb

Видео адаптер

Объём памяти 16 mb

Дисковое пространство

Объём 100 mb

Клавиатура

Совместимая с персональным компьютером

Мышь

Совместимая с персональным компьютером

Монитор

Диагональ 15"

Операционная система

Windows XP Service Pack 2


 

5.2 Порядок проведения испытаний

5.2.1 Функциональное назначение

При запуске программы  открывается форма «Оптимизация маршрутов». Форма представлена на рисунке 2.

 

 

Рисунок 2 – Форма «Оптимизация маршрутов»

Нажав на кнопку «Выбрать город  отправления», список городов отправления  становится активным и доступным  для использования (выбора города). Результат нажатия представлен  на рисунке 3.

 

 

Рисунок 3 – Результат  нажатия кнопки «Выбрать город отправления»

 

Выбрав город отправления, становится доступным для использования  список городов прибытия и список городов отправления опять становится неактивным. Результат нажатия представлен на рисунке 4.

 

 

Рисунок 4 – Результат  выбора города прибытия

Выбрав город прибытия, фокусировка переходит на кнопку «Найти кратчайший путь» и список городов прибытия опять становится неактивным. Результат выбора города прибытия представлен на рисунке 5.

 

 

Рисунок 5 – Результат  выбора города прибытия

 

Нажав кнопку «Найти кратчайший путь», в соответствующие поля выводится  кратчайший маршрут и кратчайшее расстояние. Результат нажатия на кнопку «Найти кратчайший путь» представлен  на рисунке 6.

 

 

Рисунок 6 – Результат  нажатия на кнопку «Найти кратчайший путь»

Нажав на пункт меню «Сохранить путь…», открывается диалоговое окно «Сохранить как», в котором пользователь сможет, выбрав имя или оставив  стандартное (город отправления_город прибытия), сохранить путь и расстояние в текстовый файл. Результат нажатия представлен на рисунках 7-9.

 

 

Рисунок 7 – выбор пункта меню «Сохранить как…»

 

 

Рисунок 8 – Диалоговое окно сохранения пути

 

 

Рисунок 9 – Сохраненный  текстовый файл

 

Выбрав строку ввода города для поиска, автоматически стирается  надпись «Введите город». Результат  нажатия представлен на рисунке 10.

 

 

Рисунок 10 – Результат  нажатия на поле ввода города для  поиска

 

Введя данные для поиска, выбрав один из списка городов для  поиска (отправления, проезда или  прибытия) и нажав кнопку поиска, программа найдет и выберет (заменит) город (отправления, проезда или  прибытия). Так же, если найден город  отправления, то становится доступным  для выбора список городов прибытия. Результат всех этих действий представлен  на рисунках 11-12.

 

 

 

Рисунок 11 – Введение информации для поиска

 

 

Рисунок 12 – Выбран город  поиска, стал активным список городов

 

Нажав повторно клавишу «Найти кратчайший путь», уже найденный  кратчайший путь, между ранее выбранными городами будет изменен на путь между  текущими городами. Данный маршрут  и расстояние можно так же сохранить  в текстовый файл. Результат представлен  на рисунке 13.

 

 

Рисунок 13 – Результат  нахождения другого кратчайшего  пути

 

 

5.2.2 Полное тестирование

Полное тестирование предполагает полный просмотр программного средства с момента запуска до завершения работы с проверкой реакции программного приложения на некорректный ввод данных или сами некорректные данные.

При запуске программы  открывается форма «Оптимизация маршрутов». Форма представлена на рисунке 14.

 

 

Рисунок 14 – Форма «Оптимизация маршрутов»

Нажав на кнопку «Выбрать город  отправления», список городов отправления  становится активным и доступным  для использования (выбора города). Результат нажатия представлен  на рисунке 15.

 

 

Рисунок 15 – Результат  нажатия кнопки «Выбрать город отправления»

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