Aplica ție pentru gestionarea unui magazin de piese auto Coordonator Absolvent Conf. d r. ing. Mihnea Moisescu Milescu Andreea-Camelia București,… [620540]

Universitatea POLITEHNICA Bucure ști
Facultatea de Automatică ș i Calculatoare
Departamentul de Automatică și Ingineria Sistemelor

LUCRARE DE LICEN ȚĂ

Aplica ție pentru gestionarea unui magazin de piese
auto

Coordonator Absolvent: [anonimizat]. d r. ing. Mihnea Moisescu Milescu Andreea-Camelia

București, 2020

2
CUPRINS

CAP I: OBIECTIVELE LUCRĂRII
1.1 Introducere ………………………………………………………………… .…..3
1.2 Problema ……………………………………………………………………… ..3
1.3 Obiective ……………………………………………………………………… ..4

CAP II: STUDIUL APLICA ȚIILOR SIMILARE
2.1 Avantaje și dezavantaje ale comenzilor online
2.2Comenzile plasate online vs comenzile tradi ționale
2.3 Aspecte financiare ale comenzilor online

CAP III: STUDIUL TEHNOLOGIILOR DIN DOMENIU
3.1 Tehnologii folosite
3.2 Java
3.3 NetBeans
3.4 Android
3.5 MySQL
3.6 Workbench MySQL

CAP I V: STUDIU DE CAZ
4.1Utilizarea aplicației Android
4.2Diagrama bazei de da te
4.3 Structura aplicației Java

CAP V: CONCLUZII, CONTRIBU ȚII ȘI DEZVOLTĂ RI ULTERIOARE
5.1 Concluzii
5.2 Contribu ții
5.3 Dezvol tări ulterioare
REFERINȚE BIBLIOGRAFICE

3 CAPITOLUL I
1.1 Introducere

Tema proiectului meu este denumită “Aplicaț ie pentru gestionarea unui magazin de
piese auto ” și este rezultatul curiozității mele în ceea ce privește acest domeniu. Motivul
alegerii acestei teme derivă din dorința de documentare în legatură cu acest subiect, fiind
unul extrem de important î n evoluția domeniului auto, deoarece faciliteaz ă considerabil
munca clientului.

1.2Problema

Până acum, posesorii de vehicule, când aveau nevoie de piese, consumabile sau
accesorii auto, aveau la dispozi ție 3 variante. Una era să ducă mașina direct la service și să
se ocupe de piese cei d e acolo, iar la final să achite factura de piese plus manopera. A doua
variantă era să te duci într-un magazin fizic de pies e auto și să faci comandă. Iar a treia
variantă era să comanzi piese online de la un magazin cu produse auto.

Din p ăcate, cea mai c omodă variantă, cea cu achiziț ionatul de piese auto direct de
la service, este cea mai costisitoare. Atelierele mecanice își pun adaos mare și piesele ajung
să fie chiar și cu 50 -75% mai scumpe decâ t prețul lor normal.

A doua variantă, de a merge într -un magazin fizic de piese, este cea mai
anevoioas ă. Pentru că trebuie să faci un drum pentru comandă și alt ul pentru ridicat
produse. În plus, primești un preț pe care nu ai cu ce să -l compari, iar acesta poate fi destul
de mare.

După o scurtă analiză, cea mai folosită metodă de a comanda piese auto din ultimii
ani este comanda online. Avantajele sunt de amb ele părți, atât pentru cl ientu l ce efectuează
comanda , cât și pentru magazinul online ce primește comanda .

4 1.1 Obiective

Am vrut s ă revolu ționez felul în care milioane le de șoferi din România cumpără
piese auto și am realizat aplicația pentru Android și Java, în care, la un singur clic poți avea
piesa dorită.

Aplicațiile diferă de celelalte aflate pe piață prin faptul că sunt foarte bine
optimizate, cu un desing intuiti v și foarte bine puse la punct.

Când spun foarte bine organizată , mă refer la faptul că după ce îț i faci cont trebuie
să îți alegi mașina pentru care dorești piesele, după ce ai selectat autoturismul, acesta
rămâne atașat î n cont. Astfel, orice piese vei c ăuta de atunci, va fi exclusiv pentru
autoturismul tău.

CAPITOLUL II
1.1 Avantaje si dezavantaje ale comenzilor online

Datorit ă programului tot mai încărcat al fiecăruia dintre noi, com anda online a
pieselor auto r eprezintă cea mai bună soluție pentru a economisi timp prețios. În acelasi
timp, accesul la internet este un factor care contribuie extrem de mult la comandarea
online a pieselor.

Avantajele sunt de ambele părți, atât pentru cl ientu l ce efect uează comanda, cât și
pentru magazinu l online ce primește com anda.

Avantaje pentru comanda online

Primul avantaj și cel mai evident ar fi dorința cl ientului de a economisi timp. În plus,
față de avantajul clientului, magazinul online are posibil itatea de a lua mai multe
comenzi într-un tim p cât mai scurt și cu personal cât mai puțin . Deci putem spune aici
că sunt reduse o serie de costuri cu personalu l.

Un al d oilea avantaj, și poat e unul dintre cele mai importante este varietatea
pieselor, avanta j ce este de data aceasta de partea clientu lui în principal. Numărul mare

5 de piese dă l ibertatea clientului de a alege ceea ce e necesar. Cu ajutorul unui telefon
inteligent puteți comanda online cu ușurință fără a simți presiunea unui mecanic care
așteapt ă lângă dumneavoastră cu foaia și creionul pentru a vă lua coma nda.

Alte avantaje sunt confortul si rapiditatea. Prin atingerea ecranului telefonului
mobil putem co manda în câteva minute, din comfortul propriei locuințe, de la birou ,
din metrou, de oriunde vă aflați dumneavoastră în momentul res pectiv.

Dezavantajul pentru comanda online a meniului

Un dezavantaj existent, dar de partea proprietarului servic a e-ului este c aplicația să
nu func ționeze din lipsa conexiunii la rețeaua de internet și atunci co menzil e nu pot fi
vizualizate. De aceea e ste recomandat legarea la o rețea de interne t puternică și cât mai
stabilă.

1.2 Comenzile plasate online vs comenzile trad iționale

Comerțul ele ctronic pe Internet există de ceva timp, însă acum, cunoaște un av ânt
incredibil, datorită dezvoltării tehnologiei și simultan cu aceasta, deschiderea tuturor
persoanel or către nou. O serie de avant aje însoțesc majoritatea produselo r comandate
online, și nu vorbim aici despre multitudinea magazinelor virtuale, comerțul d e oric e
fel, ci despre comanda online a piese lor. Termenul de comandă online tradiționala se
referă la comanda la domiciuliu.

Inov ația în ace st domeniu, o reprezintă noua formă a comenzilor online.

Cu ajutorul Internetului comenzile online au devenit mai simplu de realizat si au
luat locul come nzilor realizate prin telefon, pentru a rezerva o piesă auto sau a
comanda la domiciliu.

6 CAPITOLUL III
1.1 Tehnologii folosite

În realizarea aplicațiilor am folosit mai multe limbaje de pr ogramare precum: Java,
Android, PHP (pentru preluarea datelor din baza de date), MySQL (pentru stocarea datelor
în baza de date).

În continuare voi prezenta câteva detalii cu privire la fiecare limbaj de programare.

Am ales să construiesc aplicaț iile folosind limbajul Java deoarece este un limbaj
simplu, eliminând supraîncarcărea operat orilor și moștenirea multipl ă, evitând scrierea
unui cod confuz. De asemenea, este un limbaj de programare foarte sigur, verificând
dinam ic codul pentru detectarea secvenț elor periculoase, și nu în ultimul rân d datorită
robusteții, ușurinței și performanței ridicate.

Limbajul de programare Java este flexibi l pentru că el este pretabil pentru execuție
atât la nivelul clientului cât ș i la nivelul serverului. În cea mai mare parte, Java este utilizat
pentru dezvo ltarea aplicațiilor web, dar se pot cre ea de la simple aplicații pent ru mobil
până la program e destinate unor centre de date imense.

Aplicația mobile este realiz ată în Android Studio. Andro id reprezintă una sau mai
multe activitaț i și procesul Linux. O ac tivitate Android este un ecran al interfeței de
utilizare a aplicație i Android. În acest fel, o acti vitate Android este foarte asemănătoare cu
Windows într-o apl icație desktop. O aplicație Android poate conține una sau mai multe
activități, adică unul sau mai multe ecrane. Aplicația Android începe prin afișarea
activității principale, iar de acolo aplica ția poate face posibilă deschiderea de activități
suplimentar e.

Emulator ul Android simulează dispozitivele Android de pe computer, astfel încât
să se poată testa aplicația pe o varietate de dispozitive și niveluri de API Android fără a fi
nevoie de fiecare dispozitiv fizic.

7 Emulatorul oferă aproape toate capabilităț ile un ui dispozitiv Android adevărat. Se
pot simula apel urile telefonice primite și mesajele text, puteți specifica locația
dispozitivului, simula diferite viteze de rețea, simula rotirea și alți senzori hardware,
accesați Google Play Store și m ulte altele.

Testarea aplicației pe emulator este, în unele moduri, mai rapidă și mai ușoară decât
a face acest lucru pe un dispozitiv fizic. De exemplu, se poate transfera date mai rapid în
emulator decât pe un dispozitiv conectat prin USB.

PHP-ul l-am folosit pentru a prelua datele din baza de date. Una dintre cele ma i
putern ice și semnificative facilități ale PHP -ului este susținer ea unui larg domeniu de baze
de date . Scrierea unei pagini web ce ac cesează o bază de date este incredibl de simplă
utilizând una din extensiile de lucru cu baze de date (de exemplu pentru mysql ).

Browser-ul și ser verul comunică utlizând protocolul Hypertext Transport Protocol
(HTTP). TCP/IP manevrează detaliile de transport, asigu rându-se ca pachetele ajung la
destin ație corect. HTTP structurează comunicația legată de fișierele ce se primesc și cum
se interpretează ele. NetBeans este un proiect open- source, cu o bază de utilizatori foarte
mare, o comunitate în creștere și peste 100 de parteneri (în creștere) din toată lumea. Sun
Microsystems a fondat proiectul open source NetBeans în iunie 2000 și continuă să fie
principalul sponsor al proi ectului.

1.2 Java

Java reprezintă un limbaj de programare orientat -obiect, ce a fost conceput d e
James Gosling. A apărut ca urmare a eforturilor celor ce la Sun Microsystems, care pe
atunci nu era filiala Oracle, î nsă astăzi este. Acest li mbaj a fost crea t la începutul anilor
1990 si lansat abia î n anul 1995. Majoritatea aplicațiilor distribuite sunt scrise în Java, și
datorită evoluție i tehnologice este permisă ș i utilizarea acesteia și pe dispositive mobile
precum telefonul, tableta, agenda electronica e tc.

Acest li mbaj împrumută destul de mult din sintaxa de la C si C++ . Chiar dac ă se
aseamănă fo arte mult cu C-ul, este în final un limbaj diferit. Un program Java ce este scris
corect va putea fi rulat fără problem e pe orice platforma pe care este instal ată o mașina

8 virtuală Jav a (Java Virtual Machine-JVM). Nivelul acesta de portabilitate este posibil
datorită surselor Java care sunt c ompilate într-un format standard cu denumirea cod de
octeți. Acesta este intermediar între codul mașină și codul sursă.

Mediul în care se execută programele Java este Mașina Virtuală Java. Furnizorii de
JVM din acest moment sunt: Oracle, IBM, Bea, FSF. O racle furnizează 4 platforme Java:
Java Card, Java Platform Micro Edition, Java Platform Standard Edition și Java Platform
Enterprise Edition. O aplicație Windows nu se va putea niciodat ă executa pe un sistem ce
rulează sistemul de operare MacIntosh. La fe l, o aplicație Linux nu se va putea executa pe
un sistem pe care rulează sistemul de operare Windows . Acum se în țelege mai ușor de ce
un program compilat pe o platformă nu va putea rula pe o altă platfo rmă: Ordonarea
octeților little endian sau big endian , setul de instrucțiuni mașină, etc.

Java rezolvă problema independenței de platformă hardware sau soft prin folosirea
byte codurilor. Altfel spus, compilatorul Java, spre deosebire de compilatorul C, n u
produce cod ex ecutabil nativ pentru o anumită platf ormă. Pe de altă parte, compilatorul
Java produce un format special ce poartă de numirea de byte cod Ja va.

Limbajul Jav a este orientat obiect, independent de platformă, datorită eliminării
oricărei cons trucții dependen te de arhitectura hard. Acest limbaj este proi ectat să fie și
portabil, atâ t sub formă de cod sursă cât și sub formă de cod bin ar, compilat, of eră
siguranță și securitate. Pointerii expliciți sunt eliminați, limbajul este puternic tipizat,
casturile sunt l imitate și verificate în mod strict. Limbajul Java este proiectat î n așa mod
încât să poată opera în medii distribuite, ceea se î nseamnă o sigu ranță maximă.

Un aspect foarte important al limbajului Java este performanța. Viteza de execuție
ridicată este asigurată de limbajul mai sus menționa t. Aceasta este comparabi lă cu cea
oferită de C++. Limbajul Java oferă support pentru apli cații multifir, ceea ce face po sibilă
desfășurarea mai multor acțiuni în același timp în cadrul unui program. Rezultatu l este un
grad mai mare de interactivitate cu utilizatorul.

Un cod surs ă Java este creat dintr- un număr de piese numite unități lexicale ,
neasemănătoare . Pot fi compara ți cu niște atomi, ce nu pot fi sparți în atomi mai mici fără

9 ca aceștia să își piardă din înțele sul in ițial. Setul de caractere Unico de este folosit în timpul
compi lării aplicațiilor, dar și în timpul rulării acestora.

1.3 NetBeans

NetBeans este o plat formă de dezvolt are software scrisă în Java. Platforma
NetBeans permite aplicațiilor să fie dezvoltat e dintr-un set de componente software
modulare numite mod ule. Aplicațiile bazate pe platforma NetBeans, inclusive IDE, pot fi
extinse de c ătre dezvoltatori terțe părți.

NetBeans este cross-platfor m si rulează pe Microsoft Windows, Mac OS X, Linux,
Solaris , și alte platform e care suport ă un J VM compatibil.

Platforma NetBeans este un cadru pentru simplificarea dezvolta rea aplicaț iilor
Swing desktop Java. Col ecția NetBeans IDE pentru Java SE conț ine ceea ce este necesar
pentru a începe dezvoltarea de plugin- uri NetBeans și aplicații baz ate pe platform
NetBeans și în plus nu este necesa r un SDK suplimentar.

Platforma oferă servicii reutilizabile comune pentru aplicații desktop, care permite
dezvoltatorilor s ă se concentrez e pe logica specifică apli cației lor. Printre caracteristicile
platformei sunt: gestionarea interfeței cu utilizatorul (de exemplu, meniuri și bare de
instrumente), gestionarea setărilor de ut ilizator, management de stocare (de economisire și
de încărcare orice fel de date), administrarea ferestrelor, Framework Asiste nt (acceptă
dialoguri pas cu pas), Biblioteca vizuală NetBeans, instrumente de dezvoltare integrate.

NetBeans IDE este un mediu de dezvoltare integrat open-source. NetBeans IDE
spriji nă dezvoltarea tuturor tipurilor de aplicații Java (Java SE (inclusiv JavaFX), Java ME,
web, EJB și aplicațiile mobile) din cutie. Printre alte carac teristici sunt un sistem bazat
Ant-proiect, sprijin Maven, refactorings, controlul versiunilor (CVS de sprijin, Subversion,
Git, Mercurial și ClearCase).

10 1.4 Android

Android este o platform ă software și un sistem de operare bazat pe nucleul Linux,
destinat dispozitivelor și te lefoanelor mobile. Compania Google a dezvoltat ini țial acest
sistem, iar apoi, Open Handset A lliance a continuat dezvoltarea acestuia.

Platforma Android a fost lansat ă la d ata de 5 noiembrie 2007 si a fost anunțată o
data cu fondarea Open Handset Alliance, ce însumează 4 8 de companii hardware, software
dar și telecomunicații. Codul Android a fost lansat de către Google sub licența A pache, o
licență free- software și open-sourc e.

Primul telefon ce a rulat sistemul Android este HTC Dream, telefon lansat la data
de 30 octombrie 2008 în SUA. Realizarea sa a fost posibi lă eforturilo r celor de la Open
Handset Alliance.

Primele afirmați i în ceea ce pri vește dezvoltarea aplicațiilor pentru plat forma
Android au fost diverse. Problemele citate includeau bug- uri, lipsa documentației,
infrastructura de dezvoltare era inadecvat ă, și lipsea un sistem de gestionare a problemelor
public. Despre acesta din urmă, Google anunțase că va lansa unul la 18 ianuarie 2008.

SDK-ul Andro id reprezintă o colecție de instrumente de dezvoltare pentru
dezvoltarea aplica țiilor Android.

În momentul în care Google lansează o nouă versiune de Android, este lansat și un
SDK corespunzător. Dezvoltatorii, pentru a scrie programe cu cele mai noi func ții, trebuie
să fi descarc at și instal at SDK- ul fiecărei vers iuni pentru telefonul respectiv.

Sisteme le de operare Windows, Linux și Mac OS X sunt incluse in platformele de
dezvoltare compatibile cu SDK.

Android nu utilizează st andarde stabilite Java , cum ar fi Java SE și ME. Aceasta
împiedică compatibilitatea între aplicațiile Java scrise pentru platformele respective, și cele
scrise pentru platforma Android. Android n u asigură pe biblioteci le de clase complete și
Api-urile din pachetele Java SE sau ME, ci refolosește sintaxa limbajului Java.

11
Android Studio este Mediul de Dezvoltare Integrat (IDE) oficial pentru dezvoltarea
platformei Android. Lansarea acestuia a avut loc pe data de 16 mai, 2013, la conf erința
Google I/O. Android Studio este disponibil gratuit sub licența Apache 2.0 ș i a avut un
preview timpuriu începând cu versiunea 0.1 în mai, apoi a intrat în faza beta începând cu
versiunea 0.8 car e a fost lansată în iunie, 2014. Prima versiune stab ilă a fost lansată în
decembrie 2014, pornind cu versiunea 1.0.

Dezvoltarea de apli cații Android este bazată pe Intel liJ IDEA. Android Studio se
plasează în topul aplicațiilor lansate de IntelliJ în ceea ce privește edi torul de cod puternic
si instrument ele de dezvoltare. Acest me diu oferă numeroase caracteristici care sporesc
productivitatea a tunci când se construiesc aplicații Andr oid, cum ar fi: un sistem de creare
flexibil bazat p e Gradle, un emulator rapid și bogat în caracteristici, un mediu unifica t în
care se pot dezvolta a plicații pentru toate dispozitivele Android, executare ins tantane e,
template- uri de cod și integrarea Git Hub în scopul construirii de caracteristici comune
pentru aplicații, și import de sample code, instrumente extinse de testare și frameworks, C
++ și s uport NDK, suport încorporat pentru Google cloud.

Sistemul Androi d este o stivă de software complet, car e este d e obicei împărțită în
cele patru domenii care s unt aplicația în sine, framework -ul aplicației, librariile si timpul
de rulare, linux kernel. La nivel de aplicație, proiectul Open Source Android conține mai
multe aplicații standard, cum ar fi browser-ul, camera, galeria, muzica, telefonul și multe
altele. Cadrul de aplicare, un API care permite interacțiuni de nivel înalt cu sistemul
Android din a plicațiil e Android. Librăriile sunt bibliotecile pentru mul te func ții comune,
cum ar fi redarea grafică, de stocare a datelor, navigarea pe web, etc. , a cadrului de
aplicare și runtime -ul Dalvik.

Linux kernel este strat de comunicar e pentru hardware-ul de bază.

Nucleul Linux, bibliotecile și runtime -ul sunt încapsulate de cadrul de aplicare,
adica de framework. Dezvoltatorii aplicațiilor Android lucrează de obicei cu cele doua
straturi în partea de sus pentru a crea noi aplic ații Android.

12 Aplicațiil e Android sunt scrise, în primul rând, în limbajul de programare Java. În
timpul dezvoltării, dezvoltatorul cre ează fișierele de configurare specifice Android și scrie
logica aplicației în limbaj ul de programare Java.

Uneltele de dezvoltare Android conver tesc aceste fișiere de aplicații, în mod
transparent pentru utilizator, într- o aplicație Android. Atunci când dezvoltatorii
declanșează implementarea în IDE lor, întreaga aplicație Android este compilată,
împachetată, instalată și pornită.

Android Softwa re Development Kit(SDK Android) conține instrumentele necesare
pentru a crea, compila și împacheta aplicațiile An droid. Majoritatea acestor unelte sunt
bazate pe lini e de comandă. Metoda princip ală folosită pentru a dezvolta aplica ții Androi d
este bazată pe limbaj ul de programare Java. Androidul SDK conține Android Debug
Bridge, care este un instrument ce permite conectarea la un dispozitiv Android real sau
virtual, în scopul gestionării sau depanării aplicației .

1.5 MySQL

MySQL este un sistem de gestiune a bazelor de date relaționale . O companie
suedez ă numit ă MySQL AB a creat MySQL in 1994, distribuit apoi sub Li cența Publică
Generală GNU. Este o component ă impoertantă a stivei LAMP (Linux, Apache, MySQL ,
PHP), fiind toto dată și cel mai popular SGBD open- source la ora actuală .
Limbajul SQL (Structured Query Language) este limbajul utilizat de ma joritatea
sistemelor de baze de date rela ționale pentru definirea si manipularea datelor.
SQL este limbajul standard pentru sist emele de gestiune a bazelor de date
relaționale, adoptat de Organizația Internațională de Standarde – ISO (International
Standardization Office). Sub denumirea de SQL , mai există stan dardul SQL3 care adaug ă
limbajului SQL trăsături ale modelului obiect-rela țional.
Pentru formularea conceptual ă a interogarilor în bazele de date rela ționale s-au
dezvoltat dou ă limbaje abstracte de interogare: algebra rela țional ă și calculul rela țional.

13 Limbajul SQL folose ște termenii de tabel (table), linie (row), coloan ă (column)
pentru a desemna o rela ție, un tuplu sau un atribut, deci este orientat spre reprezentarea
prin tabele a rela țiilor, care este mai simpl ă și mai intuitiv ă pentru proiectan ți și pentru
programatori.
Limbajul SQL cuprinde atât componenta de descriere a datelor rela ționale (Limbaj
de Descriere a Datelor – LDD) câ t și componenta de manipulare a datelor (Limbaj de
Manipulare a Datelor – LMD), ambele fiind absolut necesare în gestiunea ba zelor de date.
Pe lângă aceste componente principale, standardul SQL2 mai prevede și alte
componente ale limbajului:
• Controlul tranzac țiilor – con ține comenzi pentru specificarea tranz acțiilor. Unel e
implement ări adaugă comenzilor prev ăzute în standard și alte comenzi suplimentare de
control al concuren ței si refacerea datelor.
• Controlul securit ății și al protec ției datelor – conține comenzi de administrare a bazelor
de date, pentru definirea utilizatorilor și a drept urilor acestora de acces la tabele. Aceast ă
component ă este puternic dependent ă de sistemul de gestiune al bazei de date, iar pentru
sistemele performante, administrarea bazei de date este un capitol fo arte extins, care face
obiectul activit ății unei categ orii speciale de utilizatori ai bazei de date (administratori ai
bazei de date).
Limbajul SQL este un limbaj neprocedural : o instruc țiune SQL specific ă ce
informa ții îi trebuie s ă fie setate sau ob ținute, dar nu specif ică modul (procedura) în care
se op erează. Limbajul SQL con ține numai instruc țiuni de definire și manipulare a datelor
și nu con ține instr ucțiuni de control al fluxului execu ției (instructiuni ca for, while, if,
etc).
De aceea, pentru realizarea aplica țiilor de baze de date, s- a dezvo ltat o multitudine
de tehnologii, limbaje, biblioteci și interfe țe de programare care integreaz ă, printr-
o tehnic ă oarecare, instruc țiunile SQL de acces la date. În continuare se vor prezenta cele
mai importante instruc țiuni de descriere și manipulare a d atelor definite în standardul
SQL.

14 Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL s e
pot co nstrui aplicații în orice limbaj major. Există multe scheme API d isponibile pentru
MySQL ce permit scrierea aplicațiilor în numero ase limba je de programare pentr u
accesarea bazelor de date MySQL, cum ar fi: C, C++, C#, Java, Perl, PHP, Py thon,
FreeBasic, e tc., fiecare dintre acestea folosind un tip specific API. O interfață de tip ODBC
denumită MyODBC permite altor limbaje de program are ce fo losesc această interf ață, să
interacționez e cu bazele de date MySQL, cum ar fi ASP sau Visual Basic. În sprijinul
acestor limbaje de programare, unele companii produc componente de tip COM/COM+
sau .NET (pentru Windows) prin intermediul cărora resp ectivele limbaje să poată folo si
acest SGBD mult ma i ușor decât prin interm ediul sistemului ODBC. Aceste component e
pot fi gratuite (cum ar fi exemplul MyVBQL) sau comerciale.

MySQL este componentă integrată a platformelor LAMP sau WAMP
(Linux/Windows-Apache-MySQL- PHP/Perl/Python). Popularitatea sa ca aplicație web se
dator ează și legăturii strâ nse dintre aceasta și PHP care es te adesea combinat cu MySQL și
denumit Duo-ul Dinamic.

1.6 Workbench MyS QL

MySQL Workbench este un instrument vizual de proiectare de baze de date, care
integrează dezvoltarea SQL, administrare a, proiectarea bazei de date, crearea și întreținerea
într-un singur mediu de dezvoltare integra t pentru sistemul de baze de date MySQL. Este
succesorul lui DBDesig ner 4 din fabFORCE.net, și înlocuiește pachetul anteri or de
software, MySQL GUI Tools Bundle.

Caracteristicile proeminente ale MySQL Workbench sunt: Database Connection si
Instance Management, support pentru plugin-uri personalizate, suport pentru
caracteristi cile MySql Enterprise (jurnal de audit, Firewall, și Enterprise Backup) .

15 1.3 Structura Aplic ației Android

16
CAP I V: STUDIU DE CAZ
1.1 Utilizarea aplica ției Android

Aplicația este prevazută cu un meniu de autentificare unde utilizatorul își intoduce
email- ul și p arola și intră direct în ap licație, însă numai să fi avut contul deja cr eat.

Fig 1.1Autentificare

În cazul în care utilizatorul nu are un cont deja creat, intră în meniu de înregistrare
unde sunt necesare următoarele date : nume, prenume, C NP, adresa, telefon, email, parola,
serie și numă rul cărții de identitate, iar apoi contul este creat.

În clasa “Înregistrare ” clientul se poate î nregistra în baza de date ca și persoană
fizică. Pentru înregistrarea fiecărui criteriu s -au folosit mai multe “EditText ” pentru a
prelua d atele de la tastatură și p entru a le înregistra în baza de date. Fiecare câmp pentru
înregistrare are restr icție în ceea ce privește înregistrare datelor.

17 Restricțiile sunt folosite pentru a nu depăși s au a nu a introdu ce greșit date cu
caracter personal în baza de date. În imaginea de mai jos sunt prezentate restricții le în ce ea
ce prive ște înregistrarea pentru persoa na fizică, aceleași restricții folosindu -se și pentru
înregistrarea persoanelor juridice.

În cazul în care nu am introdus niciun caracter în unul din câmpuri utilizatorul va fi
atenționat printr-un mesaj folosind codul de mai jos. Funcț ia “reques tFocus() ” este folosită
pentru a semnaliza acel câmp printr-un semn ( “!”).

Fig.1.2 Înregistrare

În imaginea de mai jos este prezentat codul pentru autentificarea la baza de date
folosind un email și o parol ă. După verifica rea ema il-ului și a parolei, utilizatorul este
avertizat cu un mesaj de tip toast dacă da tele de autentificare au fost sau nu corecte. Tot în
imaginea de mai jos s-a ob ținut și id client din baza de date, id ce va fi transferat din
fragment în fragment pentru înregistrarea id în baza de date pentru a putea verifica clientul
în urma acțiunilor sale făcute în aplicație.

18

Totodată, datele pot f i actualizate din meniul ,,Actualizare date persona le”, de unde,
foarte simplu, își pot mo difica orice tip de data dorit.

Fig1.3 Actualizare date

În momentul în care utilizatorul intră în aplicație , este întâmpinat de o pagină
numit ă “Acasă”, unde se regăsește o pre zentare generală a magazinul online de piese auto.

19
Actualizarea datelor se face folosind un script PHP în care datele sunt preluate din
edit texture și transmise în baza de date.

După introducerea datelor în baza de date, utilizatorul va primi un mesaj în care
este înștiințat că d atele personale au fost modificate.

Datele sunt criptate folosind un algoritm de criptare SHA-256 pentru o proteja
anonimitatea utilizatorului.

Fig.1.4Acasă

Pentru a căuta piesele dorite, se intră în meniul ,,Automobilul meu ”, unde se
regăsesc anumite criterii precum:
 marcă

20  model
 an

Utilizatorul trebuie să treacă prin fiecare din ac este caracteristici pentru a- și alege
ce are nevoie.

.

fig 1.5 Automobilul meu

Gama de piese auto este variată și anume utilizatorul aplicației își poate ale ge din
următoarele:
 frâne
 piese pentru mo tor
 suspensie și direcție
 electrice și lumini

21 Fiecare din acestea enumerate se divid în mai multe categorii:

Fig1.6 Motor Fig1.7 Suspensie și direcție Fig 1.8 Electirice și lumini
Aplicația are și un meniu d e „Cont act” unde se pot face recla mații, sugestii și
solicitari cu privire la orice informație neclară din partea utilizatorului.
Concu rența are, după cum spu neam, o mare infl uență în economia de piață și
aceasta este, fără îndoială , benefică în ceea ce prive ște echilibrul pieței s i eficiența acesteia.
Agenții economici sunt preocupați de sat isfacerea nevoilor de consum și de obțin erea unei
cifre a profitului cât mai mar e. Conc urența e ste cea care stimulează creativitatea agenților
economici și , totodată , favor izează raționalizarea costurilor, reprezentând un factor d e bază
în alocarea rațională a resurselor utilizate în activitatea econom ică, dar ș i realizarea
judicioasă a profiturilor rezultate.

22 În funcție de solicitarea dorită , clientul trebuie să selecte ze una din cele 3 categorii
și apo i prin apăsarea unui buton este direcționat imediat c ătre recepția service -ului.

Fig 1.9 Contact
Aplicația Android îi vi ne în ajutor utilizatorulu i cu o listă de explicații ale tuturor
martorilor ce pot apărea neașt eptat în bord.

Dacă î n trecut aut omobilele soseau cu doar câteva informații pe bord, astăz i,
producătorii încearcă să înglobeze câ t mai multe infor mații pe o suprafață de stul de m ică.

Dar lumea auto a evoluat, și, odată cu aceasta ș i panoul de bord. Martorii de bord
au rol extrem de important, întrucât aceștia anunță probleme, uzuri, erori sau defecte la
anumite sisteme ale mașinii. Număr ul martorilor de bord di feră de la model la model și de
la producător la producător.

Un alt lucru important de care trebu ie să țineț i cont este culoarea martorului de
bord. Codul culorilor este foarte important. În gene ral, un martor de culoare roși e indic ă o
potențială problemă serioasă s au o probl emă legată de siguranță. Dacă martorul de bord are

23 culoarea galbenă sau por tocalie atunci poate semnific a o reparație sau o potenț ială
înlocuire.

Martorii colorați î n albastru sau verde au doar rol de indicatori. De asemenea,
există posibilitatea ca martorul de bo rd să pâlpâie, caz în care ar trebui să apelaț i la un
dealer.

Fig 1.10 Martori bord
După ce clientul a luat decizia de a cumpăra piesele necesare , acesta la doar un
simplu clic, are produsul adăuga t în coș , iar la final î și poate p revizualiza comanda unde
mai poat e interveni cu modificări, adi că să ma i adauge s au să scadă cantitate a de produs e
dorite, sau să șteargă produsul. Toate piesele adăugate se regăsesc în meni ul “Coș” ,de unde
poate merge direct spre finalizarea comenzii.
După ce coman da este finalizată este emisă factura pe produsele selectate. A ceasta
cuprinde atât detaliile furnizoru lui cât și a clientului.

24

Fig1.11 Date client/furnizor
Toate produsele selectate sunt trecute în factură cu denumire, cantita te și preț.
Pentru a plasa comanda clientul trebuie sa apase pe butonul “Plasa ți com anda”, după ce
verifică prețul total al f acturii, iar ulterior comanda va fi preluată de un oper ator.

fig 1.12 Factură

25
1.2 Diagrama bazei de date

26 1.3 Structura aplicației Java

Limbajul de program are Java este flexibil pentru că el este pretabil pentru execuție
atât la nivelul clientu lui cât și la nivelul serverului.

Soft-ul cre at reprezintă un instr ument eficient, rentabil și ușor de utilizat în
organizarea și contro lul activi tății service-ului.

Aplicația Java este construită din 6 meniuri și anume:

A plica ția este prevăzută cu un meniu de a utentificare unde utilizatorul își introduce
email- ul și parola pent ru a putea avea acces la aplicaț ie.

Fig 2.1 Autentifica re

Înainte de a se autent ifica utilizatorul trebuie sa fie introdus de administrator cu datel e
necesare:

 Nume
 Prenume
 CNP

27  Funcț ie
 Telefon
 Salariu
 Email
 Parola

Dupa ce datele au fost introduse contul este creat, iar noul utilizator se poate autentifica
în aplic ație.

Fig 2.2 Adaug are angajat

Pentru ca aplicația să fie una eficientă , este prevăzută cu un buton de:

 Adaugă angajat -unde se poate introduce datele unui nou utilizator
 Editare angajat -unde se pot modifica datele unui utilizator
 Ștergere angajat – datele utilizatorului sunt șterse complet

Aplicația Java este gândită să ajute utilizatorul în momentul folosirii ei, de aceea am
creeat un flux și un design cât mai facil și intuit iv.

În meniul “Adăugare mașini” user-ul poate introduce o mașină nouă după:

28  Marcă
 Model

După ce au fost introduse datele mașinii , user- ul apasă pe butonul “Adăugare
mașină” , iar aceasta este introdus ă în baza de date .

Fig 2.3 Ad ăugare ma șini

Ulterior, user-ul poate introduce piese auto prin completarea unor câmpuri ce cuprind
urmatoarele info rmații :

 Denumire piesă
 Preț
 Cantitate
 Marcă
 Model
 An

Totodată , meniul este prevăzut cu buto ane de:

 Adaug ă piesă -unde se pot introduce piesele noi
 Modifică -unde pot fi editate datele introdu se inițial

29  Vizualizare piese -se pot vizualiza toate piesele existente pe stoc
 Ștergere piese -se pot șt erge toate piesele ce nu mai sunt folositoare

Fig 2.4 Ad ăugare pie se

În meniul “Comenzi ” pot fi vizualizate toate comenzile înregistrate de utilizator, cu
datele completate anterior: nume, prenume, adresa, email, telefon, data, ora, denumire,
preț, mar că.

Fig 2.5 Comenzi

30

CAPITOLUL IV

4.1 P rezentarea codului apli cației Android

În imaginea de mai jos este prezentat codul de autentificar e în care se transmit
prin php email-ul și parola c ătre baza de date pentru a primi înapoi un r ăspuns d acă datele
de autentificare sunt corecte sau nu. Dac ă datele de autentificare sunt corecte, aplica ția va
trece în noul meniu.
În caz contrar, utilizatorul va fi în științat printr -un mesaj de tip pop-up și anume un Toast
în care va fi avertizat c ă datele introduse nu sunt corecte.

Public class Background extends AsyncTask<String,String,String> {

Context ctx;
String data = "";

Background(Context context) {
this.ctx = context.getApplicationContext();
}

@Override
protected String doInBackground(String… params) {

String type = params[ 0];
String name = params[ 1];
String password = params[ 2];
int tmp;

if (type.equals( "autentificare_utilizator" )) {

try {

URL url = new
URL("http://goskynet.ddns.net/autentificare_utilizator.php" );
String urlParams = "&email=" + name + "&parola=" + password;

HttpURLConnection httpURLConnection = (HttpURLConnection)
url.openConnection();
httpURLConnection.setDoOutput( true);

OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while ((tmp = is.read()) != – 1) {
data += ( char) tmp;
}
is.close();
httpURLConnection.disconnect();

return data;

} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception:56456 " + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exception:" + e.getMessage();

31 }
}
Î n imaginea de mai jos este prezentat codul stocate a datelor unui user, în care se
folose ște PHP pentru a trimite datele colectate de la toate EditText-urile c ătre PHP si dup ă
aceea c ătre baza de date MySQL. După înregistrarea datelor în baza de da te, utilizatorul va
primi un mesaj în care este informat dac ă datele au ajuns în baza de date sau nu.

Baza de date raspunde utilizand PHP, datele sunt criptate.

else if (type.equals( "inregistrare_utilizator" )) {
try {

String nume_inregistre = params[ 1];
String prenume_inregistrare = params[ 2];
String cnp_inregistrare = params[ 3];
String telefon_inregistrare = params[ 4];
String email_inregistrare = params[ 5];
String parola_inregistrare = params[ 6];
String nr_ci_inregistrare = params[ 7];
String serie_ci_inregistrare = params[ 8];
String adresa_inregistrare = params[ 9];

URL url = new
URL("http://goskynet.ddns.net/inregistrare_utilizator.php" );
String urlParams = "nume=" + nume_inregistre + "&prenume=" +
prenume_inregistrare + "&cnp=" + cnp_inregistrare + "&telefon=" +
telefon_inregistrare + "&email=" + email_inregistrare + "&parola=" +
parola_inregistrare + "&nr_ci=" + nr_ci_inregistrare + "&serie_ci=" +
serie_ci_inregistrare + "&adresa=" + adresa_inregistrare;

HttpURLConnection httpURLConnection = (HttpURLConnection)
url.openConnection();
httpURLConnection.setDoOutput( true);

OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while ((tmp = is.read()) != – 1) {
data += ( char) tmp;
}
is.close();
httpURLConnection.disconnect();

return data;

} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception: " + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exceptionn: " + e.getMessage();
}
}
return null;
}
Codul de mai jos ne ajut ă pentru a prelua mașini din baza de date, în func ție de
denumirea ma șini se va a lege ulterior și modelul ma șinii. Preluarea datelor se face
utilizând un server PHP și o baz ă de date la distan ță pe un server. Datele preluate din baza
de date sunt folosite pentru a popula 3 spinere cu datele care sunt aduse din baza de date.

32 class Background2 extends AsyncTask<String, String, String> {
ProgressDialog progDailog ;
Context ctx;
String data = "";
String a;
List<String> lista = new ArrayList<String>();
private ProgressDialog dialog;
ArrayList<String> asd = new ArrayList<String>();

Background2(Context context) {
this.ctx = context.getApplicationContext();
}

@Override
protected String doInBackground(String… params) {

String type = params[ 0];

int tmp;

if (type.equals( "preluare_masini" )) {

try
{

URL url = new
URL("http://goskynet.ddns.net/preluare_masini.php" );
String urlParams = "";

HttpURLConnection httpURLConnection = (HttpURLConnection)
url.openConnection();
httpURLConnection.setDoOutput( true);

OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while ((tmp = is.read()) != – 1) {
data += ( char) tmp;
}
is.close();
httpURLConnection.disconnect();

return data;

} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception:56456 " + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exceptiontrewd: " + e.getMessage();
}
}

În imaginea de mai jos este prezentat codul cu preluarea denumirilor de ma șini în
funcție de marca selectat ă în imaginea de ma i sus:

Datele sunt preluate prin PHP întru-un array pentru a popula spinerul cu date aduse
din baza de date.
else if (type.equals( "preluare_model_masina" )) {
try
{

33 URL url = new URL("http://goskynet.ddns.net/preluare_Model_Masina.php" );
String codMasina = params[ 1];
String urlParams = "&marca_masina=" + codMasina;

HttpURLConnection httpURLConnection = (HttpURLConnection)
url.openConnection();
httpURLConnection.setDoOutput( true);

OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while ((tmp = is.read()) != – 1) {
data += ( char) tmp;
}
is.close();
httpURLConnection.disconnect();

return data;

} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception:56456 " + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exceptiontrewd: " + e.getMessage();
}
}

În imaginea de mai jos se preia din baza de date si codul fiec ărui model sau marca de
mașină, deoarece în func ție de marc ă sunt aduse modele de ma șini. Dup ă selectarea m ărcii
a unei m așini vor fi aduse din baza de date datele corespunzatoare pentru marca respectiva.

else if (type.equals( "preluare_cod" )) {
try {
URL url = new URL("http://goskynet.ddns.net/preluare_cod.php" );
String marca = params[ 1];
String model = params[ 2];

String urlParams = "&marca=" + marca+ "&model=" +model;

HttpURLConnection httpURLConnection = (HttpURLConnection)
url.openConnection();
httpURLConnection.setDoOutput( true);

OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while ((tmp = is.read()) != – 1) {
data += ( char) tmp;
}
is.close();
httpURLConnection.disconnect();

return data;

} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception:56456 " + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exceptiontrewd: " + e.getMessage();
}

34 }

return null;

}

În clasa „coș” de mai jos se pun piesele care au fost rezervat e ca ulterior utilizatorul
să meargă că tre clasa Factura în care se va finaliza factura.

La ștergerea fiec ărei piese, utilizatorul este întrebat printr-un mesaj de tip pop-up î n
care este întrebat dac ă dore ște sau nu s ă ștearg ă acea piesa din co șul virtual.

Dacă se dorește ș tergerea acelei piese, se va ap ăsa butonul da din pop-up care este
de tip Toast, iar piesa va fi ștearsă din co șul virtual. Pre țul se incrementeaz ă automat la
adăugarea de noi produse în co ș și, totodat ă, se șterge automat în momentul în care o piesa
sau mai multe piese sunt șterse din coș.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {

View view = inflater.inflate(R.layout. layout_cos_piese , container,
false);

lista_piese_cos = (ListView)view.findViewById(R.id. lista_piese_cos );
tvTotal =(TextView) view.findViewById(R.id. tvTotal);
finalizare_comanda =(Button) view.findViewById(R.id. finalizare_comanda );
txt_mesaj =(TextView)view.findViewById(R.id. txt_mesaj );
txt_mesaj2 =(TextView)view.findViewById(R.id. txt_mesaj2 );

adapter = new ListAdapter(getActivity(),A. pieseCosList );
lista_piese_cos .setAdapter( adapter);

id.add("1");
id.add("2");
id.add("3");
id.add("4");

String type = "date_personale_utilizator" ;
BackgroundDatePersonale backgroundDatePersonale= new
BackgroundDatePersonale(getContext());
backgroundDatePersonale.execute(type,Autentificare. email);

if(A.pieseCosList .isEmpty())
{
finalizare_comanda .setVisibility(View. INVISIBLE );
tvTotal.setVisibility(View. INVISIBLE );
txt_mesaj .setVisibility(View. VISIBLE);
txt_mesaj2 .setVisibility(View. VISIBLE);
}
else
{
finalizare_comanda .setVisibility(View. VISIBLE);
tvTotal.setVisibility(View. VISIBLE);
txt_mesaj .setVisibility(View. INVISIBLE );
txt_mesaj2 .setVisibility(View. INVISIBLE );
}

Product product = new Product();
Total = Total + (product.getCantitate() * product.getPret());

35
Toast.makeText (getActivity(),String. valueOf(Total),Toast. LENGTH_SHORT ).show();
tvTotal.setText( "PRET TOTAL: " +String. valueOf(A.pretTotal )+" RON" );

lista_piese_cos .setOnItemClickListener( new
AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int
position, long id) {

Toast. makeText (getActivity(), "denumire piesa: " +
denumire_produs , Toast.LENGTH_SHORT ).show();

CustomAlertDialog c = new CustomAlertDialog(getContext() ,
"Sunteti sigur ca doriti sa parasiti aplicatia?" ,
new CustomAlertDialog.ClickListener() {
@Override
public void onPositive() {
A. pieseCosList .remove( position );
adapter.notifyDataSetChanged();

if (A.denumire_piese .isEmpty()) {
A. cos_cantitate = "";
}
}

@Override
public void onNegativ() {

}
}, "tip1");
c.show();
}

});

finalizare_comanda .setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {

Factura fragment = null;
fragment = new Factura();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id. containerView ,
fragment).commit();

}
});

În clasa Factura, utilizatorul este întampinat de interfa ța care este încarcat ă din fișierul
layout pentru a vizualiza ceea ce a pus în co șul virtual. Aici sunt datele firmei si totodat ă
sunt și datele clientului prezentate în partea dreapt ă. Datele aferente firmei care furnizeaz ă
aceste piese sunt situate în partea stâ ngă.

36 În momentul cân d se face rezervarea de piese, se preia data și ora la momentul
respectiv pentru a fi introdus ă în baza de date împreun ă cu piesele din factur ă.
În baza de date mai in tabele rezervare este introdusa id_rezervare, id_client, data,
ora, cod_marca, cod_masina, p ret_total.
public class Factura extends android.support.v4.app.Fragment {

ListView factura;
ListView lista_piese_cos ;
TextView pret_total ,txt_nume_client ,txt_adresa_client ,txt_telefon_client ;
FacturaAdapter adapter;
Button btn_plasare_comanda ;
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
String key,value;
FragmentManager mFragmentManager ;
String currentDateandTime ;
String date;
@Nullable

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {

final View view = inflater.inflate(R.layout. layout_factura , container,
false);

factura = (ListView)view.findViewById(R.id. factura);
btn_plasare_comanda =(Button)view.findViewById(R.id. btn_plasare_comanda );
txt_nume_client =(TextView)view.findViewById(R.id. txt_nume_client );
txt_adresa_client =(TextView)view.findViewById(R.id. txt_adresa_client );
txt_telefon_client =(TextView)view.findViewById(R.id. txt_telefon_client );
adapter = new FacturaAdapter (getActivity(),A. pieseCosList );
factura.setAdapter( adapter);
mFragmentManager = getFragmentManager();

pret_total =(TextView)view.findViewById(R.id. pret_total );
pret_total .setText(String. valueOf(A.pretTotal )+" Lei" );

getActivity().setTitle( "Factură" );
((MainActivity)getActivity()). toolbar.setTitleTextColor(Color. WHITE);

for (int i = 0; i < A. cod_piese_bd .size(); i++) {
map.put(Integer. parseInt ( A. cod_piese_bd .get(i)),
Integer. parseInt (A.cantitate_piese_bd .get(i)));
}

txt_nume_client .setText(BackgroundDatePersonale. nume +" " +
BackgroundDatePersonale. prenume);
txt_adresa_client .setText(BackgroundDatePersonale. adresa);
txt_telefon_client .setText(BackgroundDatePersonale. telefon);

btn_plasare_comanda .setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {

Iterator<Map.Entry<Integer, Integer>> entries =
map.entrySet().iterator();
while (entries.hasNext()) {

37
Map.Entry<Integer, Integer> entry = entries.next();

SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd" );
currentDateandTime = sdf.format( new Date());

DateFormat df = new SimpleDateFormat( " HH:mm" );
date = df.format(Calendar. getInstance ().getTime());

String type = "comanda_piese" ;
BackgroundFinalizareComanda background = new
BackgroundFinalizareComanda(getContext());

background.execute(type, currentDateandTime ,date,String. valueOf(entry.getKey()),St
ring.valueOf(entry.getValue()), Automobil. codmasina ,Automobil. codmodel );

A. cod_piese_bd .clear();
A. cantitate_piese_bd .clear();
A. cod_piese_bd .clear();
A. pieseCosList .clear();

int a = A. pieseCosList .size();

Toast. makeText (getContext(), "Produsul Dumneavostra va fi
livrat \n in cel mai scurt timp!" ,Toast.LENGTH_LONG ).show();

FragmentTransaction fragmentTransaction =
mFragmentManager .beginTransaction();
fragmentTransaction.replace(R.id. containerView , new
Cos()).commit();
A. cos_cantitate = "";

A. cod_piese_bd .clear();
A. cantitate_piese_bd .clear();
A. pieseCosList .clear();
A. stoc_piese_bd .clear();
A. pieseCosList .clear();
A. denumire_piese .clear();

}

În imaginea de mai jos este prezentat codul pentru set ări de cont . Aici utilizatorul
este întrebat daca doreste sa-si modifice datele personale.Daca se doreste odificarea datele
personale in momentul apasarii pe buton utilizatorul va fi atentionat prin Messsage dialog
s-au pop-up in care este avertizat daca doreste cu adevarat modificarea datelo r personale.

Acest Message dialog este pentru a preveni in caz accidental modificarea datelor
personale in momentul apasarii pe butonul modifica date personale.Dupa modificarea
datelor personale utilizatorul se va autentifica cu noile credentiale pe car e tocmai si le- a
schimbat.

public class SetariCont extends android.support.v4.app.Fragment {

EditText Email,Adresa,SerieCI,NumarCI,Parola,Telefon,Nume;

38 Button Modifica ;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {

View view = inflater.inflate(R.layout. layout_setari_cont , container,
false);

Email=(EditText)view.findViewById(R.id. email);
Adresa=(EditText)view.findViewById(R.id. adresa);
SerieCI =(EditText)view.findViewById(R.id. serieCI);
NumarCI=(EditText)view.findViewById(R.id. numarCI);
Parola=(EditText)view.findViewById(R.id. parola);
Telefon=(EditText)view.findViewById(R.id. telefon);
Nume=(EditText)view.findViewById(R.id. nume);
Modifica =(Button)view.findViewById(R.id. modifica );

Nume.setText(BackgroundModificareDatePersonale. nume);
Email.setText(BackgroundModificareDatePersonale. email);
Adresa.setText(BackgroundModificareDatePersonale. adresa);
SerieCI.setText(BackgroundModificareDatePersonale. serie_ci );
NumarCI.setText(BackgroundModificareDatePersonale. nr_ci);
SerieCI.setText(BackgroundModificareDatePersonale. serie_ci );
Telefon.setText(BackgroundModificareDatePersonale. nr_telefon );

Modifica .setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {

CustomAlertDialog c = new
CustomAlertDialog(getActivity(), "Sunteti sigur ca doriti sa modificati datele
personale?" ,
new CustomAlertDialog.ClickListener(){
@Override
public void onPositive(){
}
@Override
public void onNegativ(){

}
}, "tip1");
c.show();
}

Pentru vizualizarea celor mai impo rtanti martori de bord se va accesa meniul Martori
bord in care se va incarca layout cu martori de bord. Layout-ul este format dintr-o lista in
care ea va fi populata cu imagini din fisierul drawable.

In partea dreapta a listei utilizatorul va primi informatii supliementare despre fiecare
martor de bord in parte.Acest meniu ajuta utilizatorul sa-si cunoasca mai bine fiecare
martor de bord important din masina lui.

39 public class MartoriBord extends android.support.v4.app.Fragment{

ListView lista;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {

View view = inflater.inflate(R.layout. layout_martori_bord , container,
false);

lista=(ListView)view.findViewById(R.id. list) ;

Integer[] itemname ={
R.string. esp,
R.string. bujii_avertizare ,
R.string. abs,
R.string. presiune_cauciucuri ,
R.string. filtru_particule ,
R.string. placute_de_frane ,
R.string. senzori_ploaie ,
R.string. far_ars,
R.string. directie_masina ,
R.string. sistem_pornire ,
R.string. lane_asistent ,
R.string. martor_cruise_control ,
R.string. check_engine ,
R.string. alerta_baterie ,
R.string. airbag,
R.string. probleme_racire ,
R.string. ulei_motor
};

Integer[] imgid={
R.drawable. martor_control_tractiune2 ,
R.drawable. avertizare_preincalzire_diesel ,
R.drawable. martor_abs ,
R.drawable. presiune_cauciucuri ,
R.drawable. filtru_de_particule_diesel ,
R.drawable. placute_de_frana ,
R.drawable. senzor_ploaie ,
R.drawable. far_ars,
R.drawable. directie_masina ,
R.drawable. problema_la_cheie ,
R.drawable. lane_asistent ,
R.drawable. martor_cruise_control ,
R.drawable. check_engine ,
R.drawable. alerta_baterie ,
R.drawable. airbag,
R.drawable. apa_crescuta ,
R.drawable. presiune_ulei

};

ImagineText adapter= new ImagineText(getContext(), itemname, imgid);
lista.setAdapter(adapter);

return view;
}

}

Clasa MartoriBord u rmează a fi îmbunatățită pentru a putea fi mai interactivă cu
clientul care folosește aplicaț ia ServiceAuto.

40

Concluzii

Aplicația a fost rea lizată din dorința de a creea un soft complet pentru comenzile
online, folosind aplicația mobile (Andro id) și Java.

Aceasta a fost concepută într-un mod cât mai simplu pentru a beneficia de o
interfață accesibilă și utilă .

Totodată această aplicație oferă servicii de autentificare, adăugare piese, adăugare
angajat, vizualizarea tuturor comenzilor, eliberarea unei facturi. Navigarea între meniuri se
face folosind meniul din dreapta de tip sandwich, făcând în acest mod o ap licație ușor de
folosit și intuitivă.

Divizarea întregii aplicații pe module permite o mai bună organizar e a inf ormațiilor
în ceea ce prive ște planificarea meniurilor și a fiecărui aspect al aplicației, oferind astfel și
o aplicație de admin istrare desktop și anume java.

Ceea ce adu ce nou la această aplicație este reprezentat de facilitățile oferite în
cadrul un ei singure aplicații rez ultând astfel o aplicație completă și nu o aplicație care doar
oferă informații despre fiecare produs.

41

Refe rințe bibliografice

[1]http://enos. itcollege.ee/~jpoial/allalaadimised/reading/Android-Programmi ng-
Cookbook.pdf
https://www.javatpoint.com/java-tutorial
https://www.javatpoin t.com/android-tutorial

https://ro.wikiped ia.org/wiki/Java_(limbaj_de_programare) pagina 8
http://upm.ro/intranet/ecalin/cd_educational/cd/javac/cap1.htm pg 8
https://ro.wikipedia.org/wiki/Android_(sistem_de_operare) pag Andro id
https://developer.Android.com/studio/intro/index.html 12
http://hg.netbeans.org/ netbeans
http://wiki.netbeans.org/WorkingWithNetBean sSour netbeans
https://g-soft.ro/dezvoltare- software/
https://www.oracle.com/java/technologies/
https://www.w3schools.com/php/
Ștefan Tanasă, Cristian Olaru, Ștefan Andrei, "Java de la 0 la expert ", Polirom, 2003.
Computer-Books.us O colecție de cărți Java disponibile pentru descărcare liberă (free
download)
David Flanagan, Java in a Nutshell, Third Edition . O'Reilly & Associates, 1999.
Thinking in Java , de Bruce Eckel
Java Course Binecunoscuta carte a lui A.B. Downey ca și un fișier C HM
 Doina Logofătu: Algoritmi fundamentali in Java. Apli cații, Ed. 1, Editura Polirom
 Curs practic de Java – de Cristian Frăsinaru
 Java Tutorial
 Java Tutorial full
 Gosling, James , A brief history of the Green project .[nefuncțională ] Java.net, no date [ca. Q1/1998].
Retrieved 29 aprilie 2007.
 Gosling, James , A brief history of the Green project .[nefunc țională ] anonymous-insider.net, no date
[ca. Q1/1998]. Retrieved 4 septembrie 2013.
 Gosling, James; Joy, Bill ; Steele, Guy L., Jr. ; Bracha, Gilad (2005). The Java Language
Specification (ed. 3rd). Addison-Wesley. ISBN 0-321-24678 -0.
 Lindholm, Tim; Yellin, Frank ( 1999). The Java Virtual Machine Specification (ed. 2nd). Addison-
Wesley. ISBN 0-201-43294 -3.

Similar Posts