Андроид приложение проверки состава продукта

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

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

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

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

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

Федеральное государственное автономное образовательное учреждение высшего образования

"Высшая Школа Экономики"

Факультет компьютерных наук

Департамент программной инженерии

Выпускная квалификационная работа

Андроид приложение проверки состава продукта

Куленко Н.А.

Москва 2018

Реферат

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

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

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

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

Ключевые слова: здоровая еда, безопасная еда, андроид-приложения, штрих-код

Abstract

Today people spend a lot of time on choosing food in the supermarket. A lot of them read the composition and try to find safe food for themselves.

There are several solutions to help people choose food, but xisting applications focus on making offer using programmatically laid down selection criteria and the users cannot make it individual for themselves.

To solve this problem, we develop an application that can help people to choose the products according to an individual list of unacceptable ingredients.

This paper describes the technologies, algorithms, and architectural solutions used in the development of the application.

The paper contains 43 pages, 3 chapters, 29 illustrations, 6 tables, 20 bibliography items.

Keywords - healthy food; barcode scanner; safe food; android application.

Оглавление

Введение

Глава 1. Обзор аналогов

1.1 Приложения для определения безопасности продуктов

1.2 Штрих-код как идентификация продукта

1.3 Доля рынка системы Android

1.4 Компоненты Android-приложения

1.5 Подходы к распознаванию штрих-кодов с использованием средств Android

Глава 2. Проектирование приложения

2.1 Архитектура приложения

2.2 Работа с HTTP запросами

2.3 Проектирование взаимодействия с пользователем

Глава 3. Разработка мобильного приложения

3.1 Используемые средства и технологии

3.3 Реализация сканирования штрих-кода

3.4 Сетевое взаимодействие

3.5 Отображение результата поиска

3.6 Разработка интерфейса приложения

Заключение

Список использованных источников

Определения, обозначения и сокращения

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

E - Все добавки имеют свой уникальный номер, который начинается с буквы "E". Кодекс Алиментариус содержит систему нумерацию для международной классификации.

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

Retrofit - Библиотека для Android и Java, которая является инструментом для работы с API в клиент-серверных приложениях.

JSON - текстовый формат обмена данными, основанный на принципе ключ-значение.

GSON -библиотека, разработанная компанией Google, которая позволяет конвертировать JSON-объекты в Java-объекты и наоборот.

Mobile Vision API - программный API для распознавания штрих-кода.

MySQL - открытая реляционная система управления базами данных.

Введение

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

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

1. Продукты для диабетиков,

2. Продукты без консервантов,

3. Продукты без красителей и ароматизаторов,

4. Продукты без ГМО,

5. Полностью натуральный состав продуктов.

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

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

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

Для достижения цели необходимо решить следующие задачи:

1. Анализ существующих решений.

2. Выбор способа идентификации товаров.

3. Формулировка требований к приложению и составу выполняемых функций.

4. Выбор архитектурного решения, методов и подходов к реализации.

5. Проектирование интерфейса и взаимодействия пользователя с приложением.

6. Реализация выбранных методов и подходов.

7. Тестирование.

8. Разработка технической документации.

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

Глава 1. Обзор аналогов

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

1.1 Приложения для определения безопасности продуктов

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

Первая группа формирует рейтинг продуктов питания на основе отзывов пользователей. Одним из самых популярных таких решений является приложение Rate&Goads (ООО "Рейтенгудс", https://clck.ru/DTiqD).

Вторая группа формирует рейтинг на основе исследований безопасности входящих в продукты ингредиентов. Наиболее популярные решения - Проверь ингредиенты (Игорь Никифоров, https://clck.ru/DTiww), Росконтроль (Росконтроль, https://clck.ru/DTirm), FoodCheck (Артем Лукянов, https://clck.ru/DTiu6). Особое внимание уделено именно пищевым добавкам. В странах Евросоюза с 1953 года разработана система нумерации для классификации пищевых добавок [1]. У каждой добавки свой уникальный номер, начинающийся с буквы "E" (табл.1).

Таблица 1

Категории пищевых добавок

Категория

Название

Красители

E100 - E199

Консерванты

E200 - E299

Антиокислители

E300 - E399

Стабилизаторы, загустители, эмульгаторы

E400 - E499

Регуляторы рН и вещества против слёживания

E500 - E599

Усилители вкуса и аромата, ароматизаторы

E600 - E699

Антибиотики

E700 - E799

Резерв

E800 - E899

Прочие

E900 - E999

Дополнительные вещества

E1100 - E1999

Rate&Goads

Приложение Rate&Goads предоставляет пользователям возможность распознать товар посредством камеры мобильного телефона, используя штрих-код или QR-Code. Также есть возможность осуществить поиск по названию товара (рис.1).

Рисунок 1. Rate&Goads Главное меню

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

Рисунок 2. Rate&Goads Описание товара

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

Проверь ингредиенты

Через камеру смартфона мобильное приложение распознает продукт по штрих-коду посредством ручного ввода или камерой устройства (рис. 3).

Рисунок 3. Интерфейс приложения "Проверь ингредиенты"

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

Рисунок 4. Влияние добавок "Проверь ингредиенты"

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

FoodCheck

Данное приложение предоставляет возможность отсканировать штрих-код при помощи камеры устройства или ввести его вручную. А также осуществить поиск по составу продукта (рис. 5).

Рисунок 5. Интерфейс приложения FoodCheck

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

Рисунок 6. Результат распознавания продукта

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

Росконтроль

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

Рисунок 7. Интерфейс приложения "Росконтроль"

Продукты рассортированы по категориям и рядом с каждым указан индекс безопасности, который формируется на основе 4 факторов: безопасность, натуральность, полезность, дегустация (рис. 8).

Рисунок 8. Информация о продукте "Росконтроль"

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

Каждое приложение имеют свою специфику, но можно выделить основные общие функции. Ниже представлена табл.2 с кратким обзором основных возможностей рассмотренных приложений.

Таблица 2

Краткий обзор существующих приложений

R&G

Проверь ингредиенты

FoodCheck

Росконтроль

Проверь состав

Сканирование штрих-кода

+

+

+

-

+

Содержание Е-добавок

-

+

+

+

+

Возможность проверки индивидуального списка непереносимых ингредиентов

-

-

-

-

+

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

1. Регистрация и авторизация пользователя.

2. Ведение индивидуального списка запрещенных ингредиентов.

3. Идентификация товара с помощью камеры мобильного устройства.

4. Поиск данного продукта в базе данных.

5. Проверка состава продукта на наличие стоп-ингредиентов для пользователя

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

7. Хранение истории поиска.

8. Предложение разрешенных продуктов из категории, к которой принадлежит выбранный продукт.

1.2 Штрих-код как идентификация продукта

В 1949 году Бернард Силвер и Норман Джозеф Вудланд подали заявку в Патентное ведомство США на признание системы идентификации товаров с использованием штрих-кодов изобретением. В 1952 году патент был получен.

Наиболее распространенным стандартом штрихового кодирования продукции и товаров является в настоящее время система EAN (European Article Number - Европейский Номер Товара), разработанная на основе американской системы UPC (Universal Product Code - Универсальный Код Товаров) [2].

Существует три разновидности кода EAN:

1. EAN-13 - полный код, содержащий 13 цифр.

2. EAN-8 - сокращенный код, содержащий 8 цифр.

3. EAN-128 - расширенный код, содержащий любое количество цифр и букв, объединенных в регламентируемые группы.

Коды EAN-8 и EAN-13 содержат исключительно цифры и никаких букв или других символов. Например, 46028500032632.

Штриховые коды EAN-8 используются для нанесения на изделия малых габаритов, на которых стандартные коды EAN-13 не умещаются, а также при проведении логистических и сортировочных операций с использованием быстродвижущихся конвейеров - сокращенный размер кода на этикетке снижает вероятность его ошибочного считывания.

Формат EAN-128 предназначен для передачи информации о товаре не потребителям, а другим промышленными предприятиями. Число 128 в названии кода означает не его длину, как в кодах EAN-8 и EAN-13, а то, что в нем используется словарь Code-128 и группы кодов, а сама длина не регламентирована. Код может содержать разнообразную информацию, например, код товара, сроки годности, размеры, объём, код партии производителя и т.д.

Далее подробно будет рассмотрен код EAN-13, так как именно он массово используется для маркировки продукции легкой промышленности.

Код EAN-13 состоит из 13 комбинаций штрихов различной ширины, размещенных на различном расстоянии друг от друга. Каждая комбинация шифрует одну из арабских цифр от ноля до девяти (рис.9).

Рисунок 9. Расшифровка линейного штрих-кода

Номер товара по системе EAN-13 имеет следующую структуру:

· первые 2-3 цифры региональный код (префикс) страны, где зарегистрирован данный номер;

· следующие 4-5 цифр - регистрационный номер предприятия в данной стране;

· следующие 3-5 цифр - порядковый номер продукции внутри предприятия;

· последняя 13-я цифра - контрольное число, которое вычисляется из предыдущих двенадцати.

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

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

Таким образом, штрих-код разумно выбрать в качестве способа идентификации продуктов.

1.3 Доля рынка системы Android

Android используется на самых разных устройствах. Это и смартфоны, и планшеты, и телевизоры, и смарт-часы, и ряд других гаджетов. Операционной системой Android пользуется около 85% владельцев смартфонов по подсчетам за 2017 год, а общее количество пользователей смартфонов на операционной системе Android оценивается в 1,5 млрд. человек по всему миру.

ОС Андроид была создана разработчиком Энди Рубином (Andy Rubin) в качестве операционной системы для мобильных телефонов и поначалу развивалась в рамках компании Android Inc. Но в 2005 году Google купил Android Inc. и начал развивать операционную систему с новой силой. На данный момент последней версией является Android 8.0 Oreo, которая вышла в августе 2017 года [3].

В табл.3 представлена доля рынка, занимаемая версиями android по данным на 2017 год.

Таблица 3

Доля рынка версий Android

Версия

Кодовое имя

Дата выпуска

Уровень API

Доля рынка

8.0

Oreo

21 августа 2017

26

0,3%

7.1

Nougat

4 октября 2016

25

3%

7.0

Nougat

22 августа 2016

24

17,6%

6.0

Marshmallow

5 октября 2015

23

30,9%

5.1

Lollipop

9 марта 2015

22

20,8%

5.0

Lollipop

3 ноября 2014

21

6,4%

4.4

KitKat

31 октября 2013

19

13,8%

4.3

Jelly Bean

24 июля 2013

18

0,9%

4.2

Jelly Bean

13 ноября 2012

17

3,1%

4.1

Jelly Bean

9 июля 2012

16

2,2%

4.0

Ice Cream Sandwich

16 декабря 2011

15

0.5%

2.3

Gingerbread

9 февраля 2012

10

0.5%

Таким образом, актуальными версиями являются Android Oreo, Nougat, Marshmallow и Android Lollipop, на которые следует ориентироваться.

Архитектура Android

В данном разделе рассматриваются уровни архитектуры, входящие в операционную систему Android с подробным описанием входящих в них компонентов (рис.10) [4].

Рисунок 10. Архитектура Android

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

2. Application Framework. Выступает в роли каркаса приложений. Через него разработчики имеют возможность получить доступ к API компонентов системы, которые лежат на уровне ниже.

3. Libraries. На этом уровне находится набор C/C++ библиотек, которые используются различными компонентами системы. Доступ к этим возможностям разработчики могут получить в контексте применения Android Aplication Framework.

4. Android Runtime - среда выполнения. Основными составляющими которой являются набор библиотек ядра и виртуальная машина.

5. Linux Kernel. Ядро Android основано на Linux версии 2.6.

В данной работе используются первые два слоя.

Структура Android-приложения

Независимо от сложности приложения, структура всегда будет одинаковой. Существуют обязательные и опциональные элементы приложения. Табл.4 описывает составляющие Android-приложения [4].

Таблица 4

Составляющие структуры Android-приложений

Название

Описание

Необходимость

gen

Файлы, сгенерированные самой Java.

Да

AndroidManifest.xml

Файл манифеста AndroidManifest.xml предоставляет системе основную информацию о программе. У каждого приложения свой файл манифеста

Да

src

Каталог содержащий исходны код приложения

Да

assets

Произвольное собрание каталогов и файлов

Нет

res

Каталог, который содержит ресурсы приложения. В данном каталоге могут находиться подпапки drawable, anim, layout, menu, values, xml и raw

Да

1.4 Компоненты Android-приложения

Компоненты Android-приложения можно отнести к одному из четырех типов: Activity, Service, Content Provider, Broadcast Receiver.

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

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

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

Broadcast Receiver - представляет собой компонент, который реагирует на сообщения распространяемые по всей системе.

Компоненты трех из четырех возможных типов - Activity, Service, Content provider - активируются асинхронным сообщением, которое называется Intent (намерение). Intent создается с помощью объекта Intent, который описывает запрос на активацию либо конкретного компонента, либо компонента конкретного типа - соответственно, намерение Intent может быть явным или неявным [5].

Жизненные циклы

Объекты Activity, fragment, service обладают определенным жизненным циклом внутри Android. На рис.11 ниже можно увидеть пути, которые Activity может пройти между состояниями. Прямоугольниками обозначены методы обратного вызова, которые можно реализовать для выполнения действий между переходами операции из одного состояния в другое.

Рисунок 11. Жизненный цикл Activity [5]

При разработке приложения необходимо учитывать эти этапы для корректной работы приложения.

1.5 Подходы к распознаванию штрих-кодов с использованием средств Android

Так как в качестве средства идентификации товаров будет использоваться штрих-код далее необходимо рассмотреть способы его распознавания на платформе Android.

Существует три популярных библиотеки сканирования штрих-кода для разработки Android приложений. Выбор библиотеки для проекта требует знания относительных сильных и слабых сторон этих библиотек (ZXing, ZBar и Mobile Vision API).

А. ZXing

Сканер штрих-кода Zxing представляет собой сканер штрих-кода с открытым исходным кодом [6]. ZXing - самая старая из этих трех, это хорошо поддерживаемая библиотека. Это проект Google с 2007 года и по-прежнему получает регулярные обновления. Проект состоит из базовой библиотеки Java, которая обрабатывает декодирование для всех платформ и множество приложений для платформы (включая Android, Glass, Java SE и Интернет). ZXing обеспечивает достаточно быстрое и точное сканирование штрих-кодов [7].

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

B. Zbar

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

ZBar невероятно быстро обнаруживает штрих-коды и обнаруживает штрих-код в другой ориентации. Как и ZXing, ZBar состоит из базового кроссплатформенного детектора штрих-кода и библиотек для платформы, использующих детектор. В отличие от ZXing, ZBar легко интегрируется. Он существует как настоящая Android-библиотека и захватывает API-интерфейсы камеры без особых проблем.

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

C. Mobile Vision API

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

Классы для обнаружения и разбора штрих-кодов доступны в пространстве имен com.google.android.gms.vision.barcode. Тип штрих-кода представляет собой один признанный штрих-код и его значение. В случае 1D штрих-кода, такого как UPC-коды, это будет просто номер, который закодирован в штриховом коде [9].

Однако, все же есть некоторые ограничения. Функция сканирования основного штрих-кода - это собственная библиотека, которую API Mobile Vision необходимо загрузить на устройство. Библиотека Mobile Vision даже не пытается загрузить собственную библиотеку, если пользовательское устройство сообщает, что памяти недостаточно. Низкий объем памяти может означать, что до 10% свободного пространства пользователя по-прежнему свободны. Библиотека не дает хорошей обратной связи разработчику, что это происходит.

Табл.5 показывает достоинства и недостатки описанных библиотек:

Таблица 5

Сравнение библиотек

Достоинства

Недостатки

ZXing

Качественная документация, по-прежнему поддерживается, быстро обнаруживает штрих-код, верно распознает.

Сложна для интеграции, камера должна находиться в одной ориентации со штрих-кодом

Zbar

Очень быстро обнаруживает штрих-код, легко интегрируется, обнаруживает в различных ориентациях

Слабое качество распознавания, документация практически отсутствует.

Mobile Vision API

Быстро обнаруживает и качественно распознает в различных ориентациях.

Использует собственную библиотеку, загрузка которой не будет осуществлена, если память устройства менее 10%

Все три рассмотренные библиотеки имеют какие-либо преимущества и недостатки, Mobile Vision API обеспечивают быструю и точную проверку штрих-кода в различной ориентации камеры.

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

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

Глава 2. Проектирование приложения

В данной главе описано проектирование архитектуры и моделей данных для решения поставленных задач.

2.1 Архитектура приложения

MVP (Model-View-Presenter) выбрана в качестве архитектуры приложения. Назначение данного архитектурного паттерна - отделение пользовательского интерфейса от данных приложения и методов их обработки (бизнес-логики). Это достигается путем введения дополнительного объекта - презентора. Диаграмма взаимодействия всех трех частей показана на рис.12.

Рисунок 12. Архитектура MVP [10]

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

View - отвечает за визуализацию данных, полученных от модели.

Presenter - связующее звено между моделью и представлением. Отвечает за обработку событий в представлении.

Приложение разделено на независимые блоки для работы с HTTP запросами, моделями, адаптерами списков и самих экранов.

Каждое activity является наследником базового класса BaseActivity, которое предоставляет возможность показывать всплывающие подсказки, являющиеся одинаковыми для всех экранов приложения.

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

Рисунок 13. Трехуровневая архитектура приложения

2.2 Работа с HTTP запросами

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

· Метод doInBackground(): выполняется в фоновом потоке, должен возвращать определенный результат

· Метод onPreExecute(): вызывается из главного потока перед запуском метода doInBackground()

· Метод onPostExecute(): выполняется из главного потока после завершения работы метода doInBackground()

· Метод onProgressUpdate(): позволяет сигнализировать пользователю о выполнении фонового потока

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

Запросы реализованы с помощью REST модели, приложение обменивается с сервером данными, используя формат JSON. Для каждой единицы информации (info) определено 5 действий:

1. GET /info/ - получает список всех объектов.

2. GET /info/{id}- получает информацию о объекте.

3. PUT /info/ или POST /info/- создает новый объект.

4. POST/info/{id} или PUT /info/{id}- изменяет данные с идентификатором {id}.

5. DELETE /info/{id} - удаляет данные с идентификатором {id}.

Модель базы данных

Были выделены следующие необходимые сущности, которые необходимо хранить для реализации функций приложения (табл.6):

Таблица 6

Сущности базы данных

Название сущности

Название поля

Тип

Описание

User

ID

integer

Пользователь

email

varchar

password

varchar

Ingredient

ID

integer

Ингредиент

Name

varchar

Product

ID

integer

Продукт

Name

varchar

Category

varchar

Barcode

varchar

Prod_User

ID

integer

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

Prod_ID

varchar

User_ID

varchar

Prod_Ingr

ID

integer

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

Prod_ID

varchar

Ingr_ID

varchar

Ingr_User

ID

integer

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

Ingr_ID

varchar

User_ID

varchar

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

Наполнение базы данных производится, используя каталог магазина ВкусВилл с официального сайта [11].

2.3 Проектирование взаимодействия с пользователем

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

Рисунок 15. Макет окон взаимодействия с клиентом

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

Спроектирована архитектура приложения, рассмотрены особенности работы с HTTP-запросами, спроектирована база данных приложения, спроектировано взаимодействия с пользователем

Глава 3. Разработка мобильного приложения

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

3.1 Используемые средства и технологии

Приложение разрабатывалось в среде Android Studio. Данное программное обеспечение рекомендует компания Google для разработки приложений для платформы Android и предоставляет все технологии и языки, которые необходимы для создания программ на устройства под управлением данной операционной системы. Основным языком разработки клиентской части был Java, для реализации серверной части использовался язык php.

Существует множество способов, с помощью которых может быть реализовано сетевое взаимодействие в Android приложении. Можно использовать встроенную в платформу стандартную библиотеку [12], а также и сторонние библиотеки. Самой большой популярностью из них пользуются OkHttp [13], Volley [14] и Retrofit [15]. Помимо непосредственного выполнения сетевых запросов, необходимо также выполнять сериализацию / десериализацию данных и обеспечить асинхронность. Так как стандартные средства и OkHttp предоставляют лишь базовые возможности, выбор происходил между Volley и Retrofit. Данные библиотеки дают возможность легко выполнять http - запросы, обеспечивают асинхронное выполнение и предоставляют средства для синхронизации, однако Retrofit также имеет встроенные инструменты для сериализации и десериализации данных в формат JSON [16]. Для этого используется библиотека GSON [17] от компании Google. Помимо этого, Retrofit обладает большей производительностью [18].

Для реализации хранилища данных была выбрана СУБД MySQL [19] - свободная реляционная система управления базами данных.

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

3.3 Реализация сканирования штрих-кода

При нажатии на кнопку проверки состава в главной Activity инициализируется Intent для сканирования штрих-кода и запускается с ожиданием результата.

public void scanBarcode(View v)

{

Intent intent = new Intent(this,ScanBarcodeActivity.class);

startActivityForResult(intent,0);

}

После запуска камеры и получении отсканированного штрих-кода данные передаются в главную форму.

@Override

public void receiveDetections(Detector.Detections<Barcode> detections) {

final SparseArray<Barcode> barcodes =detections.getDetectedItems();

if (barcodes.size()>0){

Intent intent= new Intent();

intent.putExtra("barcode",barcodes.valueAt(0)); //get latest barcode

setResult(CommonStatusCodes.SUCCESS,intent);

finish();

}

}

Главная Форма получает результат сканирования штрихкода, сохраняет переданный штрих-код в строковую переменную и вызывает метод для получения списка ингредиентов данного продукта.

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode==0)

{

if (resultCode== CommonStatusCodes.SUCCESS)

{

if (data!=null){

Barcode barcode= data.getParcelableExtra("barcode");

barcodeResult.setText("Barcode value: "+barcode.displayValue);

barcodevalue=barcode.displayValue;

getprod();

}

else {

barcodeResult.setText("No barcode found");

}

}

}

3.4 Сетевое взаимодействие

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

public interface Request {

@GET("GetProdIngr.php/")

Call<Object> getpi(@Query("barcode") String BarcodeId);

}

Вызов осуществляется асинхронно в новом потоке, с помощью объекта наследующего данный интерфейс класса. После завершения запроса происходит вызов методов onResponse() или onFailure(). Через вызов метода response.body() можно получить десериализованный из JSON в Java - объект ответ сервера. Пример получения ингредиентов продукта с сервера представлен ниже.

public void getprod()

{

String barc=barcodevalue;

Call<Object> call = req.getpi(barc);

System.out.println(call.toString());

call.enqueue(new Callback<Object>() {

@Override

public void onResponse(Call<Object>call, Response<Object> response) {

System.out.println(response.body().toString());

Gson gson = new Gson();

ProductList Ingredients = gson.fromJson(response.body().toString(), ProductList.class);

for (Product i : Ingredients.getProduct()) {

adapter.add(i.getName());

System.out.println(i.getName());

}

}

@Override

public void onFailure(Call<Object> call, Throwable t) {

System.out.println("Request error");

}

});

}

3.5 Отображение результата поиска

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

Сначала мы создаем xml-разметку добавляем ListView на форму.

<ListView

android:id="@+id/IngrList"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginEnd="4dp"

android:layout_marginTop="30dp"

android:choiceMode="multipleChoice"

tools:layout_editor_absoluteY="20dp">

</ListView>

Для формирования списка используются Адаптеры для связи массива данных с набором элементов. Наш список ингредиентов ListView состоит из множества элементов TextView. ArrayAdapter<T> представляет собой один из возможных адаптеров для работы с ListView. У каждого объекта из массива данных он вызывает метод toString()и размещает полученный результат в отдельных элементах TextView.

ArrayList<String> Ingr = new ArrayList<>();

ArrayAdapter<String> adapter;

ListView IngrList;

// получаем экземпляр элемента ListView

IngrList = findViewById(R.id.IngrList);

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, Ingr);

IngrList.setAdapter(adapter);

Для начала получаем экземпляр элемента ListView и далее создаем для него адаптер:

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, Ingr);

Конструктор, который используется для создания адаптера состоит из 3 элементов:

· this - текущий объект активити.

· android.R.layout.simple_list_item_multiple_choice - разметка с множественным выбором элементов.

· Ingr - массив данных из которых наполняется ListView.

В завершении устанавливаем адаптер для ListView, используя метод SetAdapter().

Наполнение списка происходит при получение результата с сервера в методе onResponse(). Про сетевое взаимодействие написано выше.

ProductList Ingredients = gson.fromJson(response.body().toString(), ProductList.class);

for (Product i : Ingredients.getProduct()) {

// наполнение списка

adapter.add(i.getName());

}

Метод getName()получает имя ингредиента из десериализованного JSON и адаптер добавляет его в ListView.

Сервер

Серверное приложение реализовано на языке PHP. В качестве хранилища данных используется СУБД MySQL. Для администрирования базы данных используется phpMyAdmin [20].

Сервер выполняет следующие функции:

1. Регистрация и авторизация пользователей.

2. Получение списка ингредиентов.

3. Получение, обновление списка ингредиентов для конкретного пользователя.

4. Получение списка ингредиентов для конкретного продукта.

5. Получения списка продуктов для пользователя.

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

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

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

$host = 'localhost:3306'; // адрес сервера

$database = 'u0497934_DB'; // имя базы данных

$user = 'u0497_admin'; // имя пользователя

$password = 'cWsp37_5'; // пароль

$link = mysqli_connect($host, $user, $password, $database)

or die("Err " . mysqli_error($link));

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

if (isset($_GET['barcode'])) $id = htmlentities($_GET['barcode']);

$query ="SELECT *FROM prod_ingr WHERE Prod_ID= '$id";

$result = mysqli_query($link, $query) or die("Err " . mysqli_error($link));

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

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

foreach($result as $row){

$Id = $row["ID"];

$name = $row["Ingr_ID"];

$arr = array('ID' => $Id, 'Name' => $name);

array_push($arr1,$arr);

}

$arr1=array('Ingredients'=>$arr1);

echo json_encode($arr1, JSON_UNESCAPED_UNICODE);

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

3.6 Разработка интерфейса приложения

Дизайн приложения разрабатывался с учетом Material Design. На сайте material.io есть возможность посмотреть принципы и подходы к проектированию как отдельных элементов макета страницы, так и отдельных элементов в целом. Также есть возможность импортировать готовый набор цветовых схем и иконок для приложения. Интерфейс выбора иконок и цветовых схем представлены на рис. 16 и 17.

Рисунок 16. Material Icons

Можно выбрать тип внешнего вида иконок и скачать в одном из двух форматов SVG или PNG

Рисунок 17. Material Colors

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

Для реализации взаимодействия с пользователем можно выделить несколько типов окон:

Макет окна регистрации и авторизации построены по сходному типу. На рис. 18,19 можно увидеть интерфейс данных окон в среде разработки.

Рисунок 18. Экран авторизации Рисунок 19. Экран регистрации

Экраны авторизации и регистрации состоят из следующих элементов

1. EditText - Редактируемые поля ввода логина и пароля.

2. TextView - Отображение названия приложения.

3. ImageView - Отображение логотипа приложения.

4. Button - Кнопки регистрации и авторизации.

Макет главного экрана в среде разработке можно увидеть на рис. 20, 21.

Рисунок 20. Главное окно приложения Рисунок 21. Окно навигации

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

1. TextView - Отображение названия приложения, почты пользователя, названий кнопок.

2. ImageView - Отображение логотипа приложения.

3. Button - Содержимое главного окна отражено двумя кнопками "Проверить продукт" и "Стоп-лист".

4. NavigationView - Окно навигации.

5. Item - Элементы окна навигации, связанные с иконками, предварительно добавленными в папку проекта.

Макет окна стоп-листа и базы ингредиентов построены по сходному типу. На рис. 22, 23 можно увидеть интерфейс данных окон в среде разработки.

Рисунок 22. Стоп-лист Рисунок 23. База ингредиентов

Экраны "Стоп-лист" и "База ингредиентов" состоят из следующих элементов:

1. ListView- Список ингредиентов с возможностью множественного выбора.

2. Float Action Button - Кнопки основных действий текущих окон

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

Рисунок 24. История поиска Рисунок 25. Предложения из категории

Экраны "История поиска" и "Предложения из категории" состоят из следующих элементов:

1. ListView- Список продуктов, состоящий из двух уровней, отображающих название продукта и штрих-код продукта.

2. TextView - Для отображения каждого элемента сформирована отдельная разметка.

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

Рисунок 26. Предпросмотр камеры Рисунок 27. Результат сканирования

Экраны "Предпросмотр камеры" и "Результат сканирования" состоят из следующих элементов:

1. SurfaceView- Запуск предпросмотра камеры.

2. TextView - Для отображения названия продукта, штрих-кода и категории.

3. ListView- Список ингредиентов продукта с возможностью множественного выбора.

4. Float Action Button - Кнопка добавления ингредиентов в свой стоп лист.

5. Button - Кнопка отображения продуктов из категории.

Также учтена необходимость вывода всплывающих подсказок и сообщений об ошибках для улучшения взаимодействия с пользователем. Они включают в себя сообщения об ошибках при заполнении полей email и password в окнах регистрации и авторизации (рис 28). Реализуется при помощи метода EditText.SetError.

Рисунок 28. Сообщения об ошибках

При успешном выполнении команд на сервере пользователь также оповещается. Например, об успешном добавлении ингредиентов в стоп-лист на странице информации о товаре (рис.29). Реализуется при помощи всплывающего окна SnackBar.

Рисунок 29. Всплывающее окно

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

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

Заключение

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

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

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

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

1. Регистрация и авторизация пользователей.

2. Ведение индивидуального списка запрещенных ингредиентов.

3. Идентификация товара с помощью камеры мобильного устройства.

4. Поиск данного продукта в базе данных.

5. Проверка состава продукта на наличие стоп-ингредиентов для пользователя

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

7. Хранение истории поиска.

8. Предложение разрешенных продуктов из категории, к которой принадлежит выбранный продукт.

Клиентская часть приложения реализована в Android Studio, на языке Java. Серверное приложение разработано на языке PHP. Для хранилища данных используется СУБД MySQL .Сетевое взаимодействие реализовано с использованием библиотеки Retrofit, форматом передачи данных является JSON, а для его обработки используется библиотека GSON.

Разработаное клиент-серверное приложение, удовлетворяет всем требованиям технического задания (Приложение А). Интерфейс приложения спроектирован с учетом Material Design, рекомендованным Google для разработки мобильных приложений. Использована трехуровневая архитектура приложения, где сервер является связующим звеном между клиентом и базой данных, получая запрос от пользователя, обращается к базе данных и возвращает результат в клиент.

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

Разработан комплект технической документации.

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

Список использованных источников

1. Классификация добавок [Электронный ресурс]. - Режим доступа: http://viplab.org/?p=804, свободный. (дата обращения: 20.05.2018)

2. E. Basker. "Raising the Barcode Scanner: Technology and Productivity in the Retail Sector." American Economic Journal: Applied Economics, American Economic Association, vol. 4(3), pp. 1-27.

3. История android [Электронный ресурс]. - Режим доступа: https://metanit.com/java/android/1.1.php, свободный. (дата обращения: 20.05.2018)

4. Архитектура android [Электронный ресурс]. - Режим доступа: http://pr0andr0id.blogspot.ru/2014/02/blog-post_21.html, свободный. (дата обращения: 20.05.2018)

5. Developers documentation [Электронный ресурс]. - Режим доступа: https://developer.android.com/reference/, свободный. (дата обращения: 20.05.2018)

6. ZXing [Электронный ресурс]: - Режим доступа: http://code.google.com/p/zxing/,свободный (дата обращения: 15.04.2018)

7. J.E. Montandon, H. Borges, D. Felix, M.T. Valente. "Documenting APIs with examples: Lessons Learned with the APIMiner Platform." Reverse Engineering (WCRE), 2013 20th Working Conference on, pp. 401-408, 2013.

8. J. Brown, Zbar bar code reader [Электронный ресурс]. - Режим доступа:: http://zbar.sourceforge.net/, свободный (дата обращения: 15.04.2018).

9. Barcode detection with the Mobile Vision API [Электронный ресурс]. - Режим доступа: https://codelabs.developers.google.com/codelabs/bar-codes/#0, свободный (дата обращения: 15.04.2018).

10. MVP [Электронный ресурс]. - Режим доступа: https://medium.com/@tinmegali/model-view-presenter-mvp-in-android-part-1-441bfd7998fe, свободный. (дата обращения: 20.05.2018)

11. Вкусвилл [Электронный ресурс]. - Режим доступа: http://vkusvill.ru/, свободный. (дата обращения: 20.05.2018)

12. Performing Network Operations [Электронный ресурс] / Google. - Режим доступа: https://developer.android.com/training/basics/network-ops/index.html, свободный. (дата обращения: 15.04.2018)

13. OkHttp [Электронный ресурс] / Square. - Режим доступа: http://square.github.io/okhttp/, свободный. (дата обращения: 15.04.2018)

14. Volley [Электронный ресурс] / Google. - Режим доступа: https://github.com/google/volley, свободный. (дата обращения: 15.04.2018)

15. Retrofit [Электронный ресурс] / Square. - Режим доступа: http://square.github.io/retrofit/, свободный. (дата обращения: 15.04.2018)

16. RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format. [Электронный ресурс] / Google. - Режим доступа: https://tools.ietf.org/html/rfc7159, свободный. (дата обращения: 15.04.2018)

17. GSON [Электронный ресурс] / Google. - Режим доступа: https://github.com/google/gson/blob/master/UserGuide.md, свободный. (дата обращения: 15.04.2018)

18. Android Async Http Clients: Volley and Retrofit [Электронный ресурс] / Canvas. - Режим доступа: http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/, свободный. (дата обращения: 15.04.2018)

19. MySQL [Электронный ресурс] / Oracle. - Режим доступа: https://www.mysql.com, свободный. (дата обращения: 15.04.2018)


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

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

    дипломная работа [4,7 M], добавлен 22.08.2016

  • Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.

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

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

    курсовая работа [942,1 K], добавлен 19.03.2012

  • Знакомство с особенностями и этапами разработки приложения для платформы Android. Рассмотрение функций персонажа: бег, прыжок, взаимодействие с объектами. Анализ блок-схемы алгоритма генерации платформ. Способы настройки функционала рабочей области.

    дипломная работа [3,4 M], добавлен 19.01.2017

  • Сетевое программное обеспечение: общее понятие, содержание, функции. Этапы развития теории компьютерных сетей. Проектирование в среде программирования Borland Builder C++ клиент серверного приложения с использованием сокетов, листинг данной программы.

    курсовая работа [191,5 K], добавлен 07.01.2015

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

    курсовая работа [352,0 K], добавлен 24.08.2016

  • Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.

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

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

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

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Характеристика подходов к построению CRM-систем. Разработка клиент-серверного приложения, которое предоставляет возможность управления взаимоотношениями с клиентами на платформе ASP.NET Web Froms. Проработка некоторых аспектов безопасности CRM-систем.

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

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