- •Содержание
- •1.1 Тенденции развития технологий разработки приложений 8
- •Введение
- •Тенденции развития технологий разработки приложений
- •Описательная постановка задачи
- •Формальная постановка задачи
- •Декомпозиция задачи
- •Проектирование системы
- •Основные требования, предъявляемые системе
- •Выбор инструментальных средств
- •Проектирование схемы функционирования системы
- •Перечень функциональности.
- •Моделирование структуры системы
- •Проектирование пользовательского интерфейса
- •Методика тестирования конечного продукта.
- •Реализация системы
- •Структура приложения.
- •Описание классов.
- •Описание реализаций основных функций приложения
- •Реализация пользовательского интерфейса
- •Результаты тестирования системы
- •Список использованных источников
Декомпозиция задачи
Разработку приложения можно разбить на следующие задачи и подзадачи:
Организация авторизации.
Реализация интерфейса авторизации.
Получения подтверждения об авторизации от сервера.
Отображение доступных ЦРЗ.
Реализация сканера штрих-кодов для автоматизированного получения номера пакета.
Организация приема пакетов.
Реализация интерфейса для ввода номера пакета.
Ввод номера вручную с клавиатуры.
Получение номера с помощью сканера штрих-кодов.
Реализация поиска пакета.
Отправка введенного номера на сервер.
Получение информации о пакете от сервера.
Реализация интерфейса для вывода информации о пакете.
Реализация приема пакета.
Реализация возможности отправки на сервер соответствующей информации о приеме пакета.
Организация выдачи пакетов.
Реализация интерфейса для ввода номера пакета.
Ввод номера вручную с клавиатуры.
Получение номеров с помощью сканера штрих-кодов.
Реализация поиска пакета.
Отправка введенного номера на сервер.
Получение информации о пакете от сервера.
Реализация интерфейса для вывода информации о пакете.
Реализация выдачи пакетов.
Реализация проверки пин-кода через сервер.
Реализация возможности отправки на сервер информации о выдаче пакета.
Реализация групповой выдаче пакетов.
Организация транспортировки пакетов.
Поиск доступных пакетов для перемещения.
Отправка запроса на сервер и получение информации о доступных пакетах.
Реализация интерфейса для отображения списка ЦРЗ, в которые можно переместить пакеты и интерфейса для отображения пакетов.
Реализация перемещения.
Реализация возможности отправить на сервер соответствующей информации о перемещении пакетов.
Вывод информации о складе.
Отправка запроса на сервер и получение информации о хранимых в ЦРЗ пакетах.
Реализация интерфейса для отображения списка хранимых пакетов.
Реализация возможности выдать выбранный пакет (переход на экран выдачи с номером выбранного пакета).
Реализация фильтрации пакетов по статусу, дате, получателю и отправителю.
Вывод информации о балансе.
Отправка запроса на сервер и получение информации о балансе ЦРЗ.
Реализация интерфейса для вывода полученной информации.
Разрабатываема система уникальна, благодаря своей возможности обрабатывать сразу множество штрих-кодов. Прочие подобные существующие системы, позволяющие считывать штрих-коды, работают только с одним кодом.
Проектирование системы
Основные требования, предъявляемые системе
Для успешной реализации системы заказчиком были сформулированы основные задачи и требования к функционалу:
Авторизация пользователя в системе (отправка логина и пароля на сервер, получение подтверждения).
Получение и отображение списка доступных ЦРЗ с описанием и возможными действиями с ними (получение пакета, выдача пакета, перемещение пакета, склад пакетов, баланс ЦРЗ).
Реализация основных функций для работы с ЦРЗ:
Сканнер штрих-кодов для считывания номера с пакета. Для считывания номера используется камера смартфона. Приложение отслеживает попадание штрих-кода в определенную область на экране смартфона. При обнаружении штрих-кода, приложение обрабатывает полученное изображение, получает номер пакета и сохраняет его в памяти. При повторном сканировании этого же штрих-кода его код повторно не запоминается, до тех пор, пока список сохраненных номеров не будет отчищен или отправлен серверу на обработку.
Штриховой код (штрих-код) — это последовательность черных и белых полос, представляющая некоторую информацию в виде, удобном для считывания техническими средствами. По способу кодирования штрих-коды делятся на линейные и двухмерные. Линейные штрих-коды позволяют кодировать небольшой объем данных. Двухмерные штрих-коды были разработаны для кодирования большого объема информации.
К линейным штрих-кодам относятся такие форматы, как EAN8, EAN-13, UPC-A, UPC-E, Code56, Code128, Codabar и т.д. К двумерным – Aztec Code, Data Matrix, MaxiCode, PDF417, QR код и т.д.
В ЦРЗ для кодирования номеров пакетов используется линейный штрих-код формата EAN-13, т.к. он является наиболее распространённым и поддерживается практически всеми программами и всем оборудованием, работающими со штрих-кодами.
Для удобства хранения в ЦРЗ, пакты сортируются в 10 контейнеров, в зависимости от контрольного разряда номера пакета в штрих-коде.
Расчет контрольного разряда происходит по следующему алгоритму:
1) Все разряды нумеруются справа налево от 1 до 14.
2) Складываются значения всех четных разрядов, начиная со 2-го.
3) Полученная сумма умножается на 3.
4) Складываются значения всех нечетных разрядов, начиная с 3-го.
5) Складываются результаты, полученные во 2 и 3 шаге.
6) Значением контрольного разряда является наименьшее число, которое в сумме с величиной полученной в шаге 4, дает число, кратное 10.
Поиск пакетов в системе. Для приема, выдачи, перемещения, а так же просмотра склада пакетов, необходимо организовать поиск и отображение пакетов. Найденные пакеты отображаются в виде раскрывающегося списка. Каждый элемент списка представляет собой основную информацию по пакету: его номер, статус и цену. В выпадающем списке содержится всего один элемент, который отображает дополнительную информацию по пакету: имя пользователя сформировавшего пакет, его телефон, имя получателя пакета, его телефон и дата формирования пакета.
Прием пакетов. Прием пакетов осуществляется только по номеру пакетов. Номер пакета вводится одним из двух способов: вручную с клавиатуры или с помощью сканера штрих-кодов.
Выдача пакетов. Поиск пакетов для выдачи осуществляется либо по номеру искомого пакета, либо по имени получателя пакета. Номер пакета вводится одним из двух способов: вручную с клавиатуры или с помощью сканера штрих-кодов. При поиске по имени отображаются все пакеты, предназначенные для данного получателя. При поиске по номеру пакета отображаются так же все пакеты, предназначенные для данного получателя, однако, первым в списке найденных пакетов стоит тот пакет, номер которого был введен. Первыми в списке стоят пакеты, которые имеют статус «На выдаче», т.е. эти пакеты можно выдать получателям. Для выдачи пакета необходимо проверить пин-код. Если пин-код верный, то пакет выдается получателю. Если пакетов, несколько, то, чтобы не выдавать пакет по одному, организуется выдача пакетов группой. Из списка найденных пакетов выделяются те, которые необходимо выдать, а при выдаче пин-код проверяется не для каждого выделенного пакета, а только для первого. Если пин-код верный, то все выделенные пакеты выдаются получателю.
Перемещение пакетов. При перемещении необходимо отобразить список ЦРЗ, для которых есть пакеты для перемещения, а так же список этих пакетов. Пакеты перемещаются либо в один ЦРЗ, либо в несколько ЦРЗ сразу. Для выбранных ЦРЗ автоматически подсчитывается количество перемещаемых пакетов и сумма, которую необходимо отдать курьеру за перемещение.
Склад пакетов. Склад пакетов – это список всех пакетов, находящихся в данном ЦРЗ. Приложение выводит найденные пакеты по частям, по 20 штук. Когда на экране появляется последний пакет, то приложение дополняет список еще одной частью пакетов и так до тех пор, пока не будут выведены все пакеты. Любой пакет из склада можно выдать получателю, для этого необходимо предусмотреть прямой переход из экрана склада на экран выдачи с номером выбранного пакета. Так же необходимо реализовать фильтр по следующим критериям: статус, дата формирования, имя отправителя и имя получателя.
Баланс ЦРЗ. Отображение доходов и расходов ЦРЗ по дням за хранение, выдачу и перемещение пакетов.
Для реализации данного функционала был предоставлен RESTful веб-сервис, а так же его программный интерфейс API, с перечнем методов для получения необходимой информации.
