-Diplomski rad- Višeslojna Web aplikacija za on-line prodaju cveća N-tier web application for on-line flowers selling

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

Podešavanje za eduroam ios

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

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

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

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

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

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

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

Otpremanje video snimka na YouTube

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

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

SAS On Demand. Video: Upute za registraciju:

1. Instalacija programske podrške

STRUČNA PRAKSA B-PRO TEMA 13

Upute za korištenje makronaredbi gml2dwg i gml2dgn

Port Community System

Uvod u relacione baze podataka

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

Rešavanje problema pomoću računara

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

Tutorijal za Štefice za upload slika na forum.

Pravljenje Screenshota. 1. Korak

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

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

za STB GO4TV in alliance with GSS media

Aplikacija za podršku transferu tehnologija

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

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

DEFINISANJE TURISTIČKE TRAŽNJE

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

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

1.UVOD. Ključne reči: upotrebljivost, praćenje, korisnički interfejs, aplikacija

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

PROJEKTNI PRORAČUN 1

mdita Editor - Korisničko uputstvo -

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

11 Analiza i dizajn informacionih sistema

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Veb portal za aukcijsku prodaju - projekat -

KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

EUnet dial-up konfigurator

Mindomo online aplikacija za izradu umnih mapa

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

Primer izrade dinamičkog sajta

Visoka škola strukovnih studija za informacione i komunikacione tehnologije. SMS Gateway. Dr Nenad Kojić

Klasterizacija. NIKOLA MILIKIĆ URL:

Windows Easy Transfer

Bušilice nove generacije. ImpactDrill

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

Direktan link ka kursu:

BENCHMARKING HOSTELA

TEHNIKA I INFORMATIKA U OBRAZOVANJU

Struktura i organizacija baza podataka

3D GRAFIKA I ANIMACIJA

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE

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

Nejednakosti s faktorijelima

SIMULACIONI MODELI ZASNOVANI NA AGENTIMA KAO PODRŠKA ODLUČIVANJU U ELEKTRONSKOM POSLOVANJU

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

IMPLEMENTACIJA TEHNIKA ZA POVEĆANJE BROJA PODRŽANIH KONKURENTNIH KORISNIKA VEB SAJTA

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

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU

TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011.

SOFTVERSKO INŽENJERSTVO INTELIGENTNIH SISTEMA

FAKULTET ZA POSLOVNU INFORMATIKU

Priprema podataka. NIKOLA MILIKIĆ URL:

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA

GIGABIT PASSIVE OPTICAL NETWORK

ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti

TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011.

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

RANI BOOKING TURSKA LJETO 2017

Web aplikacije juče, danas, sutra

INTEGRACIJA MOBILNIH UREĐAJA U KORPORATIVNI SISTEM

Uputstvo za korišćenje Asseco WEB 3.0 aplikacije za Fizička lica

VEB APLIKACIJA ZA IZBOR RESTORANA

3.2. Prikazati podatke o svim proizvodima, koji se proizvode u Zrenjaninu.

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

Mogudnosti za prilagođavanje

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

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

VEB APLIKACIJA ZA IZBOR KOKTELA

ADDIKO CHAT BANKING - ČESTO POSTAVLJANA PITANJA

KatzeView Uputstvo. verzija Novi Sad Josifa Marinkovića 44. Tel: +381 (0) Fax: +381 (0) Mob: +381 (0)

AUDIO-VIZUELNA SREDSTVA

Jedine besplatne novine koje uz organizovanu distribuciju nude mogućnost da svakome budu dostupne

Advertising on the Web

SISTEMI ZA UPRAVLJANJE SADRŽAJEM

Projektovanje softvera. Dijagrami slučajeva korišćenja

Sybase PowerDesigner 12

Babylon - instalacija,aktivacija i rad sa njim

Elektronska trgovina

FAKULTET TEHNIČKIH NAUKA

Transcription:

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 Mentor: Doc.dr Ljubica Kazi Student: Jovana Josić Smer: Informacione tehnologije Broj indeksa: IT 65/13 Zrenjanin 2017.

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 2

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. 3

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. 4

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 5

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 6

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

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) 8

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. 9

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. 10

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] 11

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. 12

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. 13

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: 14

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 15

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. 16

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 online 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 17

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. 18

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. 19

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 20

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 21

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] 22

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 23

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 Izbor proizvoda Narudžbina Plaćanje SOFTVERSKA PODRŠKA I DETALJI POSLOVNE AKTIVNOSTI Prelistavanje kataloga proizvoda i odabir proizvoda koji kupac želi da naruči Kupac je dužan da odabere željeni proizvod i doda u korpu 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 Unos robe Pregled narudžbina Pregled uplata Provera podataka Slanje narudžbine SOFTVERSKA PODRŠKA I DETALJI POSLOVNE AKTIVNOSTI Prodavac je dužan da unese robu na sajt i omogući kupcima pregled asortimana prodavnice 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 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 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 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 24

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. 25

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. 26

Primitivni poslovni proces Radna uloga izvršioca primitivno g poslovnog procesa Softverska funkcija 1.prioriteta 2.prioriteta Preduslov za uspešno izvršavanje funkcija 1. prioriteta Actor (Profil korisnika softversk e funkcije) Tip softver a Prijem robe Prodavac Unos podataka o primljenoj robi Kreiranje kataloga Prodavac Unos proizvoda za katalog, Štampanje kataloga Naručivanje Kupac Unos podataka o proizvodima za narucivanje Prijem narudžbenic a Prodavac Tabelarni prikaz narudžbenica Tabelarni prikaz podataka dospele robe, Filter podataka prema datumu dospele robe, parametarsk a štampa Tabelarni prikaz proizvoda koji će se koristiti u katalogu 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 Filter unetih podataka prema rednim brojevima narudžbenic Unos narudžbenic e za dobavljača Unos podataka o primljenoj robi Unos proizvoda za katalog Unos podataka o proizvodima za naručivanje od kupca Dobavljač Prodavac Kupac Kupac c/s LAN, WEB c/s LAN, WEB WEB c/s LAN, WEB 27

a Plaćanje Kupac Unos podataka o plaćanju Evidentiranj e uplata Slanje porucene robe Prodavac Prodavac Unos podataka o potvrdi izvrsenja uplate kupca (uporedjivanje m sa bankarskim izvodom) Tabelarni prikaz realizovanih plaćanja Tabelarni prikaz potvrdjenih uplata, Filter podataka o dospelim uplatama prema datumu plaćanja Tabelarni prikaz Tabelarni prikaz narudžbenic a Unos podataka o plaćanju od strane kupca Unos podataka Unos o slanju podataka o proizvoda podataka o proizvodima pošiljkama, za Filter narucivanje podataka o od kupca slanju prema Unos broju podataka o narudžbenic potvrdi e i datumu izvrsenja uplate kupca Tabela 3. Tabela preslikavanja procesa Kupac Prodavac WEB c/s LAN, WEB c/s LAN, WEB 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. 28

Slika 24. Use Case Diagram 29

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 30

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 31

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 PREZENTAC IONI SLOJ PODSLOJEVI Korisnički interfejs Prezentaciona logika PLAN IMPLEMENTACIJE U RADU Ekranska forma Kod za pripremu podataka i prikaz u okviru grafickih elemenata ekranske forme Aktivan kod nakon izvršavanja form action SLOJ SERVISA SLOJ POSLOVNE LOGIKE SLOJ ZA RAD SA PODACIMA Web servis Servisni sloj kao biblioteka klasa Poslovni objekti Poslovna pravila Radni tokovi Klase modela Klasa konekcija i parametri Baza podataka 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. Služi kao posrednik izmedju drugih slojeva, enkapsulira implementaciju. Ima ulogu interfejsa. U ovom radu nije realizovano. 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). Klasa Popust koja implementira mogućnosti popusta za količinu ili iznos Opisuju redosled aktivnosti i poziva odgovarajućih delova softvera u odnosu na podršku. U ovom radu nisu realizovani. 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 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. Stored procedure, pogledi, tabele i relacije. U ovom radu su podržani svi elementi. 32

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 33

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 34

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. 35

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: 36

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 37

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 38

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. GLAVNI SLOJ PREZENTAC IONI SLOJ SLOJ POSLOVNE LOGIKE SLOJ ZA RAD SA PODACIMA PODSLOJEVI Korisnički interfejs Prezentaciona logika Poslovni objekti Poslovna pravila Klase modela Klasa konekcija i parametri Baza podataka PLAN IMPLEMENTACIJE U RADU Ekranska forma Kod za pripremu podataka i prikaz u okviru grafickih elemenata ekranske forme Aktivan kod nakon izvršavanja form action 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). Klasa Popust koja implementira mogućnosti popusta za količinu ili iznos 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 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. Stored procedure, pogledi, tabele i relacije. U ovom radu su podržani svi elementi. 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, 39

SLIKAPROIZVODA ZALIVANJE ZEMLJISTE OSUNCANOST PRIHRANA ); longblob not null, varchar(200) not null, varchar(200) not null, varchar(200) not null, 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` ( 40

IDKORISNIKA STRUCNASPREMA RADNOMESTO ); int NOT NULL AUTO_INCREMENT PRIMARY KEY, varchar(30) not null, 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) 41

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 42

); INSERT INTO `DIPLOMSKI`.`KORISNIK` (PREZIME, IME, EMAIL, KORISNICKOIME, SIFRA, URLSLIKE, STATUS) VALUES ('Jovana', 'Josic', 'jovana.josic10@gmail.com', 'joca', 'joca', 'Jovana.jpg', 'admin'); INSERT INTO `DIPLOMSKI`.`KORISNIK` (PREZIME, IME, EMAIL, KORISNICKOIME, SIFRA, URLSLIKE, STATUS) VALUES ('Pavle', 'Pavlovic', 'pavle@hotmail.com', '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 `DIPLOMSKI`.`PROIZVOD`; SELECT * FROM 43

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; 44

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); } }?> 45

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; 46

} 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); 47

$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>"; 48

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. 49

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 50