MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU

Similar documents
Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

Podešavanje za eduroam ios

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

Port Community System

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO KRISTIAN LEINER

PROJEKTNI PRORAČUN 1

1. Instalacija programske podrške

Upute za korištenje makronaredbi gml2dwg i gml2dgn

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

Mindomo online aplikacija za izradu umnih mapa

BENCHMARKING HOSTELA

SAS On Demand. Video: Upute za registraciju:

Windows Easy Transfer

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

Office 365, upute za korištenje elektroničke pošte

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI

Uvod u relacione baze podataka

Otpremanje video snimka na YouTube

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

VIŠEKORISNIČKA IGRA POGAĐANJA ZA OPERACIJSKI SUSTAV ANDROID

DINO KAVGIĆ ANDROID APLIKACIJA ZA POSREDOVANJE NEKRETNINAMA

RAZVOJ DINAMIČKIH WEB APLIKACIJA UPORABOM PHP-a I AJAX-a

Tutorijal za Štefice za upload slika na forum.

WEB APLIKACIJA S BAZOM RECEPATA

Bušilice nove generacije. ImpactDrill

IZRADA SUSTAVA ZA UPRAVLJANJE SADRŽAJEM KORIŠTENJEM WEB TEHNOLOGIJA OTVORENOG KODA

Web aplikacija za evaluaciju sudionika na tržištu najma nekretnina

RANI BOOKING TURSKA LJETO 2017

IZRADA WEB APLIKACIJE U PROGRAMSKOM JEZIKU C#

Microsoft Courses Schedule February December 2017

DALJINSKI NADZOR I UPRAVLJANJE BEŽIČNIM ČVOROVIMA

RAČUNALNA APLIKACIJA ZA RFID EVIDENCIJU STUDENATA NA NASTAVI

Internetski portal za praćenje procesnih veličina fotonaponskog sustava

Use-case diagram 12/19/2017

VELEUĈILIŠTE NIKOLA TESLA U GOSPIĆU MYSQL SUSTAV ZA UPRAVLJANJE BAZAMA PODATAKA OTVORENOG KODA

Advertising on the Web

WEB APLIKACIJA ZA KUPNJU I ČITANJE E-KNJIGA

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

UPRAVLJANJE KORISNIČKIM RAČUNIMA U RAILS OKRUŽENJU

Nejednakosti s faktorijelima

ODRICANJE OD ODGOVORNOSTI Ovaj je Priručnik povjerljivo, neobjavljeno vlasništvo društva Intesa Sanpaolo Card i ovime se ne prenose prava vlasništva.

3D GRAFIKA I ANIMACIJA

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

za STB GO4TV in alliance with GSS media

PORTAL ZA UDOMLJAVANJE KUĆNIH LJUBIMACA

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

UPUTE ZA KORIŠTENJE HOME.TV TO GO USLUGE

C# DESKTOP APLIKACIJA ZA GENERIRANJE I POHRANU ZAHTJEVA ZA GODIŠNJI ODMOR

MASKE U MICROSOFT ACCESS-u

MOBILNA APLIKACIJA MOJE DIJETE

OTVARANJE BAZE PODATAKA I IZRADA TABLICE U MICROSOFT ACCESS-u

UPUTE ZA RAD S MODULOM "ČLANOVI" U SUSTAVU "VATRONET"

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU STRUČNI STUDIJ RAČUNARSTVA SMJER: MREŽNO INŽENJERSTVO MATKO MARTEK MREŽNA KONFIGURACIJA I PROTOKOLI ZA POVEZIVANJE

ALEN BARAĆ RAZVOJ DINAMIČKIH WEB APLIKACIJA DIPLOMSKI RAD

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017. GIF FORMAT (.

MEĐIMURSKO VELEUČILIŠTE ČAKOVEC STRUČNI STUDIJ RAČUNARSTVA MARKO KNOK REDUNDATNOST I BALANSIRANJE OPTEREĆENJA WEB POSLUŽITELJA ZAVRŠNI RAD

CRNA GORA

Struktura i organizacija baza podataka

OTVARANJE BAZE PODATAKA U MICROSOFT ACCESSU XP

3. Obavljanje ulazno-izlaznih operacija, prekidni rad

Informacijski sustav primarne zdravstvene zaštite Republike Hrvatske

APLIKACIJA ZA RAČUNANJE N-GRAMA

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

Iskustva video konferencija u školskim projektima

11 Analiza i dizajn informacionih sistema

Slabosti protokola SSL/TLS na napad čovjekom u sredini

Aplikacija za podršku transferu tehnologija

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU OGLASA

mdita Editor - Korisničko uputstvo -

sys.monitor Published on sys.portal (

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

Upute za VDSL modem Innbox F60 FTTH

STRUČNA PRAKSA B-PRO TEMA 13

REVITALIZACIJA SUSTAVA ZA OBRADU ISPADA I PLANIRANIH RADOVA U SN DISTRIBUCIJSKOJ MREŽI

Uputstvo za apliciranje. Instrukcije za popunjavanje aplikacione forme April P a g e Application Manual

SVEUČILIŠTE U ZAGREBU FAKULTET PROMETNIH ZNANOSTI FORENZIČKA ANALIZA MOBILNIH TERMINALNIH UREĐAJA ALATOM NOWSECURE FORENSICS

2. Objektno orjentirana analiza i dizajn poslovnih aplikacija, MVC model

Sveučilište Jurja Dobrile u Puli Odjel za informacijsko-komunikacijske tehnologije DOROTEO MACAN

ANDROID KLIJENTSKA APLIKACIJA ZA CENTRALIZIRANO NARUČIVANJE HRANE U OSIJEKU

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći:

Analiza mogućnosti povezivanja alata OSSIM s alatima za strojno učenje i statističku analizu

Profesionalna komunikacija i suradnja učitelja / nastavnika / stručnih suradnika. Priručnik. Zagreb, godina

DANI BRANIMIRA GUŠICA - novi prilozi poznavanju prirodoslovlja otoka Mljeta. Hotel ODISEJ, POMENA, otok Mljet, listopad 2010.

Transcription:

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU ALEN JUREN RAZVOJ PROTOTIPNOG SUSTAVA ZA PRAĆENJE OSOBNIH TROŠKOVA ZAVRŠNI RAD ČAKOVEC, 2018.

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU STRUČNI STUDIJ RAČUNARSTVO ALEN JUREN RAZVOJ PROTOTIPNOG SUSTAVA ZA PRAĆENJE OSOBNIH TROŠKOVA DEVELOPMENT OF PROTOTYPE SYSTEM FOR MONITORING PERSONAL EXPENSES ZAVRŠNI RAD Mentor: dr. sc. Mihael Kukec, prof. v. š ČAKOVEC, 2018.

SAŽETAK U ovome radu je predstavljen i detaljno objašnjen sustav koji se sastoji od Android aplikacije i Web aplikacije izrađene u ASP.NET Core tehnologiji. Cilj cjelokupnog sustava je kontrola, vođenje i prikaz troškova korisnika kako bi korisniku uštedjeli vrijeme prilikom kalkulacija i pamćenja troškova. Aplikacija omogućava korisniku niz opcija uz prijavu i registraciju, unošenje računa putem optičkog prepoznavanja te kasniju filtraciju po kategorijama. Unutar Web aplikacije se odvija glavna logika i mehanizam za sortiranje i grafičko prikazivanje potrošnje. Također sve postavke vezane uz korisnički račun i kontrole računa se nalaze unutar Web aplikacije. U pisanom dijelu rada su objašnjene korištene tehnologije i razvojne okoline te načini na koji sustav radi poput komunikacije Android aplikacije sa bazom i spajanja ASP.NET Core Web aplikacije na MySql bazu. Za optičko prepoznavanje je korišten repozitorij Google usluga. Web aplikacija je izrađena u Visual Studiu sa zadnjom u to vrijeme dostupnom.net verzijom. Android aplikacija izrađena je u razvojnom okruženju Android Studio, a baza podataka u phpmyadmin alatu. Ključne riječi: ASP.NET Core, Web stranica, Visual Studio, Android Studio, Android aplikacija, Chart.js, MySql.

SADRŽAJ SAŽETAK... 3 SADRŽAJ... 4 1. UVOD... 5 2. TEHNOLOGIJE... 6 2.1. ASP.NET Core... 6 2.2. Android platforma... 7 2.3. Baza podataka MySql... 8 3. RAZVOJNE OKOLINE... 9 3.1 Visual Studio... 9 3.1.1 NuGet... 10 3.2 Android Studio... 10 4. POSTUPAK RADA... 11 4.1. BAZA PODATAKA... 11 4.2. IZRADA WEB APLIKACIJE ASP.NET Core... 12 4.2.1. Spajanje na bazu... 12 4.2.2. Rad s bazom... 13 4.2.3 Registracija i prijava u sustav... 14 4.2.4. Kontrola računa... 21 4.2.5 Korisničke kontrole... 25 4.2.6. Administracija... 26 4.3. VEZA IZMEĐU WEB STRANICE I ANDROID APLIKACIJE... 27 4.4. ANDROID APLIKACIJA... 28 5. ZAKLJUČAK... 34 6. POPIS LITERATURE... 35 PRILOZI... 36 Popis slika... 36 Popis kôdova... 37 Popis tablica... 37

1. UVOD U današnjem užurbanom stilu života sve je teže pratiti i kontrolirati osobne troškove te često dolazi i do zaborava pojedinih. Taj problem pokušava riješiti ovaj prototip s kojim navedeni problem pokušava smanjiti na minimum. Ovaj prototipni sustav omogućuje preglednu, organiziranu i urednu kontrolu troškova. Sustav će se sastojati od Android aplikacije kojom će se pomoću optičkog prepoznavanja skenirati računi korisnika, a Web stranica će omogućiti detaljan prikaz osobnih troškova po kategorijama. Prototipni sustav ovog rada sastoji se od Web aplikacije koja je napravljena u ASP.NET Core tehnologiji te popratne Android aplikacije. U daljnjem radu objašnjen je detaljan koncept rada i komunikacija između dviju platformi. Izložen je cjelokupan postupak izrade Web aplikacije koji se sastoji od alata za manipulaciju i prikaz osobnih troškova. Prikazan je i detaljan opis programskog kôda koji objašnjava način optičkog prepoznavanja slike tj. računa u Android aplikaciji. Korišteni alati i razvojne okoline ovoga rada su Microsoft Visual Studio Community 2017 (verzija 15.5.2), Android Studio (verzija 2.3.3) i phpmyadmin (verzija 4.7.4). Međimursko Veleučilište u Čakovcu 5

2. TEHNOLOGIJE U ovom dijelu su objašnjene tehnologije i razvojni alati u izradi ovog rada. Cilj je bio koristiti tehnologije koje pružaju jednostavnu i brzu nadogradnju u budućim verzijama sustava. Kako bi pojedine tehnologije bile više dinamičnije korišteni su drugi servisi umjesto već ugrađenih radi održivosti, jednostavnosti i razvoja. 2.1. ASP.NET Core Microsoft-ova tehnologija ASP (Active Server Pages) je način za izradu interaktivnih Web aplikacija koja je bazirana na.net Framework-u. Prvi put je predstavljen 2000. godine pod nazivom ASP.NET 1.0 (tada ASP+). Okvir (eng. Framework).NET je besplatna platforma otvorenog kôda (eng. Open source) koja podržava višeplatformski (eng. Cross-platform) način razvoja aplikacija. Jezici koji su podržani za razvoj aplikacija u.net Framework-u jesu F#, Visual Basic te C# u kojem je izrađena Web aplikacija prototipnog sustava. [1] U ASP.NET je uvedena posebna verzija pod nazivom Core koja omogućava rad Web aplikacija na više različitim platformama kao što su Windows, Linux i MacOs platforme. Verzija Core koristi tzv. Kestrel za web poslužitelja (eng. Server) koji omogućava rad na više platformi te pruža asinkrone pozive za ulaz i izlaz podataka, a sastavni je dio svakog ASP.NET Core projekta kao dio osnovnog predloška. Sastavljena je od Core CLR 1 objektno orijentiranog mehanizma unutar.net okvira, kompleta SDK 2 alata te prevoditelja. [2] Unutar ove Web aplikacije korišten je MVC 3 obrazac čija je svrha razdvajanje pojedinih dijelova aplikacije u više zasebnih komponenti. Unutar Modela su pohranjene strukture i informacije koje se potom obrađuju u upravitelju (eng. Controller) te prikazuju u pogledu (eng. View) 1 CLR Common Language Runtime 2 SDK Software Development Kit 3 MVC Model View Controller Međimursko Veleučilište u Čakovcu 6

2.2. Android platforma Android je danas najzastupljeniji operacijski sustav koji je osnovan od strane Google-a. Koriste ga pametni mobilni uređaji, tableti, televizori, pametni satovi i automobili i brojni drugi. Arhitektura Android OS-a sastoji se od šest slojeva (Slika 1.) gdje je osnova jezgra Linux-a 2.6 koji je napisan pomoću C/C++ programskog jezika. Slika 1: Arhitektura Android operativnog sustava. Izvor: https://developer.android.com/guide/platform/ Međimursko Veleučilište u Čakovcu 7

Potom slijedi HAL 4 sloj koji povezuje hardver (kamera, bluetooth, senzori ) sa daljnjim korištenjem na većim razinama. Treći sloj predstavlja knjižnice koje su potrebna veza između slojeva kako bi omogućile rad i komunikaciju između npr. ART 5 i HAL. Četvrti sloj se odnosi na Android Runtime ili ART koji prevodi Java programski kod u bajtkod. Sljedeći sloj Java API Framework nam pruža alate i mogućnosti za izradu aplikacija. Zadnji sloj čine System Apps ili sistemske aplikacije koje dolaze kao osnovne ugrađene aplikacije unutar samog Android sustava. [3] U tablici 1. su prikazane verzije Android OS-a tijekom godina s popratnim API verzijama.[4] Tablica 1. Popis Android verzija Cupcake Donut Eclair Froyo Gingerbread Honeycomb 1.5 1.6 2.0-2.1 2.2.x 2.3-2.3.7 3.0-3.2.x API level 3 API level 4 API level 5,6,7 API level 8 API level 9,10 API level 11-13 Ice Cream Jelly Bean KitKat Lollipop Marshmallow Nougat Sandwich 4.1-4.3.x 4.4-4.4.4 5.0-5.1 6.0 7.0-7.1 4.0.1-4.0.4 API level API level 19 API level API level 23 API level 25 API level 16,17,18 21,22 14, 15 Oreo 8.0.0-8.1.0 API level 26,27 2.3. Baza podataka MySql MySql predstavlja bazu otvorenog kôda koja služi za pohranu podataka. Izvršava se na poslužitelju gdje koristi svim korisnicima. Baze su relacijskog modela što znači da su podatci pohranjeni u odvojenim tablicama umjesto na jednom mjestu kako bi se dobilo vrijeme na brzini obrađivanja i pretraživanja. Zbog svojih prednosti MySql baza je jedna od najkorištenijih baza u svakodnevnici te ju koriste velike kompanije kao što su Youtube, Facebook, GitHub, ebay, Twitter i brojne druge. [5] 4 HAL Hardware Abstraction Layer 5 ART Android RunTime Međimursko Veleučilište u Čakovcu 8

3. RAZVOJNE OKOLINE Razvojne okoline su alati odnosno programi koji nam omogućavaju brzo i učinkovito pisanje i ispravljanje programskog kôda. Razvojna okolina se obično sastoji od dijela za pisanje programskog koda te ispravljanje pogrešaka. Neke razvojne okoline se sastoje od kompajlera, prevoditelja, te su često svi ti alati integrirani u cjelinu u okviru razvojne okoline. U ovome radu za izradu Web stranice korišten je Visual Studio, a za izradu mobilne Android aplikacije Android Studio. Za upravljanje bazom korišten je phpmyadmin. 3.1 Visual Studio Visual Studio je Microsoft-ova više platformska razvojna okolina koja pruža široki spektar razvoja od desktop preko web do Android aplikacija sa ugrađenim kompajlerom i prevoditeljem. Sučelje za uređivanje programskog kôda podržava InteliSense za automatsko završavanje koda. Ugrađen je i alat za dizajnerski pregled prilikom izrade Web stranica i s dodatnim proširenjima Android aplikacija. [6] Slika 2: Visual Studio - početna stranica. Izvor: Autor Međimursko Veleučilište u Čakovcu 9

3.1.1 NuGet NuGet je alat za upravljanje paketa.net platforme koja obično dolazi u obliku proširenja. Jednom preuzeto NuGet sučelje korisniku pruža mogućnost izrade i preuzimanja ostalih paketa vezanih za određeni projekt. Njegova baza je centralo skladište (eng. Repository) svih paketa autora i potrošača. [7] Slika 3: NuGet logo Izvor:https://raw.githubusercontent.com/NuGet/Home/dev/resources/nuget.png 3.2 Android Studio Android Studio je među boljim besplatnim alatima koje pruža Google za razvoj i distribuciju Android aplikacija. Temelji se na Intellij IDEA razvojnom sustavu. Osim pisanja kôda pruža brojne alate i predloške koji olakšavaju i ubrzavaju cijeli proces izrade. Android aktivnosti su osnovni dijelovi aplikacije stoga aplikacija nema definiranu main() funkciju. Slika 4: Android Studio. Izvor: Autor Međimursko Veleučilište u Čakovcu 10

Sustav pokreće aplikaciju s unaprijed definiranom aktivnosti pokretača koja predstavlja ulaznu točku aplikacije. U Android Studiu glavna logika se piše u Javi. Resursi se obično temelje na XML-u kao što su vektorski crteži te Groovy/Gradle datoteke za izgradnju. [8] 4. POSTUPAK RADA U slijedećim odlomcima prikazani su postupci izrade Web aplikacije uz detaljan prikaz programskog kôda. 4.1. BAZA PODATAKA Baza se sastoji od triju tablica koje opisuju korisnika, račune i kategorije. Svaki korisnik unutar baze može imati više računa i vlastitih definiranih kategorija gdje jedan račun može imati samo jednu kategoriju. (Slika 5.) Slika 5: Struktura baze podataka. Izvor: Autor Međimursko Veleučilište u Čakovcu 11

4.2. IZRADA WEB APLIKACIJE ASP.NET Core U ovom dijelu objasnit će se način i korištene tehnologije u procesu izrade Web stranice. Nadalje, prikazat će se detaljan postupak izrade sustava za kategorizaciju troškova. 4.2.1. Spajanje na bazu Umjesto prvotne ugrađene postavke za rad s bazom MS SQL korištena je baza MySql zbog određenih kompatibilnosti. Potrebne modifikacije za uspostavu kontakta s bazom uključuju dodavanje paketa Pomelo.EntityFrameworkCore.MySql putem Nuget-a koji je temeljen na osnovi MySqlConnector-a. (Slika 6.) Slika 6: Popis paketa dodanih putem NuGeta. Izvor: Autor Pomelo omogućava uporabu Entity Framework Core ORM 6 sa MySql-om gdje su asinkrone funkcije za ulaz/izlaz svedene na najnižu razinu. Kako bi se spojili s bazom potrebno je definirati opće podatke o bazi unutar konteksta u modelu prilikom poziva metode kao što je navedeno dolje. (Kod 1.) 6 ORM Object Relational Mapping Međimursko Veleučilište u Čakovcu 12

Kod 1. Konfiguracija podataka za spajanje na bazu protected override void OnConfiguring(DbContextOptionsBuilder optionsbuilder) =>optionsbuilder.usemysql(@"server:{ime_servera}; database:{ime_baze}; uid:{korisnik}; pwd:{lozinka}"); Entity Framework je alat koji koristi objekto-relacijsko mapiranje za manipulaciju podataka. Uz Entity Framework korišten je Database First model za pristup bazi. 4.2.2. Rad s bazom Rad s bazom i Entity Framework-om se vrši unutar DbSet-a koji sadrži sve n-torke iz baze podataka. Prilikom deklaracije DbSeta definiran je model kojeg on sadrži. (Kod 2.) Kod 2. DbSet korisnika public DbSet<Korisnik> korisnici { get; set; } Čitanje iz baze odnosno iz DbSeta može se izvršiti pomoću namespace-a Linq, razreda Enumerable i metodama traženja kao što su.where(),.singleordefault() i ostale te unutar njih lambda izraz. (Kod 3.) Kod 3. Primjer čitanja iz baze var korisnik = baza.korisnici.singleordefault(k => k.id == id); Pisanje ili ubacivanje sadržaja u bazu se sastoji od poziva na kontekst baze pomoću metode Add() proslijeđenim objektom koji se ubacuje u bazu. Nakon ubacivanja potrebno je pozvati iz razreda konteksta metodu SaveChanges() kako bi se uspješno izvršila. (Kod 4.) Kod 4. Ubacivanje sadržaja u bazu // Proslijeđeni parametar kategorija je objekt razreda Kategorija baza.kategorije.add(kategorija); baza.savechanges(); Međimursko Veleučilište u Čakovcu 13

Brisanje iz baze podataka zahtjeva traženje instance iz baze te njeno ponovno učitavanje kako bi se moglo obrisati. Vrši se pozivom iz razreda konteksta na DbSet-u metodom Remove() te s parametrima instance objekta kojeg se želi obrisati. (Kod 5.) Kod 5. Brisanje sadržaja iz baze // Proslijeđeni parametar kategorija je objekt razreda Kategorija baza.kategorije.remove(kategorija); baza.savechanges(); 4.2.3 Registracija i prijava u sustav Izrađen pogled za registraciju sastoji se od ponuđenih polja za unos osnovnih podataka. (Slika 7.) Kako bi korisnički račun mogao biti izrađen potreban je pomoćni model (eng. ViewModel) koji odgovara ponuđenim poljima za registraciju, a kasnije se popunjava glavni razred koji opisuje korisnika. Slika 7: Registracija. Izvor: Autor Pomoćni modeli su organizirani na jednom mjestu pod nazivom ViewModeli gdje se nalazi RegistracijaViewModel (Slika 8.). Unutar tog razreda se nalazi opis i zahtjevi komponenti. Međimursko Veleučilište u Čakovcu 14

Slika 8: Registracija ViewModel. Izvor: Autor Nakon što korisnik unese svoje podatke, u upravitelju se obrađuju i vrše provjere poput jedinstvenosti korisničkog imena i email-a. Nakon provjere ako je sve ispravno uneseno poziva se pomoćni razred te putem parametara se prenose osnovne informacije (Slika 9). Slika 9: Upravitelj za registraciju. Izvor: Autor U pomoćnom razredu se popunjava ostatak podataka vezano uz korisnika, kriptira lozinka i upisuje u bazu.(slika 10.) Međimursko Veleučilište u Čakovcu 15

Slika 10: Dodavanje korisnika u bazu. Izvor: Autor Kao što vidimo na slici 10. prije ubacivanja u bazu generiraju se dva ključa generirana pozivom metode NewGuid() iz Guid razreda. Nadalje, oni će biti korišteni za verifikaciju email adrese i tokena za pristup Android aplikaciji. Također poziva se metoda koja kao parametar prima karaktere lozinke korisnika te vraća kriptiranu sumu poslanog parametra. (Slika 11.) Slika 11: Kriptiranje lozinke Izvor: Autor Kriptiranje lozinke se vrši putem implementacije razreda Rfc2898DeriveBytes koja kao parametre uzima ne-kriptiranu lozinku, sol (eng. salt) 7 te broj iteracija. Kao rezultat vraća generirane bajt ključeve. Zatim završni koraci su izgradnja zadnjeg polja bajtova pomoću spajanja vrijednosti soli i generiranih ključeva koja su potom pretvorena u kriptiranu lozinku sastavljenu od brojeva, slova i znakova. Nakon što se korisnik registrira, na navedenu mail adresu mu je poslan aktivacijski email sa poveznicom koja sadrži 7 Salt Nasumičan niz podataka koji služi kao dodatak u kriptiranju lozinke Međimursko Veleučilište u Čakovcu 16

generirani ključ te koji isti identificira korisnika i pomoću njega potvrđuje svoju navedenu email adresu. Kako bi prilagodili aplikaciju da radi sa modificiranim sustavom za prijavu i vođenja informacija o prijavljenom korisniku (eng. Identity) najprije se dodaje Microsoft-ov Identity namijenjen za Core verziju aplikacije putem NuGet-a. Prijava se vrši putem kolačića (eng. Cookies) kako bi mogli definirati vlastite podatke o korisniku umjesto ugrađenog sustava koji sadrži previše nepotrebnih informacija za ovaj projekt. Stoga još jedan paket koji omogućava prijavu putem kolačića mora biti dodan putem NuGet-a. (Slika 12.) Slika 12: Dodani paketi Identity-a i prijave putem kolačića. Izvor: Autor Potom slijedi izrada pogleda i modela za prijavu koji se sastoji od korisničkog imena i lozinke (Slika 13.). Slika 13: Prijava u sustav. Izvor: Autor Kako bi prilagodili Web aplikaciju da koristi prijavu potrebno je konfigurirati datoteku Startup.cs. Glavno uključenje je pod metodom Configure() (Kod 5.). Kod 6. Dodavanje svojstva autentifikacije app.useauthentication(); Međimursko Veleučilište u Čakovcu 17

Zatim slijedi specificiranje načina prijave, u ovome slučaju pomoću kolačića. U datoteci Startup.cs pod metodom ConfigureServices() se dodaje shema korištenja autentifikacije putem kolačića. (Kod 6.) Kod 7. Konfiguriranje sheme autentifikacije putem kolačića services.addauthentication(cookieauthenticationdefaults.authenti cationscheme).addcookie(options => { options.loginpath = "/Korisnici/Prijava/"; }); Prilikom prijave upravitelj prima popunjen model prijave te započinje proces autentifikacije koja se vrši putem poziva pomoćnog razreda za provjeru unesenih podataka u bazi. U pomoćnom razredu su metode za pronalaženje korisnika (Slika 14.) te jednom pronađen, za kontrolu kriptirane lozinke. Slika 14: Metoda za pronalaženje korisnika. Izvor: Autor Metoda za provjeru lozinke uzima parametre kriptirane lozinke pronađene iz baze te nekriptiranu koju je unio korisnik koja se potom ponovno kriptira istim načinom kao i kod registracije. Zatim usporedbom polja bajtova te dvije lozinke možemo utvrditi je li korisnik unio ispravnu lozinku (Slika 15.). Međimursko Veleučilište u Čakovcu 18

Slika 15: Provjera kriptirane lozinke. Izvor: Autor Nakon što smo utvrdili da je korisnik unio ispravne podatke, učitavamo njegove osobne podatke iz baze te ih spremamo u zahtjeve (eng. Claim) koji rade na principu ime i vrijednost koji služe za daljnju autorizaciju i prikaz osobnih informacija. (Slika 16.). Novi zahtjevi se popunjavaju u listu koja sadrži popis svih zahtjeva. Jedan zahtjev prima dva parametra od kojih je prvi tip zahtjeva (eng. ClaimType) koji može biti ponuđen (ugrađen) ili definiran ručno, zadnji parametar je vrijednost. Međimursko Veleučilište u Čakovcu 19

Slika 16: Popunjavanje zahtjeva prijavljenog korisnika. Izvor: Autor Kako je metoda za prijavu asinkrona, prije preusmjeravanja se čeka završno postavljanje zahtjeva u uporabu. Potom se preusmjerava na naslovnu stranicu prijavljenog korisnika koja mu nudi prikaz njegovih računa, postavki i kontrola. Jednom prijavljeni korisnik dijeli se na običnog korisnika i administratora. (Slika 17.) Međimursko Veleučilište u Čakovcu 20

Slika 17: Slučajevi korištenja za korisnika i administratora. Izvor: Autor 4.2.4. Kontrola računa Nakon prijave u sustav, korisnik dobiva pristup svojoj upravljačkoj ploči za upravljanje računa. Sastoji se od prikaza računa gdje je moguće filtrirati po mjesecu ili prikaz svih, dodavati nove ili brisati račune i kategorije. S lijeve strane je popis svih kategorija i mogućnosti dostupne korisniku zajedno s prikazom osnovnih informacija. (Slika 18.) Međimursko Veleučilište u Čakovcu 21

Slika 18: Bočni izbornik korisnika. Izvor: Autor Početni pogled nakon prijave je prikaz računa za tekući mjesec. U padajućem izborniku se može izabrati mjesec za koji se želi pregledati ispis računa. Dostupni grafovi prikazuju potrošnju po kategorijama te usporedbu s prihodom. (Slika 19.) Prikazivanje grafova je postignuto pomoću JavaScript okvira (eng. Framework) Chart.js. Slika 19: Glavna stranica za prikazivanje troškova. Izvor: Autor U primjeru na slici 16. su korišteni grafovi tipa tzv. Doughnut i stupci. Njihovo popunjavanje započinje čitanjem iz baze kako bi dobili popis svih računa u odabranom ili tekućem mjesecu račune korisnika. (Slika 20.) Međimursko Veleučilište u Čakovcu 22

Slika 20: Prosljeđivanje računa korisnika iz baze. Izvor: Autor Zatim pomoću spremnika za prijenos (eng. ViewBag) na pogled su učitani u dijelu JavaScript koda. Da bi graf bio prikazan potreban mu je HTML element pod imenom Canvas, čiji se ID prosljeđuje u JavaScript kôd. Kreiranje grafa je izvršeno stvaranjem instance razreda Chart i prosljeđivanjem parametara ID Canvas-a i opis grafa koji se želi iscrtati. U opisu grafa podatci i imena kategorija su proslijeđeni u obliku JSON polja koja se prije pretvore iz polja kreiranog u upravitelju aplikacije zaduženog za račune. (Slika 21.) Slika 21: Pretvaranje dobivenih podataka u JSON polje. Izvor: Autor Uz prikaz potrošnje dostupno je i dodavanje računa putem obrasca na kojem je moguće navesti kategoriju potrošnje, iznos računa te datum i vrijeme izdatka računa. (Slika 22.) Međimursko Veleučilište u Čakovcu 23

Slika 22: Dodavanje novog računa. Izvor: Autor U pogledu za dodavanje računa korišten je padajući izbornik za kategorije te DateTimePicker od Bootstrap-a koji nam pruža mogućnost biranja datuma i točnog vremena u satima i minutama. Za dodavanje računa je korišten pomoćni model kako bi se mogli verificirati podatci u upravitelju bez oznake korisnika koja se naknadno dodaje prije upisa u bazu. (Slika 23.) Slika 23: Dodavanje novog računa u bazu u upravitelju. Izvor: Autor Međimursko Veleučilište u Čakovcu 24

Postoje četiri osnove kategorije troškova koje su definirane u bazi te samo administrator ima ovlasti mijenjati ih. Ostale kategorije korisnik može dodavati po svojim potrebama te će one biti vidljive i dostupne za uređivanje samo njemu. Način na koji se one dodaju je sličan principu dodavanja novog računa. 4.2.5 Korisničke kontrole Registrirani korisnik ima mogućnost čitanja i izmjene svojih podataka i osobnih informacija. Pregled svojih informacija je dostupan na pogledu Profil koji također sadrži ukupan trošak i izvučene ekstreme računa. (Slika 24.) Slika 24: Prikaz pogleda "Profil". Izvor: Autor Na pogledu Profil su prikazane vrijednosti upisane u zahtjeve (eng. Claims) prilikom prijave te se dohvaćaju putem metoda koje su sastavljene u pomoćnom razredu. (Slika 25.) Kako je spomenuto, korisnik ima mogućnost mijenjanja svojih podataka. Međimursko Veleučilište u Čakovcu 25

Slika 25: Prikaz sastavljenog pogleda "Profil". Izvor: Autor Izmjena osobnih općih informacija i izmjena lozinke su u odvojenim pogledima radi sigurnosti slučajnog mijenjanja lozinke. Prilikom izmjene lozinke od korisnika se traži unos stare. 4.2.6. Administracija Radi sigurne upotrebe aplikacije uvedena je i administracija koja ima uvid i potpunu kontrolu na sve račune, dodane kategorije te registrirane korisnike. To je ostvareno uvođenjem novog upravitelja na kojem imaju ovlasti samo korisnici s oznakom administratora (Kod 8.). Kod 8. Autoriziranje upravitelja za administraciju [Authorize(Roles = "Administrator")] public class AdminController : Controller U glavnom pogledu na izborniku je dodana kategorija Admin kontrole koja je vidljiva samo administratorima te su u padajućem izborniku prikazane dostupne mogućnosti. (Slika 26.) Međimursko Veleučilište u Čakovcu 26

Slika 26: Izbornik i popis mogućnosti administratora. Izvor: Autor 4.3. VEZA IZMEĐU WEB STRANICE I ANDROID APLIKACIJE Kako bi Android aplikacija imala pristup bazi i njenom sadržaju koristi se Web API aplikacije. U Web aplikaciji je napravljen upravitelj sa metodama koje primaju POST zahtjeve poslane iz Android aplikacije. Nakon obrade podataka rezultat se sastavlja u JSON polje (Kod 9.) koje potom aplikacija preuzme i nastavlja sa svojom aktivnosti.(slika 27.) Kod 9. Popunjavanje JSON polja kod prijave u slučaju neispravnih podataka var rezultat = JsonConvert.SerializeObject(new { code = "403" }); return Content(rezultat.ToString()); Međimursko Veleučilište u Čakovcu 27

Slika 27: Metoda za prijavu putem Android aplikacije. Izvor: Autor Nadalje, sljedeća komunikacija uključuje generirani ključ radi sigurnosnih mjera za mijenjanje podataka korisnika u bazi. 4.4. ANDROID APLIKACIJA Android aplikacija je dio rada koji daje fleksibilnost i lakoću korištenja za dodavanje novih računa. Unutar aplikacije je dostupno skeniranje računa putem optičkog prepoznavanja teksta, dodavanje novih kategorija te prijava i registracija. Kada korisnik otvori aplikaciju pokaže mu se prikaz (aktivnost) za prijavu te ukoliko nema račun, ima mogućnost registracije (Slika 28.). Međimursko Veleučilište u Čakovcu 28

Slika 28: Početni zaslon aplikacije. Izvor: Autor Kada korisnik unese svoje podatke, poziva se nova aktivnost koja asinkrono sastavlja POST zahtjev putem razreda HttpURLConnection, gdje se pomoću metode šalje na link Web API-a pomoću još jednog razreda BufferedWriter. Nakon što je uspostavljena veza te poslužitelj obradi podatke, aplikacija čita rezultat te sprema i sastavlja niz karaktera (eng. string). Potom se u metodi onpostexecute() niz karaktera pretvara u JSON objekt i vrši se provjera rezultata po status kodu kojeg je dostavljen. (Slika 29) Međimursko Veleučilište u Čakovcu 29

Slika 29: Poziv na Web stranicu sa zahtjevom prijave. Izvor Autor Na sličan način se vrši i registracija koja za razliku od prijave ime informacije potrebne za stvaranje računa (Slika 30). Kada se korisnik registrira stiže mu potvrda o registraciji te može nastaviti na prijavu ili će mu biti prikazana pogreška prilikom ovjere podataka. Slika 30 Prikaz aktivnosti za registraciju. Izvor: Autor Međimursko Veleučilište u Čakovcu 30

Nakon što se korisnik uspješno prijavi prebačen je na glavnu stranicu gdje su prikazani njegovi osobni podatci. Sve daljnje akcije su dostupne u bočnom izborniku (Slika 31). Slika 31: Bočni izbornik dostupnih mogućnosti. Izvor: Autor Odabirom aktivnosti skeniranja novog računa korisnik je prebačen na aktivnost u kojoj se aktivira kamera. Tijekom skeniranja preporučeno je da kamera bude u fokusu na cijeli račun ili u sredini računa gdje je vidljiv ukupni iznos računa. Tijekom skeniranja prikazano je koliko je skenirano mogućih cijena. Prepoznavanje uzima u obzir sve brojeve koji su fokusirani na sredini računa te je velika vjerojatnost da ukupna cijena ne bude prepoznata iz prvog pokušaja. Međimursko Veleučilište u Čakovcu 31

Slika 32: Spajanje kamere sa aktivnim prikazom na zaslonu. Izvor: Autor Prepoznavanje teksta je izvršeno putem razreda iz Google-ovog repozitorija TextRecognizer koji zahtjeva dopuštenje korištenja kamere. Kada je dopušteno korištenje kamere, pokreće se TextRecognizer koji pomoću metode setprocessor skenira ulaz kamere svake dvije promijenjene sličice (eng. frame). Unutar metode za upravljanje receivedetections, obrađeni signali dobiju se putem Detector razreda u obliku polja tekst blokova. Kasnije se unutar petlje prolazi kroz svaki skenirani element te se vrši algoritam za sortiranje. (Slika 33) Međimursko Veleučilište u Čakovcu 32

Slika 33: Primjer povezivanja TextRecognizer-a na kameru. Izvor: Autor Skeniranje završava dodirom na tipku, potom je prebačen pogled na kontrolu skeniranih podataka. Kod kontrole korisniku su dani na uvid skenirani podatci. Ukoliko skenirani podatci nisu ispravni poput cijene, u padajućem izborniku mu je ponuđen niz drugih skeniranih brojeva (potencijalnih iznosa). Ako korisnik nije uspio naći traženu cijenu ili kategoriju ponuđen mu je izbor ručnog unosa računa ili ponovnog skeniranja. U slučaju da je sve ispravno, podatci se šalju putem POST zahtjeva na Web API koji obrađuje primljene podatke i sprema ih u bazu podataka te vraća status o odrađenom zadatku. (Slika 34.) Slika 34: Prikaz kontrole skeniranih podataka. Izvor: Autor Međimursko Veleučilište u Čakovcu 33

5. ZAKLJUČAK Izradom ovog prototipa prikazano je kako iskoristiti povezivanje različitih tehnologija kako bi se izgradio sustav koji nam olakšava i pomaže u praćenju osobnih troškova. Sve korištene tehnologije su izabrane radi što lakše adaptacije na nove verzije i druga okruženja. Za izradu Web stranice korišten je ASP.NET Core koji je zbog svoje arhitekture podržan na više platformi poslužitelja. Korišten je pristup baza prva (eng. Database First) sa Entity Framework-om koji se spaja na MySql bazu, kako bi se dobilo na fleksibilnosti uporabe. Autentifikacija je omogućena pomoću kolačića. Grafički prikaz računa je ostvaren sa Javascript okvirom Chart.js s kojim su računi prikazani u kategorijama sa filtriranjem po mjesečnoj bazi. Nedostatak korištenja Chart.js je u tome da postoji puno pretvaranja iz različitih tipova podataka te unatoč lijepom grafičkom prikazu, nema veliki broj dostupnih grafova. Veza između baze i Android aplikacije je ostvarena putem Web API-a koji ima ugrađene module za komunikaciju. Za optičko prepoznavanje korišten je Google repozitorij koji unatoč preciznosti skeniranja i prepoznavanja teksta ima par nedostataka poput čitanja teksta koji nisu unutar slijeda. Postoji dosta novih mogućnosti i opcija za budući razvoj sustava poput integracije sa društvenim mrežama kako bi se korisnici mogli prijaviti sa već postojećim računima, bolji, različitiji i dinamičniji sustav za grafičko prikazivanje računa. Jedna od potencijalnih nadogradnji bila bi implementacija sustava za naprednije prepoznavanje kategorija i ukupnih iznosa. Međimursko Veleučilište u Čakovcu 34

6. POPIS LITERATURE [1] ASP.NET Core, Roth D.; Anderson R.; Luttin S.; https://docs.microsoft.com/enus/aspnet/core/ (17.02.2018) [2] Introduction to Kestrel web server implementation in ASP.NET Core, Dykstra T.; Ross C.; Halter S. https://docs.microsoft.com/enus/aspnet/core/fundamentals/servers /kestrel?tabs=aspnetcore2x (17.02.2018) [3] Platform Architecutre, https://developer.android.com/guide/platform/index.html (17.02.2018) [4] The history of Android OS: its name, origin and more, Callaham J. https://www.androidauthority.com/history-android-os-name-789433/ (17.02.2018) [5] Kofler M.; (2005). The Definitive guide to MySQL5. 3. izd. New York, Apress [6] Visual Studio IDE overview, https://docs.microsoft.com/en us/visualstudio/ide/visual-studio-ide (18.02.2018) [7] An introduction to NuGet https://docs.microsoft.com/en-us/nuget/what-is-nuget (18.02.2018) [8] Yener M.; Dundar D. (2017). Ekspert Android Studio. Zagreb, Dobar plan Međimursko Veleučilište u Čakovcu 35

PRILOZI Popis slika Slika 1: Arhitektura Android operativnog sustava. Izvor: https://developer.android.com/guide/platform/... 7 Slika 2: Visual Studio - početna stranica. Izvor: Autor... 9 Slika 3: NuGet logo Izvor:https://raw.githubusercontent.com/NuGet/Home/dev/resources/nuget.png... 10 Slika 4: Android Studio. Izvor: Autor... 10 Slika 5: Struktura baze podataka. Izvor: Autor... 11 Slika 6: Popis paketa dodanih putem NuGeta. Izvor: Autor... 12 Slika 7: Registracija. Izvor: Autor... 14 Slika 8: Registracija ViewModel. Izvor: Autor... 15 Slika 9: Upravitelj za registraciju. Izvor: Autor... 15 Slika 10: Dodavanje korisnika u bazu. Izvor: Autor... 16 Slika 11: Kriptiranje lozinke Izvor: Autor... 16 Slika 12: Dodani paketi Identity-a i prijave putem kolačića. Izvor: Autor... 17 Slika 13: Prijava u sustav. Izvor: Autor... 17 Slika 14: Metoda za pronalaženje korisnika. Izvor: Autor... 18 Slika 15: Provjera kriptirane lozinke. Izvor: Autor... 19 Slika 16: Popunjavanje zahtjeva prijavljenog korisnika. Izvor: Autor... 20 Slika 17: Slučajevi korištenja za korisnika i administratora. Izvor: Autor... 21 Slika 18: Bočni izbornik korisnika. Izvor: Autor... 22 Slika 19: Glavna stranica za prikazivanje troškova. Izvor: Autor... 22 Slika 20: Prosljeđivanje računa korisnika iz baze. Izvor: Autor... 23 Slika 21: Pretvaranje dobivenih podataka u JSON polje. Izvor: Autor... 23 Slika 22: Dodavanje novog računa. Izvor: Autor... 24 Slika 23: Dodavanje novog računa u bazu u upravitelju. Izvor: Autor... 24 Slika 24: Prikaz pogleda "Profil". Izvor: Autor... 25 Slika 25: Prikaz sastavljenog pogleda "Profil". Izvor: Autor... 26 Slika 26: Izbornik i popis mogućnosti administratora. Izvor: Autor... 27 Slika 27: Metoda za prijavu putem Android aplikacije. Izvor: Autor... 28 Slika 28: Početni zaslon aplikacije. Izvor: Autor... 29 Slika 29: Poziv na Web stranicu sa zahtjevom prijave. Izvor Autor... 30 Slika 30 Prikaz aktivnosti za registraciju. Izvor: Autor... 30 Slika 31: Bočni izbornik dostupnih mogućnosti. Izvor: Autor... 31 Slika 32: Spajanje kamere sa aktivnim prikazom na zaslonu. Izvor: Autor... 32 Slika 33: Primjer povezivanja TextRecognizer-a na kameru. Izvor: Autor... 33 Slika 34: Prikaz kontrole skeniranih podataka. Izvor: Autor... 33 Međimursko Veleučilište u Čakovcu 36

Popis kôdova Kod 1. Konfiguracija podataka za spajanje na bazu.11 Kod 2. DbSet korisnika 12 Kod 3. Primjer čitanja iz baze...12 Kod 4. Ubacivanje sadržaja u bazu..12 Kod 5. Brisanje sadržaja iz baze...12 Kod 6. Dodavanje svojstva autentifikacije...16 Kod 7. Konfiguriranje sheme autentifikacije putem kolačića..17 Kod 8. Autoriziranje upravitelja za administraciju...24 Kod 9. Popunjavanje JSON polja kod prijave u slučaju neispravnih podataka.25 Popis tablica Tablica 1. Popis Android verzija.7 Međimursko Veleučilište u Čakovcu 37