Файл: Разработка приложений для мобильных устройств (C#, Java) с использованием.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 16.02.2024

Просмотров: 124

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

Глава 1 Изучение предметной области

1.1 Описание разрабатываемого приложения

1.2 Моделирование разрабатываемого приложения

1.2.1 Моделирование приложения с использованием UML

1.2.2 Модель сценариев использования

1.2.3 Даталогическая модель

1.3 Анализ существующих приложений для составления списка покупок

1.4 Обзор и обоснование выбора инструментария для разработки приложения

1.5 Обоснование необходимости разработки приложения

Глава 2. Реализация мобильного приложения

2.1 Сбор данных для создания базы данных

2.2 UI и UX приложения

2.3 Основные функции программы

2.3.1. Предоставление списка рецептов и выбор рецепта для составления списка покупок

2.3.2. Добавление имеющихся продуктов

2.3.3. Составление списка покупок

2.4.1. Распознавание по виду продуктов

2.4.2. Распознавание по тексту на продукте

2.4.3. Распознавание по штрих-коду

Заключение

Список литературы

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

1.5 Обоснование необходимости разработки приложения

Чтобы понимать актуальность разрабатываемого приложение, необходимо оценить актуальность его основной цели – составления списка покупок. Согласно статье (Berndt, 2015) списки покупок выполняют важную роль в процесс покупок в магазине, предоставляют возможность людям не забывать купить продукты, контролировать процесс шоппинга, контролировать расход средств и выявлять продукты, которые нужны лишь дополнительно к списку.

Во-первых, использование списков продуктов сокращает количество «импульсивных» покупок, которые могут быть описаны как неожиданное и сильное желание купить что-то незамедлительно (Kollat, 1967).

Во-вторых, фокусируясь на покупке продуктов из заранее приготовленного списка, покупатель проводит меньше времени в магазине, таким образом повышая свою эффективность (Inman, 2009).

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

Таким образом составление списка покупок является несомненным преимущество для покупателя, поэтому разрабатываемое приложение актуально.

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

1.6 Выводы по главе 1

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


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

Глава 2. Реализация мобильного приложения

Разрабатываемая система базируется на архитектуре MVP (Model-View-Presenter). В этом случае элементы Activity и Fragment в структуре приложения выполняют роль View, отображающий различные данные на интерфейсе программы. Взаимодействие View с Model приложения, которое представлено в структуре как пакеты Models м ModelManagers, происходит только через пакеты Adapters, которые выполняют роль Presenter в приложении. Благодаря такой архитектуре реализуется разделение ответственности между компонентами, что позволяет легче понимать и поддерживать код приложения. Кроме того, достигается модульность системы, при которой появляется возможность менять View или Model, без влияния на другие компоненты приложения.

2.1 Сбор данных для создания базы данных

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

MySQL – это реляционная система управления базой данных. Данная СУБД (Система управления базами данных) может быть установлена на любом сервере, также существуют облачные сервисы, в которых данная MySQL уже встроена. При наличии большого активного сообщества, использующего MySQL, достигается большое количество документации и высокая надежность системы. Кроме того, MySQL является СУБД с открытым кодом, находящимся в свободном доступе.

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


Firebase это облачный сервис компании Google, доступный на Google Cloud Platform, предоставляющий доступ к NoSQL базе данных. Данное решение подходит для приложений, данные которой изменяются в реальном времени. Основным преимуществами сервиса являются бесплатное облачное хранилище, высокая скорость работы с базой данных и автоматическое обновления данных в приложении.

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

2.2 UI и UX приложения

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

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

2.3 Основные функции программы

Рассмотрим подробнее функционал разрабатываемого мобильного приложения. Основными функциональными требованиями к системе являются:


  1. Приложение должно отображать список рецептов
  2. Приложение должно отображать детали рецепта при клике на рецепт из списка
  3. Приложение должно позволять выбрать определенный рецепт для учета его ингредиентов во время составления списка покупок
  4. Приложение должно позволять добавить имеющийся у пользователя продукт, как с помощью распознавания продукта, так и с помощью ручного ввода его наименования
  5. Приложение должно составлять список покупок на основе выбранных рецептов и имеющихся продуктов

Далее представлено детальное описание реализации каждого требования.

2.3.1. Предоставление списка рецептов и выбор рецепта для составления списка покупок

Так как особенностью разрабатываемого приложения является интеграция с книгой рецептов, пользователю должны быть доступны следующие возможности:
1. Просмотр списка рецептов.
На вкладке приложения «Рецепты» пользователю отображается список рецептов, который включается в себя изображение рецепта, его автор и наименование. Данная функция реализована с помощью элемента RecyclerView и отображает данные о рецептах, находящиеся в облачной базе данных Firebase в таблице Recipes.
2. Просмотр деталей рецепта
При клике на определенный рецепт пользователь переходит на окно с информацией о данном рецепте. Кроме информации о названии, авторе и изображении готового блюда пользователю доступна информация о необходимых ингредиентах и инструкция по приготовлению блюда. Информация об ингредиентах берется из таблиц Ingredient (таблица с названиями ингредиентов), Uom (таблица с единицами измерения количества ингредиентов) и IngredientsUom (таблица с соответствием комбинации ингредиента и единицы измерения определенному рецепту).
3. Выбор рецепта
В окне деталей рецепта пользователь может выбрать рецепт для его последующего учета в генерации списка покупок. Выбранные рецепты отображаются на вкладке «Выбранные» и могут быть оттуда нажатием на кнопку удаления рядом с соответствующим рецептом. Список этих рецептов хранится в телефоне пользователя с помощью SQLite.
4. Поиск рецепта
Так как список рецептов может быть очень объемным, пользователю доступна функция поиска нужного рецепта по полному или частичному названию. Данная функция была реализована путем фильтрации рецептов по названию в RecyclerView.
5. Добавление нового рецепта
Пользователи приложения могут добавить свой рецепт, указав название рецепта, его автора, инструкцию по приготовлению, а также загрузив изображения блюда и добавив ингредиенты рецепта. Информация о добавленном рецепте отправляется в базу данных Firebase и автоматически становится доступна для всех пользователей. Таким образом база рецептов будет пополняться новыми рецептами. Кроме того, перед загрузкой изображения, пользователь должен дать разрешение приложению на использование данной функции.


Рис. 6. Интерфейс списка рецептов, деталей рецепта и добавления нового рецепта

2.3.2. Добавление имеющихся продуктов

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

Рис. 7. Интерфейс добавления продуктов

2.3.3. Составление списка покупок

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

  • Удобство чтения текста в списке покупок
  • Возможность использовать сгенерированный список с большим удобством, чем рукописный
  • Простота удаления продукта из списка

Рис. 8. Вид списка покупок

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

2.4 Распознавание продуктов