Download as pdf or txt
Download as pdf or txt
You are on page 1of 59

Univerzitet u Novom Sadu

Tehnički fakultet »Mihajlo Pupin«


Zrenjanin

DIPLOMSKI RAD

Tema: Razvoj višeslojne veb aplikacije za evidenciju gostiju


hotela
Development n-tier web application for hotel guests records

Mentor: doc.dr.Ljubica Kazi Student: Stefan Tomić SI 1/15


Smer: Softversko Inženjerstvo

Zrenjanin, 2019.
Sadržaj:
1.Uvod ........................................................................................................................................1
2.Teorijske osnove ......................................................................................................................2
2.1 Razvoj kroz istoriju i primene standarda za veb aplikacije .................................................2
2.2 Arhitektura softvera ...........................................................................................................5
2.3 Višeslojne softverske arhitekture .......................................................................................7
2.4 MVC ............................................................................................................................... 10
3.Analiza semantičke oblasti ..................................................................................................... 12
4.Pregled postojećih rešenja ...................................................................................................... 15
4.1 Trivago ............................................................................................................................ 15
4.2 Booking ........................................................................................................................... 16
4.3 Expedia group ................................................................................................................. 17
4.4 Trip advisor ..................................................................................................................... 19
5.Opis korišćene tehnologije ..................................................................................................... 20
5.1 Visual Studio kao programsko razvojno okruženje .......................................................... 20
5.2 Tehnologija ASP.Net ....................................................................................................... 21
5.3 MVC u okviru Visual Studio-a ........................................................................................ 22
5.4 Xampp paket .................................................................................................................. 22
6.Realizovani primer ................................................................................................................. 24
6.1 Specifikacija zahteva ....................................................................................................... 24
6.2 Model opšteg dizajna softvera ......................................................................................... 26
6.2.1 Model poslovnih procesa .......................................................................................... 26
6.2.2 Use case diagram ...................................................................................................... 27
6.2.3 Dijagram komponenti ............................................................................................... 30
6.2.4 Dijagram razmeštaja ................................................................................................. 31
6.3 Korisničko upustvo.......................................................................................................... 32
6.4 Opis implementacije ........................................................................................................ 39
6.4.1 Plan i opis implementiranih elemenata višeslojne aplikacije ...................................... 39
6.4.2 SQL skripta i šeme baze podataka ............................................................................. 40
6.4.3 Model klase podataka ............................................................................................... 43
6.4.4 Klase repository ........................................................................................................ 43
6.4.5 Klasa kontroler ......................................................................................................... 45
6.4.6 Izgled korisničkog dela aplikacije ............................................................................. 48
7. Zaključak .............................................................................................................................. 54
8.Literatura ............................................................................................................................... 55
Lista Slika ................................................................................................................................. 56
1.Uvod
Živimo u savremenom dobu koje se drugačije naziva i informatičko doba jer preovladavaju
računari,pametni telefoni,pametni televizori.Ako pogledamo razvoj informatičkih tehnologija od
vremena kada je nastao prvi računar pa do sada beležimo značajan porast upotrebe i ekspanziju
tokom 90-ih godina prošlog veka kada računari postaju sve bliži ljudima i programi postaju lakši
za upotrebu uz pojavu grafičkog korisničkog interfejsa.

Internet se pojavljuje 1969. godine i bio je prvo vezan za upotrebu u vojsci .Internet kao globalna
mreža pojavljuje se 90-ih godina i postaje dostupan ljudima.Kada je postao dostupan ljudima kao
dial up verzija nije bio toliko popularan.Međutim ekspanziju internet doživljava 2008 godine kada
je predstavljen javnosti brzi internet i od tada se beleži značajan broj porasta korisnika i pisanja
programa koji su vezani za internet i njegovo korišćenje poznatiji kao veb aplikacija.

Danas je život čoveka potpuno nezamisliv bez upotrebe interneta.Pa je ova veb aplikacija vezana
za korišćenje interneta i potpuna zavisna od njega.Pošto ljudi sve više provode vremena na
internetu i njegovo korišćenje je vezano za online trgovinu,dopisivanje i druge upotrebe.Veb
aplikacija je napravljena kako bi ljudima omogućila i olakšala rezervisanje sobe ljudima i uštedila
im vreme jer ne moraju da odlaze do hotela i čekaju da se oslobodi veza telefonom da zakžu sobu
ili apartman.

Glavni problem prilikom izrade ove aplikacije jeste identifikovanje gosta i znati da je baš on
rezervisao sobu da ne dođe do zabune ili piklapanja rezervacije gosta.Posebno je važno analizarti
profile korisnika i staviti jednistvenu identifikaciju tako da ne može doći do zabune ili da softver
napravi nekakvu neočekivanu grešku.

Diplomski rad se sastoji iz teroijskog istraživanja problematike i razvoja veb aplikacija ,višeslojne
arhitekture i servisno orjentisane arhitekture.Praktičan primer koji ilustruje primenu primenu
navedenih koncepata realizovan je na primeru veb aplikacija kao što je booking,trivago ,itd.Ove
aplikacije se koriste za rezervsanje sobe u hotelima kao i pregled soba koje su slobodne.

1
2.Teorijske osnove

2.1 Razvoj kroz istoriju i primene standarda za veb aplikacije

“Veb aplikacije kao što to ime kaže ,to su aplikacije na vebu ,odnosno napredna veb rešenja kojima
se pristupa iz veb browsera (Chrome,Safari,Firefox…) i koja nisu kreirana ni na jednoj postojećoj
platformi(eng. custom website development).Kompletan kod,sve opcije i mogućnosti su razvijene
od počrtka i kao takve u potpunosti su prilagođene vašim potrebama”[1].
“Glavna tehnologija za funkcionisanje veb aplikacija jeste internet.Internet je mreža koja raste iz
dana u dan,rast interneta se može uporediti sa rastom korena trave ili rastom korena nekog
drveta.Veb aplikacija funkcioniše na vrlo jedan jedinstveni način potrebno je samo da vaš računar
povežete na internet sada da li ćete povezati vaš računar preko bežićnog interneta ili preko kabla
to je na vama.Kompijuter povezan na internet pokreće Web server,bilo bi to sve što je potrebno za
serviranje dokumenata.“[2]
Često se može čuti danas da se pojmovi kao što su veb sajt i veb aplikacija mešaju jer na neki način
običnim ljudima nije jasna razlika zbog toga što veb aplikacija i veb sajt izgledaju slično na prvi
pogled ali kada se uđe u tematiku i razumevanja pozadinskih procesa.Naime veb sajt se satoji od
skup veb strana koje su povezane hiperlinkom.Veb strana predstavlja deo sajta koji je pisan HTML
jezikom i ukrašen CSS jezikom.Struktura veb sajta se može videti na slici 1.

Slika 1. Arhitektura Veb sajta[1]

2
Kada se među programerima spomene izraz veb aplikacija to podrazumeva upotrebu i kombinaciju
veb stranica i protokola koji su karateristični za funkcionisanje interneta HTTP protokol ,protokol
za slanje poruka FTP .Međutim ljudi koji kreiraju veb aplikaciju moraju da kombiniju veb sajtove
i HTTP protokole koji su od velike i ključne zavisnosti za funkcionisanje veb aplikacije.Oni takođe
moraju da razumeju druge jezike,protokole i da ukompunuju da sve funkcioniše bez greške.
„Moraju biti upoznati sa JavaScript-om,XML-om,relacionim bazama podataka,grafički dizajn i
multimedija.Oni takođe moraju biti upoznati sa funkcionisanjem pozadinske arhitekture.Retka je
osoba među programerima koja ne razume kreiranje veb sajta,dizajniranje grafike i razumevanje
programa koji vrše transakcije i e-trgovinu.“[2]
Kada se pomisli na pojam veb aplikacija i njenog kreiranja obično se misli na PHP jezik ali danas
to nije slučaj.Danas imamo jezike koji su u potpunosti kompitabilni za razvoj veb aplikacija a to
su C# koji koristi ASP tehnologiju i Java sa tehnologijom Enterprise Edition na programeru je da
se odluči koju tehnologiju koristi.

Slika 2.Izgled funkcionisanja veb aplikcije[2]


Ukoliko želimo da razumemo kako funkcioniše veb aplikacija potrebno je da pogledate sliku 2.
Na njoj je prikazana klijentska strana koja komunicira sa veb serverom tako što veb browser šalje
zahteve pomoću HTTP protokola.Međutim nedostaje još jedan deo na slici 2 a to je Aplikacioni
server koji se koristio u prošlosti i on je primap zahteve od veb servera i slao ih u bazu.Danas je
sve više korišćeniji RESTFull servis vrsta može se reći veb servera koji kao Aplikacioni server
koristi metode GET,POST,PUT,DELETE.Na kraju kao krajnji rezultat funkcionisanja je da klijent
koji traži da se ispuni njegov zahtev ne zna da postoji ovoliki broj procesa i da sve funkcioniše
brzo i efektivno pa na primer ukoliko zatraži neku informaciju ista mu bude prikazana iz baze
podataka.

3
Da bi se lakše razumeo pojam veb aplikacije može se objasniti slikovito na sledećim
primerima.Danas se može s’parvom reći da su ovo neke od najpoznatijih veb aplikacija koje se
koriste danas i koje su najzastupljenije i najpoznatije korisnicima:

• CMS (Content Management Platform) je pozanata platforma tako što olakšava korisnicima
da uz što manje napore kreiraju svoje veb sajtove.Najpoznatije CMS platforme su Joomla
i Wordpress.Na slici 3 se može videti izgled CMS platforme Wordpressa.

Slika 3.Izgled CMS platforme Wordpress[3]

• Newsletter sistem je aplikacija koja omogućava veliki broj slanja poruka i mejlova krajnjim
kupcima i korisnicima.
• B2B(BussinesToBussines) sistem je sistem koji omogućava kompanijama da obavljaju
svoje poslovne aktivnosti
• B2C(BussinesToCustomer) sistem je sistem koji omogućava kompanijama da prodaju
svoju robu i usluge krajnjim potrošačima

4
2.2 Arhitektura softvera

“Softverski sistemi su napravljeni da zadovolje poslovne ciljeve organizacije.Arhitektura je često


most između tih(često apstraktnih)poslovnih ciljeva i konačnog (konkretnog) rezultujećeg
sistema.Dok put od abstranih ciljeva do konretnih sistema može biti složen dobra vest je da se
softverske arhitekture mogu projektovati,analizirati,dokumentovati i implementiratikoristeći
poznate tehnike koje će podržati potizanje poslovnih ciljeva misije“[3]
Softverski sistemi se prave parcijalno što predstavlja osnovni koncept softveske arhitekture.
Sigurno se pitate kako to parcijalno kada softver koji se isporučuje izgleda kao celina ? To je zato
što na jednom softverskom projektu radi skup programera i svaki od tih programera ima svoje
zadatke iz određene oblasti softvera koja mu je dodeljena za razvoj.Sam način razvijanja softvera
po parcijalnom principu nam daje tu mogućnost da korisnik softvera dobija što kvalitetniji softver.

Slika 4.Primer Softverske Arhitekture[4]


Postoji mnogo definicija o softverskoj arhitekturi ali jedino ova definicija upotpunosti opisuje
softversku arhitekturu:
„Softverska arhitektura sistema je skup struktura potrebnih za razmišljanje sistema,koji se sastoji
od softverskih elemenata ,odnosa među njima i svojstva oba“[3]
Autor ove definicije nam govori da sistem razmišlja uz pomoć deova iz kojih je sastavljen odnosno
da se znak koji deo softvera je glavniji i zahtevi koje zada korisnik za izvršavanje koji imaju
pririteta u odnosu na druge komande.Da su ti delovi međusobno povezani i da jedan bez drugog
ne mogu da funkcionišu.

5
Softverski sistemi se sastoje od mnogo struktura i nema nijedne strukture da tvrdi da je to
arhitektura.Postoje tri kategorije arhitektonskih struktura koje igraju važnu ulogu u dizajniranju
,dokumentaciji i analizi softvera.

1. Prva, neke strukture su delovi sistema u koje se implementiraju manji delovi,njih nazivamo
modulima .Moduli su odgovorni za specifične operacije računara i oni obično rade u
delovima odnosno programskim timovima.TimA radi bazu podataka,TimB radi na
poslovnim pravilima,TimC radi na korisničkom interfejsu itd…U velikim projektima ovi
elemnti(moduli)podeljeni su u podgrupama.Na primer,baza podataka za velika preduzeća
planira implementaciju delova jer je toliko složena da mora da se radi u delovima.Ovo je
vrsta modula koja se zove dekompozicija.Druga vrsta strukture modula nastaje kao rezultat
objektno orjentisane analize i klase dizajna.
2. Druga kategorija predstavlja strukture koje su dinamične ,značenje ovih struktura stavlja u
centru pažnje elemente koji su u interakciju sa ostalim funkcijama koje su pokrenute u
sistemu.Pretpostavimo da se sitem izgrađuje kako bi služio.Usluge,infrastruktura je u
iteraciji sinhronizacijom i iteracijom relacija među različitim tipovima strukture cesto
korišćenih za opis sistema.
3. Treća kategorija opisuje strukture koje su zadužene za pristupanje strukturi softvera
,organizaciji ,razvoju instalaciji i izvršavanju okruženja.Na primer moduli su dodeljeni
timovima za razvoj,dodeljeni mestima u strukturi fajla za implementaciju , integraciju ,
testiranje.Komponente su raspoređene na hardveru,odakle im se naređuje
izvšavanje.Ovakve pristupe nazivamo alokacione strukture.[3]

6
2.3 Višeslojne softverske arhitekture

O softverskoj arhitekturi ste mogli pročitati u prethodnom poglavlju tako da sada ne bih opet pisao
o softverskoj arhitekturi.Arhitekturu softvera možemo podeliti prema opštim obrascima a to su:

• Jednoslojna
• Dvoslojna
• Troslojna
• SOA
Nastanak jednoslojne arhitekture se vezuje za proces automatizacije posla, početak unosa
centralnih računara kojima su mogli da pristupe veći broj korisnika istovremeno. Komunikacija u
ovoj tehnologiji, obavljala se preko “glupih” terminal, a sva obrada podataka se izvršavala od stane
centralnog računara. Veliki nedostatak ove arhitetkure se ogleda upravo u komunikaciji između
terminala i server. Server prati koji se terminal prati prilikom pritiska tastera, obrađuje datu
informaciju i šalje adekvatan odgovor. Ovu arhitetkuru je nasledila dvoslojna arhitetkura zbog dva
problema koju su se javljali korišćenjem ove arhitetkure a to su: nemogućnost korišćenja istog
koda više puta kao i nemogućnost izmene samo jednog dela koda.

Slika 5.Izgled višeslojne aplikacije po slojevima [5]


Dvoslojna arhitektura je softverska arhitektura u kojoj je prezentacioni sloj ili interfejs prikazan
na klijentu dok je sloj za rad sa bazom podataka skladišten na server. Odvajanjem ove dve
komponente na dva različita mesta dobija dvoslojnu arhitekturu. Dodavanjem dodatnih slojeva
dobijamo multi-slojnu arhitekturu.
Autori često porede ovaj tip arhitekture sa troslojnom arhitekturom zato sto pored ova dva
navedena sloja troslojna jos sadrži i business layer koji se tačno nalazi između ova dva layera.
Ovakvom podelom aplikacije dobija se na njenoj skalabilnosti odnosno performansama, takođe
uklanja se svaka mogućnost da se počini greška koja bi mogla da se desi ukoliko bi se višeslojna
arhitektura koristila u dvoslojnoj arhitkturi. Nedostatak koji poseduje ovaj tip arhitekture je

7
netolerantnija na naglo povećanje korisnika gde bi se mnogo više vremena utrošilo na upravljanje
procesima nego na rešavanje zahteva.

Slika 6.Izgled dvoslojne aplikacije[5]


Troslojna arhitektura je nastala evolucijom dvoslojne arhitekture kako bi se prevazišli nedostaci
koje je imala dvoslojna. Aplikacije su podeljene u tri nivoa koja su međusobno labavo povezana i
koja međusobno komuniciraju putem interfejsa koje poseduju. Prvi sloj je sloj koji je u
komunikaciji sa korisnikom odnosno prezentacioni sloj. On sadrži interfejs aplikacije preko kojeg
korisnik unosi zaheve za određenim informacijma ili podacima. Drugi sloj je sloj poslovne logike,
sadrži poslovnu logiku sistema. Klase sa popustima i drugim matematičkim algoritmima se nalaze
unutar ovog sloja. Treći sloj je sloj sa pristupom bazi podataka i unutar njega se nalaze svi quiry i
SQL upiti kojima se rešava komunikacija sa bazom podataka. Troslojna arhitetkura koristi server
apikacije kao posrednik između klijenta računara i server baze podataka. Tehnologije koje koristi
troslojna arhitetkura su SQL, MySQL, ORACLE, XML, web servisi itd.Izgled troslojne
arhitekture možete videti na slici 5.
Međutim što se tiče višeslojne aplikacije i njenog razvoja može se podeliti u nekoliko slojeva koji
su ključni i bitni za funkcionisanje aplikacije.

• Korisnički interfejs
• Prezentacioni sloj
• Sloj Servisa
• Sloj poslovne logike
• Sloj baze podataka
Prezentacioni sloj je prvi sloj sa kojim korisnik dolazi u dodir i to je sloj koji obrađuje podatke
unete od strane korisnika i šalje ih sloju servisa koji dalje stupa u komunikaciju sa ostalim
slojevima. Prezentacioni sloj se nadovezuje na već postojeći srednji deo aplikacije i funkcionisanje
web aplikacije bez ovog sloja ne bi bilo moguće[4]. Podelom aplikacije u podslojeve dobija se na
fleksibilnosti aplikacije i njenim performansama. Ovo se može lepo videti prilikom izmene jednog
dela koda unutar jednog sloja, proces koji će mnogo biti olakšan zbog slabe međusobne
povezanosti
Sloj servisa se obično vezuje za web servis i njegovo funkcionisanje.

8
Sloj servisa se najčešće posmatra kao deo poslovnog sloja. Moglo bi se reći da sloj servisa
predstavlja granicu između prezentacionog sloja i sloja poslovne logike. Zaduženja koja ima
servisni sloj su sledeća:

• Obrada zahteva

• Održavanje sigurnosti sistema

• Komunikacija i razdvajanje zahteva poslovnog i prezentacionog sloja

• Obaveštavanje o greškama
Web servis je aplikacija smeštena na nekom računaru odnosno serveru koja ima za zadatak da
podrži interakciju između dva računara na mreži i omogući razmenu informacija. Servisi mogu
biti privatni ali i javno dostupni. Prednosti web servisa u odnosu na web aplikaciju je u tome što
se manje troše resursi ali takođe se i manje opterećuje sama mreža, a ovo je posledica toga što web
aplikacije pored standardnog odgovora moraju da šalju i HTML formu sa opisom kako bi odgovor
trebao da izgleda. Web servisi su više zastupljeniji na manjim uređajima kao što su telefoni. Web
servisi mogu da sarađuju sa GUI aplikacijom pa se dobija kombinacija desktop i web aplikacije
gde svako od njih daje svoj doprinos. Web aplikacija joj omogućava funkcionalnost dok joj
desktop forme daju izgled odnosno interfejs. Bitno je napomenuti da se komunikacija između ova
dva dela ostavaruje JSON ili XML formatom i da je ovakva aplikacija mnogo fleksibilnija od web
aplikacije jer sam korisnik može da je prilagodi svom desktop.
Poslovni sloj je zadužen za obradu svih zahteva sistema i sadrži svu logiku i pravila koja održavaju
u celini neku Web aplikaciju. Ovaj sloj obrađuje procese, sadrži algoritme koji upravljaju
sistemom, ali je zadužen i za validaciju zahteva. Kada bismo razložili poslovni sloj, podela bi bila
sledeća:

• Objektni model koji modeluje učesnike u poslovnom procesu

• Poslovna pravila koja predstavljaju klijentsku politiku i zahteve

• Servise koji implementiraju autonomne funkcionalnosti

• Proces rada – definiše kako se vrši prenos podataka iz jednog modula u drugi
Sloj za pristup podacima komunicira sa bazom i šalje podatke aplikaciji na osnovu zahteva koje
primi. Sloj za pristup podacima predstavlja jedino mesto u sistemu gde je poznata veza sa bazom
podataka i imenima tabela. Tu je sadržan sav kod koji vrši upis, izmenu i brisanje u bazi. Sloj za
pristup podacima šalje podatke poslovnom sloju koji ne sadrži nikakve informacije o bazi, on ih
samo prosleđuje do određenih delova aplikacije.

9
2.4 MVC

Jedan od najpoznatijih paterna koji simbolizuje upotrebu višeslojne veb aplikacije je MVC
patern.Ukoliko uzmemo da vršimo analizu ove skraćenice vidimo da ona ima sledeće značenje:

• Model-zadužen za upravljanje podacima


• View-predstavlja sve ono što vidi korisnik
• Controller-predstavlja logiku aplikacije odnosno svi pozadinski procesi funkcionišu preko
kontrolera.Kontroler komunicira sa bazom podataka ,sa modelom i View-om.

Slika 7.Arhitektura MVC paterna[6]


Model definiše prostor problema sa kojim se aplikacija bavi. U aplikaciji koja je namenjena
bankama, npr., model predstavlja sve što se nalazi u okviru banke a šta aplikacija podržava. To što
su računi, transferi, krediti, kao i operacije koje se mogu korisititi kako bi se radilo sa podacima iz
modela. Te operacije mogu biti uplata sredstava na račun ili podizanje sredstava. Model je takođe
odgovoran i za očuvanje stanja i ispravnost podataka. Npr. model treba da osigura da korisnik ne
podigne više sredstava nego što poseduje, ili više sredstava nego što banka trenutno ima.

Pogledi (View) sadrže logiku koja je nophodna kako bi se elementi modela prikazali korisnicima.
Oni nisu direktno upoznati sa modelom i ne komuniciraju sa njim. Kontroleri predstavljaju most
između pogleda i modela. Zahtevi koji stižu od strane klijenata se obrađuju pomoću kontrolera.
On bira odgovarajući pogled koji će bit prikazan korisniku i ako je potrebno izvršava određenu
operaciju nad modelom

10
Kontroler je mozak veb aplikacije on je zadužen za funkcionisanje veb aplikacije.On uspostavlja
komunikaciju preko HTTP protokala sa ostalim delovima pozadinskih procesa koji se obavljaju u
aplikaciji i prikazuje ih korisiniku.Takođe kontroler povezuje poglede ondosno HTML stranice i
kada korisnik zada funkciju koju treba da izvrši aplikcaija onda se aktivira kontroler I izvršavanje
ide preko njega.

Slika 8. Funkcionisanje MVC ja [7]

11
3.Analiza semantičke oblasti

„Smatra se da termini ugostiteljstvo i hotelierstvo imaju zajednički koren.Potiču od latinske reči


hospital(hospitalis) gostinski,gostoljubiv;hospitalis gostoprimstvo;hospitari gostovati;hospitium
svratište za putnike“.[5]
„Reč „hotel“ usvojena je u velikom broju jezika širom sveta ,vuče poreklo od latinske reči
hospitalia što znači soba za goste“.[5]

Slika 9.Reč hotel[8]


Od kako je sveta i veka odnosno od pre nove ere pa do danas ljudi su putovali i bilo im je potrebno
neko mesto gde će prenoćiti i gde će biti na sigurnom bezbedni od pljačkaša.Tako da ukoliko nema
pisanih tragova ali pojavom i uređenjem prve države pojavili su se objekti koji su ljudima
garantovali sigurnost i bezebednost možda se nisu zvali u početku hoteli ,možda su se zvali nekim
drugim imenom.
Prvi pisani tragovi o hotelima se javljaju u Staroj Grčkoj i Rimskom Carstvu.U Staroj Grčkoj se
hoteli spominju kao leshe javne zgrade gde su se okupljali svi ljudi koji su želeli da čuju nešto
novo i budu u toku sa politikom toga vremena.U leshama su boravili stranci koji nisu imali
prenoćište kao i prosjaci kojima je to bilo jedino utočište.Pored usluge konaka koju je pružalo
leshe pružalo je usluge hrane,pića kao i smeštaj za životinje.U Rimskom Carstvu je bilo isto
namenjeno kao i u Staroj Grčkoj samo što se zvalo manisiones što znači boravak.
“Prvi napori za bližim određivanjem pojma hotela javili su se u prvoj polovini 20
veka.Međunarodno udruženje vlasnika hotela je 1926.godine u Budimpešti učinilo pokušaj da
uobliči opšti profil zahteva za objekte sa oznakom hotela.”[5]

12
Slika 10.Nekadašnji izgled hotela[9]
Obično se danas hotelierstvo vezuje u uslužnim granama delatnosti kao i turizam.Oni pripadaju i
vezuju se za menadžment ljudskih resursa koji je se vezuje za počrtak XX veka.U procesu razvoja
discipline naročito je značajna činjenica da je to prvenstveno bila profesija tokom I svetskog rata.U
to vreme mnogi poznati univerziteti u SAD počinju da organizuju specijalizovane kurseve za
obrazovanje i zaposlenje osoblje na polju personalnog menadžmenta.
„Nastanak profesije personalnog menadžmenta neki američki istražitelji vezuju za mnogo raniji
period XV vek i napuštanje feudalizma i tu fazu često nazivaju preindustrijskom.Dok će procvat
ove grane u ekonomiji doživeti za vreme industrijske revolucije.“[6]
Trendovi koji se javljaju usavršavanjem tehologije krajem XX -og veka nisu zaobišli ni
hotelierstvo ni turizam.Tehnološke inovacije su uticale na primenu i u ovim granama
industrije.Tehnologije su u velikoj meri uticale na to da olakšaju upravljanje hotelima.
„S druge strane,tehničko-tehnološki,informacioni i kominikacioni napredak bitno je izmenio
koncept ,strukturu i izgled tradicionalnog hotelskog i turističkog preduzeća.U eri
robotizacije,kompijuterizacije i internetizacije,tradicionalna turistička i hotelska preduzeća sve
više se transformišu u uslužne organizacije koje se transformišu u uslužne organizacije koje se
zasnivaju na konceptu aktivnosti koje omogućavaju korisniku usluge kompletno psiho-fizičko
zadovoljstvo.Mnoge poslovne aktivnosti obavljaju se posredstvom elektronske pošte,mobilne
tehnologije i video konferencija,što kancelarijski rad čini suvišnim i uveliko prevaziđenim
načinom obavljanja posla.“[6]

13
Nekada u hotelu bez tehnologije nije mogla da se rezerviše soba, ili čak provera da li ima slobodnih
soba.Ljudi si u početku dolazili u gostione i često nailazili na odgovore da nema slobodnih soba
za prespavanje.Kada je pronađen telefon kao pronalazak prihvaćen je u hotelierstvu
velikodušno.Ljudima je olakšano da rezervišu sobe i vrše proveru koje su sobe slobodne.Kako se
tehnologija usavršavla i došlo do primene informacionih tehnologija u hotelierstvu.Danas su
umesto velikih hotelskih knjiga ,zamenili programi koji upisuju podatke gostiju u bazu podatka.
Klijenti hotela danas uz pomoću veb aplikacija mogu da provere koje su sobe slobodne a koje
zauzete.Na taj način olakšali sebe strasa i čekanja da se linija oslobodi.Svaka tehnologija i
tehnološka inovacija je uvek dobrodošla.

14
4.Pregled postojećih rešenja

Što se tiče diplomskog rada nije moja malenkost napravila patent rezervisanja on-line soba putem
interneta.Na ideju sam došao kako bi to izgledalo kada bi svaki ugostiteljski objekat
hoteli,prenoćišta koja bi imali svoju veb aplikaciju preko koje bi mogli pogledati broj soba i
ukupan broj rezervacija.Na ideju sam došao tako što sam video da postoje već veb aplikacije koje
omogućuju širokom aspektu ljudi da putuju bilo gde i bilo kada ne strepeći za slobodna mesta u
hotelu a to su veb aplikaacije svima poznate „trivago“,

4.1 Trivago

Trivago je vrsta veb aplikacije koja služi za pretragu hotela odnosno dostupnih sobau hotelima sa
prikazom cene ,svega što je potrebno korisnicima.Prvenstveno je namenjen za upoređivanje cene
u hotelima danas se na Trivagu mogu naći 800.000 hotela i preko 250 sajtova sa kojima je moguće
uporediti cenu.Trivago je u tesnoj saradnji sa „Expedia“ i „Booking“ čiji opis sledi u nastavku
malo kasnije.

Slika 11.Izgled Trivago-a[10]


“Trivago ideja je rođena 2004 godine,dok je osnivanje Trivago počelo 2005 godine u Dizeldorfu
u Nemačkoj od strane tri osnivača Peter Vinnemeier, Malte Siewert, i Rolf Schrömgens. U 2007.
trivago je lansirao platforme za Španiju, Francusku i Veliku Britaniju. Godinu dana nakon toga,
trivago ostvaruje svoju međunarodnu ekspanziju lansiranjem platformi u Poljskoj i Švedskoj.
Kompanija dobija dalju pomoć u vrednosti od 1.14 miliona dolara, finansiranjem od strane Hugo
Burge i njegovog HOWZAT Media LLP fonda. Dalje, u 2009, prve ne-evropske platforme su
zaživele; SAD, Kina, Japan, Brazil i Meksiko. Takođe, prvi spot emituje se na nemačkoj televiziji.
trivago otvara platformu u Srbiji. Nakon dve godine od ulaganja u rast trivago dostiže nivo i postaje
profitabilan”.[7]

15
Danas se može reći da je Trivago u eksponencionalnom rastu od svog osnivanja i da nije beležio
deficit već je u stalnom porastu i spadu među svetske i vodeće lidere što se tiče hotelierstva i
turizma.
Što se tiče opcija korišćena aplikacije može se reći da je vrlo jednostavna i prilagodiva svakom
korisniku bez upotrebe čitanja korisničkog upustva.Tako da korisnik ima mogućnost da vrši
pretragu po datumima ili po tipovima sobe.Ukoliko nije zadovoljan postijećim rešenjima moće da
uđe u detaljniju pretragu.Ukoliko želi da upoređuje cene sa drugim sajtovima i dopunskim
pogodnostima.Dopunske pogodnosti su pogodnosti kao sportska oprema,sportski tereni ,sale za
sastanke,da li u sobama ima bežični inernet.

4.2 Booking

„Booking je svetki tehnološki lider povezan putovanjima sa najširim izborom neverovatnih


mesta.Sa misijom da osnaži ljude da dožive svetsko iskustvo,Boking investira u digitalnim
tehnologijama da pomaže putivanju bez sukobljavanja.Booking povezuje najveći izbor mesta gde
bi putnici mogli da borave.Uključujući sve iz apartmana,vikendice,vile,luksuzne hotele,kuće na
drvetu,iglove.Booking vebsajt i mobilna aplikacija je dostupna na 43 jezika,sa ponudama preko
28 miliona oglasa,koji pokrivaju više od 147.000 destinacija u 229 destinacija širom sveta.“[8]

Slika 12.Izgled Bookinga[11]


Booking.com je formiran kada je bookings.nl, koji je 1996. osnovao Geert-Jan Bruinsma, spojio
2000. godine sa Bookings Online, koju su osnovali Sicco i Alec Behrens, Marijn Muiser i Bas
„Lemmens, a koja je delovala kao Bookings.org. Ime i URL su promenjeni u Booking.com, a Stef
Noorden je postavljen za njegovog izvršnog direktora. Godine 1997. Bruinsma je želela da objavi
oglas u De Telegraafu, holandskom listu sa najvećim tiražom. Oglas je odbijen jer je De Telegraaf

16
prihvatio oglase samo sa telefonskim brojem, a ne sa veb stranicom. 2002. godine Expedia je
odbila da kupi book.nl“[9]

4.3 Expedia group


“Ekpedia, Inc. je internetska turistička kompanija koja osnažuje poslovne i zabavne putnike
tehnologijama pomoću alata i informacija koje su im potrebne za efikasno istraživanje, planiranje,
rezervaciju i iskustvo putovanja. Nastojimo da razvijamo svoje poslovanje kroz dinamičan portfelj
turističkih brendova, uključujući naše podružnice u većinskom vlasništvu koje imaju najširi
portfelj snabdevanja na svetu - sa više od 590.000 objekata, uključujući više od 150.000
HomeAvai-ovih gotovo 1,5 miliona online kancelarijskih knjiga za odmor, u 200 zemalja i
teritorija, preko 550 aviokompanija, paketi, automobili za najam, krstarenja, osiguranje, kao i
odredišne usluge i aktivnosti. Putnički dobavljači distribuiraju i plasiraju proizvode putem naše
ponude za desktop i mobilne uređaje, kao i alternativnim kanalima distribucije, privatnim
poslovima sa etiketama i našim call centrima kako bi dosegli našu široku globalnu publiku. Pored
toga, naša oglašivačka i medijska preduzeća pomažu drugim preduzećima, pre svega provajderima
putovanja, da dosegnu veliku publiku putnika širom sveta.”[10]

Portfolio brendova firme Ekipedia inc. obuhvata:

•Ekpedia.com®, vodeća internetska turistička kompanija sa punim servisom sa lokalizovanim veb


lokacijama u 33 zemlje;

•Hotels.com®, vodeći globalni ekspert za smeštaj koji upravlja sa 90 lokalizovanih veb lokacija
na 41 jezika sa svojim nagrađivanim programom lojalnosti Hotels.com® Revards;

•Ekpedia® Affiliate Netvork ("EAN"), globalni brend business-to-business ("B2B"), koji preko
API-ja osnažuje hotelski posao stotina vodećih aviokompanija, turističkih agencija, lojalnih i
korporativnih turističkih kompanija plus nekoliko vrhunskih potrošačkih marki. i predloška
rešenja;

•trivago®, vodeća online hotelska metasearch platforma sa veb lokacijama u 55 zemalja širom
sveta;

•HomeAvai®, globalno tržište na mreži za najam odmora, koje između ostalog uključuje i marke
VRBO, VacationRentals.com i BedandBreakfast.com;

•Egencia®, vodeća kompanija za upravljanje korporativnim putovanjima;

•Orbitz® i CheapTickets®, vodeće američke veb lokacije za putovanja, kao i ebookers®, putnički
brend sa punom uslugom sa veb lokacijama u sedam evropskih zemalja;

•Travelocity®, vodeći internet putnički brend u Sjedinjenim Državama i Kanadi

17
Slika 13.Izgled Expedia Group-a[12]

“Expedia upravlja snažnim portfolijom brendova sa globalnim dometom, ciljajući širok spektar
putnika, dobavljača putovanja i oglašivača. Znamo da potrošači obično posećuju više veb lokacija
pre putovanja pre rezervisanja putovanja, a strategija sa više brendova povećava verovatnoću da
će ti potrošači posetiti jednu ili više naših veb lokacija. Takođe potrošačima plasiramo putem
različitih kanala, uključujući internetsku pretragu i meta pretraga i veb lokacije na društvenim
mrežama, a pojavljivanje više marki u rezultatima pretrage takođe povećava verovatnoću
privlačenja posetilaca. Naši brendovi prilagođavaju svoju ponudu proizvoda i veb lokacija u skladu
sa demografskim podacima putnika. Na primer, Hotvire pronalazi povoljne ponude za popust za
jeftinog turističkog kupca, dok naša marka Classic Vacations cilja na luksuzne putnike visokog
ranga. Brend Ekpedia obuhvata najširi sloj potencijalnih kupaca sa mogućnostima putovanja sa
više proizvoda po širokom spektru vrednosti, dok se naš brend Hotels.com fokusira posebno na
ponudu proizvoda samo za hotel.”[10]

18
4.4 Trip advisor
“TripAdvisor je među vodećim on-line stranicama za informacije o putovanjima. Grupa pruža
mišljenja i preporuke putnika i nudi detaljne informacije o destinacijama (pregledi hotela,
restorana i atrakcija), kao i funkcije poređenja cena i izračunavanja cena (avio-karte, hotelske sobe,
iznajmljivanje automobila, itd.) U partnerstvu je sa sotalim sajtovima za rezervaciju.”[11]

TripAdvisor pruža nešto drugačije usluge od ostalih sajtova za rezervisanje hotela i informacijama
o putovanju.TripAdvisor pored mogućnosti o putovanjima i hotelima nudi mogućnosti za
iznajmljivanje automobila poznatije u narodu kao“renta-car(renta-kar)“,takođe nudi mogućnosti o
avio kompanijama,restoranima i preporukama korisnika o restoranima itd.

Slika 14.Izgled Trip Advisor-a[13]

„TripAdvisor najveća svetska platforma za putovanja , pomaže 490 miliona putnika svakog
mjeseca da svako putovanje postane njihovo najbolje putovanje. Putnici širom sveta koriste
TripAdvisor stranicu i aplikaciju da pregledaju više od 795 miliona pregleda i mišljenja o 8,4
miliona smeštaja, restorana, iskustava, aviokompanija i krstarenja. Bilo da planirate ili putujete,
putnici se okreću TripAdvisoru da uporede niske cene hotela, letova i krstarenja, rezervišu
popularne ture i atrakcije, kao i rezervne stolove u sjajnim restoranima. TripAdvisor, vrhunski
pratitelj putovanja, dostupan je na 49 tržišta i 28 jezika.“[12]

19
5.Opis korišćene tehnologije

U realizaciji ovog diplomskog rada je korišćen C# programski jezik ,ASP.NET,MySQL.MySQL


je korišćen kao sastavni deo u okviru programskog okruženja XAMPP.C# programski jezik je
korišćen u sklopu alata Visual Studio 2019 u koji je integrisan i ASP.NET.

5.1 Visual Studio kao programsko razvojno okruženje


Microsoft Visual Studio predstavlja okruženje koje je razvila firma Microsoft, koristi se za izradu
programa kao što su web sajtovi, web servisi, mobilne aplikacije ali takođe i desktop aplikacije.
Microsoft pruža i besplatnu verziju programa Visual Studio pod nazivom Community Edition koja
podržava dodatke i dostupna je bez ikakvih troškova.

Visual Studio takođe uključuje i code editor kao i debbuger. Debugger se koristi na dva nivoa: kao
source debugger i machine debbuger. Pored ovoga u sastav Visuala se takođe može uključiti i code
profiler, form designer koji nam omogućava izradu GUI aplikacija, web designer, class designer
itd.

Visual Studio je u potpunosti kompitabilan sa Version Control Sistema.Nudi mogućnost


implementacije i povezanosti sa GitHub-om.Takođe u novoj verziji Visual Studia je programerima
ponuđeno kao integrisano automatsko povezivanje sa Microsoft Azure Veb servisom.

Slika 15.Izgled programskog okruženja Visual Studio-a

20
Visual studio.Net prestavlja jedno od okruženja koje je proizvela firma Microsoft. Sadrži veliku
biblioteku klasa (Framework Class Library). Prva značajnija verzija .Net-a potiče iz 2000. a u
saradnji sa Intel-om i HP-om su radili na standardizaciji CLI kako bi se više programskih jezika
koristili na različitim platformama. Programi se izvršavaju kroz CLR, virtuelnu mašinu koja
sadrži: memory menagment, exception handling, garbage collector itd[13]. Korišćenjem .Net
dobijamo platformu na kojoj možemo da pišemo na 35 različitih jezika od kojih su najpoznatiji C,
C#, C++ i Java. Svaki jezik ima svoj kompajler posebno i preko njega se kompajlira u CLI. U
zavisnosti od toga koji je jezik korišćen CLR kompajlira CLI u mašinski kod, kod koji je poznat
računaru. Ovo je glavni alat i alat koji odvaja Visual Studio od drugih.

5.2 Tehnologija ASP.Net


Asp.net predstavlja open-scource framework za web aplikacije koji sluzi za pravljenje dinamičnih
web stranica. Proizveden je od strane MicroSoft-a i pomoću njega pored web aplikacije, možemo
da pravimo web servise, web sajtove, mobilne aplikacije i slično. Prva verzija je izašla na tržište
januara 2002. godine sa verzijom 1.1 . NET Frameworka. ASP(Active Server Pages) je izgrađen
na bazi CLR koji omogućava programerima da koriste bilo koji vid podrške od strane .Net-a.
SOAP ekstenzija daje mogućnost programerima da u sklopu ASP pišu SOAP poruke. ASP.NET
je naslednik ASP.Core, odnosno predstavlja implementaciju web frameworka u kombinaciji sa
više različitih frameworka poput EntiryFrameworka-a. Novonastali ASP:NET koristi open-
scource platformu :NET Compiler Platform (“Roslyn“) i paterne kao što su ASP:NET MVC,
ASP:NET ASP.NET Web Pages.

Sva tri ASP.NET okvira zasnivaju se na .NET Framevork i dele osnovnu funkcionalnost .NET-a i
ASP.NET-a. Na primer, sva tri okvira nude model bezbednosti za prijavu zasnovan na članstvu, a
sva tri dele iste pogodnosti za upravljanje zahtevima, rukovanje sesijama i tako dalje, koji su deo
osnovne ASP.NET funkcionalnosti.

Uz to, tri okvira nisu u potpunosti nezavisna, a izbor jednog ne isključuje upotrebu drugog. Budući
da okviri mogu koegzistirati u istoj veb aplikaciji, nije neuobičajeno da vidite pojedinačne
komponente aplikacija napisane pomoću različitih okvira. Na primer, delovi aplikacije okrenuti
prema kupcu mogu se razviti u MVC-u kako bi se optimizirala markacija, dok su pristupi podacima
i administrativni delovi razvijeni u Veb Formsima da bi se iskoristile prednosti kontrole podataka
i jednostavan pristup podacima.[14]

ASP.NET Veb API je okvir koji olakšava izgradnju HTTP usluga koje dosežu širok spektar
klijenata, uključujući pregledače i mobilne uređaje. ASP.NET Veb API je idealna platforma za
izgradnju RESTful aplikacija na .NET Framevork.

21
5.3 MVC u okviru Visual Studio-a
“ASP.NET MVC vam pruža moćan način za izgradnju dinamičnih veb lokacija zasnovanih na
obrascima koji omogućava čisto razdvajanje problema i koji vam daje potpunu kontrolu nad
markiranjem za ugodan, okretni razvoj. ASP.NET MVC uključuje mnogo funkcija koje
omogućavaju brz, TDD-friendli razvoj za kreiranje sofisticiranih aplikacija koje koriste najnovije
veb standarde.”[14]

MVC ili Model-View-Controller je patern koji je kreiran sa zadatkom da reši problem kod većine
aplikacija a to je prikazivanje podataka korisniku. Ideja je bila da se sama aplikacija podeli u 3
sloja: Model, View i Controller. Ovaj patern bi trebao da funkcioniše na jedan od dva sledeća
mišljenja:

Aplikacija bi trebala da dobije zahtev od korisnika preko web pretraživača. Controller dobija tu
poruku i zatim se obraća modelu za podatke koji su mu potrebni da bi se ispunio zahtev.

Model kao odgovor šalje podatke nazad Controlleru koji sada date podatke prosleđuje View koji
je statičan i njegova funkicija je prikazivanje prosleđenih podataka korisniku. Da bi sve ovo
funkcionisalo potrebni su nizovi poruka, mappera, interfejsa, upita za bazu itd.

“Drugo mišljenje je po svemu slično prvom, razlika je u tome što se smatra da podaci ne moraju
da se kreću preko Controllera nego može da se uspostavi direktna veza između Modela i View gde
View ne bi imao nikakvu sopstvenu funkciju, već bio bi samo posrednik”[15]

5.4 Xampp paket


XAMPP je multiplatfomska aplikacija čijom instalacijom, bez ikakvog potrebnog tehničkog
predznanja.Kada instalirate XAMPP na vašem računaru dobijate pristup Apache Web serveru,
MySQL-u, PHP-u i Perl-u. Drugim rečima, u pitanju je jednostavno i brzo rešenje za brzo
podešavanje minimalnog okruženja koje može da zadovolji sve potrebe po pitanju razvoja[16]

Ovaj program je u toku izrade ovog rada korišćen za izvršavanje stranica na lokalnom računaru, a
da nam pri tome nije potreban internet. Kada se instalira dati program, računar se može tretirati
kao da je na internetu, jer se mogu koristiti neki internet servisi.

XAMPP je skraćenica od:

• X ( cross-platform - znači da je multiplatformski program, odnosno da radi u Linux, Solaris,


Windows i MAC OSX operativnim sistemima),

• A (Apache HTTP Server – Web server softver koji se koristi za WWW servis),

• M (MySQL),

• P (PHP),

• P (Perl – Practical Extraction and Report Language – programski jezik kojeg je razvio Larry
Wall 1987. godine. i slobodnog je tipa - nezavisan od platforme)
22
Slika 16.Izgled Xampp-a

Ukoliko se koristi MySQL u okviru XAMPP paketa potrebno ga je koristiti na sledeći način
potrebno je pokrenuti prvo Apache jer se MySQL nalazi na lokalnom serveru pa se pristupa na
način tako što se upretraživaču upiše localhost i raćunar prempozna Xampp Apache da je pokrenut
zatim je potrebno pristupiti phpMyAdmin gde se smeštena baza odnosnoMySQL.

Slika 17.Pokrenut phpMyAdmin

23
6.Realizovani primer
6.1 Specifikacija zahteva
Specifikacija zahteva za izradu web aplikacije koja se bavi evidencijom gostiju u hotelu odnosi se
na spisak svih funkcionalnih mogućnosti koje aplikacija nudi. U nastavku je dat tabelarni prikaz
funkcionalnih zahteva za rezervisanje i evidenciju gostiju u hotelu. Tabelarni prikaz je odabran
kako bi se lakše prikazale sve funkcije i zaduženja. Nefunkcionalni zahtevi u ovom radu nisu
prikazani, zato što nisu značajno naglašeni (u ovom radu je reč o izradi softvera opšte namene, a
ne za konkretnog korisnika, pa nisu eksplicitno dati nefunkcionalni zahtevi).

Poslovna Aktivnost Plan Softverske Podrške

Provera Slobodnih Soba Korisnik ima mogućnost da pošalje upit


hotelu da li ima slobodnih soba za period koji
njemu odgovara za boravak

Provera Slobodnih Termina Za Željenu Sobu Korisnik ima mogućnost da klikne na galeriju
soba i pošalje upit za željenu sobu da li je
slobodan termin kada njemu odgovara

Slanje Rezervacije Ukoliko korisnik dobije pozitivnu povratnu


informaciju on može rezervisati željenu sobu
online tako što je potrebno da popuni upite

Tabela 1. Specifikacija dužnosti klijenta

Specifikacija poslovnih aktivnosti menadžera hotela i odgovarajućih softverskih funkcija.

Aktivnost Detalji Poslovne Aktivnosti

Pregled svih zauzetih soba Admin aplikacije kada se uspešno uloguje


ima mogućnost da pogleda koje su sobe
zauzete sa kojim vremenskim periodom

Izmena Podataka O Sobi Admin ima mogućnost da ukoliko neki gost


želi da produži boravak u hotelu da izmeni
vreme njegovog boravka ili da ga prebaci u
drugu sobu ako je ta soba zauzeta odmah po
isteku termina

Brisanje Podataka O Sobi Admin ima mogućnost da izbriše zauzeće sobe


ukoliko se soba oslobodila

Dodavanje Novog Zauzeća Admin ima mogućnost da doda novo zauzeće


sobe ulkoliko se javi neki novi korisnik

24
Logovanje Da bi admin mogao da obavlja svoje funkcije
u aplikaciji potrebno je da se prijavi kao
admin

Slanje Informacija Korisniku Admin je zadužen da odgovori korisnicima


koji mu šalju upite

Tabela 2 .Prikaz mogućnosti administratora

25
6.2 Model opšteg dizajna softvera
6.2.1 Model poslovnih procesa

Model poslovnih procesa (Business Process Modeling) odnosi se na dizajniranje i upravljanje


poslovnim procesima. Funkcioniše po principu objedinjavanja poslovnih procesa i služi da lakše
prikaže poslovna organizacija. Na sledećoj slici je prikazan dijagram (tipa Analysis) rađen u Power
Designer-u koji prikazuje BPM model opšteg toka poslovnog procesa hotela, koji se može podržati
softverski.

Slika 18 .Izgled Modela Poslovnih Procesa

26
6.2.2 Use case diagram

U sledećoj tabeli preslikavanja biće prikazani primitivni procesi (na osnovu BPM) i softverske
funkcije kojima se podrzavaju ti procesi. U narednoj tabeli su podrzani softverskim funkcijama
samo primitivni procesi koji se odnose na klijenta i admina. Softverske funkcije su raspoređene po
prioritetima – funkcije prvog prioriteta direktno podrzavaju poslovni proces, dok drugog prioriteta
predstavljaju prosirenja osnovne funkcionalnosti. Takođe, prikazane su i softverske funkcije
preduslovi, koje moraju biti realizovane u softveru, jer bez njih ne mogu osnovne softverske
funkcije da se primenjuju. Poslednja kolona se odnosi na tip softvera. Najčešće korišćeni tipovi
su: c/s LAN (klijent server u lokalnoj mreži), web aplikacije i mobilne aplikacije. U narednoj tabeli
je dat jedan predlog (za iste primitivne procese može biti više tehnoloških rešenja) kako bi se
softverski mogli podržati primitivni procesi iz BPM.

Primitivni Radna Softverska funkcija Preduslov Actor (Profil Tip


poslovni uloga za uspešno korisnika softvera
proces izvršioca izvršavanje softverske
primitivnog funkcija i funkcije)
poslovnog prioriteta
procesa

1.prioriteta 2.prioriteta

Provera Klijent Unos Prijem poruke o Unos Korisnik c/s


Termina podataka o slobodnim podataka u LAN,
željenom terminima odgovorajauća WEB
terminu polja

Provera Klijent Unos Tabelarni prikaz Unos Korisnik c/s


Termina Za podataka o slobodnih termina podataka u LAN,
Sobu željenoj za sobu odgovorajauća WEB
sobi i polja
željenom
terminu

Rezervisanje Klijent Pregled Unos ličnih Unos Korisnik c/s


povratnih podataka podataka u LAN,
informacija odgovorajauća WEB
koje dobija polja
od uprave
hotela

Uvid u Admin Logovanje Tabelarni prikaz Tabelarni Administrator c/s


stanje kao admin zauzetih soba prikaz LAN,
zauzetih zauzetih soba WEB
soba

27
Izmena Admin Logovanje Tabelarni prikaz Unosi Administrator c/s
podataka o kao Admin informacija o sobi odgovrajauće LAN,
sobi izmene WEB

Brisanje Admin Logovanje Tabelarni prikaz Izbor brisanja Administrator c/s


podataka o kao Admin informacija o sobi informacije LAN,
sobi WEB

Unos novih Admin Logovanje Pristupa Unos Administrator c/s


podataka o kao Admin popunjavanjavanju informacije u LAN,
novoj sobi nvoih podataka potrebna polja WEB

Tabela 3. Use Case Tabela

Kompletan spisak softverskih funkcija koje treba da budu implementirane nastaju kombinovanjem
specifikacije zahteva i tabele preslikavanja i dat je u nastavku, prema profilima korisnika.

Profil Korisnika Admin

Uvid u stanje zauzetih soba,Izmena podatkaka o sobi ,Brisanje podataka o sobi ,Unos novih
podataka o sobi

Profil Korisnika Korisnik

Provera termina,Provera termina za sobu,Rezervisanje

Tabela 4. Prikaz svih aktivnosti

28
Slika 19.Izgled Use Case Diagrama

29
6.2.3 Dijagram komponenti

Dijagram prikazuje strukturne relacije između softverskih komponenti sistema. On ilustruje delove
softvera, ugrađene kontrolere i slično, i ima veći stepen apstrakcije od dijagrama klasa[17]

Dijagram komponenti služi za modeliranje izvornog koda, modeliranje izdanja za isporuku,


modeliranje izvršnih izdanja i okruženja, kao i modeliranje fizičkih baza podataka. Na sledećim
slikama će biti prikazan izgled dijagrama komponenti za našu aplikaciju razvrstanu po slojevima

Slika 20.Izgled Dijagrama Komponenti

30
6.2.4 Dijagram razmeštaja

Dijagram razmeštaja prikazuje statički pogled run-time hardverske konfiguracije i softverskih


komponenti koje se izvršavaju na tim čvorovima. Dijagram razmeštaja prikazuje hardver vašeg
sistema, softver koji je instaliran na tom sistemu i srednji sloj koji se koristi za povezivanje
međusobno razdvojenih mašina. [17]

Sledeća ilustracija prikazuje dijagram razmeštaja za softver koji je prikazan u radu.

Slika 21.Dijagram Razmeštaja

31
6.3 Korisničko upustvo
Prilikom izrade diplomskog rada rađena je aplikacija za evidenciju gostiju hotela.Aplikacija je
funkcionala u porpunosti ali ima dosta mesta za usavšavanje.Ova aplikacija je rađena u jeziku C#
u programskom okruženju Visual Studio 2019.Pored C# jezika koji je korišćen za obavljanje
pozadinskih procesa u izradi duplomskog rada su korišćeni HTML,CSS,JavaScript jezici oni su
zaduženi za izgled sajta i neke funkcije koje se dešavaju na sajtu.Kao model je korišćen bootstrap
okvir(frejmvork(framework)) koji je u poslednje vreme najkorišćeniji.

Slika 22.Prikaz pocetne strane sajta

Kada korisnik orvori sajt nudi mu se mogućnost pretraživanja sajta,od ponuđenih opcija ima
dugme da rezerviše svoj termin.Kada korisnik klikne na dugme ,dugme ga odvodi na kontakt
sekciju gde popunjava polja koju su predviđena za to.Na slici 23 može se videti izgled kontakt
sekcije i ono što popunjava korisnik.

Slika 23.Izgled Kontakt Sekcije

32
Kao što se vidi na slici 23 korisnik je potrebno da unese svoje ime ,svoju mejl adresu i napiše
poruku koju želi da pošalje.Poruka se šalje na mejl adresu hotela i uprava hotela mu odgovara u
što kraćem roku na mejl adresu koju je napisao u polju koje je previđeno za mejl adresu.

Pored ove mogućnosti korisnik ima mogućnost da ode u sekciju sobe gde se nalazi galerija
soba.Svaka slika u glairiji opsiuje izgled sobe.Korisniku je ponuđena mogućnost da pogleda
detaljnije sobu tako što prevuče kursor na sliku i pojaviće se informacije vezane za tu sobu.Opis
teksta može se pogledati na slici 24.

Slika 24.Izgled Sekcije Sobe

Ukoliko korisnika zanima više informacija o željenoj sobi potrebno je da klikne na dugme
„Rezerviši Sobu“ i prikazaće mu se izgled stranice kao na slici 25 i 26.

Na slici 25 se može videti dugme rezerviši sobu kada korisnik klikne na ovo dugme pojaviće mu
se polja koja je potrebno pupuniti kako bi potvrdio rezervaciju.Kako izgledaju potrebna polja koja
je potrebno popuniti može se videti na slici 27 u nastavku teksta.

33
Slika 25.Izgled Naslovne Strane Sobe

Slika 26.Izgled Strane Soba

Na slici 26 se može videti mogućnost da korisnik pošalje datum od kad do kad želi da rezerviše
sobu i potrebno je da upiše tačan naziv sobe koji je prikazan na slici 24 kao na primer „Dvokrevetna
Soba“

34
Slika 27. Izgled polja koja popunjava gost

Po svetskim pravilima gost je dužan da unese broj pasoša kako bi se proverilo da nije pod nekom
optužbom ili da nije gonjen od strane vlasti.Matični broj je takođe značajan kako bi se proverilo u
policiji što brže da li je korisnik u sukobu sa zakonom.Zatim idu polja ime i prezime.Polje datum
rođenja je važno iz razloga jer ukoliko je korisnik maloletno lice ne može da rezerviše sobu.Svi
podaci koje gosti unose se nalaze u tabeli gost ,pristup podacima ima samo admin sajta.

Da bi korisnici bili zadovoljni uslugom potrebno je da neko prati njihove aktivnosti na sajtu za to
je zadužen admin sajta koji ima svoj nalog gde samo on ima šifra da pristupi svom nalogu.Kako
bi se admin ulgovao uspešno za to je predviđeno dugme „Login“ koje je smešteno u footeru
sajta.Izgled dugmeta može se videti na slici 28.

Slika 28.Izgled Futera

Kada admin klikne na dugme „Login“ pojaviće mu se login forma gde je potrebno da unese tačne
podatke kako bi pristupio svojim adminskim funkcijama.Ukoliko unese neispravne podatke
pojaviće mu se error strana.

Slika 29.Izgled Login Forme

35
Slika 30 Kada se unesu pogrešni podaci

Kada admin unese tačne podatke za logovanje ima da bira nekoliko opcija :

• Prikaz Svih Soba


• Prikaz Svih Zauzetih Soba
• Izmena Zauzete Sobe
• Brisanje Podataka o Zauzetoj Sobi
• Dodavanje Novog Gosta U Novoj Sobi

Izgled nabrojanih opcija može se pogledati na slici 31.

Slika 31.Izgled opcija koje ima samo admin

Kada admin izabere opciju „Vidi Sve Sobe“ njemu će se prikazati spisak svih soba.Izgled se može
pogledati na slici 32.

Slika 32.Prikaz spiska svih soba

36
Sledeća opcija koju ima admin je prikaži sve zauzete sobe.Spisak svih zauzetih soba se može
pogledati na slici 33.

Slika 33.Izgled Spiska Svih Zauzetih Soba

Takođe u okviru ove opcije postoje dugmadi kao što se vidi na slici 33 za izmenu i brisanje.Gde
je potrebno da admin izmeni podatke i opciaj za brisanje gde admin unosi id koji predstavlja redni
broj kolone i briše podatke iz tabele.Navedene opcije kako izgledaju kada se pritisne odgovarajuće
dugme može se videti na slikama 34 i 35.

Slika 34. Izmena Zauzete Sobe

Slika 35.Brisanje Zauzetog Gosta

Opcija za brisanje služi kada ode gost potrebno je osloboditi sobu i prikazati je da je slobodna.

37
Opcija koju ima admin je da mu se prikaže spisak svih gostiju hotela.Izgled spiska gostiju hotela
se može videti na slici 36.

Slika 36. Prikaz Spiska Svih Gostiju u Hotelu

38
6.4 Opis implementacije
6.4.1 Plan i opis implementiranih elemenata višeslojne aplikacije

Prilikom izrade bilo je potrebno napraviti bazu podataka sa tabelama koje su vezane za pojmove
koje želimo da prikažemo kao što su gosti,soba,zauzeće sobe,tip sobe i druge stvari koje su vezane
za naš sajt.

Da bi baza podataka funkcionisala morali smo da napišemo SQL upite koji se nalaze u sloju za rad
sa bazom podataka. Takođe smo morali kreirati sloj modela koji će sadržati get i set metodu čija
je funkcija prikupljanje podataka i postavljanje u model. Da bi ovo sve funkcionisalo kako treba
moramo koristiti i web servis koji će nam omogućiti komunikaciju između web aplikacije za onlajn
rezervaciju i prikaz gostiju. Poslednji sloj, prezentacioni sloj prikazuje ono što je korisnik putem
poruka zahtevao od aplikacije. Ovaj sloj komunicira sa ostalim slojevima kako bi pružio što bolju
uslugu korisniku.

SLOJ PODSLOJEVI PLAN


IMPLEMENTACIJE U
RADU

Prezentacioni Korisnički Interfejs Elektronska Forma

Prezentaciona Logika Kod je prikazan u obliku


grafičkih elemenata, sve
aktivnosti su vezane za klik
na dugme

Kod je prikazan u obliku


grafičkih elemenata, sve
aktivnosti su vezane za klik
na dugme

Sloj Servisa Web servis Pristup podacima od gostu

Biblioteka klasa servisa za Mapiranje između slojeva


mapiranje

Sloj poslovne logike i modela Biblioteke klasa za rad sa Klase repository


bazom podataka

Klase modela

Sloj za rad sa bazom Baze podataka i DBMS Tabele i relacije baze


podataka podataka

39
6.4.2 SQL skripta i šeme baze podataka

U diplomskom radu smo koristili bazu podataka koju nudi alat Visual Studio,međutim da bi sve
funckionisalo kako treba potrebno je kreirati bazu podataka pomoću SQL jezika.Alat koji je
koršćen u izradi baze podataka je MySQL.U nastavku sledi lisitnig koda kojim je kreirana baza
podataka.
CREATE DATABASE hotel

CREATE TABLE `gost` (

`idGost` int(11) NOT NULL,

`brojPasosa` int(22) NOT NULL,

`jmbg` int(24) NOT NULL,

`prezime` varchar(46) COLLATE utf8_unicode_ci NOT NULL,

`ime` varchar(46) COLLATE utf8_unicode_ci NOT NULL,

`datumRodjenja` date NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `login` (

`korisnickoIme` varchar(52) COLLATE utf8_unicode_ci NOT NULL,

`lozinka` varchar(22) COLLATE utf8_unicode_ci NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `soba` (

`idSoba` int(11) NOT NULL,

`oznakaSobe` int(11) NOT NULL,

`idTipSobe` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `tipsobe` (

`idTipSobe` int(11) NOT NULL,

`nazivSobe` varchar(12) COLLATE utf8_unicode_ci NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `zauzece` (

`id` int(11) NOT NULL,

40
`idGost` int(11) NOT NULL,

`idSoba` int(11) NOT NULL,

`datumOd` date NOT NULL,

`datumDo` date NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `proveraTermina` (

`ime` varchar(82) NOT NULL,

`email` varchar(82)) NOT NULL,

`poruka` varchar(182) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `gost`

ADD PRIMARY KEY (`idGost`);

ALTER TABLE `soba`

ADD PRIMARY KEY (`idSoba`),

ADD KEY `idTipSobe` (`idTipSobe`);

ALTER TABLE `tipsobe`

ADD PRIMARY KEY (`idTipSobe`);

ALTER TABLE `zauzece`

ADD PRIMARY KEY (`id`),

ADD KEY `idGost` (`idGost`),

ADD KEY `idSoba` (`idSoba`);

AUTO_INCREMENT for dumped tables

AUTO_INCREMENT for table `gost`

ALTER TABLE `gost`

MODIFY `idGost` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=51;

AUTO_INCREMENT for table `soba`

ALTER TABLE `soba`

MODIFY `idSoba` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

41
ALTER TABLE `zauzece`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

ALTER TABLE `soba`

ADD CONSTRAINT `soba_ibfk_1` FOREIGN KEY (`idTipSobe`) REFERENCES `tipsobe` (`idTipSobe`);

ALTER TABLE `zauzece`

ADD CONSTRAINT `zauzece_ibfk_1` FOREIGN KEY (`idGost`) REFERENCES `gost` (`idGost`),

ADD CONSTRAINT `zauzece_ibfk_2` FOREIGN KEY (`idSoba`) REFERENCES `soba` (`idSoba`);

COMMIT;

Listing1.Listing Koda Baze Podataka

42
6.4.3 Model klase podataka

Kada se radi o modelu klase podataka on sadrži atribute klase koji nose ista imena kao u bazi.U
starijim verzijama je potrebno kreirati atribute pa onda get i set metode.U ovoj novoj verziji
programa potrebno je samo kreirati getere i setere.Primer modela možete pogledati u listigu 2.
protected DateTime _datumRodjenja;
public int IdGost { get; set; }
public int BrojPasosa { get; set; }
public int Jmbg { get; set; }
public string Prezime { get; set; }
public string Ime { get; set; }
public DateTime DatumRodjenja
{

get { return _datumRodjenja; }


set { _datumRodjenja = value; }

}
public Rezervacija()
{

Listing 2.Kod Modela Klase Podataka


6.4.4 Klase repository

Klasa repository sadrži kodove za potrebne za konekciju sa bazom podataka kao i metode koje su
potrebne za rad sa bazom i povezivanje.
public string ConnectionString { get; set; }

public Context(string connectionString)


{
this.ConnectionString = connectionString;
}

private MySqlConnection GetConnection()


{
return new MySqlConnection(ConnectionString);
}
public List<Models.Soba> GetAllRoom()
{
List<Models.Soba> list = new List<Models.Soba>();

using (MySqlConnection conn = GetConnection())


{
conn.Open();
MySqlCommand cmd = new MySqlCommand("select * from soba ", conn);

using (var reader = cmd.ExecuteReader())


{
while (reader.Read())
{

43
list.Add(new Soba()
{
IdSoba = Convert.ToInt32(reader["idSoba"]),
OznakaSoba = Convert.ToInt32(reader["oznakaSobe"]),
IdTipSobe = Convert.ToInt32(reader["idTipSobe"])

});
}
}
}
return list;

public List<Models.Zauzece> DajSveZauzece()


{
List<Models.Zauzece> list = new List<Models.Zauzece>();

using (MySqlConnection conn = GetConnection())


{
conn.Open();
MySqlCommand cmd = new MySqlCommand("select
idGost,idSoba,datumOd,datumDo from zauzece ", conn);

using (var reader = cmd.ExecuteReader())


{
while (reader.Read())
{
list.Add(new Zauzece()
{
IdGost = Convert.ToInt32(reader["idGost"]),
IdSoba = Convert.ToInt32(reader["idSoba"]),
DatumOd = Convert.ToDateTime(reader["datumOd"]),
DatumDo = Convert.ToDateTime(reader["datumDo"]),

});
}
}
}
return list;

}
public List<Models.Rezervacija>DajSveGoste()
{
List<Models.Rezervacija> list = new List<Models.Rezervacija>();

using (MySqlConnection conn = GetConnection())


{
conn.Open();
MySqlCommand cmd = new MySqlCommand("select * from gost ", conn);

using (var reader = cmd.ExecuteReader())


{
while (reader.Read())
{
list.Add(new Rezervacija()

44
{

IdGost = Convert.ToInt32(reader["idGost"]),
BrojPasosa = Convert.ToInt32(reader["brojPasosa"]),
Jmbg = Convert.ToInt32(reader["jmbg"]),
Prezime= (reader["prezime"]).ToString(),
Ime = (reader["ime"]).ToString(),
DatumRodjenja = Convert.ToDateTime(reader["datumRodjenja"])

});
}
}
}
return list;
}

Listing 3.Kod Repository Klase

6.4.5 Klasa kontroler

U klasi kontroler se nalze metode koje povezuju Klase Podataka,Klasu Repository kao i Klasu
Korisničkog interfejsa.Lisnig koda možete pogledati u Listingu 4.
MySqlConnection con = new MySqlConnection();
MySqlCommand com = new MySqlCommand();
MySqlDataReader dr;
public IActionResult Index()
{

return View();
}

public IActionResult About()


{
Context context = HttpContext.RequestServices.GetService(typeof(Context))
as Context;
List<Soba> list = context.GetAllRoom();
return View(list);
}
[HttpGet]
public IActionResult Login()
{
return View();
}
public void connectionString()
{
con.ConnectionString =
"SERVER=localhost;PORT=3306;DATABASE=hotel;UID=root;PASSWORD=''";
}
[HttpPost]
public IActionResult Verify(Nalog acc)
{
connectionString();
con.Open();

45
com.Connection = con;
com.CommandText = "select * from login where
korisnickoIme='"+acc.KorisnickoIme+"'and lozinka='"+acc.Lozinka+"'";
dr = com.ExecuteReader();
if(dr.Read())
{
con.Close();
return View("Admin");
}
else
{
con.Close();
return View("Error");
}

}
public IActionResult soba()
{
return View();
}
public IActionResult Rezevacija(Rezervacija r)
{
connectionString();
con.Open();
com.Connection = con;
com.CommandText = "INSERT INTO
gost(brojPasosa,jmbg,prezime,ime,datumRodjenja)
VALUES('"+r.BrojPasosa+"','"+r.Jmbg+"','"+r.Prezime+"','"+r.Ime+"','"+r.DatumRodjenja+"
')";
com.ExecuteNonQuery();
con.Close();
return View();
}
[HttpPost]
public IActionResult rezervisi(Rezervacija r)
{

return View();
}
public IActionResult Admin()
{
return View();
}
public IActionResult Zauzece()
{
Context context = HttpContext.RequestServices.GetService(typeof(Context))
as Context;
List<Zauzece> list = context.DajSveZauzece();
return View(list);

public IActionResult Izmena(Izmena i)


{

connectionString();
con.Open();

46
com.Connection = con;
com.CommandText = "UPDATE zauzece SET
id='"+i.Id+"',idGost='"+i.IdGost+"',idSoba='"+i.IdSoba+"',datumOd='"+i.DatumOd+"',datum
Do='"+i.DatumDo+"'WHERE id='"+i.Id+"'";
com.ExecuteNonQuery();
con.Close();

return View();
}
public IActionResult Brisanje(Brisanje b)
{

connectionString();
con.Open();
com.Connection = con;
com.CommandText = "DELETE FROM `zauzece` WHERE id='"+b.Id+"'";
com.ExecuteNonQuery();
con.Close();

return View();
}

public IActionResult DodajZauzece()


{

Zauzece z=new Models.Zauzece();


Rezervacija r = new Rezervacija();
int id = r.Id;
connectionString();
con.Open();
com.Connection = con;
com.CommandText = "INSERT INTO zauzece(idGost,idSoba,datumOd,datumDo)
VALUES('" + z.IdGost + "','" + z.IdSoba + "','" + z.DatumOd + "','" + z.DatumDo + "'
)";
com.ExecuteNonQuery();
con.Close();

return View();
}
public IActionResult SviGosti()
{
Context context = HttpContext.RequestServices.GetService(typeof(Context))
as Context;
List<Rezervacija> list = context.DajSveGoste();
return View(list);

}
}

Listing 4.Izgled Koda Klase Kontroler

47
6.4.6 Izgled korisničkog dela aplikacije

Za izgled korisničkog dela aplikacije je rađen pomoću HTML,CSS i JavaScript-a.HTML kodovi


se nalaze u fajlovima hoji imaju ekstenziju cshtml.U HTML se nalazi kostur strane dok je u CSS
smešten izgled korisničkog dela aplikcije u JavaScript-u su napisane funkcije koje obavlja korisnik
na korisničkom interfejsu.
<!DOCTYPE html>
<html lang="sr">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=639, initial-scale=1.0, maximum-scale=1.0, user-
scalable=no">
<title>Our Hotel </title>

<link rel="stylesheet" type="text/css" href="css/style.css">


<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/responsive-menu.js"></script>
<script src="js/slider-slick.js"></script>

</head>
<body class="body-class" >

<div class="main-menu">
<div class="logo-image">
<p class="logo-text">Our Hotel</p>
</div>

<div id="repsponsive-menu-container">
<div id="responsive-menu" class="responsive-menu-side-navigation">
<nav>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#Services">Services</a></li>
<li><a href="#AboutUs">About Us</a></li>
<li><a href="#Team">Team</a></li>
<li><a href="#Contact">Contact</a></li>
</ul>
</nav>
</div>

<span id="responsive-menu-icon" class="responsive-menu-icon"


onclick="OpenCloseResponsiveMenu()">&#9776;</span>
</div>

<div class="menu-items">
<div class="menu-position">
<ul>
<li><a href="#home" class="selected-menu-
item">Pocetna</a></li>
<li><a href="#Sobe">Sobe</a></li>
<li><a href="#AboutUs">O Nama</a></li>

48
<li><a href="#Contact">Kontakt</a></li>

</ul>
</div>
</div>
</div>

<script>
$(window).on("scroll", function() {
if($(window).scrollTop() > 750) {
$(".main-menu").addClass("active");
} else {

$(".main-menu").removeClass("active");
}
});
</script>
<div class="scrollable-data">

</div>
<div class="banner">
<img class="myBanner" src="images/headerImage.jpg" alt ="banner"
style="width:100%" id="Home">
<button class="buttonHeader" onclick="location.href='#Contact'">
Rezervisi Svoj Termin </button>
</div>
<div class="ourHotel">
<h1>O Hotelu</h1>
<P class="opisHotela">
Etiam scelerisque nunc eu sagittis rhoncus. Mauris eget
ullamcorper tortor.
Phasellus nisi enim, mattis eu felis sit amet, malesuada pharetra purus.
Integer congue dapibus felis, at vulputate quam lobortis ac.
</p>
</div>
<div class="container">

<section class="regular slider">


<div>
<img src="images/terasa.jpg" width="350px" height="300px">
</div>
<div>
<img src="images/bar.jpeg" width="350px" height="300px">
</div>
<div>
<img src="images/parkingService.jpg" width="350px" height="300px">
</div>
<div>
<img src="images/svecanaSala.jpg" width="350px" height="300px">
</div>
<div>
<img src="images/slika1.jpg" width="350px" height="300px">
</div>
<div>
<img src="images/room/apartman1.jpeg" width="350px" height="300px">
</div>
</section>

49
<script src="https://code.jquery.com/jquery-2.2.0.min.js"
type="text/javascript"></script>
<script src="js/slick.js" type="text/javascript" charset="utf-8"></script>
<script src="js/slider-slick.js" type="text/javascript" charset="utf-8"></script>
<h1>Kod nas te uvek dobrodosli</h1>
<div class="container-information">

<div class="tekst">
<P class="opisHotela">
Etiam scelerisque nunc eu sagittis rhoncus. Mauris eget
ullamcorper tortor.
Phasellus nisi enim, mattis eu felis sit amet, malesuada pharetra purus.
Integer congue dapibus felis, at vulputate quam lobortis ac.
</p>
</div>
<div class="5zvezda"><img src="images/hotel5.jpg" alt="znakabout1"
width="40%"/></div>
</div>

</div>
<p class="title-text" id="Sobe"></p>
<div class="gallery">
<div class="wrapper">
<img src="images/room/soba1.jpg" alt="znakabout1" width="320px"
height="320px" />
<div class="overlay">
<div class="content">
Dvokrevetna Soba
<p2>Jedna Noc</p2>
15e
<a href="/Home/soba">Rezervisi Sobu</a>
</div>
</div>

</div>
<div class="wrapper">
<img src="images/room/soba2.jpg" alt="znakabout1" width="320px"
height="320px" />
<div class="overlay">
<div class="content">
Soba Medeni Mesec
<p2>Jedna Noc</p2>
15e
<a href="/Home/soba">Rezervisi Sobu</a>
</div>
</div>

</div>
<div class="wrapper">
<img src="images/room/soba3.jpg" alt="znakabout1" width="320px"
height="320px" />
<div class="overlay">
<div class="content">
Soba Grad
<p2>Jedna Noc</p2>
12e
<a href="/Home/soba" >Rezervisi Sobu</a>

50
</div>
</div>
</div>
<div class="wrapper">
<img src="images/room/soba4.jpg" alt="znakabout1" width="320px"
height="320px" />
<div class="overlay">
<div class="content">
Poslovna Soba
<p2>Jedna Noc</p2>
16e
<a href="/Home/soba">Rezervisi Sobu</a>
</div>
</div>
</div>

<div class="wrapper">
<img src="images/room/soba5.jpg" alt="znakabout1" width="320px"
height="320px" />
<div class="overlay">
<div class="content">
Soba Medeni Mesec
<p2>Jedna Noc</p2>
15e
<a href="/Home/soba">Rezervisi Sobu</a>
</div>
</div>
</div>
<div class="wrapper">
<img src="images/room/apartman.jpg" alt="znakabout1" width="320px"
height="320px" />
<div class="overlay">
<div class="content">
Apartman
<p2>Jedna Noc</p2>
35e
<a href="/Home/soba">Rezervisi Apartman</a>
</div>
</div>
</div>
</div>

<div class="about-us">
<div>&nbsp;</div>
<p class="title-text" id="AboutUs">O nama</p>

<div class="images-text">
<div class="about" >Nas bar je mesto gde se dodatno mozete odmoriti i
opustiti</div>
<img src="images/bar.jpeg" alt="znakabout1" width="50%"/>
</div>
<div class="images-text">
<img src="images/parkingService.jpg" alt="znakabout1"
width="100%"/>
<div class="about" >Nase osoblje je ljubazno i pouzdano uvek cete
biti zadovoljni uslugom koja vam je pruzena</div>

51
</div>
<div class="images-text">
<div class="about" >Svecana sala koju imamo u hotelu je velika i
predviljena za sve vrste konferencije</div>
<img src="images/svecanaSala.jpg" alt="znakabout1" width="100%"/>
</div>
</div>

<div class="contact">

<p class="page-title-text" id="Contact">Kontaktirajte


nas</p>

<div id="wrapper-contact" class="wrapper-contact">

<div class="forma">
<form action="">

<label for="fname">Vase Ime</label>


<input type="text" id="fname" name="firstname"
placeholder="Unesi ime">

<label for="mail">Vas mejl</label>


<input type="text" id="mail" name="mail"
placeholder="Unesi Mejl">
<label for="subject">Vase Pitanje</label>
<textarea id="subject" name="subject"
placeholder="Unesite Poruku koju zelite da nam posaljete"
style="height:200px"></textarea>

<input type="submit" value="Posalji">

</form>
</div>

<div class="mapa">

<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d1200.7277236631562!2d21.9015
06653950506!3d42.54446188134326!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x135
51f9de98c11b7%3A0x5adfedd6444f368b!2z0JLRgNCw0ZrQtQ!5e0!3m2!1ssr!2srs!4v1568730067069!5
m2!1ssr!2srs"></iframe>
</div>

</div>

</div>

<div class="footer">

<div class="footer-address"><img
src="images/footer/clokacija.png" class="fi" alt="lokacija"/></div>
<div class="footer-address"> <p> Bulevar AVNOJ,Vranje,Srb
</p> </div>

52
<div class="footer-mail"><img
src="images/footer/crmail.jpg" class="fi" alt="mail"/></div>
<div class="footer-mail"> <p> hotel@hotel.rs </p></div>
<div class="footer-phone"><img
src="images/footer/fontele.png" class="fi" alt="telefon"/></div>
<div class="footer-phone"><p> +38174589123</p> </div>

<div><img src="images/footer/f-icon.png" class="social"


alt="fejsbukfooter"></div>
<div><img src="images/footer/instagram.jpg" class="social"
alt="instagramfooter"></div>
<div class="login"><a href="/Home/Login">Login</a></div>

</div>
</div>

</body>
</html>

Listing 5.Izgled HTML Koda

53
7. Zaključak
Prilikom izrade ovog diplomskog rada rađena je aplikacija za evidenciju gostiju u
hotelu.Obuhvaćen je reazvoj aplikacije od spcifikacije do implementacije svakog sloja
pojedinačno.Pojedini delovi koda su dati kao mogućnost, koja ilustruje način daljeg razvoja
aplikacije. Ovo je ilustrativni primer urađene višeslojne aplikacije.

Krenuli smo od sloja za upravljanje bazom podataka gde smo ispisali SQL upite koje smo dalje
koristili kako bi komunicirali sa bazom i preuzeli podatke koji su nam potrebni. Zatim smo kreirali
sloj poslovne logike sa poslovnim objektima i pravilima. Zatim prelazimo u poslednji sloj
aplikacije a to je prezentacioni sloj. U ovom sloju se nalaze samo minimalna preuzeta svojstva od
sloja modela i ovaj sloj je interfejs koji korisnik vidi. Kreirali smo dve „area“ koje su nam dale
mogućnost koji deo će videti svi korisnici a koji samo admin aplikacije.

Ova aplikacija ima potencijala da se proširi i da korisnicima još potpuniju uslugu.Može se kreirati
desktop aplikacija koja je povezana sa web aplikacijom tako da bi je mogli koristi zaposleni u
hotelu.Takođe treba je dopuniti mogućnošću da korisnik vidi koliki bi račun trebao da plati kada
se uloguje i treba dodati novo polje za registraciju korisnika.

54
8.Literatura
[1] Opis veb aplikacije ,https://atec.rs/web-aplikacije/

[2]Opis tehnologije koju koristi veb aplikacija ,http://bedford-computing.co.uk/learning/wp-


content/uploads/2016/07/Web-Application-Architecture-Principles-Protocols-and-Practices.pdf)

[3]Opis arhtekture softvera ,https://jegadeesansite.files.wordpress.com/2018/01/sei-series-in-


software-engineering-len-bass-paul-clements-rick-kazman-software-architecture-in-practice-
addison-wesley-professional-2012.pdf

[4]Opis višeslojne aplikacije,https://www.techopedia.com/definition/467/two-tier-architecture

[5]Opis porekla reči hotel ,https://studenti.rs/skripte/turizam-ugostiteljstvo/hotel-grand-nis-2/

[6]Opis hotelijerstva kao grane ekonomije,“Upravljanje Ljudskim Resursima U Hotelierstvu“-


Slobodan Čerović,2013

[7]Opis trivaga,https://www.duesseldorf.de/digitalestadt/pdf/ausgabe_2009_2.pdf trviago istorija

[8]Opis Bookinga,https://www.bookingholdings.com/brands/booking/ booking

[9]Opis istorije Bookinga,https://skift.com/2012/06/25/how-booking-com-conquered-world/


istorija bookinga

[10]OpisExpediasoftvera,https://www.sec.gov/Archives/edgar/data/1324424/0001324424180000
06/q42017-10k.htm expedia

[11]OpisTripAdvisora,https://www.marketscreener.com/TRIPADVISOR-
9597196/company/tripAdvisor

[12]Opis statistke Trip Advisora ,https://tripadvisor.mediaroom.com/us-about-us tripAdvisor

[13]Opis .NET tehnologije,https://raf.edu.rs/citaliste/programiranje/4079-sta-je-xa-net-xa

[14]Opis ASP .NET tehnologije,https://docs.microsoft.com/en-us/aspnet/overview

[15]OpisMVCpaternakaodeoASPtehnologije,https://www.tutorialspoint.com/asp.net_mvc/asp.ne
t_mvc_pattern.html

[16]Opis upotrebe Xampp paketa,https://mint.rs/blog/web-hosting-blog/kako-da-instalirate-


xampp-i-wordpress-na-racunaru-sa-windows-operativnim-sistemom-kompletno-uputstvo/

[17]Kratak opis dijagrama komponenti,http://www.vps.ns.ac.rs/Materijal/mat22111.pdf

[18]Diplomski rad Marko Blažić „Razvoj višeslojne web aplikacije uz primenu servisno
orjentisane arhitekture“,2017

55
Lista Slika
[1]https://cdn.business2community.com/wp-content/uploads/2019/04/website-architecture-
content-silos.jpg
[2]https://encrypted-
tbn0.gstatic.com/images?q=tbn:ANd9GcQ4lp0IOoqeN_dOgMYp4GtJNZ9EaA5gO9asia8i_uJe0
XjemktU
[3]https://s.w.org/images/home/screen-themes.png?3

[4]http://softwareprocessengineering.com/_blogs/SPE/pcarchfreeformoverview.jpg
[5]https://i.stack.imgur.com/8kJMI.png
[6]https://www.researchgate.net/profile/Trevor_Mudge/publication/221147997/figure/fig1/AS:3
39672459956226@1457995633431/A-Typical-3-Tier-Server-Architecture-Tier-1-Web-Server-
Tier-2-Application-Server-Tier.png
[7]https://www.researchgate.net/profile/Trevor_Mudge/publication/221147997/figure/fig1/AS:3
39672459956226@1457995633431/A-Typical-3-Tier-Server-Architecture-Tier-1-Web-Server-
Tier-2-Application-Server-Tier_Q640.jpg 2
[8]https://miro.medium.com/max/1080/0*Qf1s2lG86MjX-Zcv.jpg
[9]https://www.turistickisvet.com/pub/news/hotel_grand_enterijer_-_sala__63463463.jpg

[10]https://www.trivago.rs
[11]https://content.presspage.com/uploads/685/1920_pg-imagere.png?10000
[12] https://www.expediagroup.com/
[13] https://www.tripadvisor.rs/

56

You might also like