aplikacija za validaciju ulaznica ugraĐenim … · kodova na proizvode sa malom ambalažom. slika...

41
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 1298 APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM FOTOAPARATOM NA PAMETNIM TELEFONIMA Žarko Brkić Zagreb, srpanj 2016

Upload: others

Post on 17-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 1298

APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM FOTOAPARATOM NA

PAMETNIM TELEFONIMA

Žarko Brkić

Zagreb, srpanj 2016

Page 2: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,
Page 3: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,
Page 4: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

ii

Sadržaj

1. Uvod ............................................................................................................ 1

2. Čitanje koda QR pomoću kamere .................................................................. 2

2.1. Kod QR ........................................................................................................... 2

2.1.1. Svojstva .......................................................................................................... 2

2.1.2. Tipovi koda QR ............................................................................................... 4

2.2. Biblioteka OpenCV i kod QR ............................................................................ 7

2.2.1. Biblioteka OpenCV4Android .......................................................................... 7

2.2.2. Čitanje koda QR .............................................................................................. 8

2.3. Biblioteka ZXing ............................................................................................ 11

3. Mobile Ticket Validator .............................................................................. 12

3.1. Komponente sustava .................................................................................... 12

3.2. Poslužiteljska komponenta............................................................................ 13

3.2.1. Hosting ......................................................................................................... 13

3.2.2. Baza podataka .............................................................................................. 14

3.2.3. ASP.NET Web API ......................................................................................... 15

3.3. Administratorsko sučelje ............................................................................... 17

3.3.1. Upravljanje sa ulaznicama ........................................................................... 18

3.3.2. Upravljanje sa korisnicima ........................................................................... 19

3.3.3. Prikaz korištenja ........................................................................................... 19

3.4. Android aplikacija ......................................................................................... 24

3.4.1. Pohrana podataka ........................................................................................ 25

3.4.2. Prodaja i kontrola ulaznica ........................................................................... 26

3.4.3. Prikaz korištenja ........................................................................................... 28

4. Zaključak .................................................................................................... 32

5. Literatura ................................................................................................... 33

Sadržaj ............................................................................................................... 34

Summary ........................................................................................................... 35

Page 5: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

iii

Popis oznaka i kratica

QR Quick Response

engl. engleski

SDK Softver development Kit

IP Internet Protocol

JSON JavaScript Object Notation

SQL Structured Query Language

ID Identity

NULL nullable

API application programming interface

HTTP HyperText Transfer Protocol

REST representational state transfer

IDE integrated development environment

ORM object-relational mapper

CRUD Create, Read, Update, Delete

LINQ Language-Integrated Query

MVC Model, View, Controller

HTML HyperText Markup Language

URL Uniform Resource Locator

POC Proof of concept

DDD Domain Driven Design

Page 6: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

iv

Popis slika

Slika 2.1 – Veličina istog zapisa barkoda i koda QR ...................................... 2

Slika 2.2 - Otpornost na prljavštinu (lijevo) i Oštećenja (desno) ..................... 3

Slika 2.3 - Mikro QR kod ................................................................................ 4

Slika 2.4 - Čitanje koda SQRC ....................................................................... 6

Slika 2.5 – Kod Frame QR ............................................................................. 6

Slika 2.6 - Detekcija poligona ......................................................................... 8

Slika 2.7 - Orijentacija koda QR ..................................................................... 9

Slika 2.8 - Posebna područja ....................................................................... 10

Slika 3.1 - Komponente sustava ................................................................... 13

Slika 3.2 - Dijagram baze podataka ............................................................. 15

Slika 3.3 - Prijava na administratorsko sučelje ............................................. 20

Slika 3.4 - Sučelje za dodavanje novog korisnika u sustav .......................... 21

Slika 3.5 - Pregled postojećih korisnika ........................................................ 22

Slika 3.6 – Dodavanje nove ulaznice ........................................................... 23

Slika 3.7 - Dodavanje novog tipa ulaznice ................................................... 24

Slika 3.8 - Slijedni dijagram provjere ulaznice .............................................. 27

Slika 3.9 - Prijava u sustav i glavni izbornik ................................................. 29

Slika 3.10 - Skeniranje ulaznice ................................................................... 30

Slika 3.11 - Opcije korisnika ......................................................................... 31

Page 7: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

1

1. Uvod

Još od sredine dvadesetog stoljeća počeo je razvoj računala i računalne

znanosti. Zbog interdisciplinarnog karaktera izazvan je velik interes stručnjaka

iz raznih područja, stoga je razvoj tekao brzo i već se devedesetih godina

intenzivno počeo koristiti računalni vid. Računalni vid podrazumijeva

prikupljanje, obradu, analizu i razumijevanje slike koju računalo prima iz

stvarnog svijeta. Doda li se uređajima komponenta učenja, dolazimo do

pametnih uređaja i umjetne inteligencije, koja je posljednjih godina stekla

veliku popularnost.

Devedesetih se godina razvio velik broj algoritama koji su zahtijevali

mukotrpan rad brojnih individualnih timova, koji su odlučili ujediniti snage i

objaviti biblioteku otvorenog koda pod nazivom OpenCV. Od tada se broj

algoritama neprestano povećava i usavršava.

Danas mnogi moderni sustavi koji provode manipulaciju nad slikom

koriste algoritme iz biblioteke OpenCV, pa je i ovaj rad izgradnja sustava

kojemu je jedna od ključnih komponenti čitanje informacija o ulaznicama,

prodaja i zabilježavanje posjeta preko kamere mobilnog uređaja

implementacijom algoritama iz biblioteke OpenCV.

U poglavlju koji slijedi detaljno se objašnjava kod QR, princip rada i

čitanja, zatim se govori o sustavu za upravljanje ulaznicama, njenim

komponentama i čitanju koda QR sa ulaznice pomoću pametnog telefona.

Page 8: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

2

2. Čitanje koda QR pomoću kamere

2.1. Kod QR

Kod QR je dvodimenzionalni matrični zapis podataka, a naziv je dobio

od akronima engleskih riječi „Quick Response“ što znači brz odaziv. QR kod

su još 1994. godine osmislili zaposlenici japanske tvrtke „Denso Wave

Incorporated-a“, podružnica automobilske kompanije Toyota s idejom brzog

dekodiranja koda. Za razliku od klasičnih barkod zapisa, kod QR osim svojstva

brze čitljivosti posjeduje i svojstvo velikog kapaciteta za pohranu podataka koje

ga je dovelo do titule najpopularnijeg barkoda današnjice. Kod QR ima

mnogobrojne mogućnosti pohrane i prikaza dekodiranih podataka, pa se zbog

toga i atraktivnog pametnog izgleda (engl. smart design) danas primjenjuje

svuda oko nas.

2.1.1. Svojstva

Uspoređujući brzine čitanja standardnog barkoda i Koda QR, ne može

se reći da je postignuto znatno ubrzanje. Međutim kada u računicu uvrstimo

parametar o broju podataka pročitanih u istoj jedinici vremena, shvaćamo da

kod QR čita do nekoliko tisuća puta više podataka od standardnog barkoda.

Kapacitet kako barkoda tako i koda QR mjeri se u broju znakova koje može

pohraniti, ali točan podatak pohrane ovisi o tipu koda QR.

Iako navedena dva svojstva dovoljno govore o prednosti koda QR,

postoji još jedan problem kojeg su zaposlenici japanskih tvrtki imali. Standardni

bar kod iako sadržava malen zapis uglavnom od desetak znamenaka, svojom

površinom nije prilagođen za ispise na ambalažu sitnih stvari.

Slika 2.1 – Veličina istog zapisa barkoda i koda QR

Page 9: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

3

Kod QR ima nekoliko puta manji zapis, što je prikazano na slici 2.1 gdje

je uspoređen zapis od trinaest istih znamenaka korištenjem standardnog

barkoda i koda QR. Budući da je kod QR izrađen u Japanu, proširene su mu

mogućnosti jednostavnih tekstualnih zapisa (engl. plane text) sa latiničnih na

simbolička pisma. Podržava zapise u Kana i Kanji pismima.

Kada razgovaramo o veličini matrice koda QR, prilikom izrade nudi nam

se nekoliko predefiniranih veličina koje možemo adaptirati s obzirom na naše

potrebe. Iako veća matrica daje veći kapacitet, u praksi se rijetko događa da

se maksimalni kapacitet iskoristi. Velika inovacija koju donosi kod QR je

otpornost na oštećenja i prljavštinu za što su zaslužna polja potvrde točnosti

(engl. Error correction). Sav slobodan kapacitet koji ostane prilikom zapisa

podataka u podatkovna polja koda QR pretvori se u četiri razine polja potvrde

točnosti (L, M, Q, H), a aktivira se u različitim slučajevima kada algoritam ne

može pročitati dijelove podatkovnih polja. Do 30% gubitka površine koda QR

dati će točan ili približno točan zapis, koji se lako može protumačiti i obnoviti.

Slika 2.2 - Otpornost na prljavštinu (lijevo) i Oštećenja (desno)

Dok se standardni bar-kod mora čitati sa lijeva na desno, kod QR pruža

mogućnost čitanja iz bilo kojeg kuta gledišta. Čim algoritam za čitanje

prepozna pod kojim je kutom zakrenuta promatrana slika, zna gdje treba početi

čitati podatke. Kut određuje pomoću tri glavna modula koda QR poznatija pod

imenom orijentacijski markeri, koji se nalaze svaki u različitom kutu koda.

Page 10: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

4

Sam kod QR u sebi može sadržavati neki drugi kod QR, što je

omogućeno podjelom prostora namijenjenog podatcima. Tako isti zapis može

generirati različite kodove u ovisnosti o broju dijelova koji sadržavaju podatke

unutar koda QR. Moguće je tako u jedan kod spremiti do šesnaest podatkovnih

modula i obrnuto, iz jednog je koda moguće kreirati do šesnaest različitih

kodova, gdje svaki ima po jedan podatkovni modul.

2.1.2. Tipovi koda QR

2.1.2.1. Standardni kod QR

Aktualni kod QR je verzije sedam, ali sve kodove možemo generalno

podijeliti na MODEL1 i MODEL2. MODEL2 predstavlja proširenje inicijalne

verzije sa veličine zapisa sa 73 x 73 modula na 177 x 177 modula, te je tako

znatno povećan kapacitet pohrane informacija.

2.1.2.2. Micro kod QR

Osim standardnog postoji i umanjena verzija koda QR naziva Micro kod

QR koji za određivanje kuta gledišta koristi samo jedan modul za orijentaciju i

isprekidane točkice uz rubove koda. Zbog umanjene količine prostora manja

je i količina podataka za pohranu koji se kod ovoga tipa mogu smjestiti u 17 x

17 modula. Glavni razlog razvoja Micro koda QR je potreba za postavljanje

kodova na proizvode sa malom ambalažom.

Slika 2.3 - Mikro QR kod

2.1.2.3. Kod iQR

U cilju što veće iskoristivosti i upotrebljivosti razvijen je kod iQR koji ima

dodatna svojstva čitljivosti i pohrane podataka. Prilikom ispisivanja kod iQR ne

Page 11: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

5

mora biti kvadrat, već bilo kakav pravokutnik, što mu je dodatno povećalo

prostor za pohranu podataka, pa je maksimalni kapacitet nekoliko puta veći od

standardnog koda. Dodana je mogućnost čitanja koda sa obje strane odnosno

zrcaljenjem slike dobije se kod koji sadrži identičnu informaciju, što je otvorilo

vrata ugradnji koda u prozirne i staklene površine. Posebno zanimljivo svojstvo

je svojstvo inverzije boja QR koda i zadržavanja zapisanih podataka koji kao

rezultat dekodiranja daju istu informaciju.

2.1.2.4. Kod SQRC

Razgovor o informatici danas, razgovor je o sigurnosti koji nije zaobišao

ni kod QR. Veliki interes kreiranja zapisa doveo je do zahtjeva za čuvanje tajnih

i osjetljivih podataka u zapisu koda QR. Sa standardnim kodom to nema smisla

jer se vrlo lako pametnim telefonom sa ugrađenom kamerom i aplikacijom za

čitanje može doći do tajnih informacija. Stoga je razvijen kod SQRC koji ima

dodatna svojstva maskiranja podataka. Izgledom se kod SQRC po ničemu ne

razlikuje od standardnog koda QR čime se onemogućuje prepoznavanje koda

koji krije tajne informacije. Osim toga, kako bi se potpuno izbjegla mogućnost

da prepoznavanja koda sa tajnom, čitanjem koda SQRC dobiva se neka

unaprijed određena lažna informacija. Prave informacije mogu se pročitati sa

posebnim skenerom kojeg razvija isključivo Denso Wave Incorporated

kompanija.

Page 12: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

6

Slika 2.4 - Čitanje koda SQRC

2.1.2.5. FRAME QR

FRAME QR je posebna vrsta koda QR namijenjena prvenstveno za

korištenje u marketinške svrhe i popularizaciju korištenja koda QR. Podatkovni

moduli nalaze se po rubovima samog koda, te ovakav kod može pohraniti četiri

puta manje znakova od standardnog. Prilikom čitanja ovakvog koda QR,

algoritam zaobilazi središte koda u koje je upotrebom grafičkih alata moguće

ugraditi isječke crteža i slike. Primjer izgleda koda FRAME QR odgovara kodu

QR na slici 2.5. sa ugrađenim natpisom i logom FER-a u središtu koda.

Slika 2.5 – Kod Frame QR

Page 13: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

7

2.2. Biblioteka OpenCV i kod QR

OpenCV je biblioteka otvorenog izvornog koda koja sadržava napredne

funkcije i algoritme iz područja računalnog vida. Kao biblioteka izdana je od

strane tvrtke Intel, iako je razvijena od strane brojnih autora. Iako su algoritmi

pisani pretežno u C i C++ jezicima ova se biblioteka može koristiti na svim

platforma (engl. Cross-platform). Osim optimalne implementacije algoritama

biblioteka nudi podršku za višejezgrenu obradu podataka (engl. multi-core

processing). Biblioteke OpenCV-a se mogu besplatno preuzeti sa službenih

web stranica, gdje se može pronaći i dokumentacija. Biblioteku čini preko 2500

optimiziranih algoritama, a same biblioteke koriste se i u najnaprednijim

popularnim sustavima raznih softverskih industrija, auto-industrija, vojne svrhe

i drugi.

2.2.1. Biblioteka OpenCV4Android

Biblioteka OpenCV4Android je inačica OpenCV biblioteke koja je

prilagođena i optimizirana za rad na mobilnim uređajima Android. Zbog

izvršavanja izvornih jezika koji nisu prirodni Android-u (Android native

development kit), nije dovoljno napraviti ovisnost aplikacije o biblioteci pomoću

gradle mehanizma. Potrebno je instalirati poseban OpenCV4Android SDK u

vidu aplikacije Android koja nema nikakvu funkcionalnost, već pruža podršku

drugim aplikacijama koje koriste ovu biblioteku računalnog vida. Druga opcija

je izvlačenje potrebnih algoritama iz biblioteke OpenCV4Android kao što je

slučaj kod biblioteke ZXing koja je implementirana u izradi aplikacije Android

ovog diplomskog rada.

Budući da je relativno mlada iz mjeseca u mjesec dobiva nove verzije,

trenutno najnovija verzija koja se može skinuti je 2.4.13.0. Razvoju biblioteke

Android uvelike je doprinijela tvrtka nVidia, pa se algoritmi brže izvršavaju na

uređajima koji u sebi imaju ugrađen grafički čip nVidia Tegra.

Page 14: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

8

2.2.2. Čitanje koda QR

Kod QR ima stroga pravila građenja modula koji su u dvije boje od kojih

jedna mora biti dominantna. Uobičajena praksa je crna-bijela kombinacija boja

što kod čini lako prepoznatljivim. Zbog pojednostavljenja izbora boja detekcija

i čitanje koda algoritmima za pretraživanje slike u stvarnom vremenu ne

predstavlja problem, što je jedan od razloga zašto se ovaj način čitanja koda

danas smatra najbržim.

2.2.2.1. Detekcija

Kako bi se detektirao kod QR, algoritam pretrage koji se izvršava u

stvarnom vremenu nad kamerom traži pravokutnik kojemu su pikseli u dvije

boje. Promatrani kod QR ima dimenzije kojima je omjer kockica uvijek isti, te

tvori različiti poligon s obzirom na nagib i kut gledanja u stvarnom 3D svijetu.

Taj poligon se može podijeliti na više manjih poligona koji se u bilo kakvoj

okolini ponašaju jednoliko i nikada ne gube omjer.

Slika 2.6 - Detekcija poligona

Page 15: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

9

Omjer poligona prikazanog na slici 2.6 je 7α2 : 5α2 : 3α2. mijenjanjem

slike gledišta za kut β, vidimo da je slika promijenila kut ali ne i omjer koji je

sada 7βα2 : 5βα2 : 3βα2.

2.2.2.2. Orijentacija

Nakon uspješne detekcije koda QR dolazak do informacija koje se u

njemu nalaze ovisi o orijentaciji koda QR u odnosu na poziciju skeniranja. Kako

bi softver prepoznao orijentaciju prvo traži tri identifikacijska markera na tri

ruba koda. Sa ove tri informacije metodom pravokutnog trokuta dolazi se do

informacije o orijentaciji, mogućnosti provjere zakonitosti i ispravnosti koda

QR, te čitanja potrebnih informacija o kodu i pohranjenih podataka.

Identifikacijske markere razlikujemo po poziciji unutar koda, to su gornji (L),

donji (O) i desni (M) i izgledaju jednako, a mogu se identificirati s obzirom na

prazan kut.

Slika 2.7 - Orijentacija koda QR

2.2.2.3. Posebna područja

Uz prethodno navedene preduvjete, za pristup čitanju podataka treba

znati gdje se nalaze u kodu i na koji ih se način treba tumačiti. Osim

identifikacijskih markera koji su odvojeni posebnim dijelom koji ih odvaja od

Page 16: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

10

ostatka koda, postoji i marker za poravnavanje. U standardnom kodu QR

postoji samo jedan takav marker, a kodovi koji imaju podatkovni dio razdjeljen

na više dijelova posjeduju po još jedan dodatni na rubovima podjela.

Slijedeći ključni markeri su vremenski markeri koji povezuju

orijentacijske markere nizom crno-bijelih točaka. Ti markeri implementiraju

takozvani „timing pattern-a“, pomoću kojeg u pravo vrijeme čitaju sve ostale

ćelije u kodu. Riječ je manipuliranju sa stabilnošću slike, gdje se čeka kada će

se markeri tajmera poklopiti, u trenutku ispravnosti algoritam zna da su u svim

ostalim ćelijama pravilno raspoređene boje.

Postoje dva područja unutar koda QR rezervirana za zapis verzije

samog koda, jer o verziji koda ovisi i način parsiranja koda. Ta područja nalaze

se sa neposredno iznad donjeg orijentacijskog markera, lijevo od tajmera i sa

lijeve strane od desnog markera neposredno iznad tajmera.

Svaki standardni kod QR ima zapisane podatke sa jednom od osam

mogućih maski. Unutar koda je definirano mjesto za zapis formata maske,

kako bi se ispravno mogli dekodirati podatci. Ukoliko bi se maska promijenila,

podatci bi se potpuno promijenili vrlo vjerojatno besmislen tekst.

Sav preostali prostor koda QR je područje za pohranu podataka ili

potvrde ispravnosti podataka objašnjenu u ranijim poglavljima. Ovi prostori su

varijabilne veličine, samo je poznat maksimalni kapacitet podataka. Na slici

2.8 zasivljeni su podatkovni i potvrdni dijelovi.

Slika 2.8 - Posebna područja

Page 17: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

11

2.2.2.4. Dekodiranje

Dekodiranje koda QR, kao što je već napomenuto, ovisi o tome koji je

tip koda, ali postoje generalna pravila čitanja koja su za sve kodove jednaka.

Čitanje uvijek kreće od donjeg desnog kuta tj. kuta koji ne sadrži identifikacijski

marker. Na početku podatkovnog dijela prvo se nalaze ćelije „enc“ i „len“ koje

nose informacije o tipu kodiranja i duljini podataka. Zatim se podatci čitaju

redom, ćeliju po ćeliju, od dolje prema gore, kada se dođe do vrha ide se u

lijevo, pa natrag prema dolje. Postupak se ponavlja za sve ćelije D (eng. Data)

dok podatkovni dio ne završi, izbjegavajući posebna područja. Kada se dođe

do završne ćelije (engl. End), preostaju ćelije E odnosno potvrda podataka tipa

(engl. Error Correction) do kraja prostora koda.

2.3. Biblioteka ZXing

ZXing je biblioteka otvorenog programskog koda koja pruža podršku za

čitanje jednodimenzionalnih i dvodimenzionalnih barkodova. Za svoj rad koristi

napredne algoritme iz područja računalnog vida i biblioteke OpenCV. Iako je

izvorno napisana u Java programskom jeziku, omogućeno je izvršavanje

algoritama na različitim platformama, uključujući Android kojemu je Java

nativna. U ovom diplomskom radu za skeniranje kodova QR u Android

aplikaciji implementirani su algoritmi iz ove biblioteke. Za ispravan rad

biblioteke minimalna API razina Androida mora biti devet poznatija pod

imenom medenjak (izvorno engl. gingerbread) i Android verzijom 2.3.

Page 18: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

12

3. Mobile Ticket Validator

Kao projekt diplomskog rada napravljen je sustav za upravljanje

ulaznicama koji prati životni tijek ulaznice, od puštanja u prodaju do

evidentiranja posjeta, na osnovu čega se generira statistika. Arhitekturno je

napravljen tako da se može prilagoditi svakom tipu događaja koji ima ulaznice,

bilo da se radi o sportskim natjecanjima, koncertima ili posjetima kulturnih

znamenitosti. Danas se svaki sustav ili aplikacija bavi analiziranjem podataka,

bez kojeg je upitna njihova svrhovitost. Informatizacijom prodaje i provjere

ulaznica dobiva se precizna statistika o prodaji ulaznica, korištenju

sponzorskih ulaznica što analizom može dovesti poboljšanog marketinga i

povećanja prodaje. Sustav rješava probleme kod preprodaje falsificiranih

ulaznica te sprječava mogućnost posjeta više osoba sa istom ulaznicom.

3.1. Komponente sustava

Arhitekturu sustava možemo podijeliti na četiri dijela: poslužiteljska

komponenta i baza podataka, web aplikacija i Android aplikacija. Poslužitelj se

brine o podatcima, sprema ih u bazu podataka i pruža podršku u radu Android

i web aplikaciji slanjem podataka u formatu JSON. Web aplikacija omogućava

rukovanje ulaznicama i korisnicima sustava te analizu podataka pregledom

statistike. Zbog svojstva nemogućnosti zadržavanja podataka, (engl.

stateless) web aplikacija sve podatke dohvaća i pohranjuje preko poslužitelja

u realnom vremenu. Android aplikacija skenira ulaznice prilikom prodaje i

provjere, mijenja im stanja i šalje podatke poslužitelju.

Page 19: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

13

Slika 3.1 - Komponente sustava

3.2. Poslužiteljska komponenta

Poslužitelj je centralni dio sustava za upravljanje ulaznicama. Po svemu

je jednak osobnom računalu, ali je razvijen i postavljen kao dio paradigme

klijent-poslužitelj (engl. client-server) sa javnom adresom IP, koji prima različite

zahtjeve od klijentskih aplikacija, ekstrahira podatke, validira ih. Ukoliko je sve

uredu šalje odgovarajući upit prema bazi podataka i s obzirom na ishod

odgovara na zahtjeve korisnika. Implementira svojstvo sigurnosti jer je

smješten na javnom serveru, te vodi brigu o pravima pristupa prema servisima

koje pruža.

3.2.1. Hosting

Kako bi računalo bilo poslužitelj mora ispunjavat preduvjet stalne veze

na Internet i dodijeljenu javnu adresu IP. Ono što je na poslužitelju mora biti

dostupno uvijek, stoga je najbolje rješenje za postavljanje poslužiteljske

komponente neka od hosting kuća, koja ima rješenja u slučajevima nestanka

Page 20: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

14

struje, kvara na nekom od poslužitelja i ostalim situacijama u kojima postoji

mogućnost prestanka rada sustava i gubitka podataka.

Microsoft Azure je internetski servis koji nudi svoja platformska i

infrastrukturna rješenja u oblaku. Razvijen je 2010. godine od strane tvrtke

Microsoft, te iako svoje usluge naplaćuje, danas predstavlja jednu od najboljih

oblak usluga na tržištu. Projekt koji je izrađen u sklopu diplomskog rada na

azuru ima podignut aplikacijski server na kojem se nalazi web aplikacija

odnosno administratorsko sučelje i poslužitelj Microsoft SQL Server na kojem

se nalazi sustav za upravljanje bazom podataka.

3.2.2. Baza podataka

Podatci su ključni dio svake aplikacije, a za njihovu pohranu, dostupnost

i strukturu brine se baza podataka. Za povezivanje na server i izgradnju baze

podataka korišteno je razvojno okruženje Microsoft SQL Server Management

Studio (IDE).

Budući da je ova aplikacija zamišljena kao usluga koja se može

prilagoditi svakom modelu korištenja ulaznica za posjet, baza podataka je

izgrađena na način da pohranjuje opće podatke. Svim entitetima je dodijeljen

surogatni primarni ključ koji se automatski inkrementira, kako bi se izbjegla

potreba za prirodnim ili kompozitnim primarnim ključem. Time se rješava

problem u slučajevima gdje recimo na ulaznici ne postoji jedinstveni ID koji bi

u sustavu bio zamišljen kao prirodni primarni ključ. Svi atributi tablica koji nisu

nužni kako bi aplikacija funkcionirala imaju mogućnost ostati ne popunjeni

(engl. NULL) što povećava prilagodljivost, a ograničenja za potrebna polja

grade se pojedinačno kroz klijentske aplikacije.

Baza podataka pohranjuje sedam entiteta od kojih su dvije tablice

šifrarničke, čiji su nazivi po konvenciji napisani u jednini. Pohranjuju se

događaji, njihove ulaznice i tipovi ulaznica, posjeti, objekti, korisnici sustava te

tipovi korisnika. Objekt sadržava objekte koji mogu biti posjećeni sa istom

ulaznicom u slučaju da se radi o ulaznicama koje vrijede za više lokacija poput

ulaznica gradske turističke zajednice.

Page 21: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

15

Slika 3.2 - Dijagram baze podataka

3.2.3. ASP.NET Web API

ASP.NET Web API je programski radni okvir (engl. framework) za

izgradnju web servisa koji komuniciraju sa klijentima putem protokola HTTP.

Pruža podršku preko sučelja REST bez obzira o tipu klijenta. Za razvoj web

API-ja korišteno je Visual Studio 2015 razvojno okruženje (IDE).

Kako bi mogli implementirati web servise koji razgovaraju sa bazom

podataka potrebno je implementirati vezu između modela web API-ja i entiteta

baze podataka. U ovom je projektu implementirana veza preko Entity radnog

okvira metodom prethodne izrade baze podataka (engl. database first). Entity

radni okvir je ORM alat za preslikavanje entiteta i relacija u bazi podataka i

objekata i veza unutar kôda aplikacije. Izgradnjom modela pomoću Entity

radnog okvira postaju dostupne i posebne metode za jednostavniji razgovor

sa bazom podataka, čijim tablicama pristupamo kao prema objektima.

Page 22: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

16

Za sve tablice u bazi odnosno njihove programske reprezentacije u

modelu izgrađen je puni HTTP pristup (RESTful) koji podrazumjeva sve CRUD

operacije. Posebno su implementirani web servisi u kojima je razrađena

poslužiteljska aplikacijska logika vezana uz autorizaciju, rukovanje sa

korisnicima, ulaznicama, statistika i drugi. Za filtriranje podataka korišteni su

lambda izrazi iz biblioteke LINQ proširenih metoda za kolekciju IEnumerable

(engl. extension methods) za programramski jezik C#. Podatci se preko mreže

klijentskim aplikacijama šalju u formatu JSON, danas najpopularnijem

strukturiranom tipu podatka, pogodnim za parsiranje podataka.

Prikaz servisa za ažuriranje ulaznice (PUT - RESTful komponenta) i

prikaz servisa za prodaju ulaznice sa korištenim lambda izrarom:

[ResponseType(typeof(void))] public async Task<IHttpActionResult> PutUlaznica(int id, Ulaznica ulaznica) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != ulaznica.ID_Ulaznice) { return BadRequest(); } db.Entry(ulaznica).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UlaznicaExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); } [HttpPost]

Page 23: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

17

public bool ProdajUlaznicu([FromUri] int brUlaznice, [FromUri] int idTipaUlaznice, [FromUri] int idProdavaca, [FromUri] int idDogadjaja) { Ulaznica ticketToUpdate = null; try { ticketToUpdate = db.Ulaznica.Single(_ulaznica => (_ulaznica.BrojUlaznice == brUlaznice && _ulaznica.ID_Tipa_Ulaznice == idTipaUlaznice && _ulaznica.ID_Dogadjaja == idDogadjaja)); } catch (Exception) { return false; } ticketToUpdate.DatumProdaje = DateTime.Now; ticketToUpdate.ID_Prodavaca = idProdavaca; db.SaveChanges(); return true; }

3.3. Administratorsko sučelje

Administratorsko sučelje je klijentska web aplikacija koju koristi osoba

odgovorna za ulaznice. Arhitektura web aplikacije razvijena je u skladu sa

pravilima MVC oblikovnog obrasca (engl. MVC pattern). Za prava pristupa

aplikaciji implementiran je autorizacijski mehanizam koji koristi mrežne

kolačiće (engl. HTTP cookie) za održavanje sjednice (engl. session). Za razvoj

web aplikacije korišteni su ASP.NET MVC i programski radni okvir RAZOR u

Visual Studio 2015 razvojnom okruženju (IDE).

Rad ASP.NET MVC aplikacije izvršava se na serveru, što omogućava

dijeljenje resursa web aplikacije i web API-ja, pa je prethodno izgrađeni model

ujedno i model web aplikacije. Dodane su kontroler klase koje pomoću

RAZOR-a sa klijentskog dijela (engl. view – frontend) osluškuju događaje,

dohvaćaju podatke, te sa njima upravljaju i dinamički mijenjaju izgled web

aplikacije. Na poslužitelju datoteke koje sadržavaju klijentski izgled imaju

ekstenziju .cshtml, što je kombinacija C# i HTML programskih jezika. Međutim,

kada kontroler klasa dohvaća odgovarajući klijentski izgled koji želi proslijediti

klijentu izvrši sav C# kod tako da se klijentu u web pregledniku prikaže

pročišćeni HTML.

Za izradu klijentske komponente odnosno sučelja web aplikacije

korišteno je Bootstrap programsko radno okruženje koje pruža unificirani

Page 24: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

18

izgled kompletnog sučelja HTML i responzivan dizajn. Za njegov rad potrebno

je učitati bootstrap biblioteku, koja je u ovom projektu učitana u glavnom okviru

za sve pod stranice, te dodati odgovarajuće selektore na elemente HTML.

Radi boljeg korisničkog iskustva osmišljeno je jednostavno intuitivno sučelje,

te su prilagođeni dijelovi css datoteka i dodane java script funkcije, što je

utjecalo na prikaz sučelja u Internet preglednicima.

3.3.1. Upravljanje sa ulaznicama

Prije nego li se ulaznica pojavi na prodajnom mjestu i omogući prodaja,

administrator sustava i/ili voditelj prodaje u sustav moraju unijeti ulaznice i

dodijeliti im prodajno mjesto. Administratorima sustava su omogućene kroz

jednostavan unos prema tipu ulaznice i mjestu prodaje, uz dodavanje raspona

identifikacijskog broja ulaznica. Ulaznice ne moraju imati brojčani

identifikacijski broj, sve što je potrebno treba biti zapisano u kod QR.

Za potrebe ovog diplomskog rada napravljen je događaj „Obrana

diplomskog rada“ i kreirane su ulaznice. Po temi ovog diplomskog rada,

preduvjet svim ulaznicama je kod QR koji ima zadanu shemu oblika podataka

o ulaznici. U bazi podataka postoji za ulaznicu postoji nekolicina atributa koji

ne moraju biti popunjeni, za identifikaciju ulaznice generirani kod QR mora

sadržavati četiri parametra koji vrijede za sve vrste i tipove ulaznica koji mogu

postojati. Parametri su: ID ulaznice, ID tipa ulaznice, Cijena ulaznice i ID

događaja kojem ulaznica pripada koji su radi lakšeg strojnog čitanja ugrađeni

u slijedeći uzorak: ID:#TIP:#CIJENA:#DOGADJAJ:#.

Web aplikacija nudi rukovanje i uvid u kompletan životni vijek ulaznice.

Svakoj je ulaznici moguće provjeriti status u bilo kojem trenutku od puštanja u

prodaju, prodavanja, posjete. Za prodaju i posjet moguće je provjeriti tko je,

kada i na kojem prodajnom mjestu prodao ulaznicu, te tko je, kada i gdje

zabilježio posjet događaja sa dotičnom ulaznicom. Ulaznice je moguće

opozvati i proglasiti nevažećom u bilo kojoj fazi njenog životnog ciklusa.

Na osnovu podataka moguće je pregledati globalnu sliku i generirati

statistiku po različitim parametrima npr. broj posjeta ovog mjeseca ili godine,

Page 25: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

19

broj ulazaka u stadion preko zapadnog ulaza(lokacija), broj neiskorištenih

karata, usporedba zarade od posjeta u protekle dvije godine.

3.3.2. Upravljanje sa korisnicima

Administrator sustava je odgovoran za sve korisnike sustava i ima

mogućnost upravljanja sa njima. U startu postoji samo jedan tip korisnika i to

je Administrator, koji zatim dodaje ostale tipove korisnika sustava. Za uspješno

dodavanje korisnika potrebno je unaprijed kreirati tip korisnika, jer u sustav nije

moguće dodati korisnika koji ne pripada nijednom tipu.

Budući da se samo administratori sustava mogu prijaviti na web

aplikaciju, njima je omogućeno editiranje podataka o drugim korisnicima i

svojih osobnih podataka. U slučaju promjene lozinke, administrator ne mora

znati koja je aktivna lozinka nekog korisnika, već može direktno zadati novu,

što pomaže prilikom zaborava koda korisnika ili suspenzije korisničkog računa.

Iako administrator ima sva prava, kroz administratorsko sučelje nije

predviđeno u potpunosti obrisati korisnika, jer bi to rušilo zapisane podatke o

ulaznicama u čijim je zapisan korisnik. Ipak, u slučaju pogreške izazvane

ljudskim faktorom, moguće je editirati podatke korisnika.

3.3.3. Prikaz korištenja

Pri samom pokretanju i pristupu opcijama administratorska stranica

nudi prijavu u sustav. Ukoliko su podatci ispravni, na internetski preglednik

pohranjuje se kolačić sa podatcima kao jamac uspješne prijave u trajanju od

deset minuta od zadnje aktivnosti. Pri ulasku na svaku stranicu prvo se

provjerava ima li valjani kolačić, ako nema korisnika se preusmjerava na

stranicu za prijavu.

Page 26: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

20

Slika 3.3 - Prijava na administratorsko sučelje

Nakon uspješne prijave u sustav nudi nam se izbornik koji nudi opcije

za upravljanje sustavom ulaznica. Na početku korištenja u sustav je potrebno

dodati tipove korisnika i same korisnike kojima će biti pridijeljeni kreirani tipovi.

Na slici 3.3 prikazano je sučelje za dodavanje korisnika, klikom na dodaj pravi

se direktni zahtjev POST na serveru, i vraća se poruka o uspješnosti.

Page 27: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

21

Slika 3.4 - Sučelje za dodavanje novog korisnika u sustav

Sustav omogućava brz pregled korisnika koji se generiraju na ekranu,

radi lakšeg korištenja. Klikom na ikonicu korisnika otvaraju se njegovi podatci

i omogućava editiranje. Klikom na gumb „Spremi“ šalje se direktni zahtjev PUT

prema serveru i javlja se poruka o uspješnosti ažuriranja.

Page 28: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

22

Slika 3.5 - Pregled postojećih korisnika

Osim korisnika administrator može dodavati nove tipove ulaznica i

ulaznice te pregledavati informacije o postojećima. Kod kreiranja ulaznice

dodjeljuje se mjesto na kojem bi ta ulaznica trebala biti prodana. Od trenutka

kada se dodijeli mjesto, ulaznica je logički puštena u prodaju i Android

aplikacijama počinje biti moguća za prodaju skeniranjem njenog koda QR.

Kreiranje ulaznica vrši se odabirom raspona brojeva na ulaznicama što

uvelike olakšava administratorima dodavanje ulaznica. Web aplikacija ne šalje

n zahtjeva sa ulaznicama prema serveru, već pošalje jedan zahtjev. Niti na

serveru se ne otvara n konekcija prema bazi niti se šalje n zahtjeva sustavu

za upravljanje bazom podataka, već se vrši izvrši jedna transakcija zapisana

Page 29: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

23

u jednoj pohranjenoj proceduri (engl. stored procedure). Ukoliko su sve

ulaznice uspješno kreirane, u bazi će se dogodit potvrda, a korisnik će dobiti

obavijest o uspješno kreiranim ulaznicama.

Slika 3.6 – Dodavanje nove ulaznice

Page 30: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

24

Slika 3.7 - Dodavanje novog tipa ulaznice

3.4. Android aplikacija

Android je operacijski sustav otvorenog izvornog koda koji pokreće više

od 50% pametnih telefona na svijetu, pametne satove i televizije. Zbog svoje

je neovisnosti o uređajima i raširenosti odabran kao najbolji izbor za izradu

mobilnog dijela sustava. Za razvoj Android mobilne aplikacije korišteno je

Android Studio razvojno okruženje (IDE). Prilikom instalacije aplikacija od

korisnika traži pravo na korištenje kamere zbog skeniranja koda i pravo

korištenja interneta zbog slanja zahtjeva HTTP.

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.INTERNET"

/>

Page 31: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

25

Budući da je ova mobilna aplikacija Android i može biti instalirana na

bilo kojem Android pametnom telefonu. Međutim zbog svoje specifičnosti,

aplikacija pretvara pametni telefon u specijalizirani skener kodova QR koji

sadrže zapis o ulaznicama izrađen ovim sustavom, pa bi preporuka prilikom

primjene sustava u stvarnom projektu bila imati neovisan mobilni uređaj sa

stalnom internetskom vezom. Mobilnom aplikacijom upravljaju korisnici

sustava koje je administrator sustava prethodno dodao. Za sav rad sa

ulaznicama, bilo da se radi o prodaji ili kontroli i na bilo kojem mjestu

odgovorna je jedna aplikacija Android. Stoga prilikom prijave u sustav mobilna

aplikacija nudi različite mogućnosti s obzirom na tip korisnika koji se prijavljuje

i lokaciju za koju je uređaj predodređen. Svi korisnici imaju standardne

korisničke postavke i mogućnost promjene lozinke, a administrator sustava

može mijenjati i lokaciju i namjenu uređaja.

Za izradu sučelja aplikacije korištena je najnovija biblioteka Google-a

za izradu dizajna naziva „Material design“. Budući da je ovo specijalizirana

aplikacija koja ima ograničen broj funkcionalnosti, radi bolje prilagodbe

korisnicima i smanjivanja mogućnosti pogreške klika kreirani su vlastiti fontovi

nešto veći od standardnih.

3.4.1. Pohrana podataka

Za razliku od web aplikacije, mobilna aplikacija ima mogućnost trajne

pohrane podataka (engl. stateful). Podatci koji se nalaze u šifrarničkim

tablicama rijetko se mijenjaju, poput tipa ulaznice i tipa korisnika. Stoga se ti

podatci dohvaćaju samo jednom, prilikom prijave u sustav i pohranjuju se u

priručnu memoriju android Android (shared preferences). Ukoliko sustav

detektira da su se podatci izgubili, automatski dohvaća nove podatke sa

servera i opet ih pohranjuje. S ovim je činom osim brzine rada i dohvata

podataka smanjen broj API poziva prema poslužitelju što dovodi do manjeg

opterećenja poslužitelja i bržeg rada cijelog sustava.

Prikaz kôda za pohranu podataka o korisniku prilikom prijave u sustav i

čitanja istih podataka prilikom pokušaja promjene lozinke unutar „dijeljenih

postavki“, odnosno Android brze aplikacijske memorije:

Page 32: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

26

JSONObject jsonObj = new JSONObject(odgovorServera);

JSONObject jsonObj = new JSONObject(odgovorServera);

int idKorisnika = jsonObj.getInt("idKorisnika");

String imeKorisnika = jsonObj.getString("imeKorisnika");

String prezimeKorisnika =

jsonObj.getString("prezimeKorisnika");

int idTipaKorisnika = jsonObj.getInt("idTipaKorisnika");

SharedPreferences.Editor ed =

getSharedPreferences("KorisnikSharedPreferences",

MODE_PRIVATE).edit();

ed.putInt("idKorisnika", idKorisnika);

ed.putString("ime", imeKorisnika);

ed.putString("prezime", prezimeKorisnika);

ed.putInt("idTipaKorisnika", idTipaKorisnika);

ed.commit();

SharedPreferences sp =

getSharedPreferences("KorisnikSharedPreferences",

MODE_PRIVATE);

if(!sp.contains("idKorisnika"))

{

AlertDialog.Builder builder = new

AlertDialog.Builder(c);

builder.setMessage("Doslo je do pogreske kod ucitavanja

korisnika, potrebno se ponovo prijaviti")

.setPositiveButton("Uredu", new

DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

finish();

}

});

builder.create().show();

}

else

{

nazivKorisnika = sp.getString("ime", null) + " " +

sp.getString("prezime", null);

idKorisnika = sp.getInt("idKorisnika", 0);

}

3.4.2. Prodaja i kontrola ulaznica

Dvije osnovne funkcionalnosti mobilne aplikacije spaja okosnica ovog

diplomskog rada, a to je skeniranje koda QR sa kamerom ugrađenom u mobilni

uređaj. Obje opcije imaju potpuno jednaku implementaciju logike za skeniranje

Page 33: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

27

ulaznice, ali podatci se šalju na različite web servise. Pozivi servisa izvršavaju

se na posebnim nitima u pozadini implementacijom sučelja Android

AsyncTask optimiziranog za rad sa nitima. Prodaja ulaznice traži jesu li podatci

u skladu sa sustavom, ako jesu ulaznica se označava kao prodana te postaje

vidljiva kontrolorima na mjestima koja mogu biti posjećena.

U slučaju kontroliranja ulaznice, bilježi se posjet ukoliko se podatci

iščitani iz koda QR poklapaju sa jednom od ulaznica koje su prodane. Poruka

o uspješnosti prodaje ili posjeta ispiše se odmah na zaslonu u vidu poruke u

malom oblačiću (engl. toast message). Ukoliko ulaznica postoji u sustavu, ali

se posjet ne može zabilježiti na zaslonu, otvara se dijalog sa svim podatcima

o ulaznici, tko ju je, gdje i kada prodao i pregledao, te koji joj je status. Korisnik

tada može utvrditi i ispraviti nepravilnost te omogućiti ponovan ulazak ili utvrditi

pokušaj varanja i uskratiti ulazak. Postupak provjere ulaznice i zabilježavanje

posjeta modeliran je slijednim dijagramom prikazanom na slici 3.8.

Slika 3.8 - Slijedni dijagram provjere ulaznice

Sustav je napravljen da prodajom ulaznice kreira u bazi podataka zapis

o mogućem posjetu određene ili određenih lokacija. Na taj način se olakšava

pretraga ulaznica u bazi podataka, jer sustav ne mora gledati sve postojeće

ulaznice već samo one za čiju lokaciju je moguć posjet. Stoga ukoliko

odaberemo opciju „Zabilježi posjet“, u slučaju neuspjeha zbog nepostojeće

ulaznice korisnik neće imati uvid u ulaznicu. Stoga je implementirana dodatna

Page 34: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

28

opcija „Detalji ulaznice“ pretražuje ulaznicu u cijelom sustavu za zadani

događaj. Što dodatno omogućuje kontroloru da vidi kada je i gdje prodana

ulaznica, te od kojeg korisnika. Ukoliko je došlo do pogreške može se brzo

reagirati od strane administratora ili prepoznati pogreška posjetitelja i uputit ga

se recimo na pravi ulaz, a moguće je i otkriti pokušaj dvostrukog ulaza ili ulaza

sa lažnom ulaznicom.

Svi podatci na pametni telefon Android dolaze u formatu JSON koji se

parsira i prikazuje. Primjer podatka jedne ulaznice u formatu JSON:

{

"ID_Ulaznice": 2,

"BrojUlaznice": 2,

"Cijena": 0.0,

"ID_Tipa_Ulaznice": 1,

"DatumProdaje": "2016-06-24T20:32:29.527",

"ID_Prodavaca": 1,

"ID_Dogadjaja": 1

}

3.4.3. Prikaz korištenja

Ulazna točka aplikacije Android je aktivnost koja nudi upis podataka za

prijavu u sustav, osim ako je korisnik ostao prijavljen u sustav, pa je Android

operacijski sustav sačuvao stanje instance. Autorizacija korisnika se vrši na

serveru slanjem zahtjeva HTTP, nakon kojega slijedi glavni izbornik.

Page 35: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

29

Slika 3.9 - Prijava u sustav i glavni izbornik

Ulaskom u glavni izbornik nude se opcije Android aplikacije, u kojemu

su opcije prodaja i zabilježavanje posjeta sučeljem potpuno jednake, ali u

implementaciji različite. Radi se o čitaču QR koji parsira kod i iz njega izvlači

prethodno definirane i strukturirane podatke. Ukoliko su podatci ispravni i

sadržavaju informacije za obavezne atribute tablice „Ulaznica“, aplikacija

Android šalje zahtjev HTTP na server sa pročitanim parametrima. Odabirom

jedne od ove dvije opcije pali se aktivnost iz biblioteke ZXing za prepoznavanje

i parsiranje koda QR. Aktivnost je u suštini kamera sa svijetlim pravokutnikom

omeđenim zelenim crtama. Na tom se području kamere izvršava algoritam

detekcije i parsiranja koda QR, ulaskom koda aplikacija automatski izvrši

čitanje i pita korisnika za potvrdi provjeru.

Page 36: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

30

Slika 3.10 - Skeniranje ulaznice

Odabirom korisničkih opcija u glavnom izborniku pokreće se aktivnost

koja administratoru sustava nudi mogućnost promjene lokacije uređaja.

Promjenom lokacije mijenja se potpuno ponašanje uređaja i limitiraju prava na

opcije u izborniku. Recimo da administrator postavi da se uređaj nalazi na

sjevernom ulazu u stadion, tada su korisniku nedostupne opcije prodaje i

pregleda preostale količine ulaznica.

Za razliku od promjene lokacije, svi korisnici imaju mogućnost promjene

lozinke potvrdom stare i dvostrukim unošenjem nove željene lozinke koja mora

sadržavati određenu kompleksnost s minimalno pet znakova, nakon čega se

pojavi dijalog o uspješnosti promjene lozinke.

Page 37: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

31

Slika 3.11 - Opcije korisnika

Page 38: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

32

4. Zaključak

Kod QR je dvodimenzionalni matrični zapis velike količine tekstualnih

podataka, URL-ova, slika ili datoteka kojeg pametni mobitel pomoću kamere

čita gotovo nevjerojatnom brzinom. Znajući sve tipove i mogućnosti kodova

QR posve je razumljiva njegova velika popularnost i svestrana primjenjivost.

Tu se još jednom Informatika pokazala kao znanost koja olakšava posao

čovjeku, te smanjuje faktor pogreške. Sve više treba biti sustava kojima će

upravljati čovjek i dobivati mjerljive rezultate s ciljem veće efikasnosti i bolje

kvalitete proizvoda.

Još jedna inovativnost korištena u izradi diplomskog projekta je

korištenje SQL Server i Aplikacijskog poslužitelja unutar oblak usluge Azure.

Općenito sve više i više sustava, platformi i aplikacija danas postoji u oblaku.

Taj trend povećavanja neprestano raste i lako je vjerovati da će u bliskoj

budućnosti gotovo sav softver biti u oblaku. Ugodno sam iznenađen brojnošću

usluga i jednostavnošću korištenja koje pruža Microsoft Azure za nisku cijenu.

Danas se sve više teži prilagodbi aplikacija i sustava korisnicima, pa je

izrađena Android aplikacija napravljena intuitivno, te na prvi pogled novim

korisnicima djeluje kao da su je već koristili. Iako sustav uistinu olakšava rad i

rješava konkretni problem, velika je mana što su korisnici sustava samo

zaposlenici ustanove koja koristi ulaznice. Stoga bi potencijalna proširenja bila

mogućnost kreiranja vlastitih događaja i ulaznica ili servis koji omogućava

prodaju putem interneta, brzu raspodjelu u slučaju nestanka karata ili povrata

karte u slučaju otkaza.

Sustav koji je izrađen kao projekt ovog diplomskog rada nije samo puka

implementacija i POC istraženog područja već kompletni inženjerski pristup

rješavanju stvarnih problema čovjeka korištenjem pažljivo odabranih

tehnologija. Pristup izradi sustava odrađen je po principima DDD oblikovnog

obrasca, te je dodatno sagledana šira slika mogućnosti implementacije i

upotrebe sustava i ostavljen prostor za nadogradnju.

Page 39: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

33

5. Literatura

[1] Howse, J. Android Application Programming with OpenCV: Build

Android apps to capture, manipulate, and track objects in 2D and 3D.

Birmingham - Mumbai: Packt Publishing, 2013.

[2] Numetric labz, Android QR Code Scanner using ZXingScanner Library,

9. 2. 2016. https://www.numetriclabz.com/Android-qr-code-scanner-

using-zxingscanner-library-tutorial/, lipanj 2016.

[3] OpenCV, 19.5.2016. http://opencv.org/, lipanj.2016.

[4] Wikipedia, Computer vision, 27.6.2016.

https://en.wikipedia.org/wiki/Computer_vision, lipanj 2016.

[5] Denso Wave Incorporated, QR Cod, http://www.qrcode.com/en/, lipanj

2016.

[6] Bharath P, Opencv: Qr Code Detection And Extraction, 25.10.2014.

http://dsynflo.blogspot.hr/2014/10/opencv-qr-code-detection-and-

extraction.html, lipanj 2016.

[7] Carolyn Eby, QR Code Tutorial, 5.12.2015. http://www.thonky.com/qr-

code-tutorial/, lipanj 2016.

[8] Jon Flanders, Introduction to the ASP.NET Web API, 12.12.2012.,

https://app.pluralsight.com/library/courses/aspnetwebapi/table-of-

contentshttps://app.pluralsight.com/library/courses/aspnetwebapi/table-

of-contents, lipanj, 2016.

[9] Google, Material design, early 2016, https://material.google.com/#,

lipanj, 2016.

Page 40: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

34

Sadržaj

Naslov:

Aplikacija za validaciju ulaznica ugrađenim fotoaparatom na pametnim

telefonima

Sažetak:

Diplomski rad demistificira kod QR, raspisuje tipove, svojstva i mogućnosti,

pokazuje primjer čitanja i razumijevanja koda. Izgrađen je sustav koji prati

životni vijek ulaznice. Sačinjen je od četiri komponente: Microsoft SQL

SERVER baza podataka, ASP.NET Web API, ASP.MVC web aplikacija i

mobilna aplikacija Android. Web API implementira web servise za

komunikaciju sa bazom podataka. Pruža podršku Android i web aplikaciji

preko sučelja REST. Web aplikacija je administratorsko sučelje koje

omogućava upravljanje ulaznicama i korisnicima sustava. Nudi prikaz

statistike na osnovu podataka o prodanim ulaznicama. Mobilna aplikacija

Android pruža mogućnost prijave svim korisnicima sustava. Omogućava

skeniranje koda QR uz pomoć računalnog vida u svrhu prodaje ulaznica i

evidentiranja posjeta.

Ključne riječi:

QR kod, OpenCV, Android, ASP.NET, Web API, MVC

Page 41: APLIKACIJA ZA VALIDACIJU ULAZNICA UGRAĐENIM … · kodova na proizvode sa malom ambalažom. Slika 2.3 - Mikro QR kod 2.1.2.3. Kod iQR ... koji krije tajne informacije. Osim toga,

35

Summary

Title:

A Smartphone Application for Ticket Validation using the Embedded Camera

Summary:

Graduate work demystifies QR code, enumerate types, characteristics and

features. It also shows an example of reading and understanding the QR code.

The system that follows lifecycle of tickets was built. It consists of four

components: SQL Server database, ASP.NET Web API, ASP.MVC web

application and Android application. Web API implements web services which

communicate with the database. Also, it provides support for Android and web

application through the REST interface. Web application is an administration

interface that provides ticket management and management of the users. It

has ability to show the statistics based on data gathered from sold tickets.

Android application provides registration for all users of the system. Also, it

enables scanning of QR code with help of computer vision in purpose of selling

or checking tickets and recording a visit.

Keywords:

QR code, OpenCV, Android, ASP.NET, Web API, MVC