Создание мобильного приложения для оптимизации и контроля работы торговых агентов компаний
Содержание
Введение
. Основная часть
.1 Постановка задачи
.2 Структурная схема приложения
.3 Обоснование выбора языка программирования
.4 Интерфейс приложения
.5 Инструкция пользователю
. Листинг программы
. Охрана труда
Заключение
Список литературы
Введение
Современный человек делает все для того чтобы достигнуть максимального комфорта. Сегодня одним из желаний большинства людей является выход в Интернет. Причем они всегда хотят оставаться онлайн. Именно поэтому огромной актуальностью пользуется такая услуга, как разработка мобильных приложений под android. Все это стало актуальным вместе с появлением мобильного Интернета. Во время поездок всегда есть возможность подключиться к сети с помощью телефона, планшета или другого устройства. Но, сразу же стоит отметить, что без специальных приложений вряд ли бы была достигнута необходимая эффективность.
Сегодня специалистами в области информационных технологий разрабатываются мобильные приложения, которые позволяют решать огромное количество задач, например, создание 3D анимации. Некоторые служат для того чтобы устанавливать соединение с сетью. Другие помогают оптимизировать маршрут. Третьи предназначены для тех, кто ищет самые выгодные магазины. Есть и такие, с помощью которых можно заказать еду на дом. В основу каждой из таких программ легки определенные утилиты, что в результате позволяет быстро решать поставленную задачу, экономить время и достигать максимально комфортного уровня жизни.
Все мобильные приложения условно можно поделить на программы для рабочих целей и на развлекательные программы. Первые позволяют бизнесменом и офисным работникам контролировать бизнес-процессы, составлять аналитическую отчетность, выполнять такие задачи, разработка дизайна фирменного стиля. Вторые включают в себя разнообразные игры, софт для просмотра фильмов и прослушивания музыки, средства для общения и т.д. каждое из мобильных приложений находит своего потребителя, однако, как отмечают специалисты из этой области, наибольшей популярностью пользуется специализированный софт, например, разработка фирменного стиля, который необходим компаниям, работающим в различных направлениях. Также именно на таких программах можно делать неплохие деньги, ведь современные компании не жалеют инвестиций в продукты, которые могли бы в какой-либо степени оптимизировать или упростить имеющиеся бизнес-процессы.
На протяжении последних лет показатель, характеризующий уровень спроса на мобильные устройства, постоянно растет. Такая статистика позволяет сделать вывод о том, что разработка мобильных приложений актуальна и целесообразна. Главное грамотно оценить, для кого и зачем создается софт. Только полезная разработка получит достойное признание со стороны пользователей.
Целью дипломной работы является разработка программных решений по созданию мобильного приложения для оптимизации и контроля работы торговых агентов компаний.
Исходя из поставленной цели, были определены задачи:
- анализ работы торговых агентов
- проведение анализа технологий для разработки мобильных приложений;
- проектирование структуры и верстка приложения;
- создание дизайна для экранов;
- разработка динамических экранов
приложения, управляемых базой данных.
1. Основная часть
.1 Постановка задачи
Задачей дипломной работы является разработать мобильное приложение для оптимизации и контроля работы торговых агентов. Через разработанное мобильное приложение пользователь должен иметь возможность ознакомиться со своими рабочими задачами на сегодня, выполнить их и отправить работодателю отчет о проделанной работе. В результате дипломной работы должны быть выполнены следующие пункты:
- выбор программного обеспечения;
- создание мобильного приложения;
- создание выгодного и понятного интерфейса;
- создание возможности регистрации и входа для пользователей;
- создание страницы документов, маршрутов, настроек и др.;
- создание возможности получать задачи.
Типовой вариант мобильного приложения для торгового агента должен состоять из следующих функциональных частей:
- меню;
- настройки пользовательского интерфейса;
- синхронизация с сервером и получение всей необходимой информации;
- регистрация, авторизация и вход для пользователей;
- учет зарегистрированных пользователей;
- учет документов.
Меню представляет собой набор для выбора одного из представленного функционала приложения.
Настройки позволяют наиболее оптимизировать работу приложения по желанию пользователя.
Синхронизация с сервером необходима для получения настроек приложения под конкретную учетную систему, а так же отправка документов для формирования отчета.
Учет зарегистрированных пользователей позволяет отслеживать динамику работоспособности приложения, что позволяет усовершенствовать приложение.
Торговый агент должен быть наделен неким набором инструментов, для возможности выполнять поставленные задачи.
Набор инструментария торгового агента:
- расписание по дням маршрута торговых точек, по которым торговый агент должен пройти и выполнить поставленные задачи;
- информация о торговой точке и о самом клиенте;
- съемка с камеры;
- отправка данных о своем местоположении;
- отправка результатов проделанной работы;
- настройки хранения информации внутренняя/внешняя память ;
- хранение информации в базе данных;
- способ связи с тех. поддержкой.
1.2 Структурная схема приложения
Логическая структура приложения отображает то, как именно связаны между собой экраны (рис.1).
Рисунок 1 Логическая структура приложения
Физическая структура приложения
Физическая структура приложения отображает структуру папок и файлов (рис.2). После компиляции проекта, создается *apk файл, который и служит установочным файлом.
Рисунок 2 Физическая структура приложения
Каждая директория предназначена для хранения файлов определенного типа, каждый из которых выполняет определенную функцию:
- папка .gradle отвечает за сборку приложения;
- папка .idea хранит в себе настройки рабочей среды;
- в папке app содержится основной код приложения (верстка, логическая часть);
- папка gradle хранит код сборщика;
- в папке Keys лежат зашифрованные ключи для *apk файла;
- в папке libs содержатся библиотеки;
- в папке src - картинки, элементы дизайна;
- в безымянном файле GITIGNORE содержатся исключения для репозитория.
Тестирование и отладка системы
Приложение тестировалось на множествах смартфонов разных версий и поколений.
В результате проверки, удалось выявить некоторые ошибки.
Не отправлялись запросы на Android 5.0 + , т.к. не было разрешений на подключения к интернету.
Отчет формировался не верно, из-за не проверенного часового пояса системы, в следствии чего время отображалось не верно в документах.
На этапе тестирования были исправлены ошибки.
1.3 Обоснование выбора языка программирования
При создании приложения под Android следует выбрать наиболее подходящие технологии. Выбор конкретных технологий обычно определяется желаниями и возможностями заказчика.
Основой любого android приложения является разметка. Технология разметки, такая как XML, определяют структуру и возможное значение содержимого страницы.
XML (eXtensible Markup Language, расширяемый язык разметки), является первостепенной важности технологией разметки, применяемой при верстки экранов в android приложениях. XML - это дополнение HTML. Важно понять, что XML не является заменой HTML. В большинстве приложениях XML используется для транспортировки данных, а HTML для форматирования и отображения данных.
Одной из наиболее привлекательных черт платформы Android является использование языка программирования Java. SDK Android поддерживает не всю, но достаточно большую часть возможностей стандартной среды выполнения Java (Java Runtime Environment - JRE). Cама платформа Java уже долгое время поддерживает множество различных способов использования XML, причем большинство API для Java, ориентированных на XML, доступны в Android. Примерами таких API могут служить объектная модель документов (Document Object Model - DOM) и простой Java API для XML (Java's Simple API for XML - SAX), которые уже много лет являются частью технологии Java.
Средство общения с сервером.
Сервер - представляет собой некую программу, работающую на удаленном компьютере, и реализующую функционал "общения" с приложениями-клиентами (слушает запросы, распознает переданные параметры и значения, корректно отвечает на них);
Клиент - в нашем случае, программа на мобильном устройстве, которая умеет формировать понятный серверу запрос и читать полученный ответ;
Интерфейс взаимодействия - некий формат и способ передачи/получения запросов/ответов обеими сторонами.
Для реализации связи с сервером была выбрана библиотека okkHttp.
Библиотеку okkHttp можно подключить тремя способами: Gradle, Maven, Jar.:
В большинстве случаев для сборки приложений под Android используется именно этот инструмент (здесь и далее для зависимостей будут использоваться Gradle).
Для подключения в файл build.gradle модуля:
compile 'com.squareup.okhttp3:okhttp:3.8.0'
Maven:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.8.0</version>
</dependency>:'com.squareup.retrofit2:converter-gson:2.1.0' //Конвертер JSON,'com.android.support:recyclerview-v7:25.0.0' //RecyclerView
OkkHttp позволяет сделать полноценный REST-клиент, который может выполнять POST, GET, PUT, DELETE. Для обозначения типа и других аспектов запроса используются аннотации.
Базы данных и СУБД для Android-приложений.
Наиболее распространенным подходом для организации информационной базы приложений являются реляционные базы данных.
Особенности организации данных в БД по сравнению с файловыми системами обеспечивают использование одних и тех же данных в различных приложениях. БД сводят к минимуму дублирование данных, прибегая к дублированию только для ускорения доступа к данным или для обеспечения восстановления БД при ее разрушении. Одна из важных черт БД - независимость данных от особенностей прикладных программ, которые их используют, а также возможность создания этих программ в такой форме, что изменение особенностей хранения, логической структуры или значений данных не требует изменения программ их обработки. Другой важной чертой БД является возможность изменения физических особенностей хранения данных без изменения их логической структуры.
Базы данных позволяют хранить и получать доступ к информации. Использование БД позволяет отслеживать данные, автоматически обновлять приложение и распознавать пользователя. Информация может обрабатываться, сохраняться и извлекаться из БД. В БД можно хранить хорошо структурированную информацию, такую как список пользователей, список документов, координаты местоположения. Однако этим вид хранимой информации не ограничивается. В современных информационных системах в базах данных хранятся и тексты, и изображения, и даже исполняемые программы или скрипты.
Функционирование БД обеспечивается совокупностью языковых и программных средств, называемых системой управления базами данных (СУБД).
Основная задача СУБД - предоставить пользователю БД возможность работать с ней, не вникая в детали на уровне аппаратного обеспечения. Иными словами, СУБД позволяет конечному пользователю рассматривать БД как объект более высокого уровня по сравнению с аппаратным обеспечением, а также предоставляет в его распоряжение набор операций, выраженный в терминах языка манипулирования данными высокого уровня (например, набор операций, которые можно выполнять с помощью языка SQL).
Сложные управляемые данными android-приложения по ряду причин используют СУБД. Во-первых, с помощью SQL android-разработчик может переложить большинство задач хранения и управления данными на СУБД. Во-вторых, СУБД лучше человека справляются с управлением большими объемами данных. В-третьих, БД хранят данные постоянно, в то время, как переменные и их данные в методах Java обычно существуют лишь на протяжении запроса данной страницы. Благодаря этому постоянству СУБД могут принимать более разумные решения по поводу того, что относится к производительности работы с диском и кэшированию памяти.
Хранение информации в БД также позволяет разработчику писать меньший объем кода (благодаря тому, что задачи обработки данных передаются СУБД) и рассматривать отвлеченно всю систему управления данными.
Архитектура баз данных для Android-приложений
Рассмотрим внешнее построение системы баз данных. Эта система состоит из двух объектов: android клиента и web-сервера. Между ними должен существовать канал связи. Android клиент посылает запрос на сервер, сервер отсылает обратно ответ. Для сервера, отсылающего обычные статические страницы, такая архитектура подходит. Архитектура же приложения, которая включает в себя базу данных, несколько сложнее.
1. Android смартфон пользователя отправляет HTTP-запрос по определенному URL, с нужными параметрами на сервер. Например, для проверки лицензии при авторизации.
2. Web-сервер принимает запрос, сверяет с базой пользователей, если такая лицензия приложения, привязанная на устройство от которого пришел запрос, то сервер отправляет ответ запрос о том что все прошло успешно.
. Собственноручно написанная библиотека по обработки серверных запросов обрабатывает ответ от сервера и принимаешь решение о дальнейших действиях, т.е. если успешно открыть главное меню, а если нет то показать уведомление об ошибке.
. После успешного входа, сервер отдает ряд документов через запрос в JSON формате, после чего запрос разбирается на строки и через SQL запросы записывается в ранее созданную базу данных.
СУБД SQLite
SQLite - это встраиваемая кроссплатформенная БД, которая поддерживает достаточно полный набор команд SQL и доступна в исходных кодах (на языке C).
Работа с базой данных сводится к следующим задачам:
· Создание и открытие базы данных
· Создание таблицы
· Создание интерфейса для вставки данных (insert)
· Создание интерфейса для выполнения запросов (выборка данных)
· Закрытие базы данных
Используется для добавления новых строк в таблицу. Каждый объект этого класса представляет собой одну строку таблицы и выглядит как ассоциативный массив с именами столбцов и значениями, которые им соответствуют.
В Android запросы к базе данных возвращают объекты класса Cursor. Вместо того чтобы извлекать данные и возвращать копию значений, курсоры ссылаются на результирующий набор исходных данных. Курсоры позволяют управлять текущей позицией (строкой) в результирующем наборе данных, возвращаемом при запросе.