aplikacija za validaciju ulaznica ugraĐenim … · kodova na proizvode sa malom ambalažom. slika...
TRANSCRIPT
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
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
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
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
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.
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
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.
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
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.
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
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.
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
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
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
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.
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.
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
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.
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.
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]
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
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,
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.
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.
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.
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
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
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"
/>
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:
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
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
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.
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.
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.
31
Slika 3.11 - Opcije korisnika
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.
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.
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
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