48234 (588526)

Файл №588526 48234 (Программа информационной поддержки создания плана местности)48234 (588526)2016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

СОДЕРЖАНИЕ

1. Постановка и анализ задачи
2. Разработка логической схемы данных
4. Основные алгоритмы

4.1 Описание алгоритма

4.2 Блок-схема алгоритма

5. Программная реализация

5.1 Выбор среды разработки программы

5.2 Работа с таблицами

5.3 Работа с графикой

5.4 Разработка интерфейса

5.5 Некоторые особенности алгоритмов

5.6 Тестирование

6. Описание программы
7. Инструкция по установке
8. Руководство пользователя

8.1 Главное меню

8.2 Панель быстрых кнопок

8.3 Вкладка "Таблица"

8.4 Вкладка "План"

9. Контрольный пример
Заключение
Список литературы
Приложение

1. ПОСТАНОВКА И АНАЛИЗ ЗАДАЧИ

Задача: разработать программу информационной поддержки создания плана местности.

Исходные данные: Windows98, система описания точек плана местности с возможностью легкой модификации, возможность графического представления плана, построение маршрутов, оценка длины маршрута, вывод информации на экран и печать.

Назначение программы – она позволяет рисовать на карте маршруты, оценивать их длину и расстояния, что может понадобиться пользователям как в личных целях (например, туристам), так и при проведении геодезических работ, работ по прокладке кабеля и трубопровода и т.д. и т.п.

Рассмотрим это задание по пунктам.

Так как мы создаем план местности, подразумевается, что координаты точки плана местности задаются в виде широты и долготы, те в градусах. При этом мы должны учитывать, что широта подразделяется на северную и южную, каждя от 0 до 90 градусов; а долгота – на западную и восточную, от 0 до 180 градусов.

Кроме координат пользователю может понадобиться: номер маршрута, чтобы осуществить рисование нескольких маршрутов, тип объекта, находящегося в данной точке, а также какие-либо дополнительные комментарии.

При таком раскладе систему описания точек плана лучше всего представить в виде таблицы, где каждая запись будет содержать обе координаты, тип объекта, номер маршрута и комментарии. При этом "возможность легкой модификации" по отношению к таблице обеспечить более просто, чем, скажем, по отношению к файлу.

Но для оценки длины маршрута, так как там вычисляется длины отрезков, удобнее будет использовать еще одну таблицу.

И можно будет ввести еще таблицу, в которую будет заноситься перечень типов объектов, чтобы пользователю было удобнее их вносить в главную таблицу.

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

Так же для удобства работы с графическим представлением плана необходимо реализовать возможность его масштабирования. А для наглядности можно добавить вывод на рисунок названий объектов и расстояний.

Учитывая в качестве операционной системы Windows98 и наличие экранного интерфейса, а также работу с таблицами и графикой, на мой взгляд для разработки программы больше подходит среда С++ Builder 5.



2. РАЗРАБОТКА ЛОГИЧЕСКОЙ СХЕМЫ ДАННЫХ

В программе для хранения данных используются таблицы: одна основная, с которой работает пользователь, и две вспомогательных, с данными которых оперирует программа.

Все таблицы хранятся в формате таблиц Paradox Database, в файлах с расширением *.db.

Главная таблица состоит из шести полей со следующими характеристиками:

ID – идентификатор записи. Это поле является ключевым – то есть по нему сортируются данные в таблице. Тип – автоинкремент. Поле ID доступно только для чтения. При создании таблицы его значение равно единице, и будет увеличиваться на единицу при каждом создании новой записи. Удаление записи не изменяет значения поля ID других записей.

Latitude – содержит значение широты текущей точки на карте в формате чисел с плавающей точкой, на которые накладывается ограничение в виде области допустимых значений от –90 до 90. Положительные числа соответствуют северной широте, отрицательные – южной.

Longitude - – содержит значение долготы текущей точки на карте в формате чисел с плавающей точкой, на которые накладывается ограничение в виде области допустимых значений от –180 до 180. Положительные числа соответствуют восточной долготе, отрицательные – западной.

Object Type – поле типа–"строка". В нем указывается тип объекта, находящегося в данной точке.

Course – поле типа "целое число". Содержит номер маршрута, к которому принадлежит данная точка.

Comments – поле типа "строка", отведено для комментариев.

Ввод значений в поля Latitude, Longitude и Course обязательно.

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

Она имеет следующие поля:

Object_ID – идентификатор записи. Тип поля – автоинкремент.

Object Type – тип объекта.

Вспомогательная таблица RasstTable также находится в каталоге программы в файле Rasst.db. Она используется программой в процессе рисования плана: в нее заносится индекс маршрута и расстояния его отрезков. Пользователь может посмотреть содержимое этой таблицы, отключив флажок "Скрыть таблицу расстояний".

Эта таблица содержит поля:

Course – номер маршрута. Тип поля – целое число.

Distance – расстояние, в километрах. Тип поля – число с плавающей точкой.

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

Рис.2.1. Схема данных.

3. СТРУКТУРНАЯ СХЕМА ПРОГРАММЫ

Основные функции, которые необходимо реализовать в нашей программе, следуют из постановки и анализа задачи:

1)Отображение данных пользователя в виде таблицы и работа с ней.

2)Добавления и удаления типов объектов.

3)Графическое представление плана с возможностью масштабирования.

4)Работа с файлами и вывод результатов на печать.

5)Удобный пользовательский интерфейс.

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

Рис. 3.1. Функциональная структура программы.

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


4. ОСНОВНЫЕ АЛГОРИТМЫ

Основным является алгоритм построения изображения по данным из главной таблицы, реализованный в виде метода plandraw().

Ниже приведены его блок-схема и описание.

4.1 Описание алгоритма

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

Далее активируем кнопки увеличения масштаба и установки масштаба по умолчанию.

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

Устанавливаем параметры фона (цвет) и рисуем его, затем устанавливаем параметры пера (толщина линии и стиль), от которых будет зависеть отображение линий маршрута на рисунке. В начале толщина линии равна единице – для рисования координатной сетки.

С помощью свойства таблицы RecordCount находим количество строк в главной таблице.

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

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

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

Если номер маршрута равен нулю, тогда выполняется условие рисования координатной сетки – меридианов и параллелей. Сначала выполняется цикл рисования меридианов – мы проходим от 0 до 360 градусов с шагом, зависящим от степени увеличения (15, 6, 3, или 1 градусов), причем возле каждого меридиана подписывается соответствующий ему градус долготы (восточная долгота – со знаком "+", западная – со знаком "-"). Нулевой меридиан изображается черным цветом. Аналогичные действия осуществляются и в цикле рисования параллелей, единственное отличие – цикл проходит от 0 до 180 градусов. Со знаком "+" обозначается северная широта, со знаком "-" - южная.

Меняем толщину линии на 2, для изображения линий маршрутов.

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

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

Задаем цвет линии в зависимости от номера маршрута. И организуем цикл, рисующий линии.

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

Затем вычисляется расстояние между точками, находящимися на Земном шаре, проекции которых мы только что изобразили на нашей карте. Расстояния вычисляются в километрах, радиус Земли берется равным 6371км. Вычисление расстояния производится в том случае, если i не равно 0, те не первое прохождение по циклу. Это условие необходимо, так как мы используем координаты предыдущей точки, чтобы найти расстояние до текущей.

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

Рассматриваются три случая:

1)если точки находятся на одной долготе, угол определить просто - он будет равен разности между большим и меньшим значением широты.

2)если точки находятся на одинаковой широте, то тут его определение тоже не представляет сложности – он равен разности между большим и меньшим значением долготы, умноженной на поправку cos(f), где f – текущая широта.

3)если точки располагаются на разной широте и долготе, этот случай нахождения угла является более сложным. Рассмотрим его подробно.

Сначала находим разность долгот точек, как если бы они находились на одной широте, помножаем на поправку cos(f), и вычисляем линейное расстояние между ними по теореме косинусов (другие две стороны треугольника – радиусы Земли). Таким же образом рассчитываем расстояние между точками, как если бы они находились на одной долготе. Эти расстояния обозначим l1 и l2.

Теперь у нас есть прямоугольный треугольник с катетами l1, l2, гипотенузой которого является расстояние l3. Вычисляем ее по теореме Пифагора. Нашей целью является найти угол a. С помощью теоремы косинусов находим косинус этого угла. Вычислив по нему арккосинус, мы получаем угол! Ниже приводится поясняющий рисунок.

Рис. 4.1. Пояснение к расчету расстояния на различных широте и долготе.

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

Замечание: так как функции косинуса и арккосинуса оперируют с углами, заданными в радианах, в программе производится пересчет радианов в градусы и наоборот. Все эти вычисления приводят к накоплению погрешности.

Все упомянутые формулы даны в Приложении Д.

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

Характеристики

Тип файла
Документ
Размер
39,47 Mb
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6547
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее