Aplicatie Web Pentru Gestiunea Unei Agentii de Turism
PROIECT DE DIPLOMĂ
APLICAȚIE WEB PENTRU GESTIUNEA UNEI AGENȚII DE TURISM
Cuprins
Introducere
I.Comerțul online în domeniul agentiilor de turism
I.1.Avantajele turismului online
II.Tehnologii utilizate
II.1. HTML
II.2. CSS
II.3. jQuery
II.4. PHP
II.5 MySQL
II.6 WAMP
II.7 iPixSoft Flash Galery Factory
III.Proiectarea și implementarea aplicației web
III.1. Analiza și prezentarea website-ului
III.1.1. Structura website-ului
III.1.1.1. Structura paginilor accesibile vizitatorilor
III.1.1.2. Structura paginilor accesibile utilizatorilor autentificați
III.1.1.3. Administarea aplicației web
III.1.2. Baza de date
III.2 Prezentarea aplicației web
III.2.1. Modulul pentru vizitatori
III.2.2. Modulul pentru clienți
Concluzii
Bibliografie
Introducere
Această lucrare prezintă o aplicație web pentru gestiunea unei agenții de turism bazată pe tehnologiile HTML, CSS, PHP, jQuery și Wamp.
Datorită faptului că multe dintre aplicațiile web pentru gestiunea agențiilor de turism din momentul de față sunt generale, adică în cadrul unei aplicații se găsesc vacanțe în toată lumea, am decis să realizez o aplicație web mai deosebită prin faptul că subiectul acesteia este doar o țară și anume Grecia. Cu toate acestea aplicația ar putea fi dezvoltată pe viitor și pentru alte regiuni ale lumii. Aplicația îmbină mai multe funcționalități pe care le vom discuta în amănunt in cadrul capitolelor următoare.
Aceasta este o aplicație deosebit de utilă prin faptul că un vizitator care dorește să își organizeze o excursie și alege ca destinație Grecia, găsește pe site informațiile necesare pentru a lua o decizie. Printre detaliile care se pot regăsii în cadrul aplicației se numără: descrierea Greciei, descrierea stațiunilor și obiectivelor turistice din Grecia, imagini sugestive, galerie foto pentru stațiuni, creerea unui circuit format din mai multe stațiuni și obiective turistice pentru care agenția de turism va trimite o ofertă concretă pe adresa de email complectată la înregistrare, prezentarea celor mai bune oferte pe care agenția de turism le deține precum și formarea unei cereri de ofertă pentru un bilet de avion.
Avantajul major al aplicației este faptul că poate fi utilizată cu ușurință de către orice utilizator indiferent de nivelul cunoștințelor.
Am realizat această aplicație pentu a pune în aplicare cunoștințele dobândite în cadrul celor patru ani de studiu dar și pentru a mă familiariza mai bine cu toate aceste tehnologii.
Alegerea în cea ce privește tehnologiile utilizate a fost făcută din dorința de a folosii cât mai multe din ultimele tehnologii ale domeniului dar și pentru a învăța cât mai multe despre acestea. Toate aceste tehnologii vor fi discutate în amănunte în cadrul capitolului doi. De asemenea majoritatea programelor utilizate pentru implementarea aplicației web sunt gratuite. Astfel costurile de realizare a acestei aplicații nu vor fi foarte mari.
Aplicația web a fost proiectată sau implementată astfel încât să faciliteze procesul de mentenanță a acesteia dar și pentru a fi posibilă o extindere ulterioară în cea ce privește funcționalitatea sau aspectul.
În continuare voi prezenta câteva aspecte care stau la baza temei alese de către mine, și prin care vom înțelege mai bine utilitatea aplicației.
I.Comerțul online în domeniul agentiilor de turism
Agențiile de turism reprezintă un element important în comerțul online, deoarece din ce în ce mai mute persoane preferă să își rezerve vacanțele utilizând cumpărăturile online și să le plătească tot prin intermediul Internetului, sau măcar să se informeze cu ajutorul Internetului.
Pentru o administrare cât mai eficientă, agentiile de turism utilizează aplicații online sau offline pentru stocarea datelor despre clienți, statiuni, oferte, contracte, bilete de avion și multe altele, toate aceste date fiind stocate în baza de date a programului respectiv.
De pe urma comerțului online în cadrul agențiilor de turism au de câștigat atât managerii agențiilor de turism care se bucură de avantajele oferite de o bună prezentare făcută online pentru tot ce este legat de o vacanță, cât și clienții agențiilor de turism ce au de asemenea avantaje prin faptul că se pot informa de acasă asupra tuturor aspectelor înainte de a alege o vacanță, câștigând prin aceasta siguranță și totodată timp.
Este clar faptul că agențiile de turism online oferă o posibilitate rapidă și comodă pentru rezervarea vacanței.
Turismul online s-a dezvoltat foarte mult datorită accesului rapid la informații legate de destinații, atracții, obiective și unul din cele mai importante aspecte este impresiile și părerile turiștilor care au vizitat aceași zonă.
Turismul electronic implică pentru clienți sau consumatori finali mai multe aspecte, cum ar fi informare, rezervare (bilet de avion, cazare și excursi opționale) si plata electronică. Informarea cuprinde prezentări foto, video, text (descrieri) și păreri. Prin rezervare se încheie un contract la distanta în particular.
I.1.Avantajele turismului online
Turismul online a avut și are avantaje și beneficii pentru firme, consumatori individuali și societate.
Avantajele firmelor care utilizează turismul online sunt:
Extinderea firmei pe piețele naționale sau chiar internaționale.
Contribuie la înbunătățirea relațiilor cu clienții.
Crearea unui site web atractiv contribuie la scăderea costului de creare, procesare, distribuire, păstrare și regăsire a informației.
Creează posibilitatea modelării produselor și serviciilor după nevoile cumpărătorilor și simplificarea procedurilor;
Costuri de comunicație mai mici.
Creșterea competitivității.
Pentru consumatori, avantajele turismului online sunt:
Posibilitatea consumatorilor să acceseze informații la orice oră din zi, în tot timpul anului, din aproape orice locație;
Acordă consumatorilor mai multe posibilități de alegere a produselor și prețurilor;
Consumatorilor li se dă siguranță asupra valorii. Vânzătorii pot realiza acest lucru oferind un produs sau o linie de produse care atrage potențialii clienți prin prețuri competitive, la fel ca și în comerțul ne-electronic;
Permite o livrare rapidă a produselor și/sau serviciilor (în anumite cazuri);
Consumatorii pot să primească informații relevante în decursul câtorva secunde, și nu zile sau săptămâni;
Asigurarea motivației consumatorilor de a cumpăra și, la nevoie, de a și returna.
Face posibilă participarea în licitații virtuale;
Permite consumatorilor să interacționeze cu alți cumpărători în comunități electronice și să compare experiențele;
Facilitează competiția, ceea ce rezultă în scăderea prețurilor.[1]
Tehnologii utilizate
II.1. HTML
Hyper Text Markup Language prescurtat html este un limbaj de marcare pentru creerea paginilor web ce se pot afișa în browser. O pagină hypertext conține pe lângă textul propriu-zis și legături (hiperlegături) către alte pagini unde se găsesc texte.[2]
Browser-ul de Internet poate citi doar fișiere html, afișarea elementelor unui text se poate face doar cu ajutorul comenzilor. Paginile de Internet se pot modifica sau edita cu orice program de editare de texte, chiar și cu Notepad din sistemul de operare Windows.
Fișierul principal al unei pagini web este numit index.html, iar acesta conține instrucțiuni care se numesc tag-uri, și se scriu între semnele < și >.
Un fișier HTML mai poate contine listele neordonate, acestea se realizează cu ajutorul etichetei <ul>, iar pentru adăugarea de itemi noi, etichetele <li>. Paragrafele se implementează utilizând eticheta <p>, iar trecerea la rând nou prin tag-ul <br>.
În realizarea aplicației web am folosit foarte multe elemente html, cum ar fi elemente pentru editarea și structurarea formei, mărimii și culorilor de text, dar și de prezentare și tranziții.
Tabelele și formularele se pot raliza cu ajutorul etichetelor <table>, respectiv <form>, introducerea în tabele de rânduri noi se ralizează folosind eticheta <tr> (table row), iar celulele noi cu eticheta <td>. Aceste elemente au fost folosite în cadrul aplicației web, pentru afișarea din baza de date a circuitelor precum și a listei cu biletele de avion.
Aplicația web nu conține fișiere html însă acesta se regăsesc în cadrul proiectului în fișierele PHP.
II.2. CSS (Cascading Style Sheets)
Cascade Style Sheets prescurtat CSS este un standard folosit pentru formatarea elementelor unui fișier HTML, XHTML, sau XML.[3]
Avantajele folosirii acestui standard sunt: formatarea într-un singur loc pentru tot documentul, editarea rapidă a etichetelor, micșorare codului paginii datorită introducerii într-un singur loc a etichetelor, încarcarea mai rapidă a paginilor.
Sintaxa CSS este structurata pe 3 nivele:
nivelul 1 conține proprietățile etichetelor din documentul HTML, tip inline
nivelul 2 conține informația introdusă în blocul HEAD, tip embedded
nivelul 3 conține comenzile aflate în pagini separate, tip externe.[4]
Folosirea unui fișier extern (sau nivel 3, extenisa acestora fiind .css) care să conțină comenzi CSS este avantajoasă, deoarece se poate utiliza la mai multe fișiere html, astfel câștigăm timp prețios deoarece nu mai este necesară introducerea codului corespunzător în fiecare pagină, fiind posibilă editarea lor într-un singur loc pentru mai multe fișiere.
O regulă sau un set de reguli este format din unul sau mai mulți selectori (selectors) și un bloc de declarație (declaration block). Blocul de declarație conține lista de declarații în ramuri. Declarația este formată dintr-o proprietate, semnul de punctuație (:) și o valoare. Când realizăm declarații multiple într-un singur bloc de declarație vom utiliza semnul de punctuație (;), cu ajutorul lui putem separa fiecare declarație în parte.
Selectorii universali sunt reprezentați printr-un asterix (*), ei se pot atribui oricărui element ce face parte dintr-un document html. CSS mai pot atribui valori cu ajutorul claselor sau identificatorilor elementelor html.
Proprietățile border, sunt utilizate pentru implementarea diverselor stiluri de linii și culoare în cazul tabelelor, precum și etichetelor <div>.
Pentru aspectul și aranjarea ordonată a paginii se folosesc următoarele elemente CSS: width (determină lungimea elementelor html), height (determină lățimea elementelor html), auto (este folosit pentru poziționarea automată a anumitor elemente html prin intermediul browserului), margin-top, margin-left, margin-right, acestea sunt însoțite de dimensiunile în pixeli, pentru amplasarea corectă a unor elemente în pagină.
În continuare am să prezint câteva secvențe de cod în care am utilizat CSS în implementarea proiectului.
Mai jos se poate observa folosirea CSS pentru a defini stilul textului pentru obiectivele turistice. După cum se poate observa s-a folosit distanța față de marginea de sus la 30 de px, textul este aliniat justify respectiv înălțimea liniei este de 18px. Toate aceste caracteristici vor fi valabile pentru tot textul din cadrul obiectivului, de aici și marele avantaj al utilizării CSS.
.obiective .text {
margin-top: 30px;
text-align: justify;
line-height: 18px;
}
O altă secvență de cod CSS folosit este și următoarea, folosită la meniul utilizatorului:
#account-menu li {
display: inline-block;
margin: 5px 0;
text-align: center;
padding: 10px;
cursor: pointer;
}
Astfel proiectul conține mai multe fișiere CSS, care aduc un aport important în câștigul substanțial de timp, dar și contribuie la frumusețea și ordonarea secvențelor de cod nefiind nevoie să repetăm aceleași instrucțiuni în diferite locuri.
II.3. jQuery
jQuery este o bibliotecă JavaScript folosită pentru manipularea elementelor CSS, efecte și animații, cereri tip Ajax, înregistrarea și modificare evenimentelor din browser pentru a facilita o dezvoltare web mai rapidă. jQuery a fost proiectat pentru a schimba modul de scriere în JavaScript.
jQuery este un software open source. Cel mai interesant aspect al lui jQuery il reprezintă plugin-urile sau extensiile. Prin arhitec}
Astfel proiectul conține mai multe fișiere CSS, care aduc un aport important în câștigul substanțial de timp, dar și contribuie la frumusețea și ordonarea secvențelor de cod nefiind nevoie să repetăm aceleași instrucțiuni în diferite locuri.
II.3. jQuery
jQuery este o bibliotecă JavaScript folosită pentru manipularea elementelor CSS, efecte și animații, cereri tip Ajax, înregistrarea și modificare evenimentelor din browser pentru a facilita o dezvoltare web mai rapidă. jQuery a fost proiectat pentru a schimba modul de scriere în JavaScript.
jQuery este un software open source. Cel mai interesant aspect al lui jQuery il reprezintă plugin-urile sau extensiile. Prin arhitectura sa se permite dezvoltarea de subaplicații bazate în biblioteca principală care extind funcțiile de bază jQuery cu funcții specifice plugin-ului. Astfel, biblioteca principală ocupă spațiu redus, și extensiile necesare în anumite pagini web sunt încarcate la cerere.[5]
Setul de extensii principal este numit jQuery UI (jQuery User Interface), și este utilizat și în cadrul aplicației web dezvoltate. Pentru interactivitate de bază jQuery UI ofera un set de extensii, efecte mai complexe comparativ cu cele din biblioteca de bază precum și teme de culori. Avantajul jQuery UI față de alte extensii îl reprezintă dezvoltarea și testarea acestor componente care se realizează în paralel cu dezvoltarea bibliotecii principale, astfel se minimizează riscul de incomptibilitate.
Selectorii, modul de manipulare al elementelor și evenimentelor, construirea unui plugin dar și multe altele sunt aspecte care au determinat folosirea limbajului jQuery.
În continuare se prezintă o secvență de cod utilizată pentru salvarea circuitelor realizate de către utilizatorii în vederea obținerii unei oferte pentru acel circuit.
$(".save-circuit").click(function() {
var
locatii = $("#select-locations").val(),
locPlecare = $("#localitate-plecare").val(),
companie = $("#companie-aeriana").val(),
tipZbor = $("#tip-zbor").val(),
pret = parseInt($('.total-price').find('span').html());
$.ajax({
url: "includes/functions/save-circuit.php",
type: "POST",
data: {
locatii : locatii,
locPlecare : locPlecare,
companie : companie,
tipZbor : tipZbor,
pret : pret
},
dataType: 'html',
success: function(data) {
var data = $.parseJSON(data);
if (data.result == 'ok') {
location.reload();
}
}
Cu ajutorul lui jQuery am implementat de asemenea și multiselectul din cadrul circuitelor, unde vom avea o coloană cu stațiunile și obiectivele turistice din care putem selecta ce anume dorim sa vizitam, acestea adaugăndu-se automat in coloana alăturată.
Fig. II.3.1. Implementarea unui multiselect
Selectând o locație din coloana din dreapta, aceasta va fi eliminată din cadrul circuitului dorit de către client. O parte din codul utilizat la implementarea acestei funcționalități este prezentat în cele ce urmează:
'deselect' : function(value){
if (typeof value === 'string'){ value = [value]; }
var that = this,
ms = this.$element,
msIds = $.map(value, function(val){ return(that.sanitize(val)); }),
selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'),
selections = this.$selectionUl.find('#' + msIds.join('-selection, #')+'-selection').filter('.ms-selected').filter(':not(.'+that.options.disabledClass+')'),
options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); });
if (selections.length > 0){
selectables.removeClass('ms-selected').show();
selections.removeClass('ms-selected').hide();
options.prop('selected', false);
Astfel pot spune că folosind jQuery se pot realiza multe funcționalităti, în mare regăsindu-se și în aplicație realizată de mine. Dintre lucrurile care pot fi realízate cu ajutorul lui jQuery amintim: accesarea unei părți din pagină, modificarea aspectului unei pagini, modificarea conținutului unei pagini, adăugarea pe pagină a animatiei, primirea informațiilor de la server fără încărcarea paginii. De asemenea jQuery prezintă și acea proprietate numită chainability, adică posibilitatea de legare în lanț a unor acțiuni astfel se pot scrie o serie de acțiuni într-o singură linie.
II.4. PHP (Hypertext PreProcessor)
Paginile PHP pot fi verificate doar dacă sunt găzduite pe un server web care are instalat PHP, spre deosebire de paginile html ce pot fi verificate local.
Când accesăm o pagină html, serverul care o găzduiește trimite pagina html către browser pentru afișare. În schimb pentru pagini PHP, codul PHP este citit și interpretat de către server, care apoi generează dinamic pagina html și o trimite browserului pentru afișare.
Fisierele PHP pot fi create și editate cu ajutorul editorului de text Notepad sau Notepad++, dar pentru depanarea scripturilor este mai avantajoasă folosirea unui editor specializat deoarece acesta va indica numărul liniilor. Aceste fișiere au extensia php.
În interiorul codului html se poate introduce cod PHP deoarece PHP-ul parcurge un fișier astfel: "citește" textul până la întâlnirea unei etichete speciale care-i spun să înceapă să interpreteze textul ca pe cod PHP și se execută codul până când se întâlnește eticheta de închidere, după care se "citește" textul în continuare.
Din setul de caracteristici al codului PHP mai amintim următoarele: în cazul funcțiilor, nu se face diferența între utilizarea literelor mari sau mici, pentru variabile se face diferența la utilizarea literelor mari sau mici, închiderea unui rând se face obligatoriu cu caracterul .
Pentru afisarea informatiilor delimitate de ghilimele se folosește funcția echo. Rândul se încheie cu ;. Functiei print este similară funcției echo.
Dacă scriptul nu este scris corect PHP-ul va afisa eroarea care indică și locul unde aceasta se află. Pentru a putea vizualiza erorile serverul PHP trebuie setat (in php.ini este setat display_errors=On si error_reporting=E_ALL).
Variabilele în PHP reprezintă un container de date care au un nume și li se poat atribui valoari care poat fi modificate de mai multe ori sau salvate într-o bază de date. În PHP numele variabilelor începe cu simbolul $, urmat de orice litera mică, mare, sau caracterul, dar niciodată nu este urmat de o cifră sau de spații goale.
În cadrul proiectului, am utilizat instrucțiunea if în diverse locuri, spre exemplu mai jos am atașat un cod în care sunt folosite înstrucțiunile if în faza de logare. Aici se observă că în cazut necomplectării unuia din câmpuri se va afișa o eroare.
private function dologinWithPostData()
{
// check login form contents
if (empty($_POST['user_name'])) {
$this->errors[] = "Nume utilizator necomplectat.";
} elseif (empty($_POST['user_password'])) {
$this->errors[] = "Parolă necomplectată.";
} elseif (!empty($_POST['user_name']) && !empty($_POST['user_password']))
Pentru includerea fișierelor externe în paginile php se pot folosi functiile include și require. Diferența dintre cele două se face in caz de eroare, în timp ce pentru funcția include în caz de eroare scriptul generează o avertizare dar funcționează în continuare, în cazul funcției require se termină executarea scriptului.
O funcție este o secvență de cod ce poate fi folosită în repetate rânduri în interiorul marilor scripturi și este prezentată în script prin declararea ei. Funcția apelată trebuie să conțină același număr de argumente ca în declarație.
Un aport substanțial adus cu ajutorul lui PHP este folosirea controlerelor, cu ajutorul lor conținutul este încărcat în funcție de ce parametru avem în url. Numele controler este sugestiv deoarece el controlează cea ce se încarcă în pagină la un moment dat. Astfel în funcție de parametrul primit, pagina este încărcată dinamic. O parte din codul php necesare pentru realizarea acestei funcții este prezentat în cele ce urmează:
<div id="central">
<?php switch($url):
case 'circuite':
include 'content/circuite.php'; ?>
<?php break;
case 'oferte': ?>
Oferte
<?php break;
case 'bilete-avion': ?>
Bilete avion
<?php break;
case 'statiuni':
require 'content/statiuni.php'; ?>
<?php break;
case 'galerie': ?>
Galerie foto
<?php break;
II.5 MySQL
MySQL este un sistem de gestiune a bazelor de date relațional, fiind produs de compania suedeza MySQL AB, este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).
MySQL este folosit de cele mai multe ori împreună cu limbajul de programare PHP, dar cu MySQL se pot construi aplicații în orice limbaj major. Scheme API numeroase disponibile pentru MySQL permit scrierea aplicațiilor în foare multe limbaje de programare pentru accesarea bazelor de date MySQL, de exemplu: C, C++, C#, Java, Perl, PHP, Python, fiecare dintre aceste limbaje folosesește un tip spefic API. [6]
MySQL face parte din platforma LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). MySQL a devenit foarte popular mai ales datorită utilizării împreună cu PHP pentru obținerea unor aplicații dinamice. Când vine vorba de aplicațiile de gestiune a bazelor de date MySQL este foarte ușor de învățat cât si de utilizat, în acest sens un exemplu concludent poate fi comanda de ieșire: „exit” sau „quit” care este simplă și sugestivă.
Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă dar se poate opta pentru o variantă mai simplă, aceasta fiind phpMyAdmin, un instrument de management al bazelor de date, gratuit și scris în PHP.
Platformele pe care rulează MySQL sunt: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.
Pentru conectarea la mediul mySQL și bazele de date, se introduce adresa localhost/phpmyadmin în browser. Principalele operații cu baze de date sunt: CREATE (creează o bază de date sau un tabel), DROP (șterge o bază de date sau un tabel), INSERT (adaugă înregistrări în tabel), DELETE (șterge înregistrări din tabel), UPDATE (updatează înregistrările dintr-un tabel), SELECT (selectează un tabel) și ALTER (alterarea unui tabel).
Pentru crearea unei baze de date, este nevoie de MySQL, PHP (instalat pe server) și un server, în acest caz, cel mai utilizat fiind Apache (pentru care e nevoie de software-ul gratuit XAMPP). În cadrul aplicației web, baza de date este apelată utilizând secvența de cod mysql_select_db("giulio", $con);
II.6 WAMP
Software-ul gratuit WAMP Server are toate uneltele pentru setarea unui web server și mentenanța acestuia.
Acest este un mediu de dezvoltare web Windows care contribuie la creerea cu ușurință a aplicațiilor web.
WAMP conține unelte precum: Apache 2, bază de date MySQL, PHP respectiv PHPmyadmin cu ajutorul căruia gestionăm cu ușurință bazele de date. Astfel este dat si numele utilitarului, în primul rând W de la Windows, acesta fiind sistemul de operare cu care este compatibil, apoi A de la Apache, M de la MySQL respective P de la PHP.[7]
Cum acest WAMP este compatibil doar cu sistemul de operare Windows, există și alte utilitare similare dar compatibile cu alte sisteme de operare, acestea fiind LAMP care este compatibil cu Linux respective XAMP care este compatibil cu majoritatea sistemelor de operare, astfel și prima literă X provine de la numărul mare de sisteme de operare cu care este compatibil software-ul.
WAMP este capabil să realizeze servicii de gestiune Apache si MySQL, să comulte online sau offline aici făcându-se referire la acces pe care il va avea toată lumea sau doar localhost. Utilitarul mai gestionează setările de server.
II.7 iPixSoft Flash Galery Factory
iPixSoft Flash Gallery Factory este un software folosit pentru realizarea galeriilor Flash profesionale. Aceste galerii pot conține fotografii, muzică, efecte de tranziție, funcții bogate personalizate și template-uri pentru galeria Flash.[8]
Când vine vorba de a crea o galerie foto de la zero, iPixSoft Flash Galerie Factory ne oferă posibilitatea de a încărca imagini și clipuri video, de a introduce butoane, și de a alege culoarea de fundal. Mai mult, se pot edita imaginile prin modificarea luminozității și a nivelului de contrast, decupa fotografiilor, și zoom in sau out. În plus, permite decuparea și tăierea clipurilor video, și dezactivarea fluxurilor audio. Alte caracteristici notabile sunt reprezentate de posibilitatea de a încorpora mesaje text, alegerea dintr-o gamă largă de efecte de tranziție și adăugarea melodiilor de fundal (MP3, WAV, WMA). Se poate de asemenea personaliza textul în termeni de font, dimensiune, culoare, aliniere, unghi de rotație, și efecte.
Ultimele dar nu cele din urmă calități ale aplicației sunt previzualizarea galeriei, exportarea proiectului în format SWF, HTML, sau EXE, precum și creerea de screensavere sau de a fișiere video (de exemplu, MP4, FLV, MOV, MPG, MKV, AVI).[9]
Pentru realizarea galeriei nu sunt necesare cunoștințe de HTML sau Flash, cunoștințele fiinde necesarea însă atunci când trebuie realizată integrarea galeriei foto în cadrul aplicației web.
În cadrul proiectului am utilizat această aplicație pentru a realiza galeria foto care prezintă stațiunile. Astfel galeria foto a fost introdusă în pagină ca element flash lucru implementat în felul următor pentru fiecare stațiune în parte.
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9.0.0.0"
id="my_foto"
width="1200"
height="800">
<param name="movie" value="nume_fisier.swf">
<param name="bgcolor" value="#FFFFFF">
<embed name="AM" src="nume_fisier.swf"
quality="high" bgcolor="#FFFFFF" swLiveConnect="true"
width="1200"
height="800"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object>
III. Proiectarea și implementarea aplicației web
III.1. Analiza și prezentarea website-ului
III.1.1. Structura website-ului
Aplicația web realizată de către mine este destinată prezentării celor mai importante stațiuni din Grecia, fiind menit utilizării de către clienți, oaspeți sau turiști pentru informare în vederea rezervării vacanțelor pe teritoriul Greciei sau rezervarea biletelor de avion.
Din punct de vedere funcțional, website-ul poate fi utilizat de către:
vizitatori ai website-ului
clienți
În cadrul aplicației web oricare vizitator al siteului poate accesa paginile:
Despre
Stațiuni
Galerie Foto
Contact
Obiective Turistice
Logare
Înregistrare
Fig. III.1.1.1. Structura paginilor website-ului
Doar clienții înregistrați și autentificați pe site pot avea acces la paginile:
Circuite
Adaugă circuit
Oferte
Bilete de avion
Adaugă bilet
Listă bilete
III.1.1.1. Structura paginilor accesibile vizitatorilor
După cum se poate observa în figura III.1.1.1.1 și în cele ce uremează, un utilizator care accesează pagina web are acces în următoarele secțiuni:
Despre
Stațiuni
Galerie Foto
Contact
Obiective
Autentificare
Înregistrare utilizator
Fig. III.1.1.1.1. Structura paginilor accesibile vizitatorilor website-ului
III.1.1.2. Structura paginilor accesibile utilizatorilor autentificați
Odată autentificat, față de posibilitățile anterioare apar și posibilitățile de realizare a unor circuite turistice cu obținerea unui preț aproximativ, ofertelor și a biletelor de avion unde se poate adăuga un bilet în vederea rezervării sau se poate vizualiza lista de bilete pentru utilizatorul respectiv.
Fig. III.1.1.2.1. Structura paginilor accesibile clienților website-ului
Astfel față de simpli vizitatori, utilizatorii vor putea accesa după autentificare, pe lângă paginile accesibile vizitatorilor, meniul din car vor putea alege una din opțiunile: circuit, ofertă sau bilet de avion. Structura paginilor accesibile clienților este ilustrată în figura III.1.1.2.1.
III.1.1.3. Administarea aplicației web
Chiar dacă administrarea este un aspect important pentru o aplicație web, nu a fost implementată momentan adăugarea sau modificarea informațiilor direct în interfața grafică a aplicației realizate de mine. Cu toate că această aplicație este concepută în principal pentru prezentare și informare, partea de administrare ar fi benefică deoarece o aplicație web actualizată poate convinge vizitatorii și să le confere încredere.
Un alt motiv care încurajează administrarea este acela că internetul este un mediu în permanentă schimbare. Astfel pentru a menține vizitatorii interesați este nevoie de actualizarea textului, fotografiilor, evenimentelor și a ofertelor. Acest lucru se poate realiza și în aplicația mea însă doar prin modificarea sau adăugarea în baza de date și în codul sursă.
III.1.2. Baza de date
Website-ul utilizează o bază de date creată cu ajutorul phpMyAdmin 4.0.4 conține șapte tabele și poartă numele giulio, aceasta fiind ilustrată în figura III.1.2.1.
Fig. III.1.2.1. – Baza de date a aplicației web
Structura tabelelor și legăturile dintre acestea se pot urmării în figura următoare unde acestea se reprezintă cu ajutorul secțiunii Designer din phpMyAdmin. Astfel în figura III.1.2.2 pot fi observate cele șapte tabele ale bazei de date precum și câmpurile acestora.
Fig. III.1.2.2. – Structura tabelelor și legăturile dintre acestea
Tabela user conține datele persoanelor care și-au creat un cont pe website. Aceasta conținând codul unic al utilizatorului util în atribuirea unui circuit sau bilet de avion unui utilizator, numele utilizatorului, parola codificată a utilizatorului și adresa de email a utilizatorului pe care acesta va fi contactat de către personalul agenției de turism. Aceasta poate fi vizualizată în figura III.1.2.3.
Fig. III.1.2.3. – Tabela utilizator a bazei de date
Tabela bilet zbor conține, după cum se poate observa și mai jos câmpul cod unic al biletului de zbor, prețul zborului, clasa de zbor, numele clientului care a solicitat zborul, codul unic al zborului care coține plecarea și destinația.
Tabela mai conține de asemenea câmpurile nume, prenume, telefon și email pentru persoanele care doresc doar bilet de avion aici fiind nevoie de complectarea unui formular care conțin și aceste date.
Diferența între persoanele care rezervă doar un bilet de avion și persoanele care au un bilet de avion în cadrul circuitului ales se face pe baza câmpului doar_bilet unde persoanele care au ales doar un bilet de avion vor avea valoarea unu iar cei care au un bilet de avion în circuitul ales vor avea valoarea zero.
Secvența de cod php prin care este inserat un bilet de zbor din interfața aplicației web în baza de date este următoarea:
$insert_bilet = mysql_query("INSERT INTO bilet_zbor VALUES ('', '$pret', '$tip_zbor', '$user_name', '$id_zbor')");
În continuare în figura III.2.1.4 est ilustrată tabela bilet_zbor a bazei de date.
Fig. III.1.2.4. – Tabela bilet zbor a bazei de date
Tabela circuit ilustrată în figura III.2.1.5. conține, câmpul cod unic al circuitului, prețul circuitului, codul unic al biletului de zbor, respectiv clientul care a solicitat ofertă pentru circuit.
Secvența de cod php prin care se realizeză inserarea unui circuit, creeat de către un utilizator, în baza de date este următoarea :
$insert_circuit = mysql_query("INSERT INTO circuit VALUES ('', '$pret', '$id_bilet', '$user_name')");
Fig. III.1.2.5. – Tabela circuit a bazei de date
Tabela circuit_locație este foarte importantă, numele ei este și sugestiv pentru cea ce realizează aceasta. Cu ajutorul acestei tabele se poate face legătura între locație și circuit, deoarece un circuit poate avea una sau mai multe locații.
Astfel după cum se poate observa în figura urnătoare, de exemplu circuitul cu codul unic nouăsprezece conține locațiile cu identificatorul unic unu, doi, respectiv trei. Aceste aspecte sunt vizibile și în figura III.1.2.6.
Fig. III.1.2.6. – Tabela circuit_locație a bazei de date
Pentru inserarea în tabela bazei de date cu numele circuit_locație este folosit următorul cod php, aici utilizându-se foreach pentru a insera locațiile :
foreach ($locatii as $locatie) {
mysql_query("INSERT INTO circuit_locatie VALUES ('$id_circuit', '$locatie')");
}
Tabela locație conține, campul cod unic al locației, numele locației, tipul locației care poate fi stațiune sau oraș, prețul, respectiv țara care poate fi Romania sau Grecia.
S-a folosit câmpul țară pentru face distincția între orașele din Romania și cele din Grecia, aceasta fiind folositoare la zboruri, aici avem locație plecare respectiv locație sosire și ele vor fi afișate în funcție de id.
Toate acestea fiind necesare atunci când utilizatorul generează o cerere pentru un circuit iar o parte din ele sunt folosite si pentru cererea unui bilet de avion.
Ilustrarea tabelei locație este făcută în figura III.1.2.7 care este prezentată în continuare.
Fig. III.1.2.7. – Tabela locație a bazei de date
Tabela zbor a bazei de date conține identificatorul unic al zborului, data la care are loc zborul, firma cu care se ralizează zborul, locația de plecare, pentru aceasta vom lua din tabela locație orașele cu parametrul ro, respectiv locația de sosire pentru care se va lua din tabela locație doar orașele cu parametrul gr. Tabela este ilustrată în figura III.1.2.8.
Inserarea unui zbor aferent unui circuit rezervat în cadrul aplicației web în baza de date se face prin următoarea secvență de cod php:
$insert_zbor = mysql_query("INSERT INTO zbor VALUES ('', 0, '$companie', '$loc_plecare', '$loc_sosire')");
Fig. III.1.2.8. – Tabela zbor a bazei de date
Tabela firmă_zbor este prezentată în figura III.1.2.9 și conține identificatorul unica al firmei de zbor, numele firmei de zbor, pagina web a firmei de zbor și un preț aproximativ perceput de fiecare firmă, în funcție de diferențele de preț dintre firme pe piața transportului aerian.
Fig. III.1.2.9. – Tabela firma_zbor a bazei de date
III.2 Prezentarea aplicației web
Această aplicație a fost concepută în principal pentru informare, pentru a prezenta vizitatorilor cele mai frumoase atracții turistice din Grecia dar și pentru permite efectuarea unor operații. Prima operație poate fi solicitarea unei oferte pentru un circuit creat în cadrul aplicației, pentru aceasta fiind necesară atât autentificarea vizitatorului cât și creerea circuitului în câțiva pași simpli, iar pe baza acestora agenția de turism îi va răspunde utilizatorului prin emailul complectat la creera contului cu cele mai bune oferte care le deține pentru cea ce el dorește.
O altă operație poate fi complectarea unui formular de către un utilizator în vederea rezervării unui bilete de avion, astfel el complectează datele necesare, primește un preț aproximativ, iar agenția îi va putea trimite biletul final cu oferta de preț pe adresa de email sau printr-un mesaj la numărul de telefon complectat în formular.
Astfel unui client interesat de o anume ofertă, de creerea unui circuit, de unui bilet de avion sau pur și simplu de informare cu privire la unele stațiuni și locații turistice din Grecia îi va fi de folos utilizarea acesei aplicații.
III.2.1. Modulul pentru vizitatori
Aplicația web permite vizitatorilor navigarea cu ușurință între pagini, astfel și un utilizator cu cunoștințe minime în domeniul calculoatoarelor să se poată descurca și să găsească ceea ce caută odată ce a accesat website-ul.
Fig. III.2.1.1. – Prima pagină a aplicației web
Ca background am ales utilizarea culorii alb combinat cu albastru, deoarece aceste culori reprezintă culorile specifice Greciei, care face subiectul acestei pagini web, dar totodată aceste culori ne duc cu găndul la vacanța de vară și la marea cea albastră. Nu în ultimul rând aceste culori ne transmit o stare de relaxare și binedispunere, lucru obligatoriu în cazul unui website cu acest specific.
În partea superioară se află meniul cu legăturile spre paginile de interes pentru orice posibil vizitator. Mai jos se prezintă secvența de cod care face posibilă afișarea meniului principal, precum și figura III.2.1.2 care ne prezintă acest meniu.
<ul id="navigation-menu">
<li><a href="<?php echo $base_url; ?>">Despre</a></li>
<li><a href="<?php echo $base_url; ?>/statiuni">Statiuni</a></li>
<li><a href="<?php echo $base_url; ?>/galerie">Galerie foto</a></li>
<li><a href="<?php echo $base_url; ?>/contact">Contact</a></li>
</ul>
Fig. III.2.1.2. – Meniul principal al aplicației web
Ca simplu vizitator al site-ului, oricine are acces la secțiunile meniului din header, care deschid paginile de prezentare a stațiunilor disponibile (Stațiuni), prezentarea stațiunilor disponibile prin imagini sugestive (Galerie foto), pagina principala a website-ului (Despre) respectiv pagina de contact (Contact).
Pagina Despre, care este pagina principală, pune la dispoziție câteva argumente care ne-ar putea determina să vizităm Grecia.
De aici sunt de asemenea accesibile și obiectivele turistice disponibile în număr de nouă. Fiecare obiectiv poate fi accesat și pentru fiecare obiectiv se prezinta o fotografie sugestivă alături de un text cu o scurtă descriere a obiectivului precum putem observa în figura III.2.1.3.
Fig. III.2.1.3. – Obiectivele turistice prezente în cadrul aplicației
În pagina Stațiuni regăsim destinațiile de vacanță care pot fi puse la dispoziție de agenția de turism. Astfel când am accesat secțiune Stațiuni din meniu regăsim, precum în cazul obiectivelor, o fotografie concludentă urmată de un text de prezentare cu cele mai importante detalii legate de așezarea geografică, posibilele obiective de vizitat precum și descrieri ale peisajelor. Reprezentarea stațiunilor în pagină este ilustrată în figura III.2.1.4.
Stațiunile disponibile pe website la momentul actual sunt următoarele:
Creta
Halkidiki
Mykonos
Naxos
Paros
Santorini
Skiathos
Zakynthos
Fig. III.2.1.4. – Stațiunile prezente în cadrul aplicației
Pagina Galerie foto ilustrată în figura III.2.1.5 conține pentru fiecare stațiune în parte un set de fotografii. Acestea putem spune că sunt de cele mai multe ori esențiale în luarea unei decizii, deoarece odată ce am vizualizat peisajele, plaja și alte frumuseți ale zonei putem să alegem una dintre stațiuni în funcție de preferințele și gusturile fiecărei persoane.
Galeria flash a fost generata cu ajutorul unui soft numit iPixSoft Flash Gallery Factory. Astfel această galerie a fost introdusă în pagină ca și element flash astfel :
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9.0.0.0"
id="my_foto"
width="1200"
height="800">
<param name="movie" value="nume_fisier.swf">
<param name="bgcolor" value="#FFFFFF">
<embed name="AM" src="nume_fisier.swf"
quality="high" bgcolor="#FFFFFF" swLiveConnect="true"
width="1200"
height="800"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object>
Fig. III.2.1.5. – Galeria foto cu stațiunile din cadrul aplicației
Ultima pagină a meniului și anume Contact, conține adresa la care se află sediul agenției de turism urmată de o hartă Google Maps cu poziționarea acestuia, pentru persoanele care doresc să viziteze agenția pentru mai multe detalii. De asemenea pagina Contact mai conține orarul, adresa de email și numărul de telefon la care personalul agenției de turism va putea fi contactat. Pagina contact este ilustrată în figura III.2.1.6.
Fig. III.2.1.6. – Secțiunea contact din cadrul aplicației
III.2.2. Modulul pentru clienți
Partea de clienți a website-ului este destinată persoanelor care vizitează website-ul și ar fi interesate de rezervarea unei vacanțe sau de obținerea unor detalii suplimentare cu privire la anumite vacanțe sau bilete de avion.
Astfel un vizitator interesat are nevoie în primul rând de creerea unui cont care se poate realiza prin apăsarea butonului înregistrare din partea de sus a paginii, sau dacă are deja un cont creeat prin apăsarea butonului logare vizibil în figura III.2.2.1.
Fig. III.2.2.1. – Logarea și înregistrarea din cadrul aplicației
Formularul pentru înregistrarea unui nou utilizator conțome câmpurile : utilizator, email, parolă și reintroducere parolă și este ilustrat în figura III.2.2.2.
Fig. III.2.2.2. – Formularul de înregistrarea din cadrul aplicației
Implementarea acestui formular s-a realizat în php și s-au folosit următoarele secvențe de cod :
private function registerNewUser()
{
if (empty($_POST['user_name'])) {
$this->errors[] = "<span class='error-message'>Introduceti nume utilizator.</span>";}
elseif (empty($_POST['user_password_new']) || empty($_POST['user_password_repeat'])) {
$this->errors[] = "<span class='error-message'>Introduceti parola.</span>";
} elseif ($_POST['user_password_new'] !== $_POST['user_password_repeat']) {
$this->errors[] = "<span class='error-message'>Parola si Repeta parola nu sunt identice.</span>";
} elseif (strlen($_POST['user_password_new']) < 6) {
$this->errors[] = "<span class='error-message'>Parola trebuie sa contina min. 6 caractere</span>";
} elseif (strlen($_POST['user_name']) > 64 || strlen($_POST['user_name']) < 2) {
$this->errors[] = "<span class='error-message'>Nume utilizator trebuie sa contina minim 2 caractere.</span>";
} elseif (!preg_match('/^[a-z\d]{2,64}$/i', $_POST['user_name'])) {
$this->errors[] = "<span class='error-message'>Nume utilizator incorect</span>";
} elseif (empty($_POST['user_email'])) {
$this->errors[] = "<span class='error-message'>Introduceti email-ul</span>";
} elseif (strlen($_POST['user_email']) > 64) {
$this->errors[] = "<span class='error-message'>Email-ul nu poate sa fie mai lung de 64 de caractere.</span>";
} elseif (!filter_var($_POST['user_email'], FILTER_VALIDATE_EMAIL)) {
$this->errors[] = "<span class='error-message'>Email-ul nu este valid.</span>";
Formularul pentru înregistrare utilizatorilor care au deja un cont creat este reprezentat după cum se poate observa în figura III.2.2.3.
Fig. III.2.2.3. – Formularul de logare din cadrul aplicației
Implementarea sistemului de logare s-a realizat în php, după cum urmează :
<form method="post" action="logare" name="loginform">
<div>
<label for="login_input_username">Utilizator</label>
<input id="login_input_username" class="login_input" type="text" name="user_name" required />
</div>
<div>
<label for="login_input_password">Parola</label>
<input id="login_input_password" class="login_input" type="password" name="user_password" autocomplete="off" required />
</div>
<input type="submit" name="login" value="Autentificare" />
</form>
<a href="inregistrare">Inregistrare cont nou</a>
Odată ce un utilizator are un cont și este logat pe site, devine disponibilă o secțiune de meniu, vizibilă în partea dreaptă a figurii III.2.2.4, prin care utilizatorul poate să rezerve un bilet de avion, o vacanță din ofertă sau să își creeze un circuit care să conțină mai multe stațiuni și obiective.
Fig. III.2.2.4. – Meniul clientului din cadrul aplicației
La apăsarea butonului Adauga circuit va fi deschisă o fereastră precum cea ilustrată în figura III.2.2.5. care permite selectare multiplă în care din destinațiile posibile putem alege mai multe stațiuni și obiective turistice în vederea obținerii unei oferte pentru circuitul dorit de către noi. De asemenea se va afișa automat un preț aproximativ pentru opțiunile alese.
Fig. III.2.2.5. – Selectarea destinațiilor pentru circuit din cadrul aplicației
Selecția multiplă a locațiilor precum în imaginea de mai sus este foarte utilă, oferinde de asemenea și un aspect plăcut, ordonat de asemenea și simplu de utilizat de către orice utilizator. Aceasta a fost implementată astfel:
<div class="modal modal-adauga-circuit" id="adauga-circuit">
<?php $locatii = get_locations('gr'); ?>
<select multiple="multiple" id="select-locations" name="my-select[]">
<?php foreach ($locatii as $locatie): ?>
<option value="<?php echo $locatie['id']; ?>" data-pret="<?php echo $locatie['pret']; ?>"><?php echo $locatie['nume']; ?></option>
<?php endforeach; ?>
</select>
<div class="next-step button" rel="#adauga-bilet-avion">Next</div>
<div class="total-price">Pret: <span>0</span> EURO</div>
</div>
</m>
La apăsarea butonului Urmatorul pas, se trece la următoarea etapă spre finalizarea comenzii. Aici utilizatorul va avea de complectat un formular ilustrat și în figura III.2.2.6, în care va avea de ales locul de plecare din Romania, preferințele utilizatorului cu privire la tipul de zbor și compania de zbor precum și data dorită.
Fig. III.2.2.6. – Complectarea datelor de zbor pentru circuit din cadrul aplicației
O parte din secvența care realizează cele prezentate mai sus este următoarea:
<div class="modal modal-bilet-avion" id="adauga-bilet-avion">
<div class="wrapper-select">
<?php $loc_plecare = get_locations('ro'); ?>
<label for="localitate-plecare">Plecare</label>
<select id="localitate-plecare" name="localitate-plecare">
<option></option>
<?php foreach ($loc_plecare as $locatie): ?>
<option value="<?php echo $locatie['id']; ?>" data-pret="<?php echo $locatie['pret']; ?>"><?php echo $locatie['nume']; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="wrapper-select">
<label for="tip-zbor">Tip zbor</label>
<select id="tip-zbor" name="tip-zbor">
<option></option>
<option value="low-cost" data-pret="55">Low-cost</option>
<option value="business" data-pret="280">Business</option>
</select>
</div>
<div class="wrapper-select">
<?php $companies = get_companies(); ?>
<label for="companie-aeriana">Compania</label>
<select id="companie-aeriana" name="companie-aeriana">
<option></option>
<?php foreach ($companies as $company): ?>
<option value="<?php echo $company['id']; ?>" data-pret="<?php echo $company['pret']; ?>"><?php echo $company['nume']; ?></option>
<?php endforeach; ?>
</select>
Odată ce a salvat circuitul reprezentanții agenției de turism vor contacta clientul prin adresa de email înregistrată în baza de date la creerea contului, cu oferte de preț concrete în funcție de opțiunile clientului. Circuitul este creat și adăugat în baza de date la apăsarea butonului Trimite comanda. După ce circuitul a fost creat el va apărea automat într-o tabelă prezentă în secțiunea circuit care conține locațiile dorite, firma de zbor, data la care se efectuează zborul respectiv prețul aproximativ. Felul în care această tabelă arată este ilustrat în figura III.2.2.7.
Fig. III.2.2.7. – Tabela cu circuitele clientului din cadrul aplicației
Afișarea acestui tabel în secțiunea circuit a meniului utilizator se ralizează cu următoarea secvență de cod:
<?php if ($circuite = get_circuite($_SESSION['user_name'])): ?>
<table class="tg">
<tr>
<th class="tg-s6z2">Id</th>
<th class="tg-031e">Locatii</th>
<th class="tg-031e">Firma avion</th>
<th class="tg-031e">Data</th>
<th class="tg-031e">Pret</th>
</tr>
<?php foreach($circuite as $circuit): ?>
<tr>
<td class="tg-031e"><?php echo $circuit['id']; ?></td>
<td class="tg-031e"><?php echo $circuit['locatii']; ?></td>
<td class="tg-031e"><?php echo $circuit['firma']; ?></td>
<td class="tg-031e"><?php echo $circuit['data']; ?></td>
<td class="tg-031e"><?php echo $circuit['pret']; ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php else: ?>
<p>Nu ai circuite salvate</p>
<?php endif; ?>
<div class="adauga-circuit button" rel="#adauga-circuit">Adauga circuit</div>
Secțiunea de oferte a meniului utilizator, accesibilă doar utilizatorilor autentificați le permite acestora să beneficieze de cele mai bune oferte actuale pe care agenția de turism le deține. Această secțiune conține un meniu atractiv care la selectarea unei stațiuni va afișa ofertele pentru acea destinație. Ofertele sunt pentru cele opt stațiuni către care agenția de turism oferă sejururi.
Prezentarea ofertelor a fost realizată prin folosirea unui plugins jQuery UI numit Accordion. Acesta este foarte util deoarece permite afișarea panourilor montabile de conținut pentru reprezentarea informațiilor într-o cantitate limitată de spațiu. Acest lucru fiind foarte util având în vedere faptul că în cadrul agenției de turism vom putea avea la un moment dat sute de oferte. Astfel folosirea acestei soluți oferă aplicației acuratețe și un design plăcut. Ofertele vor fi prezentate conform figurii III.2.2.8. :
Fig. III.2.2.8. – Secțiunea oferte din cadrul aplicației
La selectarea uneia dintre stațiuni se vor desfășura toate ofertele aferente acelei stațiuni. Acest lucru oferă aspect plăcut dar și îi permite clientului să găsească cu ușurință cea ce dorește.
Principiul de funcționare este simplu : la selectarea unei stațiuni din antet conținutul stațiunii selectat se extinde prezentând ofertele, de asemenea daca selectăm din nou aceași stațiune conținutul este restrâns meniul revenind la forma compactă.
O parte din a codului sursă pentru această reprezentare este prezentat mai jos :
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link rel="stylesheet" href="css/oferte.css"/>
<script>
$(function() {
$( "#accordion" ).accordion({
collapsible: true,
heightStyle: "content"
});
});
</script>
<h3>Zakynthos</h3>
<div>
<h5>Hotel Majestic Spa</h5>
<h6>Laganas, Zakynthos, Grecia</h6>
<img src="images/oferte/creta.jpg" alt=""/>
<ul class="oferte">
<li>
<p><strong>Family room standard / Hotel Majestic Spa * * * *</strong></b></p>
<div style="margin: 10px 0 0 25px;">
<p>Data: <i>15.07.2014 – 25.07.2014</i></p>
<p>Transport: Charter avion</p>
<p>Plecare din Timisoara, Oradea, Cluj</p>
<p>Servicii incluse: All inclusive</p>
<p><strong>Pret 812 EUR</strong></p> </div>
Ultima funcționalitate din meniul utilizator o reprezintă secțiunea bilete de avion unde avem posibilitatea de a adăuga un bilet de avion în baza de date a agenției în vederea rezervării acestuia prin agenția de turism. Pentru aceasta utilizatorul trebuie să complecteze un formular ilustrat figura III.2.2.9 care conține câteva datele ale utilizatorului precum nume, prenume, telefon și email, locurile de plecare și sosire, firma și clasa de zbor respectiv data de plecare. După alegerea acestor parametrii în formular se va afișa un preț aproximativ al biletului.
La apăsarea butonului trimite biletul este trimis în baza de date a agenției, pentru obținerea și emiterea biletului de zbor de către agenția de turism.
Fig. III.2.2.9. – Rezervarea biletelor de avion din cadrul aplicației
Datele de plecare, sosire, clasa de zbor și firma de zbor sunt preluate din baza de date. Prin următoarea secvență de cod vom observa cum se realizează preluarea locațiilor de plecare din baza de date:
<div class="plecare-sosire">
<div class="bilet-2-col">
<label for="plecare">Plecare</label>
<?php $locatii = get_locations('ro'); ?>
<select class="plecare get-val" name="plecare">
<?php foreach ($locatii as $locatie): ?>
<option value="<?php echo $locatie['id']; ?>" data-pret="<?php echo $locatie['pret']; ?>"><?php echo $locatie['nume']; ?></option>
<?php endforeach; ?>
</select>
</div>
Se observă în această secvență faptul că pentru diferențiera locațiilor se folosește un parametru ro în cazul locațiilor de plecare, dat fiind faptul că atât locațiile de plecare cât cele de sosire folosesc aceași tabelă a bazei de date. Astfel destinațiile vor avea ca parametru gr.
În secțiunea bilete de avion utilizatorul mai are de asemenea posibilitatea de a vizualiza lista de bilete pe care el a solicitat-o aceasta se ilustrează în figura III.2.2.10. Aceasta se realizează prin apăsarea butonului listă bilete.
Fig. III.2.2.10. – Lista biletelor de avion ale utilizatorului din cadrul aplicației
De asemenea în cadrul listei de bilete utilizatorul are posibilitatea de a renunța la un bilet. Aceast lucru se poate realiza prin apăsarea butonului , și fiind implementat astfel :
<div title="Delete" class="delete_ticket" ticket_id="<?php echo $id; ?>" zbor_id="<?php echo $val['zbor_id'];?>">x</div>
După realizarea operațiilor dorite utilizatorul are poate părăsi zona utilizator prin apăsarea butonului Iesire. Pentru aceasta se folosește următoarea funcție :
public function doLogout(){
$_SESSION = array();
session_destroy();
$this->messages[] = "<span class='error-message'>Ai fost deconectat.</span>";}
Concluzii
Aplicația prezentată contribuie cu succes la gestionarea eficientă a unei agenții de turism oferind toate mijloacele, metodele și funcționalitățile necesare pentru evoluția unei agenții de turism în acest domeniu.
Realizând această aplicație am dorit să imi dovedesc cunoștințele dobândite asupra tehnologiile descrise în lucrare dar mai ales să învăț mai multe despre acestea și să evoluez la acest capitol.
Este o aplicație compatibilă cu toate browserele populare. Cea mai importantă caracteristică a aplicației fiind faptul că este ușor de folosit de către orice persoană indiferent de nivelul cunoștințelor sale, totul fiind sugestiv.
Faptul că este o aplicație simplu de utilizat dar în același timp utilă sporește și mai mult utilitatea aplicației spre deosebire de altele.
Modul în care aplicația a fost structurată permite o eventuală extindere a funcționalității acesteia în viitor. De asemenea baza de date a fost implementată și concepută pentru a suporta aceste funcționalități în vederea unei dezvoltări ulterioare.
Extinderea avută în vedere ar fi posibilitatea de achiziționare a excursiilor, circuitelor, ofertelor și a biletelor de avion direct în cadrul aplicației fără a mai fi nevoie de intervenția agenția de turism în procesul de cumpărare, totul realizându-se virtual, atât comanda cât și plata. Plata realizându-se prin card bancar. Aceaste schimbări ar transforma aplicația într-o agenție de turism cu toate funcționalitățile unei agenții de turism cu sediu fizic permițând astfel o economie substanțială a societății prin renunțarea la spațiu comercial cât și la o bună parte din personal.
Bibliografie
http://ro.wikipedia.org/wiki/Comer%C8%9B_electronic
http://ro.wikipedia.org/wiki/HyperText_Markup_Language
http://ro.wikipedia.org/wiki/Interfe%C8%9Be_evoluate
https://siteconstruct.ro/notiuni-de-baza-in-css
http://ro.wikipedia.org/wiki/JQuery
http://ro.wikipedia.org/wiki/MySQL
http://www.wampserver.com/en/
http://www.ipixsoft.com/flash-gallery-factory.html
http://www.softpedia.com/get/Internet/WEB-Design/Flash/iPixSoft-Flash-Gallery-Factory.shtml
https://wordpress.org/plugins/sis-accordion/
http://downloads.mysql.com/docs/apis-php-en.pdf
http://www.infoap.utcluj.ro/multi/programming_PHP.pdf
http://www.csgnet.org/extra/livros/jQuery.%5BBear_Bibeault,_Yehuda_Katz%5D_jQuery_in_Action,_Sec(BookFi.org).pdf
Bibliografie
http://ro.wikipedia.org/wiki/Comer%C8%9B_electronic
http://ro.wikipedia.org/wiki/HyperText_Markup_Language
http://ro.wikipedia.org/wiki/Interfe%C8%9Be_evoluate
https://siteconstruct.ro/notiuni-de-baza-in-css
http://ro.wikipedia.org/wiki/JQuery
http://ro.wikipedia.org/wiki/MySQL
http://www.wampserver.com/en/
http://www.ipixsoft.com/flash-gallery-factory.html
http://www.softpedia.com/get/Internet/WEB-Design/Flash/iPixSoft-Flash-Gallery-Factory.shtml
https://wordpress.org/plugins/sis-accordion/
http://downloads.mysql.com/docs/apis-php-en.pdf
http://www.infoap.utcluj.ro/multi/programming_PHP.pdf
http://www.csgnet.org/extra/livros/jQuery.%5BBear_Bibeault,_Yehuda_Katz%5D_jQuery_in_Action,_Sec(BookFi.org).pdf
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicatie Web Pentru Gestiunea Unei Agentii de Turism (ID: 136545)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
