Damache Cristian-Andrei [611345]

UNIVERSITATEA DIN BUCURESTI
FACULTATEA DE MATEMATICĂ SI INFORMATICĂ
CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI

LUCRARE DE LICENȚĂ
APLICATIE WEB PENTRU GESTIONAREA UNUI PARC AUTO
Coordonator științific: Absolvent: [anonimizat]-Andrei
BUCUREȘTI
2017

1.Introducere
Până de curând, producătorii de autovehicule și dealerii au avut tendința să se concentreze asupra
vânzării de vehicule noi, excluzând autoturismele uzate, adesea văzând comerțul cu autovehicule
second-hand ca un produs secundar, nedorit al vânzărilor de autoturisme noi.Mașinile noi,cu prețuri
evident mai ridicate decât mașinile uzate,se aflau în centrul eforturilor de vânzări datorită capacității de
atrage cumpărători mai înstăriți,insemnând o cifră de afaceri mai mare. De-a lungul timpului, însă,
concurența pe piața de autoturisme a dus la o situație surprinzătoare: vânzările de mașini uzate au
început să aducă mai mult profit decât vânzările de mașini noi ,de înaltă calitate.
Piața de automobile second-hand în întreaga lume a crescut semnificativ. În Franța, de exemplu,
vânzările de unități de mașini second-hand au crescut de la 4,7 milioane la 5,4 milioane între 1990 și
2005, în același timp vânzările de vehicule noi au scăzut de la 2,3 milioane la 2,07 milioane de unități.
Dezvoltarea internetului a schimbat lupta dintre distribuitori și consumatori.Clienții sunt din ce în
ce mai informați despre autoturisme, calitatea acestora, valoarea reziduală, prețurile aplicate, costurile de
finanțare .Un studiu recent subliniază faptul că majoritatea cumpărătorilor de autovehicule utilizate
găsesc vehiculul pe care îl cumpără căutând pe internet ,decât prin intermediul anunțurilor din ziare, sau
reviste.
Piața de mașini second-hand este cea mai activă în Statele Unite, Franța și Marea Britanie. Pe
aceste piețe, afacerea cu mașini uzate generează venituri economice considerabile. În schimb, piața de
mașini uzate este mai slabă în Canada, Japonia și Spania. De fapt, fiecare piață națională este influențată
de condițiile socio-culturale. Dincolo de impactul culturii, cu toate acestea, este necesar să se examineze
modul în care piețele funcționează în termeni economici.
Teoriile economice prevăd, de asemenea, că vânzătorii și cumpărătorii posedă aceleași
informații prin care să determine calitatea unui produs aflat în tranzacție. Aceasta este definită ca o
relație simetrică între cumpărători și vânzători. Cu toate acestea, pentru anumite bunuri, inclusiv
vehiculele uzate, vânzătorii pot decide să nu dezvăluie valoarea reală (din punct de vedere al calității) a
ceea ce este vândut. Aceasta înseamnă că este posibil să se pună un preț mare pentru bunurile de calitate
mediocră. Cumpărătorii nu sunt în măsură să determine calitatea reală a ceea ce cumpără. Vânzătorii, pe
de altă parte, sunt conștienți de calitatea a ceea ce vând. Această situație este una tipică de asimetrie între
cumpărători și vânzători. Pentru ca piața să se extindă, vânzătorii trebuie să se asigure că vor câștiga
încrederea consumatorilor prin eliminarea, sau cel puțin minimizarea, a asimetriei informațiilor.
În Europa, de exemplu, unele surse estimează că fiecare vehicul are în prezent pe parcursul
întregii sale vieți o medie de patru proprietari, ceea ce oferă dealerilor posibilitatea de a vinde același
vehicul de mai multe ori.Supraproducția globală de autovehicule,a dus la creșterea concurenței între
mărci și astfel a condus la un nivel de reduceri oferite cumpărătorilor de autoturisme noi, atât de către
dealeri, cât și de către producători.
Site-urile,având fotografii, descrieri detaliate și rapoarte privind istoricul vehiculelor pentru a
asigura cumpărătorii de calitatea autovehiculelor , au facilitat vânzarea vehiculelor second-hand pe piața
privată.Majoritatea consumatorilor de astăzi au cumpărat și vândut mai multe mașini și sunt din ce în ce
mai exigenți atunci când achiziționează un vehicul nou sau unul folosit.
Reglementarea guvernamentală este unul dintre cei mai influenți factori care afectează
dezvoltarea pieței vehiculelor uzate într-o anumită țară.

Dezvoltarea de instrumentelor online pentru cumpărători și vânzători a făcut piața de
autoturisme mai competitivă ,oferind în același timp distribuitorilor noi oportunități de a îmbunătăți
operațiunile și de a capta vânzări profitabile. Cele mai importante strategii de succes pe care dealerii
trebuie să le urmeze pentru a profita de aceste oportunități sunt:
-îmbunătățirea experienței clienților
-raționalizarea relațiilor cu clienții
-promovare online și merchandising
-maximizarea oportunităților de vânzări cu marjă mare
-optimizarea programelor de certificare a vehiculelor second-hand

1.1 Motivație
Piața vehiculelor uzate s-a dezvoltat în ultimul deceniu și este în continuă creștere și are un efect
semnificativ asupra cifrelor de vânzări ale unui producător de automobile. Cumpăratorii au devenit mai
exigenți,o data cu fiabilitatea și calitatea imbunătățită a vehiculelor,implicând investiții financiare
semnificative din partea producătorilor,care trebuie să se adapteze rapid noilor cerințe pentru a nu
rămâne în urmă.
Principalul motiv pentru care este abordată această temă este,deși piața de autoturisme second-
hand este în creștere,lipsa site-urilor specializate în vânzarea automobilelor uzate în țara noastră(exista o
singură aplicație de acest gen, Autovit).Nu de puține ori s-a întâmplat să dorim aflarea câtor mai multe
informații fără prea multe bătăi de cap,internetul fiind una dintre cele mai simple metode prin care
putem afla anumite date despre un produs pe care dorim să-l achiziționăm.
S-a ales conceperea unei aplicații de promovare a automobilelor uzate datorită avantajelor față
de o aplicație e-comert sau o aplicație de cumpărare a unui automobil nou.În cazul unei aplicații de tip e-
comerț,relația dintre client și vânzător este una asimetrica din punct de vedere al
informațiilor,consumatorul având acces la un număr limitat de date despre produs.În acest caz o aplicație
de gestionare este benefică eventualului client,doarece el poate afla mai multe informații de la
vânzător,poate negocia prețul autovehicului și cel mai important aspect,poate efectua un test-drive.

3.Tehnologii folosite
În cadrul acestui capitol vor fi prezentate tehnologiile folosite pentru conceperea proiectului.
3.1 PHP
Ce este PHP?
PHP: Hypertext Preprocessor. Este un sistem software open source ,sintaxa sa împrumutând
elemente provenite din limbajele C, Java și Perl, fiind un limbaj ușor de învățat. Scopul principal al
limbajului este acela de a permite dezvoltatorilor web de a crea rapid pagini web generate dinamic.
Creat în 1994 de către Rasmus Lerdorf, prima versiune a PHP a fost un simplu set de piese pentru
Common Gateway Interface (CGI), scris în limbajul de programare C. În iunie 1995, Rasmus punea la
dispoziția publicului codul sursă pentru PHP Tools, care a permis dezvoltatorilor să-l folosească așa
cum consideră necesar. De asemenea, le-a permis utilizatorilor și chiar i-a încurajat să rezolve erorile
apărute în urma compilării codului.
PHP 3.0 a fost prima versiune care se aseamănă cu versiunea PHP aflată astăzi pe piață. PHP FI
2.0 era încă ineficientă pentru a crea o aplicație de comerț electronic , astfel Andi Gutmans și Zeev
Suraski din Tel Aviv, Israel, au început să rescrie o nouă versiune.

O caracteristică cheie introdusă în PHP 3.0 a fost folosirea conceptelor programării orientat-obiect.
La momentul de vârf, PHP 3.0 a fost instalat pe aproximativ 10% din servere web de pe Internet.
În iarna anului 1998, la scurt timp după ce PHP 3.0 a fost lansat oficial, Andi Gutmans și Zeev Suraski
au început să lucreze la o rescriere a limbajului. Obiectivele de proiectare au fost de a îmbunătăți
performanța aplicațiilor și de a modulariza codul.
PHP 4.0 a inclus suportul pentru mai multe servere Web, sesiuni HTTP, moduri mai sigure de
gestionare a datelor .În data de 13 iulie 2004 PHP 5 a fost lansat, incluzând caracteristici noi, cum ar fi
suport îmbunătățit pentru programarea orientată pe obiecte, extinderea PHP Data Objects (DOP) și
numeroase îmbunătățiri performanță. În 2008, PHP 5 a devenit singura versiune stabilă în curs de
dezvoltare.Dezvoltatorii PHP au primit critici datorită lipsei de suport petru Unicode,incercându-se
implementarea pe PHP6,insă fără un succes notabil.
PHP 7 a fost numit inițial PHP Next Generation (phpng). A fost scris de Dmitry Stogov, Xinchen
Hui și Nikita Popov și vizează optimizarea performanțelor Zend Engine de a utiliza structuri de date
mai compacte.
Echipa de dezvoltare PHP anunță disponibilitatea imediată a PHP 7.1.5. Multe bug-uri au fost fixate.
PHP include mai multe biblioteci open source.PHP este un sistem Internet-aware cu module built-in
pentru accesarea File Transfer Protocol (FTP) și mai multor servere de baze de date, cum ar fi
PostgreSQL, MySQL, Microsoft SQL Server și SQLite.
Există două modalități de a rula un program PHP:din linia de comandă sau rularea cu ajutorul unui web
server.
PHP este în momentul actual cel mai utilizat limbaj în domeniul programării web.
.3.2 HTML
Ce este HTML?
HTML este limbaj de descriere a structurii paginilor web .HTML oferă programatorilor
mijloacele necesare pentru a:
Publica online documente cu titluri, text, tabele, liste, imagini, etc.
Prelua informații on-line, prin intermediul hypertext links.
Utiliza module de proiectare pentru efectuarea de tranzacții cu servicii remote.
HTML poate încorpora programe scrise într-un limbaj de scripting cum ar fi JavaScript, care
influențează comportamentul și conținutul paginilor web. Includerea CSS definește aspectul și
conținutul. World Wide Web Consortium (W3C), deține ambele standarde, HTML si CSS, încurajează
utilizarea CSS asupra codului HTML .
În 1980, fizicianul Tim Berners-Lee, un contractor la CERN, a propus și creat prototipul
ENQUIRE, un sistem pentru cercetătorii CERN pentru a folosi și distribui documente. În 1989, Berners-
Lee a scris un sistem Internet-based hypertext. Berners-Lee a considerat HTML ca o aplicatie a SGML.
Acesta a fost standardizat în mod oficial de către Task Force Internet Engineering (IETF).
HTML markup este format din mai multe componente cheie:tag-uri (și atributele lor), tipuri de date ,
referințe și entități. Tag-urile HTML cel mai frecvent vin în perechi, cum ar fi <h1> și </ h1>, deși
există și elemente fără preche, cum ar fi <img>. Primul tag-ul într-o pereche este tag-ul de start, iar al
doilea este tag-ul final (acestea sunt, de asemenea, numite și opening tags și closing tag).

<!DOCTYPE html>
<html>
<head>
<title>This is a title</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
Documentele HTML implică o structură de elemente imbricate. Acestea sunt indicate în
document prin etichete HTML, închise în paranteze : <p> .În caz, general, conținutul unui element este
indicat printr-o pereche de tag-uri: un "start tag" <p> și "end tag" </ p>.
HTML defineste un set de 252 de caractere și un set de caractere numerice (1 114 050) care permit
scrierea caracterelor , cu markup, mai degrabă decât literal. Un caracter literal și omologul său de
markup sunt considerate echivalente și sunt identice.
HTML definește mai multe tipuri de date, cum ar fi datele scriptului ,datele stylesheet și o serie de tipuri
de atribute ale valorilor, inclusiv ID-uri, nume, numere, URI-uri, unități de măsură, limbi, descriptori
media, culori, codificarea caracterelor, datele și ora. Toate aceste tipuri de date sunt specializări de date
caracter.
World Wide Web este compus în principal din documente HTML transmise de la servere Web
către browsere Web utilizând Hypertext Transfer Protocol (HTTP). Cu toate acestea, HTTP este utilizat
pentru a servi imagini, sunete și alte tipuri de conținut, precum și HTML. Pentru a permite browser-ului
web să știe cum să se gestioneze fiecare document pe care il primește, informațiile sunt transmise
împreună cu documentul.
De la început, HTML și protocoalele asociate s-au bucurat de o popularitate prematura și un grad
de acceptare ridicat deși nu au existat standarde clare în primii ani ai limbajului. Deși creatorii săi au
conceput initial HTML ca un limbaj semantic lipsit de detalii de prezentare, s-a produs implementarea
elementelor de prezentare și atributelor în cadrul limbajului, determinată în mare măsură de către gama
variată de furnizori browser. Pentru revenirea HTML-ului la statutul de limbaj semantic, W3C a
dezvoltat, CSS si XSL pentru a prelua sarcina prezentării.
Există două variante HTML,aflate pe axe diferite: HTML bazat pe SGML, comparativ cu HTML bazat
pe XML (denumit XHTML) .
HTML 4 definește trei versiuni diferite ale limbajului: Strict, Transitional și Frameset. Versiunea
Strict destinată pentru documentele noi și este considerată best practice, în timp ce versiunile
Transitional și Frameset au fost dezvoltate pentru a facilita tranziția documentelor conforme cu
specificațiile mai vechi sau.HTML5 a început să câștige popularitate în dezvoltarea software înainte de
adoptarea sa oficială, în octombrie 2014, reducând încrederea în alte tehnologii web, cum ar fi Adobe
Flash și Microsoft Silverlight. Elementul HTML5 video pentru încorporarea videoclipurilor într-un

document, a fost o inovație majoră. HTML5 este, de asemenea, conceput pentru a schimba platforma
Web dintr-o platformă de navigare,într-una unde vei putea crea aplicații distribuite.
World Wide Web Consortium (W3C) a dezvăluit câteva detalii cu privire la ceea ce va fi inclus în
următoarea iterație a standardului HTML5 și informații cu privire la direcția pe care standardul o va
urmări. Următoarea versiune HTML5 va fi numit 5.2 și va introduce un nou element de meniu, o politică
de securitate pentru conținutul web și adrese de e-mail cu caractere non-latine.
W3C are în dezvoltare Web Components, un framework pentru identificarea componentelor reusabile
ale website-urilor și Service Workers pentru a facilita executarea mai multor funcții într-un browser cu
capacități offline.
Pentru securitatea web, W3C are trei soluții:
Un framework de autentificare web. Aceasta soluție este în progres, scopul acesteia este de a sprijini
securitatea prin autentificare multi-factor.
Web Crypto API finalizată la inceputul acestui an, aceasta oferă un API JavaScript pentru operațiunile
criptografice de bază în aplicațiile web.
Best practices for web-development security,de asemenea finalizată și aceasta implementare,are ca scop
împiedicarea schimbului de informații între aplicații.
3.3 Bootstrap
Bootstrap este un framework open-source pentru proiectarea site-urilor și aplicațiilor web. Acesta
conține HTML și template-uri de design bazate pe CSS pentru tipografie, formulare, butoane, navigare
și alte componente de interfață, precum și extensii opționale JavaScript. Spre deosebire de framework-
uri, este strict dedicat dezvoltării front-end. Bootstrap ocupă locul al doilea în topul proiectelor de pe
GitHub.
Bootstrap, numit inițial Twitter Blueprint a fost dezvoltat de către Mark Otto și Jacob Thornton
pe Twitter ca un framework pentru a încuraja consecvența între instrumente interne. Înainte de
Bootstrap, diferite biblioteci au fost utilizate pentru dezvoltarea interfețelor, având ca rezultat
neconcordanțe și o costuri de întreținere ridicate.
Bootstrap este un framework modular și constă dintr-o serie de Less stylesheets care implementează
diferitele componente ale setului de instrumente. Aceste stylesheets sunt compilate, de obicei, într-un
bundle și incluse în paginile web, dar componentele individuale pot fi adăugate sau eliminate. Bootstrap
oferă o serie de variabile de configurare de exmplu pentru modificarea culorii.
Începând cu versiunea Bootstaps 2.0 s-a implementat suport pentru responsive web design .
Acest lucru înseamnă că aspectul paginilor web se modifica dinamic în funcție de caracteristicile
dispozitivului folosit (desktop, tabletă, telefon mobil) .
Bootstrap 3 suportă cele mai recente versiuni ale Google Chrome, Firefox, Internet Explorer, Opera și
Safari (cu excepția Windows). De asemenea,oferă suport pentru IE8 și cele mai recente versiuni Firefox
Extended Support.(ESR).
În cadrul versiunii 4.0 ( versiunile alpha lansate) s-au introdus Sass și Flexbox Support.

Alpha 5 a sosit la doar o lună după apariția Alpha 4, cu unele îmbunătățiri și o cu multitudine de erori
remediate.S-a actualizat procesul de build pentru a include toate versiunile compilate de CSS bundles.
Fiecare bundle inclus a fost compilat ,minimizat și trecut prin Sass,la fel ca și celelalte fișiere CSS
compilate precedent.În Alpha5 comportamentul grid-ului .container s-a modificat puțin .A fost setata
lățimea fiecărui container cu lățimea maximă: 100%, pentru a asigura o randare cât mai adecvată în
browser în modurile standard și flexbox.
Bootstarp grid
div class="container">
<div class="row">
<div class="col-*-*"></div>
</div>
<div class="row">
<div class="col-*-*"></div>
<div class="col-*-*"></div>
<div class="col-*-*"></div>
</div>
<div class="row">

</div>
</div>
O data cu apariția versiunii Alpha 6 au fost incluse clase pentru afișare, float și flexbox.
3.4 CSS
Cascading Style Sheets, de obicei abreviat ca CSS, este un limbaj stylesheet care definește
aspectul unui document scris în HTML sau XML (inclusiv XML SVG sau XHTML). CSS descrie modul
în care este randat un document pe ecran, pe suport de hârtie, în vorbire sau în alte medii.Obiectivul de
bază al limbajului Cascading Style Sheet (CSS) este de a permite motorului de căutare să editeze
elemente ale paginii cu anumite caracteristici, cum ar fi culoarea, poziționarea . Sintaxa CSS reflecta
acest obiectiv și blocurile sale de bază sunt:
– property, un identificator,ce poate fi citit și identificat ușor , care definește caracteristica ce este
luată în considerare.
-value,descrie modul în care caracteristica este manipulata de către motorul de căutare. Fiecare
proprietate are o gamă de valori valide, care sunt definite printr-o gramatica formală și semantică sens,
implementate de către motorul de browser-ul .
O pereche property- value se numește declarație, iar fiecare motor CSS calculează care
declarație se aplică fiecărui element al paginii.Ambele elemente property-value case-insensitive în
CSS . Declarațiile sunt grupate în blocuri, adică, într-o structură care este delimitată „{“ (U + 007b

LEFT CURLY BRACKET) și o „ }“ (U + 007D RIGHT CURLY BRACKET) . Blocurile pot fi uneori
imbricate, astfel încât și acoladele început cât și cele de sfârșit trebuie să se potrivească. Astfel de
blocuri sunt denumite blocuri de declarare și declarațiile care fac parte din acest bloc sunt separate prin
punct și virgulă „ ; “ (U+00#B SEMICOLON). Un bloc de declarație poate fi gol, conținând elementul
null.Fiecare bloc de declarație (valid) este precedat de unul sau mai mulți selectori, reprezentând condiții
care selectează anumite elemente ale paginii. Perechea selector group-declaration block se numește
ruleset(set de reguli) sau simplu regulă.Un stament este un bloc de construcție care începe cu caractere
non-spațiu și se termină la prima paranteza dreapta sau virgulă (în afara unui șir,și nu într-un alt {}, ()
sau [] ).
CSS are diferite niveluri și profiluri. Fiecare nouă versiune CSS păstreaza dar are și noi
caracteristici față de versiunile anterioare.Prima specificație CSS recomandată de către W3C este nivelul
CSS 1, care a fost publicat la data de 17 decembrie 1996 .Håkon Wium Lie și Bert Bos sunt creditați ca
fiind dezvoltatorii originali. Include suport pentru:propietati de font,culoarea textului,culoarea
fundalului,atribute de text,alinierea textului.(W3C nu mai oferă suport pentru CCS1,fiind considerată
deprecated).Nivelul CSS 2 a fost dezvoltat de către W3C și publicat ca o recomandare în mai 1998. Un
superset al CSS 1, CSS 2 include mai multe caracteristici noi, cum ar fi poziționarea absolută, relativă și
fixă a elementelor și z-index.Spre deosebire de CSS 2, care este o specificație unică care definește
diferite caracteristici, CSS 3 este împărțit în mai multe documente separate denumite „module“.Unele
dintre aceste module sunt CSS Grid și Shortand.
CSS Grid este cel mai puternic sistem de layout în CSS. Acesta este un sistem bidimensional,
ceea ce înseamnă că se ocupa și de coloane și de rânduri, spre deosebire de flexbox, care este în mare
măsură un sistem unidimensional.Folosind Grid poți aplica protocoalele CSS atât elementului părinte cât
și elementului copil.
.container {
{ display: grid | inline-grid | subgrid;
}
Shorthand sunt proprietăți CSS care vă permit să specificați valorile mai mult or proprietăți CSS
simultan. Folosind Shorthand un dezvoltator web poate scrie style sheets mai concis și, adesea, mai ușor
de citit.
3.5 JavaScript
JavaScript (abreviat JS) este un limbaj orientat-obiect cu funcții de primă clasă și este cunoscut
ca un limbaj de scripting pentru paginile web, dar, de asemenea,este folosit în multe medii non-browser.
A fost standardizat de către ECMAScript. Alături de HTML și CSS,JavaScript este una dintre cele trei
tehnologii-cheie din producția de conținut World Wide Web. Majoritatea site-urilor web îl folosesc, fără
a fi nevoie de plug-in-uri. JavaScript este utilizat în medii care nu sunt bazate pe web, de exemplu
documente PDF, și widget-uri desktop. JavaScript ruleaza pe partea de client Web, care poate fi folosit
pentru a proiecta /programa, modul în care paginile web, se comportă în funcție de anumite
evenimente.Contrar concepțiilor, JavaScript nu este „Interreted Java“. Într-un cuvânt, JavaScript este un
limbaj de scripting dinamic bazat pe obiect. Sintaxa de bază este în mod intenționat similară cu ambele,
Java si C ++, pentru a reduce numărul de noi concepte necesare pentru a învăța limbajul. JavaScript
poate funcționa atât ca limbaj procedural, precum și limbaj orientat pe obiect. Obiectele sunt create

programatic în JavaScript, prin atașarea de metode și proprietăți pentru obiecte goale, în run time, spre
deosebire de definițiile clasei din limbajele C ++ si Java. Odată ce un obiect a fost proiectat, acesta
poate fi folosit ca un model (sau prototip), pentru crearea de noi obiecte similare.
JavaScript utilizează prototipuri,spre deosebire de alte limbaje orientate obiect care folosesc clase
pentru moștenireSe pot implementa multe caracteristici bazate pe clasă, cu prototipuri în JavaScript.
function ball(r) {
this.radius = r; //the radius variable is local to the ball object
this.area = pi*r**2;
this.show = function(){ //objects can contain functions
drawCircle(r); //references a circle drawing function
}
}
myBall = new Ball(5); //creates a new instance of the ball object with radius 5
myBall.show(); //this instance of the ball object has the show function performed on it
În mai 2017, 94,5% din 10 de milioane de site-uri utilizează JavaScript.Cea mai comună
utilizare a JavaScript este adăugarea de comportament client-side pentru pagini HTML,cunoscut sub
numele de HTML dinamic (DHTML). Script-urile sunt incorporate sau incluse din pagini HTML si
interactionează cu Document Object Model (DOM) al paginii. Câteva exemple sunt:încărcarea
conținutului unei noi pagini sau transmiterea de date către server prin intermediul Ajax fără a reîncărca
pagina,animații ale elementelor paginii,conținut interactiv.Deoarece codul JavaScript poate rula local în
browser-ul unui utilizator (mai degrabă decât pe un server de la distanță), browser-ul poate răspunde la
acțiunile utilizatorului rapid, făcând aplicațiile mai receptive.Deoarece JavaScript ruleaza pe diferite
medii de dezvoltare,o parte importantă în testare este de a verifica dacă scriptul rulează pe mai multe
browsere.Proiectul CommonJS care a luat naștere în ianuarie 2009,are ca scop crearea unei biblioteci
standard pentru dezvoltare JavaScript în medii non-browser.
3.6 JQuery
JQuery este o bibliotecă cross-platform JavaScript care a fost concepută pentru a simplifica
client-side scripting-ul HTML.Este un software gratuit, open-source sub licența MIT.Analiștii web
indică faptul că acesta este cea mai utilizată bibliotecă JavaScript.JQuery este o biblioteca de manipulare
Document Object Model (DOM). DOM este o reprezentare cu o structură de tip arbore a elementelor
paginii web. JQuery simplifică sintaxa pentru identificarea, selectarea și manipularea elementelor
DOM .De exemplu, jQuery poate fi folosit pentru a identifica un element din document, cu o anumită
caracteristică (de exemplu, toate elementele cu tag-ul h1), schimbarea uneia sau mai multora dintre
atributele sale (cum ar fi culoarea, vizibilitatea) sau de asteptare a unui eveniment (de exemplu, un
click).
Principiile de dezvoltare cu jQuery sunt:separarea elementelor JavaScript de elementele
HTML( biblioteca jQuery oferă o sintaxă simplă pentru adăugarea de agenți de procesare a
evenimentelor în DOM utilizând JavaScript, decât să adauge atributele evenimentului HTML pentru a

apela funcțiile JavaScript ),concizie și claritate și extensibilitate(noi elemente,metode care pot fi
adăugate și apoi refolosite ca și plugin).
JQuery include următoarele caracteristici:
selecție de elemente DOM folosind multi-browser-ul open source,selector engine
manipulare de elemnte DOM bazată pe selectori CSS
parsare Json
extensibilitate prin plug-in-uri
efecte și animații
Ajax
utilitare(de exemplu un utilitar de detectare a unor anumite caracteristici)
3.7 SQLite
SQLite este o mică bibliotecă C care implementează un motor de baze de date SQL încapsulat,
oferă posibilitatea de a-l introduce în diverse sisteme și necesită zero-configurare.SQLite este un motor
de baze de date SQL încorporat. Spre deosebire de alte baze de date SQL, SQLite nu are procese server
separate.
Caracteristici SQLite:
Tranzacțiile sunt atomice, consistente, izolate și durabile (ACID)
Zero-configurare – nici o setare sau administrare necesară.
Implementează o mare parte a SQL92
O bază de date întreagă este stocată într-un singur fișier de pe HDD.
Fișierele bază de date pot fi liber partajate între mașini cu ordine diferită de octeți.
Suportă baze de date de până la 2 terraocteți (2 ^ 41 octeți) în mărime.
Mărimea șirurilor și BLOB-urile sunt limitate doar de memoria disponibilă.
Cod de bază mic: mai puțin de 250KiO configurat complet sau mai puțin de 150KiO cu caracteristici
opționale omise.
Mai rapid decât baze de date client/server cunoscute pentru majoritatea operațiilor obișnuite.
API simplu, ușor de folosit.
Încapsulat: nu are dependențe externe.
Exemplu de SQLite în mediul de dezvoltare C/C++
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if(argc != 3){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if(rc != SQLITE_OK){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
3.8 Laravel
Laravel a fost creat de Taylor Otewll pentru a suplini deficiențele CodeIgniter, deficiențe cum ar
fi suport integrat pentru autorizarea/autentificarea utilizatorilor. Prima versiune a apărut la data de 9
iunie 2011 sub denumirea de Laravel 1 și includea suport pentru loalizare, rutare și autentificare.Ultima
versiune existentă este 5.1 și a apăut la iunie 2015 fiind prima versiune LTS (long-term-support) ce
urmează să fie îmbunătățită pe parcursul următorilor ani. Laravel este un framework OpenSource
destinat pentru dezvoltarea aplicațiilor web după modelul architectural MVC. Începând cu luna martie
2015, Laravel este unul dintre cele mai populare framework-uri de PHP.GitHug găzduiește codul sursă,
iar licența asupa sa este dețiută de MIT.
Laravel 2 a fost lansat în septembrie 2011,aducând diverse îmbunătățiri din partea autorului și a
comunității. Principalele caracteristici,adăugate, a fost includerea de suport pentru controllers care au
transformat Laravel 2 într-un framework MVC, și introducerea template-tului Blade.
Blade este simplu, dar totodată un puternic template engine furnizat cu laravel. Două beneficii ale
utilizării Blade sunt moștenirea si secțiunea.

<!– Stored in resources/views/layouts/app.blade.php →
<html>
<head>
<title>App Name – @yield('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
Laravel 3 a fost lansat în februarie 2012, cu o serie de caracteristici noi, inclusiv interfața în linie
de comandă (CLI) numit Artisan. Artisan oferă o serie de comenzi utile,ce pot fi folosite în timpul creări
aplicației.Laravel 4, denumit Illuminate, a fost publicat în mai 2013. Acesta a fost realizat ca o rescriere
completă a framework-ului Laravel, constând în migrarea layout-ului în pachete distincte, repartizate
prin Composer.Laravel 5 a apărut în februarie 2015 și a inclus următoarele
pachete:Scheduler,Flysystem,Exlir și Socialite.Ultima versiune de Laravel este 5.4
3.9 PhpStorm

JetBrains PhpStorm este un IDE pentru PHP construit pe platforma IntelliJ IDEA.PhpStorm este
un editor pentru PHP, HTML, JavaScript.Suportă versiunile de Php începând cu 5.3 până la 7.0..Are
autocomplete pentru codul de PHP și de HTML cât și un editor cu drepturi depline SQL care oferă
posibilitatea editării rezultatelro interogării.PhpStorm este construit pe platforma ItelliJ IDEA , scrisă în
Java . Utilizatorii pot extinde IDE-ul prin instalarea de plugin-uri create pentru platforma ItelliJ sau pot
scrie propriile plugin-uri .Platforma conține toate caracteristicile incluse în WebStorm ce asigură suport
pentru PHP și baze de date.WebStorm este livrat cu Java preinstalat, iar plug-inurile cum ar fi Node.js se
pot downloada gratuit .
Conține un debugger ușor de configurat (Zed Debugger).Acesta oferă un raport agregat, iar
developer-ul poate sări din statisticile de execuție direct în funcția PHP. PhpStorm este un IDE open-
source
3.10 AJAX
Ajax ( prescurtarea de la Asynchronous JavaScript și XML) este un set de tehnici de dezvoltare
web, folosind mai multe tehnologii web pe partea de client pentru a crea aplicații asincrone.Cu Ajax,

aplicatii web pot trimite/prelua date asincron (în fundal) de la un server fără a interfera cu afișajul și
comportamentul paginii existente.Ajax permite paginii web să schimbe conținutul, dinamic, fără ca
întreaga pagină să fie reîncărcată.La începutul anilor 1990, cele mai multe pagini erau create în HTML
. Fiecare acțiune a utilizatorului necesita ca o întreagă pagină să fie încărcată de către server. Acest
proces a fost ineficient, tot conținutul paginii dispărea, apoi era încărcat. Termenul „Ajax“ a apărut pe
data de 18 februarie 2005 într-un articol intitulat "Ajax: A New Approach to Web Applications“ publicat
de către Jesse James Garrett .
send-ajax-data.php:
<?php
// This is the server-side script.
// Set the content type.
header('Content-Type: text/plain');
// Send the data back.
echo "This is the returned text.";
?>
(model conventional vs model Ajax )

6. Interfața cu utilizatorul
6.1 Pagina principală
Prin lansarea aplicației vom redirecționați către pagina principală a aplicației web,fisierul
predefinit fiind index.php .Aceasta are un design prietenos ,simplist și destul de intuitiv.Headerul coține
Url-ul aplicației,numele acesteia poziționate în partea stângă a ferestrei,în partea dreaptă fiind plasate
butoanele Adaugă anunț și Contul meu.
<header id="header">
<div class="container">
<div class="row header-row">
<div class="col-lg-2 col-md-2 col-sm-12 col-xs-12">
<div class="cs-logo">
<div class="cs-media">
<!–<figure><a href="index.html"><img src="theme/images/cs-logo.png" alt=""
/></a></figure>–>
<a href="/"><h2 style="color: white!important;"> CarExperts.ro</h2></a>
</div>
</div>
</div>
<div class="col-lg-10 col-md-10 col-sm-12 col-xs-12">
<div class="cs-main-nav pull-right">
<nav class="main-navigation hidden-sm hidden-xs">
<ul>
<li class="cs-user-option">
<div class="cs-login">
<a class="cs-bgcolor btn-form" href="/login"><i class="icon-
account_box"></i> Contul meu</a>
<a class="cs-bgcolor btn-form" href="/adauga"><i class="icon-
plus"></i>Adauga anunt</a>
</div>
</li>
</ul>
</nav>
<div class="cs-user-option hidden-lg visible-sm visible-xs">
<div class="cs-login">
<a class="cs-bgcolor btn-form" href="/login"><i class="icon-
account_box"></i>Contul meu</a>
<a class="cs-bgcolor btn-form" href="/adauga"><i class="icon-plus"></i>Adauga
anunt</a>
</div>
</div>
</div>

</div>
</div>
</div>
</header>
În centrul paginii se află butonul Caută,având rolul de căutare avansată în aplicație,aici aflându-
se ofertele publicate pe site.
<div class="main-search">
<form>
<div class="col-lg-1 col-md-1 col-sm-3 col-xs-12">
<div class="search-btn">
<input type="button" value="submit" class="cs-bgcolor">
<label><a href="/cauta">CAUTA</a></label>
</div>
</div>
</form>
</div>
Tot în cadrul paginii principale vor fi afișate și ultimele anunțuri.Rolul acestei secțiuni fiind de
promovare,gratuită,pentru vizitatorii noi ai aplicației.
<div class="cs-auto-listing cs-auto-box">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="cs-element-title">
<h2>Ultimele masini adaugate</h2>
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<ul class="cs-auto-box-slider row">
@foreach($anunturi as $anunt)
<li class="col-lg-4 col-md-4 col-sm-4 col-xs-12">
<div class="cs-media" style="height: 200px; overflow: hidden;">
<figure> <a href="/anunturi/{{ $anunt->id }}/view"> <img
src="{{ $anunt->files[0]->path }}" alt=""/> </a>
<figcaption> </figcaption>
</figure>

<div class="caption-text"> <a href="/anunturi/{{ $anunt->id }}/view">
<h2> {{ $anunt->nume." ".$anunt->model." – ".$anunt->an }}
</h2>
</a> </div>
</div>
<div class="auto-text cs-bgcolor"> <span>{{ $anunt->pret."
EURO" }}</span><a href="#" class="cs-button pull-right"><i class="icon-arrow_forward"></i></a>
</div>
</li>
@endforeach
</ul>
</div>

6.2 Pagina Creează Cont
Pagina Creează cont,este strict legată de pagina principală,oferind utilizatorului opțiunea de a-și
crea un cont pe platformă ,pentru postarea unui anunț.Se poate accesa în două modalități,fie din meniul
Contul meu,fie din meniul Adaugă anunț.Pentru creea unui nou cont sunt necesare puține informații,dar
esențiale, pentru ca noul membru al platformei să poată fi contactat de către eventualii cumpărători.
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="cs-section-title" style="margin-bottom:20px;">
<h3 style="text-align:left;">INREGISTREAZA-TE!</h3>
</div>
</div>
Câmpurile ce vor fi completate sunt următoarele:
Nume si prenume: utilizatorul își va introduce numele si prenumele
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<label>Nume si prenume</label>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="text" name="name" placeholder="Nume" required/>

</div>
</div>
Numărul de telefon:se adaugă numărul de telefon
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<label>Numar de telefon</label>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="text" name="telephone" placeholder="Telefon" required/>
</div>
</div>
Adresa de email:în aceasta casuță utilizatorul va completă adresa de email
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<label>Email</label>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="email" name="email" placeholder="Email" required/>
</div>
</div>
Parola:în această căsuță se va introducere parola
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<label>Parola</label>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="password" name="password" placeholder="Parola" required/>
</div>

Modul de funcționare al aplicației pentru procesul de înregistrare.
Procesul de înregistrare este pornit atunci când un nou vizitator dorește să posteze un anunț pe
site,fiind redirecționat către meniul de înregistrare.Va completa câmpurile
obligatorii,nume,prenume,numărul de telefon,email-ul,adresa și parola. Va apasa butonul Register,iar
sistemul de calcul va verifica dacă email-ul este nou introdus în baza de date sau există deja.Dacă email-
ul este deja existentat utilizatorul este trimis la pagina de înregistrare pentru a introduce un email nou,în
caz contrar acesta este redirecționat către pagina personală.
6.3 Pagina de logare
Utilizatorul se va autentifica în aplicație,pentru a posta ,edita sau șterge anunțuri.Aplicația se va
comporta asemănător ca și în cazul procesului de înregistrare. Acest proces,procesul de logare,se va
porni când user-ul va dori să efectueze anumite posteze un anunț(editeze sau șteargă).Utilizatorul,deja
existent în baza de date,va introduce datele personale furnizate pe parcursul procesului de
înregistrare.După ce a completat câmpurile cu adresa de email și parola,va apasa butonul Login,iar
sistemul de calcul verifică dacă datele introduse la logare se potrivesc cu email-ul și parola utilizate în
cadrul procesului de înregistrare.Dacă datele corespund atunci utilizatorul se va Loga și va fi trimis către
paginala personală.
<div class="row">
<form method="post" action="/user/login">
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<label>Email</label>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="text" name="email" placeholder="Email" />
</div>
</div>
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<label>Parola *</label>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="password" name="password" placeholder="Parola" />
</div>
</div>
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="cs-btn-submit">
<input type="submit" value="Login">
</div>
<a href="/register" class="cs-forgot-password"><i class="cs-color icon-help-with-
circle"></i>Nu ai cont? Inregistreaza-te!</a>
</div>
</div>
</form>

</div>

6.4 Pagina Contul meu
În această pagină,utilizatorul poate adăuga,edita sau șterge anunțuri.Aceste operații se efectuează
prin simpla apasare a butoanelor corespunzătoare acțiunii pe care dorim sa o efectuăm.Prin simpla
apăsare a butonului Editează,user-ul este redirecționat către pagina EDITEAZA VEHICUL,de unde
poate administra informații despre vehicul.Informațiile ce pot fi găsite la această pagină sunt
despre:marca,modelul,prețul,anul fabricării,tipul de motorizare,diverse opțiuni tehnice și accesorii ale
automobilului.În timpul desfășurării procesului,asupra bazei de date se produc operații de
adăugare,modificare sau ștergere de date.Din cadrul acestui meniu se poate accesa și opțiunea de
ștergere de anunțuri.
<div class="cs-user-section-title">
<h4>EDITEAZA VEHICULUL</h4>
</div>
</div>
<form class="user-post-vehicles" action="/anunturi/{{ $anunt->id }}/update" method="post">
<div class="cs-field-holder">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<h6>Informatii</h6>
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="cs-seprator"></div>
</div>
<div class="cs-field-holder">
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Marca vehiculului</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<input type="text" name="nume" value="{{ $anunt->nume }}" disabled>
</div>
</div>

</div>
<div class="cs-field-holder">
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Model</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<input type="text" name="model" value="{{ $anunt->model }}" disabled>
</div>
</div>
</div>
<div class="cs-field-holder">
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Pret</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<input type="text" name="pret" value="{{ $anunt->pret }}"required>
</div>
</div>
</div>
<div class="cs-field-holder">
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Anul modelulului</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<input type="text" name="an" value="{{ $anunt->an }}"required>
</div>
</div>
</div>
<div class="cs-field-holder">
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Combustibil</label>
</div>
Există implentat și Option Box pentru unele caracteristici ale autovehiculului:tipul de
motorizare,capacitatea cilindrică a motorului,transmisia,climatizarea și tipul interiorului.
<div class="cs-field">
<select tabindex="1" name="combustibil" required>
<option value="Benzina" <?php if($anunt->combustibil == 'Benzina') echo 'selected' ?>
>Benzina</option>
<option value="Diesel" <?php if($anunt->combustibil == 'Diesel') echo 'selected' ?
>>Diesel</option>
<option value="Hibrid" <?php if($anunt->combustibil == 'Hibrid') echo 'selected' ?
>>Hibrid</option>

<option value="Electric" <?php if($anunt->combustibil == 'Electric') echo 'selected' ?
>>Electric</option>
<option value="GPL" <?php if($anunt->combustibil == 'GPL') echo 'selected' ?>>GPL</option>
</select>
</div>

6.5 Pagina adaugă anunț
Această pagină este exclusivă userilor logați în aplicație fiind strict legată de pagina Contul meu.Este
alcătuită din două părți,prima parte incluzând date generale ale autoturismului.Există o listă predefinită,
care conține mărci de automobile, (ex. Dacia,BMW) de unde utilizatorul va selecta marca dorită.Apoi va
completa anul fabricației,prețul pe care dorește să-l obțină,existând și un check-box dacă dorește ca
acesta să fie negociabil sau nu.
<div class="cs-checkbox">
<input id="check15" type="checkbox" name="pret_negociabil" value="yes">
<label for="check15">Pret Negociabil</label>
</div>
Utilizatorul mai poate adăuga o mica descriere a vechiculului și poate selecta în funcție de marca aleasă
dintr-o listă predefinită tipul modelului cât și tipul de motorizare(Ex Diesel).

În partea a doua vom avea date particulare pentru un autovehicul.Există opțiuni pentru anumite
caracteristici ale vehicului care se vor fi alese dintr-un option box.Aceste opțiuni sunt urmatoarele:
-capacitatea minimă a motorului (se va introduce capacitatea cilindrică minimă)
<div class="cs-field">
<select tabindex="1" name="capacitate_motor_minima" required>
<option value="1000">1000</option>
<option value="2000">2000</option>
<option value="3000">3000</option>
<option value="4000">4000</option>
<option value="5000">5000</option>
<option value="6000">6000</option>
<option value="7000">7000</option>
<option value="8000">8000</option>
<option value="9000">9000</option>
</select>
</div>
-capacitatea maximă a motorului(user-ul va alege capacitatea cilindrică a motorului maximă)
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<select tabindex="1" name="capacitate_motor_maxima" required>
<option value="1000">1000</option>
<option value="2000">2000</option>
<option value="3000">3000</option>
<option value="4000">4000</option>
<option value="5000">5000</option>
<option value="6000">6000</option>
<option value="7000">7000</option>
<option value="8000">8000</option>
<option value="9000">9000</option>
</select>
</div>
</div>

-transmisie(există trei variante:manuală,automată și semiautomată)
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Transmisie</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<select tabindex="1" name="transmisie" required>
<option value="Automata">Automata</option>
<option value="Semiautomata">Semiautomata</option>
<option value="Manuala">Manuala</option>
</select>
</div>
-climatizare
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Climatizare</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<select tabindex="1" name="climatizare" required>
<option value="Manuala">Manuala</option>
<option value="Semiautomata">Semiautomata</option>
<option value="Automata">Automata</option>
</select>
</div>
-interior(se va alege tipul tapițeriei,având de ales dintre:piele,parțial piele sau stofă)

<div class="cs-field-holder">
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<label>Interior</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12">
<div class="cs-field">
<select tabindex="1" name="interior" required>
<option value="Manual">Piele</option>
<option value="Semiautomat">Partial piele</option>
<option value="Automat">Stofa</option>
</select>
</div>
</div>
</div>
Pentru opțiunile adiționale există un checkbox care conține:ABS,computer board,scaune încălzite etc.
Pentru a efectua procesul de publicare al unui anunț,utilizatorul accesează web site-ul ,introduce datele
de logare,adresa de email și parola aferentă.După ce apasă butonul de logare(Login) selectează opțiunea

Similar Posts