45
Pentaschool Oktatási Központ Számítástechnikai programozó ZSÍROS TIBOR ELEKTRONIKUS KERESKEDELMI PORTÁL FEJLESZTÉSE Kolman Nándor Szaktanár konzulens

Elektronikus kereskedelmi portál fejlesztése szakdolgozat

Embed Size (px)

Citation preview

Page 1: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

Pentaschool Oktatási Központ Számítástechnikai programozó

Z S Í R O S T I B O R ELEKTRON IKU S K ERE SKEDELM I P ORTÁL

F E J L E S ZTÉ S E Kolman Nándor Szaktanár konzulens

Page 2: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

1

T A R T A L O M J E G Y Z É K

1. Bevezetés.................................................................................................... 2

2. Internetes kereskedelem ............................................................................. 3

3. Feladatspecifikáció..................................................................................... 4

4. Tervezés...................................................................................................... 6

4.1. Adatbázis megtervezése...................................................................... 6

4.2. Felülettervezés .................................................................................. 18

4.2.1. A tervezésben használt technikák.............................................. 18

4.2.2. Adminisztrációs felület.............................................................. 22

4.2.3. Felhasználói felület.................................................................... 23

5. Megvalósítás............................................................................................. 24

5.1. A megvalósításban felhasznált technológiák .................................... 25

5.2. A rendszer logikai működése............................................................ 33

5.3. Osztályok .......................................................................................... 34

5.4. Adminisztrátori felület megvalósítása .............................................. 37

5.5. Felhasználói felület megvalósítása ................................................... 38

6. Üzembe helyezés...................................................................................... 39

7. Tesztelés ................................................................................................... 40

8. Összefoglalás............................................................................................ 41

9. Felhasznált irodalom ................................................................................ 43

10. Az elektronikus kereskedelmi portál elérhetősége................................... 44

Page 3: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

2

1. Bevezetés

Napjaink egyre gyorsuló világa megköveteli a fejlődés ütemének

gyorsulását is. A fejlődő országokban szinte minden háztartás rendelkezik

vagy hamarosan rendelkezni fog internet hozzáféréssel. Hazánkban a tavalyi

évben mintegy másfél millió háztartás rendelkezett számítógéppel és

megközelítőleg 800 000 háztartásban volt internet kapcsolat. Életünkben az

internet használat olyan hétköznapi eszközzé válik, mint az elektromos áram,

vagy a tömegközlekedés. Megkönnyítheti mindennapi életünket, például a

banki tranzakciók otthonról történő ügyintézésével, vagy akár egy jó könyv

kölcsönzésével, hírek böngészésével, elektronikus levelezéssel, egyszóval az

információ gyors és hatékony továbbításával. A nagyvállalatok, és a kisebb

cégek számára is lehetőség nyílik a gyors adatcserére partnereikkel, így

lehetővé vált üzleti tevékenységek kiadása, kiszervezése, másik cég megbízása

bizonyos feladatok elvégzésével, legyen az bárhol a világon. Ezek a

tevékenységek (outsourcing) bevett gyakorlat például az amerikai vállalatok,

és India vagy Japán és Kína között, de hazánkban is egyre nagyobb szerepet

kap a költséghatékonysága miatt. Akár szoftverfejlesztéseket, könyveléseket

és orvosi látleletek véleményezésének folyamatát, munkamenetét is ki lehet

adni, köszönhetően a gyors és biztonságos adattovábbításnak, és az adatok

digitalizálásának. Mindezt figyelembe véve a világ ma már nem lenne képes

működni az internet nélkül, így a hétköznapok tevékenységeink, folyamataink

is áttevődnek az elektronikus birodalomba.

Az egyik interneten keresztüli tipikus tevékenység a vásárlás. A

termékek és azokat kínáló úgynevezett webáruházak széles választéka

megtalálható akár több nyelven is. Az egyik legnépszerűbb böngésző a google

a webáruház szóra kevesebb, mint egy másodperc alatt talál körülbelül

kettőmillió bejegyzést. Ez persze nem konkrétan a webáruházak számosságát

jelenti, de azt mindenképpen, hogy mennyire elterjedt maga a fogalom és a

mögötte található elektronikus kereskedelmi rendszerek. Mindezek miatt

döntöttem úgy, hogy a szakdolgozatom témájául az elektronikus

kereskedelmet választom. A középponti témám a szakdolgozatban egy

Page 4: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

3

webáruház megtervezése, felépítése. Egy fejlesztési projekt során mutatom be

egy általános alapokra épülő webáruház alapvető funkcióit és azok működését.

A szakdolgozat végigvezet a fejlesztés szakaszain, bemutatva ezzel egy

fejlesztési projekt lépéseit. Ezen felül bemutatom azokat a mai webes

technológiákat, tervezési koncepciókat és irányokat, amelyek segítségével

életre keltettem a webes áruházat. A dolgozat elolvasása után egyértelművé

válik az olvasó számára egy webes áruház funkcionalitása, működése, és a

mögötte álló technológiák alapja.

2. Internetes kereskedelem

Az internet elterjedésével hazánkban is egyre keresettebbek az

internetes vásárlást biztosító ún. webáruházak. Hazánkban a 2006-os év

legnépszerűbb internetes áruháza a Bookline könyváruház lett, melynek éves

forgalma ugyan ebben az évben 1 418 Millió Ft lett. Ez is azt mutatja, hogy a

felhasználók körében egyre jobban elterjed az elektronikus kereskedelem,

egyre nagyobb bizalmat szentelnek az emberek a karosszékből történő

vásárlásnak. Évekkel ezelőtt még a bizalom hiánya miatt kevésbé használták

az emberek az internet eme funkcióját, viszont napjainkban a vásárlás egyre

inkább elterjed, a bizalmatlanság csak a fizetési szokásokban jelentkezik. A

vásárlók többsége a megbízható utánvételes fizetési módot választja, pedig

rendelkezésre áll a bankok által biztosított portálokon keresztül bankkártyás

fizetések, illetve a nemzetközi webshopok-on keresztüli vásárlás esetén az

online fizetési megoldások, mint a Moneybookers, vagy a Paypal.

A Szonda Ipsos és a Gfk Hungária kutatóintézetek Internet Audience Research

(IAR) kutatásának 2006. októberében publikált eredményei alapján a legalább

havi rendszerességgel internetezők 14%-a használja az internetet vásárlásra, a

vásárlásokat megelőzően pedig 53% keres információt az interneten (akár

online, akár hagyományos).

A GKI által az online áruházakról készített kutatás alapján elmondható, hogy

2005-ben az internetes kiskereskedelmi forgalom 19 milliárd forint volt. Azóta

ez a szám csak emelkedett, a legtöbb feltételezés szerint 2006-os forgalom 25-

Page 5: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

4

30 milliárd Ft.-ot is elérheti. A pontos értékről még nincs publikus információ.

Jelenleg is tapasztalható, hogy az internetes áruházak többsége különböző

kedvezményekkel próbálja meg vásárlásra buzdítani a vásárlókat. A boltok

többsége 1-10%, de előfordul, hogy 20-25% kedvezményt is adnak. Nagyon

sok áruház felismerte a vásárlók bizalmatlanságát a fizetési módokat illetően,

ezért aki megteheti, az személyes átvételt is lehetővé tesz. Így a webáruházban

csak kifejezetten a termék kikeresése és megrendelése történik, a konkrét

fizetés és átvétel pedig az áruház által megadott cím(ek)en lehetséges.

3. Feladatspecifikáció

A cél egy olyan általános szabályokon működő webáruház elkészítése

volt számomra, amelynek feladata az ügyfelek elektronikus úton történő

kiszolgálása. Minden olyan alapvető funkció biztosítása, amely egy vásárlás

során megszokott és egyértelmű. Lehetőséget kellett biztosítanom az oldalon

található termékek közötti böngészésre, azok bizonyos kritériumok alapján

való keresésére és a kíván termék árának, egyéb adatainak feltüntetése mellett

annak megvásárlására. Amennyiben vásárlásra kerül a sor, akkor a

webáruházban regisztrálni kell a postázáshoz és a számlázáshoz szükséges

adatokat. Ezt az alkalmazás regisztrációs oldalán található űrlap megfelelő

kitöltésével lehet megtenni. A regisztráció során meghatároztam a kötelezően

megadandó információkat is, ezek megadásának biztosítását mind kliens

oldalon (javascript) mind szerveroldalon (PHP) biztosítani kell. Az oldalra

való belépés után lehet elküldeni a vásárlási igényt. A belépés egy felhasználói

név és egy jelszó megadását jelenti, amelyet a rendszer ellenőriz, majd helyes

adatok esetén beléptet. A webáruház üzemeltetése szempontjából szükség van

egy adminisztrátori felületre. Ez teszi lehetővé a regisztrált felhasználók

adatainak ellenőrzését, azok szükség esetén történő manipulációját. Ugyanitt

lehet a webáruházban található termékek adatait módosítani és új terméket

regisztrálni. Ezen kívül itt lehet majd a leadott vásárlási igényeket kezelni.

A végrehajtás során két felületet hoztam létre. Egyet a webáruháznak és

egy másikat az adminisztrációs felületnek. Ez lehetővé teszi, a felhasználói és

Page 6: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

5

az adminisztrációs folyamatok teljes elkülönítését. Biztonsági szempontból is

előnyösebbnek látom, ha ezek a feladatok nem illeszkednek bele a

felhasználói felületbe. Mind a két felületet azonos stíluselemek alkotják így az

adminisztrátor számára az átjárás a két felület között nem okoz semmilyen

nehézséget. A felületek főbb alkotó elemei menüelemek, tartalmi blokkok is

azonos elhelyezkedéssel rendelkeznek. A vásárláshoz a regisztrációt egy

regisztrációs űrlap kitöltésével és annak a felhasználó által történő

továbbküldésével biztosítottam. A vásárláshoz és a számlázáshoz megadandó

kötelező információk biztosítását úgynevezett kötelező mezők kitöltésével

biztosítottam. Ezek megadása nélkül nem lehetséges a regisztráció és a

vásárlás sem.

A munkafolyamatok részfeladatokra bontásával biztosítani tudtam,

hogy egy előre megtervezett tematika alapján építsem fel a fejlesztés menetét.

Így láthattam, hogy mi az, ami már elkészült, és mennyi időt kell még

fordítanom a hátralévő fejlesztési munka. Ez a fejlesztési projekt felépítésében

és menedzselésében segített.

A fejlesztési munka során előzetesen a következő alapvető feladatok

tervezését tartottam szükségszerűnek:

� A rendszer általános működése

Egy magas szintű működési folyamat felvázolása eltekintve a ténylegesen

felhasznált szintaktikai elemek bemutatásától. Így láthatom a webáruház,

átfogó általános szinten elvárt működési irányait, folyamatait.

� Adatbázis megtervezése

Egy jól átgondolt és strukturált adatbázis gyors és biztos működést alapoz

meg. Mivel ez a tervezett rendszer egy komoly, több táblás adatbázisra épül,

ezért mondhatjuk, hogy ez a részfeladat egyike a legfontosabbaknak, amit el

kellett végeznem. Megtervezni az adatbázisban használt adatok tulajdonságait,

az azokat magukba foglaló táblák felépítését és a táblák közötti kapcsolatot.

� Felhasználói felületek megtervezése

Figyelembe véve az általános írott és íratlan szabályokat, amiket egy

weblaptervezéskor szem előtt tartunk, létre kell hoznom egy jól strukturált

Page 7: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

6

átlátható, az alapkoncepciót megvalósító és kellő felhasználói élményt

biztosító felületet. Ebben a fejezetben ennek a felületnek a megtervezését

fogom elvégezni. Felállítom az oldalak felosztását, megtervezem a használt

betűkészletet, a felületeken uralkodó színvilágot.

� Kódolás

Az előzetes tervek alapján elkezdem a tényleges kódolást, a webáruház

működését biztosító, a felhasználó és az adatbázis közötti kapcsolatot kiépítő

rendszer kialakítását. Ha az előző részfeladatokat és azok céljait sikeresen meg

tudtam határozni, akkor a tényleges kódolás a fejlesztési munka kisebbik

részét fogja jelenteni a számomra, mivel már látható számomra az elvárt

eredmény. Így célirányosan tudom végrehajtani a fejlesztést.

� Üzembe helyezés

Az elkészült termék használni kívánt háttérrendszereken történő

elhelyezésének, üzembe állításának menetét írom le. Bemutatva az eddig ilyen

tevékenységekből szerzett tapasztalataimat.

� Tesztelés

A lefejlesztett felületek teljes körű tesztelésének leírása. A teszt során kapott

eredményeket összevetem a meghatározott működési elvárásokkal. Hiba

esetén elvégzem a szükséges korrekció.

A felsorolt részfeladatok bővebb kifejtését a dolgozat további részében írom

le.

4. Tervezés

4.1. Adatbázis megtervezése

Az adatbázis tervezése az első lépés volt a tényleges webes alkalmazás

megvalósítása során. A folyamatot két részre különítettem el, egy elméleti

tervezésre és egy fizikai leképzésre, megvalósításra. Át kellett gondolnom,

hogy milyen adatokat fogok tárolni az adatbázisban, és ezek az adatok hogyan

fognak kapcsolódni egymáshoz. Meghatároztam az adatokat összefogó

táblázatok felépítését, a bennük található mezők jellemzőit. Nagy hangsúlyt

fektettem az indexelésre is, mivel a relációban tárolt adatok gyors

Page 8: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

7

visszakeresésében nagy szerepe van. Ezeken keresztül könnyen kikereshető a

kulcsot tartalmazó fizikai sor helye és így az ott tárolt adatok gyorsan,

hatékonyan kinyerhetők. Első lépésben egy tagolatlan táblát hoztam létre az

alapok meghatározásához. Így fel tudtam vázolni, hogy milyen adatokra,

mezőkre és értékekre lesz szükség az adatbázisban. Itt még nincs szó táblák

közötti kapcsolatokról, minden adatot egyetlen tagolatlan táblába zsúfoltam

bele. Ez a tárolási forma nem hatékony, így ezt a formát a későbbi

modellezésem során, a harmadik normálforma eléréséig próbáltam átalakítani.

Általában ez a normálforma elegendő ahhoz, hogy megszüntesse a

redundanciát és rugalmas, bővíthető, jól strukturált adatbázist hozzak lére.

Redundanciáról akkor beszélünk, ha valamely tényt vagy a többi

adatból levezethető mennyiséget ismételten (többszörösen) tároljuk az

adatbázisban. A redundancia, a szükségtelen tároló terület lefoglalása mellett,

komplikált adatbázis frissítési és karbantartási műveletekhez vezet, melyek

könnyen az adatbázis inkonzisztenciáját okozhatják. Egy adatbázis akkor

inkonzisztens, ha egymásnak ellentmondó tényeket tartalmaz. A reláció

elmélet módszereket tartalmaz a redundancia megszüntetésére az úgynevezett

normál formák segítségével, azaz az adatbázis táblák normalizálásával. Ennek

azért láttam szükség, hogy a későbbiekben az adatok kezelhetősége és az

adattáblák kapcsolatainak átláthatósága hatékonyabb legyen. Az azonos

csoportokba tartozó adatokat egy táblába soroltam, és azon táblák között ahol

szükséges volt ott azonosítók alapján kapcsolatot hoztam létre.

Normalizálás alatt bizonyos szabályok alkalmazását értjük, melyek

nagyban megkönnyítik majd számunkra az adatbázisaink fenntartását. A

normalizálás voltaképpen az adatbázisok szervezésének egy módja, melynek

célja, hogy a táblák mindig a megfelelő kapcsolatba kerüljenek egymással.

� Első normálforma szabályai

- A táblák nem tartalmazhatnak ismétlődő csoportokat

- A különböző fogalmakkal kapcsolatos adatokat külön táblákba kell

elhelyezni

� Második normálforma szabályai

Page 9: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

8

- A nem-kulcs attribútumok nem függhetnek egyetlen elsődleges kulcs

valódi részhalmazától sem

� Harmadik normálforma szabályai

- Egyetlen attribútum sem függhet más nem-kulcs attribútumoktól

Ez a tervezésben annyit jelentett, hogy addig bontottam részeire az adatokat,

amíg azok kezelhető, jól bővíthető és stabilan működő rendszert hoztak létre.

Amint elkészült az előzetes adatmodell akkor átnéztem az alkalmazás

leendő felhasználójának a szemszögéből is. Ezen a ponton kellett

meghatározni az üzleti logikát és azt is meg kellett vizsgálni, hogy az

adatmodell eleget tesz-e az üzleti logika által megszabott követelményeknek.

A relációs adatbázisok esetében a logikai tervezés során a relációk már

elnyerhetik végleges alakjukat, melyeket egyszerűen leképezhetünk az

adatbázis kezelőben. A fizikai tervezés során inkább arra koncentráltam, hogy

a logikai szerkezet mennyire felel meg a hatékony végrehajtás feltételeinek,

illetve milyen indexeket rendeljek az egyes relációkhoz. A relációkon

végrehajtott műveletegyüttest tranzakciónak nevezik és általában a

tranzakciók gyors végrehajtását kívánjuk elérni vele.

Page 10: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

9

Az adatbázis táblái

Az OnLine Shop adatbázis jelen állapotában 10db táblát tartalmaz.

A FELHASZNÁLÓK tábla tartalma:

azon: A felhasználó azonosítója (auto increment)

vezetekNev: A felhasználó vezetékneve

keresztNev: A felhasználó keresztneve

Email: A felhasználó e-mail címe

cegNev: Céges regisztráció esetén cégnév

jelszo: A felhasználó jelszava

telefonszam: A felhasználó telefonszáma

cimOrszag: A felhasználó postázási címe (Ország)

cimVáros: A felhasználó postázási címe (Város)

cimKozterulet: A felhasználó postázási címe (Közterület)

cimHazszam: A felhasználó postázási címe (Házszám)

cimIranyitoszam A felhasználó postázási címe (Irányítószám)

szamlaCimOrszag A felhasználó számlázási címe (Ország)

szamlaCimVaros A felhasználó számlázási címe (Város)

szamlaCimKozterulet A felhasználó számlázási címe (Közterület)

szamlaCimHazszam A felhasználó számlázási címe (Házszám)

szamlaCimIranyitoszam A felhasználó számlázási címe (Irányítószám)

Datum A regisztráció dátuma

Ez a tábla a webáruházba látogató és ott regisztrációt végrehajtó

felhasználók adatait tárolja. Ezen adatok alapján történik meg az oldalra való

belépés és a vásárlás során a termék postázása a felhasználó felé, illetve a

számlázás. Szintén ezen adatok alapján lehet felvenni a kapcsolatot a

felhasználóval. Fontosnak tartottam a postai és a számlázási adatok külön

tárolását, hiszen ezek eltérhetnek egymástól. Így nagyobb rugalmasságot ad a

felhasználó felé.

Page 11: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

10

FELHASZNÁLÓK tábla:

Oszlopnév Oszloptípus Hossz

Azon INTEGER 11

vezetekNev VARCHAR 75

keresztNev VARCHAR 75

Email VARCHAR 155

cegNev VARCHAR 255

Jelszo VARCHAR 55

telefonszam INTEGER 11

cimOrszag VARCHAR 45

cimVaros VARCHAR 55

cimKozterulet VARCHAR 45

cimHazszam INTEGER 3

cimIranyitoszam INTEGER 4

szamlaCimOrszag VARCHAR 45

szamlaCimVaros VARCHAR 55

szamlaCimKozterulet VARCHAR 45

szamlaCimHazszam INTEGER 3

szamlaCimIranyitoszam INTEGER 4

Datum DATETIME 19

ADMINFELHASZNALOK tábla tartalma:

azon: Adminisztrátor azonosító

felhasználóiNev: Az adminisztrátor felhasználói neve

jelszo: Az adminisztrátor jelszava

rogzitesDatuma: A regisztráció dátuma

Ebben a táblában szerepeltetem azokat a felhasználókat, akik az

adminisztrációs felületre beléphetnek. Itt találhatók a belépéshez szükséges

adatok, felhasználói név, jelszó és a regisztráció dátuma.

Page 12: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

11

ADMINFELHASZNALOK tábla:

Oszlopnév Oszloptípus Hossz

Azon INTEGER 2

felhasznaloiNev VARCHAR 55

Jelszo VARCHAR 55

rogzitesDatuma DATETIME 19

TERMEKTIPUS tábla tartalma:

azon: A terméktípus azonosítója

nev: A termektípus neve

datum: A terméktípus rögzítésének dátuma

Ebben a táblában találhatók a termékkategóriák. Ezek segítségével

tudom csoportokba rendezni a termékeket (mobiltelefon, headset, akkumlátor

stb.) így azokat könnyebben meg lehet találni a felületen. Ezek segítségével

akár többféle termék is regisztrálható az oldalon, kellő dinamizmust adva

ezzel az alkalmazásnak.

TERMEKTIPUS tábla:

Oszlopnév Oszloptípus Hossz

Azon INTEGER 2

Nev VARCHAR 95

Datum DATE 10

Page 13: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

12

TERMEK tábla tartalma:

azon: A termék azonosítója

Gyartó: A termék gyártójának a neve

tipus: A termék típusszáma

termekTipus: A terméktipus táblában található terméktípus azonosító

kep: A termék képét tartalmazó file címe (URL)

ar: A termék ára

datum: A regisztráció dátuma

saleEffectiveDate: A termék eladhatóságának a kezdete

saleExpirationDate: A termék eladhatóságának a vége

Akciós: Egy indikátor ami megjelöli, hogy akciós-e a termék

vagy sem

A táblában a webáruházban található regisztrált termékek vannak

eltárolva. Itt található a gyártójuk, típusuk, áruk és rögzítési dátumuk is. Ezen

kívül még két dátum is szerepel itt, ami az eladhatóságot szabályozza. Ennek

azért láttam szükségét, mert így egy már létező termék megszüntetése esetén is

tovább tárolhatóak annak adatai, és szükség esetén az eladhatóság

manipulálásával ismét aktiválható kikerülve az ismételt regisztrációt.

TERMEK tábla:

Oszlopnév Oszloptípus Hossz

Azon INTEGER 5

Gyarto VARCHAR 55

Tipus VARCHAR 155

termekTipus INTEGER 2

Kep VARCHAR 155

Ar INTEGER 11

Datum DATE 10

saleEffectiveDate DATE 10

Page 14: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

13

saleExpirationDate DATE 10

Akcios INTEGER 1

TERMEKTULAJDONSAG tábla tartalma:

termekAzon: A TERMEK táblában található termékek azonosítója

rendszer900: Indikátor, a termék adott szolgáltatását jelzi (900MHz)

rendszer1800: Indikátor, a termék adott szolgáltatását jelzi (1800MHz)

rendszer1900: Indikátor, a termék adott szolgáltatását jelzi (1900MHz)

meret: A termék méretét jelzi (100x48x19.5)

akkumlator: A termék default akkumlátorának mérete (750 mAh Li-Pol)

Kijelzo: A termék kijelzőjének mérete, ha van (262000/176x220)

naptar: Indikátor, a termék adott szolgáltatását jelzi (naptár)

infra: Indikátor, a termék adott szolgáltatását jelzi (Infraport)

bluethooth: Indikátor, a termék adott szolgáltatását jelzi (bluethooth)

wap: Indikátor, a termék adott szolgáltatását jelzi (WAP)

mms: Indikátor, a termék adott szolgáltatását jelzi (MMS küldés)

gprs: Indikátor, a termék adott szolgáltatását jelzi (GPRS)

3g: Indikátor, a termék adott szolgáltatását jelzi (3G)

edge: Indikátor, a termék adott szolgáltatását jelzi (EDGE)

Kamera: A terméken található kamera felbontása, ha van (640x480)

datum: A terméktulajdonságok regisztrálásának dátuma

A táblában találhatók a termékekhez tartozó általános tulajdonságok,

technikai paraméterek. A TERMEK táblában szereplő azon – nevű

termékazonosító alapján hivatkoztam a TERMEK táblára és az ott azonosított

termékekhez rendelt tulajdonságokra. Olyan adatok tárolását terveztem itt,

amelyek segítségével egy körülbelüli képet kaphatunk a kiválasztott termék

szolgáltatásairól, fizikai paramétereikről, mint a méret, vagy a kijelző

felbontása.

Page 15: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

14

TERMEKTULAJDONSAG tábla:

Oszlopnév Oszloptípus Hossz

termekAzon INTEGER 5

rendszer900 INTEGER 1

rendszer1800 INTEGER 1

rendszer1900 INTEGER 1

Meret VARCHAR 15

akkumlator VARCHAR 18

Kijelzo VARCHAR 25

Naptar INTEGER 1

Infra INTEGER 1

bluethooth INTEGER 1

Wap INTEGER 1

mms INTEGER 1

Gprs INTEGER 1

3g INTEGER 1

Edge INTEGER 1

Kamera VARCHAR 12

Datum DATETIME 19

HÍRLEVÉL tábla tartalma:

hirlevelAzon: Egy alap érték a hírlevél funkcióhoz

felhasznaloAzon: A regisztrált felhasználók azonosítója

A tábla azon felhasználók azonosítóját tartalmazza, akik feliratkoztak a

webáruház regisztrációs folyamata során a hírlevél szolgáltatásra. Így

egyértelműen látható az alkalmazást üzemeltető számára, hogy kinek kell

elküldeni az aktuális hírlevelet.

Page 16: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

15

HIRLEVEL tábla:

Oszlopnév Oszloptípus Hossz

hirlevelAzon INTEGER 3

felhasznaloAzon INTEGER 11

BEVÁSÁRLO_KOCSI tábla tartalma:

Session_id A munkamenet azonosító

Termek_azon A TERMEK táblában található termékazonosító a kiválasztott

termék egyértelmű azonosításához

Termek_ar A TERMEK táblában található termékazonosítóhoz tartozó ár.

A lehetséges árváltozások miatt fontos itt is szerepeltetni a

termék megvásárláskor aktuális árát.

mennyiseg A megadott termékazonosító alatt található termék

megvásárolni kívánt darabszáma

Datum A termék kosárba tételének dátuma

Ebben a táblában találhatók a webáruházban kiválasztott és jövőbeni

megvásárlásra a kosárba helyezett termékek. Az adott termék árát itt is

eltároltam, így az esetleges termékárakban történő változások során is jól

nyomon követhető, hogy az adott termék milyen áron vásárolták meg,

elkerülve így az esetleges reklamációkat.

BEVASARLO_KOCSI tábla:

Oszlopnév Oszloptípus Hossz

Session_id VARCHAR 155

Termek_azon INTEGER 11

Termek_ar INTEGER 11

mennyiseg INTEGER 2

Datum DATETIME 19

Page 17: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

16

REDELES_STATUSZ tábla tartalma:

azon: A rendelés státusz azonosítója

nev: A rendelés státusz neve

datum: A státusz regisztrálásának dátuma

Ebben a táblában található a rendelésekhez kapcsolt rendelési státusz.

Ezzel különíthetők el az új és a folyamatban lévő rendelések illetve azok,

amelyek már teljesítve lettek.

RENDELES_STATUSZ tábla:

Oszlopnév Oszloptípus Hossz

Azon INTEGER 1

Nev VARCHAR 15

Datum DATETIME 19

RENDELES tábla tartalma:

azon: A megrendelés azonosítója

felhasznalo_azon: A megrendelést leadó felhasználó azonosítója

Statusz: A megrendelés státusza

datum: A megrendelés dátuma

A tábla a ténylegesen megrendelés után a megrendelő, felhasználó

azonosítóját, a megrendelés státuszát és a megrendelés dátumát tartalmazza.

RENDELES tábla:

Oszlopnév Oszloptípus Hossz

Azon INTEGER 11

felhasznalo_azon INTEGER 11

Statusz INTEGER 1

Datum DATETIME 19

Page 18: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

17

RENDELES_TERMEK tábla tartalma:

rendeles_azon: A rendelés azonosítója a RENDELES táblából

Termek_azon: A megrendelt termék azonosítója a TERMEK táblából

Termek_ar: A termek ára amit éppen a megrendelés pillanatában

tartalmazott a TERMEK tábla a megadott termékazonosító

alatt

mennyiseg: Megrendelt mennyiség

A tábla a RENDELES tábla kiegészítése, ahhoz kapcsolódik a rendelés

azonosítóján keresztül. Tartalmazza a megrendelt termékek azonosítóját, azok

árát és a megrendelt mennyiséget. Az termek árat a fent említett indokok miatt

itt is eltároltam. (bevásáró_kosár)

RENDELES_TERMEK tábla:

Oszlopnév Oszloptípus Hossz

rendeles_azon INTEGER 11

Termek_azon INTEGER 5

Termek_ar INTEGER 11

mennyiseg INTEGER 2

A fizikai megvalósításhoz a MySQL adatbázis szerverét használtam fel.

Ez egy többfelhasználós, többszálú, SQL-alapú relációs adatbázis-kezelő

szerver. A szoftver fejlesztője a svéd MySQL AB cég, amely kettős

licenceléssel teszi elérhetővé a MySQL-t; választható módon vagy a GPL,

vagy egy kereskedelmi licenc érvényes a felhasználásra. Az MySQL az egyik

legelterjedtebb adatbázis kezelő, aminek egyik oka lehet, hogy a teljesen nyílt

forráskódú LAMP (Linux–Apache–MySQL–PHP) összeállítás részeként

költség hatékony és egyszerűen beállítható megoldást ad dinamikus

webhelyek szolgáltatására. A MySQL adatbázisok adminisztrációjára a

mellékelt parancssori eszközöket (mysql és mysqladmin) használhatjuk. A

Page 19: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

18

fejlesztés során én az EMS adatbázis kezelő felületét használtam és a

phpMyAdmin programot, de MySQL honlapjáról grafikus felületű

adminisztráló eszközök is letölthetők: MySQL Administrator és MySQL Query

Browser. A saját gépen történő fejlesztéshez én az EMS felületét találtam a

leghasznosabbnak. Egy jól átlátható és gyorsan működő rendszerről van szó,

amellyel tökéletesen épül a MySQL szervere fölé.

4.2. Felülettervezés

Az alkalmazás fejlesztése során az adatbázisban tárolt adatok

megjelenítése, azok rendezett, jól átlátható felületen való továbbítása a

felhasználó felé újabb tervezési feladatot jelentett. Egy egységes felület

megalkotását tűztem ki célul, szem előtt tartva a webes szabványokat. A

szabványok követése lehetővé teszi, hogy az oldal a böngészők nagy részén

ugyanolyan megjelenéssel, elvárt működéssel fusson. A böngészők jövőbeni

változatain is stabil működő rendszerre számíthatunk.

4.2.1. A tervezésben használt technikák

A HTML (Hyper Text Markup Language) nyelv helyett már az

XHTML (eXtensible Hyper Text Markup Language) nyelvet használtam fel a

tartalom megszerkesztésénél. Ez egy kiterjeszthető HTML nyelv. A

jelölőnyelv az XML (eXtendible Markup Language) egy alkalmazása, vagyis

XML eszközökkel is feldolgozható. A fejlesztés során nagy segítség, ha a

tartalom egyértelműen megmutatkozik, látható hol kezdődik, és hol végződik

az adott tartalmi rész. Ezt használva egy jól áttekinthető tartalmi vázat tudtam

alkotni, nem több ráfordított idővel mintha nem vettem volna figyelembe a

szabványokat. Érdemes megemlíteni az XHTML jelölőnyelv alapvető

szabályait:

XHTML: különleges követelményei

� Minden kezdőcímkének kötelezően kell egy lezáró párjának is lennie

� Különleges DOCTYPE meghatározására van szükség

Page 20: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

19

� Minden elemet, jellemzőt és értéket kisbetűvel kell írni

� Minden értéket idézőjelben kell megadni, ami lehet egyes (angolos) vagy

kettes (normál)

� Minden jellemzőnek egyértelműen meg kell adni az értékét

A XHTML tag-jei segítségével leírható a webes tartalom. Az így leírt

tartalmat a böngészők már képesek megjeleníteni. Így kaptam egy vázat, amit

aztán később a megrendelő igényei szerint tudok megjeleníteni, formázni. A

megjelenítés a böngészők sajátossága lesz alapesetben, mivel nem szabtam

meg, hogy mely tag-ek milyen formában és hol jelenhetnek meg az oldalon.

Erre szolgál a CSS (Cascading Style Sheets) azaz stíluslapok, amelyek

meghatározzák a tényleges megjelenést.

A mai böngészők mindegyike támogatja a CSS-t, de kisebb eltérések

azért vannak az egyes böngészők között. Ezért, mivel a szabványokat

szerettem volna követni és egy jól strukturált rendszer fejlesztése a cél a CSS

használatával valósítottam meg a tartalom formába öntését. Általában külön

állományban tároljuk a stíluslapokat css kiterjesztéssel, így én is ezt tettem.

Így, ha a stílusleíró kódot külön helyezem el a tartalomtól leválasztva

gyorsabb betöltési idővel számolhatok. A CSS stílusok segítségével akár eltérő

megjelenítést is biztosíthatok a tartalomnak. Egy HTML tag többféle

stílusleíró szabályt is kaphat, attól függetlenül, hogy hol helyezkedik el a

dokumentum felépítésében. A stílusok a következő sorrendben fognak

érvényesülni prioritási sorrend szerint növekvően:

CSS: stílusok szabályainak rangsora

� A böngésző alapbeállítása

� Külső stíluslap

� Beágyazott stílus

� Szövegközi stílus

Page 21: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

20

Az alapszintaktika három elemet különböztet meg: kiválasztó,

tulajdonság, érték. Pl.:( kiválasztó { tulajdonság: érték } ). A megjeleníteni

kívánt elemre többféle módon hivatkozhatunk, használhatunk többféle

kijelölőt. Kiválaszthatjuk a megjelenítendő tag-et, kiválasztót és adhatunk neki

egy stílust.

Ezen kívül választhatjuk még a következőket:

� Felsorolás

Egyszerre akár több kiválasztóra is érvényesíthetjük a formázást. Ekkor

a kiválasztókat egymás után vesszővel elválasztva kell felsorolni.

h1, h2, h3, h4 {color: green;}

� Osztály kiválasztó

Ennek segítségével más-más módon tudjuk megjeleníteni az egyes

osztályokba sorolt elemek tartalmát. Ezt a class kulcsszó használatával

érhetjük el.

p.right {text-align: right}

p.left {text-align: left}

� Azonosító alapú szétválasztás

A HTML elemeknek megadhatunk egy id tulajdonságot. Így az egyedi

id-vel rendelkező elemekhez speciális formázást határozhatunk meg.

CSS-ben a # segítségével tudunk elemet id segítségével kiválasztani.

A következő példa a kiemel elemet fogja azonosítani:

#kiemel {color: red;}

Ezek használatával jól elkülöníthető blokkokra tudtam osztani a

tartalmi részeket, így azok megjelenítése egyértelművé, a kódban is jól

kivehetővé vált. A CSS további mélyebb áttekintésére a dolgozat keretein

belül nincs lehetőség, de rengeteg kiadvány, könyv és internetes portál segít

eligazodni a CSS világában.

Page 22: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

21

Az alkalmazást két jól elkülöníthető felületre osztotam, egy

felhasználói felületre és egy adminisztrátori felületre. Mind a két esetben

hasonló felépítésre és stílusra törekedtem, de a tartalmak tekintetében eltérnek

egymástól. Mind a két esetben a fent említett szabványokat és nyelveket

használtam fel a megvalósításhoz. Nagy segítséget jelentett a fejlesztésben a

FIREFOX egy beépülő modulja a Web Developer, amely egy speciális

felületet és rengeteg lehetőséget biztosít a webfejlesztéshez. Ez a tool

ingyenesen letölthető a mozilla – Firefox Add-ons oldaláról és telepítés után

azonnal hozzáférhetők az újonnan szerzett szolgáltatások

(https://addons.mozilla.org/firefox/60/). Az első igazán nagy segítséget a CSS

szabályainak, használatának a megértése terén nyújtotta. A CSS menü alatt

lehetőség van az éppen aktuális oldal stíluslapjának a megtekintésére View

CSS. Így látható, hogy az oldal mögött milyen megoldásokat alkalmazott a

fejlesztő. A menüpontban az Edit CSS egy szerkesztőfelület ahol élőben

szerkeszthető és a képernyőn azonnal látható a stíluslapban történt változás.

Ennek köszönhetően sokkal gördülékenyebb volt a felületek tervezése,

fejlesztése. Az alkalmazott CSS szabályokat azonnal át tudtam vinni a

tényleges css file-ba így a tervezett oldal megjelenése már egy jól

megtervezett stíluslap eredménye volt.

Mind a két felület (felhasználói és admin) bővelkedik űrlapokban. Egy

jó és szabványos űrlap készítése nehéz feladat, amiben a fenti tool egy másik

szolgáltatása segített nekem, amely a Forms menüpont alatt található. Itt a

Display Form Details funkcióval azonnal meg tudtam jeleníteni a weblapon

található form-ok tulajdonságait, attribútumait. A View From Information az

oldalon található űrlapok tulajdonságait egy külön felületre szedve táblázatos

formában is meg tudja jeleníteni kiemelve ezeket a grafikus tartalomból, nagy

segítséget biztosítva a fejlesztéshez. Ezek használatával már már otthonosan

mozogtam a tervezett felületen, de az igazi nagy segítség az Outline menü

alatt volt elrejtve. Az itt található kis alkalmazások arra szolgálnak, hogy

segítségükkel behatárolhassuk a különböző blokk és egyéb elemek határait.

Page 23: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

22

Bekapcsolva azonnal láthatóvá vált, hogy hol helyezkednek el a blokk-ok

végei, az űrlapok határai és a cella, táblahatárok. Így már jól látható, hogy hol

van esetleg tervezési hiba. Javítani tudtam az egymásba csúszó elemek

értékeit, fel tudtam mérni ténylegesen mi mekkora területet foglal és pontosan

hol található az oldalon.

4.2.2. Adminisztrációs felület

Az első felület, amit megterveztem az adminisztrációs felület volt,

hiszen ez alapján tudom feltölteni az adatbázist, és ez alapján tudom a

későbbiekben manipulálni, figyelemmel kísérni a webáruház termékeit,

megrendeléseit.

A felület a következő alapvető területekre tagolódik:

� Fejléc

� Bal menüsáv

� Tartalom

� Lábléc

Az adminisztrátori felület belépés után a termékek menüpont alatt.

Page 24: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

23

A felület megtervezésekor figyeltem a fontosabb menüpontok minél

kontrasztosabb megjelenítésére. Ezért kerültek jól látható kiemelt helyre, a bal

menüsávba. Ugyanitt kapott helyet az oldalra való belépéshez szolgáló belépés

űrlap. A tartalom megjelenítése nagyobb területet kíván, így azt középre a

weboldal kétharmadát kitöltő felületre helyeztem el. Így a legfontosabb

információk kellő teret kapnak a megjelenítés során. A felület egyértelműen

jól elkülönülő blokkokra bontott, így könnyen áttekinthető a rajta található

megjelenített információ. A weboldalon jól megtervezett navigáció segít a

tájékozódásban. Itt figyeltem arra, hogy minden oldalról egyszerűen és

gyorsan vissza lehessen jutni a főoldalra.

4.2.3. Felhasználói felület

Ez maga a webáruház felülete. Az alapstílus ugyanaz, mint az

adminisztrációs oldalon bővítve egy plusz oszloppal és egyéb tartalmi

elemekkel, így az adminisztrátor mindig tudja, hogy éppen hol,melyik

felületen jár. Hasonló stílus leképzése segíti az eligazodást a két felült között.

Itt lehet majd böngészni az áruház kínálatát képező termékek között. Szintén

itt lehet regisztrálni, belépni és vásárolni is. Mivel nagy mennyiségű

információt kell megjeleníteni ezért itt a fenti logikát kiegészítettem egy újabb

oszloppal.

A portál felülete a következő alapvető területekre tagolódik:

� Főmenü

� Fejléc

� Bal menüsáv

� Tartalom

� Jobb menüsáv

� Lábléc

Jól látható helyre került a főmenü, kihasználva a színek adta kontrasztot

a sötét háttér és a világos betűszínek között. A bal menüsávba egy

Page 25: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

24

dinamikusan változó menüt helyeztem el, ami a webáruház tartalmának

megfelelően változik. Így a főmenüvel biztosítottam az alapvető funkciók

folyamatos elérhetőségét és a dinamikus bal menüsáv használatával mindig az

aktuális az adatbázisba regisztrált termékek megjelenítését.

A felhasználói felület, a samsung termékeinek listája

A termékkategóriákat a többi tartalomtól jól elkülönülő helyre terveztem A

tartalmat táblázat formájában jelenítettem meg, így egy jól áttekinthető

felületet tudtam kialakítani.

5. Megvalósítás

A megvalósítás során az előre átgondolt és megtervezett rendszer

tényleges kódokba való átültetését végzem. Mivel a leendő alkalmazás

megtervezésekor olyan szoftvereket és technológiákat szerettem volna

felhasználni, amelyek szabadon hozzáférhetőek, nyílt forráskódúak, ezért a

rendszert PHP alapokra helyeztem, támogatva MySQL adatbázissal és Apache

webszerverrel.

Page 26: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

25

5.1. A megvalósításban felhasznált technológiák

A tényleges fejlesztés előtt szükséges egy környezet kialakítása, ami

támogatja és futtatja a megírt kódot. Az interneten többféle csomag található,

amely szabadon hozzáférhető és egy teljes keretrendszert biztosít a

fejlesztéshez. Ilyen például az Apache2Triad, ami Windows 2000/XP alá

telepítve tartalmaz Apache-ot, PHP 5-öt MySQL-t és még jó néhány hasznos

programot. A fejlesztés megkezdésekor és a fejlesztés során a XAMPP 1.5-ös

verziót használtam. Ez szintén egy szabadon hozzáférhető telepítő csomag,

amely a telepítés után egy azonnal használható fejlesztői környezetet helyez el

a gépünkön, így szinte azonnal neki kezdhettem a kódolásnak a rendszer

alapvető paramétereinek módosítása nélkül. Persze azért nem árt tisztában

lenni a kódot futtató rendszer tudásával, tulajdonságaival.

Az Apache egy nyílt forráskódú webszerver, ami azt jelenti, hogy

program teljes forráskódja szabadon hozzáférhető. A legújabb verzió

letölthető a http://www.apache.org/ honlapról. A szoftver platform független,

így Windows, Linux és akár OS/2 – es környezeten is futtatható. Mivel

alapvetően a web-re fejlesztünk, elengedhetetlen egy webszerver megléte a

gépen, hiszen ez a lefejlesztett kód működésének ellenőrzésekor

nélkülözhetetlen. Nagy segítséget jelentett, hogy a fejlesztés során

folyamatosan tudtam követni a kód futásának eredményét.

A PHP (Hypertext Preprocessor) egy kiszolgáló oldali parancsnyelv,

amit jellemzően HTML oldalakon használnak. Népszerűsége az új verziók

megjelenésével egyre inkább emelkedik. Egy felmérés szerint 1999-ben több

mint 1 millió kiszolgálón használták, ez a szám 2003-ra majdnem 14 millióra

nőtt. A PHP-t kifejezetten a világhálóra írták, így azokra a problémákra,

amelyekkel a webprogramozók nap, mint nap szembesülnek, magában a

nyelvben megtaláljuk a megoldásokat. Beépített SQL adatbáziskönyvtárat

kínál, így számos adatbázisfajtát önműködően támogat. Egyaránt használják

szerveroldali, parancssori és ablakozós alkalmazások megvalósítására. Ezen

Page 27: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

26

érvek és a PHP nyelv emberközeli felépítése miatt döntöttem amellett, hogy a

kódot ezen a nyelven fejlesztem le. Gyorsan és hatékonyan tudtam egy

viszonylag nagy kapacitású keretrendszert építeni vele, ami a mai igényeknek

megfelelő dinamikus webes alkalmazás támogatására szolgál.

A tervezéskor és a megvalósításkor is célom volt a rendszert úgy

kialakítani, hogy az már az Objektum Orientált Programozási szemléletnek

megfeleljen és az objektum orientáció minden jellegzetességét magába zárja.

Erre kiváló lehetőséget adott a PHP 5-ös verziója, ami már hiánytalanul

biztosítja az objektum központú programozáshoz szükséges alapokat,

technikákat, szintaktikai elemeket. A fent említett verzió a következő

újdonságokat tartalmazza, amik egy részét igénybe is vette a fejlesztés során:

� Beépített XML támogatás

� SQLite SQL könyvtár

� Privát, védett tagfüggvények támogatása az osztályokban

� Osztályállandók támogatása

� A függvényeknek és tagfüggvényeknek átadott objektum hivatkozásként

adódik át

� Statikus függvények és tulajdonságok támogatása

� Támogatja az elvont (abstract) osztályokat és felületeket

Az OOP egy programozási, tervezési szemlélet, amelynek nagy előnye,

hogy átláthatóbbá, könnyebben kezelhetővé és mobilabbá teszi a kódot. Ennek

a szemléletnek az alkalmazásával olyan kódot tudtam írni, ami többször is

felhasználható, hordozható így a későbbiekben egyes részei akár

újrahasznosíthatóak, megspórolva ezzel többórányi újabb fejlesztési munkát.

Az alapja az objektum, ami változók és függvények egybezárt

csomagja. Az objektum belső működése nagyrészt elrejtett az objektumot

használók elől, úgy hogy csak hozzáférést biztosítunk, amin keresztül

Page 28: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

27

kérelmeket küldhetünk, és információt kaphatunk az objektumtól. Ezzel egy

stabil működésű kódot hozhattam létre, amelyben a fontos és mások számára

hozzá nem férhető értékek, változók jól, biztonságosan kezelhetővé váltak a

külvilágtól elzárva az objektumok belsejében. Ezek az úgynevezett

tagváltozók, amelyekhez a tagfüggvényeken (metódusok) keresztül lehet

hozzáférni. Így ki tudtam zárni, bizonyos nem kívánt működési lehetőségeket.

Az objektumközpontú programok legnagyobb előnye a kód újrahasznosítása.

A létrehozott osztályokat egységbe zárt objektumok létrehozására használjuk,

így azokat egyszerűen át tudom vinni egyik projektből a másikba.

Lehetőség van gyermekosztályokat is létrehozni, (öröklés) amik a szülő

tulajdonságait öröklik és képesek azt kiegészíteni, módosítani. Ez a módszer

több alkalommal is megfordult a kódolásom során, remek alkalmat ad

tagfüggvények, változók tovább adására, megkönnyítve, ezzel a fejlesztést, a

későbbiekben átlátható kódot hozva létre.

Példa az öröklés megvalósítására:

class Felhasznalo extends dbKapcsolat {

}

Az általam tervezett és létrehozott objektumcsaládok, szorosan

egymásra épülnek, és az alaptulajdonságaik folyamatosan bővülnek. Mind

szélesebb körben használható egyre több tulajdonsággal bíró, de átlátható

hierarchiát hozva létre a kódban.

Ahhoz, hogy létre tudjunk hozni egy objektumot először létre kell hozni

a sablont amire épül. Ezt a sablont hívjuk osztálynak (class). Ezt a

következőképpen tudjuk megtenni:

Page 29: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

28

class dbKapcsolat

{

public $db;

public function __construct()

{

$this->db = Kapcsolat::getInstance();

}

}

(Részlet a megvalósított webalkalmazás kódjából (ddKapcsolat osztály))

Az osztályok létrehozásakor két különleges függvény meghívására,

megírására is szükség van. Az egyiket úgy nevezik, hogy konstruktor és arra

szolgál, hogy az osztály tulajdonságait beállítsuk vele. A függvény egy új

objektum létrehozásakor fut le automatikusan a new kulcsszó kiadásakor.

Konstruktort kétféleképpen készíthetünk a PHP 5-ös verziójában. A

konstruktor neve megegyező az osztály nevével. Ebben az esetben a program

tudja, hogy ez a függvény a konstruktor. Egy másik lehetőség a __construct()

függvény. Itt az osztály neve helyett ezt a függvényhívást kell végrehajtanunk.

Példa a konstruktor használatára:

public function __construct($azon = null) {

}

A másik függvény a destruktor. Ez arra szolgál, hogy az objektum

elvégezze a hozzá kapcsolódó utófeladatokat. Ez általában akkor következik

be, ha a kód egyetlen futó folyamata sem hivatkozik a már adott objektumra.

Ahogy a konstruktor esetében függvényhívásra van szükség, addig a

destruktort esetében azt a PHP automatikusan megteszi helyettem.

Page 30: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

29

Példa a destruktor használatára.

public function __destruct() {

$this->lezar();

}

Fontos volt számomra a tervezés során, hogy a változókat és

tagfüggvényeket csak annyira engedjem láttatni és hozzáférést adni a

felhasználóknak amennyire a programműködéshez szükséges, biztosítva ezzel

az elvárt működést. Így a kódban folyamatosan figyelemmel kísértem a

tagváltozók és tagfüggvények hozzáférésének megfelelő biztosítását. Ezt az

OOP három formában biztosítja, public, protected, és privat kulcsszavak

megjelölésével. Ezek biztosítják, hogy az osztályokból csak annyit fedjünk fel

amennyi feltétlenül szükséges. Ezt a három korlátozást mind az osztályok

mind a tagváltozók és a tagfüggvények elkészítése során alkalmaztam.

Példa a korlátozások használatára változónál:

public $lekerdezOsszAdat;

Példa a korlátozások használatára tagfüggvény esetén:

public function __construct($azon = null) {

parent::__construct();

//azonosító elementése

$this->azon = (int)$azon;

}

}

A fentieken kívül az egyik legfontosabb újítás a PHP 5 –ben a statikus

változók és függvények használatának lehetősége. Ez megkönnyítette a

Page 31: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

30

munkámat olyan esetekben, amikor egy függvényhívás nem követeli

feltétlenül egy objektum létrehozását. Tehát a függvény és a benne található

eljárások nem kapcsolódnak közvetlenül az objektum tulajdonságaihoz.

Ezeket a függvényeket static kulcsszóval megjelölve statikussá tehetjük azaz

közvetlenül hivatkozhatunk rájuk. Ezek használatával meggyorsítható a kód

lefutása.

Példa a statikus függvényre:

public static function kilepes() {

$_SESSION['felhasznalo_azon'] = null;

unset($_SESSION['felhasznalo_azon']);

}

A fent leírt OOP szemléletnek köszönhetően, figyelve a szintaktikai

elemek megfelelő használatára, olyan kódot sikerült alkotnom, amely

bármikor felhasználható egy újabb fejlesztés során. A tervezésre és a

kivitelezésre nem ment el több idő, mintha egy általános függvényalapú

szemléletet követtem volna. Tapasztalataim szerint az OOP-s rendszer

stabilabb, jobban átlátható működést és kódot eredményezett. Az elvárt

eredmények kiszámíthatóbbak. Előre lehet tervezni a kód alapján a várható

működést. A hibajavítás terén is sokat segített az előre megtervezett

keretrendszer. Hibák során egyértelműen beazonosítható volt számomra a hiba

forrása, így a javításukat is gyorsan el tudtam végezni. Figyelembe véve, hogy

a legtöbb programozási nyelvben és a programfejlesztések során az objektum

központú gondolkodást tartják szem előtt, nagy előnynek érzem, hogy a

fentiek használatával alkottam meg a webes alkalmazásomat, kihasználva és

elsajátítva ezzel az OOP előnyeit, tulajdonságait.

A fejlesztés során próbáltam a már meglévő –fent említett- és használt

technológiák listáját szélesíteni és a ma használatban levő, úgynevezett web 2

Page 32: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

31

-es technikák egy kis részét belecsempészni az alkalmazásba. Egyre inkább

elterjedt ilyen technológia az AJAX. Ennek segítségével egy dinamikus

keresőmodult építettem fel, amely igazán esztétikus és hasznos része lett a

webáruháznak, nem is beszélve a mögötte álló „friss” technológia

alkalmazásáról. Az AJAX egy webfejlesztési technika (Asynchronous

JavaScript and XML), amelyet interaktív webalkalmazások létrehozására

használnak. Ennek használata során a weblap viszonylag kevés adatot cserél a

szerverrel, így annak nem kell az egész weblapot újratölteni, csak az éppen

aktuális részt. Mivel ezzel a technikával egy keresőlistát készítettem, így itt is

csak egy minimális adatmennyiség indul a szerver felé és onnan vissza. A

technika kiválasztásával felhasználói élmény fokozása volt a célom.

Az Ajax a következő technikák kombinációja:

� XHTML (vagy HTML) és CSS a tartalom leírására és formázására.

� DOM kliens oldali script nyelvekkel kezelve a dinamikus megjelenítés és a

már megjelenített információ együttműködésének kialakítására.

� XMLHttpRequest objektum az adatok asszinkron kezelésére a kliens és a

webszerver között. Néhány Ajax keretrendszer esetén és bizonyos

helyzetekben IFrame-et használnak XMLHttpRequest objektum helyett.

� XML formátumot használnak legtöbbször az adattovábbításra a kliens és a

szerver között, bár más formátumok is megfelelnek a célnak, mint a

formázott HTML vagy a sima szöveg.

A használat során az Ajax-os oldala viselkedése sokkal felhasználó közelibb,

és dinamikusabb, mint ha egy desktop alkalmazást használnánk. Nem kell

várni a teljes weboldal újratöltésére, éppen csak az aktuális blokk adatait

várjuk a szervertől. Minden más változatlan marad, így csak a feltétlenül

szükséges minimális adat fut keresztül a hálózaton. A technológia tényleges

alkalmazásához letölthetünk úgynevezett Ajax Framework-öket , de akár meg

is írhatjuk a működéséhez szükséges kódot. Saját tapasztalatszerzés céljára

mind a két esetet kipróbáltam, de a mostani fejlesztés során a JQuery

függvénygyűjteményt használtam, ami szintén egy ingyenesen hozzáférhető

Page 33: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

32

javascript könyvtár. A könyvtár letölthető a hivatalos oldalról

http://jquery.com/. A javascript könyvtárak elsősorban a böngészők

inkompatibilitása miatt jöttek létre. Saját jscript tapasztalataim során sok

bosszúságot és fejtörést okozott, hogy hogyan is oldjam meg a fenti

problémát. A hosszadalmas kódok és elkerülő technikák helyett én is a fenti

megoldást, egy sokkal tisztább és rugalmasabb rendszert választottam. Így

biztosítva van a jscript kódok működése platformtól függetlenül. Az

XMLHTTPrequest kezelés szintén fontos része az Ajax-nak, amit a fenti kis

alkalmazás remekül elvégez. Segítségével egy perc alatt végrehajthattam

asszinkron adatátvitel. Lehetőség van az adatok GET illetve POST formában

való küldésére és a szervertől a választ XML vagy TEXT formátumba

kaphatjuk vissza.

Példa a JQuery Ajax támogatására (GET):

url: a betöltendő oldal címét

paraméterek: a szerver felé küldendő paramétereket

callback: ez egy függvény, ami végrehajtásra kerül, ha sikeresen

betöltődtek a kért adatok

$.get("test.cgi",

{ name: "John", time: "2pm" },

function(data){

alert("Data Loaded: " + data);

}

);

Gyakorlatilag ilyen egyszerűen tudtam én is beültetni a saját kódomba

az Ajax használatát színesítve ezzel a felhasználói élményt, és gazdagabbá

téve a felsorakoztatott technológiák listáját nem is beszélve a tapasztalatokról.

Page 34: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

33

5.2. A rendszer logikai működése

A fejlesztés során ez volt az a rész, ahol igazán nagy mennyiségű

tapasztalatra tettem szert. Itt tudtam igazán belelátni a programozási nyelv

szintaktikai és logikai működésébe. A tervezés során elkészült dokumentáció

felhasználásával már kialakult egy kép a program felépítéséről, működéséről.

A kódolásra fordított idő lerövidülése is ennek volt köszönhető. Látványos

volt a fejlődés a számomra a kezdeti bizonytalanságból, arra a pontra való

eljutásig, amikor már tudatosan, a felépített rendszert ismerve tudtam a

fejlesztést végezni.

A rendszer alapvetően egy úgynevezett keretprogramból áll, ami a

teljes függvényhívást, adatkérést, fogadást vezérli, így biztosítottam, hogy

mindig a megfelelő függvények kerüljenek meghívásra. Ez kiszámítható,

stabil működést biztosít a program számára. A keretprogram felett osztályok

találhatók, amelyek csoportokba gyűjtik az azonos területre specifikált

függvényeket. Ezeket úgynevezett modul osztályok implementálják, és ezeken

keresztül futnak át a kérések a felhasználótól. A felhasználó a template-en

keresztül látja a kért információt, így jól elkülöníthetőek a különböző

funkcionalitást ellátó kódok. Ennek köszönhetően egy jól átlátható rendszert

tudtam alkotni, ahol könnyen nyomon követhető és kiszámítható a futási

eredmény.

Page 35: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

34

A működési folyamatot vázlatszerűen ábrázolja a csatolt kép:

A fejlesztés során létrehozott file-ok neveinél szerettem utalni annak

tartalmára, a programban való szerepére. Így megkülönböztettem az

osztályokat név.class.php, a template-ket név.tpl.php és az include file-okat is

név.inc.php névvel. Így ránézésre látható, hogy milyen file-ról és körülbelül

milyen tartalomról, funkcionalitásról lehet szó.

5.3. Osztályok

A programban az objektum orientált szemléletnek megfelelően

osztályokba fogtam össze azokat a tagváltozókat és tagfüggvényeket, amelyek

azonos adatkörön hajtanak végre műveleteket. Így mindig pontosan tudható,

hogy egy bizonyos feladat elvégzéséhez mely osztály implementálására és

mely függvény meghívására van szükség. A tervezés során egy külön osztályt

alkottam az adatbázissal való kapcsolattartásra. Ez a KAPCSOLAT osztály. A

többi osztály ezen keresztül, mint egy kapcsolófelület kapnak elérést az

adatbázis felé. Rajta keresztül küldhetnek kéréseket és fogadhatnak

válaszokat. Ezzel a felülettel biztosítottam, hogy ne legyenek a programban

behatárolhatatlan adatbázis műveletek. A kapcsolat felépítéséhez szükséges,

kötelezően megadandó paramétereket egy külön file-ban helyeztem el, így

biztosítva a kód hordozhatóságát és egyszerű kezelhetőségét (site.inc.php).

define('DB_KISZOLGALO', 'localhost');

define('DB_FELHASZNALO', 'root');

define('DB_JELSZO', '');

define('DB_ADATBAZIS', 'Online_Shop_1_0');

Page 36: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

35

Az osztályban két csoportra osztottam az adatbázis műveleteket. Az első

csoport a lekérdezések, amelyek siker esetén egy eredménytömbbel térnek

vissza és a futtatásokra, amelyek eredménye, hogy sikeres volt-e a lefutás

vagy sem. A lekérdez függvény egy másik osztályt használ, ami ténylegesen

segít feldolgozni az eredményhalmazt. A tervezés során már volt

tapasztalatom a sorozatos adatbáziskérelmek és azok eredményeinek

feldolgozásában. Jól tudtam, hogy milyen nehéz ezeket egymás után

hatékonyan kezelni és kinyerni belőlük a szükséges információt. Ennek

kezelésére született meg a lekérdezés osztály. (lekerdezes.class.php) Ebben

egy iterátor segítségével végzem el az eredménytömb feldolgozását. Ez

tulajdonképpen bizonyos műveletek ismétlését teszi lehetővé. A következő

függvényekből áll:

public function next() {

$this->row = $this->getTomb();

$this->counter++;

}

public function valid() {

return $this->row != false;

}

public function current() {

return $this->row;

}

public function key() {

return $this->counter;

}

public function rewind() {

$this->futtat();

}

A függvénynevekből már lehet következtetni azok funkcióira és az egész

működésére is. Az iterátor használatával bármikor kezelni tudtam fennakadás

nélkül az egymás után történt SQL lekérdezések eredményeit. Egységes

Page 37: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

36

kezelésüknek köszönhetően sokkal gördülékenyebbé vált számomra a

fejlesztés menete.

Jellemzően két olyan osztály van, ami mind a két felületen a felhasználói és az

adminisztrációs felületen is ugyanaz. Ez pedig a felhasználó és a termék

osztály. Ezek csoportok is egyben. A termékosztályba helyeztem el az összes

terméktáblákban manipulációt végző függvényt, míg a felhasználóosztályba a

felhasználótáblákban műveletet végző függvények kaptak helyet. Mind a két

osztály ugyanazt a felépítési elvet követi. Mivel a műveletek azonosak, csak

céltáblák és a céladatok eltérőek, ezért azonos struktúra alapján építettem fel

őket. Olyan alapvető folyamatokat végrehajtó függvényekből állnak, mint az

adatok listázása (listaz) a termékek illetve felhasználók adatainak módosítása

(modosit), az új adatok felvitele, regisztráció (regisztal) és a feleslegessé vált

adatok törlése (torol). Mind a két osztály számára külső felületeket

biztosítottam a bennük található tagváltozók és tagfüggvények elérésére, így

elrejtettem a belső működéshez fontos adatokat a felhasználók elől. A

tagváltozókat a get és a set függvények segítségével lehet lekérdezni, illetve

azok értékeit beállítani.

A fenti említett osztályokat a modul osztályok implementálják. A

tervezés során ezeket az osztályokat bíztam meg a felhasználótól érkezett

kérések fogadásával. Ide érkeznek az elküldött űrlapok adatai, itt történik a

jogosultságok ellenőrzése. Azért nagyon fontosak a modul osztályok, mert a

működés tényleges logikáját ezekbe az osztályokba építettem bele, ezek az

osztályok végzik azt el. Itt ellenőrzöm, a $_SESSION[’felhasznalo_azon’]

alapján, hogy van e belépett felhasználó a rendszerbe és itt ellenőrzöm, hogy

az elküldött űrlapok minden kötelező adattal rendelkeznek-e, ami elő van írva.

A felhasználó felé a tényleges felület kialakítását és a kért adatok

kiíratását a template-ek végzik. Ezek HTML oldalak, amelyek az adatbázisban

szereplő adatok alapján épülnek fel dinamikusan a modul osztályokkal

közreműködve. Látható, hogy a működés során jól elkülöníthetőek lettek a

PHP kódok a HTML kódoktól. Ennek egyik előnyét abban látom, hogy

mindig pontosan meg tudom határozni, hogy milyen kódok végzik az

Page 38: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

37

adathívásokat, és milyen kódokban kereshetem a megjelenítésért felelős tag-

eket.

5.4. Adminisztrátori felület megvalósítása

Az adminisztrátori felület volt az, amelyiket először elkészítettem. Ez a

felület lehetővé teszi az adatbázisban található adatok manipulációját.

Az oldalra való belépéshez, mivel itt meg kellett oldanom, hogy illetéktelenek

ne lépjenek be, egy belépési form-ot készítettem. Ide egy felhasználói név és

egy jelszó megadásával lehet belépni. Az ide tartozó jogosultsági adatokat az

adminfelhasználók táblába tároltam el. A jelszó kódolva van MD5-ös

algoritmussal. Alapvetően a rendszer ezen felületét egy felhasználósra

terveztem, de ha szükséges egy egyszerű űrlappal és jogosultságkezeléssel

lefejleszthető egy modul, amivel akár az adminfelhasználó tábla adatai is

manipulálhatóak. Így nem lesz alap felhasználói név és jelszó megadva, ami a

későbbi biztonság szempontjából egyébként fontos lehet az alkalmazásban.

Külön menüpontok alatt érhetőek el a felhasználók és a termékek

adatai. Ezeket az adatbázison keresztül lekért adatokat, a jobb átláthatóság

miatt oldalszámozott formában jelenítem meg a felületen. Ehhez a MySQL

egy megoldását használtam fel a LIMIT értéket. Az SQL lekérdezésben meg

kellett adnom egy kezdeti értéket, hogy a lekérdezett adatok hányadik sorától

olvasson és pontosan mennyi sort. Ezek után egy ciklussal és a teljes

lekérdezés sorának összegével létrehoztam a linkeket mind számozott, mind

előre, hátra lapozható formában. A felhasználók menüpont alatt az adott

felhasználóhoz tartozó személyes adatokra a következő műveletek

megengedettek: az adatok módosítása, és a feleslegessé vált adatok törlése.

Ezen a felületen nem megengedett az új felhasználó regisztrációja. A

termékoldalon a regisztráció ad lehetőséget az új termékek felvitelére. Ezen

kívül a felvitt adatokat tudom módosítani és törölni. A megjelenítést egy

táblázatos formába beágyazott űrlapon keresztül érem el. A termékoldalon

ahol dátumot kell megadni, ott megkönnyítettem a felvitelt egy felugró naptár

alkalmazásával. Ezt egy ingyenesen letölthető program, a datetimepicker

Page 39: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

38

segítségével alakította ki. Ennek segítségével a felület kezelése is

látványosabbá vált.

5.5. Felhasználói felület megvalósítása

A felhasználói felület, azaz a webáruház működése jóval egyszerűbb,

mint az adminisztrációs oldal esetén. Ugyanarra az alapra épül, de jóval

kevesebb funkciót valósít meg. Így ezt a felületet gyorsabban és az előző

felület technikáit és logikáit felhasználva hatékonyabban tudtam felépíteni. A

működés alapja itt is az adatbázisból érkezett adatok táblázatos formában való

megjelenítése, felhasználva az adminisztrációs oldalon használt lapozási

formát. Az oldalon található termék kategóriák dinamikusan változnak annak

függvényében, hogy az adminisztrátori felületen milyen termékmanipulációt

hajt végre a rendszer gazdája. Ezt a dinamizmust vittem át a termékkereső

felületre is. Ez egy Ajax technikát használó dinamikus listákból álló rendszer.

Három listából áll, termék kategóriák, gyártók és típusok. A fejlesztés során

ügyeltem arra, hogy a keresés során, a kiválasztott termék kategória alatt

található gyártók jelenjenek csak meg a gyártók listában. Ezek után konkrét

gyártót is választva már csak az arra a gyártóra jellemző termékek jelennek

meg a típusok listában. Így le tudtam rövidíteni a felhasználó keresésre

fordított időt. Az oldalon lehetőség van az új felhasználók regisztrációjára. Ez

egy regisztrációs űrlap segítségével lehetséges. A vásárlás, postázás és a

számlázáshoz szükséges adatokat itt lehet rögzíteni, ezért fontos ezek pontos

megadása. Ezt nem bízom a felhasználóra, így bizonyos kritériumokat

állítottam fel a kitöltéshez. Ezeket az úgynevezett kötelező mezőket a

kliensoldalon ellenőrzöm első sorban javascript segítségével. Ezt úgy teszem

meg, hogy amikor a felhasználó a regisztrál gombra kattint először egy

javascript függvény hívódok meg, ami ellenőrzi a szükséges adatokat. Ha van

olyan adat, ami nincs kitöltve, akkor arra felhívom a felhasználó figyelmét egy

alert-et használva, illetve a hiányosan kitöltött sorok mellé css segítségével

egy piros csillagot is teszek. Amennyiben az adatok helyesek PHP oldalon is

ellenőrzöm a beérkezett adatokat. Ennek azért láttam szükség szerveroldalon

Page 40: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

39

is, mert a felhasználó bármikor kikapcsolhatja böngészőjében a javascript

futtatását, így iktatva ki az elsődleges ellenőrzési rendszert. A

termékvásárlásnál figyelnem kellett, hogy van e belépett felhasználó, ha nincs,

nem engedélyezett a vásárlás. Ezt a $_SESSION[’felhasznalo_azon’]

ellenőrzésével oldottam meg. Amennyiben van felhasználó azonosító megadva

a session-ben, akkor továbblép a felület a pénztár oldalra, ha nincs, átlép a

belépés oldalra. Abban az esetben, amennyiben volt belépett felhasználó a

rendszer a pénztár oldalra lép. Itt táblázatokba foglaltan jelenítettem meg az

adott felhasználó postázási és számlázási címét, valamit a rendelt_termékek

alapján a vásárolni kívánt termékek listáját. Ide még terveztem egy utólagos

ellenőrzést az adatok helyességét illetően. Amennyiben az adatok helyesek, el

lehet fogadni a vásárlás üzleti feltételeit és magát a vásárlást is. Ebben az

esetben a felhasználónak visszajelzést adok az oldalon a sikeres vásárlásról, és

email útján tájékoztatom a vásárlásról és a további teendőkről.

6. Üzembe helyezés

Az üzembe helyezés során az elkészült alkalmazást magába foglaló

könyvtárakat az alkalmazás számára létrehozott webtárhelyen található

mappákba másoltam. Ezek után ellenőriztem, a hivatkozások megfelelő

beállítását. Amennyiben szükséges, a megfelelő aldomaineket be kell állítani.

Mivel az általam tervezett alkalmazás két felületből áll, ezért egy aldomait is

létre kellett hoznom az adminisztrációs felület számára. Ennek a felületnek a

mappáit az aldomain számára létrehozott mappába helyeztem el. Az

állományokat és könyvtárakat FTP-n keresztül másoltam fel a szolgáltató által

megadott elérési adatok alapján. Erre a feladatra én a Total Commandert

használtam. Mivel az alkalmazás a SESSION-ökre és azok kezelésre épül,

figyelni kell a megfelelő session beállításokra az oldalon. Általában a C:\Temp

file-ba kerülnek a munkamenetek, de a PHP save_session_path()

függvényével megadható az a könyvtár, útvonal, ahová a rendszer elhelyezheti

a munkamenet-állományokat.

Page 41: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

40

Amint a file-ok a helyükre kerültek, létre kell hozni az adatbázist.

Mindig üres adatbázist kapunk, amiben fel kell építeni az adatbázis tábláinak

rendszerét, és ezekbe be kell inzertálni a kívánt adatokat. Ezt úgy tudtam a

legkönnyebben megoldani, hogy a már elkészült adatbázisomat kiexportáltam

egy sql kiterjesztésű állományba. Ez a file tartalmazza a teljes adatbázis

felépítéséhez szükséges create és insert parancsokat és az ezekhez szükséges

adatokat. Ezt azután nyugodtan le tudtam futtatni a kapott adatbázis kezelő

felületen. Az esetek többségében a phpMyAdmin-ban. Ezek után az

alkalmazáson belül található adatbázis kapcsolat paramétereit módosítani kell.

Ezt két file-al oldottam meg, amelyek a site könyvtárban találhatóak, és az

adatbázis csatlakozáshoz szükséges adatokat tartalmazza. Az egyik a

localhost-os fejlesztéshez, a másik a szerveren való kommunikációhoz, így

mind a két esetben kényelmesen tudtam fejleszteni és nem kellett a hálózat

függvényében átírnom a kapcsolódáshoz szükséges adatokat. Amint mindezt

beállítottam, a kapott URL-t begépelve a böngészőbe a létrehozott alkalmazás

megtekinthető. Ezek után egy funkcionális teszteléssel győződtem meg arról,

hogy az alkalmazás az üzembe helyezés után az elvárt módon működik-e.

7. Tesztelés

Az élesbe helyezés előtt a tesztelés során bizonyosodtam meg arról,

hogy az alkalmazás megfelelően működik-e. Mivel a fejlesztés során

folyamatosan teszteltem a létrehozott függvényeket és logikákat

tesztadatokkal és azok eredményeinek ellenőrzésével, így ebbe a fázisban

kerülve a fejlesztési projekt során a tényleges működésről már meg volt a

szükséges visszaigazolásom, a korábbi tesztelési eredmények által. A tesztelés

ebben a fázisban az élesre helyezett rendszer funkcionális tesztelését jelenti.

Ez az alkalmazás használhatóságában, a kívánt lépések megfelelő

eredménnyel történő végrehajtódásában merül ki. A funkcionális tesz során

végigfuttatom a megjelent termékek listáját, a felületen található linkek

végződéseit és azok hatásait figyelve. A teszt során olyan eseményeket

generáltam, amik az éles helyzetben szintén előfordulhatnak majd, ilyen a

Page 42: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

41

regisztráció, a vásárlás és a termékek közötti navigáció. Első körben

ellenőriztem, hogy minden termék, ami az adatbázisban be van regisztrálva

szerepel a felületen. Ezután egy próbaregisztrációt hajtottam végre, ellenőrizve

a helyes működést. Itt szándékosan hagytam ki kötelező mezőket, hogy

lássam, a rendszer erre adott figyelmeztető válaszát. Ezek után a belépést

vizsgáltam helyes, és helytelen adatokkal. Itt az utóbbi esetben szintén külön

figyelmeztetést kaptam a rendszertől a helytelen adatok miatt. Amint a

próbafelhasználó minden szükséges adataival a rendelkezésemre állt a vásárlás

következett, mint tesztelendő folyamat. Első körben a termékek kosárba

gyűjtésének és onnan való eltávolításának folyamatát követtem figyelemmel.

Ezek után a vásárlás funkciót teszteltem belépett felhasználó nélkül. A

vásárlás linkre való kattintáskor a rendszer a belépés oldalra ugrott és ott kérte

a belépéshez szükséges adatokat a vásárlás elindításához. Így látszott a helyes,

elvárt működés az éles rendszeren is. Ezt követően a tényleges belépés után a

bevásárlókosárban található termékek tényleges megvásárlásán volt a sor. A

rendszer itt is az elvárt eredményt mutatta, azaz a pénztár oldalra ugrott, ahol a

postázási adatok, a számlázási adatok és a megvásárolandó termékek együttes

feltüntetése után befejezhető a vásárlás folyamata amennyiben az adatok

helyesek.

8. Összefoglalás

A szakdolgozat témája egy webes áruház működésének megtervezése

és annak tényleges lefejlesztése volt. Ezt azért választottam, mert a mai

világban egyre inkább támaszkodunk az internetre, a számítógépes

hálózatokra, és a mindennapi tevékenységünk áthelyezésével egyre inkább

előtérbe kerül az elektronikus kereskedelem. Egy webes áruház inkább a kis és

középvállalatok, céges esetén lehet alternatíva, akik saját termékeiket akarják

ilyen formán eladásra kínálni. Illetve azon kisebb cégeknek, akik mások által

gyártott termékek árusításával akarnak foglalkozni, de nem tudnak, vagy nem

akarnak raktárakat, üzlethelységeket bérelni, azok fenntartási procedúráival

foglalkozni. Mivel egyre elterjedtebb ez a kereskedelmi forma ezért döntöttem

Page 43: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

42

úgy, hogy ezt választom dolgozatom témájául. Az alkalmazás tényleges

elkészítése előtt fontos meghatározni bizonyos célokat, felvázolni a leendő

alkalmazás főbb működési elvárásait, az alkalmazás üzemeltetésére szánt

technológiákat és azok működését. Így biztosan olyan terméket fogunk

készíteni, ami megállja a helyét és megfelel a kívánt követelményeknek. Így a

feladat specifikálása során felvázoltam a fontosabb pontokat, amivel

foglakoznom kell a projekt megvalósítása során, mint az adatbázis tervezés, a

felülettervezés, a használt technológia kiválasztása és a tényleges fejlesztés.

Amint ezeket elkészítettem és a kódokból összeállt a működő alkalmazás azt

üzembe kellett állítani. Amint az adott tárhely szolgáltató által biztosított

területre felkerült az alkalmazás azt az élesbe állítás előtt is tesztelésnek kellett

alávetni. Ez egy funkcionális teszt volt, amelynek során a lehetséges összes

folyamatot végigjártam, ami egy webes áruház élete során bekövetkezhet.

Amennyiben olyan eredményt kaptam, ami eltért az elvárttól akkor azt a

kódban javítottam és ismét ellenőriztem. A végeredmény egy jól működő, az

alapvető követelményeknek megfelelő webes áruház lett, amely felveszi a

versenyt a jelenleg a weben található hasonló feladatot ellátó alkalmazásokkal.

A teljes fejlesztés során rengeteg tapasztalatot szereztem a tervezés és a

fejlesztés terén is. Megtanultam jól meghatározni a fejlesztés során elérendő

célokat, jól megtervezni a részfeladatokat és így hatékony fejlesztői munkát

végezni.

Page 44: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

43

9. Felhasznált irodalom

1. Gál Tibor

Webprogramozás

Műegyetem Kiadó Budapest, 2004

2. Robert W. Sebesta

A Word Wide Web programozása

Panem Kiadó, Budapest, 2005

3. Peter Moulding

PHP Fekete Könyv

Perfact-Pro Kft. Budapest, 2002

4. Julie C. Meloni

A PHP, a MySQL és az Apache használata

Panem Kiadó, Budapest 2004

5. Virginia DeBolt

HTML és CSS Webszerkesztés stílusosan

Kispaku Kft, Budapest, 2005

6. Matt Zandstra

Tanuljuk meg a PHP5 használatát 24 óra alatt.

Kiskapu Kft, Budapest, 2005

7. JQuery http://jquery.com/

Dokumentáció

8. Wikipédia, Szabad felhasználású enciklopédia

Page 45: Elektronikus kereskedelmi portál fejlesztése szakdolgozat

44

9. Bookline éves beszámoló

http://bookline.hu/istore/tempimgs/2006_eves_jelentes.pdf

10. Szonda Ipsos - Vásárlás és tájékozódás az interneten

http://www.szondaipsos.hu/hu/ipsos/iarvasarlas

11. GKI Gazdaságkutató Zrt.

www.gki.hu

10. Az elektronikus kereskedelmi portál elérhetősége