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

Дипломная работа

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

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

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

Цель и задачи

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

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

1) осуществить постановку задачи, выделить требования к приложению;

2) произвести обзор существующих решений для разделения чеков;

3) изучить современные средства разработки мобильных приложений для Android;

4) определить требования и спроектировать мобильное приложение;

5) реализовать и протестировать мобильное приложение.

Структура и объем работы

Работа состоит из введения, четырех глав, заключения и библиографического списка. Объем работы составляет 38 страниц, объем библиографии – 26 источников, объем приложений – 5 страниц.

В главе «Задача разделения чека для посетителей кафе и ресторанов»

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

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

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

Глава «Тестирование» посвящена результатам тестирования мобильного приложения. Представлены результаты функционального тестирования, выполненные в работающем приложении, и юзабилити-тестирования.

54 стр., 26916 слов

Анализ спроса на ресторанные услуги (на примере ресторана ‘Ридна-хата’)

... ресторане. - М.: Гардарики, 2009. - 128с. Реферат Выпускная квалификационная работа 92 с., 9 рис., 11 табл., 3 приложения, 65 источников. Предметом исследования является формирование спроса на предприятиях общественного питания. Объектом исследования является ресторан ...

В заключении сделаны выводы о проделанной работе и сформулированы перспективы дальнейшей разработки. 1. ЗАДАЧА РАЗДЕЛЕНИЯ ЧЕКА ДЛЯ ПОСЕТИТЕЛЕЙ КАФЕ И

РЕСТОРАНОВ

1.1. Постановка задачи

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

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

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

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

1.2. Сравнительный анализ существующих аналогов

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

Приложение «Repayr – SplitBills» [23] позволяет легко разделить наименования в чеке между посетителями. Информация из списка к оплате вводится вручную. Кроме того, есть возможность учитывать случаи, когда один посетитель доплачивает определенную сумму за другого посетителя. Однако, несмотря на привлекательный дизайн, даже после прохождения обучения по использованию интерфейс приложения не становится очевидным и интуитивно понятным. Экран с интерфейсом приложения представлен на рис. 1.

Рис. 1. Скриншот приложения «Repayr – SplitBills»

Приложение «CleverBillSplitter» [20] позволяет разделить наименования в чеке между посетителями путем фотографирования и ввода вручную. Однако, оно не поддерживает русский язык и иную валюту, кроме доллара. Функция распознавания по фото требует дополнительной установки после скачивания приложения и работает некорректно (имеют место ошибки или отказ от распознавания), дизайн не привлекателен, см рис. 2.

Рис. 2. Скриншот приложения «CleverBillSplitter»

Приложение «Делим чек» [25] позволяет разделить все наименования в чеке на каждого посетителя, учитывает чаевые сумме к оплате каждым посетителем, но в нем отсутствует возможность ввода наименований блюд. Приложение является платным, при этом содержит недостаточный функционал и недружественный дизайн. При ручном вводе данных пользователь может допустить ошибки, исправление которых занимает долгое время: увеличение счетчика количества того или иного блюда происходит за счет нажатия на него. Если случайно нажать на него большее, чем нужно, количество раз, придется тем же способом довести счетчик до 25 (максимальное значение), после чего отсчет начнется сначала. Отсутствует возможность распознавания чека по фотографии. Является полностью русифицированным приложением без возможности выбора другого языка. Экран приложения представлен на рис. 3.

12 стр., 5910 слов

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

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

Рис. 3. Скриншот приложения «Делим чек»

Приложение “Split Bill Advanced” [21] имеет понятный, но непривлекательный дизайн. Отсутствует возможность выбора разными пользователями разного набора заказанных блюд (общая сумма просто делится на количество посетителей).

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

Рис. 4. Экран приложения «Split Bill Advanced»

Приложение Splittpay [24] обладает понятным интерфейсом, есть возможность выбора для оплаты пользователями только тех пунктов, которые они заказывали. Функция распознавания чека по фотографии есть, но работает некорректно – даже в фотографии, предоставляемой приложением как пример чека, позиции не были распознаны верно.

Рис. 5. Экран приложения «Splittpay»

В таблице 1 представлены критерии оценки имеющихся на рынке программного обеспечения аналогичных продуктов, решающих поставленную задачу. Табл. 1. Сравнительный анализ аналогов Приложе- Splittpay SplitBill Делим Clever- Repayr – SplitBill ние Ad- Чек BillSplit- Split Bills (MainAc vanced ter tivity) [22] Возмож- +/- — — + — ность распознавания чека по фотографии Выбор за- + — + + + + казанных блюд пользователями Дизайн 4/5 2/5 4/5 3/5 1/5 2/5 Поддержка Есть Нет Есть Нет Нет Нет Необходи- Бесплатное Бесплат- Бесплат- Бесплат- Бесплат- Бесплатмость ли- свободное ПО ное сво- ное сво- ное сво- ное сво- ное своцензии бодное бодное бодное бодное бодное

ПО ПО ПО ПО ПО Дополни- Рассылка сче- — — — В прило- тельные тов по контак- жении возможно- там в теле- есть обусти фонной книге чение

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

1.3. Обзор средств разработки мобильных приложений для Android

Appery.io [2] – платный облачный сервис (mBaaS – mobile backend as a service), позволяющий создавать приложения для iOS, Android и WindowsPhone. Интерфейс пользователя создается перетаскиванием нужных компонентов. Для новичков есть обучающие курсы. Кроме drag-anddrop интерфейса есть возможность редактирования исходного кода.

ShoutEm [10] – платный онлайн-конструктор кроссплатформенных мобильных приложений с хорошими предлагаемыми дизайнерскими решениями и обширным набором инструментов для настройки выбранного шаблона приложения. Позволяет создавать мобильные приложения минуя этап кодирования.

Eclipse [4] – IDE с открытым исходным кодом, инструмент сборки – Ant. Легко настраивается, интегрируется с плагином ADT (AndroidDeveloperTools).

18 стр., 8733 слов

Гис в мире возможностей такси разработка программной системы ...

... 1 Современные автоматизированные системы диспетчеризации Диспетчерская — сердце и мозг работы службы такси. Слаженная команда операторов обеспечивает ... их вид деятельности. Обращаясь в службу такси клиенту должна гарантироваться возможность заказать машину и совершить ... Работа водителей ведется с использованием специального программного обеспечения такси gps gprs, устанавливаемого на android смартфон ...

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

Intellij IDEA [6] – обладает широкой функциональностью: есть создание шаблонных классов, возможность изменения темы оформления. Среди удобств программирования можно отметить наличие графического редактора интерфейса, возможность создавать интерфейс методом drag-and-drop, автоматическое закрытие скобок после условия, групповые перезаписи методов.

Android Studio [3] – новая официальная IDE для Android, в основе проекта лежит Intellij IDEA. В Android Studio есть автодополнение кода, удобный debug-режим, в качестве сборщика проектов используется Gradle. В начале разработки можно выбрать один из нескольких готовых шаблонов мобильного приложения. IDE поддерживает NDK и позволяет редактировать проектные файлы на C/C++, а также обладает для них встроенным дебаггером на основе LLDB. Android Studio обладает очень удобным редактором макетов с drag-and-drop интерфейсом, позволяющим быстро вносить правки в файлы разметки. Начиная с версии 2.3, была добавлена функция Instant Run, значительно ускоряющая процесс внесения изменений и запуска их на тестируемом устройстве. Платформа является результатом сотрудничества Google и JetBrains, рекомендована сообществом Android-разработчиков [1] для разработки мобильных приложений.

Сведем некоторые параметры рассмотренных платформ в таблицу 2. Табл. 2. Сравнение платформ разработки мобильных приложений № Критерий Appery.io ShoutEm Eclipse Intellij IDEA AndroidStudi п/п o 1. Удобство 9/10 8/10 5/10 8/10 9/10

использо вания 2. Докумен- ★★★★☆ ★★★☆☆ ★★★★☆ ★★★★☆ ★★★★☆

тация 3. Лицензия Коммерче- Коммерче- EclipsePublic Условно- Бесплатная

ская ская License бесплатная (Apache 2.0) 4. Стоимость Есть бес- Начальная Бесплатная Ultimateediti Бесплатно

платная версия – on — $499.00 пробная вер- $19.90 в ме- .

сия и пре- сяц, безли- Есть бес миум-версия митная – платная вер — $180 $119.90 в ме- сия про сяц граммы

(Community

Edition) 5. Поддержи- JS JS Java, С, С++, Java, Python, Java

ваемые Perl, Python, Ruby, C, C++

языки про- Ruby и др. идр.

граммиро вания 6. Предназна- Мобильные Только мо- Программы Программы Только мо чение раз- версии сай- бильные вер- и мобильные и мобильные бильные

работки тов и прило- сии сайтов приложения приложения приложения

жения 7. Категория Облачный Облачный Требует ин- Требует ин- Требует ин платформы сервис (он- сервис (он- сталляции на сталляции на сталляции на

лайн-инстру- лайн-инстру- компьютер компьютер компьютер

менты) менты) разработ- разработ- разработ чика чика чика 8. Поддержка Да Нет Да Да Да

командной

разработки 9. Поддержи- HTML5, CSS HTML5, CSS XML XML XML

ваемые

языки раз метки 10. Поддержи- iOS, Android, iOS, Android, iOS, Android, Android Android

ваемые ОС WindowsPho WindowsPho WindowsPho

ne ne ne 11. Безопас- ★★★★☆ ★★★☆☆ ★★★☆☆ ★★★★☆ ★★★★☆

18 стр., 8712 слов

Разработка мобильного приложения расчета и учета оплаты коммунальных услуг

... курсовой работы является разработка программы на базе Android - приложение, позволяющее вести расчёт и учет платежей ... с пользователем; Рассмотреть основные компоненты и средства разработки мобильных приложений; Разработать мобильное приложение. 1. Обзорно ... приложениях ядра. Архитектура построена таким образом, что любое приложение может использовать уже реализованные возможности другого приложения ...

ность 12. Быстро- ★★★★☆ ★★★★☆ ★★★☆☆ ★★★★★ ★★★★★

действие

Как видно из таблицы, инструменты, позволяющие создавать мобильные приложения, как правило, имеют высокую стоимость, либо имеют низкий уровень безопасности и быстродействия. Этими недостатками не обладает IDE AndroidStudio.

2. ПРОЕКТИРОВАНИЕ МОБИЛЬНОГО ПРИЛОЖЕНИЯ ДЛЯ

РАЗДЕЛЕНИЯ ЧЕКА В КАФЕ И РЕСТОРАНАХ

2.1. Требования к мобильному приложению

Функциональные требования:

1) пользователь должен иметь возможность вводить позиции из чека вручную;

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

3) программа должна предоставлять функцию ввода количества пользователей;

4) пользователь должен иметь возможность выбора и отмены выбора пункта из распознанного/введенного списка;

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

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

Нефункциональные требования:

1) приложение должно быть разработано для ОС Android (версия Lollipop и более поздние);

2) распознавание данных должно осуществляться с помощью открытой библиотеки OpenCV;

3) приложение должно работать в автономном режиме (без подключения к сети Интернет);

4) интерфейс приложения должен быть выполнен в соответствии с принципами Material Design [7];

5) финансовые расчеты в приложении должны производиться в рублевой валюте;

6) интерфейс приложения должен быть на русском языке.

2.2. Варианты использования мобильного приложения, диаграмма

последовательности

Для проектирования приложения был использован язык графического описания для объектного моделирования UML [14, 11]. Была построена модель взаимодействия внешнего актера с приложением в виде диаграммы вариантов использования.

В ходе проектирования были выделен один актер «Пользователь».

Пользователь – пользователь приложения, которому доступна возможность использования функционалом приложения.

Диаграмма вариантов использования приложения представлена на рис. 6.

Рис. 6. Диаграмма вариантов использования

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

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

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

Программа предоставляет возможность прерывания операции.

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

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

29 стр., 14347 слов

,Разработка ассортимента горячих блюд для фуршет банкета кафе на 80 мест

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

Переключение между пользователями – навигация по отдельным счетам клиентов заведения.

Выбрать пункт меню – выбрать из ранее введенных один пункт меню как оплачиваемый текущим клиентом.

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

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

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

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

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

Рис. 7. Диаграмма последовательности

2.3. Проектирование архитектуры мобильного приложения

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

Рис. 8. Диаграмма компонентов

2.4. Проектирование интерфейса мобильного приложения

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

Рис. 9. Экран ввода количества гостей

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

Экран редактирования чека (рис. 11) будет позволять пользователю вручную изменять, добавлять, или удалять позиции чека (название блюда, его количество и стоимость) с помощью диалоговых окон. Любая из этих операций может быть прервана, тогда изменения не будут внесены. Когда весь чек будет перенесен, пользователь сможет перевести приложение в режим выбора пользователями заказанных ими пунктов чека.

Рис. 10. Экран выбора фотографии

Рис. 11. Экран редактирования чека

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

25 стр., 12274 слов

Создание мобильного приложения для организации

... работы браузер телефона. Web-приложения не нужно загружать из магазина приложений, чаще всего пользователи переходят по заданному URL а затем получают возможность закрепить закладку на эту страницу на домашнем экране ... основным рекомендациям по разработке приложений для данной платформы (Android User Interface Guidelines). Все сторонние библиотеки, используемые в приложении должны иметь ...

Когда все гости завершат отмечать пункты, которые они заказывали, пользователь может запросить показ экрана результатов (рис. 13).

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

Рис. 12. Экран выбора гостями Рис. 13. Экран результатов

пунктов чека

3. РЕАЛИЗАЦИЯ МОБИЛЬНОГО ПРИЛОЖЕНИЯ «FAIRSPLIT»

ДЛЯ РАЗДЕЛЕНИЯ ЧЕКА В КАФЕ И РЕСТОРАНАХ

3.1. Архитектура, компоненты мобильного приложения

В плане обработки взаимодействия между пользовательским интерфейсом и его логикой реализованное приложение следует архитектурному шаблону «Model, View, Presenter» (MVP) [12].

Диаграмма взаимодействия его компонентов представлена на рис. 14.

Рис. 14. Диаграмма взаимодействия MVP

Ключевым различием шаблона MVP от MVC является то, что представление ничего не знает о модели данных и наоборот – модель данных ничего не знает о представлении. При любом изменении данных в модели представление не оповещается напрямую, и задачей компонента Presenter является получить актуальные данные из модели, чтобы при необходимости обновить View [9].

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

Рис. 15. Файловая структура приложения

В папке «src\main\java\com.example.gulnara.graduatework» содержатся файлы исходного кода приложения (см. рис. 16).

В папке «model» находятся классы User и Dish, представляющие в программе необходимые понятия предметной области: блюдо и гость (пользователь).

Другие файлы исходного кода распределены в зависимости от экрана, работу которого они обеспечивают: «guestNumber» содержит код операции, в которой приложение запрашивает количество гостей. В папке «pickPhoto» находится код, отвечающий за загрузку изображения чека из галереи или камеры устройства в приложение и дальнейшее распознавание текста на нём. В «billEditor» находятся файлы исходного кода, отвечающего за возможность редактирования распознанного чека на соответствующем экране. Код в директории «billSplitting» отвечает за предоставление пользователям возможности разделения общей суммы чека, а в «results» — за отображение итоговых сумм к оплате для каждого пользователя. GuestNumberActivity – содержит методы работы первого экрана приложения, отвечающего за ввод пользователем количества гостей. Эта операция (Activity) – «основная» в подобных проектах, предлагаемая пользователю первой при запуске приложения [19].

16 стр., 7838 слов

Разработки приложений для системы Android,

... Play» и обеспечить возможность скачивания приложения. 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ МОБИЛЬНЫХ ПРИЛОЖЕНИЯ 1.1 Понятие мобильного приложения Мобильное приложение — это программное обеспечение, специально разработанное под конкретную мобильную платформу (iOS, Android, Windows Phone и т. д.). ...

PickPhotoActivity – экран загрузки изображения. Предоставляет пользователю два способа добавить в приложение изображение чека: с помощью камеры или уже существующее в галерее. После того, как пользователь загружает изображение, происходит распознавание текста на нем. TextRecognizer – вспомогательный класс, реализующий взаимодействие с инструментами распознавания изображения. BillParser – класс, осуществляющий парсинг текста, полученного с изображения. Служит для преобразования строки в список позиций чека. BillEditorActivity – отвечает за возможность экран редактирования модели чека, полученной в результате распознавания изображения. Как и другие файлы исходного кода, чье название заканчивается на «Activity» в подобных проектах, операция (Activity) представляет собой один экран с пользовательским интерфейсом [18].

BillEditorAdapter – как и другие файлы исходного кода с названием, оканчивающимся на «-Adapter», предназначен для представления модели данных (в данном случае – списка распознанных блюд) на экране операции в виде списка. NewDishDialogFragment – диалоговое окно, появляющееся при нажатии на кнопку «+» на экране редактирования чека. Предоставляет возможность ввести информацию и новом блюде: его название, цену за ед. и количество. BillItemDialogFragment – аналогичное предыдущему диалоговое окно, появляющееся при нажатии на один из пунктов списка распознанных блюд. Предоставляет пользователю возможность как изменить блюдо, так и полностью его удалить.

Рис. 16. Файлы программного кода приложения

В папке src\main\res\layout содержатся файлы разметки приложения (рис. 17).

activity_bill_editor.xml – как и другие файлы разметки, начинающиеся с «activity_», отвечает за разметку соответствующего экрана. Содержит viewэлементы для отображения списка блюд, кнопки добавления нового блюда и общей суммы по чеку.

bill_editor_list_item.xml – представление одного блюда из списка на экране редактора чека (название, количество, стоимость).

bill_editor_list_item_dialog_fragment.xml – разметка диалогового окна, появляющегося при клике на один из элементов списка в редакторе чека.

result_group_view.xml – разметка представления итогов по пользователю на экране результатов.

result_child_view.xml – разметка представления элемента детализации списка блюд по каждому пользователю. user_choice_item.xml – представление блюда на экране выбора пользователей. user_list_item.xml – представление отметки пользователя о разделении на него суммы блюда.

Рис. 17. Файлы разметки проекта

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

Приложение содержит порядка 3500 строк кода.

Приложение написано на языке Java [26], язык разметки – XML. Подключенный модуль распознавания изображений tess-two [5] написан преимущественно на С++.

Загрузка изображения с камеры или из галереи

При нажатии на кнопки «Галерея» или «Камера» конструируется соответствующий требуемому действию объект класса Intent, передаваемый в функцию startActivityForResult. Эта функция запускает новую операцию (Activity), и её результат будет возвращен в метод onActivityResult. Код метода приведен на рис. 18.

24 стр., 11650 слов

Разработка информационной системы поддержки пользователей на ...

... Разработка проекта информационной системы 1.6.1 Описание основных функций системы Отдел поддержки пользователей ... с поддержкой WMI и автоматически сохраняет результаты в базе данных OMNITRACKER. ) ... передается информация о заявках пользователей в которых необходима работа с железом (перепайка конденсаторов, ... 1С, SQL и др.). Данная литература должна быть выбрана исходя из используемых средств разработки ...

Рис. 18. Обработка нажатий на кнопки «Галерея» и «Камера»

Распознавание изображения

Взаимодействие с используемой библиотекой tess-two реализовано в классе TextRecognizer (рис. 19).

Библиотека tess-two открыта для использования и доступна на ресурсе [5].

Tess-two является ответвлением проекта tesseract-android-tools, набором программных интерфейсов и файлов сборки для библиотеки оптического распознавания символов Tesseract и библиотеки обработки изображений Leptonica.

При вызове в объекте класса TextRecognizer функции processImage, принимающей на вход обрабатываемое изображение, в TessBaseAPI вызывается метод getUtf8Text, возвращающий строку с обнаруженным текстом.

Добавление нового пункта списка

Поведение диалога добавления нового пункта списка реализовано в классе NewDishDialogFragment, объект которого вызывается при нажатии на кнопку “+” на экране первой вкладки. В разметке диалога new_dish_dialog.xml расположены поля для ввода данных о добавляемом пункте. При нажатии в диалоге на кнопку “ОК” с применением шаблона «Listener» экран (Activity) редактора чека оповещается о создании нового объекта и производится сохранение данных о заказе и обновление выводимой адаптерами списков информации. На рис. 19 приведен программный код, сохраняющий информацию о новом пункте списка.

Рис. 19. Файлы разметки проекта

Рис. 20. Создание нового пункта чека

Подсчет суммы к оплате для каждого гостя.

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

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

Преобразование чека в список блюд

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

Рис. 21. Функция recountSums

Рис. 22. Функция initDishes

4. ТЕСТИРОВАНИЕ

4.1. Функциональное тестирование

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

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

Тест № 1

Цель: протестировать функцию ввода пользователем позиций из чека вручную.

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

Входные данные: пользователь находится на экране редактирования позиций чека.

Процедура тестирования: пользователь нажимает на кнопку добавления нового блюда «+», появляется диалоговое окно, куда пользователь вводит данные о блюде (название, количество и стоимость).

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест пройден

Тест № 2

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

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

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

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест пройден

Тест № 3

Цель: протестировать функцию распознавания позиций чека на фотографии.

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

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

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест пройден

Тест № 4

Цель: протестировать функцию ввода количества пользователей.

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

Входные данные: пользователь находится на экране ввода количества пользователей.

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест успешно пройден.

Тест № 5

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

Ожидаемый результат: при нажатии на флажок пользователя под блюдом изменяется его состояние изменяется на «отмечено». При повторном нажатии флажок снимается.

Входные данные: пользователь находится на экране выбора пользователями пунктов списка.

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест успешно пройден.

Тест № 6

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

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

Входные данные: пользователь находится на экране выбора пользователями пунктов списка.

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест успешно пройден.

Тест № 6

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

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

Входные данные: пользователь находится на экране выбора пользователями пунктов списка.

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

Полученный результат: совпадает с ожидаемым.

Вывод: тест успешно пройден.

4.2. Юзабилити-тестирование

Юзабилити-тестирование (проверка эргономичности) – метод оценки удобства продукта в использовании, основанный на привлечении пользователей в качестве тестировщиков, испытателей и суммировании полученных от них выводов [17].

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

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

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

Полный отчет о юзабилити-тестировании представлен в приложении 1.

ЗАКЛЮЧЕНИЕ

Доля мобильного интернета растет ежедневно [15].

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

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

1) осуществлена постановку задачи, выделены требования к приложению;

2) произведен обзор существующих решений для разделения чеков;

3) изучены современные средства разработки мобильных приложений для Android;

4) определены требования и спроектировано мобильное приложение;

5) реализовано и протестировано мобильное приложение.

Все поставленные задачи были решены, цель достигнута.

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

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

1) программа должна давать пользователю возможность сохранения новых позиций чека при ручном вводе;

2) программа должна выводить детализацию выбранных и невыбранных позиций чека;

3) программа должна проверять наличие скидки на отдельные позиции чека или на всю сумму чека;

4) программа должна применять скидку к товарам пользователя при ее наличии;

5) программа должна уметь экспортировать фото и имена пользователей из контактов устройства;

6) программа должна уметь рассылать распознанные позиции с помощью списка контактов устройства.

ЛИТЕРАТУРА

[Электронный ресурс]//URL: https://inzhpro.ru/diplomnaya/razrabotka-prilojeniy-dlya-mobilnyih-ustroystv/

1. Android Studio Features. [Электронный ресурс] URL: https://developer.android.com/studio/features.html (дата обращения: 06.05.2017).

2. Appery.io: Enterprise Mobile App Builder & MBaaS. [Электронный ресурс] URL: https://appery.io/ (дата обращения: 06.05.2017).

3. Download Android Studio and SDK Tools | Android Studio. [Электронный ресурс] URL: https://developer.android.com/studio/index.html (дата обращения: 06.05.2017).

4. Eclipse — The Eclipse Foundation open source community website. [Электронный ресурс] URL: https://www.eclipse.org/downloads/ (дата обращения: 06.05.2017).

5. Fork of Tesseract Tools for Android. [Электронный ресурс] URL: https://github.com/rmtheis/tess-two/ (дата обращения: 06.05.2017).

6. IntelliJ IDEA the Java IDE – JetBrains. [Электронный ресурс] URL: https://www.jetbrains.com/idea/ (дата обращения: 15.05.2017).

7. Introduction to Material Design. [Электронный ресурс] URL: https://material.google.com/ (дата обращения: 15.11.2016).

8. Kaner, Falk, Nguyen. Testing Computer Software. – USA: Wiley Computer Publishing, 1999. – 42 p.

9. MVP and MVC Architectures in Android. [Электронный ресурс] URL: https://www.techyourchance.com/mvp-mvc-android-1/ (дата обращения: 06.05.2017).

10. Shoutem — Make an App — Build Apps with Easy Application Creator. [Электронный ресурс] URL: www.shoutem.com/ (дата обращения: 15.11.2016).

11. Арлоу Дж., Нейштадт А. UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование. 2-е издание. – М.: Издательство «Символ-Плюс», 2007. – 624 с.

12. Архитектура Android-приложений. Часть II – архитектурные стили и шаблоны. [Электронный ресурс] URL: https://habrahabr.ru/post/140655/ (дата обращения: 02.05.2017).

13. Бурнет Э. Привет, Android! Разработка мобильных приложений. 2-е издание. – СПб.: Издательство «Питер», 2012. – 256 с.

14. Буч Г., Рамбо Дж., Джекобсон А. Язык UML. Руководство пользователя. – СПб.: Издательство «Питер», 2003. – 432 с.

15. ВЕДОМОСТИ – Интернет-аудитория России растет за счет мобильных устройств. [Электронный ресурс] URL: (дата обращения: 02.05.2017).

16. Дейтел П., Дейтел Х., Уолд А. Android для разработчиков. 3-е издание. – СПб.: Издательство «Питер», 2016. – 512 с.

17. Нильсен Я., Будиу Р. Mobile Usability. Как создавать идеально удобные приложения для мобильных устройств. – М.: Эксмо, 2013. – 256 с.

18. Операции. [Электронный ресурс] URL: https://developer.android.com/guide/components/activities.html (дата обращения: 02.05.2017).

19. Основы создания приложений. [Электронный ресурс] URL: https://developer.android.com/guide/components/fundamentals.html (дата обращения: 02.05.2017).

20. Приложения в Google Play – Clever Bill Splitter. [Электронный ре-