Разработка аналитического инструментария к мобильному учётному приложению для велосипедиста

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

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

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

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

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

2

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

Разработка аналитического инструментария к мобильному учётному приложению для велосипедиста

Введение

приложение велосипедист тренировочный нагрузка

Мобильные приложения в современном мире играют одну из основных ролей в жизни большинства людей. Для многих использование смартфонов, планшетов является фактором успешности и самоорганизованности, потому что они всегда находятся поблизости, можно в любой момент сделать заметку, отметить событие в календаре, внести изменения в какой-либо документ и т.п. Существуют также специальные приложения, которыми удобно пользоваться для занятий спортом, ведения журнала тренировок, контроля своего здоровья и др. К сожалению, не все приложения доступные в магазинах на различных платформах (например, Play Market, App Store) являются хорошо разработанными, предоставляют те функции, которые необходимы пользователям, а иногда есть те, которые совсем и не нужны, позволяют настраивать интерфейс «под себя». Зачастую готовые решения можно скачать бесплатно, где основная функциональность присутствует, однако, чтобы воспользоваться уникальными возможностями той или иной программы, нужно купить это приложение, иногда за достаточно высокую цену. Поэтому создаётся впечатление однообразности приложений, нет возможности выбора.

Чтобы исправить ситуацию, было принято решение реализовать такое мобильное приложение, в котором спортсмены, в частности, велосипедисты могли бы вести учёт своего тренировочного процесса, контролируя свои показатели, используя статистический модуль, сравнивая аналогичные периоды разных сезонов и корректируя свой тренировочный процесс на основе полученных данных. Первый этап разработки приложения пройден успешно: создано приложение «Дневник велосипедиста» («Cyclist Diary»), в котором реализована работа с внутренней базой данных (добавление, удаление, редактирование, просмотр данных), т.е. учётная часть приложения. В этой работе будет описан процесс проектирования, написания статистических функций, экспорта/импорта данных, что позволит пользователям получать информацию, например, о километраже в текущем сезоне, об общем прогрессе спортсмена и другие характеристики, а также выгружать данные в виде отдельного файла, например, для проверки тренером определённого тренировочного цикла с целью выявления сильных и слабых сторон спортсмена для последующей корректировки. Также эти функции избавят пользователей от временных и трудовых затрат на поиск определённой тренировки для сравнения её с аналогичной в другом сезоне или в другой период текущего сезона.

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

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

Причины появления проблемы:

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

2.Недостаточно времени на поиск алгоритма решения и отладку задачи реализации аналитических функций.

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

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

Цель исследования:

Реализовать функции аналитики, экспорта, импорта данных, дополнительные возможности поиска, сравнения записей по тренировкам/соревнованиям, а также настройку пользовательского интерфейса.

Задачи:

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

2. Спроектировать алгоритмы для получения статистических данных.

3. Написать запросы для получения статистики.

4. Обеспечить выполнение запросов в ответ на действия пользователя.

5. Сделать возможным построение графиков по выбранным параметрам.

6. Реализовать экспорт/импорт данных из электронных таблиц.

7. Реализовать настройку параметров приложения (выбор языка интерфейса, цвет и т.п.).

Критериями эффективности для оценки качества выполненной работы являются:

1. Обеспечение получения необходимых пользователю статистик за наименьшее количество шагов.

2. Обеспечение доступа к статистикам пользователю, по возможности, без необходимости ввода каких-либо данных, должно быть достаточно выбирать фильтры.

3. Минимизация количества действий пользователя.

Методы исследования.

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

Сравнение. Анализ существующих решений и рекомендаций экспертов.

Эксперимент и формализация. Проектирование алгоритмов, разработка приложения и отладка функций; исправление ошибок и недочётов.

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

Объектно-ориентированный анализ, проектирование и программирование - как непосредственная разработка приложения.

В качестве основных пунктов, которые следует вынести на защиту исследования были выделены следующие:

1. Результаты опроса потенциальных пользователей.

2. Результаты анализа существующих сервисов и решений.

3. Система выделенных требований, предъявляемых будущими пользователями.

4. Этапы проектирования системы.

5. Этапы разработки пользовательского интерфейса, логики выполнения функций, а также их взаимосвязь и реакция на запросы пользователя.

6. Готовое решение.

7. Динамика с начала тестового пользования приложением.

Практическая значимость работы:

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

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

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

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

В случае положительных результатов тестирования можно загрузить установочный файл в магазин Google Play для получения реальных отзывов пользователей, рекомендаций и возможной выгоды от продаж приложения.

1.Обзор источников

1.1 Выбор паттерна разработки приложений

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

Первый паттерн - MVC (рис. 1.1). Это универсальная программная архитектура, которая помогает разработчикам делегировать функции трех модулей: модель (model), вид (View), контроллер (controller) [13]. Модель представляет собой классы, объекты, атрибуты, т.е. то, что содержит в себе базу данных или набор объектов. Вид/представление - макеты, окна, кнопки, текстовые поля; это то, с чем пользователь может взаимодействовать. В обязанности представления входит отображение данных из модели, но напрямую не влияет на модель. И, наконец, контроллер - это бизнес-логика приложения, описание реакции на запросы пользователей в разных ситуациях [7]. MVC также имеет некоторые расширения, которые могут представлять схему не только клиентской части, но и серверной, и даже обе (рис. 1.2). Т.е. делит клиентскую и серверную части, в свою очередь, на модель, представление и контроллер для клиента и для сервера. Это делает технологию гибкой и широко применяемой на практике [20].

Следующий паттерн - MVP (рис. 1.3). В данной архитектуре контроллер заменён на презентёра (Presenter). В этом паттерне выделяется интерфейс представления с набором свойств и методов, а презентёр имплементирует этот интерфейс (получает ссылку, обычно в конструкторе), реагирует на события представления и по полученному запросу меняет модель. Каждое представление должно реализовывать соответствующий интерфейс. Логика представления должна иметь ссылку на экземпляр презентёра [7].

Рисунок 1.3. Model-View-Presenter

Паттерн MVVM (рис. 1.4). Каждый слой данной архитектуры абстрагирован от других, т.е. они «не знают» о существовании друг друга. Представление не реализует интерфейс, но должно иметь ссылку на источник данных (View Model). Элементы представления связаны со свойствами и событиями соответствующей ему View-модели. Сама View-модель должна реализовывать интерфейс, предназначенный для автоматического обновления элементов представления [7]

Рисунок 1.4. Model-View-View Model

Ниже представлена сравнительная таблица рассмотренных ранее паттернов (табл. 1.1).

Таблица 1.1. Сравнительная таблица паттернов архитектуры

Критерий

MVC

MVP

MVVM

Основная идея

Контроллер и представление зависят от модели, модель не зависит от двух компонент.

Создание абстракции представления за счёт создания интерфейса.

Связывание элементов представления со свойствами и событиями View-модели.

Использование

Связь между представлениями и другими частями приложения невозможна.

Невозможно связывание данных (Binding).

Возможно связывание данных без необходимости ввода специальных интерфейсов представления (отсутствует необходимость реализации IView).

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

Больше возможностей по управлению представлением.

Необходимо программировать.

Автоматически.

Элемент различия

Контроллер

Презентёр

View-модель

Признаки элемента различия

- определяет, какое представление должно отображаться в текущий момент;

- события влияют только на контроллер, контроллер влияет на модель и меняет представление;

- несколько представлений одного контроллера.

- двустороннее взаимодействие с представлением;

- Представление взаимодействует прямо с презентёром путём вызова соответствующих функций или событий экземпляра презентёра;

- взаимодействие с View происходит за счёт реализации представлением специального интерфейса;

- один экземпляр презентёра связан с одним отображением.

- двустороннее взаимодействие с представлением;

- View-модель - абстракция представления (свойства представления - свойства абстракции);

- нет ссылки на интерфейс представления, т.е. изменение абстракции меняет представление за счёт механизма связывания данных (Binding);

- один экземпляр View-модели - одно отображение.

Степень изученности

Есть опыт работы.

Теоретический опыт.

Теоретический опыт.

Пример

ASP.NET MVC.

Windows Forms.

WPF.

Исходя из данных сравнительного анализа трёх паттернов, был сделан выбор в пользу технологии MVC, потому что, во-первых, есть опыт работы с такой архитектурой, во-вторых, есть чёткое разделение функций каждого элемента архитектуры, в-третьих, данная архитектура является более гибкой в применении на практике и в управлении представлением. Конечно, в процессе разработки каждый из этих паттернов может взаимодополнять друг друга, но основой в работе будет являться архитектура MVC.

1.2 Выбор среды разработки мобильного приложения

Следующим шагом является выбор среды IDE или интегрированной среды разработки. Многие эксперты настаивают на использовании Eclipse IDE, потому что это один из самых больших и умных инструментов. Это очень сложная программа, а не просто блокнот для набора простого текста, поэтому она имеет такие полезные функции, как подсказывание или дополнение конструкций классов, методов, имеющихся в системе разработки и подключённых библиотеках, во время написания кода [13]. Однако этот инструмент слишком «тяжёлый» (много весит), во время его установки и настройки могут возникать трудности.

С другой стороны, есть более дружелюбный Android Studio как среда разработки мобильных приложений. В этой программе мы можем реализовать архитектуру MVC без каких-либо препятствий, с использованием Java, XML и графического представления макета, кнопок, и других элементов пользовательского интерфейса. Android Studio предназначена и создана для разработки программного обеспечения под операционную систему Android [21], в то время как в Eclipse можно создавать программы не только для мобильных устройств. Таким образом, многие программисты, от новичков до профессионалов, программируют в Android Studio из-за масштабируемости проектов, возможности эмулировать гаджеты или осуществлять отладку на реальных устройствах. Кроме того, он имеет интуитивно-понятный интерфейс, внутреннюю систему управления версиями, в отличие предыдущей среды разработки.

В Visual Studio тоже появилась возможность создания приложений под операционную систему Android, однако при попытке опробовать среду, были обнаружены трудности и большие временные затраты на установку Xamarin в Visual Studio. Трудности связаны с установкой и попуткой создания проекта мобильного приложения - появлялись ошибки, которые на момент проверки было не ясно как исправить. Поэтому дальнейшая работа с данным инструментов не продолжалась, а рассматривались предыдущие два варианта сред разработки.

Далее будет приведена сравнительная таблица возможностей Android Studio и Eclipse, основанная на [14] (табл. 1.2).

Таблица 1.2. Сравнение Android Studio и Eclipse

Android Studio

Eclipse

Общие характеристики

Интегрированные среды разработки.

Упрощённое представление структуры проекта, обеспечивая быстрый доступ к коду и файлам сборки.

Улучшенный Графический пользовательский интерфейс (GUI).

Автодополнение кода.

Помогает писать чистый код, без ошибок.

Различия

Специализированная среда разработки Android-приложений.

Широко используется для написания любых приложений на языке Java.

Поддерживается Google

Google перестала осуществлять поддержку.

Android поддерживается.

Android поддерживается за счёт расширения Google ADT.

Есть Gradle Build tool.

Имеет ANT Build tool по умолчанию, но он устарел.

Частые обновления для Android разработки.

Нет частого обновления для Android разработки.

Поддерживает только язык Java, а также язык разметки XML.

Поддерживает C, C++, C#, Java, JavaScript, Perl, PHP, Python и много других языков программирования.

Разработана компанией Google.

Разработана Eclipse Foundation.

Специально разработана для мобильной Android-разработки.

Разработана для создания различных видов приложений.

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

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

1.3 Сравнение существующих сервисов

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

Одно из таких приложений - Runkeeper. Подходит для записи спортивной активности на открытом воздухе с помощью GPS. Это отличное приложение самостоятельного отслеживания тренировок; оно имеет дружелюбный интерфейс, поддерживает 13 языков, пользователь может выбрать спортивную деятельность, есть доступ к истории тренировок, а также можно воспользоваться встроенным музыкальным плеером. Это приложение имеет некоторые недостатки. Например, полная версия приложения стоит дорого, нет смысла использовать в помещении (т.к. необходим сигнал GPS), он не применяет акселерометр [22]. Однако, как было сказано ранее, для ведения дневника велосипедиста не нужно пользоваться GPS, он может быть использован в любом месте в любое время, даже в закрытом помещении. Рекомендации по ведению дневника велосипедиста приведены в книге "Библия велосипедиста" [3, 16], где даны полезные советы по тому, какие параметры должны быть учтены, на что обращать внимание при оценивании прогресса, какие значения зоны сердечного ритма за что отвечают, как спланировать тренировки, чтобы достичь успеха и многое другое.

Другие приложения являются аналогами Runkeeper, например, Strava, Endomondo Sport, Garmin Connect (поддерживает интеграцию с велокомпьютерами Garmin) и др. Либо привязаны к силовым упражнениям, т.е. отслеживают частоту выполнения специальных упражнений на определённую группу мышц, другими словами, являются узко специализированными. Задачи разрабатываемого приложения не могут быть решены существующими на рынке приложениями.

1.4 Особенности мобильной разработки, современные тенденции

Почему именно мобильное приложение? Многие ученые отмечают, что с каждым годом число пользователей смартфонов динамично растет, в основном с 2013 по 2017 год. Кроме того, многие эксперты считают ясным тот факт, что использование смартфона -- это "время- и затрата-экономичное решение" [17]. Что касается количества доступных статистических приложений, он тоже растет, в том числе и в медицинских, и в спортивных, из Google Play и App Store [28].

Таким образом, выбор мобильной разработки оправдан. С другой стороны, процесс получения статистики огромного объема данных может спровоцировать появление ещё одной проблемы, связанной с большими данными (Big data). В большинстве случаев «большие данные» классифицируются как

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

Поэтому разработчикам приходится тщательно продумывать алгоритмы анализа данных, чтобы избежать потери времени и ресурсов, например, памяти, производительности и качества получения результатов подсчета. Однако есть хорошая сторона больших данных, которая состоит в охватывании множества возможных ситуаций, что повышает вероятность точного прогнозирования в различных ситуациях [12]. Одно из решений упрощения работы с большими данными предложили украинские исследователи [15]. Они подчеркнули многофункциональный алгоритм анализа, который включает следующие этапы: экспресс-анализ, комплексный анализ, анализ «ЕСЛИ», и выдача рекомендаций. Этот алгоритм показывает хорошие результаты в разработанном приложении "Smart Mobile Health Navigator".

Следующим шагом в разработке интеллектуального программного обеспечения является использование карманных устройств для сбора данных в базу данных и их использования для подсчета статистики. Эти устройства представляют собой компактный комплект приборов электроники, которые могут непрерывно собирать необходимые данные, получая детальную информацию о тренировке, здоровье человека. В целом, система карманных устройств являются набором, состоящим из трех частей: смартфон в качестве клиента, полученные по Bluetooth, Post-данные и сервер (мобильные данные, доступ в интернет) [26]. В течение последних нескольких лет такие носимые устройства становятся все меньше, и этот факт дает возможность использовать их даже в одежде [19]. Это чудо, что в настоящее время мы можем использовать такие устройства не только в виде коробки, пояса, часов, но и как эпидермальные устройства на основе химических датчиков. Это может показаться фантастическим, но такая технология существует и обеспечивает получение данных из пота путем распознавания натрия, кальция и других элементов. Полученная информация приводит к объективным выводам о способности спортсмена к быстрому восстановлению во время тренировки, например [24].

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

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

Краткое описание существующей системы

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

1.5 Основные положения анализа

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

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

Кто-то использует технологии Google Drive [9] для ведения дневника тренировок уже в более автоматизированной системе, которая помогает более формально записывать результаты по каждой тренировке, делая просмотр более удобным, к тому же использование электронных таблиц позволяет практически без проблем построить нужные графики (рис. 2.1), за исключением таких неудобств, как необходимость постоянно обновлять диапазоны, по которым строятся графики, и выбирать необходимые данные, которые могут быть выбраны неверно, либо отражать не то, что хотел пользователь. Такие недостатки могут быть исправлены в специальном приложении, что планируется сделать в разрабатываемом модуле.

Рисунок 2.1. Графики

Несмотря на все видимые преимущества ведения дневника тренировок в Google Drive либо в другом электронном виде, находятся те [6], кто считает, что лучше вести дневник традиционным способом: в блокноте с ручкой, приводя даже те показатели, которые должны быть учтены в дневнике (табл. 2.1).

Таблица 2.1. Тренировочные показатели

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

О состоянии организма

Другие

Задачи тренировки

Дата

Маршрут

Время начала/окончания

Продолжительность

Расстояние

Общий километраж

Пульс в покое (после пробуждения)

Утренний вес (после душа)

Средняя частота сердечных сокращений после тренировки

Характер тренировки (гора, темп, отрезки, спринт, восстановление)

Средняя скорость

Максимальная скорость

Общее время на велосипеде

Погодные условия (температура, осадки, ветер)

Настроение

Усталость

Замечания/комментарии

Компания Sports Destiny [4] также предоставляет полезную информацию про то, как организовать тренировочную деятельность, и какие параметры стоит учитывать в дневнике: «Стандарт необходимой информации для начинающего спортсмена - количество километров за тренировку, время за которое их проехал, среднюю скорость, общий накат (километраж). Но от тренировки к тренировке, от гонки к гонке спортсмен совершенствуется, набирается опыта и добавляет записи разных категорий в свой дневник: пульс, погода, самочувствие, настроение, интенсивность, наш вес, количество подъёмов за тренировку и т.д.»

Джо Фрил [3, 16] подводит итоги концепции ведения дневника и выделяет его преимущества:

1) Помогает собрать необходимую информацию и проанализировать её.

2) Поддерживает мотивацию спортсмена.

3) Лучший способ фиксации плана тренировок, которые в любой момент могут быть использованы.

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

Помимо теоретического анализа источников были выделены особенности предметной области, например:

1) Разрозненность информации, которые можно разделить на категории, выделить особые характеристики.

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

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

4) Необходимость создания интервальных записей, так как многие тренировки делятся на микроциклы с определённой работой.

На основании выделенных особенностей был проведён опрос потенциальных пользователей - велосипедистов по всей России, чтобы выяснить, какие показатели наиболее востребованы и часто заносятся в дневник тренировок, нужно ли вообще приложение, имитирующее дневник тренировок, какие графики наиболее важны, а также узнать предпочтения к внешнему виду приложения. Этот опрос был проведён в сервисе Google Forms в период с 8 августа 2016 года по 9 января 2017 года.

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

1.6 Проектирование

На данном этапе была построена структура создаваемого приложения (см. рис. 2.2), где иерархия окон - 1 уровень, блоки/элементы в окне - 2 уровень, если третьего уровня нет, элементы в окне - 3 уровень.

Также была построена диаграмма прецедентов (TO BE), все основные необходимые функции и объекты создаваемой системы (см. рис. 2.3) [8].

Рисунок 2.2. Структура приложения

Рисунок 2.3. Диаграмма вариантов использования (UML)

После построения диаграммы прецедентов были даны описания каждого прецедента и построены диаграммы деятельности в нотации UML, которые можно увидеть на рис. 2.4, а также в прил. А рис. 1 - прил. А рис. 9[8]. Для каждого прецедента была построена диаграмма последовательности, чтобы наглядно было понятно, какие действия совершают участники с системой и где необходимо получить ответ от выполненного запроса (см. рис. 2.5, прил. А рис. 10 - прил. А рис. 18) [8].

Рисунок 2.4. Описание прецедента «Добавить тренировку»

Рисунок 2.5. Диаграмма последовательности для прецедента «Добавить тренировку»

Далее был сделан выбор хранилища данных, которым стал SQLite, которая поддерживается всеми устройствами Android, позволяет большое количество данных, не запрашивая большое количество ресурсов. Однако при таком хранилище придётся создавать необходимые таблицы вручную, прописывая все поля, типы, запросу чистым кодом. Для успешного создания базы данных необходимо спроектировать таблицы, поля, связи, что и было сделано, в результате проектирования получилась следующая база данных (см. рис. 2.24).

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

Рисунок 2.6. Схема базы данных

Ниже приведён код создания необходимых таблиц, а также вызов соответствующих методов и заполнение классификаторов [8].

private String createTableRecords() { return "CREATE TABLE " + TABLE_NAME_RECORDS + " (" + CyclistContract.RecordsEntry._ID + " integer primary key autoincrement," + COLUMN_RECORD_DATE + " text not null," + COLUMN_RECORD_ID_FORM_IN_RECORDS + " integer not null," + COLUMN_RECORD_SHORT_DESCRIPTION + " text," + COLUMN_RECORD_NOTES + " text," + COLUMN_RECORD_PLACE + " integer" + ");"; } private String createTableLaps() { return "CREATE TABLE " + TABLE_NAME_LAPS + " (" + _ID + " integer primary key autoincrement," + COLUMN_LAPS_ID_RECORD_IN_LAPS + " integer not null," + COLUMN_LAPS_TIME + " text not null," + COLUMN_LAPS_DESCRIPTION + "text, " + COLUMN_LAPS_ID_FUNCTIONAL_IN_LAPS + " integer," + COLUMN_LAPS_ID_ADDITIONAL_IN_LAPS + " integer," + COLUMN_LAPS_ID_POWER_IN_LAPS + " integer," + COLUMN_LAPS_FEELING + " text," + COLUMN_LAPS_FEELING_MARK + " integer" + ");"; } private String createTableTypes() { return "CREATE TABLE " + TABLE_NAME_TYPES + " (" + _ID + " integer primary key autoincrement," + COLUMN_TYPES_CLASSIFICATION_TYPE + " integer not null" + ");"; //ссылка на строковый ресурс } private String createTableForms() { return "CREATE TABLE " + TABLE_NAME_FORMS + " (" + _ID + " integer primary key autoincrement," + COLUMN_FORMS_ID_TYPE_IN_FORMS + " integer not null," + COLUMN_FORMS_CLASSIFICATION_FORM + " integer not null" + ");"; //ссылка на строковый ресурс } private String createTableFunctionals() { return "CREATE TABLE " + TABLE_NAME_FUNCTIONALS + " (" + _ID + " integer primary key autoincrement," + COLUMN_FUNCTIONALS_PULSE_MAX + " integer," + COLUMN_FUNCTIONALS_PULSE_AVERAGE + " integer," + COLUMN_FUNCTIONALS_PULSE_BEGIN + " integer," + COLUMN_FUNCTIONALS_CALORIES + " integer," + COLUMN_FUNCTIONALS_CADENCE + " integer," + COLUMN_FUNCTIONALS_CAPACITY + " integer" + ");"; } private String createTableAdditionals() { return "CREATE TABLE " + TABLE_NAME_ADDITIONALS + " (" + _ID + " integer primary key autoincrement," + COLUMN_ADDITIONALS_SPEED_MAX + " real," + COLUMN_ADDITIONALS_SPEED_AVERAGE + " real," + COLUMN_ADDITIONALS_DISTANCE + " real," + COLUMN_ADDITIONALS_ACCENT + " real," + COLUMN_ADDITIONALS_DESCEND + " real" + ");"; } private String createTablePowers() { return "CREATE TABLE " + TABLE_NAME_POWERS + " (" + _ID + " integer primary key autoincrement," + COLUMN_POWERS_SERIES + " integer," + COLUMN_POWERS_REPETITION + " integer," + COLUMN_POWERS_WEIGHT + " real" + ");"; }

@Override public void onCreate(SQLiteDatabase db) { db.execSQL(createTableRecords()); db.execSQL(createTableLaps()); db.execSQL(createTableTypes()); db.execSQL(createTableForms()); db.execSQL(createTableFunctionals()); db.execSQL(createTableAdditionals()); db.execSQL(createTablePowers()); ContentValues cv = new ContentValues(); cv.put(COLUMN_TYPES_CLASSIFICATION_TYPE, R.string.type_training); db.insert(TABLE_NAME_TYPES, null, cv); cv.put(COLUMN_TYPES_CLASSIFICATION_TYPE, R.string.type_competition); db.insert(TABLE_NAME_TYPES, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_bench); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_bmx); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_bmxrace); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_coordination); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_cyclocross); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_cyclocrossrace); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_mtb); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_mtbrace); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_road); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_roadrace); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_running); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_skating); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_skiing); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_skiingrace); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_swimming); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_swimming_time); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_track); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_trackrace); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_uptoskijump); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_weightliftingexercises); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_figure); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_games); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_other); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_other); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 2); db.insert(TABLE_NAME_FORMS, null, cv); cv.put(COLUMN_FORMS_CLASSIFICATION_FORM, R.string.form_weightliftingexercises); cv.put(COLUMN_FORMS_ID_TYPE_IN_FORMS, 1); db.insert(TABLE_NAME_FORMS, null, cv); Log.d("db", "База данных создана!"); }

1.7 Реализация

На этом этапе были созданы окна приложения, Splash Screen Splash Screen - окно, появляющееся при запуске приложения, чтобы не ожидать запуска приложения, смотря на чёрный экран. (рис. 2.25), прорисованы иконки для кнопок (в трёх вариантах: по умолчанию, при нажатии, при наведении, например, стилусом Стилус - устройство для взаимодействия с дисплеем телефона без помощи пальцев, что помогает выполнить более точное попадание по элементу экрана, а также избежать отпечатки пальцев.), настроены действия для всех кнопок (рис. 2.26).

Для создания анимации на Splash Screen пришлось преобразовать GIF-картинку в поток байтов и записать его в специальный объект gifImageView, позволяющий работать с анимациями [8].

В источнике [8, стр. 41-42], можно также узнать, как работать с разработанным модулем: что нужно нажать для добавления записей, где выбирать необходимые показатели, куда их записывать и т.д.

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

Алгоритм работы с приложением на данном этапе строится следующим образом:

1. Выбор даты тренировки.

2. Ввод данных (подробнее этот пункт расписан в [8, стр. 43]).

3. Сохранение/отмена/изменение/удаление данных.

4. При сохранении данных выполняется проверка правильности введённых данных, попытка сохранения данных.

4.1. Сохранение данных, в случае прохождения всех проверок.

4.2. Отображение ошибки, если проверка не пройдена.

5. При отмене окно закрывается, данные не сохраняются.

6. Есть возможность изменения сохранённых ранее данных, путём нажатия на интересующую область.

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

1.8 Подведение итогов и дальнейшая работа

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

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

До непосредственной разработки необходимо протестировать приложение и исправить ошибки, либо неточности, которые могут появиться при использовании приложения. Например, на данный момент следует исправить отображение столбцов при просмотре отдельной тренировки: если был заполнен столбец «Вес», то при просмотре, этот столбец не появляется в строке заголовков таблицы, следовательно, сама таблица немного «съезжает». Также стоит сделать ввод интервальных параметров «по желанию», т.е. если их нужно ввести пользователю, то он нажимает кнопочку, пусть это будет «+», и затем появляется таблица, для записи интервальных значений. Ещё одним замечанием стоит выделить - необходимость в заполнении общего времени, ЧСС, скорости без ввода других параметров, т.к. иногда, например, на силовых тренировках требуется один раз заполнить общее время тренировки и ЧСС вне зависимости от подходов на тренажёрах.

Технологии и методы

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

1.9 Описание технологий и методов

Изначально идея создания аналитического модуля ассоциировалась с современным направлением в IT - нейросетевыми технологиями, однако ввиду их новизны, малой изученности и критике, связанной с недостоверностью результатов, сложностью нахождения хорошей библиотеки для разработки и др., было решено отказаться на время от нейросетей и воспользоваться более простыми, но проверенными средствами [2, 10, 11].

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

Второй метод - использование общедоступной библиотеки для построения графиков при Android разработке. Существует множество доступных библиотек для построения графиков на Android, среди них такие как: GraphView [18], MPAndroidChart [23], WilliamChart [25]. Перед тем как выбрать подходящую библиотеку было проведено их сравнение на основе общих данных, имеющихся в открытом доступе, документация, простота библиотеки и рекомендации разработчиков. Результаты анализа см. табл. 3.1.

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

Таблица 3.1. Сравнение библиотек для построения графиков

Критерий

GraphView

MPAndroidChart

WilliamСhart

Описание (документация)

Достаточное, есть обучающие примеры

Достаточное, есть обучающие примеры

Недостаточное

Наличие официального сайта (поддержка)

Есть сайт, GitHub

Всё необходимое на GitHub

Только исходный код на GitHub

Сложность библиотеки

Простая

Сложная

Простая

Возможности использования библиотеки

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

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

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

Рекомендации разработчиков

Для небольших программ, с целью обучения

Достаточно серьёзная библиотека для продвинутых пользователей и решения сложных задач

Мало отзывов

Степень разработанности

Завершена + обновления, используется во многих приложениях.

Завершена + обновления, используется во многих приложениях

В разработке

Наличие лицензии

+

+

+

1.10 Библиотека GraphView

Из особенностей библиотеки можно выделить следующие:

1. Графики можно создавать как в коде, так и через XML разметку.

2. Есть 3 вида графиков - линейный, точечный и столбчатый, а также можно эти графики сочетать на одной диаграмме.

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

4. Можно масштабировать график и перемещаться по осям координат.

5. Есть возможность добавления вспомогательной оси для лучшего восприятия взаимодействия параметров разного числового диапазона.

6. Есть возможность обработки нажатия на точку графика.

7. Ось абсцисс может быть представлена как дата.

8. Можно настраивать легенду, подписи к осям, цвета элементов диаграммы по желанию разработчика/пользователя.

9. Возможность использовать статические/динамические метки на осях.

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

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

Серии (Series). Это класс, используемый для заполнения графика данными. Одна серия содержит точки одной «линии», которая может быть использована для прорисовки линии, точки, или столбца. Простые графики имеют только дну серию, а при добавлении нескольких серий к одной диаграмме, график будет содержать список добавленных серий, которые можно настраивать в дальнейшем. Чтобы определить тип графика нужно определить подкласс Серий: LineGraphSeries (линейная), PointsGraphSeries (точечная), BarGraphSeries (столбчатая).

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

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

1.11 Итог по выбору технологий и методов

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

Реализация системы и её компонентов

1.12 Проверка учётного модуля

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

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

Метод создания ячеек программно:

private TextView setHeader(String name) { TextView tv = new TextView(this, null, R.attr.customTextViewStyleForCell); int padding = getResources().getDimensionPixelSize(R.dimen.header_textView_padding); tv.setPadding(padding, padding, padding, padding); if (name.contains("ЧСС") || name.contains("HR") || name.contains("Скорость") || name.contains("Speed")) tv.setTextAppearance(R.style.cellHeaderStylePulse); else tv.setTextAppearance(R.style.cellHeaderStyle); tv.setBackgroundColor(getColor(R.color.colorBackground)); tv.setGravity(Gravity.CENTER); tv.setText(name); tv.setVisibility(View.GONE); return tv; }

Затем в некоторых точках программы были исправлены вызовы методов для добавления/изменения/удаления записи из БД. Добавлены дополнительные переменные для исправления неправильной логики выполнения программы.

Также был оптимизирован сам код: вместо повторяющихся фрагментов кода были введены циклы, для этого было необходимо ввести дополнительные переменные массивов управляющих элементов окна, списки массивов и т.п. Это позволило унифицировать часть кода, которая выполняется для нескольких ячеек, например, аналогичным образом, т.е. устанавливает для будущей ячейки таблицы текст - название столбца, добавляет/удаляет эту ячейку относительно выбранного «чекбокса» (CheckBox - элемент, в которую ставится галочка при необходимости выбора того или иного параметра) и т.п.

...

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

  • Проектирование базы данных для автоматизации деятельности по учету автотранспорта ГИБДД Вяземского района. Выбор инструментария для разработки базы данных и приложения по её ведению. Описание интерфейса и физической структуры приложения баз данных.

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

  • Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.

    отчет по практике [1,2 M], добавлен 08.10.2014

  • Разработка моделей данных информационной системы Сall-центра с применением CASE-технологии. Персонал и его функции. Регистрирование заявок в режиме реального времени. Построение диаграммы потоков данных DFD. Список документов и инфологическая модель.

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

  • Логическая и физическая модели базы данных. Запрет на содержание неопределенных значений. Размещение базы данных на сервере. Реализация клиентского приложения управления базой данных. Модульная структура приложения. Основные экранные формы приложения.

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

  • Обзор мобильной операционной системы ios: Архитектура ОС iOS; уровень библиотек; среды разработки приложения (Xcode, Xamarin). Доступ к информации колледжа "Угреша". Требования к мобильному приложению. Подготовка среды разработки. Тестирование приложения.

    дипломная работа [5,6 M], добавлен 10.07.2014

  • Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.

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

  • Постановка задач и требований к проектируемому интернет-приложению. Обоснование выбора системы управления базы данных и языков программирования. Разработка архитектуры заданного интернет-приложения, технико-экономическое обоснование его эффективности.

    дипломная работа [461,3 K], добавлен 24.02.2013

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

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

  • Разработка базы данных и приложения для автоматизации ведения кадрового учёта предприятия. Формирование таблицы анкетных данных. Разработка графического интерфейса пользователя клиентских приложений. Возможность подключения к удаленной базе данных.

    дипломная работа [47,6 K], добавлен 17.02.2009

  • Разработка информационной системы учёта данных о клиентах, товарах и услугах в среде MS Access. Технология функционирования существующей ИС компьютерной компании. Модификация инфологической модели БД, проектирование новых экранных форм и отчетов.

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

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

    дипломная работа [791,8 K], добавлен 10.07.2017

  • Аналитический обзор целевой аудитории. Создание и заполнение базы данных с помощью Microsoft Access. Разработка интерфейса и функций рабочей области. Построение форм. Функциональные требования к приложению. Его тестирование по методике чёрного ящика.

    дипломная работа [1,6 M], добавлен 09.11.2016

  • Статистическая обработка первичной маркетинговой информации. Определение общих параметров выборки. Составление схемы кодировки анкеты. Способы формирования базы данных в формате SPSS. Ввод данных в компьютер. Кодирование переменных. Модификация данных.

    презентация [533,9 K], добавлен 24.02.2015

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

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

  • Рассмотрение основных принципов и методов проектирования систем реального времени. Описание конструктивных и функциональных особенностей объекта управления, построение диаграммы задач. Выбор аппаратной архитектуры, модели процессов-потоков, интерфейса.

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

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

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

  • Проектирование базы данных "Деканат" в среде MySQL и разработка многопользовательского приложения с целью хранения информации о студентах и учета их успеваемости. Построение графиков оценок по предметам в спроектированной информационной системе.

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

  • Разработка приложения для осуществления работы с медицинскими данными с последующей их визуализацией. Изучение типов данных и свойств полей Access. Компоненты наборов данных. Структура базы данных для клиники. Экранные формы для отображения справочников.

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

  • Разработка приложений баз данных Delphi. Построение концептуальной модели, атрибуты сущностей и связей. Проектирование приложения для ведения базы данных телефонных номеров с возможностью поиска по всем имеющимся полям. Тестирование программного средства.

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

  • Разработка приложения Win32, с помощью которого можно получить атрибуты файла (функция GetFileAttributes). Определение даты и времени создания, последнего доступа и последней записи данных в файл. Получение информации о файле по его идентификатору.

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

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