Automated inventory management system on Android using barcodes and QR-codes
A software is developed for inventory automation based on Android using the Firebase database in the Java programming language. The appendix uses a system of reading barcodes and QR-codes, which provide the addition of goods to the warehouse with all the details of the selected product and informati...
Saved in:
Date: | 2022 |
---|---|
Main Authors: | , |
Format: | Article |
Language: | Ukrainian |
Published: |
Інститут програмних систем НАН України
2022
|
Subjects: | |
Online Access: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/486 |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Journal Title: | Problems in programming |
Institution
Problems in programmingid |
pp_isofts_kiev_ua-article-486 |
---|---|
record_format |
ojs |
resource_txt_mv |
ppisoftskievua/f5/2d3cc6b0d312560117c8486385820af5.pdf |
spelling |
pp_isofts_kiev_ua-article-4862022-07-12T19:02:01Z Automated inventory management system on Android using barcodes and QR-codes Автоматизована система управління запасами на OC Android та бази даних Firebase з використанням штрих кодів та QR-кодів Haidukevych, Y.O. Doroshenko, А.Yu. Android; Java; Firebase; authorization; API architecture; scalable automation systems; NoSQL; DBMS;API for data encryption UDC 004.4′24 ОС Android; Java; Firebase; авторизаці; архітектура API; масштабовані системи автоматизації; NoSQL ; СУБД ; API для шифрування даних УДК 004.4’24 A software is developed for inventory automation based on Android using the Firebase database in the Java programming language. The appendix uses a system of reading barcodes and QR-codes, which provide the addition of goods to the warehouse with all the details of the selected product and informationon all stocks in the warehouse with their price, category, name and code goods. Implemented authorization of system users using the open FirebaseAuth standard. Creating a single service for authorization and registration allows to make the system scalable. The system implements the search for goods by code, as well as viewing stocks in the warehouse with automatic price calculation. The main service of the database is a cloud database of the NoSQL class, which allows storing and synchronizing data between several clients, there is an API for data encryption. In addition, the database remains available only in the application to avoid unauthorized access and editing. While development, it was decided to make an automated control system on the Android OS device, because industrial digitalization (precisely because of the mass introduction of smart devices) requires mobility and accelerated processing of stocks at various stages of turnover. Testing of the developed software is carried out.Problems in programming 2022; 1: 13-22 Розроблено новий програмний засіб для автоматизації запасами на основі ОС Android із використанням бази даних Firebase та мови програмування Java, що послуговується cистемою зчитування штрих- кодів та QR-кодів. Засіб забезпечує додавання товару на склад із подробицями про обраний товар та перегляд усіх запасів з їх ціною, категорією, назвою та кодом товару. Реалізовано авторизацію ко- ристувачів системи за допомогою відкритого стандарту FirebaseAuth та FirebaseDatabase. Створення єдиного сервісу для авторизації та реєстрації дозволило зробити систему масштабованою. У системі реалізовано пошук товару за кодом, а також перегляд запасів на складі з автоматичним підрахунком ціни. Основний сервіс бази даних – хмарна СУБД класу NoSQL, що дозволяє зберігати та синхронізувати дані між кількома клієнтами. Передбачено API для шифрування даних.Problems in programming 2022; 1: 13-22 Інститут програмних систем НАН України 2022-05-30 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/486 10.15407/pp2022.01.013 PROBLEMS IN PROGRAMMING; No 1 (2022); 13-22 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 1 (2022); 13-22 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 1 (2022); 13-22 1727-4907 10.15407/pp2022.01 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/486/485 Copyright (c) 2022 PROBLEMS IN PROGRAMMING |
institution |
Problems in programming |
baseUrl_str |
https://pp.isofts.kiev.ua/index.php/ojs1/oai |
datestamp_date |
2022-07-12T19:02:01Z |
collection |
OJS |
language |
Ukrainian |
topic |
Android Java Firebase authorization API architecture scalable automation systems NoSQL DBMS;API for data encryption UDC 004.4′24 |
spellingShingle |
Android Java Firebase authorization API architecture scalable automation systems NoSQL DBMS;API for data encryption UDC 004.4′24 Haidukevych, Y.O. Doroshenko, А.Yu. Automated inventory management system on Android using barcodes and QR-codes |
topic_facet |
Android Java Firebase authorization API architecture scalable automation systems NoSQL DBMS;API for data encryption UDC 004.4′24 ОС Android Java Firebase авторизаці архітектура API масштабовані системи автоматизації NoSQL СУБД API для шифрування даних УДК 004.4’24 |
format |
Article |
author |
Haidukevych, Y.O. Doroshenko, А.Yu. |
author_facet |
Haidukevych, Y.O. Doroshenko, А.Yu. |
author_sort |
Haidukevych, Y.O. |
title |
Automated inventory management system on Android using barcodes and QR-codes |
title_short |
Automated inventory management system on Android using barcodes and QR-codes |
title_full |
Automated inventory management system on Android using barcodes and QR-codes |
title_fullStr |
Automated inventory management system on Android using barcodes and QR-codes |
title_full_unstemmed |
Automated inventory management system on Android using barcodes and QR-codes |
title_sort |
automated inventory management system on android using barcodes and qr-codes |
title_alt |
Автоматизована система управління запасами на OC Android та бази даних Firebase з використанням штрих кодів та QR-кодів |
description |
A software is developed for inventory automation based on Android using the Firebase database in the Java programming language. The appendix uses a system of reading barcodes and QR-codes, which provide the addition of goods to the warehouse with all the details of the selected product and informationon all stocks in the warehouse with their price, category, name and code goods. Implemented authorization of system users using the open FirebaseAuth standard. Creating a single service for authorization and registration allows to make the system scalable. The system implements the search for goods by code, as well as viewing stocks in the warehouse with automatic price calculation. The main service of the database is a cloud database of the NoSQL class, which allows storing and synchronizing data between several clients, there is an API for data encryption. In addition, the database remains available only in the application to avoid unauthorized access and editing. While development, it was decided to make an automated control system on the Android OS device, because industrial digitalization (precisely because of the mass introduction of smart devices) requires mobility and accelerated processing of stocks at various stages of turnover. Testing of the developed software is carried out.Problems in programming 2022; 1: 13-22 |
publisher |
Інститут програмних систем НАН України |
publishDate |
2022 |
url |
https://pp.isofts.kiev.ua/index.php/ojs1/article/view/486 |
work_keys_str_mv |
AT haidukevychyo automatedinventorymanagementsystemonandroidusingbarcodesandqrcodes AT doroshenkoayu automatedinventorymanagementsystemonandroidusingbarcodesandqrcodes AT haidukevychyo avtomatizovanasistemaupravlínnâzapasaminaocandroidtabazidanihfirebasezvikoristannâmštrihkodívtaqrkodív AT doroshenkoayu avtomatizovanasistemaupravlínnâzapasaminaocandroidtabazidanihfirebasezvikoristannâmštrihkodívtaqrkodív |
first_indexed |
2025-07-17T09:35:41Z |
last_indexed |
2025-07-17T09:35:41Z |
_version_ |
1837886280738799616 |
fulltext |
13
Інструментальні засоби і середовища програмування
Вступ
Ми живемo в епoху завершення
третьoї цифровoї ревoлюції, щo почaлася
в другiй половинi минулoго стoлiття. Її
характернi риси – рoзвиток інформаційнo-
кoмунікаційних технологій, автоматизація
та рoботизацiя вирoбничих процесiв.
Рoзвитoк iнфoрмaцiйних технолoгiй
i зaсобів кoмунікації, насaмперед
електрoнних мереж, створює пoтужний
iмпульс для фoрмування новoї тенденцiї
функціoнування сучaсного бiзнесу – дiджи-
талiзації еконoмічних вiдносин. Бiльшість
нoсіїв інформацiї стaють цифрoвими, щo
визначає oсновний тренд рoзвитку як су-
часної техніки, тaк i бiзнес-процесiв із
перевaжною чaсткою електрoнної склaдо-
вої. Електрoнна фoрма кoмунікацій пiд-
вищує рiвень i ефективнiсть спiлкування
мiж пoкупцями тa прoдaвцями i ствoрює
новi ринки й мoжливостi для реoрганізацiї
екoномiчних прoцесів.
Автоматизована система управління
запасами – найважливіший елемент діджи-
талізації підприємства. І з певного часу це
вже не додаткова функція, а постійна по-
треба компаній, які хочуть конкурувати на
ринку. Успішна діджиталізація передбачає
комбінацію двох найважливіших аспектів:
переведення всіх істотних активів у циф-
ровий формат (наприклад, послуговування
лише відсканованими документами, що
зберігаються у хмарах) та використання
спеціального програмного забезпечення
для діджиталізації певних процесів ком-
панії (наприклад, використання SAP для
виконання різних транзакцій з постачаль-
никами без урахування паперового доку-
ментообігу). Цифрова трансформація - це
серія загальних змін компанії, що приво-
дить до підвищення ефективності та при-
бутковості компанії.
Якщо ви не знаєте, з чого почати ав-
томатизацію вашого бізнесу, почніть із роз-
робки індивідуальної системи управління
запасами. Такий інструмент, створений
безпосередньо під вашу компанію, завдяки
автоматизації, допоможе м’яко перейти на
електронний документообіг, водночас ор-
ганічно вписуючись в існуючі процеси ва-
шого підприємства. І пам’ятайте - завжди
ухвалюйте рішення на основі даних. А ми
допоможемо вам ці дані зібрати та оброби-
ти. Нaдалі такі системи iнтегрувaтимуться
з системaми управлiння трaнспортними
перевезеннями, системaми aвтоматизацiї
лoгістики зaпасів та закупiвель. Метою
даної статті є створення автоматизованої
системи управління запасами на базі OC
Android для діджиталізації товарообігу
підприємств.
УДК 004.4’24 https://doi.org/10.15407/pp2022.01.013
Я.О. Гайдукевич, А.Ю. Дорошенко
АВТОМАТИЗОВАНА СИСТЕМА УПРАВЛІННЯ
ЗАПАСАМИ НА ОС ANDROID ТА БАЗИ ДАНИХ
FIREBASE З ВИКОРИСТАННЯМ ШТРИХ КОДІВ
ТА QR-КОДІВ
Розроблено новий програмний засіб для автоматизації запасами на основі ОС Android із використан-
ням бази даних Firebase та мови програмування Java, що послуговується cистемою зчитування штрих-
кодів та QR-кодів. Засіб забезпечує додавання товару на склад із подробицями про обраний товар та
перегляд усіх запасів з їх ціною, категорією, назвою та кодом товару. Реалізовано авторизацію ко-
ристувачів системи за допомогою відкритого стандарту FirebaseAuth та FirebaseDatabase. Створення
єдиного сервісу для авторизації та реєстрації дозволило зробити систему масштабованою. У системі
реалізовано пошук товару за кодом, а також перегляд запасів на складі з автоматичним підрахунком
ціни. Основний сервіс бази даних – хмарна СУБД класу NoSQL, що дозволяє зберігати та синхронізу-
вати дані між кількома клієнтами. Передбачено API для шифрування даних.
Ключові слова: ОС Android, Java, Firebase, авторизація, архітектура API, масштабовані системи авто-
матизації, NoSQL , СУБД , API для шифрування даних.
© Я.О. Гайдукевич, А.Ю. Дорошенко, 2022
ISSN 1727-4907. Проблеми програмування. 2022. №1
14
Інструментальні засоби і середовища програмування
Саме через товарообіг відбуваєть-
ся зміна форм вартості споживчих то-
варів, створеної в процесі виробництва.
Трaдиційно товарообіг досліджується пе-
реважно на мікрорівні як основний показ-
ник діяльності торговельних підприємств.
Однак на сьогодні дослідження товароо-
бігу та факторів, які на нього впливають,
має відбуватися і на макрорівні, оскільки
оптимальна структура товарообігу держа-
ви є одним із головних чинників конкурен-
тоспроможності її економіки.
Зaпаси – це активи підприємства
(ресурси, майно), які:
• утримуються для подальшого про-
дажу (розподілу, передачі) за умов звичай-
ної господарської діяльності;
• перебувaють у процесi виробни-
цтва з метoю подальшого продaжу продук-
ту виробництва;
• утримуються для споживання під
час виробництва продукції, виконання ро-
біт та надання послуг, а також управління
підприємством.
До зaпасів належать, зокрема:
• виготовлена на підприємстві гото-
ва продукція;
• сільськогосподарська продукція і
продукція лісового господарства;
• придбані (отримані) товари, що
утримуються підприємством з метою по-
дальшого продажу;
• сировина, основні й допоміжні
матеріали, комплектуючі вироби та інші
матеріальні цінності, призначені для ви-
робництва продукції, виконання робіт, на-
дання послуг, розподілу, передачі, обслуго-
вування виробництва й адміністративних
потреб.
Збільшення запасів, з одного боку,
приводить до підвищення ефективності, з
іншого – зростає сума коштів, зокрема, на
зберігання таких запасів. Водночас, скоро-
чення запасів може призвести до збоїв про-
цесів виробництва, поставок чи торгівлі.
Тому важливо мати оперативну та
актуальну інформацію щодо кількості запа-
сів підприємства на складі за категоріями,
цінами тощо. Зі свого боку використання
програмного забезпечення для управління
запасами дає можливість усьому бізнесу
працювати краще. Так, зокрема, вашим
співробітникам більше не буде потрібно
реєструвати кожну одиницю вручну, візу-
ально перевіряти якість і кількість отри-
маного товару, адже такий підхід загрожує
ризиком помилок людського фактора, а та-
кож вимагає великих тимчасових витрат.
Станом на даний момент існує де-
кілька систем, які пропонують готові рі-
шення автоматизованих систем управління
виробництвом, зокрема, Replenishment+
від AbmCloud. Основне завдання систе-
ми – забезпечити постійну наявність си-
ровини, матеріалів, комплектуючих у по-
трібному місці виробничого ланцюжка у
потрібній кількості та у потрібний час. А
також скоротити рівень надлишкових за-
пасів, забезпечити високу надійність по-
ставок та скоротити вплив зміни попиту
на рівень запасів. Це дуже функціонально
потужний конкурент, але для управління
такою системою потрібні робочі місця та
комп’ютери. Тоді як система, яку розро-
бляє автор, націлена більше на діджиталі-
зацію. Такою системою можна керувати з
мобільного девайсу в будь-якому куточку
світу, сканувати товари лише з телефону та
додавати до інвентарю складу.
1. Формування вимог до системи
Система має давати можливість ко-
ристувачу сканувати запаси за кодом товару.
Можливість додавати обрані товари до інт-
вентарю складу за ціною, назвою, категорією
товару та штрих кодом. Для кожної позиції то-
вару користувач може скористатися пошуком
за штрих кодом, щоб вивести інформацію про
виріб. Для кожного нового зареєстрованого
акаунту в системі передбачена база даних, яка
зберігає інформацію про користувача, а також
про інвентар у його системі.
Система зі свого боку також пови-
нна автоматично підраховувати кількість
одиниць товару на складі та їхню цінову
складову.
Як розшифровувати інформацію, за-
кладену в QR-кодах? Це завдання успіш-
но вирішує переважна частина сучасних
смартфонів та планшетів. Для зчитування
закодованих даних досить перейти у вікно
додатку товару та активувати панель ска-
нера, QR-код буде відсканований вбудова-
ною камерою мобільного пристрою.
15
Інструментальні засоби і середовища програмування
Замовники з постачальниками змо-
жуть спілкуватися та обговорювати умови
закупівлі нових запасів не боячись над-
лишків товару на складі, адже вся інфор-
мація буде вказана в додатку.
Діаграми використання системи для
таких ролей користувача, як замовник, по-
стачальник, та спостерігач (не авторизова-
ний користувач) представлено на Рисунку 1:
Розроблена діаграма використання
відображає базовий набір функцій, які до-
ступні авторизованому користувачу автома-
тизованої системи управління запасами на
ОС Android, а саме мерченайдзеру (товароз-
навець чи помічник товарознавця, людина,
яка представляє виробничу чи торговельну
компанію у відповідних мережах. Відпо-
відає за викладення товару, встановлення
супутнього необхідного обладнання, розмі-
щує POS-матеріали).
Оскільки система вбудована в мо-
більний девайс, то функціонал дає можли-
вість реєструвати нові товари, використо-
вуючи лише телефон або планшет, шукати
вироби за номером штрих коду. Отже, у сис-
темі укомплектовано все необхідне в єдине
ціле, в одну велику мережу, де можна збері-
гати та вести підрахунок товарів, не вико-
ристовуючи стаціонарних комп’ютерів.
Система, орієнтована на потреби
торговельної компанії в процесі автомати-
зації управління, надає такі можливості, як
реклама нового товару, перегляд власних
доданих товарів до інвентарю, пошук това-
ру за штрих кодом, видалення товару, пере-
гляд загальної кількості товарів та цін.
Після формування варіантів вико-
ристання системи, було виділено мінімаль-
ні системні вимоги до виконання додатку.
Перелік атрибутів наведено у Таблиці 1:
Таблиця 1. Мінімальні системні вимоги
Операційна система Android 4.4 (KitKat)
та вище
Оперативна пам’ять 1Гб та вище
Вбудована пам’ять 8Б та вище
GPS-модуль (A-GPS) Так
Наявність сім-картки
(GPRS) рекомендуємо
Підтримка 3G (4G,
LTE) рекомендуємо
Фото-камера 5МП та вище
Процесор
Intel Atom® Processor
Z2520 1.2 ГГц або
швидший процесор
Пристрої зберігання
даних
Між 850 Мбайтами та
1.2 ГБ
Жорсткий диск
2 ГБ доступного місця
на жорсткому диску
для встановлення; до-
датковий вільний про-
стір потрібен під час
встановлення.
Рис. 1. Діаграма використання мерченайдзером
16
Інструментальні засоби і середовища програмування
Під час установки APK в системі
Android встановлюється файл DEX, який
містить код, ресурси тощо, скомпільова-
ні як двійкові файли. Файл dex, зазвичай,
має той самий розмір, що й файл apk, якщо
у вас немає ресурсів, не скомпільованих
в активах. Ще однією поширеною осо-
бливістю встановлення додатків є те, що
android SAVES оригінальний apk при пере-
встановленні у разі помилок або з якихось
інших причин також встановлюється. Ось
чому обсяг пам’яті наших додатків у сис-
темі вдвічі більший. Це сума розміру ви-
хідного apk та встановленого dex.
Проєктування бази даних почина-
ється в коді AndroidStudio, де визначають-
ся типи даних для конкретного loyaute.xml
файлу в Common Attributes. Структура про-
єктується в класах, конкретний клас про-
грами може відповідати за окреме вікно,
таке як, наприклад, реєстрація користувача,
додавання продуктів, збереження їх у базі
даних тощо. Підключення бази даних до
проєкту також є невід’ємною частиною. До
того ж для користування бази даних Firebase
треба імпортувати відповідні бібліотеки:
import com.google.android.gms.tasks.
OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.fi rebase.auth.AuthResult;
import com.google.fi rebase.auth.
FirebaseAuth;
import com.google.fi rebase.auth.
FirebaseUser;
import com.google.fi rebase.database.
FirebaseDatabase;
Розроблена структура бази даних
включає створення змінних із відповідними
типами даних, а також розгалуження на до-
чірні елементи. Наступний фрагмент коду де-
монструє додавання елемента до бази даних:
public void additem(){
String itemnameValue = itemname.
getText().toString();
String itemcategoryValue = itemcategory.
getText().toString();
String itempriceValue = itemprice.getText().
toString();
String itembarcodeValue = itembarcode.
getText().toString();
fi nal FirebaseUser users = fi rebaseAuth.
getCurrentUser();
String fi naluser=users.getEmail();
String resultemail = fi naluser.
replace(“.”,””);
if (itembarcodeValue.isEmpty()) {
itembarcode.setError(“Порожньо “);
itembarcode.requestFocus();
return;
}
if(!TextUtils.isEmpty(itemnameValue)&&!
TextUtils.isEmpty(itemcategoryValue)&&!Te
xtUtils.isEmpty(itempriceValue)){
Items items = new Items(itemnameValue,it
emcategoryValue,itempriceValue,itembarcod
eValue);
databaseReference.child(resultemail).
child(“Items”).child(itembarcodeValue).
setValue(items);
databaseReferencecat.
child(resultemail).child(“ItemByCatego
ry”).child(itemcategoryValue).
child(itembarcodeValue).setValue(items);
itemname.setText(“”);
itembarcode.setText(“”);
itemprice.setText(“”);
itembarcode.setText(“”);
Toast.makeText(additemActivity.
this,itemnameValue+” Додано”,Toast.
LENGTH_SHORT).show();
}
else {
Toast.makeText(additemActivity.this,”Будь
ласка, заповніть усі поля”,Toast.LENGTH_
SHORT).show();
}
}
Таким чином розроблений фрагмент
коду додавання товарів до бази даних.
2. Реалізація бізнес-логіки
Бізнес-логіка – це частина коду, яка
виконує логіку додатку. Крім бізнес-логі-
ки, у додатках може бути код, який відпо-
відає за відображення інформації, управ-
ління інформацією, роботу із зовнішніми
ресурсами/сервісами.
У системі бізнес-логіка зосереджена
в класах, які синхронізовані з базою даних,
що зберігає інформацію у форматі обміну
17
Інструментальні засоби і середовища програмування
даних JSON. Крім цього при запитах на
модифікацію даних передаються відповід-
ні заголовки авторизації для уникнення не-
санкціонованого доступу.
Нижче наведено декілька реалізацій
класів.
Клас scanItemsActivity призначений
для роботи зі штрих кодами та QR кодами,
наприклад, пошук товару за номером коду.
Клас утворює два вікна: одне – пошук то-
вару за кодом, а інше – вивід товару з па-
раметрами, такими як: назва виробу, його
код, ціна і категорія.
Також викликається збережена про-
цедура, яка збирає із бази даних інформа-
цію та повертає результат у форматі JSON.
Клас сервісу складається з наступних ме-
тодів:
1. метод fi rebasesearch. Метод створює
запит до бази даних, щодо номера
коду товару, який має повернути або
вивести на екран, а також створює
об’єкт FirebaseRecyclerAdapter, який
зв’язується з Query до RecyclerView.
Коли дані додаються, видаляються
або змінюються, ці оновлення авто-
матично застосовуються до інтер-
фейсу користувача в реальному часі;
public void
fi rebasesearch(String searchtext){
Query fi rebaseSearchQuery
= mdatabaseReference.
orderByChild(“itembarcode”).
startAt(searchtext).
endAt(searchtext+”\uf8ff ”);
FirebaseRecyclerAdapter<Items,
UsersViewHolder>
fi rebaseRecyclerAdapter = new
FirebaseRecyclerAdapter<Items,
UsersViewHolder>
( Items.class,
R.layout.list_layout,
UsersViewHolder.class,
fi rebaseSearchQuery )
{
2. метод setDetails. Метод створює
TextView для виводу їх на екран до-
датку після пошуку конкретного то-
вару, а саме код товару, назву, кате-
горію та ціну.
За аналогічною схемою реалізовано
клас (viewInventoryActivity) для роботи з
інвентарем складу, але виводяться всі то-
вари без пошуку.
public void setDetails(Context
ctx,String itembarcode, String
itemcategory, String itemname, String
itemprice){
TextView item_barcode =
(TextView) mView.fi ndViewById(R.
id.viewitembarcode);
TextView item_name =
(TextView) mView.fi ndViewById(R.
id.viewitemname);
TextView item_category =
(TextView) mView.fi ndViewById(R.
id.viewitemcategory);
TextView item_price =
(TextView) mView.fi ndViewById(R.
id.viewitemprice);
item_barcode.
setText(itembarcode);
item_category.
setText(itemcategory);
item_name.setText(itemname);
item_price.setText(itemprice);
}
3. Метод onCreate. Метод працює
з базою даних, створює точку
входу для доступу до бази да-
них Firebase. Можливість отри-
мати екземпляр, використавши
getInstance(). Щоб отримати до-
ступ до розташування в базі даних
та прочитати або записати дані,
створено getReference().
@Override
protected void
onCreate(Bundle savedInstanceState)
{
super.
onCreate(savedInstanceState);
setContentView(R.layout.
activity_scan_items);
fi rebaseAuth = FirebaseAuth.
getInstance();
fi nal FirebaseUser users =
fi rebaseAuth.getCurrentUser();
18
Інструментальні засоби і середовища програмування
String fi naluser=users.
getEmail();
String resultemail = fi naluser.
replace(“.”,””);
mdatabaseReference =
FirebaseDatabase.getInstance().
getReference(“Users”).
child(resultemail).child(“Items”);
resultsearcheview =
fi ndViewById(R.id.searchfi eld);
scantosearch
= fi ndViewById(R.
id.imageButtonsearch);
searchbtn = fi ndViewById(R.
id.searchbtnn);
mrecyclerview =
fi ndViewById(R.id.recyclerViews);
LinearLayoutManager
manager = new
LinearLayoutManager(this);
mrecyclerview.
setLayoutManager(manager);
mrecyclerview.
setHasFixedSize(true);
mrecyclerview.
setLayoutManager(new
LinearLayoutManager(this));
}
Клас RegisterActivity призначе-
ний для роботи із користувачами системи
управління запасами, реєстрації їхніх ака-
унтів та збереження у базі даних, щоб збе-
рігати тільки ту інформацію про товар, яку
додавав конкретний користувач. Конфіден-
ційність даних у базі присутня, тому паро-
лі не виводяться задля безпеки даних. Клас
складається з наступних методів:
1. метод onCreate. Містить логіку ре-
єстрації користувача, створює тек-
стові поля для заповнення даних,
таких як емейл, пароль, повтор па-
роля та ім’я . Щоб отримати об’єкт
FirebaseAuth, викликає статичний
метод getInstance().
@Override
protected void
onCreate(Bundle savedInstanceState)
{
super.
onCreate(savedInstanceState);
setContentView(R.layout.
activity_register);
editTextName =
fi ndViewById(R.id.departmentName);
editTextEmail =
fi ndViewById(R.id.emailRegister);
editTextPassword
= fi ndViewById(R.
id.passwordRegister);
editTextcPassword=
fi ndViewById(R.id.confi rmPassword);
UserRegisterBtn=
fi ndViewById(R.id.button_register);
progressBar =
fi ndViewById(R.id.progressbar);
progressBar.
setVisibility(View.GONE);
mAuth = FirebaseAuth.
getInstance();
UserRegisterBtn.
setOnClickListener(new View.
OnClickListener() {
@Override
public void onClick(View v) {
registerUser();
}
});
}
2. метод onStart. Обробляє вже зареє-
строваного користувача.
3. метод registerUser. Обробляє поля,
що були у методі onCreate, надає їм
тип даних .toString(), Якщо поля не-
правильно заповнені або пусті ви-
дає відповідне повідомлення. Метод
отримує дані та надсилає дані на
основі електронної пошти користу-
вача до бази даних, а також виво-
дить повідомлення у разі успішної
або неуспішної реєстрації.
Клас additemActivity потрібен для
додавання товару до інвентарю складу.
Також він створює поля для вводу даних
про вибір, таких як: назва товару, катего-
рія, ціна та числовий тип даних для вводу
номера коду товару. Крім того, клас від-
19
Інструментальні засоби і середовища програмування
слідковує зміну в полях під час зберігання
товару та додає до бази даних. Клас скла-
дається з наступних методів:
1. метод onCreate. Містить логіку ре-
єстрації товару, створює текстові
поля для заповнення даних, таких
як: назва товару, категорія, ціна та
числовий тип даних для вводу но-
мера коду товару. Щоб отримати
об’єкт FirebaseAuth, викликається
статичний метод getInstance(). Ниж-
че наведено реалізацію:
@Override
protected void
onCreate(Bundle savedInstanceState)
{
super.
onCreate(savedInstanceState);
setContentView(R.layout.
activity_additem);
fi rebaseAuth = FirebaseAuth.
getInstance();
databaseReference =
FirebaseDatabase.getInstance().
getReference(“Users”);
databaseReferencecat =
FirebaseDatabase.getInstance().
getReference(“Users”);
resulttextview =
fi ndViewById(R.id.barcodeview);
additemtodatabase
= fi ndViewById(R.
id.additembuttontodatabase);
scanbutton =
fi ndViewById(R.id.buttonscan);
itemname = fi ndViewById(R.
id.edititemname);
itemcategory=
fi ndViewById(R.id.editcategory);
itemprice = fi ndViewById(R.
id.editprice);
itembarcode=
fi ndViewById(R.id.barcodeview);
scanbutton.
setOnClickListener(new View.
OnClickListener() {
@Override
public void onClick(View
view) {
startActivity(new
Intent(getApplicationContext(),
ScanCodeActivity.class));
}
});
additemtodatabase.
setOnClickListener(new View.
OnClickListener() {
@Override
public void onClick(View v) {
additem();
}
});
}
2. метод additem. Виконує такі функ-
ції, як: додавання елемента до бази
даних, створення полів для їх запо-
внення, передавання цих полів до
бази даних, зберігання.
3. метод Logout. Потрібен для виклику
меню у верхній частині екрану та
виходу з акаунту. Цей метод фігурує
також у інших класах, де є можли-
вість виклику меню. Наведено реа-
лізацію нижче:
private void Logout()
{
fi rebaseAuth.signOut();
fi nish();
startActivity(new
Intent(additemActivity.
this,LoginActivity.class));
Toast.makeText(additemActivity.
this,”LOGOUT SUCCESSFUL”,
Toast.LENGTH_SHORT).show();
}
4. Метод onCreateOptionsMenu. Порі-
бен для MenuInfl ater - це системний
ресурс Android. Створюється під
час завантаження андроїда. Це по-
стійний об’єкт, і посилання на нього
завжди доступне у пам’яті. Кожен
підклас класу Context, тобто Activity
може отримати посилання на нього,
викликавши getMenuInfl ater()зсере-
дини класу. Наведено нижче реалі-
зацію:
20
Інструментальні засоби і середовища програмування
@Override
public boolean
onCreateOptionsMenu(Menu menu) {
getMenuInfl ater().infl ate(R.menu.
menu,menu);
return true;
}
Клас ScanCodeActivity. Відповідає за
сканування штрих кодів та QR кодів. Ниж-
че наведено реалізацію (використано біблі-
отеку ZXingScannerView scannerView):
import com.google.zxing.
Result;
import me.dm7.
barcodescanner.zxing.
ZXingScannerView;
public class ScanCodeActivity
extends AppCompatActivity
implements ZXingScannerView.
ResultHandler {
int MY_PERMISSIONS_
REQUEST_CAMERA=0;
ZXingScannerView
scannerView;
@Override
protected void
onCreate(Bundle savedInstanceState)
{
super.
onCreate(savedInstanceState);
scannerView = new
ZXingScannerView(this);
setContentView(scannerView);
}
@Override
public void
handleResult(Result result) {
additemActivity.
resulttextview.setText(result.
getText());
onBackPressed();
}
@Override
protected void onPause() {
super.onPause();
scannerView.stopCamera();
}
@Override
protected void
onPostResume() {
super.onPostResume();
if (ContextCompat.checkSelf
Permission(getApplicationContext(),
Manifest.permission.CAMERA)
!= PackageManager.
PERMISSION_GRANTED)
{
ActivityCompat.
requestPermissions(this, new String[]
{Manifest.permission.CAMERA},
MY_PERMISSIONS_
REQUEST_CAMERA);
}
scannerView.
setResultHandler(this);
scannerView.startCamera();
}}
Таким чином було реалізовано па-
нель сканування для штрих кодів та QR
кодів.
3. Тестування
У структурі Android Studio є папки
androidTest і test поруч з основною папкою
з класами проєкту.
Навіщо потрібне тестування? Якщо
додаток маленький, то тести не потрібні й
цілком можна обходитися без тестування і
далі. Чому? Йдеться про те, що в невели-
ких проєктах можна контролювати логіку
програми. Також можна передбачити слаб-
кі місця та виправити код.
Але все змінюється, якщо програма
стала складною. Якщо з’явилося понад де-
сятка різних екранів активностей, окремих
класів тощо, код слід розбивати на модулі,
аби забезпечити незалежність. Такий під-
хід обов’язково використовується у компа-
ніях, де кожен відповідає за свою ділянку
коду.
Тести поділяються на дві категорії –
локальні (Unit Testing) та інструментальні
(UI Testing).
21
Інструментальні засоби і середовища програмування
Локальні тести перевіряють роботу
методу, класу, компонента. Тест не зале-
жить від Android. Ппрактично, перевіря-
ється код Java, який можна контролюва-
ти на звичайному комп’ютері без участі
пристрою або емулятора. Наприклад, та-
кому варіанту відповідає додавання двох
чисел типу int. Подібні тести проводять у
папці Test.
Для інструментальних тестів на-
явність пристрою або емулятора є
обов’язковою, оскільки потрібно тесту-
вати натискання кнопки, введення тексту,
прокручування, торкання та інші операції.
Тести проводять у папці androidTest.
Висновки
Реалізовано програмний засіб для
автоматизації запасами на основі ОС
Android із використанням бази даних
Firebase та мови програмування Java.
Система використовує метод зчитування
штрих кодів та QR-кодів. Він забезпечує
додавання товару на склад з усіма подро-
бицями про обраний товар та перегляд усіх
запасів на складі з їхньою ціною, катего-
рією, назвою та кодом товару. Реалізовано
авторизацію користувачів системи за допо-
могою відкритого стандарту FirebaseAuth
та FirebaseDatabase.
Надано можливість реєструвати ко-
ристувачів системи, що дозволило зробити
систему масштабованою. У системі реа-
лізовано пошук товару за кодом, а також
перегляд запасів на складі з автоматичним
підрахунком ціни. Основний сервіс бази
даних - хмарна СУБД класу NoSQL, що
дозволяє зберігати та синхронізувати дані
між кількома клієнтами. Передбачено API
для шифрування даних. Система у грошо-
вому еквіваленті автоматично розраховує
результати управління запасами товарів та
загальну ціну.
Бібліотека me.dm7.barcodescanner.
zxing.ZXingScannerView використовува-
лась для реалізації сканера.
Запропонована автоматизована сис-
тема управління запасами уможливлює об-
рання найбільш ефективних інструментів
для регулювання товарообігу та управлін-
ня запасами.
References
1. Stateless 3.0 - A State Machine library for
.NET Core [Online] - Access mode: https://
www.hanselman.com/blog/stateless- 30-a-
state-machine-library-for-net-core /.
2. Problems of information technology software
development for supercomputer systems [On-
line]. - Access mode https://zakon.rada.gov.
ua/rada/show/v0347550-10#Text.
3. Architectural Styles and the Design of Net-
work-based Software Architectures [On-
line] - Access mode: https://www.ics.uci.
edu/~fi elding/pubs/dissertation / top.htm
4. Alexander Wald, Paul Datel, Harvey Datel.
Android for developers. 3rd edition, 2016
5. John Horton. Learning Java by Building An-
droid Games - Explore Java Through Mobile
Game Development, 2019.
6. Greg Nudelman. Android Design Patterns:
Interaction Design Solutions for Developers,
2013.
7. Mark L. Murphy. Busy Coder’s Guide to An-
droid Development, 2020.
8. John Darwin. Android. Collection of recipes,
2018.
9. Don Griffi ths, David Griffi ths. Head First.
Programming for Android, 2016.
10. Robert Cecil Martin. Net code - 2008.
11. Christine Marsicano, K. Stewart, Bill Phil-
lipsAndroid. Programming for Professionals,
4th Edition, 2021.
Література
1. Stateless 3.0 – бібліотека State Machine
для .NET Core [Online] – Режим доступу:
https://www.hanselman.com/blog/stateless-
30-a-state-machine-library-for-net-core/ .
2. Проблеми розробки програмного забез-
печення інформаційних технологій для
суперкомп’ютерних систем [Online] – Ре-
жим доступу:https://zakon.rada.gov.ua/rada/
show/v0347550-10#Text.
3. Архітектурні стилі та дизайн архітектур
програмного забезпечення на основі мережі
[Online] – Режим доступу: https://www.ics.
uci.edu/~fi elding/pubs/dissertation/top.htm.
4. Олександр Уолд, Пол Датель, Харві Да-
тель. Android для розробників. 3-е видан-
ня, 2016.
5. Джон Хортон. Вивчення Java шляхом ство-
рення ігор для Android – Досліджуйте Java за
допомогою розробки мобільних ігор, 2019.
22
Інструментальні засоби і середовища програмування
6. Грег Нудельман. Шаблони дизайну
Android: рішення для дизайну взаємодії
для розробників, 2013.
7. Марк Л. Мерфі. Посібник Busy Coder з
розробки Android, 2020.
8. Джон Дарвін. Android. Збірник рецептів,
2018.
9. Дон Гріффітс, Девід Гріффітс. Голова спо-
чатку. Програмування для андроїд, 2016.
10. Роберт Сесіл Мартін. Чистий код – 2008 р.
11. Крістін Марсікано, К. Стюарт, Білл
ФілліпсAndroid. Програмування для про-
фесіоналів, 4-е видання, 2021.
Отримано 18.12.2021
Про авторів:
Гайдукевич Ярослав Олегович,
магістрант кафедри інформаційних систем
та технологій КПІ імені Ігоря Сікорського.
Кількість наукових публікацій в україн-
ських виданнях – 1. http://orcid.org/0000-
0002-6300-1778,
Дорошенко Анатолій Юхимович,
доктор фізико-математичних наук,
професор, завідувач відділу теорії
комп’ютерних обчислень
Інституту програмних систем
НАН України, професор кафедри
автоматики і управління в технічних
системах НТУУ «КПІ імені Ігоря
Сікорського». Кількість наукових
публікацій в українських виданнях –
понад 180. Кількість наукових
публікацій в іноземних
виданнях – понад 70.
Індекс Гірша – 6.
http://orcid.org/0000-0002-8435-1451
Місце роботи авторів:
Інститут програмних систем
НАН України,
03187, м. Київ-187,
проспект Академіка Глушкова, 40.
Тел.: (044) 526 3559.
e-mail: doroshenkoanatoliy2@gmail.com,
yarmcfl y@gmail.com
|