close

Вход

Забыли?

вход по аккаунту

код для вставкиСкачать
ТЗ по доработке редактора план-схем и программного движка план-схемы
для проекта «Навигация»
IDE: Embarcadero Delphi XE5
Framework: FireMonkey (FMX)
Тип проекта: FMX HD
СУБД: MySql
Задача: доработать ПО для создания, редактирования и просмотра план-схем этажей
торгового центра (ТЦ).
На выходе должны иметь:


ПО для создания редактирования план-схем этажей ТЦ
Набор модулей, реализующих программный движок план-схемы этажа ТЦ,
позволяющий её редактировать и отображать
Краткое описание всей системы:
Основным компонентом системы является киоск, который расположен на каком-либо
этаже какого-либо ТЦ. Таких киосков может быть сколько угодно в различных ТЦ. Основные
функции киоска:


Поиск и навигация по магазинам и объектам ТЦ
Просмотр план-схем этажей ТЦ
Киоск получает всю информацию из базы данных (БД). БД локальная и время от времени
синхронизируется через интернет с базой данных расположенной на удаленном сервере.
На сервере работает веб-сервис, который осуществляет связь программ клиентов
(киоски, админ ПО) с базой данных.
Также существует ПО администрирования, которое позволяет создавать и
редактировать любые объекты системы (магазины, ТЦ, категории, акции магазинов и т.д.).
И, наконец, отдельным ПО является редактор план-схем этажей ТЦ, который
необходимо доработать
Визуально план-схема представляет собой 2ух мерную поверхность, на которой
расположены геометрические объекты, представляющие собой магазины, лифты, лестницы и
т.д.
У план-схемы есть 3 режима отображения:
1. Режим редактирования (доступен только в редакторе): позволяет выбирать
объекты и изменять их
2. Режим вставки (доступен только в редакторе): в данном режиме осуществляется
процесс добавления нового объекта на карту
3. Режим просмотра (доступен в редакторе и киоске). Режим, позволяющий
работать с план-схемой на уровне пользователя.
В режиме просмотра пользователю доступны следующие функции:





Перемещение по карте с помощью мыши или сенсорного дисплея
Масштабирование карты с помощью:
o Колеса мыши (реализовано)
o Жеста на мультитач дисплее (не реализовано)
При нажатии на объект появляется всплывающее окно (реализовано отчасти),
которое содержит:
o Логотип магазина (если объект является магазином)
o Краткую информацию об объекте
o Кнопку перехода страничку магазина (кнопка возвращает событие с
указанием данных магазина)
При нажатии на пустое место на карте всплывающее окно закрывается
Также при нажатии на объект отображается один или несколько путей от киоска,
на котором идет просмотр, к данному объекту (не реализовано). Если объект
находится не на одном этаже с киоском, то пути отображаются от ближайших
выходов/входов на этаж. Пути анимированы: постепенно отрисовываются от
начального объекта, до конечного
Немного о путях
Составной путь – траектория движения от киоска к конкретному объекту. Если киоск и
объект находятся на одном этаже, то составной путь состоит из одного простого пути (или
просто пути), если нет, то составной путь состоит из нескольких путей. Например: Киоск на
этаже 3, магазин на этаже 1. Составной путь состоит из нескольких путей:
- этаж 3: От киоска до ближайшего объекта – выхода (лестницы, лифта, эскалатора)
- этаж 1: От соответствующего выхода до магазина
Простой путь – запись в таблице путей в БД или в xml. Детально можно рассмотреть
его через следующие параметры:











ID пути в БД
Внутренний ID пути внутри план-схемы
ID киоска в БД (как начальный объект составного пути)
Группа конечного в составном пути объекта (магазин, туалет, админ-помещение
и т.д.)
ID магазина (как конечный объект составного пути, если этот группа этого
объекта – магазин)
ID этажа
ID начального объекта на план-схеме в БД
Внутренний ID начального объекта на план-схеме из xml
ID конечного объекта на план-схеме в БД
Внутренний ID конечного объекта на план-схеме из xml
Список точек пути
Данные план-схемы хранятся в БД и в XML файле. Движок должен уметь загружать и
сохранять план-схему как в файл так и в БД.
Основные данные, описывающие план-схему:



Ширина и длина схемы
Фон схемы
Привязка к этажу ТЦ в БД


Список объектов на схему. Каждый объект содержит следующие данные:
o Название объекта
o Список точек (формат SVG), описывающих геометрию объекта на 2D
поверхности
o Угол поворота, масштаб
o Тип геометрии объекта: кривая\ломанная, прямоугольник, эллипс
o Группа объекта: магазин, киоск, лифт, администрация, лестница и т.д.
o Заливка объекта
Список путей от киоска до объектов (не реализовано). Каждый путь содержит
следующие данные:
o ID киоска в БД
o ID объекта в БД
o ID начального объекта на схеме
o ID конечного объекта на схеме
o Список координат, определяющих ломанную пути
Последовательность работы с редактором:
1.
2.
3.
4.
5.
6.
7.
8.
Создается новый проект
Задаются размеры план-схемы и её фон
План схема привязывается к этажу из БД (сохраняет ID выбранного этажа)
Проект сохраняется в xml файл на локальном компьютере, например
project1.nlm (.nlm – расширение для план схемы). Далее по ходу работы проект
должен время от времени сохранять изменения.
Создаются объекты, редактируется их геометрия, заливка, линии, тексты и т.д.
Объекты привязываются к магазинам на этаже ТЦ из БД
Задаются пути от объекта-киоска или от входов\выходов к другим объектам на
план-схеме
При окончательном завершении создания план-схемы она последний раз
сохраняется в файл и затем экспортируется в БД
Проект можно продолжить одним из следующих путей:


Загрузить его из xml файла
Импортировать данные план-схемы конкретного этажа их БД и сохранить их в
xml.
ЧТО СДЕЛАНО НА ДАННЫЙ МОМЕНТ
1. Разработана концепция логического и графического движка, отстроена система
модулей
2. Реализован движок, позволяющий:
a. Задавать размеры план-схемы
b. Задавать заливку цветом для план-схемы
c. Задавать фон для план-схемы
d. Загружать план-схему из xml файла
e. Сохранять план-схему в xml файл
f. Масштабировать план-схему
g. Создавать новые объекты 3ех типов: кривая\ломанная, прямоугольник, эллипс
h. Удалять объект
i. Менять последовательность расположения объектов по Z координате, что
влияет на то какой объект расположен поверх других
j. Заливать объекты прозрачным/непрозрачным цветом
k. Задавать прозрачный\непрозрачный цвет линиям
l. Создавать и редактировать библиотеку изображений, которая представляет
собой xml файл
m. Задавать текстуру для объекта, которая берется из библиотеки изображений
n. Задавать категорию объекта (магазин, киоск, лифт и т.д)
o. Привязать к магазину или киоску из БД
p. Отобразить план-схему в режиме просмотра, в котором доступны всплывающие
окна при нажатии на объект
3. Движок представляет собой набор модулей, содержащих классы и типы, каждый из
которых выполняет свою внутреннюю задачу:
a. Класс графического отображения абстрактного объекта (заливка, линия,
текстура)
b. Структуры данных, описывающие различные объекты (магазины, этажи и т.д) и
реализующие внутреннюю работу с ними
c. Класс библиотеки изображений
d. Класс работы с БД
e. Класс математического объекта план-схемы
f. Класс визуального объекта план-схемы (наследуется от математического)
g. Класс списка визуальных объектов план-схемы
h. Класс самой план-схемы, который также дает доступ к её объектам
4. GUI, позволяющий реализовывать функции движка. В качестве вдохновения взят MS
Visio
ЧТО НЕОБХОДИМО СДЕЛАТЬ И ДОРАБОТАТЬ
(каждый пункт детально согласовывается и детализируется с Руководителем проекта). Синим
цветом отображены пожелания Заказчика после последнего тестирования последней версии
редактора:
Общее
1. Досконально разобраться в данном проекте, его текущей программной логике, базе
данных и интерфейсе пользователя, понимать все определенные в нем типы данных,
взаимосвязи и реализации
2. Доработать интерфейс пользователя согласно нижеследующим требованиям и
необходимостям, которые будут возникать в процессе разработки
3. Доработать программный движок согласно нижеследующим требованиям и
необходимостям, которые будут возникать в процессе разработки
БД и XML
4. Добавить новые таблицы и поля в базу данных, а именно:
a. Добавить поля в таблицу этажей. За основу берутся поля файла xml
b. Добавить таблицы объектов карты, путей. За основу берутся поля файла xml
c. Возможные другие таблицы\поля
5. Продумать как хранить категории/группы объектов (магазины, киоски, лифты, туалеты
и т.д.)
6. Отредактировать структуру XML при необходимости в процессе разработки
Интерфейс пользователя/программный движок
7. Переработать библиотеку изображений из файла xml в рабочий каталог, т.е. все
текстуры должны хранится только в одной заданной директории.
8. В режиме редактирования над фоном карты отрисована сетка. Необходимо добавить
размерность сетку (линейку сверху и справа)
9. Добавить изменение размерности сетки
10. Добавить отмену последнего действия (добавления фигуры, удаления, изменения и
т.д.) (CTRL-Z)
11. Добавить возможность вводить все числовые значения с клавиатуры. Сейчас они
изменяются с помощью ползунков, кнопок «больше\меньше»
12. Сделать более удобной привязку текстуры к изображению
13. Сейчас не работает поворот объектов с текстурами вокруг своей оси. Необходимо
исправить
14. Добавить в список геометрических типов фигур следующие типы: стрелка, полукруг,
ромб и треугольник
15. Добавить возможность клонировать объекты (копирование, вставка)
16. Добавить библиотеку, в которую можно добавлять объекты с их геометрическими и
визуальными характеристиками. Скорее всего, библиотека должна быть представлена
в виде отдельной таблицы в БД
17. Указывать размеры описывающего объект прямоугольника с клавиатуры, под который
подстраиваются размеры самой фигуры (НЕ ПРИОРИТЕТНАЯ ЗАДАЧА, ЕСЛИ НА
УРОВНЕ МАТЕМАТИКИ ВОЗНИКНУТ СЛОЖНОСТИ, ТО ИГНОРИРОВАТЬ)
18. Добавить возможность указывать цвета через пропись их значения (#FF00FF00).
Сейчас значение цвета просто указывается, но недоступно для редактирования. Цвет
задается сейчас только путем его указания с помощью мыши
19. Добавить возможность изменения толщины линии.
20. Обобщая предыдущие 2 пункта, редактирование заливки и линии должно быть
представлено на универсальной форме. Сейчас так и есть, только она вписана в
интерфейс, а надо будет, скорее всего, сделать эту форму в виде всплывающего окна,
т.к. на ней станет больше элементов управления
21. Увеличить границы масштабирования карты
22. Добавить возможность переименования объектов. Сейчас имена генерируются при
создании объекта и недоступны для редактирования
23. Добавить возможность группировать и расгруппировать несколько объектов, с
последующей возможностью их последующего перемещения и, возможно, поворота
вокруг центра получившейся общей фигуры (ЕСЛИ ЭТО НЕ БУДЕТ СЛОЖНО
МАТЕМАТИЧЕСКИ)
24. Подгонять объекты к линиям сетки одним из четырех способов (можно обсуждать и
предлагать варианты):
a. Крайнюю левую точку фигуры к более левой вертикальной линии сетки
b. Крайнюю правую точку фигуры к более правой вертикальной линии сетки
c. Крайнюю нижнюю точку фигуры к более нижней горизонтальной линии сетки
d. Крайнюю верхнюю точку фигуры к более верхней горизонтальной линии сетки
25. Добавить работу с путями от киоска к объектам, а именно:
a. Хранить параметры пути в виде программной структуры данных, таблицы БД,
блока в xml файла
b. Реализовать добавление путей в процессе редактирования со следующим
алгоритмом:
 Включить режим добавления пути (который необходимо реализовать)
 Выбрать ID киоска с которого начинается составной путь (на любом
этаже текущего ТЦ)
 Выбрать конечный объект составного пути. Сперва его группу, затем сам
объект на любом этаже текущего ТЦ (ДАННЫЙ ПУНКТ
ДЕТАЛИЗИРУЕТСЯ В ПРОЦЕССЕ РАЗРАБОТКИ)
 Выбрать начальный объект пути на план-схеме
 Выбрать конечный объект пути на план-схеме
 Последовательными кликами мыши по пустому месту на план-схеме
рисовать траекторию пути от начального объекта до конечного. После
каждого последующего нажатия от предыдущей точки отрисовывается
отрезок к текущей точке.
 Процесс добавления пути заканчивается отключением режима
добавления (НЕОБХОДИМО СОГЛАСОВАТЬ ДЕТАЛИ)
c. Реализовать анимированную отрисовку пути в режиме просмотра план-схемы
26. Реализовать импорт\экспорт карты из\в БД
27. Реализовать загрузку карты из БД по ID карты. Сейчас карта грузиться только из XML
28. В режиме просмотра доработать и реализовать:
a. Выделение объектов
b. Заполнить всплывающее окно информацией о магазине
API программного движка (данный API будет использоваться ПО киоска для
просмотра карты (т.е. план-схемы)
29. Программный движок должен выполнять следующие команды (другими словами
иметь следующие свойства, методы, функции, события в public секции классов
движка). НЕКОТОРЫЕ ПОДПУНКТЫ ДУБЛИРОВАТЬ ВЫШЕУКАЗАННЫЕ
ПУНКТЫ:
a. Загрузить карту из БД по ID этажа
b. Выделить объект по его ID (или ID магазина) и отобразить всплывающее окно
c. Начать отображать путь от объекта к объекту
d. Получить событие окончания отображения пути
e. Прервать отображение пути до его окончания
f. Убрать все выделения объектов и всплывающие окна
g. Получить событие того, что нажата кнопка на всплывающем окне с возвратом
ID магазина и ID объекта
h. В ходе разработки могут быть добавлены другие команды
Разное
30. Также в ходе разработки по мере необходимости могут быть добавлены новые мелкие
пункты и немного изменены детали текущих
Ход работы
Алгоритм работы над проектом следующий:


В начале работы с Руководителем проекта в ходе живой беседы (при личной встрече
или Skype разговоре) обсуждаются детали проекта, согласовывается приблизительная
последовательность выполнения задач, формируется список вопросов и более-менее
подробный анализ времязатрат. Для грубого подсчета времязатрат достаточно текста
данного ТЗ)
Далее ход работы делится на итерации. Итерации заканчиваются при полном
завершении проекта. Каждая итерация состоит из следующих этапов:
o Руководитель проекта дает небольшой список задач по проекту, максимально
детализируя их.
o Реализация задач
o Руководитель проверяет результат (программный код и работу программы) и
начинает новую итерацию, цель которой может быть или исправление ошибок
предыдущей итерации, или реализация новых задач
1/--страниц
Пожаловаться на содержимое документа