You are on page 1of 47

ВИСОКА ШКОЛА ЕЛЕКТРОТЕХНИКЕ И

РАЧУНАРСТВАСТРУКОВНИХ СТУДИЈА

Сијарић Дино

Програмирање мобилних уређаја за ГТП Инжењеринг-


Обрачун плате и карнет
- завршни рад -

Београд, август 2020.


Кандидат: Сијарић Дино

Број индекса: РТ-133/17

Студијски програм: Рачунарска Техника

Тема: ГТП Инжењеринг-Обрачун плате и карнет

Основни задаци:
1. Обрачун личне плате радника и карнет (група радника)
2. Програмирање у Котлину помоћу алата Андроид Студио
3. Апликација за лако и ефикасно рачунање плате радника

Ментор:
Београд, август 2020 годинe.
_____________________________
др Мирослав Лутовац, проф. ВИШЕР

I
РЕЗИМЕ:
Циљ овог рада био је да се за фирму ГТП-инжењеринг направи функционална
андроид апликација која би помогла у обрачуну плате сваком раднику индивидуално
као и вођење евиденције плата групе радника у фирми (карнет) и тако заменила њихов
постојећи систем за евиденцију.
Апликацију на данашњи дан користи више од половине запошљених за вођење
личне евиденције, док радници који воде евиденцију сати групе радника су сви прешли
на рачунање сати помоћу апликације.
Дакле апликација је помогла да фирма лакше и са мање грешака обрачунава
плате радницима у односу на претходни систем где су радници морали да све пишу на
папиру.
Кључне речи: Андроид, Карнет, Обрачун плате

ABSTRACT:
Goal of this work was that functional Android application is made for firm GTP-
inzenjering which would help in calculating salary for every employee individually as well as
keeping record of salaries of group of employees and change the current way of keeping
record of salaries.
Application on this day is using more than half of employees for personal use, while
employees who are keeping record of group of employees all switched to this application.
In conclusion this application helped the firm so it can easier and with less errors keep
record of salaries compared to old way where employees had to write every day on papers.
Key words: Android, Record keeping, Lists

II
САДРЖАЈ:

1. СПИСАК СЛИКА 1
2. Увод 3
3. АНДРОИД СТУДИО , КОТЛИН 4
3.1. Андроид студио 4
3.2. Котлин 7
4. АПЛИКАЦИЈА 9
4.1.1. Почетна страна 9
4.1.2. Календар 11
4.1.3. Обрачун 13
4.1.4. Статистика 17
4.1.5. Листа радника (Карнет) 19
4.1.6. Календар и обрачун код карнета 22
4.1.7. SQLitе 24
4.1.8. Увоз и извоз базе података(import i export) 31
4.1.9. Навигациони мени (Side navigation menu) 37
5. ЗАКЉУЧАК 39
6. ИНДЕКС ПОЈМОВА 40
7. ЛИТЕРАТУРА 41
8. изјава о академскoј честитости 42

III
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

1. СПИСАК СЛИКА
Слика 2.1.1. – Андроид студио изглед .......................................................................4
Слика 2.1.2. – Мени пројекта ......................................................................................5
Слика 2.1.3. – Простор за кодирање ...........................................................................6
Слика 2.1.4. – Пример коришћења АВД алата у оквиру алата Андроид Студио..6
Слика 2.2.1. – Коришћење Дата Класе у апликацији ...............................................7
Слика 3.1.1.1. – Изглед почетне странице апликације ...........................................10
Слика 3.1.1.2. – Код за мењање страна ....................................................................11
Слика 3.1.2.1. – Изглед календар стране апликације .............................................12
Слика 3.1.2.2. – Функција додај коју извршава дугме Додај .................................13
Слика 3.1.3.1. – Изглед странице обрачун апликације ...........................................14
Слика 3.1.3.2. – Код задужен за промену опције уноса интервала за дане...........15
Слика 3.1.3.3. – Функција брСати која рачуна број сати корисника.....................15
Слика 3.1.3.4. – Део функције рачун одговоран за рачунање плате......................16
Слика 3.1.4.1. – Изглед странице статистика апликације ......................................17
Слика 3.1.4.2. – Код функције исцртај .....................................................................18
Слика 3.1.5.1. – Изглед странице Карнет апликације .............................................19
Слика 3.1.5.2. – Код адаптера за приказ листе радника .........................................20
Слика 3.1.5.3. – Код функција учитај и додај странице карнет .............................21
Слика 3.1.6.1. – Изглед странице календар којој се приступа из карнета ............22
Слика 3.1.6.2. – Изглед странице обрачун којој се приступа из
карнета ..............23
Слика 3.1.7.1. – Глогалне променљиве прве базе података ...................................24
Слика 3.1.7.2. – Креирање табеле базе података .....................................................25
Слика 3.1.7.3. – Функција у случају промене верзије базе података ....................25
Слика 3.1.7.4. – Функција за додавање елемената у бази података ......................26
Слика 3.1.7.5. – Функција за ажурирање једног уноса базе података ...................26

1
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.7.6. – Функција за приказ сати и напомене у календар страни ............27


Слика 3.1.7.7. – Функција за приказ свих записа из базе података .......................28
Слика 3.1.7.8. – Функција за проверу радног дана на страници календар ...........29
Слика 3.1.7.9. – Функција за проверу базе ..............................................................30
Слика 3.1.7.10. – Параметри табеле базе података карнета ...................................30
Слика 3.1.7.11. – Функција за брисање радника из карнета ..................................31
Слика 3.1.8.1. – Функција за увоз и извоз базе и функција за опције менија ......32
Слика 3.1.8.2. – Функција за увоз базе података .....................................................33
Слика 3.1.8.3. – Функција за извоз базе података ...................................................34
Слика 3.1.8.4. – Изглед менија за увоз и извор личних података ..........................35
Слика 3.1.8.5. – Изглед једне изведене базе као CSV фајл ....................................36
Слика 3.1.9.1. – Функција за одабир опције из навигационог менија ..................37
Слика 3.1.9.2. – Функција за дугме назад ................................................................38

2
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

2. УВОД
Овај рад односи се на Андроид апликацију која је рађена у оквиру стручне
праксе на захтев фирме ГТП инжењеринг Београд. Захтеви за апликацију били су да
она буде што једноставнија за коришћење као и да врши рачунање плате на полу-
месечном нивоу на основу унетих података.
Данас постоји доста сличних апликација на ову тему. Међутим ниједна од њих
није извршавала специфичне задатке који су били потребни овој фирми.
За програмирање ове апликације коришћен је алат под називом Андроид Студио
на програмском језику Котлин.
Задатак ове апликације био је да сваки радник може индивидуално да користи
апликацију и води евиденцију о својим сатима и плати. Такође апликација има и други
део који се односи на Карнет који у суштини служи како би радници који раде на
евиденцији сати радника на одређеном радном месту могли да воде евиденцију сати за
ту групу радника. Карнет може користити и директор фирме, рачуновођа или било ко
други који се бави исплатом плата радника где се може водити евиденција свих
радника у фирми.
Апликација користи SQLite базе података за Андроид Студио како би се сви
подаци могли трајно чували на мобилном телефону. Због могућности промене
телефона или евентуалног случајног брисања апликације имплементирана је и опција
увоза и извоза (import i export) базе података. Апликација садржи две базе података,
једну за личну евиденцију и једну за Карнет и оне се посебно увозе и извозе.
Део апликације за личну евиденцију састоји се из три дела. Први део је календар
где корисник бира датум за који жели да унесе сате. Други део је обрачун где корисник
на основу интервала дана рачуна број сати и плату. Трећи део је статистика где
корисник може на годишњем нивоу видети колико је сати рада имао по месецима.
Други део апликације (Карнет) има страну на којој се додају радници и формира
листа радника. Код сваког радника у листи постоји опција да се оде на њихов календар
или обрачун где се додају њихови сати или врши обрачун сати и плате. Такође на самој
листи постоји и аутоматски обрачун сати за тренутни петнаестодневни период у месецу
за сваког радника. Радници се могу бесконачно додавати као и брисати где ће се и сви
њихови подаци из базе података бити обрисани.
Сви задаци који су претходно наведени су решени у овој апликацији.
Апликација је константно тестирана током израде како би се отклониле све грешке које
су се јављале. У будућности пројектовано је да се уради превод на енглески језик како
би и корисници других земаља могли да користе апликацију.

3
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

3. АНДРОИД СТУДИО , КОТЛИН


Алат који је коришћен за израду овог рада је Андроид Студио, док је апликација
програмирана на програмском језику Котлин.

3.1.АНДРОИД СТУДИО
Андроид Студио је званично развојно окружење за Андроид оперативни систем.
Базиран је на ЏетБраинсовом (JetBrains) развојном окружењу IntelliJ IDEА. У алату
Андроид Студио се може програмирати на три програмска језика и то Котлин, Јава и
Ц++(C++). Дакле уколико се програмер већ сусретао са IntelliJ IDEА биће му лако да се
снађе са Андроид Студиом. Једна од главних разлика у односу на IntelliJ IDEА јесте у
томе што су додати посебни алати потребни за развој Андроид апликација као што је
AVD(Android Virtual Device) односно Андроид Виртуелни Уређај. Дакле овај алат
користи виртуелне машине које су засноване на Андроиду како би програмер у сваком
тренутку могао да тестира свој програм.

Слика 2.1.1 Андроид Студио изглед

Алат Андроид Студио као што је приказан на слици 2.1.1 састоји се из више
делова. Са леве стране налази се мени пројекта (слика 2.1.2) који нам пружа поглед на
структуру нашег програма. Дакле ту се налазе све класе програма, сви ресурси где нам
се налазе изглед (layout) фајлови итд.

4
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 2.1.2 Мени пројекта

Највећи део Андроид Студија заузима простор за писање кода. Ово је приказано
на слици 2.1.3. На врху се излистане све класе или изгледи који су отворени у датом
тренутку, док сав остали простор заузима простор за кодирање. Скроз на десној страни
овог простора уколико постоји неких грешака у коду биће исцртане црвене линије за
лакшу навигацију кроз код.

5
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 2.1.3 Простор за кодирање

Андроид Студио као што је и претходно речено користи алат АВД за покретање и
тестирање апликација што је приказано на слици 2.1.4. Међутим постоји и могућност
да уколико на пример програмеров телефон није излистан у АВГ менаџеру као опција
за тестирање, прикључи свој телефон преко УСБ прикључка и тестира апликацију
директно на свом телефону без коришћења виртуелне машине.

Слика 2.1.4 Пример коришћења АВД алата у оквиру Андроид Студија

6
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Све претходно приказане слике које су служиле за илустрацију рада алата Андроид Студио
приказују апликацију која је главна тема овог рада.

3.2.КОТЛИН
Програмски језик Котлин комбинује објектно оријентисано и функционално
програмирање. Повезан је са Јавом и ослања се на библиотеке које већ постоје у Јави.
Котлин је направљен са главним циљем да се користи у развоју Андроид апликација.
Котлин је данас официјелни програмски језик за развој Андроид апликација где је
заменио Јаву.
Предност програмског језика Котлин у односу на Јаву јесте тај што је доста
јаснији и концизнији па се при програмирању исте апликације на оба језика у Котлину
куца и до 40% мање линија кода. Такође Котлин се може користити заједно са Јавом.
Још једна од предности Котлина јесте та што је Open-Source (отвореног кода). Котлин
је такође доста лакши да се научи па ако програмер прелази са Јаве на Котлин неће му
бити потребно пуно времена да га научи.
Главне разлике у програмирању између Јаве и Котлина које омогућавају да се
куца мање кода су следеће:
-Null (нпр. када није иницијализована променљива или објекат): Свака
променљива или објект код Котлина мора да има додељену не-Null вредност. Ако
покушамо да доделимо или вратимо Null вредност код се неће компајлирати. Док ће
код Јаве се јавити изузетак, тако да је ово нека врста сигурносног механизма где
програмер мора да додели неку вредност свим објектима и променљивима. Ово
међутим може и да се заобиђе. Један пример како можемо у Котлину доделити Null
вредност некој променљивој:
val broj : Int? = null
-Код Котлина програмери нису дужни да декларишу или хватају изузетке. Ово
може бити и предност и мана. Предност је та што је код краћи док је мана та што ће
програм пропустити неке грешке.
-Класе за податке (Data Classes): Код Котлина постоје Data класе код којих нам
компајлер аутоматски креира конструкторе, гетере, сетер и методе. Ове класе се праве
како би се у њих смештали подаци. Овакве класе декларишу се писањем кључне речи
„data” испред дефиниције класе, док код Јаве све ове ствари морају ручно да се праве
што такође доводи до повећање дужине кода. На слици 2.2.1 приказано је коришћење
ових класа у апликацији.

Слика 2.2.1 Коришћење Дата Класе у апликацији

7
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

-Декларисање типа променљиве код Котлина није обавезно за разлику од Јаве.


На пример код Котлина би то овако изгледало :
val broj = 5
Док би код Јаве то изгледало овако :
int broj = 5; или
int broj; broj =5;
-Код Котлина на крају линије кода се не мора писати тачка зарез где је то код
Јаве обавезно.

Програмски језик Котлин се може користити у следећим развојним


окружењима:
-Eclipse
-IntelliJ IDEA
-Андроид Студио

8
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

4. АПЛИКАЦИЈА
Апликација се зове ГТП инжењеринг-Обрачун плате и карнет. Дакле као што је
и претходно речено ова апликација рађена је за фирму ГТП инжењеринг Београд.
Главна функција јој је да обрачунава сате корисницима и да на основу тих сати рачуна
плату за одређени временски период. Тај временски период може бити фиксан тј. од 1.
до 15. у месецу и од 16. до краја месеца или корисник може сам бирати временски
период од којег дана до којег дана у месецу жели да му се обрачунају сати односно
плата.
Ово је главна функционалност апликације. Апликација се ипак састоји из два
дела. Први део је индивидуални обрачун сати и плате док је други део Карнет као што
стоји и у самом називу апликације.
Индивидуални обрачун сати и плате састоји се из три дела. Календар где
корисник уписује сате, обрачун где корисник може да израчуна број сати и плату и
статистика где на основу изабране године корисник може да добије график који
приказује број радних сати по месецима.
Карнет има само једну страну где корисник додаје раднике уносећи њихово име
и презиме и тако формира листу радника односно карнет. Када су радници додати
отварају се два дугмета, календар и обрачун, код сваког радника у листи где се кликом
на њих одлази на посебне календар односно обрачун стране где се могу уписивати сати
односно рачунати плата за сваког радника у листи посебно. Такође у листи се поред два
дугмета са десне стране налази и текстуално поље Сати које исписује сате за сваког
радника у тренутном обрачунском периоду у зависности од датума.
Апликација има и функционалности навигационог менија ради лакшег кретања
кроз апликацију. Постоји и могућност увоза и извоза базе како личне евиденције тако и
карнета одвојено јер се код израде ове апликације користила SQLite база података за
Андроид Студио.
4.1.1. Почетна страна
Када се апликација покрене отвара се почетна страна где имамо приказ свих
опција које апликација нуди. Опције су груписане у два дела и то калкулатор за личне
потребе и калкулатор за више радника. Калкулатор за личне потребе садржи три
дугмета која се зову календар, обрачун и статистика. Калкулатор за више радника
садржи само једно дугме и то Карнет. Ова страна служи само како би корисника одвела
на жељену страну брзо и лако одмах по паљењу апликације. Са ове странице може се
извршити увоз и извоз базе података притиском на мени са три тачкице (3 dot menu) у
горњем десном углу апликације. О увозу и извозу базе података биће више речи у
поглављу 3.1.8. Изглед ове странице приказан је на слици 3.1.1.1.

9
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.1.1 Изглед почетне странице апликације

Ова апликација рађена је помоћу фрагмената. Тако да свако од ових четири


дугмета мора да врши замену изгледа (layout). То се ради тако што на свако дугме
поставимо ослушкивач на клик (setOnClickListener) и у њему радимо следеће:
Креирамо инстанцу објекта класе коју желимо да прикажемо и смештамо га у
фрагмент, креирамо фрагмент менаџер који затим покреће трансакцију. Трансакција
мења изглед са фрагментом који смо креирали на почетку, додаје на стек и извршава
трансакцију.
Ово је потребно урадити за свако од четири дугмета која се налазе на овој
страни са једином разликом шта се смешта у фрагмент то јест који објекат креирамо.
То ће зависити од тога на коју страну желимо да одемо са тим дугметом.
Код који је задужен за мењање страна притиском на дугмета приказан је на
слици 3.1.1.2.

10
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.1.2 Код за мењање страна

4.1.2. Календар
Задатак календар стране јесте тај да на основу изабраног датума у календару
корисник дода број радних сати за тај дан као и напомену која није обавезна да се
унесе. Мењањем датума изнад календара се исписују подаци за изабрани датум то јест
број сати и напомена. На овој страни постоје два дугмета и то додај и промени као и
једно поље за потврду (CheckBox) под називом нерадни дан. Дугме додај као што му и
име само каже врши додавање података у изабрани датум. Међутим уколико подаци
већ постоје у бази података за тај датум а корисник кликне на дугме додај исписаће се
порука да подаци већ постоје и да се кликне на дугме промени уколико корисник жели
да промени податке. Уколико корисник не унесе податак за број сати приказаће се
порука о грешци која каже да је податак за број сати обавезан. Дугме промени има

11
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

скоро идентичан код разлика је у томе што дугме додај додаје нови запис у бази
података док дугме промени мења већ постојећи запис у зависности од задатих
параметара. Поље за потврду под називом нерадни дан служи како би се кориснику
олакшало како не би морао да куца 0 сати и у напомени нерадни дан већ се
обележавањем овог поља то аутоматски извршава. Изглед календар стране приказан је
на слици 3.1.2.1 док је код за дугме додај приказан на слици 3.1.2.2.

Слика 3.1.2.1 Изглед календар стране апликације

12
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.2.2 Функција додај које извршава дугме Додај

4.1.3. Обрачун
Страна за обрачун сати и плате подељена је на више делова. У првом делу
корисник бира у ком интервалу дана жели да му се врши обрачун, док се месец и
година аутоматски постављају на тренутни месец и годину са могућношћу да корисник
постави било који месец и годину за који жели да врши обрачун. Одмах испод тога
налазе се и два радио дугмета. Аутоматски по отварању ове стране одабрана је опција
за 15-дневни обрачун, што значи да корисник у падајућем менију има две опције и то
од 1. до 15. у месецу и од 16. до краја месеца. Уколико корисник изабере другу опцију
односно интервал по жељи уместо падајућег менија приказаће се два поља где се
уписују дан од када корисник жели да рачуна број сати и дан до када корисник жели да
рачуна број сати и плату. Код задужен за промену опције уноса интервала за дане
приказан је на слици 3.1.3.2. Дакле нема 15-дневног ограничења. У следећем делу ове
стране налази се дугме са називом број сати и поље за испис броја сати одмах изнад
дугмета. Код који приказује функцију брСати на основу које се рачуна број сати
корисника приказан је на слици 3.1.3.3. У следећем делу ове странице налазе се поља за
унос података на основу којих се врши обрачун плате у динарима и еурима. Обавезна

13
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

поља за унос су цена сата која је изражена у еурима и курс еура у динаре у том
тренутку. Уколико нису унесени подаци за неко од ових поља или оба поља приказаће
се порука о грешци. Постоји и треће поље које није обавезно а то је аконтација.
Уколико је корисник узео аконтацију он ће то унети у поље и она ће му се одузети од
плате када се кликне на дугме рачунај које се налази у задњем пољу ове странице.
Исплата корисника приказаће се изнад дугмета рачунај и то и у динарима и у еурима.
Изглед странице обрачун приказан је на слици 3.1.3.1.

Слика 3.1.3.1 Изглед странице обрачун апликације

14
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.3.2 Код задужен за промену опције уноса интервала за дане

Слика 3.1.3.3 Функција брСати која рачуна број сати корисника

15
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Функција која врши рачунање плате корисника се мало разликује у односу на


функцију за рачунање сати. Функција рачун је у суштини проширена функција
функције брСати са кодом који је приказан на слици 3.1.3.4.
Дакле функција брСати ради на следећи начин. Прво проверава које радио дугме
је обележено. Уколико је обележено дугме за 15-дневни обрачун испитује се да ли је у
падајућем менију одабрана опција од 1. до 15. у месецу. Уколико јесте улази се у for
петљу где се испитује листа која садржи објекте класе РадниДан да ли испуњава услове
који су јој задати односно да ли се поклапа година, месец и дан. Уколико су сви услови
испуњени у променљиву сумаСати2 додају се сати оног објекта за који су испуњени
услови. Исти овај процес понавља се и уколико је одабрана опција за дане од 16. до
краја месеца само се испитују дани од 16. до 31. датума у месецу како би се обухватили
сви месеци. На крају се исписују број сати у пољу за текст које има ИД txtBrSati док се
сумаСати2 поставља на нулу да не би дошло до бесконачног сабирања сваким позивом
ове функције. Уколико први услов није испуњен то јест да није обележено дугме за 15-
дневни обрачун функција прелази на else грану где се испитује да ли је корисник унео
дане од када до када жели да му се рачунају сати. Разлика поред тога што се уноси
посебан интервал дана и то се испитује је и у томе што услов у for петљи испитује оне
дане који су задати интервалом.
Функција рачун ради исто што и функција брСати само што је проширена
одговарајућим делом који претвара сате у плату и то у динарима и еурима. Ова
функција прво проверава да ли је нешто уписано у поље за аконтацију, уколико није
одмах се прелази на рачун плате. Уколико јесте рачуна се плата и одузима аконтација.
На крају се исписује плата у пољу за текст које има ИД txtIsplata.

Слика 3.1.3.4. Део функције рачун одговоран за рачунање плате на основу броја сати

16
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

4.1.4. Статистика
Страна која се зове статистика је најједноставнија страна у апликацији. Она има
функцију да исцрта график који приказује кориснику радне сате које је остварио током
изабране године. По Y оси налазе се називи месеца док се на Х оси налази година за
коју се црта график. За цртање графика коришћена је библиотека AnyChart. Изглед
стране Статистика приказан је на слици 3.1.4.1. док је код за функцију која врши цртање
графика приказан на слици 3.1.4.2.

Слика 3.1.4.1. Изглед странице статистика апликације

Функција исцртај ради на следећи начин. Иницијализује се жељени график у


овом случају то је Cartesian график. Направи се једна празна листа која је типа
DataEntry која ће нам служити за попуњавање графика са вредностима. Затим се у for

17
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

петљи пролази кроз целу листу са свим датумима и испитује се да ли се година која је
изабрана поклапа са годином у листи. Уколико се поклапа пролази се кроз 12 услова,
по један за сваки месец, и сабирају се сати за сваки месец посебно у 12 различитих
променљивих. На крају се у листи за податке уписују за сваки месец суме сати.
Графику додајемо ове вредности као и назив и позива се AnyChart уграђена функција
под називом setChart како би се исцртао график.

Слика 3.1.4.2. Код функције исцртај

18
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

4.1.5. Листа радника (Карнет)


Страница која се зове Карнет садржи листу радника. На овој страни је могуће
додавање нових радника и брисање већ постојећих. Такође постоји и функционалност
аутоматског приказивања броја радних сати сваког радника у листи у текућем
обрачунском периоду. На пример уколико је тренутни датум 3. август приказаће се
збир радних сати свих радника од 1. до 3. августа и сабираће све будуће радне сате све
док не буде 16. дан у месецу. Од 16. се приказују сати остварени од 16. до краја месеца.
Ова функционалност рађена је наменски за фирму ГТП инжењеринг јер се код њих
плате исплаћују за временски период од 1. до 15. и од 16. до краја месеца и постоји
могућност да она неће бити од користи свима. На овој страни у листи поред сваког
радника постоје и два дугмета која воде на посебне стране за сваког радника и то
календар и обрачун где се бележе подаци за сваког радника посебно. На слици 3.1.5.1.
приказан је изглед странице карнета.

Слика 3.1.5.1. Изглед странице Карнет апликације

19
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Због начина функционисања елемента за приказ листе у алату Андроид Студио


коришћен је посебан адаптер за приказ листе радника. За то је било потребно
направити посебну класу под називом CustomAdapter који ће се позивати у класи
ListaRadnika и дати нам приказ као што се види на слици 3.1.5.1. На слици 3.1.5.2.
приказан је део кода адаптера који садржи ослушкиваче на клик дугмета које ће водити
на обрачун страну и једног скривеног дугмета које је заслужно за приказ сати за сваког
радника у тренутном обрачунском периоду.

Слика 3.1.5.2. Код адаптера за приказ листе радника

Код за дугме календар и обрачун се суштински разликују само у томе који објекат се
креира и смешта у фрагмент како би се прешло на жељену страну. Дакле ослушкивач
на клик за дугме обрачун ради исто што и ослушивачи на слици 3.1.1.2. разлика је у
томе што се овде преко једног „Пакет” објекта (Bundle) пакују подаци и шаљу
фрагменту који се отвара. У овом случају и за календар и за обрачун дугме пакују се
подаци за име и презиме радника како би се знало ком раднику се додају сати и врши
обрачун. Постоји још једна разлика и то пошто ова адаптер класа није активност
контекст који јој се прослеђује из фрагмента мора да се кастује (cast) или претвори у тај
тип односно активност. Тај део кода је следећи : ctx as AppCompatActivity. Дакле овај
контекст под називом ctx ће се понашати као активност па можемо вршити све
операције као да се налазимо у једној активности. Без овога фрагмент менаџер не би
могао да се позове. Други ослушкивач приказан на слици 3.1.5.2. везан је за дугме које
корисник не види. У њему се креира једна инстанца Календар објекта и помоћу те
инстанце се креирају променљиве за дан, месец и годину. Ове три променљиве нам
креирају тренутни датум који ћемо користити за израчунавање суме сати свих радника
у листи у тренутном обрачунском периоду. Дакле уколико је променљива дан мања или
једнака 15 улази се у for петљу где се испитују услови да ли се подударају име и
презиме радника са неким именом и презименом у бази и ако су испуњена та два услова

20
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

испитују се и датуми за то име и презиме и сабирају се сати остварени за те датуме.


Исти је случај уколико је променљива дан већа од 15 само се испитују дани који су
већи од 15. На крају када се добије сума сати она се исписује у поље за текст које има
ИД sati. Након што је извршено цело тело овог ослушкивача на клик врши се
аутоматски клик на дугме јер је оно скривено и то уграђеном функцијом performClick()
које у преводу буквално значи изврши клик. На слици 3.1.5.3. приказане су функције
учитај и додај странице карнет.

Слика 3.1.5.3. Код функција учитај и додај странице карнет

Учитај дугме и функција су невидљиви кориснику и они служе како би по отварању ове
стране аутоматски била приказана листа радника без потребе за ажурирањем странице.
Након тела ослушкивача на клик аутоматски се врши клик на ово скривено дугме.
Ослушкивач на клик дугмета Додај прво испитује да ли је корисник унео име и презиме
радника којег жели да дода. Уколико то није учинио исписаће му се одговарајућа
порука. Када је корисник унео податке испитује се да ли то име и презиме већ постоји у
бази података и уколико постоји исписује се порука у супротном додаје се радник у
листу и листа се аутоматски ажурира и приказује радника где корисник може да кликне
на његово дугме календар и дода му радне сате уколико их додати радник већ има.

21
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

4.1.6. Календар и обрачун код карнета


Ове две стране апликације које се покрећу из листе радника или карнета се врло
мало разликују у односу на календар и обрачун из дела апликације за личну
евиденцију. Разлика је у томе што се код дела за личну евиденцију користили објекти
класе под називом РадниДан где су се бележили датуми, сати и напомена, док се код
ове две стране користе објекти класе под називом Радник. У њима се поред датума,
сати и напомене бележе и подаци о имену и презимену радника као и градилиште на
којем је радио тог датума. Дакле ова 2 пара страница су суштински идентичне осим
што додају, ажурирају и бришу податке из две различите базе података. О овим базама
биће више речи у следећем поглављу. На слици 3.1.6.1. приказан је изглед странице
календар док је на слици 3.1.6.2. приказан изглед странице обрачун.

Слика 3.1.6.1. Изглед странице календар којој се приступа из карнета

22
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.6.2. Изглед странице обрачун којој се приступа из карнета

Дакле као што се и на сликама види разлике су минималне. Код странице за календар у
првом делу налази се додатно поље које исписује градилиште на којем је радник радио
тог дана. У самом тулбару (toolbar) налази се име и презиме радника како би се знало
којем раднику се уписују или мењају сати. У делу стране где се уписују подаци додато
је још једно поље за градилиште. Једина разлика код странице за обрачун јесте та што
на врху стране пише име и презиме радника коме се врши обрачун сати и плате.

23
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

4.1.7. SQLitе
SQLite се користи код Андроид програмирања како би се неки подаци трајно
чували у некој бази података. Лајт(lite) се не односи на саме могућности овог
софтверског пакета већ његове „тежине” што се тиче комплексности његовог
подешавања као и коришћења ресурса. Дакле предност овог пакета јесте тај што је
релативно једноставан да се подеси као и то што користи јако мало ресурса. SQLite се
не користи само код Андроид програмирања већ и на другим местима као што су веб
сајтови, клијент-сервер апликације итд. Дакле свуда где кориснику није потребан или
нема приступ „правој” бази података. SQLite основне операције које се називају CRUD
скраћеницом која значи Create(креирај), Read(читај), Update(ажурирај) и Delete
(бриши). Корисник има могућност да сам направи разне упите који су му потребни за
претраживање, сортирање, мењање базе као и креирање неких нових табела као и код
регуларне SQL базе података.
Апликација садржи три SQLite базе података од којих су две главне и једна
помоћна како би неке функционалности апликације могле да раде. Прва база односи се
на део апликације за вођење личне евиденције. Ова база креира се помоћу класе под
називом SQLHelper и она не садржи једну од основних CRUD операција једне базе
података а то је операција брисања. Она није имплементирана из разлога што је ова
база намењена за личну евиденцију па није логично брисати датуме. Из тог разлога
постоји опција за ажурирање датума. На следећим сликама биће приказани сви делови
ове базе и бити објашњени.

Слика 3.1.7.1. Глобалне променљиве прве базе података

На почетку ове класе декларишу се глобалне променљиве које су потребне овој


бази. Дакле наводи се верзија базе података, назив базе података, назив табеле где се
смештају подаци, јединствени примарни кључ или ИД и све променљиве специфично
потребне овој бази а то су дан, месец, година, сати и напомена. Ово је приказано на
слици 3.1.7.1.

24
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.7.2. Креирање табеле базе података

У функцији onCreate креира се табела базе података.Овде је потребно пажљиво


унети све стрингове и кључеве јер једно погрешно слово или празан простор може да
доведе до грешке при креирању табеле. Дакле при креирању табеле прво се пише
функција за креирање табеле CREATE TABLE и придружује јој се вредност коју смо
декларисали у претходном делу односно у овом случају TABLE_CONTENTS. Затим се
декларишу све колоне у табели где је на првом месту увек примарни кључ. У овом
случају за тип кључа стављен је INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL што значи да је примарни кључ цео број и да се аутоматски увећава за 1 када се
дода неки запис у бази и да нема вредност NULL и на тај начин ће сваки унос имати
јединствен кључ што је и најбитније у бази података. Након кључа уписују се и остали
параметри заједно са типом података који се уписује. На пример у овој бази су дан,
месец, година и податак за сате типа INTEGER односно цели бројеви, док је напомена
типа TEXT. Ова функција приказана је на слици 3.1.7.2.

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

Постоји и функција onUpgrade приказана на слици 3.1.7.3. која брише табелу са старом
верзијом и додаје нову табелу са новом верзијом.

25
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Једна од четири основних операција базе података јесте додавање нових уноса у
табелу базе података. У овој бази додају се радни дани. Тако да када се ова функција
позива негде у програму прослеђује јој се објекат типа РадниДан. Код додавања
потребно је отворити базу података у моду за упис (writableDatabase), затим да се
креира једна вредност која је објекат типа ContentValues и у њу се смештају сви подаци
који су потребни за упис једног елемента у табелу. Сваки од параметара објекта
РадниДан се смешта одвојено функцијом put() у contentValues. На крају позива се
функција insert() у којој су главни параметри који јој се прослеђују сама табела и
contentValues. Потребно је још позвати функцију close() над базом података како би се
база затворила. Ова функција приказана је на слици 3.1.7.3.

Слика 3.1.7.4. Функција за додавање елемената у бази података

Још једна од основних функција базе података јесте ажурирање већ постојећих
уноса из табеле базе података. Ова функција је у суштини идентична као и функција за
додавање нових уноса, дакле исто отвара базу за упис, има ContentValues и исто се
уписују параметри сваког реда у табели посебно. Разлика је што се позива update() ра
разлику од insert() функције која се позивала при додавању. У update() функцији се
такође уписује табела и подаци који се мењају односно ContentValues али овде имамо и
where услов. Који нам служи да би се променили тачно они подаци које корисник жели.
Код функције за ажурирање података приказан је на слици 3.1.7.4.

Слика 3.1.7.5. Функција за ажурирање једног уноса базе података

Пошто је за потребе календар стране било потребно да се прикаже за сваки


изабрани датум колико корисник има сати и евентуалну напомену ова база података
има две функције за приказ елемената базе података. Једна од њих приказује сате и
напомене у календару а друга служи да када се позове попуни глобално доступну листу
са објектима типа РадниДан са свим елементима из базе и тако омогућила

26
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

функционалност обрачуна сати и плате кориснику. Функција за приказ сати и напомене


приказана је на слици 3.1.7.5.

Слика 3.1.7.6. Функција за приказ сати и напомене у календар страни

Календар страна направљена је тако да са сваком променом датума се позива ова


функција. Функцији су прослеђена три параметра и то дан, месец и година који су типа
стринг. Функција враћа објекат типа РадниДан. На почетку функције сва три стринга се
конвертују у целе бројеве како би се типови података подударали. Такође креира се
један објекат типа РадниДан како би у њега смештали резултате које нађе ова функција.
Следећа вредност јесте сам упит који врши тражење жељеног датума. Сви упити у
SQLite се пишу као и класични SQL упити. Дакле имамо SELECT, FROM, WHERE и
AND. Отвара се база само за читање јер не уписујемо ништа у базу података, то се ради
позивом функције readableDatabase. Затим се креира курсор који нам је потребан како
би могли да се крећемо кроз табелу базе података. Функцијом moveToFirst() курсором

27
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

испитује се да ли постоје неки записи у бази. Уколико постоје извршава се Do део Do-
While петље. У петљи се дохватају сви параметри у једном реду табеле и на основу њих
креира се један објекат РадниДан који се на крају функције и враћа кориснику на
приказ на страници Календар. Друга функција за приказ записа базе нам служи како би
се сви записи у бази сместили у једну листу која се лако може претраживати. Ова
функција приказана је на слици 3.1.7.6.

Слика 3.1.7.7. Функција за приказ свих записа из базе података

Разлика између две функције које служе за приказ записа из базе јесте тај што прва
функција враћа само један запис док друга враћа све записе у облику листе. Ту листу
можемо користити код обрачуна на пример када се претражује датум по години данима
и месецима. Ова класа базе података садржи још две функције. Једна провера да ли за
изабрани датум постоји неки запис како корисник не би могао бесконачно да додаје
записе у једном датуму. Друга функција служи да би се проверило да ли постоји икакав
запис у бази због увоза базе. Уколико постоји неки запис корисник неће моћи да увезе

28
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

нову базу са неким већ постојећим записима. Код ове функције приказан је на слици
3.1.7.7.

Слика 3.1.7.8. Функција за проверу радног дана на страници календар

На страници календар када корисник жели да дода или промени неки датум мора да
постоји провера да ли за тај дан постоје или не постоје неки подаци. Функција чији је
задатак да то баш и проверава ради на следећи начин. Из календара када се одабере
неки датум прослеђују подаци о дану, месецу и години када се позове функција и то као
стрингови. Ти подаци се претварају у целе бројеве како би се типови података
поклопили. Отвара се база за читање. Прави се упит који се прослеђује курсору. У
упиту се бирају сви записи којима се поклапају прослеђене вредности за дан, месец и
годину. Уколико је број где је курсор прошао кроз записе мањи или једнак нули
функција ће вратити вредност Тачно(true). У супротном функција враћа вредност
Нетачно(false). Дакле ако не постоји ниједан запис корисник може у календару преко
дугмета додај да дода податке у изабрани датум у супротном исписаће се порука да
мора да користи дугме промени за промену постојећих података.
Последња функција у овој бази података јесте функција која проверава да ли постоји
било какав запис у бази. Ова функција се користи приликом увоза базе података.
Уколико ова функција врати вредност тачно, значи да постоји неки запис у бази и да
корисник не може да увезе нову базу. Ова функционалност постоји да корисник
случајно не би могао да увози базу више пута, јер би се оне надовезивале једна на
другу. Код ове функције приказан је на слици 3.1.7.8.

29
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.7.9. Функција за проверу базе

База података карнета има исте функције као и база за радне дане разликују се
само по параметрима који се додају, мењају у бази. Карнет база има и функцију за
брисање радника. Она постоји како би корисник у сваком тренутку могао да обрише
жељеног радника из било ког разлога. Када се корисник обрише сви подаци везани за
њега нестају трајно. На слици 3.1.7.9. приказани су параметри табеле базе података
карнета.

Слика 3.1.7.10. Параметри табеле базе података карнета

Дакле у овој бази постоје исти параметри као и у бази за радне дане, верзија
базе, назив базе, табела, ид, дан, месец, година, напомена и сати док су нови параметри
име, презиме и градилиште. На слици 3.1.7.10. приказан је код функције за брисање
радника из карнета.

30
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.7.11. Функција за брисање радника из карнета

Када се ова функција позива прослеђују јој се два стринга и то име и презиме.
Прво се отвара база за читање (writableDatabase) затим се креира вредност за
contentValues и на крају се позива функција за брисање из базе delete() којој се
прослеђује табела из које се бришу записи и Where услов по којем ће се бирати уноси
који се бришу. У овој функцији Where услов има два параметра која морају да се
поклопе и то су име и презиме које сам корисник задаје. Уколико је корисник тачно
укуцао име и презиме радник се брише из базе а корисник добија одговарајућу поруку а
ако радник са унетим именом и презименом не постоји у бази корисник такође добија
поруку да радник не постоји.
4.1.8. Увоз и извоз базе података(import i export)

Због могућности да корисник апликацију случајно обрише или мења телефон и


слично апликација поседује функционалност увоза и извоза базе. Овој
функционалности приступа се из менија са три тачке (3 dot menu) где корисник у
зависности где се налази у апликацији може да увезе и извезе или личну базу или базу
карнета. Опција да се увезу/извезу обе базе истовремено не постоји. Да би мени са три
тачке био видљив позива се функција setHasOptionsMenu(true) која укључује мени.
Опције за мени се креирају преко посебног фајла за изглед(layout) а саме опције се
програмирају функцијом onOptionsItemSelected која одређује шта ће програм радити у
зависности која опција из менија се кликне. Кодови ове функције као и функција за
увоз и извоз приказани су на слици 3.1.8.1.

31
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.8.1. Функције за увоз и извоз базе и функција за опције менија

Функција onOptionsItemSelected је једноставна и она функционише на следећи


начин. Постоји when петља која је у већини других програмски језика познатија као
switch и функционише на идентичан начин. Постоје две опције и то опција која има ИД
importKarnet и опција која има ИД exportKarnet. Када се кликне на прву позива се
функција import() а када се кликне на другу export(). Укупно у целој апликацији постоје
3 пара ових функција, по једна за сваку базу. Све функционишу на исти начин само се
различити подаци увозе или извозе. Функција за увоз базе приказана је на слици 3.1.8.2.

32
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.8.2. Функција за увоз базе података

У овој функцији прво се креира један објекат базе помоћу које ћемо учитати листу са
свим уносима те базе. Затим се креира вредност са путањом фајла као и њено име.
Креира се један csv фајл и задаје му се претходно направљена путања и назив фајла. За
увоз и извоз базе ова апликација користи csv фајлове јер су они погодни за рад са
базама података. Затим постоји try, catch део функције где се креира csv читач
(csvReader). Да би овај читач могао да се креира мора се имплементирати библиотека за
csv фајлове која садржи све потребне функције за рад са овим фајловима. Креира се
једна променљива која ће читати следећу линију у табели. Затим се испитује услов да
ли база већ постоји односно није празна како корисник не би могао да више пута
додаје исте уносе. Ако је тај услов испуњен улази се у while петљу где све док су
испуњени услови да следећа линија у фајлу који се увози није празна креира две
вредности и то име и презиме у овом случају и на крају додаје објекат са тим
параметрима у базу. Овај циклус се понавља све док се не дође до краја фајла који се
увози. Функција за извоз ради на следећи начин. Прво се креира фолдер који се налази
на путањи home/SQLiteBackup и испитује се да ли фолдер већ постоји, уколико не
постоји он се креира. Затим се задаје назив фајлу који се извози и креира се путања
фајла где ће се извести. За то користимо две претходне вредности које смо креирали.
Затим се из објекта базе коју извозимо позива функција за попуњавање листе са свим
уносима из базе. На крају такође као и у функцији за увоз постоји try, catch део
функције. У њему се ради следеће. Креиреа се један FileWriter који нам служи да би
уписивали све записе из базе у наш фајл који извозимо. Када се прође кроз фор петљу и
обиђе цела листа са записима из базе користи се функција flush() над вредности

33
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

FileWriter како би се подаци уписали у фајл. Након успешног извоза корисник добија
поруку где се налази фајл који је извезао. Ова функција приказана је на слици 3.1.8.3.

Слика 3.1.8.3. Функција за извоз базе података

Приказ менија са три тачке за увоз и извоз база приказани су на слици 3.1.8.4.

34
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.8.4. Изглед менија за увоз и извоз личних података

Изглед једног csv фајла приказан је на слици 3.1.8.5.

35
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

Слика 3.1.8.5. Изглед једне извезене базе као CSV фајл

На слици 3.1.8.5. приказана је база личних података где прва колона приказује датуме,
друга месеце, трећа годину, четврта број радних сати и последња приказује напомену.

36
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

4.1.9. Навигациони мени (Side navigation menu)


Апликација поседује и навигациони мени који се открива превлачењем са леве
стране екрана ка десној или притиском на такозвани хамбургер мени. Постоје пет
страна на које корисник може да пређе из овог менија и то из било које стране у
апликацији. Ово је корисно јер корисник не мора константно да се враћа уназад да би
дошао до жељене стране или да дође до почетне како би могао поново да бира где жели
да иде. Пошто је апликација рађена помоћу фрагмената уведена је и функционалност да
се са сваким отварањем новог фрагмента он ставља на стек. То је корисно јер имамо
функцију која се позива притискањем дугмета за враћање уназад уколико корисник
жели да се врати на претходну страну. Такође ако на стеку нема ниједног фрагмента а
корисник притисне дугме назад излази се из апликације. Функција за одабир опције из
навигационог менија приказана је на слици 3.1.9.1.

Слика 3.1.9.1. Функција за одабир опције из навигационог менија

Функција је идентична као оној из менија за увоз и извоз базе, само што се овде
отварају нови фрагменти у зависноти коју опцију корисник изабере.

37
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

На слици 3.1.9.2. приказана је функција која се позива када корисник притисне дугме
назад.

Слика 3.1.9.2. Функција за дугме назад

Ова функција има два услова. Један је ако је навигациони мени отворен и притисне се
дугме назад тада апликација затвара навигациони мени. Уколико навигациони мени
није отворен и стек са фрагментима је већи или једнак од 1, фрагмент менаџер враћа са
стека претходно отворени фрагмент. Уколико оба ова случаја нису испуњена
апликација се затвара.

38
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

5. ЗАКЉУЧАК
Овај рад рађен је у оквиру стручне праксе. Приликом израде овог рада дошао
сам до сазнања како је то бити запошљен од стране неке фирме која нема додирних
тачака са програмирањем, како комуницирати са послодавцем и водити рачуна да сам у
могућности да испуним све захтеве које послодавац тражи од мене. Почетни договор
послодавца и мене је био да се направи апликација која ће помоћи радницима фирме да
воде евиденцију својих сати зато што су до тада већина њих користила апликације на
енглеском језику које су или превише сложене или нема неке опције које би користиле
фирми. Радници су до тада навикли да уписују сате у календар, па сам се и ја одлучио
да преко календара они уписују сате. Пошто је апликација требала да буде једноставна
на страници са календаром сам ставио да радници могу само да уносе своје сате или их
евентуално мењају. Када су радници унели сате морао је да постоји и део где ће
израчунати плату. Обрачун страна је такође прегледна и једноставна. Корисник бира у
ком интервалу жели да му се обрачуна плата и једноставним кликом на дугме број сати
и рачунај добија своју плату. Додао сам и страницу за статистику јер сам сматрао да би
радницима било корисно да виде неку своју историју радних сати. Када је овај део
апликације био завршен послодавац ми је дао још један задатак. Било је потребно да се
направи још једна страна која ће водити евиденцију сати више радника истовремено.
Након што ми је било разјашњено шта тачно треба да се уради одлучио сам да први део
апликације који је већ урађен оставим као један засебан део који ће користити радници
за себе, а да се направи други посебан део где ће се водити листа радника или како је то
послодавац називао Карнет. Направио сам нову базу података посебно за тај део
апликације тако да су лична евиденција и карнет функционисали независно. Карнет сам
замислио као класичну листу где ће сваки елемент листе односно у овом случају
радник у фирми имати своје странице за упис сати (календар) и обрачун плате. Како би
ово радило како треба направио сам један адаптер који ће служити да у листи прикаже
два дугмета која ће водити ка тим страницама и самим тим правилно одвојити странице
за сваког радника посебно. На своју иницијативу додао сам и могућност да може да се
увезу и извезу све базе у апликацији, јер када се апликација обрише, бришу се и базе
података. Ово је погодно и када се апликација инсталира на више уређаја или се мења
уређај па се базе могу пребацити једноставно са уређаја на уређај под условом да је
путања до извезене базе добра. На крају додао сам и могућност аутоматског
обрачунавања сати свих радника у листи како корисник не би морао да улази и обрачун
страну сваког радника посебно и бележио сате ручно.
Овим је апликација била и у потпуности завршена. Послодавац није имао
никакве даље захтеве. Апликација је како је и било тражено била једноставна,
прегледна, имала све тражене функционалности и више од тога.

39
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

6. ИНДЕКС ПОЈМОВА
AВД .............................................4
Андроид Студио …....................4
Delete() .......................................31
Insert() …....................................26
Извоз базе ..................................31
Карнет страна............................19
Календар страна .......................11
Котлин .........................................7
Навигациони мени ...................37
Обрачун страна .........................13
Почетна страна ...........................9
Put() ............................................26
Статистика страна ....................17
SQLite …....................................24
Увоз базе ...................................31
Update() …..................................26
CRUD ….....................................24
Close() …....................................26

40
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

7. ЛИТЕРАТУРА
[1] N.Smyth, Android Studio 3.5 Development Essentials – Kotlin Edition, September
2019.
[2] M. Moskala, I. Wojda, Android Development with Kotlin, August 2017.
[3] D. Greenhalgh, J. Skeen, Kotlin Programming: The Big Nerd Ranch Guide, June
2018.

41
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

8. ИЗЈАВА О АКАДЕМСКOЈ ЧЕСТИТОСТИ

ИЗЈАВА О АКАДЕМСКОЈ ЧЕСТИТОСТИ

Студент (име, име


једног родитеља и презиме):

Број индекса:

Под пуном моралном, материјалном, дисциплинском и кривичном одговорношћу


изјављујем да је завршни рад, под насловом:

1. резултат сопственог истраживачког рада;


2. да овaj рад, ни у целини, нити у деловима, нисам пријављиво/ла на другим
високошколским установама;
3. да нисам повредио/ла ауторска права, нити злоупотребио/ла интелектуалну својину
других лица;
4. да сам рад и мишљења других аутора које сам користио/ла у овом раду назначио/ла
или цитирао/ла у складу са Упутством;
5. да су сви радови и мишљења других аутора наведени у списку
литературе/референци који је саставни део овог рада, пописани у складу са
Упутством;
6. да сам свестан/свесна да је плагијат коришћење туђих радова у било ком облику (као
цитата, прафраза, слика, табела, дијаграма, дизајна, планова, фотографија, филма,
музике, формула, вебсајтова, компјутерских програма и сл.) без навођења аутора или
представљање туђих ауторских дела као мојих, кажњиво по закону (Закон о
ауторском и сродним правима), као и других закона и одговарајућих аката Високе
школе електротехнике и рачунарства струковних студија у Београду;
7. да је електронска верзија овог рада идентична штампаном примерку овог рада и да
пристајем на његово објављивање под условима прописаним актима Високе школе
електротехнике и рачунарства струковних студија у Београду;
8. да сам свестан/свесна последица уколико се докаже да је овај рад плагијат.

У Београду, __. __. 201_. године

Својеручни потпис студента

42
Дино Сијарић, ГТП инжењеринг-Обрачун плате и карнет

________________________

43

You might also like