-diplomski rad- višeslojna web aplikacija za on line ... · internet usluga, odnosno internet...

57
Univerzitet u Novom Sadu Tehnički fakultet „Mihajlo Pupin“ Zrenjanin -Diplomski rad- Višeslojna Web aplikacija za on-line prodaju cveća N-tier web application for on-line flowers selling Student: Jovana Josić Smer: Informacione tehnologije Broj indeksa: IT 65/13 Mentor: Doc.dr Ljubica Kazi Zrenjanin 2017.

Upload: others

Post on 31-Aug-2019

48 views

Category:

Documents


5 download

TRANSCRIPT

Univerzitet u Novom Sadu

Tehnički fakultet „Mihajlo Pupin“

Zrenjanin

-Diplomski rad-

Višeslojna Web aplikacija za on-line prodaju cveća

N-tier web application for on-line flowers selling

Student: Jovana Josić

Smer: Informacione tehnologije

Broj indeksa: IT 65/13

Mentor: Doc.dr Ljubica Kazi

Zrenjanin 2017.

2

Sadržaj

1. UVOD ............................................................................................................................................. 3

2. TEORIJSKE OSNOVE ....................................................................................................................... 4

2.1. On-line prodaja ..................................................................................................................... 4

2.2. Web aplikacije ....................................................................................................................... 5

2.3. Višeslojna arhitektura softvera ............................................................................................. 8

3. ANALIZA SEMANTIČKE OBLASTI .................................................................................................. 12

4. POSTOJEĆA REŠENJA ................................................................................................................... 16

5. OPIS KORIŠĆENE TEHNOLOGIJE .................................................................................................. 22

6. REALIZOVAN PRIMER .................................................................................................................. 24

6.1. Specifikacija zahteva ....................................................................................................... 24

6.2. Modeli opšteg dizajna softvera ....................................................................................... 25

6.3. Modeli implementiranog rešenja višeslojne arhitekture softvera.................................. 32

6.4. Korisničko uputstvo ......................................................................................................... 35

6.5. Opis implementacije ....................................................................................................... 39

7. ZAKLJUČAK .................................................................................................................................. 56

8. Literatura ..................................................................................................................................... 57

3

1. UVOD

Sa napredovanjem tehnologija povećava se upotreba interneta i on postaje jedan od glavnih

vidova komunikacije, ali i sistema prodaje. On-line prodaja je sve zastupljenija u svetu, tako

da je u Americi postala i najpopularniji način kupovine i samim tim je potisnula mnoge

tradicionalne prodavnice. U Srbiji do pre nekoliko godina nije bio popularizovan ovaj način

prodaje, jer je mali broj ljudi imao hrabrosti da se odluči za kupovinu preko interneta, ali iz

godine u godinu raste broj sajtova za kupovinu i kod nas. Glavna prednost ovog načina

kupovine je mogućnost kupovine od kuće, bez odlaska do prodavnica koje su kilometrima

udaljene, a to znači da se slobodno vreme namenjeno kupovini može drugačije iskoristiti.

On-line kupovina zahteva sigurnost i pouzdanost od strane prodavaca, ali i odgovornost od

strane kupaca da će poručenu pošiljku preuzeti. Tako da prilikom kupovine moramo

pročitati uslove i potvrditi saglasnost sa unetim ličnim podacima da bismo garantovali

njihovu ispravnost. Sajt poput „Kupujem Prodajem“ zahteva unošenje podataka sa lične

karte i u slučaju nekog prekršaja ili prevare možete odgovarati.

Život bez mobilnih telefona postao je nezamisliv, tako da danas retko koju osobu možemo

sresti da ne poseduje ili ona ili neko od ukućana bar jedan mobilni uređaj ili tablet. Zbog

ovih podataka Web aplikacije su se vremenom prilagođavale uređajima, tako da sada na

svojim telefonima možemo pristupiti gotovo svim Web aplikacijama i one će biti

prilagođene mobilnom uređaju ili tabletu odnosno njihovim ekranima. Sistem kupovine

preko interneta samim tim je omogućen svima, odnosno osobama koje poseduju bar neki od

uređaja preko kojih se mogu povezati na internet.

U osnovi kreirane Web aplikacije za prodaju cveća nalazi se ljubav prema cveću koja je

ispoljena kroz nenamensku aplikaciju za prodaju. Aplikacija koja je pravljena u radu je

prezentacionog tipa, odnosno nije pravljena namenski za neku firmu. Web prodavnica za

prodaju cveća iz rada je ilustrativna i ne podržava sve opcije on-line kupovine ali postoji

mogućnost za nadogradnju i usavršavanje.

4

2. TEORIJSKE OSNOVE

2.1. On-line prodaja

On-line prodaja je vid elektronske kupovine koja omogućava kupcu da preko interneta

odabere i naruči proizvod koji želi da kupi i da mu proizvod bude dostavljen na kućnu

adresu.

Polovinom 80-ih godina se prvi put spominje pojam internet kupovine i internet poslovanja.

Prvi predmet koji je prodat preko interneta bio je CD Stinga „Ten Summoner's Tales“, koji

je prodala grupa studenata sa Swarthmore College-a iz Amerike. Nakon toga nastao je prvi

web sajt za online prodaju kog je napravio Pjer Omidar 1996., „AuctionWeb“ i on je na svoj

sajt postavio pokvareni laser koji je želeo da proda, čuveni Pjerov laser tada je postigao cenu

od 14.83$ i prvi on-line sajt za prodaju je zaživeo. Pjer je svoj sajt preimenovao u „Echo

Bay“ poznatiji kao „eBay“ i vremenom postao milioner, popularizacijom i razvojem internet

prodaje. Godinama se trgovina preko interneta usavršavala, da bi već danas postala jedna od

vodećih načina trgovine.[17]

Kao začetak elektronskog poslovanja u Srbiji uzima se 29. jun 1993. godine kada je

osnovana Jugoslovenska asocijacija za elektronsku razmenu podataka (Yugoslav

Association for Electronic Data Interchange – YUEDI) sa zadatkom da popularizuje

primenu EDI sistema u tadašnjoj Jugoslaviji. Do pojave prvih računarskih dobavljača

Internet usluga, odnosno Internet provajdera dolazi 1995. godine. [15]

U prvoj fazi elektronske trgovine u Srbiji implementiran je samo proces naručivanja robe

preko Interneta, dok se plaćanje za robu obavlja pouzećem uz fizičku isporuku robe. Do

masovnije pojave prodavnica u SRJ dolazi u julu 1998. kada Eunet u saradnji sa Firmom

YUGate otvara prvi elektronski virtuelni trgovinski centar.

Do pojave većeg broja funkcionalnih e-prodavnica dolazi sa pojavom elektronskih kartica

koje omogućavaju onlajn plaćanje, što predstavlja drugu fazu u razvoju e-trgovine u Srbiji.

1999. osniva se E-Bank.co.yu prvi i do danas jedini Internet payment provajder, namenjen

procesiranju platnih kartica. [16]

Kao treća faza razvoja srpske e-trgovine uzima se period od 2002. godine do danas.

Iz godine u godinu raste broj sajtova u Srbiji koji se bave ovim vidom prodaje. Ne postoji ni

jedan veći i popularniji brend koji nema svoj Web shop. Takođe se popularizuju i mobilne

aplikacije kao vid kupovine i ljudi se polako navikavaju na trgovinu preko interneta.

Svaka on-line kupovina zahteva određene korake koje korisnik mora ispuniti da bi poručio

željeni proizvod. Prvenstveno se mora fokusirati na izbor plaćanja, način isporuke, željeni

proizvod vrstu i sigurnost u izboru vrste proizvoda za dostavu. Neke on-line prodavnice

dozvoljavaju i zamenu robe uz plaćanje troškova transporta koje snosi kupac. Savetuje se

uvek provera podataka pre poručivanja, zbog toga većina on-line prodavnica pri svakom

koraku nudi opciju „Da li ste sigurni“ da bi se korisnik vratio na prethodni korak ako nije

saglasan sa narudžbinom ili ako je došlo do greške pri izboru proizvoda.

5

Slika 1. Ilustracija on-line kupovine[25]

Kupovina putem interneta evoluira iz dana u dan. Sve više firmi želi da proširi svoju prodaju

i sve su veće potrebe za developer-ima web sajtova.

Postoje različite vrste on-line prodaje, a među najpoznatijim su:

B2C (Business-to-Consumer)

B2B (Business-to-Business)

C2C (Consumer-to-Consumer)

B2C vid prodaje podrazumeva da kompanije prodaju robu krajnjim potrošačima preko

softvera za prodaju automatski bez potrebe za dodatnom interakcijom između ljudi.

Najpoznatiji sajt koji funkcioniše po ovom principu je Amazon.

B2B prodaja se odnosi na prodaju između kompanija, kada primera radi velike kompanije

prodaju robu prodavcima na malo.

C2C je vrsta kupovine gde kupac prodaje kupcu. Najverodostojniji primera ovakvog načina

on-line prodaje je eBay.

2.2. Web aplikacije

Web aplikacije su nastale razvojem Web sajtova koji u svojoj osnovi predstavljaju skupove

Web stranica koje su smeštene na određeni Web server. Web aplikacija predstavlja

softverski proizvod koji se izvršava na web serveru, a prikazuje korisniku pomoću Web

čitača. Da bi Web aplikacija funkcionisala potrebno je da se realizuje u programskom jeziku

koji podržava web server kao softverski „engine“ (odnosno hosting web aplikacije koju

tehnologiju podrzava), da bi on mogao datu aplikaciju da prevede i izvrši.

Web aplikacija omogućava korisnicima lakši pristup internetu i interaktivnost između

Interneta i korisnika. Desktop aplikacije moraju biti instalirane na klijent računaru da bi se

uopšte mogle koristiti. Kod web aplikacija to nije slučaj jer se one nalaze na jednom mestu

(serveru ili grupi servera). Ovim se minimizuju mnogi problemi, pre svega problemi sa

distribucijom, nadogradnjom aplikacija i generalno u slučajevima kada kod desktop

6

aplikacija korisnik mora da preuzme i instalira/updatuje aplikaciju. Bitna stvar je da kod

web aplikacija korisnik nikada ne dobija samu aplikaciju, već samo interfejs ka njoj što je u

suštini sve što mu i treba.[1]

Slika 2. Funkcionisanje tipične Web aplikacije[12]

Princip po kome funkcionišu Web aplikacije je prilično jednostavan. Korisnikov web

browser (čitač) šalje zahtev Web serveru, koji podatke prosleđuje Web aplikaciji, ona ih

obradi, a rezultat vraća serveru, pa napokon i browseru. U toj situaciji browser uopšte ne zna

da li ste usluženi statičkom stranicom ili je kod koji vaš browser pikazuje generisan od

strane Web aplikacije. Nije mu ni bitno, dokle god prosleđeni kod razume i može da prikaže.

Uvođenjem programskih elemenata u prikaz Web stranica nastala su dva tipa Web stranica,

a to su:

Statičke – izgled im je definisan već prilikom prve izrade

Dinamičke – izgled im se definiše kroz interakciju sa serverom

Najpoznatije tehnologije – programski jezici za razvoj Web aplikacija su:

ASP/ASP.NET (C#)

Java

PHP [12]

Bitna kvalitativna svojstva samih Web aplikacija i procesa razvoja mogu se povezati sa

opštim standardom evaluacije kvaliteta softvera ISO/IEC 9126-1, čija se svojstva mogu

analizirati na osnovu Slike 3.

Slika 3. Kriterijumi evaluacije Web aplikacija usklađene

sa ISO/IEC 9126-1 standardom[12]

Jedna od osnovnih mera kvaliteta Web aplikacija su preformanse. Glavna preformansa koja

utiče na uspešnost jedne Web aplikacije je vreme odziva, koja prvenstveno utiče na kvalitet

i upotrebnu vrednost aplikacije. Ako je nekoj Web aplikaciji potrebno mnogo vremena da bi

se učitala, korisnik će odustati od datog sajta i potražiti sledeći. Zbog toga je veoma bitno

obratiti pažnju na vreme odziva prilikom kreiranja Web aplikacije da bi naša aplikacija bila

kvalitetna i posećena. Vreme odziva predstavlja period koji prođe od upućenog zahteva

7

korisnika do povratne informacije koju korisnik dobija i ako prođe duže od 8 sekundi,

korisnici najčešće odustaju od datog sajta.

Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti,

prakse i automatizovanih alata koje programeri koriste za razvoj i održavanje sistema i

softvera. Postoje dve osnovne vrste metodologija razvoja softvera, a to su:

Sekvencijalna metoda (metoda vodopada)

Iterativna metoda

Sekvencijalna metoda je stariji pristup razvoja softvera, i upotrebljiv je isključivo na manje

zahtevnim aplikacijama. Ova metoda daje rezultate visokog kvaliteta ali jedan od glavnih

nedostataka joj je veoma veliko trajanje razvoja ovakvog sistema, ali i nemogućnost

naknadnih otklanjanja nedostataka. Iz ovog razloga su razvijene različite varijacije modela

vodopada u kojima se faze dizajna i implementacije u izvesnoj meri preklapaju. Sve ove

metodologije dele nekoliko zajedničkih atributa: broj faza kroz koje prolaze, broj iteracija

koji je potreban da bi se kreirao softver, kao i tipično trajanje jedne iteracije. Sve faze se

izvršavaju sekvencijalno, i uvek postoji bar jedna iteracija koja završava sa kreiranjem

softvera. Razlike između metodologija su u redosledu po kojem se ulazi u određene faze,

broju zahtevanih iteracija i trajanju svake iteracije. Ilustracija metode vodopada prikazana je

na slici 4.[5]

Slika 4. Sekvencijalna metoda[12]

Iterativna metodologija nastoji da se životni ciklus softvera sastoji od nekoliko iteracija koje

mogu da se preklapaju u vremenu. Ovakav tip metedologije omogućava lakše prelaženje sa

procesa na proces ali i vraćanje na prethodne procese ukoliko dođe do greške što omogućava

ispravljenje grešaka, za razliku od sekvencijalne metode kod koje je ovaj postupak dosta

komplikovaniji i ne postoji vraćanje kada se jednom prođe kroz dati korak dok se čitav

proces ne završi. Ova metoda je dosta praktičnija za upotrebu od metode vodopada i

primenjuje se u zahtevnijim Web aplikacijama i softverskim proizvodima. Iterativna metoda

predstavljena je na slici 5.

8

Slika 5. Iterativna metoda – šema [5]

2.3. Višeslojna arhitektura softvera

Softverska arhitektura jednog računarskog sistema predstavlja skup objekata koji su potrebni

za funkcionisanje nekog sistema, a sadrže softverske elemente, odnose između elemenata i

njihove osobine. [2] Softverska arhitektura svoj fokus usmerava na pravilno korišćenje

elemenata i komponenti u okviru aplikacije. Neizostavni pojam uz softversku arhitekturu je

softverski dizajn. Da bi softver bio što boljeg kvaliteta mora se usavršiti i dizajn ali i

arhitektura i ove dve osobine se moraju kombinovati.

Arhitekturu softvera možemo podeliti prema opštim obrascima, a to su:

Monolitna arhitektura

Dvoslojna (klijent-server) arhitektura

Troslojna i višeslojna arhitektura (three – tier /multi – tier)

Servisno orjentisana arhitektura softvera[4]

Višeslojna arhitektura je pojam koji se odnosi na arhitekturu koja se sastoji iz tri glavna

sloja. Troslojna arhitektura je takva arhitektura kod koje je potrebno uvesti još jedan sloj tzv.

srednji sloj u kome se nalazi aplikativni server. Početak razvoja ovakvih arhitektura datira

od 1990 godine i za razvoj ovakve arhitekture moguće je primeniti više različitih

tehnologija. Troslojna arhitektura je generička za višeslojne arhitekture. Ovde se vrši dalja

podela na komponente u okviru srednjeg sloja sa ciljem još većeg povećanja skalabilnosti,

odnosno performansi. Srednji sloj se deli na dva sloja: jedan je namenjen za opsluživanje

Web klijenata, a drugi vrši implementaciju poslovne logike sistema. Nekada se srednji sloj

delio na dva ili više sloja u zavisnosti od aplikacije pa dobijamo višeslojnu (multitier)

arhitekturu. [3]

MVC arhitekturni obrazac deli objektno orjentisanu aplikaciju na tri celine:

1. Model – zadužen za upravljanje podacima

2. View – ima zadatak da upravlja prikazom informacija

3. Controller – predstavlja logiku aplikacije (prenosi zahteve i usmerava ulaze)

9

Na sledećoj slici je islustrovan prikaz MVC arhitekture:

Slika 6. MVC obrazac[30]

Model čuva podatke, Controller zadaje komande modelu za preuzimanje podataka, a zatim

kontroler zadaje komande kojima se podaci prikazuju u View. View generiše novi izlaz

(output) koji je predstavljen korisniku, na osnovu promena koje su se desile u modelu.

Controller može da šalje komande Model-u da promeni stanje modela. Controller može da

šalje komande na View da se izmeni prikaz podataka na osnovu izmena modela ili da se

prikaže druga vrsta ili način ponašanja View. Svaki View ima komponente koje su povezane

sa Controller-om tako da su međusobno usko povezani i ne bi mogli zasebno da

funkcionišu.[6]

MVC zahteva razdvajanje odgovornosti (SoC) jer su model i logika kontrolera razdvojeni od

korisničkog interfejsa. U okviru Web aplikacija, ovo znači da je HTML kod izdvojen od

ostatka aplikacije, što čini održavanje i testiranje jednostavnijim i lakšim.[5]

Objektno orjentisana implementacija MVC modela definiše posebne klase za svaku

komponentu. Ne postoje bilo kakva ograničenja kada je u pitanju implementacija domen

modela. Možemo kreirati model pomoću standardnih C# objekata i implementirati

skladištenje pomoću bilo koje baze podataka, objektno-relacionog mapiranja, ili drugih alata

koji su podržani od strane .NET-a. MVC se takođe može koristiti za izgradnju framework-a

interaktivnih aplikacija.

Sa slike 7. možemo videti da korisnici pristupaju prezentacionom sloju , a taj sloj predstavlja

sam izgled aplikacije i on se može implementirati korišćenjem MVC paterna.

Takođe dodat je sloj servisa koji komunicira sa spoljnim sistemom u cilju poboljšanja

zahteva korisnika i reagovanja na greške aplikacije.

10

Slika 7. Višeslojna arhitektura (ASP.NET aplikacija)[5]

Putem prezentacionog sloja se pristupa sloju servisa, a on dalje obrađuje podatke i šalje

povratne informacije, ali i komunicira sa ostalim delovima aplikacije. Ako je potrebno da

neki sistem komunicira sa aplikacijom, on to radi preko sloja servisa koristeći sopstveni

prezentacioni sloj.

Prednost koja se dobija korišćenjem slojeva u kreiranju neke aplikacije je mogućnost za

razdvajanje nadležnosti delova aplikacije, ali i lakša izmena i ponovna upotreba delova

koda. Kreiranje aplikacije sa slojevima se predlaže kod kompleksnijih aplikacija, ali je sve

zastupljenije i kod manje zahtevnih aplikacija.

Prezentacioni sloj predstavlja korisnički interfejs i nijedna aplikacija ne bi bila upotrebljiva

bez njega, zbog toga ima izuzetnu važnost u slojevitim aplikacijama. Prezentacioni sloj se

dodaje na postojeći srednji sloj aplikacije. Osnovne komponente prezentacionog sloja su:

Korisnički interfejs

Prezentaciona logika

Korisnički interfejs, iako neki smatraju manje bitnom komponentom aplikacije, predstavlja

neophodan deo slojevitog sistema jer on daje korisniku alate pomoću kojih će program

koristiti, tako da bi bez korisničkog interfejsa aplikacija bila neupotrebljiva. Svaka opcija

programa koju korisnik odabere prikazivaće mu se pomoću korisničkog interfejsa. [5]

Prezentaciona logika je povezana sa prikazom podataka na ekranu. Ovaj tip logike odgovara

na korisnikove zahteve, šalje povratne informacije i date zahteve daljim slojevima

aplikacije. Prezentaciona logika ima zadatak da obrađuje informacije koje prosledi

korisnički interfejs i da ih šalje ka srednjem sloju i isto tako povratne informacije od

srednjeg sloja ka korisničkom interfejsu.

11

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

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. Slika 7. prikazuje

odnos sloja za pristup podacima sa ostalim slojevima i bazom podataka. [5]

Slika 7. Sloj za pristup podacima[5]

12

3. ANALIZA SEMANTIČKE OBLASTI

Sobno cveće su biljke koje odgajamo u domu zbog lepih cvetova i listova koje su sposobne

da rastu u uslovima koji se svakodnevno menjaju i nisu prvenstveno prilagodjeni zahtevima

biljke.

Prve zapise o odgajanju saksijkih biljaka u kuci nalazimo pre gotovo pet hiljada godina kod

Kineza koji su u svojim palatama uzgajali biljke u posebnim ukrasnim posudama. Viseći

vrtovi Vavilona sastojali su se samo od biljaka odgajanih u saksijama na terasama. Ima

podataka koji ukazuju na promenljive trendove, modu i obicaje, no ipak umetnost

odgajivanja sobnog cveća nije izgubila na svojoj atraktivnosti i na nasu sreću u sve većem

broju se pojavljuju po nasim kancelarijama, holovima većih institucija, šoping centara,

uspevajući ipak da se utkaju u uobičajen deo našeg zivota. Na internetu postoji mnoštvo

priručnika za pravilan uzgoj sobnih biljaka, ali takođe postoje i prodavnice koje se bave

internet prodajom cveća i spremne su da daju savete za svaku biljku pojedinačno. [13]

Slika 8. Ilustracija Vavilonskih vrtova – istorija cvećarstva[24]

Da bi biljka opstala u kućnim uslovima potrebno je posvetiti joj dosta pažnje, u zavisnosti

od vrste koju gajite. Neke biljke vole dosta vode, neke svetlost, a neke jednostavno možete

da kupite i zaboravite kada ste ih poslednji put zalivali kao što je kaktus. Potrebno je takođe

održavati higijenu i čistiti biljke od prašine da bi one mogle uspešno da vrše fotosintezu.

Svaki katalog biljaka sadrži uputstvo za gajenje biljaka, tako da bi najbolje rešenje bilo, pre

nego što se odlučite da kupite i uzgajate neku biljku, pročitate kakve uslove ona zahteva i da

li vi posedujete te uslove.

13

Primer kataloga za prodaju cveća koji sadrži savete o uzgoju datih biljaka:

Slika 9. Primer kataloga cvećare „Mali vrt“ [22]

U nastavku će biti prikazana dva primera specifikacije pojedinih vrsta sobnih biljaka:

Ehmeja

Slika 10. Ehmeja [11]

Opšte informacije i poreklo:

Potiče iz tropskih krajeva i u prirodnom staništu živi kao parazit na drveću. Raste do 50cm u

visinu. Ima tvrdo lišće povijeno na dole, sivo zelene je boje sa belim isprekidanim prugama.

14

Iz središta biljke izbija cvast(klas) ružičaste boje, iz njega se razvijaju mali plavi cvetovi koji

vrlo brzo venu dok ružičasta cvast ostaje i do 6 meseci.

Način uzgajanja:

Može da podnese nekoliko sati direktne sunčeve svetlosti, ali ne i prejako sunce. Minimalna

temperatura na kojoj se gaji zimi je 15C, a leti maksimalna 27C pod uslovom da je visoka

vlažnost. Zalivanje se vrši odstajalom vodom ili kišnicom, u centar biljke. Zemlja tokom leta

treba da bude vlažna, a u toku zime je prepporučljivo pustiti je da se malo prosuši pre

početka zalivanja. Leti se prihranjuje svake dve nedelje.[14]

Adam

Slika 11. Adam [23]

Opšte informacije i poreklo:

Biljka adam je poreklom iz tropskih predela Indije. U svojoj postojbini dostiže veliku visinu,

pa se često ispod njegovih listova odmaraju ljudi. U kontinentalnim zemljama se odavno

gaji kao sobna biljka. Brzo raste i njegovi veliki listovi postaju zanimljiv egzotičan detalj u

enterijeru, a za vreme toplijih dana i u eksterijeru doma.

Cveta leti malim i neuglednim cvetovima zelene boje. Iz cveta se razvija semenka kojom se

može uspešno razmnožiti.

Način uzgajanja:

Treba ga staviti na mesto sa dovoljno sunca. Ne treba ga direktno izlagati sunčevoj svetlosti,

jer listovi mogu da požute i počnu da se suše. Može da napreduje dobro i na senovitim

mestima, ali tada ima daleko duže lisne drške i treba da se zaliva znatno manje. Idealna

temperatura u zimskom periodu za gajenje adama je 15 stepeni, a najmanja koju može da

podnese je 5 stepeni. Lepo raste dok je napolju, i zato u proleće, nakon mrazeva može da se

iznese napolje. Prija mu dosta vode, pa ga treba često zalivati, naročito ako je u sobi

centralno grejanje. [14]

Iz navedenog opisa mogu se izvući podaci za detaljniju evidenciju u bazi podataka, kao što

su:

15

1. Osunčavanje – koliko biljka zahteva svetlosti i kakva mesta se preporučuju za

odgajanje biljke

2. Zalivanje – kolika količina vode je potrebna za zalivanje odgovarajuće vrste cveća

3. Zemljište – da li je biljci potrebno zemljište koje zahteva dodatne prihrane, ili je

dovoljan običan humus

4. Prihrane – da li je potrebno dodavati dodatne supstance tokom cvetanja ili rasta

biljke

5. Presađivanje – koji period je potreban da prođe da bi se vršilo presađivanje biljke

16

4. POSTOJEĆA REŠENJA

On-line cvećara „Teleflora“

On-line cvećara „Teleflora“ je web aplikacija za podršku radu same cvećare koja se takođe

zove Teleflora, koja je nastala 1995. godine, „kao Teleflora d.o.o. preduzeće za cvetni

dizajn, organizaciju i dekoraciju venčanja i dostavu cveća u Beogradu, našoj zemlji i u 185

zemalja širom sveta.“[7]

Na sledećoj slici je prikazana on-line prodavnica cvećara „Teleflora“. U pitanju je srpska

prodavnica koja se bavi prodajom buketa, aranžmana ali i sobnim biljkama i dekorativnim

saksijama. Slika ilustruje osnovni prikaz prodaje sobnog cveća.

Slika 12. Prikaz stranice on-line cvećare „Teleflora“[7]

Sledeća slika ilustruje prikaz korpe i opcije koje nudi prilikom naručivanja proizvoda.

Prilikom dodavanja proizvoda u korpu neophodno je označiti veličinu aranžmana koji

želimo da naručimo da bi se proces kupovine mogao nastaviti.

17

Slika 13. Prikaz korpe cvećare „Teleflora“[7]

Prethodno prikazana Web aplikacija za on-line prodaju cveća poseduje opcije prijavljivanja,

blog na kome se mogu postavljati pitanja zaposlenima, karticu saveti gde se mogu pronaći

saveti o cveću, zatim opciju kontakt gde se nalaze podaci o firmi i telefoni. Cvćara

„Teleflora“ vrši i isporuku cveća širom sveta, tako da je jedna od naših najsavremenijih on-

line cvećara.

Aplikacija sadrži sve potrebne funkcije za pravilno funkcionisanje on-line prodavnice.

Mogla bi se dodati opcija za kreiranje poklon kartice i ispisa željene poruke, da bi se

kompletirala funkcionalnost aplikacije. Takođe se može dodati mapa do tradicionalne

prodavnice sa lokacijom i forma za postavljanje pitanja koja bi automatski prosleđivala

poruke na mail prodavnice.

Link preko koga se može pristupiti aplikaciji je:

http://teleflora.rs/content/kontakt

On-line cvećara „ProFlowers“

Cvećara „ProFlowers“ se nalazi u Kanadi – San Diegu. Poseduje veoma veliki lanac prodaje

i takođe omogućava prodaju svojih proizvoda širom sveta. On-line aplikacija cvećare

podržava PayPal način plaćanja proizvoda što njihovu Web aplikaciju za prodaju čini

besprekornom i pristupačnom ljudima širom sveta. Takođe sadrži prečice do društvenih

mreža i time je stekla popularnost od preko 400 hiljada pratilaca na Facebook-u, što je i

18

jedan od glavnih markentinških zadataka u popularizaciji neke Web aplikacije. Nije bitno

samo kreirati aplikaciju, od izuzetne važnosti je i dobro promovisanje i povezanosti sa

popularnim društvenim mrežama.

Na sledećoj slici je prikazana početna strana aplikacije sa svim opcijama koje nudi.

Slika 14. Prikaz početne stranice Web aplikacije „ProFlowers“[21]

Web aplikaciji se može pristupiti preko sledećeg linka:

http://www.proflowers.com

Na početnoj strani postoji veliki broj kartica koje korisniku omogućavaju lakši pristup i

sortiranje sadržaja. Periodično se pojavljuju i reklame – promocije koje se prostiru preko

celog ekrana, što predstavlja marketinški trik za efikasniju zainteresovanost kupaca. Blog

koji se nalazi na stranici poseduje veliki broj priča i saveta, što je još jedan plus za datu web

aplikaciju i njenu popularnost.

Ova Web aplikacija podržava i mogućnost prijave i kreiranje naloga, što je prikazano na

sledećoj slici.

19

Slika 15. Prikaz opcija za kreiranje naloga i prijavu na Web sajt „ProFlowers“[21]

Prilikom naručivanja proizvoda date cvećare postoji opcija za odabir datuma za isporuku.

Tako da se cveće može naručiti za tačan datum koji kupcu odgovara. Prilikom plaćanja se

moraju ostaviti podaci računa ukoliko niste odabrali plaćanje preko PayPall naloga, jer ne

postoji opcija plaćanja pouzećem kao kod naših aplikacija. Takođe možete odabrati kome

šaljete i napisati specijalnu poruku, ukoliko želite, ako ste naručili cveće za neku posebnu

priliku. Prikaz date opcije je na slici 13.

Slika 16. Prikaz poklon kartice koja se dostavlja uz porudžbinu (ukoliko želite)[21]

Web aplikacija cvećare „ProFlower“ je kompletirana, izmene bi se mogle vršiti u izgledu

aplikacije i u interaktivnosti sadržaja. Mogle bi se dodati animacije koje bi upotpunile

zanimljivost sadržaja. Što se tiče funkcionalnosti, sajt ne zahteva dodatne izmene.

20

On – line cvećara „Dunjin cvet“

Web aplikacija cvećare „Dunjin cvet“ je delimično kompletirana. Dosta je pažnje posvećeno

korisničkom interfejsu i modernizaciji same alikacije. Prethodne dve on-line cvećare nisu

pridavale značaj interfejsu. Sve opcije na sajtu funkcionišu, ali nedostaje još mogućnosti,

kao što su blog, forma za pitanja, mogućnost odabira poklon kartice, informacije o gajenju

cveća.

Slika 17. Početna strana Web aplikacije „Dunjin cvet“[20]

Aplikacija poseduje i opcije za registraciju i prijavu, kao i korpu i sve neophodne funkcije za

poručivanje proizvoda. Pre nego što se prizvod naruči neophodno je izvršii registraciju

korisnika. Ilustracija procesa narudžbine se može videti na sledećoj slici.

Slika 18. Forma za naručivanje Web aplikacije „Dunjin cvet“[20]

Nedostatak aplikacije je to što ne postoji nikakva verifikacija unetih podataka, tako da se

mogu uneti potpuno pogrešni podaci i proizvod će biti dostavljen na tu adresu. Takođe nisu

upotpunili aplikaciju dodatnim sadržajem o biljkama ili nekim najčešćim pitanjima koja im

postavljaju kupci. Sve dodatne izmene koje bi se vršile nisu izmene u samoj aplikaciji, već u

21

funkcionisanju sadržaja i njegovoj usklađenosti. Nekoliko opcija uopšte ne radi ili je u

pripremi, kao što su „Kako poručiti“.

Slika 19. Ilustracija opcije „Kako poručiti“ koja nije završena[20]

Link preko koga se može pristupiti datoj aplikaciji je:

http://www.dunjincvet.com

22

5. OPIS KORIŠĆENE TEHNOLOGIJE

U ovom radu je korišćen PHP programski jezik, a PHP stranice se pokreću korišćenjem

Apache web servera i MySQL sistema za upravljanje relacionom bazom podataka. Oba

servera (web server i server baze podataka) su integrisani u okviru XAMPP softverskog

paketa.

PHP (Hypertext Preprocesor) je open-source server-side skriptni jezik, koji se koristi za dinamčko

prikazivanje HTML koda. Dakle, pomoću PHP-a se može kreirati HTML stranica na serveru i pre

nego što se ona pošalje klijentu. Zbog ovog načina generisanja sadržaja, krajnji korisnik ne može

videti kod odnosno skriptu, koja je generisala sadržaj stranice koji on gleda, već on vidi tj. ima

pristup čistom HTML kodu. [28]

PHP je jedan od najmoćnijih i najpopularnijih skriptnih jezika trenutno na tržištu. Svakim danom

raste i broj sajtova koji su napravljen uz pomoć PHP-a, a i broj kompanija koje žele primeniti ovu

vrstu jezika na svojim sajtovima je sve veći. PHP je pre svega stekao popularnost zbog lakoće kojom

se može stvoriti opširna web stranica sa jako velikim količinama podataka.

Da bi se pokrenula PHP stranica na računaru, potreban je lokalni web server. Najlakši način da se to

uradi je da se preuzme i instalira MAMP za OS X ili XAMPP za Windows i Linux. Kada se instalira

neki od ovih paketa može se početi sa korišćenjem PHP-a. Tako što se postavi fajl index.php u

htdocs direktorijum MAMP ili XAMPP instalacije i poziva se kao localhost/index.php. [27]

Sledeća slika ilustruje primer PHP koda koji poziva različite funkcije.

Slika 20. Prikaz funkcija PHP jezika – primer [29]

23

XAMPP

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.[28]

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)

Slika 21. Prikaz XAMPP programa

24

6. REALIZOVAN PRIMER

6.1. Specifikacija zahteva

Specifikazija zahteva za izradu Web aplikacije koja se bavi on-line prodajom odnosi se na

spisak svih funkcionalnih mogućnosti koje aplikacija nudi, podeljenih prema profilima

korisnika koji će koristiti aplikaciju. U nastavku je dat tabelarni prikaz funkcionalnih

zahteva OPŠTE ONLINE PRODAVNICE. 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).

Specifikacija poslovnih aktivnosti kupca i odgovarajucih softverskih funkcija:

POSLOVNA

AKTIVNOST

SOFTVERSKA PODRŠKA I DETALJI POSLOVNE

AKTIVNOSTI

Izbor proizvoda Prelistavanje kataloga proizvoda i odabir proizvoda koji kupac

želi da naruči

Narudžbina Kupac je dužan da odabere željeni proizvod i doda u korpu

Plaćanje Prilikom plaćanja (završetka kupovine, tj zatvaranja korpe),

potrebno je da kupac navede način plaćanja

Tabela 1. Specifikacija dužnosti kupca

Specifikacija poslovnih aktivnosti prodavca i odgovarajucih softverskih funkcija:

POSLOVNA

AKTIVNOST

SOFTVERSKA PODRŠKA I DETALJI POSLOVNE

AKTIVNOSTI

Unos robe Prodavac je dužan da unese robu na sajt i omogući kupcima

pregled asortimana prodavnice

Pregled narudžbina Prilikom poručivanja od strane kupca automatski se

narudžbina prosleđuje u bazu podataka prodavnice i prodavac

pred sobom otvara tabelarni prikaz narudžbina koje je

potrebno pripremiti za isporuku

Pregled uplata Pre nego što se narudžbina upakuje potrebno je proveriti

uplate i označiti uplatu pouzećem ako nije izvršena preko

interneta. Pred prodavcem se prikazuje tabelarni prikaz

izvršenih uplata

Provera podataka Da bi se narudžbina isporučila potrebno je da prodavac

proveri podatke i proceni tačnost, takođe može nazvati kupca

koji prilikom registracije ostavlja broj telefona, zbog provere

tačnosti informacija

Slanje narudžbine Ako su informacije tačne i ako je porudžbina proverena,

prodavac vrši slanje pošiljke preko odabrane kurirske službe

Tabela 2. Specifikacija dužnosti prodavca

S obzirom da je u radu stavljen naglasak na prodaju cveća, analizom semantičke oblasti

utvrđeni su specifični podaci koji treba da budu evidentirani u okviru unosa robe. Posebno je

25

značajno prilikom prikaza robe kod naručivanja prikazati sliku i specifikaciju biljke sa

podacima o održavanje.

6.2. Modeli 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 bilo koje prodavnice, koji se može podržati softverski.

Slika 22. Izgled BPM modela i okruženja Power Designer-

Detaljniji prikaz BPM modela se može videti na slici 22.

26

Slika 23. BPM model nabavke i prodaje robe u prodavnici opsteg tipa

6.2.2. Use case dijagram

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 prodavca i kupca, a deo

dobavljaca nije podrzan jer taj deo pripada informacionom sistemu dobavljaca i izvan je

domena rada. 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.

27

Primitivni

poslovni

proces

Radna

uloga

izvršioca

primitivno

g

poslovnog

procesa

Softverska funkcija

Preduslov

za uspešno

izvršavanje

funkcija 1.

prioriteta

Actor

(Profil

korisnika

softversk

e

funkcije)

Tip

softver

a

1.prioriteta 2.prioriteta

Prijem robe Prodavac Unos podataka

o primljenoj

robi

Tabelarni

prikaz

podataka

dospele

robe, Filter

podataka

prema

datumu

dospele

robe,

parametarsk

a štampa

Unos

narudžbenic

e za

dobavljača

Dobavljač c/s

LAN,

WEB

Kreiranje

kataloga

Prodavac Unos proizvoda

za katalog,

Štampanje

kataloga

Tabelarni

prikaz

proizvoda

koji će se

koristiti u

katalogu

Unos

podataka o

primljenoj

robi

Prodavac c/s

LAN,

WEB

Naručivanje Kupac Unos podataka

o proizvodima

za narucivanje

Tabelarni

prikaz

narudžbenic

e koja sadrži

podatke o

proizvodima

i o kupcu,

Filter

podataka po

datumu

prijem i

parametarsk

a štampa

narudžbenic

e

Unos

proizvoda za

katalog

Kupac WEB

Prijem

narudžbenic

a

Prodavac Tabelarni

prikaz

narudžbenica

Filter unetih

podataka

prema

rednim

brojevima

narudžbenic

Unos

podataka o

proizvodima

za

naručivanje

od kupca

Kupac c/s

LAN,

WEB

28

a

Plaćanje Kupac Unos podataka

o plaćanju

Tabelarni

prikaz

realizovanih

plaćanja

Tabelarni

prikaz

narudžbenic

a

WEB

Evidentiranj

e uplata

Prodavac Unos podataka

o potvrdi

izvrsenja uplate

kupca

(uporedjivanje

m sa

bankarskim

izvodom)

Tabelarni

prikaz

potvrdjenih

uplata, Filter

podataka o

dospelim

uplatama

prema

datumu

plaćanja

Unos

podataka o

plaćanju od

strane kupca

Kupac c/s

LAN,

WEB

Slanje

porucene

robe

Prodavac Unos podataka

o slanju

proizvoda

Tabelarni

prikaz

podataka o

pošiljkama,

Filter

podataka o

slanju prema

broju

narudžbenic

e i datumu

Unos

podataka o

proizvodima

za

narucivanje

od kupca

Unos

podataka o

potvrdi

izvrsenja

uplate kupca

Prodavac c/s

LAN,

WEB

Tabela 3. Tabela preslikavanja procesa

Use Case Diagram služi za prikazivanje informacija o tome kako neki poslovni sistem

funkcioniše trenutno. Sadrži alate koji omogućavaju modelovanje funkcionisanja poslovnih

procesa. [18]

Sledeća ilustracija prikazuje kreiran USE CASE dijagram rađen na osnovu tabele

preslikavanja, gde su predstavljene suštinske softverske funkcije koje treba da budu

podržane softverom.

29

Slika 24. Use Case Diagram

30

6.2.3. CDM (Conceptual Data Model) i PDM (Physical Data Model)

Konceptualni model podataka (CDM) predstavlja osnov za kasnije generisanje fizickog

modela podataka (relacionog modela sa dodatim osobinama ciljnog DBMS – sistema za

upravljanje bazom podataka) i dijagrama klasa. CDM omogućava lakše predstavljanje i

kreiranje baze podataka. Na sledećoj slici će biti predstavljen CDM softvera za on-line

prodaju cveća kreiranog u radu.

Slika 25. CDM model

31

Kada smo kreirali CDM model, PDM ćemo kreirati automatskom generacijom u programu.

Odabraćemo opciju Tools – Generate Physical Data Model i nakon odabira naziva svog

modela, ako smo sve atribute i primarne ključeve uneli kako treba, dobićemo sledeći izgled:

Slika 26. Izgled PDM-a

32

6.3. Modeli implementiranog rešenja višeslojne arhitekture softvera

6.3.1. Pregled slojeva u višeslojnoj arhitekturi realizovanog primera

Sledeća tabela ilustruje opšti prikaz višeslojne arhitekture softvera. Takođe, prikazan je i

plan podrške pojedinim slojevima u okviru ovog rada.

Tabela 4. Prikaz slojeva i podslojeva višeslojne arhitekture softvera, uz primer podrške u

ovom radu

GLAVNI

SLOJ PODSLOJEVI PLAN IMPLEMENTACIJE U RADU

PREZENTAC

IONI SLOJ

Korisnički

interfejs Ekranska forma

Prezentaciona

logika

Kod za pripremu podataka i prikaz u okviru grafickih elemenata

ekranske forme

Aktivan kod nakon izvršavanja “form action”

SLOJ

SERVISA

Web servis

Mogao bi biti realizovan radi razmene podataka sa dobavljačem

(uvid u katalog dobavljača i cene putem web servisa dobavljaca).

U ovom radu nije realizovano.

Servisni sloj kao

biblioteka klasa

Služi kao posrednik izmedju drugih slojeva, enkapsulira

implementaciju. Ima ulogu interfejsa. U ovom radu nije

realizovano.

SLOJ

POSLOVNE

LOGIKE

Poslovni objekti

Klasa Korpa (naziv Korpa je u skladu sa načinom “razmišljanja”

korisnika i bliska korisničkom interfejsu, a ne zove se kao

nijedna tabela u bazi podataka).

Poslovna pravila Klasa Popust koja implementira mogućnosti popusta za količinu

ili iznos

Radni tokovi Opisuju redosled aktivnosti i poziva odgovarajućih delova

softvera u odnosu na podršku. U ovom radu nisu realizovani.

SLOJ ZA

RAD SA

PODACIMA

Klase modela

Klase koje se kreiraju ili generišu na osnovu tabela baze

podataka. Za svaku tabelu može biti 3 klase: klasa pojedinac (ima

samo atribute I get-set metode), klasa DB (radi sa bazom

podataka putem SQL upita ili pozivom odgovarajućeg pogleda ili

stored procedure), klasa kolekcija (ima uredjenu listu objekata

klase pojedinac).

U ovom radu je podržana klasa pojedinac i klasa tipa DB.

Klasa konekcija i

parametri

Klasa konekcija – univerzalni tehnološki kod kojim se, na osnovu

eksterne datoteke sa parametrima konekcije, uspostavlja veza ka

DBMS i bazi podataka. Omogućava centralizaciju konektovanja,

radi olakšavanja eventualne promene DBMS-a ili parametara

konekcije.

U ovom radu je podržana kao zasebna klasa Konekcija, a

parametri konekcije su u TXT fajlu.

Baza podataka Stored procedure, pogledi, tabele i relacije.

U ovom radu su podržani svi elementi.

33

6.3.2. 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.[26]

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 27. Dijagram komponenti

34

6.3.3. 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. [26]

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

Slika 28. Dijagram razmeštaja

35

6.4. Korisničko uputstvo

U radu je prikazana demonstrativna aplikacija koja nije u potpunosti funkcionalna. Urađen

je primer korpe proizvoda i omogućeno štampanje prikaza ekrana sa korpom. Aplikacija ima

dosta prostora za usavršavanje, a urađen je primer da bi se prikazalo stečeno znanje kreiranja

web aplikacija. Takođe je korisniku omogućeno da se uloguje i odabere proizvode iz liste za

narudžbinu.

LOGIN forma ima dva statusa korisnika, a to su status Admin i status Korisnik (kupac). U

zavisnosti od toga da li se prijavite kao administrator ili kao korisnik, biće omogućen prikaz

odgovarajućeg (različitog) levog menija.

Administrator ima opcije da dodaje proizvod, dok to korisniku neće biti omogućeno.

Korisnik može da vidi podatke i da ih dodaje u korpu, takođe sadržaj korpe (narudžbenicu)

može odštampati.

Prikaz stranice za prijavljivanje korisnika aplikacije je dat na sledećoj slici:

Slika 29. Prikaz stranice za logovanje

Kada korisnik unese svoje korisničko ime i šifru prikazaće se sledeća stranica:

Slika 33. Prikaz prijavljenog korisnika u statusu:Admin

Ulogovani korisnik je u statusu Administrator i može dodavati sadržaj menjati proizvode i

brisati ih.

36

Slika 34. Unos podataka o novom proizvodu

Takođe može prikazati parametarsku štampu proizvoda sa slikom za proizvod koja je

dodata.

Slika 35. Lista proizvoda sa mogućnostima izmene i brisanja

Kada se korisnik (Kupac) uloguje u aplikaciju biće mu omogućen prikaz proizvoda i štampa.

Sledeća slika prikazuje prijavljenog korisnika sa opcijama:

37

Slika 30. Prikaz ulogovanog korisnika sa opcijama i spisak proizvoda

Štampa je dodata zbog mogućnosti kupaca da odštampaju podatke o biljki koju žele da kupe

i tu mogu imati prikazano kako da ih održavaju, koliko da zalivaju i kakvu prihranu da

koriste.

Prilikom dodavanja proizvoda u korpu otvara nam semogućnost dodavanja proizvoda. Kada

kliknemo na dugme „U korpu“ otvara se sledeća forma koja će prikazivati proizvode u korpi

sa cenom.

Slika 31. Prikaz korpe sa dodatim proizvodom – cvetom

38

U korpi postoji opcija za dodavanje popusta ukoliko korisnik poseduje kupon. Prilikom

kodiranja dodato je da postoji popust od 10% unošenjem kupona kup10, zatim popust od

20% unošenjem kup20 i po istom principu popust od 30%. Takođe se nalazi i opcija štampe

koja izvozi prikaz ekrana u formu za direktno štampanje ukoliko korisnik želi da odštampa

narudžbenicu. Narudžbenica će biti prikazana kao celokupni snimak ekrana sa sadrzajem

korpe, što se u daljem razvoju aplikacije može usavršiti.

Kada se odabere dati popust korisniku će se ispisati poruka kao informacija o iznosu popusta

i iznos će se umanjiti za određeni broj procenata.

Sledeća slika ilustruje prikaz narudžbence sa uračunatim popustom.

Slika 32. Prikaz uračunatog popusta

Kada odaberemo željeni popust i odaberemo opciju za štampanje dobijamo sledeći prozor

koji automatski omogućava štampanje date stranice.

Slika 33. Prikaz prozora za direktnu štampu

39

6.5. Opis implementacije

Prilikom opisa implementacije postaviće se akcenat na objašnjenjima elemenata

implementacije po slojevima, počev od baze podataka, do ključnih delova programskog

koda u aplikaciji.

6.5.1. SQL Script – i šema baze podataka

Bazu podataka koju bi trebali da koristimo u radu kreirali smo preko SQL naredbi i pozvali

Script u phpMyAdmin delu koristeći XAMPP. XAMPP će nam omogućiti koričćenje

virtuelnog servera za prikaz aplikacije koju smo kreirali. Sledeća tabela prikazuje fajl sa

SQL naredbama, kao i STORED procedure i POGLED koji je korišćen u radu.

CREATE DATABASE `DIPLOMSKI` CHARACTER SET utf8 COLLATE utf8_general_ci;

create table `DIPLOMSKI`.`BILJKA`

(

IDTIPBILJKE int NOT NULL AUTO_INCREMENT PRIMARY KEY,

IDDOBAVLJACA int,

IDPROIZVODA int,

NAZIVPROIZVODA varchar(50) not null,

GLAVNI

SLOJ PODSLOJEVI PLAN IMPLEMENTACIJE U RADU

PREZENTAC

IONI SLOJ

Korisnički

interfejs Ekranska forma

Prezentaciona

logika

Kod za pripremu podataka i prikaz u okviru grafickih elemenata

ekranske forme

Aktivan kod nakon izvršavanja “form action”

SLOJ

POSLOVNE

LOGIKE

Poslovni objekti

Klasa Korpa (naziv Korpa je u skladu sa načinom “razmišljanja”

korisnika i bliska korisničkom interfejsu, a ne zove se kao

nijedna tabela u bazi podataka).

Poslovna pravila Klasa Popust koja implementira mogućnosti popusta za količinu

ili iznos

SLOJ ZA

RAD SA

PODACIMA

Klase modela

Klase koje se kreiraju ili generišu na osnovu tabela baze

podataka. Za svaku tabelu može biti 3 klase: klasa pojedinac (ima

samo atribute I get-set metode), klasa DB (radi sa bazom

podataka putem SQL upita ili pozivom odgovarajućeg pogleda ili

stored procedure), klasa kolekcija (ima uredjenu listu objekata

klase pojedinac).

U ovom radu je podržana klasa pojedinac i klasa tipa DB.

Klasa konekcija i

parametri

Klasa konekcija – univerzalni tehnološki kod kojim se, na osnovu

eksterne datoteke sa parametrima konekcije, uspostavlja veza ka

DBMS i bazi podataka. Omogućava centralizaciju konektovanja,

radi olakšavanja eventualne promene DBMS-a ili parametara

konekcije.

U ovom radu je podržana kao zasebna klasa Konekcija, a

parametri konekcije su u TXT fajlu.

Baza podataka Stored procedure, pogledi, tabele i relacije.

U ovom radu su podržani svi elementi.

40

SLIKAPROIZVODA longblob not null,

ZALIVANJE varchar(200) not null,

ZEMLJISTE varchar(200) not null,

OSUNCANOST varchar(200) not null,

PRIHRANA varchar(200) not null

);

create table `DIPLOMSKI`.`DOBAVLJAC`

(

IDDOBAVLJACA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAZIVDOBAVLJACA varchar(30) not null,

ADRESADOBAVLJACA varchar(30) not null,

TELEFONDOBAVLJACA varchar(30) not null,

EMAILDOBAVLJACA varchar(40) not null

);

create table `DIPLOMSKI`.`KORISNIK`

(

IDSTATUSA int,

IDKORISNIKA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

IMEKORISNIKA varchar(30) not null,

PREZIMEKORISNIKA varchar(30) not null,

KRISNICKOIME varchar(30) not null,

SIFRA varchar(50) not null

);

create table `DIPLOMSKI`.`KUPAC`

(

IDKORISNIKA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

JMBG int,

ADRESAKUPCA varchar(30) not null,

TELEFONKUPCA varchar(30) not null,

EMAILKUPCA varchar(30) not null

);

create table `DIPLOMSKI`.`MESTO`

(

PTTMESTA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

IDDOBAVLJACA int,

IDKORISNIKA int,

NAZIVMESTA varchar(100) not null

);

create table `DIPLOMSKI`.`NARUDZBENICADOBAVLJACU`

(

IDNARUDZBENICEPRODAVCA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

IDKORISNIKA int not null,

IDPROIZVODA int ,

STA_IDNARUDZBENICEPRODAVCA int,

DATUMUPLATE date not null,

DATUMPRIJEMAROBE date not null,

DATUMNARUCIVANJAPRODAVCA date not null

)

create table `DIPLOMSKI`.`NARUDZBENICAKUPCA`

(

IDNARUDZBENICE int NOT NULL AUTO_INCREMENT PRIMARY KEY,

IDKORISNIKA int not null,

IDPROIZVODA int,

STA_IDNARUDZBENICE int,

DATUMUPLATE date not null,

DATUMNARUCIVANJA date not null,

DATUMISPORUKE date not null

);

create table `DIPLOMSKI`.`PRODAVAC`

(

41

IDKORISNIKA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

STRUCNASPREMA varchar(30) not null,

RADNOMESTO varchar(50) not null

);

create table `DIPLOMSKI`.`PROIZVOD`

(

IDPROIZVODA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

IDDOBAVLJACA int,

NAZIVPROIZVODA varchar(50) not null,

SLIKAPROIZVODA longblob not null

);

create table `DIPLOMSKI`.`STAVKA_NARUDZBENICE`

(

IDPROIZVODA int,

IDNARUDZBENICEPRODAVCA int,

KOMADA int

);

create table `DIPLOMSKI`.`STAVKA_NARUDZBENICE_KUPCA`

(

IDPROIZVODA int,

IDNARUDZBENICE int,

KOLICINA int

);

create table `DIPLOMSKI`.`TIPBILJKE`

(

IDTIPBILJKE int NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAZIVTIPBILJKE varchar(30) not null

);

alter table `DIPLOMSKI`.`BILJKA` add constraint FK_JE_TIPA foreign key (IDPROIZVODA)

references `DIPLOMSKI`.PROIZVOD (IDPROIZVODA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`BILJKA` add constraint FK_PRIPADA foreign key (IDTIPBILJKE)

references `DIPLOMSKI`.`TIPBILJKE` (IDTIPBILJKE) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`KUPAC` add constraint FK_STATUS foreign key (IDKORISNIKA)

references `DIPLOMSKI`.`KORISNIK` (IDKORISNIKA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`MESTO` add constraint FK_SE_NALAZI foreign key (IDDOBAVLJACA)

references `DIPLOMSKI`.`DOBAVLJAC` (IDDOBAVLJACA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`MESTO` add constraint FK_ZIVI_U foreign key (IDKORISNIKA)

references `DIPLOMSKI`.`KUPAC` (IDKORISNIKA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`NARUDZBENICADOBAVLJACU` add constraint FK_JE_NAPISAO foreign key

(IDKORISNIKA)

references `DIPLOMSKI`.`PRODAVAC` (IDKORISNIKA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`NARUDZBENICAKUPCA` add constraint FK_JE_KREIRAO foreign key

(IDKORISNIKA)

references `DIPLOMSKI`.`KUPAC` (IDKORISNIKA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`PRODAVAC` add constraint FK_STATUS2 foreign key (IDKORISNIKA)

references `DIPLOMSKI`.`KORISNIK` (IDKORISNIKA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`PROIZVOD` add constraint FK_ISPOROCUJE foreign key (IDDOBAVLJACA)

references `DIPLOMSKI`.`DOBAVLJAC` (IDDOBAVLJACA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`STAVKA_NARUDZBENICE` add constraint FK_JE_NARUCENA foreign key

(IDPROIZVODA)

references `DIPLOMSKI`.`PROIZVOD` (IDPROIZVODA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`STAVKA_NARUDZBENICE` add constraint FK_SADRZI foreign key

(IDNARUDZBENICEPRODAVCA)

42

references `DIPLOMSKI`.`NARUDZBENICADOBAVLJACU` (IDNARUDZBENICEPRODAVCA) on delete

restrict on update cascade;

alter table `DIPLOMSKI`.`STAVKA_NARUDZBENICE_KUPCA` add constraint FK_JE_NARUCENO2 foreign

key (IDPROIZVODA)

references `DIPLOMSKI`.`PROIZVOD` (IDPROIZVODA) on delete restrict on update cascade;

alter table `DIPLOMSKI`.`STAVKA_NARUDZBENICE_KUPCA` add constraint FK_SADRZI1 foreign key

(IDNARUDZBENICE)

references `DIPLOMSKI`.`NARUDZBENICAKUPCA` (IDNARUDZBENICE) on delete restrict on update

cascade;

Tabela 5. Prikaz SQL Script-a koja će kreirati bazu na serveru sa potrebnim tabelama

generisana pomoću PDM-a i prilagođena

U početnoj verziji aplikacije korišćena je sledeća baza podataka:

CREATE DATABASE `DIPLOMSKI` CHARACTER SET utf8 COLLATE

utf8_general_ci;

create table `DIPLOMSKI`.`PROIZVOD`

(

ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAZIVPROIZVODA varchar(30) not null,

SIFRAPROIZVODA int not null,

ZALIVANJE varchar(100) not null,

PRIHRANA varchar (100) not null,

NAZIVSLIKE varchar(50) null,

CENA float not null,

IDVRSTAPROIZVODA int not null

);

create table `DIPLOMSKI`.`VRSTAPROIZVODA`

(

ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAZIV varchar(100) not null,

UKUPANBROJPROIZVODA int

);

alter table `DIPLOMSKI`.`PROIZVOD` add constraint FK_PRIPADA foreign key (

IDVRSTAPROIZVODA)

references `DIPLOMSKI`.`VRSTAPROIZVODA` (ID) on delete restrict on update

cascade;

create table `DIPLOMSKI`.`KORISNIK`

(

IDKORISNIKA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

PREZIME varchar(50) not null,

IME varchar(40) not null,

EMAIL varchar(60) not null,

KORISNICKOIME varchar(30) not null,

SIFRA varchar(30) not null,

URLSLIKE varchar(250) null,

STATUS varchar(30) not null

43

);

INSERT INTO `DIPLOMSKI`.`KORISNIK` (PREZIME, IME, EMAIL,

KORISNICKOIME, SIFRA, URLSLIKE, STATUS) VALUES ('Jovana', 'Josic',

'[email protected]', 'joca', 'joca', 'Jovana.jpg', 'admin');

INSERT INTO `DIPLOMSKI`.`KORISNIK` (PREZIME, IME, EMAIL,

KORISNICKOIME, SIFRA, URLSLIKE, STATUS) VALUES ('Pavle', 'Pavlovic',

'[email protected]', 'pavle', 'pavle', 'Pavle.jpg', 'korisnik');

INSERT INTO `DIPLOMSKI`.`VRSTAPROIZVODA` (NAZIV,

UKUPANBROJPROIZVODA) VALUES ('Cvetnica', '0');

INSERT INTO `DIPLOMSKI`.`VRSTAPROIZVODA` (NAZIV,

UKUPANBROJPROIZVODA) VALUES ('Drvenasta', '0');

INSERT INTO `DIPLOMSKI`.`VRSTAPROIZVODA` (NAZIV,

UKUPANBROJPROIZVODA) VALUES ('Zbunasta', '0');

Tabela 6. Prikaz SQL Script-a baze korišćene u radu

Kada se kreira baza može se prikazati i dizajn sa relacijama u prozoru phpMyAdmin radi

detaljnijeg prikaza odnosa tabela. Dizajn baze koja se kreira iz PDM modela se prikazuje na

sledećoj slici.

Slika 35. Dizajn baze

Kada kreiramo bazu podataka, u nju dodajemo sledeće naredbe za kreiranje procedure i

pogleda.

Pogled

CREATE VIEW `DIPLOMSKI`.`SVIPROIZVODI` AS SELECT * FROM

`DIPLOMSKI`.`PROIZVOD`;

44

CREATE VIEW `DIPLOMSKI`.`SVIPODACIOPROIZVODIMA` AS select

NazivSlike, SIFRAPROIZVODA, ZALIVANJE, PRIHRANA, CENA, NAZIV AS

NAZIVPROIZVODA from `DIPLOMSKI`.`PROIZVOD` INNER JOIN

`DIPLOMSKI`.`VRSTAPROIZVODA` ON

`DIPLOMSKI`.`PROIZVOD`.`IDVRSTAPROIZVODA`=`DIPLOMSKI`.`VRSTAPR

OIZVODA`.`ID`;

Tabela 6. Prikaz naredbi pogleda iz rada

Stored procedura

Procedura

USE `DIPLOMSKI`;

DROP procedure IF EXISTS `DodajProizvod`;

DELIMITER $$

CREATE PROCEDURE `DodajProizvod` ( IN SIFRAPROIZVODA int, IN

NAZIVPROIZVODA varchar(30), IN ZALIVANJE varchar(100), IN PRIHRANA

varchar(100), IN CENA float, IN IDVRSTAPROIZVODA int, IN NAZIVSLIKE

varchar (50))

BEGIN

INSERT INTO `PROIZVOD`

(`SIFRAPROIZVODA`, `NAZIVPROIZVODA`, `ZALIVANJE`,

`IDVRSTAPROIZVODA`, `PRIHRANA`, `CENA`, `NAZIVSLIKE`)

VALUES (SIFRAPROIZVODA, NAZIVPROIZVODA, ZALIVANJE,

IDVRSTAPROIZVODA, PRIHRANA, CENA, NAZIVSLIKE);

END

$$

DELIMITER ;

Tabela 7. Prikaz koda procedure

6.5.2. Ključni delovi koda sa objašnjenjima

Ključni delovi programskog koda sastoje se iz dva dela:

Deo koda za dizajn korisničkog interfejsa koji je u osnovi HTML i CSS, sa

elementima PHP naredbi kojima se radi sa podacima iz baze podataka. Ovaj deo

programskog koda je prilagođen u odnosu na materijal sa vežbi iz predmeta

Inforamcioni sistemi 2.

Deo koda za rad sa korpom, koji je preuzet sa interneta i prilagođen ovom primeru.

Klasa Konekcija i parametri konekcije Klasa konekcija je univerzalna klasa, kojoj putem parametara konekcije dostavljamo potrebne

podatek za konektovanje.

<?php class Konekcija { // atributi public $UspehKonekcijeNaMYSQL; public $bazapodataka;

45

public $UspehKonekcijeNaBazuPodataka; // konstruktor //public _construct () //{} public function KonektujSe() { require 'kod_parametrikonekcije.php'; //$server = "localhost"; //$user_name = "root"; //$password = ""; //$bazapodataka="diplomski"; $this->bazapodataka=$bazapodataka; $db_handle = mysql_connect($server, $user_name, $password); $this->UspehKonekcijeNaMYSQL=$db_handle; if (!$db_handle) { die(' Greska: ' . mysql_error()); echo "<br/>"; } else { // dodatak da moze da radi sa UTF8 mysql_query('SET NAMES "utf8"',$db_handle); } //KONEKCIJA KA BAZI PODATAKA $db_selected = mysql_select_db($bazapodataka, $db_handle); $this->UspehKonekcijeNaBazuPodataka=$db_selected; if (!$db_selected) { die (' greska ' . mysql_error()); echo "<br/>"; } else { } } public function ZatvoriKonekciju() { mysql_close($this->UspehKonekcijeNaMYSQL); } } ?>

46

PARAMETRI KONEKCIJE:

<?php

$server = "localhost:3309";

$user_name = "root";

$password = "";

$bazapodataka="DIPLOMSKI";

?>

Klase modela Primer klase modela je clsProizvod koji koristi stored proceduru za snimanje novog

proizvoda.

<?php

class clsProizvod

{

// ATRIBUTI

private $bazapodataka;

private $UspehKonekcijeNaDBMS;

//

public $NAZIVPROIZVODA;

public $ZEMLJISTE;

public $PRIHRANA;

public $SIFRAPROIZVODA;

public $ZALIVANJE;

// dodatno

public $NAZIVSLIKE;

public $CENA;

public $IDVRSTAPROIZVODA;

// METODE

// konstruktor

public function __construct($otvorenaKonekcija)

{

// inicijalizacija vrednosti atributa

$this->bazapodataka = $otvorenaKonekcija->bazapodataka;

$this->UspehKonekcijeNaDBMS = $otvorenaKonekcija->UspehKonekcijeNaMYSQL;

}

public function DajKolekcijuSvih()

{

$SQL = "select * from `" . $this->bazapodataka . "`.`PROIZVOD` ORDER BY

SIFRAPROIZVODA DESC";

$result = mysql_query($SQL);

return $result;

47

}

public function DajKolekcijuFiltrirano($filterPolje, $filterVrednost, $nacinFiltriranja,

$Sortiranje)

{

if ($nacinFiltriranja == "like") {

$SQL = "select * from `" . $this->bazapodataka . "`.`PROIZVOD` WHERE

$filterPolje like '%" . $filterVrednost . "%' ORDER BY $Sortiranje";

} else {

$SQL = "select * from `" . $this->bazapodataka . "`.`PROIZVOD` WHERE

$filterPolje ='" . $filterVrednost . "' ORDER BY $Sortiranje";

}

$result = mysql_query($SQL);

return $result;

}

public function DajUkupanBrojSvih($KolekcijaZapisa)

{

$num_rows = mysql_num_rows($KolekcijaZapisa);

return $num_rows;

}

public function JedinstvenZapis()

{

$Jedinstven = false;

$KolekcijaZapisa = $this->DajKolekcijuFiltrirano("SIFRAPROIZVODA", $this-

>SIFRAPROIZVODA, "=", "SIFRAPROIZVODA");

$UkupanBrojZapisa = $this->DajUkupanBrojSvih($KolekcijaZapisa);

if ($UkupanBrojZapisa == 0) {

$Jedinstven = true;

} else {

$Jedinstven = false;

}

return $Jedinstven;

}

public function DodajNovo()

{

// VALIDACIJE

// Ispravnost datuma

// JedinstvenostZapisa

if ($this->JedinstvenZapis()) {

var_dump($this->ZALIVANJE);

$resultNAZIVPROIZVODA = mysql_query('SET @NAZIVPROIZVODA="' .

$this->NAZIVPROIZVODA . '"', $this->UspehKonekcijeNaDBMS);

$resultZALIVANJE = mysql_query('SET @ZALIVANJE="' . $this->ZALIVANJE .

'"', $this->UspehKonekcijeNaDBMS);

48

$resultPRIHRANA = mysql_query('SET @PRIHRANA="' . $this->PRIHRANA .

'"', $this->UspehKonekcijeNaDBMS);

$resultCENA = mysql_query("SET @CENA=" . $this->CENA, $this-

>UspehKonekcijeNaDBMS);

$resultIDVRSTAPROIZVODA = mysql_query("SET @IDVRSTAPROIZVODA="

. $this->IDVRSTAPROIZVODA, $this->UspehKonekcijeNaDBMS);

$resultNAZIVSLIKE = mysql_query("SET @NAZIVSLIKE='" . $this-

>NAZIVSLIKE . "'", $this->UspehKonekcijeNaDBMS);

$resultSIFRAPROIZVODA = mysql_query("SET @SIFRAPROIZVODA='" . $this-

>SIFRAPROIZVODA . "'", $this->UspehKonekcijeNaDBMS);

$sqlCALL = "CALL `DodajProizvod`(

@SIFRAPROIZVODA, @NAZIVPROIZVODA, @ZALIVANJE,

@PRIHRANA, @CENA, @IDVRSTAPROIZVODA,

@NAZIVSLIKE);";

$retval = mysql_query($sqlCALL, $this->UspehKonekcijeNaDBMS);

$greska = mysql_error();

} ELSE {

$greska = "Podaci vec postoje u bazi sa istom sifrom:$this->SIFRAPROIZVODA!";

}

return $greska;

}

// ostale metode

}

?>

Poslovni objekti i poslovna pravila

Poslovni objekat u ovom primeru je korpa, a poslovno pravilo se odnosi na popust, tj.

primenu kupona. U ovom delu prikazana je stranica Korpa koja objedinjuje različite

komponente (poslovni objekat, poslovno pravilo i prezentacioni sloj), koje bi trebalo

odvojiti u posebne klase (Korpa, Popust) i ekranske forme za prikaz korpe i stampu. Ipak, u

ovoj verziji rada realizovano je kao objedinjena stranica Korpa.php koja ima sve funkcije.

Poziv stranice Korpa dešava se na tasteru U KORPU u okviru iscrtavanja tabelarnog prikaza

robe:

// CRTANJE REDA TABELE SA PODACIMA

echo "<tr>";

echo " <td>";

echo " <font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$NazivProizvoda</font><br/>";

echo " </td>";

49

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$Zalivanje</font><br/>";

echo " </td>";

echo "<td>";

echo "<b><font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$Prihrana</font><br/>";

echo "</td>";

echo "<td>";

echo "<b><font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$Cena</font><br/>";

echo "</td>";

echo "<td>";

echo "<b><font face=\"Trebuchet MS\" color:#3F4534

size=\"2px\">$SifraProizvoda</font><br/>";

echo "</td>";

echo "<td>";

echo '<a href="/diplomski/korpa.php?akcija=dodaj&id='.$Id.'"><button>U

Korpu</button></a><br/>';

echo "</td>";

echo "</tr>";

U projekat je dodat programski kod stranice korpa.php koja omogućava dodavanje

proizvoda iz baze u formu i prikaz sa cenom koja se inkrementira prilikom dodavanja

svakog proizvoda.

Slika 36. Deo koda korpa.php

Pomoću prethodnog koda, omogućava se upis podataka u korpu i definiše se popust koji će

biti biti obračunat na formi ukoliko se unese. Proizvod se dodaje u korpu preko Id-a i

prilikom svakog dodavanje proverava se Id i inkrementira ako već postoji upisan proizvod.

50

Na sledećoj slici biće prikazan kod koji omogućava pridruživanje proizvoda korpi,

jednostavnom metodom join i taj isti proizvod se preko Id-a upisuje u korpu.

Slika 37. Kod upisa proizvoda u korpu.

U okviru iste stranice Korpa prikazuje se i spisak robe. Da bi se prikazale tabele i delovi sa

ispisom naziva podataka potrebno je uneti sledeći kod koji će kreirati dugmad za unos

popusta, prikaz naziva proizvoda, cene..

Slika 38. Kod za kreiranje dugmeta za Stampu i uklanjanje podataka

Za štampanje prikaza ekrana narudžbenice iskorišćen je kod javaScript koji je u dva koraka

omogućio štampanje podataka sa ekrana. Naravno, kada bi se aplikacija razvijala za realnu

primenu moralo bi se dosta delova izmeniti da bi u potpunosti funkcionisalo sve, ali je u

suštini delimično završena da bi demonstrirala web aplikaciju koja nam je bila potrebna za

rad.

Slika 39. Prikaz aktivacije dugmeta Stampa sa forme korpe koristeći JavaScript

51

Ekranska forma i prezentaciona logika

U nastavku je dat prikaz programskog koda korisničkog interfejsa i prezentacione logike na

primeru liste proizvoda.

Lista.php

<?php

// CITANJE VREDNOSTI O

KORISNIKU IZ SESIJE

session_start();

// kad idemo preko poziva sa URL

promenljivom, onda ovako citamo:

// citanje vrednosti iz sesije

$idkorisnika=$_SESSION["idkorisnika"];

// ako nije prijavljen korisnik, vraca ga

na pocetnu stranicu

if (!isset($idkorisnika))

{

header ('Location:index.php');

}

?>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sr-RS" xml:lang="sr-RS">

<meta charset="UTF-8">

<head>

<title>Cvećara</title>

<meta charset="UTF-8">

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

</head>

<body>

<table class="no-spacing" style="width:100%; padding:0" align="center" cellspacing="0"

cellpadding="0" border="0" style="border-spacing: 0;">

<!-------------------------- ZAGLAVLJE ------->

<?php include 'delovi/zaglavljewelcome.php';?>

<!-------------------------- DONJI DEO ------->

<tr style="padding:0px;">

<td style="width:10%;">

52

</td>

<!------------------------------------------------------------------------------------------->

<!---------------------- SREDINA DONJEG DELA SA SADRZAJEM pocinje ovde ------------

---------->

<td align="center" valign="middle">

<table style="width:100%; padding:0" align="center" cellspacing="0" cellpadding="0"

border="0" bgcolor="#003366">

<tr>

<td style="width:1%;">

</td>

<td style="width:20%;padding:0" cellspacing="0" cellpadding="0" border="0"

valign="top">

<?php include 'delovi/menilevoadmin.php';?>

</td>

<td style="width:2%;">

</td>

<td style="padding:0" cellspacing="0" cellpadding="0" border="0" valign="top">

<!------- GLAVNI SADRZAJ desno ----------->

<?php include 'delovi/desnoproizvodilista.php';?>

</td>

<td style="width:2%;">

</td>

</tr>

</table>

</td>

<!---------------------- SADRZAJ zavrsava ovde ---------------------->

<td style="width:10%;">

</td>

</tr>

<!---------------------- DONJI DEO zavrsava ovde ---------------------->

<tr style="padding:0px;">

<td style="width:10%;"></td>

<td align="center" valign="middle"></td>

<td style="width:10%;"></td>

</tr>

<!--- DONJI DEO sa donjom ivicom zavrsava ovde ------->

<!-- footer panel starts here -->

<?php include 'delovi/footer.php';?>

53

</table>

</body>

</html>

Suštinski deo koji prikazuje podatke je desnoproizvodilista.php. U ovom delu

izostavljen je kod zakonekciju sa bazom podataka, vec je dat deo za prikaz podataka koji je

najvazniji.

<meta charset="UTF-8">

<!--==================================== SADRZAJ STRANICE DESNO pocinje ovde -----------

------------------->

<img src="images/sredinagore.jpg" width="100%" height="3" alt="" class="flt1 rp_topcornn"/>

<table style="width:100%;style=" width:100%;

padding:0" align="center" cellspacing="0" cellpadding="0" border="0" bgcolor="#D8E7F4">

<tr>

<td style="width:5%;">

</td>

<td align="left">

<br/>

<font face="Trebuchet MS" color="darkblue" size="4px">

<b>Proizvodi</br>

<?php

//KONEKCIJA KA SERVERU

//KONEKCIJA KA BAZI PODATAKA

if ($db_selected) {

// dodatak da moze da radi sa UTF8

mysql_query('SET NAMES "utf8"', $db_handle);

$SQL = "select `" . $bazapodataka . "`.`PROIZVOD`.`ID`, NAZIVPROIZVODA,

SIFRAPROIZVODA, PRIHRANA, ZALIVANJE, CENA, NAZIV AS NAZIVRSTEPROIZVODA from `" .

$bazapodataka . "`.`PROIZVOD` INNER JOIN `" . $bazapodataka . "`.`VRSTAPROIZVODA` ON `" .

$bazapodataka . "`.`PROIZVOD`.`IDVRSTAPROIZVODA`=`" . $bazapodataka .

"`.`VRSTAPROIZVODA`.`ID` ORDER BY SIFRAPROIZVODA DESC";

$result = mysql_query($SQL, $db_handle);

$num_rows = mysql_num_rows($result);

if ($num_rows > 0) {

//$rbvesti=0;

// ------------ zaglavlje ----------------

echo "<table style=\"width:90%; padding:0\" align=\"center\" cellspacing=\"0\" cellpadding=\"0\"

border=\"1\" bgcolor=\"#D8E7F4\">";

echo '<tr>';

echo " <td style=\"width:62%;\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">SIFRA</font><br/>";

echo " </td>";

echo " <td style=\"width:62%;\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">NAZIV</font><br/>";

echo " </td>";

echo " <td style=\"width:62%;\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">CENA</font><br/>";

echo " </td>";

echo " <td style=\"width:62%;\">";

54

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">ZALIVANJE</font><br/>";

echo " </td>";

echo " <td style=\"width:62%;\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">PRIHRANA</font><br/>";

echo " </td>";

echo " <td style=\"width:62%;\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">VRSTA</font><br/>";

echo " </td>";

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">IZMENA</font><br/>";

echo " </td>";

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"3px\">BRISANJE</font><br/>";

echo " </td>";

echo "</tr>";

for ($row = 0; $row < $num_rows; $row++) {

if ($row > $num_rows) {

// nista

} else {

// CITANJE VREDNOSTI IZ MEMORIJSKE KOLEKCIJE $RESULT I DODELJIVANJE

PROMENLJIVIM

$Id = mysql_result($result, $row, "ID");

$NazivProizvoda = mysql_result($result, $row, "NAZIVPROIZVODA");

$Cena = mysql_result($result, $row, "CENA");

$Zalivanje = mysql_result($result, $row, "ZALIVANJE");

$Prihrana = mysql_result($result, $row, "PRIHRANA");

$Sifra = mysql_result($result, $row, "SIFRAPROIZVODA");

$VrstaProizvoda = mysql_result($result, $row, "NAZIVRSTEPROIZVODA");

// CRTANJE REDA TABELE SA PODACIMA

echo "<tr>";

echo " <td>";

echo " <font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$Sifra</font><br/>";

echo " </td>";

echo " <td>";

echo " <font face=\"Trebuchet MS\" color:#3F4534

size=\"2px\">$NazivProizvoda</font><br/>";

echo " </td>";

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$Cena</font><br/>";

echo " </td>";

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534

size=\"2px\">$Zalivanje</font><br/>";

echo " </td>";

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534

size=\"2px\">$Prihrana</font><br/>";

echo " </td>";

echo " <td>";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534

size=\"2px\">$VrstaProizvoda</font><br/>";

echo " </td>";

echo " <td>";

echo " <form ACTION=\"Izmeniform.php\" METHOD=\"POST\">";

echo " <input type=\"hidden\" name=\"IdProizvoda\" value=\"$Id\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\"><input

TYPE=\"submit\" name=\"izmeni\" value=\"IZMENI\" /></font></b>";

55

echo " </form>";

echo " </td>";

echo " <td>";

echo " <form ACTION=\"obrisi.php\" METHOD=\"POST\">";

echo " <input type=\"hidden\" name=\"IdProizvoda\" value=\"$Id\">";

echo " <b><font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\"><input

TYPE=\"submit\" name=\"obrisi\" value=\"OBRISI\" /></font></b>";

echo " </form>";

echo " </td>";

echo "</tr>";

} // za else kod if row>

} //za for

echo "</table>";

echo "<br/>";

echo "<br/>";

} else {

echo "НЕМА ПОДАТАКА";

} // ZA ELSE

} // ZA IF DB SELECTED

mysql_close($db_handle);

?>

</td>

<td style="width:5%;">

</td>

</tr>

</table>

56

7. ZAKLJUČAK

U radu je prikazan proces razvoja Web aplikacije za online prodaju cveća. Obuhvaćen je

razvoj aplikacije od same specifikacije zahteva i analize semantike rada, pa sve do kreiranja

softvera. Posebno je dat naglasak na elementima višeslojne arhitekture softvera.

Softver je realizovan kao prototip, sa mnogim mogućnostima unapređenja, uključujući

registraciju korisnika, vizualizaciju proizvoda i korpe, kao i pripremu formalnog dokumenta

narudzbenice za printer friendly stranicu. U smislu viseslojnog razvoja, fajl Korpa.php je

zapravo objedinjen rad sa poslovnim objektom, poslovnim pravilom (popust) i prezentacioni

deo za sadržaj korpe. Naravno, u višeslojnom pristupu, trebalo bi odvojiti posebne klase

Korpa, Popust i nekoliko ekranskih formi zasebno.

Takođe, u problematici višeslojnog razvoja aplikacija u okviru PHP programskog jezika,

svakako je značajno izučiti dostupne razvojne okvire (framework) kao što su LARAVEL,

ZEND, Simfony itd.

57

8. Literatura

1. http://download.tutoriali.org/Tutorials/Web_Aplikacije/web_aplikacije.pdf

2. https://www.nasa.gov/pdf/637608main_day_2-david_garlan.pdf

3. http://www.vtsnis.edu.rs/predmeti_2012/klijent_server_sistemi/predavanja_2016/KS

%20Predavanje%209%202016.pdf

4. https://morphological.files.wordpress.com/2011/08/5-layer-architecture-draft.pdf

5. http://www.tfzr.uns.ac.rs/Content/files/0/SE2%20Ivankovic%20Lacmanovic.pdf

6. http://www.laputan.org/pub/papers/POSA-MVC.pdf

7. http://teleflora.rs/content/o-nama

8. George Sepherd, Microsoft ASP.NET 4 Step by Step, Redmond – Washington 2010.

9. http://www.mikroknjiga.rs/Knjige/VBPP/02_VBPP.pdf

10. https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-

mvc?tabs=aspnetcore2x

11. http://cvecarstvo.com

12. http://predmet.singidunum.ac.rs/pluginfile.php/5569/mod_folder/content/0/Literatura

%20%28e-test%29/Praktikum%20-

%20Internet%20i%20Web%20tehnologije%20%28Uvod%29.pdf?forcedownload=1

13. http://www.inter-caffe.com/viewtopic.php?p=12012&highlight= (Cvećarstvo, forum)

14. http://www.svetbiljaka.com/Enciklopedija

15. Ivana Stojanović, MR - Elektronska trgovina i kupovina putem Interneta u Srbiji, 2010.

Beograd

16. http://vipos.edu.rs/slike/knjige/elektronsko_poslovanje-9-30.pdf

17. https://www.ebayinc.com/our-company/our-history/

18. https://www.ibm.com/support/knowledgecenter/en/SS6RBX_11.4.3/com.ibm.sa.oomethod.d

oc/topics/c_UML_Use_Case_diag_Gen_Inf.html

19. www.kombib.rs/e-knjige-download.php?id=11

20. http://www.dunjincvet.com

21. http://www.proflowers.com

22. http://www.rasadnikmalivrt.rs/wp-content/uploads/2014/02/Katalog-2014-web.pdf

23. https://www.pinterest.com/pin/570831321500307418/

24. https://www.historicmysteries.com/the-hanging-gardens-of-babylon/

25. https://graphicriver.net/item/web-shopping-concept-illustration-icons-set/7741181

26. http://www.vps.ns.ac.rs/Materijal/mat22111.pdf

27. Steve Prettyman(prevod-Slavica Prudkov), Naučite PHP 7, 2016. Beograd

28. http://www.tfzr.uns.ac.rs/Content/files/0/menadzeri%20IAS%20skripta.pdf

29. https://mojwebsajt.com/web-programiranje/osnove-pisanja-php-koda/

30. http://predmet.singidunum.ac.rs/pluginfile.php/383/mod_folder/content/0/2011-

2012/PRIS%2005%20-

%20Analiza%20i%20projektovanje%20arhitekture%20softverskih%20sistema.pdf?f

orcedownload=1