close

Вход

Забыли?

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

Мазур Глеб Андреевич. Разработка мобильного приложения «Багаж путешественника»

код для вставки
Powered by TCPDF (www.tcpdf.org)
АННОТАЦИЯ
ВКР 84 с., 25 рис., 3 табл., 31 источник, 2 прил.
АВТОМАТИЗАЦИЯ,
ANDROID-ПРИЛОЖЕНИЕ,
МЕРОПРИЯТИЕ,
ПОЕЗДКА,
СПИСОК
ДЕЛ,
СПИСОК
БАГАЖ,
ВЕЩЕЙ,
ОРГАНИЗАЦИЯ
ПОЕЗДКИ.
Выпускная квалификационная работа посвящена разработке androidприложения позволяющего автоматически формировать список вещей в поездку.
В первой главе была описана предметная область для процесса составления
списка вещей в поездку, осуществлен обзор аналогов и средств, позволяющих
составлять данный список. После были поставлены задачи исследования и
выявлены требования к приложению.
Во второй главе были выбраны операционная система для которой будет
разрабатываться
приложение
и
средства
реализации
приложения.
Были
спроектированы общая архитектура приложения и база данных, описана логика
диалога с пользователем.
В третьей главе был разработан дизайн приложения, который в последствии
был реализован. Также были разработаны алгоритмы, необходимые для
реализации функциональных требований и запросы к базе данных.
4
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
5
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И ПОСТАНОВКА ЗАДАЧИ
РАЗРАБОТКИ ПРИЛОЖЕНИЯ «БАГАЖ ПУТЕШЕСТВЕННИКА»
7
1.1 Описание предметной области
7
1.2 Обзор аналогов и прототипов
13
1.3 Постановка задачи разработки приложения для составления списка вещей в
поездку
27
2 РАЗРАБОТКА ПРИЛОЖЕНИЯ, АВТОМАТИЗИРУЮЩЕГО СОСТАВЛЕНИЕ
СПИСКА ВЕЩЕЙ В ПОЕЗДКУ
30
2.1 Выбор платформы и средств реализации
30
2.2 Проектирование архитектуры системы для составления списка вещей в
поездку
36
2.3 Проектирование базы данных
38
2.4 Описание логики диалога с пользователем
44
3 РЕАЛИЗАЦИЯ ПРИЛОЖЕНИЯ «БАГАЖ ПУТЕШЕСТВЕННИКА»
50
3.1 Разработка дизайна приложения
50
3.2 Особенности программной реализации приложения
58
ЗАКЛЮЧЕНИЕ
69
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
71
ПРИЛОЖЕНИЕ А «РЕАЛИЗАЦИЯ СЛАЙДЕРА»
74
ПРИЛОЖЕНИЕ Б «РЕАЛИЗАЦИЯ АЛГОРИТМА ПОДСЧЕТА
РЕКОМЕНДУЕМОГО КОЛИЧЕСТВА ВЕЩЕЙ В ПОЕЗДКУ»
УДОСТОВЕРЯЮЩИЙ ЛИСТ № 140030
79
Error! Bookmark not defined.
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА ДОКУМЕНТА НА
ЭЛЕКТРОННОМ НОСИТЕЛЕ
Error! Bookmark not defined.
5
ВВЕДЕНИЕ
Жизнь любого человека состоит из воспоминаний и впечатлений, которые
могут разниться в зависимости от способов их получения. Наверное, лучшим
способом ощутить всю полноту жизни является путешествие.
Путешествия
–
это
увлекательное
времяпрепровождение,
которое
насыщено яркими и запоминающимися эмоциями и впечатлениями. Одни люди
готовы оставить уютные дома, привычный уклад жизни, чтобы окунуться в
водоворот нового и интересного. Другие боятся оставить свой родной дом и не
рискуют пробовать что-то новое.
Туризм играет важнейшую роль в жизни многих людей, а для некоторых
он является смыслом жизни. Миллионы людей каждый месяц совершают поездки
в другие города и страны, чтобы насладиться видами превосходных пейзажей,
возможностью общения с самыми разнообразными людьми, знакомиться с их
культурой, языком, обычаями, кухней. Индустрия туризма является для многих
стран центральным источником дохода, в неё вкладываются огромные средства и
силы, а миллионы людей строят на этом свой частный бизнес, вплоть до такого
уровня, как заказ частного самолета.
Любой начинающий и даже опытный турист и путешественник проходит
несколько этапов, прежде, чем отправиться в приключение. Это выбор места,
выбор времени, выбор способа передвижения и другие вопросы, которые
необходимо решить перед успешным отдыхом.
В настоящее время, вся необходимая путешественнику информация
существует в интернете или на электронных ресурсах. Сегодня насчитываются
сотни созданных специально для туристов приложений и сайтов: одни помогут
спланировать поездку или помочь сориентироваться на месте, другие выручат при
возникновении нештатных ситуаций, обучат языку и традициям, третьи
расскажут куда сходить и на какие достопримечательности посмотреть.
Любой человек перед поездкой задается вопросом о том, что нужно взять с
собой. Для ведения списков необходимых вещей для поездки также существуют
уже готовые интерактивные таблицы с типовыми вариантами, можно составить
6
свою таблицу в Excel и сохранить на компьютере или воспользоваться
мобильным приложением или сайтом.
Из-за большого выбора функций, программы для составления списка
вещей в поездку являются наиболее удобными. Составление списка происходит
по критериям, которые выбирает пользователь. Все списки можно сохранить,
отредактировать, обновить и использовать в любой подходящий момент, даже по
возвращению домой для контроля целостности багажа. И главное достоинство
приложения в том, что оно сохраняет время пользователя, позволяя составить
наиболее полный список вещей за небольшой промежуток времени.
Целью данной работы является автоматизация процесса составления
списка вещей в поездку с последующей возможностью контроля, обновления и
редактирования списка для путешествия. Для достижения указанной цели
необходимо решить следующие задачи:
 описать предметную область для процесса составления списка вещей в
поездку;
 произвести
анализ
существующих
средств
и
приложений
для
составления списка вещей;
 сформировать требования для приложения «Багаж путешественника»,
позволяющие автоматически формировать список вещей в поездку с учетом
критериев пользователя;
 осуществить выбор платформы, для которой будет разработано
приложение «Багаж путешественника»;
 осуществить
проектирование
архитектуры
разрабатываемого
приложения;
 спроектировать базу данных с учетом сформулированных требований;
 разработать приложение «Багаж путешественника».
7
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И ПОСТАНОВКА ЗАДАЧИ
РАЗРАБОТКИ ПРИЛОЖЕНИЯ «БАГАЖ ПУТЕШЕСТВЕННИКА»
1.1 Описание предметной области
Большинство путешествий, будь то отпуск за границей, плановая
командировка или поход на природу, состоят из нескольких этапов. Вначале
сборы, дорога, обустройство на месте, развлечения или дела, а затем – все
повторяется в обратной последовательности, вплоть до возвращения домой.
Решение текущих задач становится намного проще, а отдых приятнее, если знать,
что необходимо взять с собой, а что – оставить дома.
Начинать собирать чемодан лучше заранее, так как некоторые вещи могут
нуждаться в обновлении, а некоторых предметов, важных для поездки, может
вообще не быть. Для того чтобы оптимально упаковать чемодан, необходимо
составить список вещей в поездку и ориентироваться по нему. При составлении
такого списка любой человек может столкнуться с одной из следующих проблем.
Первая проблема связана с выбором необходимых вещей и ее решение
заключается в том, чтобы обобщенно разбить необходимые вещи на типы или
категории и позже детализировать их [28].
В случае, если поездка планируется в какой-либо город или страну с целью
отдыха или работы, то к самым важным категориям можно отнести:
1) документы, банковские карты, деньги (паспорт, загранпаспорт, билеты,
кредитные карты и др.);
2) средства личной гигиены (полотенце, щетка, зубная паста и др.);
3) средства оказания медицинской помощи (жаропонижающие таблетки,
таблетки от укачивания, заживляющие мази и др.);
4) устройства
и
комплектующие
(фотоаппарат,
телефон,
зарядные
устройства и др.);
5) одежда и обувь (верхняя одежда, теплая одежда, шорты, кроссовки и
др.);
6) еда (питьевая вода, шоколад, печенья и др.);
8
7) прочие мелочи (нитки с иголкой, фонарик, швейцарский нож, батарейки
и др.).
Многие люди предпочитают городу, экскурсиям и благам цивилизации
более экстремальный отдых или просто поход на природу. В таком случае к
вышеупомянутым категориям стоит добавить:
1) инструменты и посуду (топор, веревка, кружка, мангал и др.);
2) вещи для ночлега (палатка, спальный мешок, тент и др.);
3) специальные вещи (альпинистское оборудование, страховочное тросы,
оружие и др.).
Правильному выбору вещей может помочь разделение списка по
приоритетам. В первую очередь необходимо подумать о том, без чего невозможно
провести отдых в целом (документы, деньги, минимум одежды и др.). Такие
предметы необходимо внести в список в самом начале его формирования и при
упаковке вещей сложить их в первую очередь [8].
В дальнейшем, если позволяет размер багажа, можно думать о комфорте и
дополнительно внести в перечень те вещи, которые помогут по-настоящему
насладиться отдыхом (дополнительная пара обуви, платье, ноутбук, книги и др.).
В случае, если при упаковке вещей не хватает места на вещи из наиболее
приоритетных, необходимо в первую очередь выложить те предметы, которые
необходимы только для более комфортного отдыха.
Вторая проблема связана с определением оптимального количества
предметов и для ее решения необходимо определиться с размером багажа и
сроками поездки. Если поездка осуществляется на автомобиле, то соответственно
можно позволить себе взять гораздо больше вещей, чем если организуется пеший
поход с рюкзаками, велопробег или даже передвижение на поезде или самолете.
На количество вещей влияет и срок поездки.
Не стоит забывать простые правила, которые помогут определить
оптимальное количество вещей для путешествия. Количество верхней одежды
(платья, рубашки, футболки) будет соответствовать количеству дней отдыха за
вычетом одного дня (в день прилета и отлета можно надеть одно и то же). В
9
поездку лучше взять как минимум две пары комфортной обуви, и одну пару на
случай непредвиденных обстоятельств. Штанов, джинсов, юбок нужно брать в
два раза меньше, чем количество верхней одежды, а нижнего белья, наоборот,
больше, следуя принципу: чем длинней путешествие, тем больше белья [3].
В случае если организуется активный отдых, пеший поход или
велоэкскурсия, то при определении оптимального количества вещей стоит
помнить, что все вещи, которые будут взяты с собой придется нести лично.
В случае, когда срок поездки составляет неделю или даже меньше, лучше
взять вещей с небольшим запасом, если это позволяет размер багажа. Стоит
учитывать и тот факт, что некоторые вещи могут выдаваться или приобретаться
на месте. Если проживание осуществляется в отеле, доме или у друзей, то стоит
помнить о возможности воспользоваться стиральной машинкой или прачечной
[8].
Не стоит забывать о чрезвычайных ситуациях, от которых полностью
невозможно застраховать себя. Среди них можно выделить резкое изменение
погоды, выход из строя устройства, повреждение одежды или кража. Поэтому при
формировании списка стоить учитывать данные факторы, и попытаться
обезопасить себя, взяв и распределив вещи так, чтобы избавить себя от
большинства негативных факторов, которые могут произойти в путешествии.
Третья проблема заключается в том, чтобы не забыть взять или сделать
что-то важное перед поездкой. Решение третьей проблемы складывается из
нескольких условий.
Первое из них – это не забыть вещи, необходимые для путешествия. Стоит
изучить особенности места, которое планируется посетить, специфику культуры,
погоды и даже рельефа. С учетом данных характеристик необходимо дополнить
список соответствующими вещами или убрать лишние, а также отредактировать
их количество. Также стоит производить отметки тех вещей, которые уже
укомплектованы в багаже, или тех, которые необходимо приобрести перед
поездкой.
10
Не забыть вещи поможет разделение списка на несколько частей:
1) к первой части стоит отнести те вещи, которые есть в наличии, их
состояние отличное или хорошее, а функции и свойства полностью реализуются
(разного вида одежда и приспособления, устройства, лекарства и др.);
2) ко второй части можно отнести те вещи, которых нет и их необходимо
докупить или те вещи, которые есть, но их состояние неудовлетворительное
(лекарства, средства гигиены, одежда, устройства и др.);
3) к третьей части можно отнести те вещи, которые можно позаимствовать
у родных, друзей или знакомых (устройства, походные принадлежности и др.).
Второе условие – это выполнить необходимые действия, перед поездкой.
Их также можно разбить на категории: общие дела (отключить электрические
приборы из сети, позаботиться о домашних животных или растениях, оставить
свои контактные данные соседям для связи с вами и др.) и специфические
(забронировать билеты, оформить визу или загранпаспорт, обновить карты
маршрута и др.) [8].
Четвертой проблемой является упаковка вещей в багаж. При решении этой
проблемы необходимо учитывать ряд правил, которые не только помогут
рационально использовать место своего чемодана, но и могут позволить положить
в багаж что-то дополнительно.
Никто не застрахован от потери багажа поэтому необходимо сложить
несколько самых необходимых вещей в ручную кладь. Также стоит оставить
запас места на сувениры и покупки, которые добавятся на обратном пути.
В настоящее время все больше распространяется активный отдых или
отдых с выездом на природу. Многие праздники, дни рождения и выходные
проводятся не в ресторанах и торговых центрах, а на берегу озера или опушке
леса. Чаще всего такой отдых заранее не согласовывается, может быть
спонтанным, или поздно запланированным, что зачастую приводит к его плохой
организации.
11
В сложившейся ситуации выходом также является заранее составленный
список вещей. Его главными отличиями и особенностями являются:
1) вещи берутся на компанию (скатерть, мангал, одеяло и др.);
2) большое количество расходных материалов (дрова, еда, одноразовая
посуда и др.);
3) большое
количество
вещей
развлекательного
характера
(гитара,
музыкальная аппаратура, надувной матрац и др.);
4) малое количество личных вещей (одежда, средства гигиены и др.) из-за
малого срока поездки (от пары часов до нескольких дней).
Особую нагрузку при таком виде отдыха испытывает организатор, так как
именно ему необходимо скоординировать большое количество людей, учесть
особенности поездки, рассчитать число необходимых вещей и ресурсов. Для
такого вида отдыха большое значение имеет коммуникация, так как зачастую
конечный список формируется в большей степени из вещей тех, с кем
запланирован отдых.
На основе этих данных можно составить описание предметной области и
построить диаграмму вариантов использования для нашей системы, как показано
на рисунке 1.
Диаграмма вариантов использования в UML — диаграмма, отражающая
отношения между актёрами и прецедентами и являющаяся составной частью
модели прецедентов, позволяющей описать систему на концептуальном уровне.
Прецедент
функциональности),
—
возможность
благодаря
моделируемой
которой
системы
пользователь
может
(часть
её
получить
конкретный, измеримый и нужный ему результат. Прецедент соответствует
отдельному сервису системы, определяет один из вариантов её использования и
описывает типичный способ взаимодействия пользователя с системой. Варианты
использования обычно применяются для спецификации внешних требований к
системе.
12
Рисунок 1 – Диаграмма вариантов использования разрабатываемой системы
13
1.2 Обзор аналогов и прототипов
Перед началом реализации приложения необходимо рассмотреть аналоги,
чтобы не допустить недочетов и создать более выигрышную программу для
создания списка вещей в поездку.
Аналог – это объект (техническое решение) того же назначения, близкий
по совокупности существенных признаков [13]. Аналоги выбранной системы
можно разделить на два вида.
К первому виду можно отнести те способы составления списков, которые
требуют от пользователя определённых знаний, навыков и времени. В таких
случаях пользователь составляет список при помощи выбора тех или иных
предметов
из
справочника
или
самостоятельно
прописывая
название
необходимых предметов. К таким аналогам можно отнести лист бумаги и ручку,
Microsoft Excel, а также приложение «Упакуй чемодан!».
Самым простым способом создать список в поездку является простой лист
бумаги и ручка. Основными достоинствами данного способа является:
1) дешевизна составления списка;
2) большой функционал при разработке списка (возможность составлять
несколько списков, разделять на группы, делать заметки, менять количество
вещей и др.);
3) быстрый доступ к списку вещей;
4) учет большого количества критериев и особенностей;
5) возможность контролировать процесс сбора вещей в поездку;
6) простота ведения и редактирования списка.
К недостаткам данного способа стоит отнести:
1) большие затраты времени на составление полного списка;
2) необходимый опыт и знания составления таких списков;
3) слабая защищенность списка (подверженность большому количеству
внешних воздействий).
Microsoft Excel – программа для работы с электронными таблицами,
созданная корпорацией Microsoft [15]. Microsoft Excel позволяет реализовать
14
список вещей в поездку, так как он (список) представляет собой таблицу, в
которой столбцы представлены названием вещи, ее количеством, стоимостью и
другими критериями, а строками являются сами вещи. Пример того, как может
быть организовано ведение списка вещей с использованием Microsoft Office
представлен на рисунке 2 [25].
Рисунок 2 – Пример списка вещей в поездку, реализованный при помощи
Microsoft Excel
Основными
достоинствами
данного
программного
продукта
при
составлении списка вещей в поездку являются:
1) большой функционал при разработке списка (возможность составлять
несколько списков, разделять на группы, делать заметки, менять количество
вещей и др.);
2) быстрый доступ к списку вещей (возможность преобразовать в другие
форматы или использовать в электронном виде);
3) учет большого количества критериев и особенностей;
4) возможность контролировать процесс сбора вещей в поездку;
15
5) возможность быстрого расчета математический данных (стоимость
вещей, срок поездки);
6) возможность использовать фильтры, группировки и условия, при
составлении списка вещей;
7) возможность создавать большое количество списков, которые при
необходимости могут быть взаимосвязаны друг с другом;
8) удобство интерфейса;
9) простота ведения и редактирования списка.
Однако, использование данного способа составления списка вещей в
поездку имеет и недостатки:
1) большие затраты времени на составление полного списка;
2) необходимый опыт и знания составления таких списков;
3) необходимый
опыт
при
использовании
определенных
функций
Microsoft Excel.
Приложение «Упакуй Чемодан!» – это удобный помощник по сбору
багажа в дорогу. «Упакуй чемодан» поможет легко и быстро составить
контрольный список в дорогу, благодаря всплывающим подсказкам и выбору
вещей из каталога. Также данное приложение производит подсчет стоимости
купленных товаров. Данное приложение имеет более 10 тысяч скачиваний в
Google Play и среднюю оценку 4,4 звезды. Интерфейс приложения представлен на
рисунке 3 [21].
Основными достоинствами данного приложения являются:
1) синхронизация списков;
2) простой ввод продуктов, количества и стоимости;
3) поддержка категорий товара;
4) неограниченное количество списков;
5) редактор товаров;
6) автоматическая группировка продуктов в списке;
7) новые товары и цены запоминаются автоматически;
8) возможность подсчета стоимости товаров;
16
9) экспорт и импорт списков;
10) возможность считывать штрих-коды с товаров;
11) возможность голосового ввода названия вещи и всплывающие
подсказки при ручном вводе;
12) возможность помечать вещь как важную и оставлять заметки.
а)
б)
Рисунок 3 – Интерфейс приложения «Упакуй чемодан!» (а – экран
сформированного списка; б – экран редактирования списка)
Однако, данное приложение имеет и недостатки:
1) формирование списка производится вручную, большое количество
времени требуется для поиска нужной вещи, если использовать каталог;
2) сильно нагруженный интерфейс, некоторые его элементы вызывают
неудобство;
3) список всегда формируется по названию даты, нет возможности выбрать
количество дней, которые будут проведены в поездке;
17
4) в приложении нельзя разделить список на подсписки (список покупок,
список заимствованных вещей и др.), нет возможности посмотреть, где можно
приобрести недостающую вещь;
5) малый набор вещей для отдыха за пределами своей страны (популярные
предметы для данной категории отсутствуют, к примеру отсутствуют плавки,
зимняя одежда, предметы, касающиеся спорта).
Вторым видом аналогов являются приложения, программы или сайты,
которые автоматически создают список с учетом критериев, которые выбрал
пользователь или предоставляют уже готовые общие списки. В данном случае
пользователю необходимо только внести коррективы с учетом индивидуальных
особенностей. В таких списках также присутствует возможность добавлять
недостающие предметы, даже если они не учтены в системе. Примерами данного
вида аналогов являются: сайт «В дорогу» и приложения «PackKing», «PackPoint»
и «uPackingList».
Сайт «В дорогу» (v-dorogu.com) предоставляет возможность составить
список необходимых для поездки вещей и дел бесплатно. Кроме этого,
предлагается большое количество статей о туризме, в которых много полезной
информации: где лучше отдохнуть, какие деньги взять на отдых, как сэкономить,
как не попасть в неприятную ситуацию. Для того чтобы составить список вещей в
путешествие или поездку, достаточно воспользоваться фильтром (рисунок 4):
выбрать цель и длительность поездки, указать, с кем едете, на чем добираетесь,
где будете жить, и какая ожидается погода [2].
Преимуществами данного вида составления списка является:
1) быстрота формирования списка;
2) большой выбор критериев поездки;
3) легкость редактирования и возможность добавления новых пунктов и
групп вещей в список;
4) возможность поделиться списком с друзьями и знакомыми;
5) возможность преобразовать сформированный список в другой формат
(.docx или .pdf);
18
6) мониторинг готовности собранного чемодана;
7) дополнительный список по советам в поездку и по делам, которые
необходимо сделать перед путешествием;
8) приятная цветовая палитра и удобство интерфейса;
9) список статей, которые могут помочь в формировании списка и
дальнейшей поездке.
Рисунок 4 – Страница сайта v-dorogu.com при формировании списка вещей
Сайт предоставляет возможность отредактировать список при желании, а
также сохранить в формате PDF или распечатать. Пример сформированного
списка вещей можно увидеть на рисунке 5.
Проанализировав
полученный
список,
можно
выявить
следующие
недостатки:
1) сформированной список является неполным, отсутствуют даже самые
необходимы вещи (денежные средства, карты, пена для бритья, зубная щетка и
др.);
2) не осуществляется учет размера багажа и количества вещей;
19
3) нет возможности разделить список на подсписки (список покупок,
список заимствованных вещей и др.) и нельзя посмотреть, где можно приобрести
недостающую вещь;
4) сайт не
предоставляет
возможности
формировать
список,
если
пользователь является организатором поездки (указание ответственных лиц или
возможность контроля исполнения поручений);
5) нет возможности узнать прогноз погоды в планируемый срок поездки;
6) для доступа к списку и его редактирования необходим доступ к
интернету.
Рисунок 5 – Пример списка, сформированного сайтом v-dorogu.com по критериям
Приложение «PackPoint» – это бесплатное приложение для создания
списков вещей в дорогу и управления ими. Оно способно подсказать, какие вещи
понадобятся в поездке в зависимости от ее длительности и целей. Данное
20
приложение имеет более 500 тысяч скачиваний в Google Play и среднюю оценку
4,6 звезды. Интерфейс приложения представлен на рисунке 6 [22].
а)
б)
Рисунок 6 – Интерфейс приложения «PackPoint» (а – изменение целей поездки;
б – сформированный список вещей)
Основными достоинствами данного приложения являются:
1) возможность выбора конкретного города для путешествия;
2) приложение без участия пользователя узнает прогноз погоды на дату
поездки и подбирает список вещей с ее учетом;
3) возможность указания своих планов, вида транспорта, вида поездки и
частоту стирок;
4) возможность удаления, добавления элементов, а также можно отмечать
в списке вещи, которые уже укомплектованы и быстро изменять их количество
при помощи элемента интерфейса;
5) учет пола пользователя при составлении списка;
6) возможность изменить список вещей с помощью добавления действий в
уже сформированном списке;
7) возможность создавать несколько списков вещей;
21
8) возможность получать уведомления о списке вещей в поездку;
9) возможность поделиться списком с друзьями и знакомыми;
10) приятная цветовая палитра и удобство интерфейса.
Однако, данное приложение имеет и недостатки:
1) приложение не учитывает размер багажа, количество вещей зависит от
количества дней в поездке (30 дней = 30 комплектов предметов), также не для
всех вещей осуществляется подсчет нужного количества;
2) в приложении нельзя разделить список на подсписки (список покупок,
список заимствованных вещей и др.), нет возможности посмотреть, где можно
приобрести недостающую вещь, отсутствует функция, позволяющая делать
заметки для каждой вещи;
3) приложение не предоставляет возможности формировать список, если
пользователь является организатором поездки (указание ответственных лиц или
возможность контроля исполнения поручений);
4) в приложении отсутствует функция, позволяющему пользователю
посмотреть задачи (действия), которые необходимо выполнить перед отъездом и
советы для комфортного отдыха;
5) небольшой выбор действий и мероприятий, который пользователь
может осуществлять в поездке;
6) приложение не предоставляет информацию о прогнозе погоды в
планируемый срок поездки;
7) в приложении отсутствует функция преобразования сформированного
списка в другой формат (.pdf, .docx);
8) малый набор вещей для каждой категории или повторение некоторых
предметов (популярные предметы для данной категории отсутствуют, к примеру,
в зимнем спорте отсутствует зимняя обувь, теплые носки, и нет предметов,
относящихся к спорту).
Приложение «PackKing» – это бесплатное приложение, которое помогает
людям создавать списки вещей для сбора багажа. Данное приложение подскажет
пользователю, какие вещи нужно собрать, будь это поездка за город,
22
долгожданный отпуск или важная командировка. Данное приложение имеет более
100 тысяч скачиваний в Google Play и среднюю оценку 4,6 звезды. Интерфейс
приложения представлен на рисунке 7 [23].
а)
б)
Рисунок 7 – Интерфейс приложения «PackKing» (а – главное меню;
б – сформированный список вещей)
Основными достоинствами данного приложения являются:
1) создание своих собственных поездок, с указанием пунктов назначения,
длительность, свои планы, виды транспорта и частоту стирок;
2) возможность удаления и добавления элементов, а также можно отмечать
в списке вещи, которые уже укомплектованы;
3) большой выбор категорий вещей и самих вещей в заданных категориях;
4) возможность создавать файлы PDF со списком вещей для сбора багажа;
5) возможность экспорта списка в другие приложения;
6) возможность просмотра задач, которые необходимо выполнить перед
отъездом;
23
7) возможность воспользоваться фильтром для более удобного просмотра
списка и изменения режима просмотра списка;
8) возможность делать заметки для каждой вещи;
9) возможность создания собственной темы, в которой можно создать
список вещей и использовать его в дальнейшем (к примеру, создать тему охота и
вписать в нее необходимые вещи);
10) возможность контроля процесса завершения сбора вещей;
11) приятная цветовая палитра и удобство интерфейса;
12) возможность
переключения
режима
просмотра
списков
между
просмотром по целям поездки (Самое необходимое, Круиз, Пляж) и просмотром
по Категориям вещей (Гигиена, Здоровье, Гаджеты и др.).
К недостаткам данного приложения можно отнести следующее:
1) приложение плохо учитывает размер багажа, количество вещей
практически на прямую зависит от количества дней в поездке (30 дней = 30
вещей) и также не для всех вещей осуществляется подсчет нужного количества;
2) приложение не предоставляет возможности формировать список, если
пользователь является организатором поездки (указание ответственных лиц или
возможность контроля исполнения поручений);
3) приложение не предоставляет информацию о прогнозе погоды в
планируемый срок поездки;
4) в приложении нет раздела, в котором можно посмотреть советы для
комфортного путешествия;
5) в приложении нельзя разделить список на подсписки (список покупок,
список заимствованных вещей и др.) и нет возможности посмотреть, где можно
приобрести недостающую вещь;
6) в бесплатной версии возможно создавать только один список вещей.
Приложение «uPackingList» — удобное приложение, созданное специально
для того, чтобы не забыть положить в чемодан все необходимое и закончить все
важные дела до отъезда. Данное приложение имеет более 50 тысяч скачиваний в
24
Google Play и среднюю оценку 3,9 звезды. Интерфейс приложения представлен на
рисунке 8 [24].
а)
б)
Рисунок 8 – Интерфейс приложения «uPackingList» (а – сформированный список
вещей; б – процесс создания списка при помощи помощника)
Основными достоинствами данного приложения являются:
1) возможность выбора конкретного города для путешествия;
2) приложение без участия пользователя узнает прогноз погоды на дату
поездки;
3) учет пола пользователя при составлении списка;
4) возможность создавать несколько списков вещей;
5) возможность получать уведомления о списке вещей в поездку;
6) возможность поделиться списком с друзьями и знакомыми;
7) возможность добавить предмет в список покупок, отредактировав
количество предметов для покупки;
8) возможность оставлять комментарии, загружать фотографию для вещей
из списка;
25
9) легкость редактирования и возможность добавления новых пунктов и
групп вещей в список;
10) мониторинг готовности собранного чемодана;
11) возможность поиска вещей в списках;
12) возможность экспорта списка в другие приложения;
13) удобная система отображения элементов сформированного списка;
14) приятная цветовая палитра и удобство интерфейса.
Однако, данное приложение имеет и недостатки:
1) приложение не учитывает размер багажа, количество вещей не зависит
от количества дней в поездке и всегда равняется «1»;
2) в приложении при формировании списка покупок нет возможности
посмотреть, где можно приобрести недостающую вещь;
3) приложение не предоставляет возможности формировать список, если
пользователь является организатором поездки (указание ответственных лиц или
возможность контроля исполнения поручений);
4) небольшой выбор действий и мероприятий, который пользователь
может осуществлять в поездке и малый набор вещей для каждой категории
(популярные предметы для данной категории отсутствуют, к примеру, в
электронике отсутствует фотоаппарат, переносной аккумулятор или наушники);
5) в приложении нет раздела, в котором можно посмотреть советы для
комфортного путешествия;
6) приложение не предоставляет информацию о прогнозе погоды в
планируемый срок поездки.
В конечном итоге был осуществлен опрос экспертов. Был представлен
перечень критериев и способ оценки, основанный на бальной шкале, где «5» – это
отличный показатель критерия, «1» – очень плохой показатель критерия, а «0»
означает что данного критерия нет в аналоге.
На основе полученных данных был осуществлен расчет средних баллов,
где округление проводилось по математическим правилам и построена сводная
таблица (таблица 1).
Таблица 1 – Сводная таблица сравнения аналогов
Прототипы
Microsoft
Excel
Приложение
«Упакуй
чемодан!»
Сайт
v-dorogu
Приложение
«PackPoint»
Приложение
«PackKing»
Приложение
«uPackingList»
1
2
2
4
5
5
5
2
2
3
2
3
4
3
5
5
3
2
2
3
4
1
1
1
1
1
2
1
3
3
2
4
3
3
5
1
5
5
5
1
5
5
2
3
3
5
3
5
5
3
4
5
0
0
3
5
0
0
0
5
0
0
0
0
0
0
0
5
0
5
3
3
3
0
0
0
0
2
2
2
2
0
3
3
23
30
29
30
23
33
41
26
Критерии
Временные затраты на составление
списка
Полнота составления списка (с
первого раза)
Возможность разделения на
подсписки
Временные затраты на подсчет
нужного количества вещей
Контроль процесса завершения
сбора вещей в поездку
Возможность экспорта в другой
формат
Удобство использования
интерфейса и функционала
Возможность делать заметки
Возможность просмотра советов
для путешествия, без
использования сторонних ресурсов
Возможность узнать погоду, не
используя сторонние ресурсы
Возможность составления списка
вещей для организаторов поездки
Полнота составления списка дел
перед поездкой (с первого раза)
Итого
Лист
бумаги и
ручка
27
Из сводной таблицы можно выявить критерии, которые не реализованы
или реализованы недостаточно хорошо в анализируемых аналогах. К ним можно
отнести:
1) возможность разбиения сформированного списка на подсписки для
более удобной работы с ним;
2) подсчет необходимого количества вещей в поездку;
3) контроль процесса сбора вещей из поездки;
4) возможность просмотра советов для путешествия;
5) возможность контролирования погоды без использования сторонних
приложений;
6) возможность составления списка вещей в поездку для организаторов
поездки.
В рамках выполняемой работы необходимо уделить особое внимание
решению
перечисленных
недостатков,
особенно
тех
проблем,
которые
перечислены в пунктах 1,2,3,6.
1.3 Постановка задачи разработки приложения для составления списка
вещей в поездку
Проводя анализ предметной области, нужно выделить основные проблемы,
которые необходимо решить.
Для того, чтобы разрабатываемая система имела возможность выполнить
все предоставленные требования, необходимо выделить ряд задач, которые нужно
автоматизировать. Для автоматизации были выбраны задачи по формированию
списка вещей в поездку и коммуникации организатора поездки и иных
пользователей, имеющих отношение к организуемой поездке.
При составлении списка, любой человек тратит большое количество
времени и сил на анализ и сбор информации, необходимой для грамотного
составления списка. При этом приходится думать не только о конкретных вещах,
но и об их количестве, об особенностях путешествия и других факторах. С еще
большими проблемами сталкивается организатор, так как за ним закрепляется
28
повышенная ответственность, он осуществляет контроль и руководит процессом
составления списка и сбора вещей.
Исходя из вышеперечисленных проблем, разрабатываемая система должна
уметь автоматически выполнять перечисленные действия, тем самым упрощая
процесс составления списка и сокращая временные затраты использующего
проектируемую систему.
Процесс составления списка будет осуществляться посредством выбора
данных самим пользователем. Пользователь может выбирать ожидаемые
погодные условия, размер багажа и место проживания, цели и мероприятия,
осуществляемые в поездке.
В зависимости от выбранных критериев, будет сформирован запрос к
разработанной базе данных. Ответ на этот запрос будет выведен пользователю.
Исходя из анализа положительных и отрицательных характеристик
аналогов и прототипов в подразделе 1.2, было принято решение разработать
систему формирования списка вещей в поездку, позволяющую осуществлять
следующие функции:
1) возможность указать название, дату начала и окончания поездки;
2) возможность выбрать способа передвижения, погоды, целей поездки и
выбор мероприятий и действий, которые будут совершены в поездке;
3) возможность сохранить, редактировать или удалить список;
4) возможность
добавить,
редактировать
или
удалить
пункты
в
сохранённом списке;
5) возможность отметить вещи, которые уже упакованы в багаж до
поездки и по возвращению домой;
6) возможность разделения списка на список вещей, которые нужно
купить, которые можно попросить у родственников, друзей или знакомых и на
вещи, которые имеются в наличии;
7) возможность указания родственников, друзей или знакомых, кому
принадлежит заимствованная вещь;
29
8) возможность связаться с владельцем вещи с помощью телефонного
разговора или SMS;
9) возможность использовать функцию напоминания для покупки или
возврата вещей их владельцам;
10) возможность перейти на сайт для покупки недостающих вещей;
11) возможность оставить заметку или изменить количество вещей;
12) возможность просмотра советов по подготовке к путешествию;
13) возможность связаться с разработчиками приложения, для решения
возникших проблем или предложения идей;
14) возможность просмотра дел, которые необходимо выполнить перед
поездкой;
15) возможность назначать ответственных за выполнение определённых
дел для совершения поездки;
16) способность отслеживать процесс завершения сбора вещей;
17) возможность добавлять людей, с которыми запланирован отдых;
18) возможность поделиться списком;
19) возможность использовать справочник, позволяющий пользователю
разобраться с функционалом программы;
20) возможность осуществлять настройки приложения;
21) возможность преобразовать список в .pdf или .docx формат.
30
2 РАЗРАБОТКА ПРИЛОЖЕНИЯ, АВТОМАТИЗИРУЮЩЕГО
СОСТАВЛЕНИЕ СПИСКА ВЕЩЕЙ В ПОЕЗДКУ
2.1 Выбор платформы и средств реализации
В
целях
реализации
приложения
и
функционльных
требований,
прописанных в подразделе 1.3, необходимо осуществить выбор операционной
системы. Выбор операционной системы, для которой будет разрабатываться
приложение зависит от структуры использования мобильных операционных
систем. Для решения данного вопроса необходимо проанализировать рынок
операционных систем в России и в мире.
Согласно статистическим данным компании StatCounter, представленным
на рисунке 9, в мире смартфонами на Android пользуется 73,78 % населения.
Продукты Apple предпочитают 19,7 %, а Windows Phone + Mobile – 0,72%
населения [29].
Рисунок 9 – Доля рынка мобильных ОС во всем мире по состоянию на май 2018
года
31
В Российской Федерации смартфонами на Android пользуется 69,34 %
населения. Продукты Apple предпочитают 22,74 %, а Windows Phone + Mobile –
1,46 % населения [29]. Данные представлены на рисунке 10.
Рисунок 10 – Доля рынка мобильных ОС в России по состоянию на май 2018 года
На сегодня девайсы, использующие Android, занимают в среднем 70-75%
мобильного рынка. Это значит, что большинство людей на планете, которые
имеют смартфоны, являются пользователями данной системы. Географически
Android преобладает в России, странах СНГ, Восточной и некоторых странах
Западной Европы, а также в Китае, и других странах востока и Африки [29].
Всего
примерно
20% доли
мобильного
рынка
остается
за
iOS.
Большинство из этих 20% живут в США, Канаде, Австралии, Великобритании,
Франции и скандинавских странах.
Принято считать, что приверженцы Android имеют средний или ниже
среднего достаток, ведь смартфоны на этой платформе стоят гораздо дешевле
iPhone`ов. К тому же, если взглянем на географию, можно увидеть, что это в
32
основном развивающиеся страны, где средний уровень доходов невелик. Что
касается характера взаимодействия с приложениями, то пользователи Android
чаще всего не готовы платить за приложения, не слишком вовлечены в digitalпространство.
Так, в магазине AppStore было потрачено 11,5 миллиарда долларов, тогда
как аналогичный показатель для Google Play едва превысил 5 миллиардов
долларов. Совокупное количество загруженных приложений в обоих магазинах
(не включая переустановки и обновления) достигло 27 миллиардов: 19 ушло на
долю Google Play, оставшееся досталось AppStore [16].
Как видно из статистики, в Google Play скаченных приложений больше,
чем в AppStore. Дынный факт вызван тем, что пользователи Android удаляют
программы со своих девайсов значительно чаще, чем пользователи Apple. К
примеру, из 10 установленных программ, три удаляются в скором времени. Но
если, например, в целом пользователи iOS удаляют лишь десятую часть игр, то
владельцы Android-устройств деинсталлируют сразу половину [17].
С коммерческими приложениями разрыв немного меньше — на Android
удаляется пятая часть программ (21 %), на iOS — десятая (9 %).
Согласно статистическим данным системы AppMetrica и мобильного
рекламного агентства Unilead пользователи Android, моложе 25 лет отдают
предпочтение не только играм и развлечениям, но и приложениям в категориях:
«Бизнес», «Финансы», «Здоровье и фитнес», а также «Стиль жизни». Аудитория
старше 25 лет чаще встречается в приложениях, связанных с семьёй [30].
Согласно тому же исследованию установка приложений на Android
продолжает обходиться разработчикам и издателям несколько дешевле, чем на
iOS.
Прибыль после публикации - еще один важный аргумент в выборе между
Android и iOS. Разрабатывая приложение, необходимо определиться с моделью
монетизации.
В AppStore платных и с внутренними покупками приложений больше, чем
в Google Play, где популярнее модель Free с поддержкой рекламы [26].
33
В AppStore доход выше, но у приложений на Android больше аудитория.
Таким образом, разработка приложения будет осуществляться для
устройств под управлением Android по ряду причин:
1) количество пользователей Android-устройств в России больше, чем
пользователей iOS-устройств;
2) разрабатываемое приложение будет бесплатным, а основной статьей
доходов будет реклама;
3) разработка и издательство приложения на Android дешевле чем на iOS;
4) приложение ориентировано на любые возрастные категории, но
наибольший интерес может вызвать у людей от 20 до 35 лет.
Определившись с платформой, необходимо решить какой язык и среду
разработку лучше использовать. Традиционно для написания Android-приложения
используют язык Java, а в качестве среды разработки Android Studio.
Java
—
сильно
типизированный
объектно-ориентированный
язык
программирования. Приложения Java обычно транслируются в специальный байткод, поэтому они могут работать на любой компьютерной архитектуре, с
помощью виртуальной Java-машины.
Android Studio — интегрированная среда разработки производства Google,
с помощью которой разработчикам становятся доступны инструменты для
создания приложений на платформе Android OS. Android Studio можно установить
на Windows, Mac и Linux. Android Studio создавалась на базе IntelliJ IDEA. В ней
присутствуют макеты для создания UI (Интерфейс пользователя (user interface)), с
чего обычно начинается работа над приложением. В Studio содержатся
инструменты для разработки решений для смартфонов и планшетов.
Среда
Android
Studio
предназначена
как для небольших команд
разработчиков мобильных приложений (даже в количестве одного человека), или
же крупных международных организаций. Решения для Android разрабатываются
в Android Studio с использованием Java или C++. В основе рабочего процесса
Android Studio заложен концепт непрерывной интеграции, позволяющий сразу же
обнаруживать
имеющиеся
проблемы.
Продолжительная
проверка
кода
34
обеспечивает возможность эффективной обратной связи с разработчиками [7].
Такая опция позволяет быстрее опубликовать версию мобильного приложения в
Google Play.
С помощью средств оценки производительности определяется состояние
файла с пакетом прикладных программ. Визуализация графики дает возможность
узнать, соответствует ли приложение ориентиру Google. С помощью инструмента
для визуализации памяти разработчик узнает, когда его приложение будет
использовать слишком много оперативной памяти и когда произойдет «сборка
мусора». Инструменты для анализа батареи показывают, какая нагрузка
приходится на устройство.
Достоинства Android Studio:
1) удобный дизайн;
2) удобный
конструктор
интерфейсов,
позволяющий
просматривать
отображение экрана на любом устройстве, вплоть до телевизоров и часов.
Элементы интерфейса отображаются прямо так, как они будут выглядеть на
определенной версии операционной системы;
3) встроенный комплекс средств разработки SDK (software development
kit), выдает уведомление с установкой необходимого API для запуска старого
проекта;
4) удобная структура проекта;
5) наличие логов для отслеживания ошибок, процессов и потоков;
6) наличие достаточно большого количества литературы на русском языке.
Для серверной части приложения была выбрана MySQL. Это самая
распространенная полноценная серверная СУБД. MySQL очень функциональная,
свободно распространяемая СУБД, которая успешно работает с различными
сайтами и веб-приложениями.
Несмотря на то, что в ней не реализован весь SQL функционал, MySQL
предлагает довольно много инструментов для разработки приложений. Так как
это серверная СУБД, приложения для доступа к данным работают со службами
MySQL.
35
Преимущества MySQL:
1) простота
в
работе
-
установить
MySQL
довольно
просто.
Дополнительные приложения, например GUI, позволяет довольно легко работать
с БД;
2) богатый функционал - MySQL поддерживает большинство функционала
SQL;
3) безопасность
-
большое
количество
функций,
обеспечивающих
безопасность, которые поддерживается по умолчанию;
4) масштабируемость - MySQL легко работает с большими объемами
данных и легко масштабируется;
5) скорость - упрощение некоторых стандартов позволяет MySQL
значительно увеличить производительность [9].
Для комфортной работы с базой данных был выбран фреймворк Yii2. Yii
— объектно-ориентированный компонентный фреймворк, написанный на PHP и
реализующий парадигму MVC. Model-View-Controller (Модель-ПредставлениеКонтроллер) — схема разделения данных приложения, пользовательского
интерфейса и управляющей логики на три отдельных компонента: модель,
представление и контроллер — таким образом, что модификация каждого
компонента может осуществляться независимо. PHP-фреймворк – это каркас,
основа или набор определенных инструментов для разработки сайтов и webприложений [31].
К преимуществам Yii2 стоит отнести:
1) простота установки;
2) использование современных технологий. Yii является полностью
объектно-ориентированным фреймворком и использует все преимущества
продвинутых PHP функций;
3) гибкость и расширяемость. Yii framework можно легко настроить под
свои
нужды.
расширяемым;
Практически
каждый
компонент
фреймворка
является
36
4) тестирование. Yii тесно интегрирован с Codeception. Codeception — это
инструмент
для
тестирования,
который
упрощает
создание
юнит,
функциональных и интеграционных тестов при создании приложения;
5) сокращение времени на разработку. Практически любой проект связан с
тем, что приходится повторять одно и тоже по нескольку раз, например написание
CRUD (create, read, update, delete — «создать, прочесть, обновить, удалить») для
новой сущности. Yii предоставляет несколько инструментов, которые помогают
уменьшить
затрачиваемое
время
на
не
приоритетные
задачи
и
сконцентрироваться над основной задачей.
2.2 Проектирование архитектуры системы для составления списка вещей в
поездку
Архитектура информационной системы – это концепция, определяющая
модель,
структуру,
информационной
выполняемые
системы.
функции
Существует
4
и
взаимосвязь
компонентов
вида
архитектур:
файл-сервер,
Internet/Intranet, клиент-сервер и многозвенная. Для решения нашей задачи будет
использована клиент-серверная архитектура, где клиентами будут выступать
владельцы android-устройств с установленным приложением, а сервером – сервер
базы данных. Общая архитектура системы, представлена на рисунке 11.
Рисунок 11 – Общая архитектура разрабатываемого приложения
37
Преимущества клиент-серверных систем перечислены ниже:
1) клиент-серверный
подход
—
модульный,
причем
серверные
программные компоненты компактны и автономны;
2) поскольку каждый компонент выполняется в отдельном защищенном
процессе пользовательского режима, сбой сервера не повлияет на остальные
компоненты операционной системы;
3) автономность компонентов делает возможным их выполнение на
нескольких процессорах на одном компьютере (симметричная многопроцессорная
обработка) или на нескольких компьютерах сети (распределенные вычисления);
4) обязанность клиента, как правило, — предоставлять пользовательские
сервисы и, прежде всего, пользовательский интерфейс, то есть средства для
приема, отображения и редактирования данных, введенных пользователем,
которые служат основой для запроса серверу. Кроме того, клиент можно
настроить на обработку части данных, чтобы уменьшить нагрузку на ресурсы
сервера [18].
Клиент-серверная система управления базой данных может опираться на
несколько типов распределения обязанностей между клиентом и сервером:
«интеллектуальные» клиенты, «интеллектуальный» сервер, смешанные системы,
многоуровневые системы.
В разрабатываемом приложении лучше всего подходит смешанный тип
распределения обязанностей. В рамках двухуровневой реализации возможны и
смешанные
варианты,
обладающие
достоинствами
как
интеллектуальных
серверов, так и интеллектуальных клиентов. Например, клиентский компонент
смешанного решения, может вызывать хранимые процедуры SQL Server.
Достоинства смешанных систем:
1) часть бизнес-логики может быть реализована в клиентской части;
2) серверный
код
(например,
хранимые
процедуры
SQL
Server)
одновременно доступен многим клиентам, что снижает накладные затраты при
выполнении однотипных запросов;
3) эффективность работы клиентов меньше зависит от сетевого трафика.
38
Клиентская часть состоит из самого приложения и дополнительной
библиотеки. Приложение для составления списка вещей хранится в памяти
телефона, использующего операционную системы Android. Для того, чтобы
приложение имело возможность взаимодействовать с удаленным сервером,
удобно
использовать
специальную
библиотеку
–
Retrofit
2.
Retrofit
–
типобезопасный HTTP-клиент для Android и Java [11].
2.3 Проектирование базы данных
База данных - совокупность данных, организованных в соответствии с
концептуальной структурой, описывающей характеристики этих данных и
взаимоотношения между ними, причём такое собрание данных, которое
поддерживает одну или более областей применения [19].
База данных является информационной моделью предметной области.
Обращение к базам данных осуществляется с помощью системы управления
базами данных. Система управления базами данных обеспечивает поддержку
создания баз данных, централизованного управления и организации доступа к
ним различных пользователей.
Существует два уровня проектирования базы данных: логический и
физический.
Логический уровень – модель данных, в которой на логическом уровне
полностью описывается информационное содержание базы данных. На рисунке
12 представлен логический уровень базы данных.
Таблица «Тип вещи» хранит в себе информацию о принадлежности вещи к
тому или иному типу. Поля данной таблицы:
1) номер типа – уникальный номер для каждого типа вещи;
2) название типа вещи (одежда, медицина, обувь, техника, еда, разное и
др.);
3) необходимость вещи (вещи первой необходимости, вещи без, которых
можно обойтись и др.).
39
Рисунок 12 – Логическая модель базы данных
40
Таблица «Список вещей» содержит в себе базовую информацию о вещи, ее
характеристику:
1) номер вещи – уникальный номер каждой вещи;
2) номер типа – внешний ключ, получаемый из таблицы «Тип вещи»;
3) название вещи;
4) пол вещи (мужской, женский, общий, т.е. вещь, которая относится к
обоим полам (медицина, документы и др.));
5) сайт покупки вещи;
6) признак количества – принимает текстовое значения, позволяющие
более точно рассчитать необходимое количество вещей в поездку;
7) количество – хранит в себе информацию о количестве вещей;
8) краткое описание вещи.
Таблицы «Список мест проживания», «Список целей», «Список погоды»,
«Список способов передвижения», «Список действий» содержат в себе
однотипную информацию:
1) номер места/цели/погоды/способа передвижения/действия – уникальный
номер каждой особенности;
2) название места/цели/погоды/способа передвижения/действия.
Таблица «Список вещей» и таблицы Список мест проживания», «Список
целей», «Список погоды», «Список способов передвижения» имеют между собой
связь многие ко многим. Связь многие-ко-многим – это связь, при которой
множественным
записям
из
одной
таблицы
(«Список
вещей»)
могут
соответствовать множественные записи из другой («Список целей», «Список
погоды» и др.). Поэтому таблицы «Список вещей с учетом места проживания»,
«Список вещей с учетом целей поездки», «Список вещей с учетом погоды»,
«Список вещей с учетом способа передвижения» содержат в себе однотипную
информации:
1) номер вещи – уникальный номер (внешний ключ) каждой вещи,
полученной из таблицы «Список вещей»;
41
2) номер места/цели/погоды/способа передвижения – номер каждой
особенности, внешний ключ, полученные из соответствующих таблиц.
Таблица «Мероприятие» содержит в себе информацию об организованной
поездке, а именно:
1) номер мероприятия – уникальный номер каждого мероприятия;
2) название мероприятия;
3) дату начала мероприятия;
4) дату конца мероприятия.
Таблица «Пользователь» предназначена для хранения информации о
зарегистрированных пользователях. Поля данной таблицы содержат следующую
информацию:
1) номер пользователя – уникальный номер, который присваивается
каждому пользователю;
2) адрес электронной почты (e-mail);
3) пароль для входа в систему;
4) имя пользователя;
5) пол пользователя;
6) мобильный номер.
Таблица
информацию
«Пользователи,
о
всех
участвующие
пользователях,
в
которые
мероприятии»
относятся
к
содержит
конкретному
мероприятию:
1) номер мероприятия – внешний ключ, получаемый из таблицы
«Мероприятие»;
2) номер пользователя - внешний ключ, получаемый из таблицы
«Пользователи»;
3) лидер – номер пользователя, который является организатором поездки.
Таблица «Действия для мероприятия» хранит в себе информацию о
действиях,
необходимых
осуществить
для
удачного
проведения
(мероприятия). Данная таблица содержит следующие поля:
1) номер действия для мероприятия – уникальный номер;
отдыха
42
2) номер действия – внешний ключ, получаемый из таблицы «Действия»;
3) номер мероприятия – внешний ключ, получаемый из таблицы
«Мероприятие»;
4) статус действия (выполнена, в процессе, ждет подтверждения);
5) ответственный
–
внешний
ключ,
получаемый
из
таблицы
«Пользователи».
Таблица «Список вещей для мероприятия» хранит в себе информацию о
вещах, необходимых собрать для проведения отдыха (мероприятия). Данная
таблица содержит следующие поля:
1) номер вещи для мероприятия – уникальный номер;
2) номер вещи –внешний ключ, получаемый из таблицы «Список вещей»;
3) номер мероприятия – внешний ключ, получаемый из таблицы
«Мероприятие»;
4) статус
вещи
(укомплектована,
не
куплена,
возвращена,
не
укомплектована);
5) принадлежность вещи (своя вещь, вещь, взятая в долг);
6) владелец
вещи
-
внешний
ключ,
получаемый
из
таблицы
«Пользователь», указывающий на пользователя, которому принадлежит вещь.
Физический уровень – определяет способ размещения данных на
носителях (устройствах внешней памяти), а также способ и средства организации
эффективного доступа к ним. На рисунке 13 представлен физический уровень
базы данных.
43
Рисунок 13 – Физическая модель базы данных
44
2.4 Описание логики диалога с пользователем
Ценность любой программы определяется не только её способностью
безошибочно и качественно решать поставленную задачу, но и тем, насколько
легко и удобно этой программой можно пользоваться. Даже самая простая и в то
же
время,
функциональная
программа
окажется
невостребованной,
если
пользователь при работе с ней быстро устаёт, раздражается, чувствует себя
некомфортно. В этом случае пользователь обычно совершает больше ошибок и
работает менее эффективно. Для получения действительно удобной программы, с
которой
бы
было
приятно
работать,
необходим
хорошо
продуманный
дружественный интерфейс с пользователем. Под пользовательским интерфейсом
понимается своеобразный коммуникационный канал, посредством которого
пользователь взаимодействует с компьютером. Пользовательский интерфейс
является важнейшей частью любой программы, так как именно с интерфейсом
пользователь соприкасается в процессе своей работы. С точки зрения
пользователя именно интерфейс является конечным продуктом. Интерфейс
представляет собой совокупность используемых в программе средств для ввода
данных, способов отображения информации на экране дисплея, элементов для
управления
различными
этапами
решения
задачи.
Основное
назначение
пользовательского интерфейса – обеспечить короткий и удобный путь к
получению результата.
Дизайн пользовательского интерфейса для мобильного приложения
отличается от UI-дизайна для веб-сайтов или программ для ПК, следовательно,
будет отличаться и процесс проектирования. Ниже приведены основные
принципы разработки пользовательского интерфейса, которые были соблюдены в
ходе разработки программы.
Принцип акцента на содержание. Контент находится на первом месте. Он
представлен наиболее оптимальным образом.
Принцип
идентифицируются
интерактивности.
пользователем.
Элементы
Основные
интерфейса
функции
и
точно
возможности
45
приложения видны сразу. Все основные элементы навигации присутствуют на
каждом экране приложения [27].
Принцип интуитивной навигации. Интерфейс мобильного приложения
спроектирован таким образом, чтобы пользователи, не задумываясь переходили
от одного этапа к другому. Переход между всеми разделами приложения сделан
максимально простым. Наиболее распространённые действия выполняются
максимально просто, чтобы существенно снизить затрачиваемые усилия.
Принцип структуризации. Пользовательский интерфейс структурирован
так, что близкие по смыслу, родственные его части связаны видимым образом, а
независимые – разделены; похожие элементы выглядят похоже, а непохожие –
различаются.
Принцип наблюдаемости. Все операции и данные, необходимые для
решения определённой задачи, хорошо видны, когда пользователь пытается её
решить. Излишняя и ненужная информация не отвлекает внимание пользователя.
Принцип обратной связи. Пользователь получает сообщения о действиях
программы и о важных событиях внутри неё. Сообщения являются ясными,
краткими, недвусмысленными и написанными на языке, понятном пользователю.
Принцип толерантности. Интерфейс является гибким и терпимым к
ошибкам пользователей. Ущерб от ошибок снижается за счёт возможности
отмены или повтора действий, а также за счёт разумной интерпретации любых
разумных действий пользователя и введённых им данных.
Разрабатываемое приложение также должно обладать многоуровневым
UX (user experience (пользовательский опыт)), то есть опыт пользователя
предполагает, что особенности того или иного приложения должны открываться
постепенно.
Пользователь,
взаимодействующий
с
приложением,
должен
двигаться в определенном направлении, с каждым экраном открывая для себя чтото новое. Такой подход позволяет долго поддерживать интерес пользователя, что
очень важно, когда нужно подтолкнуть его к совершению определенного
действия [27].
46
В приложении должна использоваться анимация. Присутствие анимации в
пользовательском интерфейсе делает процесс взаимодействия с приложением
очень увлекательным. Приложение становится более интерактивным, «живым» и
расширяет возможности пользователя.
Приложение должно работать в полноэкранном режиме. При этом
полноэкранный режим не должен влиять на элементы навигации, которые нужно
размещать таким образом, чтобы не нарушать видимость контента.
Интерфейс приложения должен обладать удобным входом. Если первый
экран спроектирован неправильно, это приведет к многочисленным отказам.
Страница входа должна быть максимально простой и удобной. По возможности
лучше не использовать логины и пароли, а если без этого не обойтись, процесс
авторизации должен быть коротким [20].
Для
разработки
интерфейса
было
принято
решение
использовать
транзитивную сеть, в которой окружностями обозначены состояния приложения,
а
стрелками
указаны
переходы
между
состояниями
с
обозначением
осуществляемых пользователем действий. Транзитивная сеть работы интерфейса
представлена на рисунке 14.
После запуска приложения перед пользователем появляется «Страница со
сформированными списками». Данная страница показывает все созданные списки
имеет кнопку «Добавить список», возможность вызвать «Окно с контекстным
меню» и перейти на «Страницу со списком вещей».
«Окно с контекстным меню» позволяет осуществить переход на
«Страницу с описанием принципов работы приложения», где пользователю будет
представлена информация о функционале приложения и способах взаимодействия
с интерфейсом.
47
Рисунок 14 – Транзитивная сеть взаимодействия пользователя с системой
48
Все состояния и соответствующие им представления транзитивной сети
продемонстрированы в таблице 2.
Таблица 2 – Состояния транзитивной сети
Состояние
Представление
F
Выход из приложения
S0
Страница со сформированными списками
S1
Окно с контекстным меню
S2
Страница с описанием принципов работы приложения
S3
Страница Google Play
S4
Страница настроек
S5
Страница создания списка вещей
S6
Страница со списком вещей
S7
Страница с описанием вещи
S8
Страница Internet-браузера
S9
Страница совершения звонка или SMS
S10
Страница авторизации
S11
Страница регистрации
Из контекстного меню пользователь может перейти на «Страницу с
настройками». На данной странице пользователь осуществляет настройки
приложения с учетом предпочтений и желаний. Также пользователь имеет
возможность оставить отзыв о приложении и оценить его, перейдя на страницу
приложения в Google Play.
Со «Страницы со сформированными списками» можно осуществить
переход на «Страницу создания списка вещей». На данной странице пользователь
вводит все необходимые данные, и выбирает соответствующие критерии. После
заполнения всех необходимый полей и нажатия кнопки «Создать список»
автоматически генерируется список по заданным критериям, и пользователь,
после завершения данного процесса, автоматически возвращается на «Страницу
со сформированными списками».
49
Нажав на один из созданных списков, пользователь окажется на «Странице
со списком вещей», где будут отображены все предметы, разделенные на
соответствующие категории, по которым может быть осуществлен переход.
На данной странице пользователь может осуществлять редактирование
списка, указывать какие вещи укомплектованы, удалять элементы и добавлять
вещи в список покупок.
Если пользовать хочет перейти на «Страницу с описанием вещи», то
необходимо нажать на поле с необходимой вещью. На данной странице
пользователь может менять количество вещей, делать заметки, добавлять новые
вещи и узнать, где можно приобрести недостающий товар, осуществив переход на
«Страницу Internet-браузера». Если пользовать находился в категории, где
находится список дел перед путешествием, и им было выбрано какое-либо
действие, то пользователь может назначить ответственного для его выполнения из
списка тех, кто принимает участие в поездке, изменить статус действия и
связаться с ответственным перейдя на экран «Страницу совершения звонка или
SMS».
Чтобы
воспользоваться
данными
функциями
необходимо
пройти
авторизацию в приложении. На «Странице авторизации» осуществляет ввод
данных, если они имеются. Если пользователь использует систему впервые, то
существует возможность регистрации, перейдя на «Страницу регистрации». Если
пользователь авторизовался, то он может осуществлять работу со списком дел
У пользователя существует возможность переходить на предыдущие
экранные формы и использовать контекстное меню практически во всех
состояниях системы. Переход может осуществляться при помощи кнопок «Назад»
с изображением стрелки, так и при помощи функциональных клавиш
используемого Android-устройства.
50
3 РЕАЛИЗАЦИЯ ПРИЛОЖЕНИЯ «БАГАЖ ПУТЕШЕСТВЕННИКА»
3.1 Разработка дизайна приложения
Для удобства использования приложения в подразделе 2.4 была описана
логика диалога с пользователем. Для более наглядного представления был
разработан прототип интерфейса будущего приложения.
Запуск приложения, как показано на рисунке 15, начинается с небольшой
заставки, которая демонстрирует логотип приложения и его название.
Рисунок 15 – Начальный экран приложения
51
Далее пользователю демонстрируются слайды, изображённые на рисунке
16, в которых описана основная идея и главные функции разрабатываемого
приложения. Слайды показываются только при первом запуске приложения на
смартфоне. При последующих запусках будет отображен лишь логотип и
название приложения.
Рисунок 16 – Демонстрация основного функционала и идеи с помощью слайдов
На слайдах присутствует кнопка «Начать» которая откроет пользователю
главный экран приложения (рисунок 17) Кнопки «Назад» и «Далее» необходимы
для смены слайдов.
На данном экране в строке состояний показано, в каком элементе
программы находится пользователь.
Пользователь может воспользоваться
кнопкой меню для:

создания списка вещей или добавления мероприятия;

настройки программы для удобного пользования;

изучения особенностей программы;

регистрации в системе;

оставления отзыва разработчикам.
52
Рисунок 17 – Основной экран приложения
Создание списка вещей или мероприятия можно осуществить с помощью
взаимодействия с кнопкой «Добавить список или мероприятие», которая
предоставит пользователю возможность сформировать список для своих нужд.
Переход по кнопке «Добавить список или мероприятие» показан на рисунке 18
(а).
После ввода и выбора всей необходимой информации на первом экране
осуществляется переход на следующий экран, где также происходит выбор
критериев и ввод данных. Пользователь может вернуться на предыдущий шаг и
исправить данные с помощью перехода по вкладкам (проводить пальцем по
экрану, с одной стороны, в другую, тем самым меняя шаги). На последнем шаге
53
формирования списка, показанном на рисунке 18 (б), необходимо выбрать цели
поездки или действия, которые пользователь будет осуществлять в поездке.
а)
б)
Рисунок 18 – Формирование списка (а – экран ввода название поездки, даты и
размера багажа; б – выбор целей поездки)
После перехода по кнопке «Сформировать список» пользователь попадает
на главный экран, где может осуществить выбор из сформированных списков или
создать новый.
В случае, если пользователь выбирает список, то он переходит на
«Страницу со списком вещей» (рисунок 19 (а)). Пользователь может удалять
компоненты, добавлять новые, увеличивать количество, добавлять вещь в список
покупок, менять статус вещи, менять категории предметов, переключаться между
54
ними и др. (рисунок 19 (б)). Меню появляется при длительном удержании вещи в
фокусе.
а)
б)
Рисунок 19 – Сформированный список (а – список сформированных вещей
для поездки; б – функции для работы со списком).
При выборе любой вещи осуществляется переход в окно, где можно
прочитать описание вещи, изменить количество, узнать, где можно приобрести
товар, указать кому принадлежит вещь и добавить вещь в список покупок, как это
показано на рисунке 20.
55
Рисунок 20 – Экран описания вещи и функционал для работы с ней
Кроме вещей приложение автоматически формирует список дел, которые
нужно сделать перед поездкой. Если пользователь не зарегистрирован в системе,
то ему доступны только функции просмотра сформированного списка, удаление,
добавление дел и изменение его статуса.
В случае, если пользователь организует поездку или просто едет с
компанией, и он авторизован в системе, то он может использовать функции по
назначению ответственного лица и изменении статуса выполняемого действия
если является лидером поездки (рисунок 21). Статус может менять и лицо,
56
который выполняет назначенное ему действие. Также можно связаться с
ответственным лицом, позвонив ему, или написав SMS.
Рисунок 21 – Экран описание дела и функционал для работы с ним
Если пользователю необходимо воспользоваться данными функциями ему
необходимо осуществить авторизацию в системе. Авторизация в системе показана
на рисунке 22 (а) и может происходить как с помощью данных, которые
пользователь ранее ввел в программе, так и с помощью сторонних ресурсов, а
именно Facebook и Google +. Пользователь имеет возможно перейти на форму
регистрации, показанную на рисунке 22 (б) с помощью неявной кнопки
«Зарегистрироваться» и восстановить пароль с помощью неявной кнопки «Забыли
пароль?».
57
а)
б)
Рисунок 22 – Форма авторизации и регистрации пользователя в системе (а –
авторизация пользователя в системе; б – регистрация пользователя в системе)
Для
успешной
регистрации
пользователю
необходимо
обязательно
заполнить все поля, представленные на рисунке. Пол пользователя необходим для
того, чтобы при формировании списка учитывались вещи, которые относятся к
конкретному полу. Имя, как и телефонный номер необходимы для коммуникации
между людьми, участвующими в одном мероприятии.
После авторизации (введении корректных данных и нажатие на кнопку
«Войти») или регистрации (введение корректных данных и нажатие кнопки
«Зарегистрироваться»)
пользователь
функции для работы со списком дел.
может
использовать
дополнительные
58
3.2 Особенности программной реализации приложения
Главной целью разрабатываемого приложения является автоматизация
процесса составления списка вещей в поездку. В целях достижения цели
необходимо осуществить разработку программы. Клиентская часть реализует
пользовательский интерфейс, формирует запросы к серверу и обрабатывает
ответы от него. Подробнее рассмотрим четыре элемента разрабатываемой
системы, а именно:
1) слайдер;
2) формирование запроса на клиентской части;
3) авторизация в приложении через Facebook;
4) алгоритм подбора рекомендуемого количества вещей в поездку.
В подразделе 3.1 представлен дизайн приложения, где система начинает
свою работу с демонстрации слайдера. Реализация слайдера является наиболее
сложным и интересным примером создания пользовательского интерфейса,
который хотелось бы охарактеризовать.
Все, что нам нужно, это ViewPager, LinerLayout. LinearLayout представлен
двумя вариантами - Horizontal и Vertical. Макет LinearLayout выравнивает все
дочерние объекты в одном направлении — вертикально или горизонтально. В
приложении будет использоваться горизонтальный вариант представления.
Все дочерние элементы помещаются в стек один за другим, так что
горизонтальное расположение списка будет размещать элементы в одну строку с
высотой, равной высоте самого высокого дочернего элемента списка.
Виджет ViewPager позволяет пользователю делать свайпы (проводить
пальцем по экрану, с одной стороны, в другую) по страницам с какими-то
данными. Сам ViewPager использует PagerAdapter (базовый абстрактный класс,
для которого разработчик дописывает реализацию так, как ему надо.), который
создает компоненты View и заполняет их какими-то переданными данными.
Для того чтобы воспользоваться данными компонентами необходимо
подключить библиотеку. Для этого необходимо запустить SDK Manager и в
59
списке доступных к установке компонентов выбрать Support Repository (рисунок
23). После установки необходимо осуществить подключение .jar файла к проекту.
Рисунок 23 – Установка библиотеки Support Repository
Для создания слайдера необходимо добавить LinerLayout к экрану и
подключить его с помощью ViewPager. Данные действия можно осуществить с
помощью двух способов. Первый способ заключается в том, чтобы вложить
LinerLayout в ViewPager, и он нам не подходит по причине того, что LinerLayout
будет рядом с ViewPager, а не над ним.
Второй способ заключается в программном подключении LinerLayout с
ViewPager, но при таком способе LinerLayout можно разместить в любом месте
экрана. Для реализации данного способа сначала необходимо настроить
ViewPager.
Начальный этап заключается в разработке самого адаптера для ViewPager.
В данном случае был создали класса SliderAdapter (Приложение А), который
содержит в себе описание всех слайдов, используемых в слайдере. Информация о
слайдере представлена:
60
1)
массивом картинок;
public int [] slide_images = {
R.drawable.main_icon,
R.drawable.allweateher_icon,
R.drawable.people_icon,
}
2)
массивом названий слайдов;
public String[] slide_headings = {
"MAIN",
"ALLWEATHER",
"PEOPLE"
}
3)
массивом описаний слайдов;
public String[] slide_descs ={
"Наш список вещей для Ваших целей"
"Создайте список вещей используя различные категории и факторы"
"Становитесь организатором поездки, распределите обязанности и
контролируйте деятельность группы"
}
В данном классе использовались следующие методы:
1) метод instantiateItem (ViewGroup viewGroup, int position) использует
перечисление, которое соответствует конкретной позиции. Получает с него
данные и возвращает сформированный компонент View. В дальнейшем этот
объект используется методом isViewFromObject;
2) метод destroyItem () удаляет конкретный View из ViewGroup;
3) метод getCount () просто возвращает количество View, которые
использоваться в ViewPager;
4) метод isViewFromObject () проверяет, соответствует ли конкретный
объект данной позиции. Как описано чуть выше, второй параметр имеет тип
Object и получается из метода instantiateItem ().
61
После создания макета слайдера и настройки отображения информации в
адаптере необходимо инициализировать наш ViewPager в методе onCreate ()
класса MainActivity (Приложение А).
Для добавления точек, как говорилось выше, будет использоваться
LinerLayout. Для начала устанавливаем количество точек и затем осуществляем
их отображение с помощью Html кода символа. Также выставляется размер и цвет
точки.
mDots[i].setText(Html.fromHtml("$#8226"));
mDots[i].setTextSize(35);
mDots[i].setTextColor(getResources().getColor(R.color. colorTransparentGreen
));
Смена цвета активно точки осуществляется с помощью условия:
if (mDots.length > 0){
mDots[position].setTextColor(getResources().getColor(R.color.colorGreen));
}
Для удобства пользователя при просмотре слайдера и перехода к
основному функционалу программы были добавлены кнопки. После просмотра
трех слайдов появляется кнопка «Начать», по нажатию на которую пользователь
оказывается на главной странице приложения.
Инициализация кнопок осуществляется в методе onCreate() класса
MainActivity.
mNextBtn = (Button) findViewById(R.id.nextBtn);
mBackBtn = (Button) findViewById(R.id.prevBtn);
Далее, в методе onPageSelected прописывались условия, по котором текст и
функционал кнопок изменялся. К примеру? При переходе на последний слайд
кнопка «Далее» меняет свое название на «Начать»
if (i == mDots.length - 1){
mNextBtn.setEnabled(true);
mBackBtn.setEnabled(true);
mBackBtn.setVisibility(View.VISIBLE);
62
mNextBtn.setText("Начать");
mBackBtn.setText("Назад");
}
Написание интерфейса является нужным и интересным этапом, но
программа с реализованным функционалом, но простым интерфейсом является
более приоритетной.
После запуска приложения и просмотра слайдера пользователь попадает
на главный экран приложения, где может создавать списки вещей по
определённым
параметрам
и критерием.
Конечный
список
формируется
благодаря полученной информации из БД, находящейся на сервере, при помощи
запросов.
Ранее в работе описывалась библиотека Retrofit 2, которая позволяет
взаимодействовать с API сервером приложения.
Работа с данной библиотекой начинается с описания интерфейса, в
котором будут описаны все запросы необходимые для работы приложения и
сервера системы.
Пример запроса подбора списка вещей представлен ниже:
@GET("api/gift/create-list")
Call<ResponseListItems> ListItems
(@Query("idPlace") ArrayList<String> place,
@Query("idTarget") ArrayList<String> target,
@Query("idWeather") ArrayList<String> weather,
@Query("idWaytravel") ArrayList<String> waytravel,
@Query("sexuser") String sexuser);
В данном запросе:
1) @GET – тип выполняемого запроса (аннотация);
2) ("api/gift/ create-list ") – URL ссылка на название серверного метода;
3) Call< ResponseListItems > – объект типа ResponseListItems;
4) ListItems – метод интерфейса;
63
5) @Query("idPlace") ArrayList<String> place – аннотация, которая
показывает, что в качестве параметра запроса нужно поставить параметр массив
записей выбранных мест проживания.
Параметры, передаваемые в запросе списка вещей:
1) place – массив записей выбранных мест проживания;
2) target – массив записей выбранных целей;
3) weather – массив записей выбранной погоды;
4) waytravel – массив записей выбранных способов передвижения;
5) sexuser – пол пользователя.
Перед отправкой запроса и получением результата нужно произвести
инициализацию Retrofit'а и объекта интерфейса.
public void onCreate ()
{
super.onCreate();
retrofit = new Retrofit.Builder()
.baseUrl("https:// 127.0.0.1:8080") //Базовая часть адреса
//Конвертер,
.addConverterFactory(GsonConverterFactory.create())
необходимый для преобразования JSON'а в объекты
.build(); // метод который собирает экземпляр класса библиотеки;
umoriliApi = retrofit.create(UmoriliApi.class); //Создает объект, при помощи
которого будут выполняться запросы
}
Реализация запросов для составления списка вещей является ключевой
частью реализуемого приложения, но разрабатываемая система имеет и ряд
других
полезных
функций,
среди
которых
можно
выделить
работу
с
авторизованными пользователями приложения.
Авторизация может быть произведена с помощью аккаунта в Facebook,
Google или с использованием внутренней системы авторизации.
В качестве примера хотелось бы рассмотреть авторизацию при помощи
аккаунта в Facebook.
64
Для начала необходимо осуществить регистрацию в системе Facebook for
developers (рисунок 24) и скачать Facebook для Android.
Рисунок 24 – Главная страница Facebook for developers
Следующий шаг заключается в том, чтобы осуществить интеграцию
Facebook SDK. Facebook SDK (software development kit — набор средств
разработки, который позволяет пользоваться компонентами Facebook) для
Android позволяет без труда интегрировать приложение Android с Facebook. Этот
SDK предлагает целый ряд возможностей.
1) «Вход через Facebook»: авторизация с помощью учетных данных
Facebook;
2) account Kit: люди могут входить в приложение с помощью номера
телефона или адреса электронной почты;
3) диалоги
«Поделиться»
и
«Отправить»:
люди
могут
делиться
материалами приложения на Facebook;
4) события в приложении: регистрация событий в приложении;
5) API Graph: чтение и запись в API Graph (основной способ чтения и
записи данных в социальный граф Facebook, используемый приложениями).
65
Самый простой способ добавить в приложение «Вход через Facebook» —
это добавить LoginButton из SDK. LoginButton — это элемент пользовательского
интерфейса, который включает функции, доступные в LoginManager. Когда кто-то
нажимает кнопку, запускается процесс входа с разрешениями, настроенными в
LoginManager.
Кнопка
отслеживает
состояние
входа
и
отображает
соответствующий текст в зависимости от статуса авторизации человека.
Чтобы добавить кнопку «Вход через Facebook» необходимо добавить ее в
.xml файл.
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
Далее необходимо осуществить регистрацию обратного вызова. Это
необходимо для того, чтобы осуществить проверку успешного выполнения входа
в приложение.
В приложение одновременно может входить только один человек, и
LoginManager предоставляет ему данные профиля. Facebook SDK сохраняет эти
данные в общих настройках и задает их в начале сеанса.
Использовать приложение можно и без регистрации. Пользователь в таком
случае не сможет осуществлять взаимодействие с другими пользователями, но
весь оставшийся функционал будет ему доступен.
Одной из таких функций является подсчет рекомендуемого количества
вещей в поездку, алгоритм которого представлен на рисунке 25.
Вычисление рекомендуемого количества вещей в поездку производится на
основе полученной информации из таблицы «Список вещей», поля «Признак
количества». Поле «Признак Количества» может содержать четыре возможных
значения: «много», «средне», «мало», «одна».
66
Рисунок 25 – Блок-схема алгоритма подсчета рекомендуемого количества вещей в
поездку
67
Информация типа «много» указывает на то, что вещей данного типа может
потребоваться большое количество (пары носков, нижнее белье, расходные
материалы и др.).
Информация типа «средне» указывает на то, что вещей данного типа
может потребоваться среднее количество (футболки, обувь, платья и др.).
Информация типа «мало» указывает на то, что вещей данного типа может
потребоваться малое количество (разные виды нижней одежды, головной убор,
средства личной гигиены и др.).
Информация типа «одна» указывает на то, что вещей данного типа хватит
в единичном экземпляре (куртка, ноутбук, зарядное устройство и др.).
Расчет срока поездки осуществляется на основе введенных пользователем
данных о дате начала и окончания мероприятия при создании списка вещей.
Итоговое значение коэффициента CQ (conditions for quantity – условия для
количества) определяется исходя из перемножения коэффициентов, отвечающих
за выбранный размера багажа, признак количества и срока поездки. Разделение
срока поездки на 2 вида (меньше 14 дней и больше 14 дней) обусловлено тем, что
во время короткой поездки отсутствует надобность увеличивать количество
вещей.
Коэффициенты, отвечающие за размер багажа, составляют:
1) большой размер багажа (свыше 80 литров) = 0,9;
2) средний размер багажа (40-80 литров) = 0,6;
3) маленький размер багажа (до 40 литров) = 0,4.
Коэффициенты, отвечающие за признак количества, составляют:
1) много = 0,9;
2) средне = 0,5;
3) мало = 0,25.
Коэффициенты, отвечающие за срок поездки, составляют:
1) >= 14 дней = 1;
2) < 14 дней = 0,7.
68
Итоговые значения коэффициентов, без учета коэффициента, отвечающего
за срок поездки представлены в таблице 3.
Таблица 3 – Итоговые коэффициенты, без учета срока поездки
Признак кол-ва
Много
Средне
Размер чемодана
Большой
0,81
Средний
0,54
Маленький
0,36
Расчет количества будет осуществляться в цикле.
Мало
0,45
0,23
0,3
0,15
0,2
0,1
Начальным значением
является первая вещь из сформированного списка, конечное значение — это
последняя вещь из списка.
В условиях тела цикла осуществляется проверка информации, полученной
из поля «Признак количества». Если признак соответствует условию, то
осуществляется проверка срока поездка. Если срок поездки меньше 14 дней, то
конечный результат умножается на 0,7, если больше, то конечный результат не
изменяется (Приложение Б).
В конечном итоге можно вывести формулу (1) для расчета рекомендуемого
количества вещей. Данная формула имеет следующий вид:
 =  ∙  ∙ ,
(1)
где CT (count thing) – рекомендуемое количество вещей;
CQ (conditions for quantity) – коэффициент для подсчета количества вещей
с учетом размера багажа и признака количества вещи);
D (date) – срок поездки;
fD (factor date) – коэффициент, отвечающий за длительность поездки.
69
ЗАКЛЮЧЕНИЕ
В процессе выполнения выпускной квалификационной работы был
проведен анализ предметной области составления списка вещей для поездки. На
основе анализа была построена диаграмма вариантов использования на UML.
В рамках анализа был осуществлен обзор аналогов, в ходе которого было
охарактеризовано семь аналогов: лист бумаги и ручка, составление списка с
использованием
Excel,
«Упакуй
android-приложение
чемодан!»,
сайт
v-
dorogu.com, android-приложение «PackPoint», android-приложение «PackKing»,
android-приложение «uPackingList». Итогом анализа аналогов является сводная
таблица, в которой осуществлена общая оценка выбранных средств для
составления списка вещей в поездку.
Итогом рассмотрения аналогов и предметной области является список
функциональных
требований
и
решение
о
разработке
приложения
для
автоматизированного составления списка вещей в поездку. К основным
требованиям можно отнести:
1)
выбор
способа
передвижения,
погоды,
цели
поездки,
выбор
мероприятий и действий, которые будут совершены в поездке;
2)
сохранение, редактирование или удаление списка, добавление,
редактирование или удаление пунктов в сохранённом списке, изменение
количества вещей и оставление заметок;
3)
разделение списка на список вещей, которые нужно купить, которые
можно попросить у родственников, друзей или знакомых и на вещи, которыми
обладаете;
4)
просмотр советов по подготовке к путешествию и создание списка
необходимых дел, которые нужно выполнить перед поездкой;
5)
назначение ответственных за выполнение определённых дел, для
совершения поездки и др.
В проектной части работы был проведен выбор языковых средств и среды
разработки. В качестве языка программирования используется Java, в качестве
среды программирования
Android Studio. Для реализации базы данных
70
используется MySQL, а для работы с базой данный фреймворк Yii2 и библиотека
Retrofit 2.
В
целях
реализации
приложения
была
выбрана
клиент-серверная
архитектура, где клиентами являются пользователи приложения, а сервером –
база данных. В связи с этим была осуществлена разработка логической и
физической схемы базы данных, которые состоят из двадцати таблиц.
Также была разработана логика диалога с пользователем, которая
использовалась для создания прототипа дизайна разрабатываемого приложения.
Завершающим этапом дипломной работы является реализованный дизайн
приложения с использованием среды разработки и языка разметки XML,
заполненная база данных и разработанные запросы, необходимые для работы с
ней, также разработан ряд алгоритмов для реализации функциональных
требований.
Все поставленные задачи были решены. Цель работы была достигнута.
71
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Берд, Барри Java для чайников / Барри Берд. - М.: Диалектика / Вильямс,
2013. - 521 c.
2. В дорогу. Создайте список вещей для путешествия и поездок
[Электронный ресурс]. – Режим доступа: http://v-dorogu.com/
3. Газета.ru. Как правильно собрать чемодан в отпуск. [Электронный
ресурс].
–
Режим
доступа:
https://www.gazeta.ru/lifestyle/style/2014/06/a_6083817.shtml
4. Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей
Гарнаев, Сергей Гарнаев. - Москва: СПб. [и др.]: Питер, 2017. - 718 c.
5. Гонсалвес, Энтони Изучаем Java EE 7 / Энтони Гонсалвес. - М.: Питер,
2016. - 640 c.
6. Гупта, Арун Java EE 7. Основы / Арун Гупта. - М.: Вильямс, 2014. - 336 c.
7. Дейтел П., Дейтел Х., Уолд А. Android для разработчиков. 3-е изд. —
СПб.: Питер, 2016. — 512 с.: ил. — (Серия «Библиотека программиста»).
8. Лайфхакер. Инструкция для путешествия. [Электронный ресурс]. –
Режим доступа: https://lifehacker.ru/special/travel/
9. Максим Кузнецов, Игорь Симдянов - MySQL 5 - БХВ-Петербург, 2010. 1007 с.: ил.
10. Савитч, Уолтер Язык Java. Курс программирования / Уолтер Савитч. М.: Вильямс, 2015. - 928 c.
11. Хабр — ресурс для IT-специалистов. Retrofit 2. [Электронный ресурс]. –
Режим доступа: https://habr.com/post/314028/
12. Шилдт, Герберт Java 8. Руководство для начинающих / Герберт Шилдт. М.: Вильямс, 2015. - 720 c.
13. Электронная энциклопедия. Аналог. [Электронный ресурс]. – Режим
доступа: http://ru.wikipedia.org/wiki/Аналог
14. Электронная энциклопедия. Язык моделирования UML [Электронный
ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/UML.
72
15. Электронная энциклопедия. Microsoft Excel. [Электронный ресурс]. –
Режим доступа: http://ru.wikipedia.org/wiki/Microsoft_Excel
16. AppleInsider.ru. Владельцы iPhone покупают больше приложений, чем
пользователи Android. [Электронный ресурс]. – Режим доступа: Режим доступа:
https://appleinsider.ru/analysis/vladelcy-iphone-pokupayut-bolshe-prilozhenij-chempolzovateli-android.html
17. AppleInsider.ru. Отличие владельцев iPhone от пользователей Android.
[Электронный
ресурс].
–
Режим
доступа:
Режим
доступа:
https://appleinsider.ru/analysis/eksperty-vyyavili-eshhe-odno-otlichie-polzovatelej-iosi-android.html
18. Bourabai Reseach. Понятие клиент-серверных систем. [Электронный
ресурс]. – Режим доступа: http://bourabai.kz/dbt/client1.htm
19. Intellect.ml. Базы данных и знаний. виды баз данных. Реляционные и не
реляционные. [Электронный ресурс]. – Режим доступа: https://intellect.ml/bazydannykh-i-znanij-vidy-baz-dannykh-relyatsionnye-i-ne-relyatsionnye-153
20. Freelance.today – обозреватель в форме журнала. Основные принципы и
тренды в дизайне мобильных приложений [Электронный ресурс]. – Режим
доступа:
https://freelance.today/trendy/osnovnye-principy-i-trendy-v-dizayne-
mobilnyh-prilozheniy.html
21. Google Play. Приложение «Упакуй чемодан!» [Электронный ресурс]. –
Режим
доступа:
https://play.google.com/store/apps/details?id=world.easysolution.myluggagechecklist
22. Google Play. Приложение «PackPoint» [Электронный ресурс]. – Режим
доступа: https://play.google.com/store/apps/details?id=com.YRH.PackPoint
23. Google Play. Приложение «PackKing» [Электронный ресурс]. – Режим
доступа: https://play.google.com/store/apps/details?id=com.adotis.packking
24. Google Play. Приложение «uPackingList» [Электронный ресурс]. – Режим
доступа: https://play.google.com/store/apps/details?id=com.nixsolutions.upack
25. LiveJournal. Список для сбора в дорогу. [Электронный ресурс]. – Режим
доступа: https://t-demi.livejournal.com/20050.html
73
26. OBS Group. Android или iOS? Какую платформу выбрать для разработки
приложения.
[Электронный
ресурс].
–
Режим
доступа:
Режим
доступа://blog.sbssoft.ru/post/android-ili-ios-kakuyu-platformu-vybrat-dlya-razrabotkimobilnogo-prilozheniya
27. ProfSiteMaker. Основные принципы и тренды в дизайне мобильных
приложений.
[Электронный
ресурс].
–
Режим
доступа:
http://profsitemaker.com/index.php/blog-wrapper/blog/78-osnovnye-printsipy-i-trendyv-dizajne-mobilnykh-prilozhenij
28. Skyscanner. Как путешествовать налегке и экономить на багажных
сборах.
[Электронный
ресурс].
–
Режим
доступа:
https://www.skyscanner.ru/news/kak-puteshestvovat-nalegke-i-ekonomit-nabagazhnykh-sborakh
29. StatCounter. [Электронный ресурс]. – Режим доступа: Режим доступа:
http://gs.statcounter.com/os-market-share/mobile/worldwide
30. Vc.ru – бизнес, технологии, идеи, модели роста. Пользователи iOS более
любознательны, а пользователи Android предпоитают развлечения. [Электронный
ресурс]. – Режим доступа: https://vc.ru/31084-polzovateli-ios-bolee-lyuboznatelny-apolzovateli-android-predpochitayut-razvlecheniya
31. Yiiframework.
[Электронный
https://www.yiiframework.com
ресурс].
–
Режим
доступа:
74
ПРИЛОЖЕНИЕ А «РЕАЛИЗАЦИЯ СЛАЙДЕРА»
MainActivity.java
package com.example.bagach;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
private ViewPager mSlideViewPager;
private LinearLayout mDotLayout;
private TextView[] mDots;
private SliderAdapter sliderAdapter;
private Button mNextBtn;
private Button mBackBtn;
private int mCurrentPage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSlideViewPager = (ViewPager) findViewById(R.id.slideViewPager);
mDotLayout = (LinearLayout) findViewById(R.id.dotsLayout);
sliderAdapter = new SliderAdapter(this);
mSlideViewPager.setAdapter(sliderAdapter);
mNextBtn = (Button) findViewById(R.id.nextBtn);
mBackBtn = (Button) findViewById(R.id.prevBtn);
addDotsIndicator(0);
75
mSlideViewPager.addOnPageChangeListener(viewListener);
mNextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSlideViewPager.setCurrentItem(mCurrentPage + 1);
}
});
mBackBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSlideViewPager.setCurrentItem(mCurrentPage - 1);
}
});
}
public void addDotsIndicator(int position){
mDots = new TextView[3];
for (int i= 0; i< mDots.length; i++){
mDots[i] = new TextView(this);
mDots[i].setText(Html.fromHtml("$#8226"));
mDots[i].setTExtSize(35);
mDots[i].setTextColor(getResources().getColor(R.color.colorTransparentWhite));
mDotLayout.addView (mDots[i]);
if (mDots.length > 0){
mDots[position].setTextColor(getResources().getColor(R.color.colorWhite));
}
}
ViewPager.OnPageChangeListener viewListener = new
ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
76
}
@Override
public void onPageSelected(int i) {
addDotsIndicator(i);
mCurrentPage = i;
if(i==0){
mNextBtn.setEnabled(true);
mBackBtn.setEnabled(false);
mBackBtn.setVisibility(View.INVISIBLE);
mNextBtn.setText("Далее");
mBackBtn.setText("");
} else if (i == mDots.length - 1){
mNextBtn.setEnabled(true);
mBackBtn.setEnabled(true);
mBackBtn.setVisibility(View.VISIBLE);
mNextBtn.setText("Начать");
mBackBtn.setText("Назад");
} else {
mNextBtn.setEnabled(true);
mBackBtn.setEnabled(true);
mBackBtn.setVisibility(View.VISIBLE);
mNextBtn.setText("Далее");
mBackBtn.setText("Назад");
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
}
}
77
SliderAdapter.java
package com.example.bagach;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class SliderAdapter extends PagerAdapter{
Context context;
LayoutInflater layoutInflater;
public SliderAdapter(Context context) {
this.context = context;
}
//Arrays
public int [] slide_images = {
R.drawable.main_icon,
R.drawable.allweateher_icon,
R.drawable.people_icon,
}
public String[] slide_headings = {
"MAIN",
"ALLWEATHER",
"PEOPLE"
}
public String[] slide_descs ={
"Наш список вещей для Ваших целей"
"Создайте список вещей используя различные категории и факторы"
"Становитесь организатором поездки, распределите обязанности и
контролируйте деятельность группы"
}
78
@Override
public int getCount() {
return slide_headings.length;
}
@Override
public boolean isViewFromObject (View view, Object o {
return view == (RelativeLayout) o;
}
@Override
public Object instantiateItem (ViewGroup container, int position){
layoutInflater = (LayoutInflater)
context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.slide_layout, container, false);
ImageView slideImageView = (ImageView)
view.findViewById(R.id.slide_image);
TextView slideHeading = (TextView) view.findViewById(R.id.slide_heading);
TextView slideDescription = (TextView) view.findViewById(R.id.slide_desc);
slideImageView.setImageResource(slide_images[position]);
slideHeading.setText(slide_headings[position]);
slideDescription.setText(slide_descs[position]);
container.addView(view);
return view;
}
@Override
public void destroyItem (ViewGroup container, int position, Object object){
container.renoveView ((RelativeLayout)object);
}
}
79
ПРИЛОЖЕНИЕ Б «РЕАЛИЗАЦИЯ АЛГОРИТМА ПОДСЧЕТА
РЕКОМЕНДУЕМОГО КОЛИЧЕСТВА ВЕЩЕЙ В ПОЕЗДКУ»
Main.java
package com.company;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Calculating result = new Calculating();
System.out.println(Arrays.toString(result.TestList()));
}
}
ListThing.java
package com.company;
import java.util.Random;
public class ListThing {
final int countthing = 30; //количество вещей в списке
public String [] CreateList(){
Random random = new Random();
String[] list = new String[countthing];
for (int i = 0; i<countthing; i++) {
int one = random.nextInt(4)+1;
if (one == 1)
list[i] = "одно"; //Признак вещи - одно
if (one == 2)
list[i] = "мало"; //Признак вещи - мало
if (one == 3)
list[i]= "средне"; //Признак вещи - средне
if (one == 4)
list[i] = "много"; //Признак вещи - много
}
80
return list;
}
public int SizeBag (){
Random random = new Random();
return random.nextInt(3)+1;
// 3 - маленький размер багажа;
// 2 - среднй размер багажа;
// 1 - большой размер багажа;
}
public int DateTravel (){
Random random = new Random();
return random.nextInt(40)+1;
}
}
Calculating.java
package com.company;
import java.util.Arrays;
public class Calculating {
final double weather = 0.7; //коэффициент для большого багажа (много вещей)
ListThing list = new ListThing();
double CQmany;
double CQmid;
double CQfew;
public int [] TestList() {
int size = list.SizeBag();
int date = list.DateTravel();
String[] str = list.CreateList();
int[] countThing = new int[list.countthing];
// выбор соответсвующих значений коэффициента CQ, исходя из размера багажа
switch (size) {
case 1: //большой размер багажа
if (size == 1) {
CQmany = 0.81;
81
CQmid = 0.54;
CQfew = 0.36;
}
break;
case 2: //средний размер багажа
if (size == 2) {
CQmany = 0.45;
CQmid = 0.3;
CQfew = 0.2;
}
break;
case 3: //маленький размер багажа
if (size == 3) {
CQmany = 0.23;
CQmid = 0.15;
CQfew = 0.1;
}
break;
}
for (int i = 0; i < str.length; i++) {
if (str[i] == "много") { //признак количества = много
if (date > 14)
countThing[i] = (int) Math.ceil(date * CQmany * weather);
else
countThing[i] = (int) Math.ceil(date * CQmany);
}
if (str[i] == "средне") { //признак количества = средне
if (date > 14)
countThing[i] = (int) Math.ceil(date * CQmid * weather);
else
countThing[i] = (int) Math.ceil(date * CQmid);
}
if (str[i] == "мало") { //признак количества = мало
if (date > 14)
countThing[i] = (int) Math.ceil(date * CQfew * weather);
else
countThing[i] = (int) Math.ceil(date * CQfew);
}
if (str[i] == "одно") { //признак количества = одно
countThing[i] = 1;
}
}
return countThing;
}
Powered by TCPDF (www.tcpdf.org)
83
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА
ДОКУМЕНТА НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
Наименование
группы атрибутов
атрибута
1. Описание
Обозначение документа
документа
(идентификатор(ы)
файла(ов))
Наименование документа
Характеристики документа
на электронном носителе
Презентация.pptx
Демонстрационные плакаты
к выпускной
квалификационной работе
Класс документа
ЕСКД
Вид документа
Оригинал документа на
электронном носителе
Аннотация
Демонстрационный
материал, отображающий
основные этапы выполнения
выпускной
квалификационной работы
Использование документа Операционная система
Windows 7, Microsoft
PowerPoint 2010
2. Даты и время
Дата и время
20.06.2018
копирования документа
Дата создания документа 06.06.2018
Дата утверждения
20.06.2018
документа
3. Создатели
Автор
Мазур Г.А.
Изготовитель
Мазур Г.А.
4. Внешние ссылки Ссылки на другие
Удостоверяющий лист
документы
№ 140030
5. Защита
Санкционирование
ОГУ имени И.С. Тургенева
Классификация защиты
По законодательству РФ
6. Характеристики Объем информации
1121553 Б
содержания
документа
84
7. Структура
документа(ов)
Наименование плаката
(слайда) №1
Наименование плаката
(слайда) №2
Наименование плаката
(слайда) №3
Наименование плаката
(слайда) №4
Наименование плаката
(слайда) №5
Наименование плаката
(слайда) №6
Наименование плаката
(слайда) №7
Наименование плаката
(слайда) №8
Наименование плаката
(слайда) №9
Наименование плаката
(слайда) №10
Титульный лист
Цель и задачи выпускной
квалификационной работы
Диаграмма вариантов
использования
разрабатываемой системы
Сводная таблица сравнения
аналогов
Общая архитектура
разрабатываемого
приложения
Логическая модель базы
данных
Транзитивная сеть
взаимодействия пользователя
с системой
Примеры экранов
приложения
Примеры экранов
приложения
Реализация алгоритма для
подсчета рекомендуемого
количества вещей в поездку
Powered by TCPDF (www.tcpdf.org)
1/--страниц
Пожаловаться на содержимое документа