Sunteți pe pagina 1din 52

ACADEMIA DE STUDII ECONOMICE DIN BUCURETI

FACULTATEA DE CIBERNETIC, STATISTIC I


INFORMATIC ECONOMIC
SPECIALIZAREA INFORMATIC ECONOMIC

LUCRARE DE LICEN
Soluie cu baz de date pentru
activitatea logistic a unei
companii
COORDONATOR TIINIFIC
Prof. univ. dr. MANOLE VELICANU
ABSOLVENT
GEORGE CRCIUN

BUCURETI

2013

Cuprins
Introducere................................................................................................................. 2
1.Prezentarea activitii de Logistic ntr-o companie............................................3
1.1 Logistica. Concepte generale............................................................................ 3
1.1.1 Scurt istoric................................................................................................. 3
1.1.2 Definirea conceptului de logistic...............................................................5
1.2 Transporturile element principal al activitii logistice.....................................................5
1.3 Eficientizarea logisticii.............................................................................................. 6
1.4Fluxuri informaionale n activitatea de logistic...............................................................7
2. Tehnologiile informatice utilizate la realizarea aplica iei de administrare a logisticii .......................9
2.1 Prezentare general a unei aplicaii web .........................................................................9
2.2 HTML................................................................................................................ 10
2.3 CSS.................................................................................................................... 11
2.4 jQuery................................................................................................................ 12
2.5 PHP................................................................................................................... 13
2.6 MySql................................................................................................................. 13
2.7 Apache................................................................................................................ 14
2.8 Codeigniter.......................................................................................................... 15
2.9 Eclipse................................................................................................................ 17
3.Analiza i proiectarea aplicaiei pentru logistica firmei..........................................................17
3.1Scopul i obiectivele aplicaiei................................................................................... 17
3.2 Proiectarea bazei de date.......................................................................................... 18
3.2.1 Noiuni teoretice.............................................................................................. 18
3.2.2 Proiectarea practic a bazei de date.......................................................................20
3.3 Proiectarea interfeei............................................................................................... 24
4. Prezentarea aplicaiei privind logistica companiei ................................................................26
4.1 Implementarea aplicaiei.......................................................................................... 26
4.1.1 Implementarea bazei de date i a funcionalit ii acesteia .............................................28
4.1.2 Implementarea interfeei i a funcionalitii acesteia ..................................................29
4.2 Utilizarea aplicaiei.......................................................................................... 32
Concluzii................................................................................................................... 37
Referine bibliografice.................................................................................................... 38
Lista figurilor............................................................................................................ 39
Anexe....................................................................................................................... 40
1

Introducere
Lucrarea de fa i propune s justifice importana bazelor de date n orice sector i
activitate a domeniului economic. Este oferit ca exemplu dezvoltarea unei aplicaii ce utilizeaz
o baz de date pentru a administra activitatea oricrei firme care activeaz n domeniul
transporturilor sau are un departament de transporturi ori logistic intern.
Datele au devenit n ultimii ani cele mai importante resurse ale unei companii deoarece
ele ofer o imagine de ansamblu a activitii acesteia i reprezint baza previziunilor pentru
viitor. Astfel c datele trebuie stocate i manipulate ntr-un mod ct mai eficient pentru a putea
oferi rspunsuri viabile la necesitile firmei. Deoarece ne situm n era tehnologiei informa iei,
orice firm care dorete s fie eficient trebuie s profite de avantajele oferite de utilizarea unei
aplicaii informatice care simplific munca angajailor i ajut la luarea celor mai bune decizii n
ceea ce privete activitatea economic a firmei.
Am ales ca i domeniu economic de interes, logistica i n special domeniul
transporturilor deoarece este un sector economic dinamic i totui existent din cele mai vechi
timpuri. Firmele care desfoar activiti ce presupun transporturi au o mare provocare n
administrarea costurilor de transport deoarece acestea au cea mai mare pondere n totalitatea
costurilor logistice, astfel c este esenial ca aceast activitate s fie gestionat corect prin
intermediul unei aplicaii informatice.
Compania n cadrul creia a fost realizat documentarea privind departamentul de
logistic, pe baza creia au fost identificate elementele ce trebuie luate n considerare la
dezvoltarea aplicaiei este SC Realitatea Media SA. Realitatea Media este prima televiziune din
Romnia dedicat transmisiei 24 de ore din 24 a tirilor. Filosofia postului este c evenimentul
guverneaz programul, astfel c n orice moment desfurtorul de emisie poate fi dinamizat cu
informaii de ultim or. Grila de programe a Realitatea TV cuprinde n special jurnale de
tiri(din or n or), dar i emisiuni de analiz politic, social, cultural i tiinific.
Am considerat c aceast companie este una relevant pentru domeniul economic ales i
pentru dezvoltarea aplicaiei, deoarece deine un parc auto de dimensiuni mari, aproximativ 30
de autovehicule, care efectueaz un numr mare de curse pe zi, n diferite scopuri: transmisiuni
live, deplasarea corespondenilor n teritoriu, transportul invitailor, aprovizionare intern, etc.
Vorbim de autovehicule de toate categoriile, inclusiv de cele echipate pentru transmisii din teren.
Un alt element relevant pentru acest domeniu este faptul c sunt nregistrate costuri foarte mari
cu logistica i transporturile ceea ce indic un grad mare de utilizare al respectivelor
autovehicule.

Lucrarea este structurat n patru capitole ce realizeaz prezentarea domeniului economic


ales, a tehnologiilor informatice utilizate n realizarea aplicaiei de administrare a activit ii
logistice i a aplicaiei rezultate mpreun cu modul de implementare a acesteia.
Astfel, capitolul 1 descrie activitatea de logistic cu tot ceea ce presupune ea, punnd
accent pe componenta de transporturi. Sunt descrise fluxurile informaionale ce apar n
desfurarea activitii i care sunt utile n dezvoltarea aplicaiei deoarece ilustreaz modul n
care circul informaiile n cadrul departamentului logistic. Capitolul 2 prezint tehnologiile
informatice utilizate pentru realizarea programului, accentund punctele lor forte i justificnd
astfel alegerea lor. Capitolul 3 realizeaz proiectarea aplicaiei i con ine detalii tehnice
referitoare la modul n care a fost implementat aceasta. Ultimul capitol prezint aplica ia i
ofer indicaii de utilizare a acesteia.

1. Prezentarea activitii de

Logistic

ntr-o companie
1.1 Logistica. Concepte generale
1.1.1

Scurt istoric

Nu se cunoate cu exactitate originea termenului de logistic, dar exist mai multe


ipoteze n acest sens. Una dintre acestea presupune c acest cuvnt provine din limba greac, din
cuvntul logistikos care nseamn a fi priceput n a face calcule.
Cu toate acestea, deoarece termenul a fost utilizat destul de trziu n istorie (sfritul
secolului al XVIII-lea sau chiar nceputul secolului al XIX-lea) a determinat destul de mul i
istorici i etimologi s susin faptul c termenul logistic provine din limba francez, mai exact
din termenul logistique, termen folosit destul de mult mai ales n campaniile militare,
desemnnd operaiunile de transportare i poziionare a unitilor pe cmpul de lupt, dar i
operaiunile desfurate pentru transportul hranei i a tuturor celorlaltor elemente anexe unei
uniti militare (uniti de comunicaie, uniti medicale, uniti ce efectuau diferite servicii
pentru soldai, etc).
Una dintre primele personaliti care au utilizat termenul de logistic, a fost baronul
elveian Antoine Henry Jemini, care luptase n campaniile lui Napoleon i avea deci destul de
multe cunotine n domeniul militar i chiar logistic. n lucrarea sa Sumar al artei rzboiului,
aprut n 1838, baronul susine c logistica este unul dintre pilonii principali ai conducerii i
ctigrii unui rzboi. Apare astfel o prim definiie a logisticii care presupune mutarea i
poziionarea armatei, dar i a tuturor materialelor necesare acesteia.
3

Un alt studiu care a vizat logistica militar este Pure Logistics The Science of War
Preparation (Logistica absolut tiina Pregtirii Rzboiului), publicat de ctre maiorul
american George C. Thorpe n anul 1916. Scopul respectivului studiu era de a evidenia
importana teoriei militar a logisticii (denumit pure logistics) i mai puin partea aplicat a
acesteia (denumit de ctre autor applied logistics). Putem spune c acesta a fost unul dintre
primele manuale de logistic publicate. Elementul principal susinut de ctre Thorpe este
caracteristica de ntreg a logisticii. Astfel, autorul a demonstrat prin puternice exemple istorice
faptul c logistica neintegrat a euat n majoritatea marilor campanii militare. Putem men iona
aici Rzboiul lui Napoleon n Rusia din 1812, sau Rzboiul Prusiei cu Fran a din 1870 1871.
[TH16]
Dei Thorpe a utilizat termenul de logistic, in scrierile sale, acesta nu a reu it s se
impun n strategiile militare din acea perioad, dar a cptat totui un rol important n domeniul
militar, astfel c dup cel de-al Doilea Rzboi Mondial, logistica militar a devenit un domeniu
studiat pe larg. n domeniul economic, logistica a aprut dup 1960.
Figura 1.1 indic evoluia acesteia n timp. Astfel, se observ c la nceput, activitile
logistice erau separate, pentru ca n prezent s se vorbeasc despre un management integrat al
logisticii care gestioneaz componente precum: planificarea cererii, achiziiile, gestiunea
stocurilor, depozitarea, distribuia i transportul.
Tot n anii 1960 apare i termenul de logistic a firmei (business logistics), care
desemna managementul tuturor activitilor care asigur transferul i coordonarea
aprovizionrii i distribuiei n sensul crerii utilitii de timp i spaiu. [HEIVGL65]

Figura 1.1 Evoluia logisticii n cadrul firmei, [MO96]

1.1.2 Definirea conceptului de logistic


Voi prezenta cteva definiii ale logisticii propuse de-a lungul timpului.
n 1962, National Council of Physical Distribution Management (NCPDM), definete
logistica astfel: Mulimea de activiti implicate n tranferul eficient al produselor finite de la
punctele de producie la consumator i n unele cazuri a materialelor de la furnizor la unitile
de producie. Acestea sunt: transportul, depozitarea, manipularea materialelor, ambalarea,
gestiunea stocurilor, selectarea locaiilor fabricilor i depozitelor, procesarea comenzilor,
previzionarea cererii i serviciul ctre clieni.
n anul 1986 apare definiia dat de ctre Council of Logistics Management (CLM)
care nglobeaz practic tendinele logisticii acelor ani: Logistica este procesul de planificare,
implementare i control al fluxurilor i depozitrii eficiente i eficace a materiilor prime,
stocurilor n curs de producie, produselor finite, i a informaiilor referitoare la acestea, de la
punctul de origine la punctul de consum al acestora, cu scopul conformrii cerinelor
consumatorilor. Se observ faptul c aceast definiie pune accentul pe planificare,
implementare i control, deci pe activitile de management desfurate n cadrul logisticii.
Mai recent, n 2005 apare pentru logistic definiia: a livra un produs, n bun stare, la
momentul potrivit, n locul potrivit, n cantitatea corect i necesar, n ambalajul de prezentare
corespunztor, precedate, nsoite i urmrite de informaii corecte i exacte nscrise pe
documente legale, totul n cele mai bune condiii economice . [AKFRDU05] .
Aceast definiie pune accent pe documentele care nsoesc, confirm i urmresc fluxul de
informaii i asigur stabilirea istoricului traseului parcurs n distribuie.
Din definiiile prezentate pn aici, pot concluziona c logistica este activitatea care se
ocup n primul rnd cu transportul mrfurilor sau produselor, dar si cu achiziia, depozitarea i
livrarea acestora.
Dup prerea mea, principala component a activitii logistice se refer la transport,
deoarece acesta genereaz cele mai mari costuri i totodat este cel mai greu de gestionat.

1.2 Transporturile element principal al activitii logistice


Transportul reprezint micarea oamenilor, animalelor sau a bunurilor dintr-o locaie n
alta. Modalitile de transport includ: aerul, calea ferat, oseaua, cablul, conducta sau spa iul.
Domeniul transporturilor poate fi divizat n infrastructur, vehicule i operaiuni.
Infrastructura const n instalaii fixe sau construcii necesare transportului, cum ar fi:
osele, ci ferate, ci aeriene, canale fluviale i terminale precum: aeroporturi, gri, staii,
depozite, etc. Terminalele pot fi folosite att pentru schimbarea pasagerilor sau a mrfurilor, ct
i pentru mentenan. Vehiculele care utilizeaz aceste reele pot include: automobile, biciclete,
autobuze, trenuri, camioane i altele. Operaiunile sunt reprezentate de modul n care sunt
5

utilizate vehiculele i procedurile setate pentru scopul propus. n domeniul transporturilor,


operaiunile i infrastructura pot fi att publice ct i private, n funcie de ar.
Din punct de vedere economic, performana sectorului transporturilor este sensibil la
preul petrolului. Deoarece operaiunile graviteaz n jurul vehiculelor, preul combustibililor
reprezint un cost semnificativ al companiilor ce se ocup cu transporturile. Atunci cnd preul
petrolului crete, companiile se ateapt s ctige mai puin, n timp ce atunci cnd pre ul
petrolului este mic, situaia financiar a companiilor este bun.

1.3 Eficientizarea logisticii


Ca n orice alt domeniu economic, eficientizarea presupune reducerea costurilor i
implicit maximizarea profitului. Astfel, eforturile de eficientizare a activitii sunt canalizate n
primul rnd ctre rentabilizarea operaiunilor logistice.
Una dintre primele opiuni luate in calcul pentru diminuarea costurilor logistice este
externalizarea acestor operaiuni, cunoscut sub denumirea de outsourcing. Cu toate acestea, este
indicat ca aceasta variant s fie adoptat atunci cnd calitatea serviciilor oferite de ctre
operatorul logistic contractat este cel puin similar cu cea existent n companie, iar pre ul cerut
este convenabil.
O alt opiune poate fi dezvoltarea parcului auto (logistic) ceea ce ar permite oferirea de
servicii ctre alte firme, ceea ce aduce un venit necesar acoperirii costurilor proprii. Astfel , este
destul de des ntlnit separarea activitii logistice ntr-o entitate de sine stttoare, care acoper
att nevoile companiei, dar ofer i servicii ctre exterior. Practic, putem spune c este creat
operatorul logistic necesar desfurrii activitii companiei.
Cea de-a treia opiune se refer la ncercarea de optimizare a activitii desfurate de
parcul logistic, ceea ce presupune administrarea eficient a depozitelor i a parcului auto, dar i
mbuntirea proceselor de aprovizionare i distribuie.
Astfel, eficientizarea costurilor logistice necesit o operaiune complex desfurat la
nivelul ntregii companii. Acest operaiune presupune existena unui sistem informatic capabil
s gestioneze fluxurile de lucru i s urmreasc costurile operaionale.
Vorbim despre activitate logistic nu numai n cadrul firmelor de distribuie sau al
firmelor ce manipuleaz marfuri, ct i n cadrul altor firme care dein un parc auto ce implic
efectuarea de numeroase curse i deplasri pentru ndeplinirea obiectivelor companiei.
Astfel, consider c principala activitate ce trebuie rentabilizat este activitatea de
transporturi, care genereaz cele mai mari costuri. Din punct de vedere informatic, aa cum am
precizat i mai sus, eficientizarea presupune existena unor aplicaii ce au au ca scop urmrirea i
gestionarea costurilor i a cheltuielilor curente i viitoare.
O aplicaie complex ce are ca scop administrarea activitii logistice i implicit
eficientizarea acesteia, trebuie s urmeze mai multe direcii de dezvoltare:
6

definirea i planificarea rutelor parcurse de vehiculele firmei;


optimizarea rutelor planificate zilnic prin aplicarea unor abloane, pentru a ine sub control

costurile de transport;
suport pentru elaborarea unor strategii de transporturi pe termen lung, prin previzionarea

costurilor;
administrarea resurselor (a personalului, a vehiculelor i a materialelor transportate);
elaborarea de rapoarte ce ilustreaz activitatea logistic a companiei.
Opinia mea este c cele mai importante elemente ale unei astfel de aplicaii sunt reprezentate

de administrarea resurselor si elaborarea de rapoarte necesare observrii activit ii companiei,


deoarece o aplicaie ce conine aceste module poate fi utilizat att ce o firm mic, ct i de o
companie al crei obiect de activitate este strict logistica i proceseaz o multitudine de comenzi
i transporturi zilnic.

1.4 Fluxuri informaionale n activitatea de logistic


Pentru a dezvolta o aplicaie de administrare a activit ii logistice, analistul/
programatorul trebuie s neleag modul de formare a fluxurilor informaionale identificate n
activitatea companiei.
Pentru a identifica entitile ce vor fi luate n calcul la dezvoltarea aplicaiei voi pleca de
la o definiie a lanului de aprovizionare (supply chain), al unei ntreprinderi.Astfel, acesta
include toi furnizorii, capacitile de producie, centrele de distribuie, depozitele i clienii,
mpreun cu materiile prime, stocul de produse semifabricate i stocul de produse finite i cu
toate resursele i informaiile implicate n satisfacerea cerinelor clienilor ceea ce nseamn c
lanul de aprovizionare este un proces care leag furnizorii, productorii, depozitele, distribuitorii
i clienii. [LUCO06]
Putem aprecia c lanul de aprovizionare este descris cu ajutorul costurilor i veniturilor
implicate: costuri cu furnizorii / materiile prime i materialele, costuri de transport, costuri de
producie, costuri de depozitare i distribuie i venituri de la clieni.
Conceptul de supply chain (lan de aprovizionare) a fost folosit iniial pentru a defini
traseul parcurs de materiale / marf de la furnizor la firm.
O aplicaie informatic ce are scopul de a eficientiza logistica trebuie s gestioneze i s
previzioneze cererile, sincroniznd aprovizionarea cu cererea. Corelarea ofertei cu cererea duce
la livrarea produsului comandat la locul i momentul potrivit. Dac aceast aprovizionare este
fcut n condiiile existenei comenzii, atunci firmele pot s-i reduc stocurile i chiar s
lucreze cu un stoc apropiat de cel critic.
n continuare voi prezenta principalele fluxuri de procese informaionale ale unui lan de
aprovizionare, ilustrate n figura 1.3 . Astfel, putem identifica cel puin urmtorii actori principali
ce particip la realizarea fluxurilor informaionale:
7

clientul: cumpr bunuri i servicii


furnizorul: vinde bunuri i servicii
sistemul de aprovizionare: achiziioneazbunuri i servicii de la furnizori
sistemul de desfacere: vinde bunuri i servicii clienilor
sistemul de producie: produce bunuri i servicii
sistemul de transport: transport bunuri.
depozitele: gestioneaz bunurile produse i/sau achiziionate.

Figura 1.2 Procese i fluxuri informaionale n lanul de desfacere, [NOHU00]

Deoarece, n prezenta lucrare ne axm n primul rnd pe activitatea de transporturi, fluxul


informaional luat n calcul este unul simplificat i urmrete doar livrarea bunurilor sau
transportul persoanelor ntre dou locaii i face legtura ntre serviciile de aprovizonare i
livrare.
Figura 1.3 pezint fluxul informaional ce descrie activitatea de transporturi. Observm
astfel c operatorul logistic (ofer, vehicul) execut cursa, n timp ce managerul parcului logistic
se ocup cu coordonarea activitii (planificare i control).

Manager parc logistic Planificare

Control

Operator
Executare

Figura 1.3 Fluxul informaional al activitii logistice din cadrul unei companii

2. Tehnologiile informatice utilizate la realizarea aplicaiei de


administrare a logisticii
n continuare vor fi prezentate tehnologiile utilizate pentru realizarea aplicaiei de
administrare a activitii logistice. Trebuie precizat c aplicaia va fi una web-based, adic o
aplicaie ce va putea fi accesat ntr-un navigator web i va rula pe un server HTTP.

2.1 Prezentare general a unei aplicaii web


Termenul de aplicaie web este folosit pentru o aplicaie care este accesat de utilizatori
prin intermediul unei reele (internet / intranet). Acest termen poate de asemenea s desemneze o
aplicaie software scris ntr-un limbaj de programare suportat de navigator (browser-supported)
precum JavaScript sau jQuery combinat cu un limbaj de marcare precum HTML i care se
bazeaz pe un browser web pentru redarea aplicaiei executabile.
Aplicaia pentru administrarea activitii de logistic se va baza pe mai multe tehnologii.
HTML, CSS i JQuery au fost folosite pentru partea vizual i crearea interfe ei, n timp ce PHP
se ocup cu prelucrrile ce au loc pe server (asigur funcionalitatea aplicaiei) iar MySql asigur
legatura cu baza de date prin stocarea datelor si accesul la acestea. n plus, aplicaia va fi stocat
pe un server HTTP (Apache).
Pentru o bun organizare a codului surs i a modulelor proiectului, a fost folosit cadrul
de lucru(framework) Codeigniter care pe lng o multitudine de alte facilit i/funcii pe care le
ofer, faciliteaz implementarea arhitecturii MVC (Model - View Controller). Tot la
Codeigniter, pot aduga ca i facilitate important, clasa Active Record care permite ca operaiile
uzuale de lucru cu baza de date s fie simplificate din punctul de vedere al codului scris.
O alt tehnologie utilizat este mediul de dezvoltare Eclipse.

2.2 HTML
HTML (HyperText Markup Language) este principalul limbaj de marcare utilizat n
crearea de pagini web i alte informaii ce pot fi redate ntr-un navigator web (web browser).
Scopul unui navigator web este acela de a citi documentele HTML i de a le reda ntr-o form
vizibil sau/i audibil. Navigatorul nu afieaz marcajele HTML, ci le folosete pentru a
interpreta coninutul paginii.Aceste indicaii furnizate de ctre marcajele HTML, pot varia de la
cele mai simple (fontul unui paragraf) la unele complexe(scripturi complicate, formulare, hri).
Tot prin intermediul marcajelor HTML, pot fi specificate metadate ce con in informa ii despre
document (titlul, autorul) sau informaii ce specific structurarea documentului( divizarea n

paragrafe, liste, etc). HTML permite ca fiecare document s poat fi legat de altele prin
hiperlegturi (hyperlinks) care formeaz web-ul.
Limbajul HTML poate fi citit i editat folosind orice editor simplu de text. Cu toate
acestea, scrierea i modificarea paginilor solicit unele cunotine de HTML i consum timp,
astfel c de-a lungul timpului au aprut programe utilitare cu scopul de a facilita crearea de
pagini web. Editoarele grafice (denumite generic WYSIWYG = what you see is what you get)
precum Macromedia Dreamweaver, Adobe GoLive sau Microsoft FrontPage permit ca paginile
web s poat fi realizate uor de ctre oricine are anumite cunotine de operare a calculatorului.
Dei crearea site-urilor folosind acest tip de programe este mult mai uoar, trebuie precizat c
de cele mai multe ori codul HTML generat de acestea este de o calitate slab.[WIKI01].
HTML poate fi generat direct prin utilizarea unor tehnologii de programare din partea
serverului, precum : PHP(Hypertext Preprocessor), JSP (Java Server Pages)sau ASP(Active
Server Pages).
Aplicaia de administrare a activitii logistice utilizeaz HTML pentru afi area
coninutului ntr-un browser web, n forma dorit de programator, permi nd chiar modificarea
acesteia n funcie de cerinele utilizatorilor.

2.3 CSS
CSS (Cascading Style Sheets) este un limbaj folosit pentru descrierea semanticii de
prezentare (aspect i formatare) a unui document scris ntr-un limbaj de marcare (HTML).
De cele mai multe ori CSS este folosit pentru a stiliza paginile web scrise n HTML sau
XHTML, dar limbajul poate fi aplicat oricrui tip de document XML. CSS a fost gndit n
primul rnd pentru a separa coninutul documentului (exprimat n HTML) de prezentarea
documentului care include elemente precum: culori, font, orientare. Aceast separare
mbuntete accesibilitatea coninutului i ofer o mai mare flexibilitate i control n
specificarea i modificarea caracteristicilor prezentrii. n plus, CSS permite ca mai multe pagini
s foloseasc aceleai specificaii de prezentare i reduce repetarea acestora. Mai mult, CSS ofer
facilitatea ca aceeai pagin s poat fi prezentat n mai multe formate n funcie de metoda de
redare (ecran, printare, dispozitive tactile, etc).
Stilurile CSS pot fi ataate documentelor HTML, att prin includerea unor documente
externe, ct i n cadrul documentului, folosind marcajul <style> i/sau atributul style (pentru
specificarea stilului n cazul unui anumit element HTMl).
Principalul dezavantaj al CSS este faptul c unele navigatoare nu sunt compatibile cu
CSS i documentele HTML sunt afiate ca i cum CSS n-ar exista, dar cele mai cunoscute i
utilizate browsere, cum ar fi: Mozilla Firefox, Internet Explorer, Opera, i altele,
sunt compatibile CSS.
10

Printre beneficiile CSS putem enumera: formatarea este introdus ntr-un singur loc pentru
tot documentul, editarea rapid a etichetelor, micorarea codului paginii i implicit ncrcarea
mai rapid a acesteia.
Sintaxa CSS este mprit n trei categorii/nivele:

nivelul 1 - reprezint proprietatile etichetelor din documentul HTML, folosind atributul style

(tip inline);
nivelul 2 - reprezint informaia introdusn blocul HEAD, utiliznd marcajul <style>

(embedded);
nivelul 3 reprezint comenzile aflate n pagini separate (externe).

Cea mai mare prioritate o are sintaxa de nivelul 1 (inline) iar cea mai mic o are cea de nivelul 3.
Utilizarea nivelului 3 (fiier extern care conine comenzi CSS) este practica recomandat
deoarece poate fi utilizat n mai multe situaii (mai multe fiiere HTML pot folosi acela i fi ier
extern CSS) eliminnd astfel timpul necesar introducerii codului corespunztor n fiecare pagin
i facilitnd editarea lor ntr-un singur loc pentru mai multe fiiere.
Aplicaia descris n prezenta lucrare utilizeaz CSS pentru formatarea coninutului i
prezentarea atractiv a paginilor. Fiierul CSS utilizat este prezentat n Anexa 4.

2.4 jQuery
jQuery este o bibliotec JavaScript conceput pentru a simplifica scripturile de pe partea
de client i anume scripturile executate prin intermediul elementelor HTML. A fost lansat n
ianuarie 2006 de ctre John Resig. Sintaxa jQuery face mai uoar navigarea ntr-un document,
selectarea elementelor din DOM (Document Object Model), crearea animaiilor, manipularea
evenimentelor i chiar dezvoltarea de aplicaii AJAX. jQuery ofer de asemenea posibilitatea
dezvoltatorilor de a crea extensii pentru bibliotecile de JavaScript. Astfel, se pot abstractiza
interaciunile , animaiile i efectele.
jQuery permite ndeplinirea unor sarcini precum:
accesarea unor anumite pri din pagin i traversarea elementelor paginii;
modificarea aspectului unei pagini i posibilitatea schimbrii dinamice a proprietilor

dup ncrcarea paginii;


modificarea coninutului paginilor (text, imagini);
rspuns la interaciunea utilizatorului cu elementele HTML;
adugarea de animaii complexe;

Plugin-urile sau extensiile sunt cele mai interesante faciliti oferite de jQuery. Programatorii pot
dezvolta subaplicaii care s extind funciile de baz jQuery cu funcii folosite de ctre plugin.
Astfel, biblioteca principal ocup doar att spaiu ct este necesar, n timp ce extensiile vor fi
ncrcate doar la cerere i n acele pagini unde sunt necesare. Dezvoltatorii pot utiliza un set de
extensii predefinite, numit jQuery UI (jQuery User Interface). Principalul avantaj al jQuery este
11

faptul c dezvoltarea i testarea componentelor se face concomitent cu dezvoltarea bibliotecii


principale, astfel c este eliminat incompatibilitatea.
Dup prerea mea, cea mai atractiv caracteristic a jQuery este faptul c prin
multitudinea de extensii si utilizri poate furniza soluii ct mai diversificate, dup cum spunea i
creatorul bibliotecii, John Resig: I love seeing cases where an API that I thought I knew well is
turned around and used in new and interesting ways. [RE09]
n cadrul aplicaiei de logistic, jQuery asigur n primul rnd interactivitatea
utilizatorului cu mediul de lucru.

2.5 PHP
PHP (PHP Hypertext Preprocessor, iniial Personal Home Page) este un limbaj de
programare server-side destinat dezvoltrii web, dar folosit de asemenea ca un limbaj de
programare de uz general. PHP a fost creat iniial de ctre Rasmus Lerdorf n 1995, iar acum este
produs de Grupul PHP. Limbajul PHP a aprut n 1995 deoarece Rasmus Lerdorf dorea s afle
cte vizitri are CV-ul lui online. PHP ncepe s fie remarcat din momentul n care Zeev Suraski
i Andi Gutmans au rescris motorul, care va purta numele de Zend, o combinaie a prenumelor
celor doi programatori. Datorit faptului c este open-source, PHP profit de faptul c are un
suport activ din partea comunitii online i se dezvolt foarte rapid. Interpretorul PHP este cel
mai utilizat limbaj de programare folosit pentru realizarea site-urilor Web dinamice. Diferena
fa de alte limbaje de programare (precum JavaScript) este reprezentat de faptul c PHP
execut operaiile pe server i nu pe calculatorul client. Astfel, PHP poate accesa baze de date,
fiiere i alte resurse la care JavaScript nu are acces. n plus, PHP interpreteaz instruciunile pe
server i returneaz cod HTML necesar paginilor web. HTML este un limbaj static, iar codul
scris n HTML este salvat n fiiere ce pot fi vizualizate prin apelarea lor n browser. Dac este
necesar modificarea coninutului paginilor HTML ntr-un mod dinamic i chiar crearea
documentelor HTML n funcie de anumite condiii, va fi folosit un limbaj de scripting pe server,
precum PHP, Perl, ASP sau altele. Respectivele pagini pot conine funcii de interogare a bazei
de date, preluarea de date de pe alte site-uri sau din alte fiiere, iar n final este construit o
pagin HTML trimis ctre browser. Codul PHP nu este vizibil vizitatorilor. El nu este compilat,
ci rmne pe server i la fiecare cerere din partea clientului este interpretat i doar rezultatul
(HTML) este vizibil.
PHP a fost folosit i n cadrul acestui proiect pentru a implementa funcionalitatea
aplicaiei pe partea de server i de lucru cu datele.

12

2.6 MySql
MySQL este un sistem de gestiune a bazelor de date relaional, creat de compania
suedeza MySQL AB (n momentul de fa deinut de Oracle). MySQL ruleaz ca un server,
facilitnd conectarea mai multor utilizatori i accesul la mai multe baze de date. Este printre cele
mai populare sisteme de gestiune a bazelor de date, i chiar cel mai popular dintre sistemele cu
surs deschis (open-source) la ora actual. MySQL este totodat un element important al
utilitarelor de tip LAMP (Linux, Apache, MySQL, PHP), care fac uoar configurarea i
utilizarea unui server web. MySQL este strns legat de PHP, mpreun formnd a a-numitul
Duo-Dinamic, folosit la majoritatea site-urilor existente.
Dei, de cele mai multe ori este utilizat alturi de PHP, MySQL permite construirea de
aplicaii n orice limbaj major de programare (C, C++, Java, Perl, Python). Administrarea bazelor
de date MySQL se poate face att folosind modul linie de comand, ct i prin intermediul unor
interfee grafice precum: MySQL Administrator, MySQL Workbench sau phpMyAdmin.
Principalele caracteristici ale MySQL sunt:
faptul c este un sistem de baze de date relaional;
arhitectura client/server: mysql lucreaz ca un server de baze de date la care se pot conecta
mai muli clieni (programe de aplicaie). Clienii pot rula pe aceeai main fizic sau pot fi

localizai pe un alt calculator, comunicnd prin reeaua local sau prin Internet;
compatibilitatea SQL: dup cum reiese i din denumirea sa, este folosit limbajul de baze de

date SQL, ca i limbaj standardizat pentru interogarea i actualizarea datelor;


viteza: MySQL este considerat una dintre cele mai rapide aplicaii de lucru cu bazele de date;
independena de platform: aplicaiile client pot rula pe o varietate de sisteme de operare, iar
MySQL ca i server poate de asemenea s fie executat pe platforme precum: Apple
Macintosh OS X, Linux, Microsoft Windows, dar i alte variante de Unix, cum ar fi: AIX,

BSDI, FreeBSD, HP-UX, Open BSD sau Solaris.


O alt caracteristic important a MySQL este faptul c poate rula pe platforme cloud cum ar fi
Amazon EC2, existnd mai multe posibiliti pentru realizarea acestei faciliti precum:
utilizarea unei maini virtuale cu MySQL instalat, sau oferirea de servicii MySQL de ctre
operatorul de gzduire.
MySQL are att puncte forte ct i puncte slabe, Muli fani nrii ai MySQL spun c
acest SGBD este mai rapid, mai de ncredere i mai ieftin, sau pur i simplu mai bun, dect orice
alt sistem de gestiune a bazelor de date (inclusiv sistemele comerciale precum Oracle sau DB2),
n timp ce multi oponeni ai MySQL spun chiar c nu este nici mcar un sistem de baze de date
relaional. [KO05]
n ceea ce privete aplicaia prezentat n aceast lucrare, pot spune c MySQL ocup
unul din cele mai importante roluri pentru realizarea ei n primul rnd datorit faptului c este
prelucrat un set de date de dimensiune mare, iar accesul la aceste date trebuie s fie ct se poate
13

de rapid i corect. MySQL, mpreun cu PHP realizeaz operaiile de regsire, actualizare,


inserare i tergere a datelor.

2.7 Apache
Apache HTTP Server este un server web open source, recunoscut ca fiind cel mai
popular. Iniial a fost destinat mediilor de lucru Unix, dar apoi a fost portat n Windows i alte
sisteme de operare n reea. Apache a avut un rol important n dezvoltarea web, cunoscnd o
cretere impresionant, iar n prezent este folosit la peste jumtate din paginile de Internet active.
Apache a aprut ca o prim alternativ de calitate pentru Netscape Communications
Corporation, iar apoi s-a dezvoltat ca un rival competitiv pentru toate serverele web bazate pe
Unix. Fiind un program cu surs deschis, Apache este dezvoltat de o comunitate de
programatori coordonai de Apache Software Foundation. Apache poate rula pe o mare varietate
de sisteme de operare, precum: Unix, FreeBSD, Mac OS X, Linux, Microsoft Windows.
Robert McCool este cel care a realizat prima versiune a serverului web Apache, n timp
ce lucra la proiectul National Center for Supercomputimg Applications (NCSA). A doua versiune
a pus accent pe Apache Portable Runtime, un nivel considerat prioritar la vremea respectiv.
Funcionalitatea Apache poate fi extins de o multitudine de module care variaz de la
programarea pe partea de server, pn la anumite scheme de autentificare dinspre client. Printre
limbajele de programare suportate de Apache putem enumera: mod_perl, mod_python, Tcl i
PHP. O calitate aparte a serverului Apache este reprezentat de gzduirea virtual, care const n
posibilitatea ca pe acelai server s fie gzduite mai multe site-uri simultan.
Competitorii serverului Apache sunt: Microsoft Internet Information Services (IIS), Zeus
Web Server, Sun Java System Web Server etc. Importana Apache este recunoscut de faptul c
unele dintre cele mai mari site-uri din lume l folosesc ca i server. Spre exemplu, motorul de
cutare Google, folosete un modul modificat de Apache denumit Google Web Server (GWS).

2.8 Codeigniter
Codeigniter este un cadru de lucru (framework) cu surs deschis folosit pentru a
construi aplicaii web i site-uri cu PHP, ntr-o manier rapid i ordonat. Scopul su este acela
de a oferi posibilitatea dezvoltatorilor de a realiza proiecte mult mai rapid fa de scrierea
codului de la zero, prin oferirea unui set bogat de biblioteci pentru cele mai utilizate sarcini,
precum i o interfa simpl i o structur logic, prin care s acceseze aceste biblioteci [CO01].
Acest lucru nseamn c programatorii se pot concentra mai mult asupra proiectului, minimiznd
timpul necesar scrierii de cod pentru funcionalitatea de baz.

14

Codeigniter este de asemenea un produs software cu surs deschis, astfel c el poate fi


modificat i utilizat dup cum dorete fiecare programator. CodeIgniter are unele caracteristici
pozitive care l fac s fie unul dintre cele mai utilizate cadre de lucru cu PHP:
ocup foarte puin memorie deoarece sistemul su central conine doar cteva

biblioteci mici, iar celelalte biblioteci necesare sunt ncrcate dinamic la cerere;
este printre cele mai rapide cadre de lucru, n primul rnd datorit caracteristicii

prezentate la punctul anterior;


este extensibil: orice programator i poate aduga propriile biblioteci sau le poate

adapta pe cele existente;


este puternic documentat i susinut de o comunitate relativ mare de dezvoltatori;
folosete arhitectura Model-View-Controller
Una dintre cele mai importante faciliti oferite de Codeigniter este implementarea
arhitecturii MVC care permite separarea logicii aplicaiei de prezentarea acesteia.
MVC, sau Model-View-Controller (Model Viziune Unitate de control) este un ablon
de dezvoltare care face ca paginile web s conin ct mai puin cod surs scris printre
elementele de prezentare a aplicaiei. Codeigniter lucreaz cu PHP5, astfel c introduce
programarea orientat pe obiecte, iar fiecare element (model, viziune, unitate de control) va fi
definit ca o clas cu proprieti i metode specifice.
Modelul conine funcii ce realizeaz regsirea, inserarea sau actualizarea informaiilor
din/ n baza de date. Viziunea reprezint informaia prezentat utilizatorului. O viziune poate fi
att o pagin web ct i doar un fragment din aceasta, precum header sau footer. Unitatea de
control servete ca i intermediar ntre model i viziune, dar poate face legtura cu orice alt
resurs necesar.
n figura 3.1 se observ modul n care interacioneaz cele 3 elemente ale arhitecturii.
Astfel, din viziune sunt trimise cereri ctre unitatea de control care le proceseaz i dac are
nevoie de date apeleaz modelul iar apoi trimite rspunsul ctre viziune care afi eaz
informaiile. Dac nu are nevoie de baza de date, unitatea de control doar rspunde viziunii.
Acest mod de utilizare poate fi extins, n sensul c modelele pot fi accesate direct din viziune,
ns aceast practic nu este recomandat deoarece ncarc pagina web(viziunea) cu cod surs
care n mod normal trebuie procesat de unitatea de control.

Figura 2.4 Arhitectura Model View Controller, [WIKI02]

Consider c arhitectura Model-View-Controller este foarte util n dezvoltarea unei


aplicaii web n primul rnd datorit structurrii ordonate a scripturilor i separrii logicii de
15

prezentare, acestea fiind i motivele datorit crora am utilizat Codeigniter n realizarea


aplicaiei.

2.9 Eclipse
Eclipse este un mediu de dezvoltare cu surs deschis, integrat (IDE- Integrated
Development Environment) scris n mare parte n Java. Este un mediu de lucru multi-limbaj,
permind prin intermediul unor extensii, utilizarea altor limbaje de programare: C, C++,
COBOL, FORTRAN, JavaScript, Perl, PHP, Phython, etc.
Pentru dezvoltarea aplicaiei de logistic, am utilizat mediul Eclipse, mpreun cu
extensia PDT (PHP Development Tools), care permite lucrul cu PHP.

3. Analiza i proiectarea aplicaiei pentru logistica firmei


3.1

Scopul i obiectivele aplicaiei


Scopul aplicaiei este acela de a eficientiza att administrarea firmelor ce se ocup cu

activitatea de transporturi, ct i a departamentelor de logistic / transporturi din cadrul


companiilor mai mari.
Eficientizarea provine din din mai multe surse. n primul rnd, aplicaia ofer o viziune
de ansamblu asupra situaiei firmei / departamentului de transporturi, ceea ce duce implicit la
eficien n luarea deciziilor. n al doilea rnd, utilizarea aplicaiei presupune reducerea
numrului de procesri a documentelor.
Printre obiectivele urmrite de aplicaie putem enumera: oferirea unui program suport
pentru angajaii departamentelor de logistic, reducerea costurilor cu personalul i a altor costuri
administrative sau de logistic intern, implementarea unui sistem informatic modern n
companie, care sa susin aplicaia de administrare a logisticii dar i alte aplica ii administrative.
Nu n ultimul rnd, ca i obiectiv al aplicaiei pot meniona creterea nivelului profesional al
angajailor datorat utilizrii unei aplicaii moderne.
Din figura 3.1 observm fluxul informaional ce st la baza aplica iei. Astfel, dup introducerea
datelor acestea pot fi modificate sau pot fi efectuate calcule pe baza lor i n plus, pot fi
consultate att n starea lor initial, ct i dup ce au fost modificate. Obiectivul final este
obinerea de infomaii prin simpla vizualizarea de ansamblu a situaiei dar mai ales prin
vizualizarea rezultatelor obinute n urma efecturii calculelor.

16

Figura 3.5 Fluxul informaional ce st la baza aplicaiei

3.2 Proiectarea bazei de date


Proiectarea bazei de date presupune cunoaterea problemei ce trebuie rezolvat de ctre
aplicaie i n primul rnd cunoaterea datelor ce trebuie reinute (dimensiune, tipologie, etc).

3.2.1 Noiuni teoretice


n primul rnd, trebuie precizat faptul c realizarea unei aplicaii cu baze de date necesit
existena unui sistem de baze de date (DBS = Database System), ce reprezint un set de elemente
interconectate prin intermediul crora se realizeaz colectarea, stocarea i procesarea datelor.
Din figura 3.2 se observ faptul c utilizatorul interacioneaz cu sistemul de baze de date
prin intermediul produselor software instalate, care realizeaz legtura cu datele, dar i cu alte
aplicaii auxiliare.
Date

Software

Utilizator

Elemente auxiliare

Figura 3.6 Componentele arhitecturii unui sistem de baze de date, [LUVEBO09]

Din categoria produselor software, cel mai important este Sistemul de Gestiune a Bazei de
Date(SGBD), ce reprezint un ansamblu de programe ce ofer o interfa ntre baza de date i
utilizatori. Un SGBD este o component software a unui sistem de baze de date care
interacioneaz cu toate celelelte componente, asigurnd conectarea i independena dintre
elementele sistemului. [LUVEBO09]. Astfel, un SGBD are rolul de a asigura: definirea i
descrierea structurii bazei de date, ncrcarea i validarea datelor, accesul la date pentru opera ii
de consultare, interogare sau actualizare, mentenana bazei de date i protecia bazei de date.
Figura 3.3 prezint funciile unui SGBD (descriere, manipulare, administrare i utilizare), care
sunt interconectate i asigur funcionalitatea ntregului sistem. Astfel, funcia de utilizare are
rolul de a realiza interfaa cu utilizatorul, funcia de descriere definete structura bazei de date
prin limbajul de descriere a datelor (LDD), funcia de manipulare realizeaz inserarea i
17

prelucrarea datelor prin limbajul de maipulare a datelor (LMD), iar func ia de administrare
gestioneaz baza de date.

utilizatori

utilizare

manipulare

descriere

administrare

Baza de
date

Figura 3.7 Funciile unui SGBD, [LUVEBO09]

ntr-un sistem de calcul, datele sunt stocate att n memoria intern (temporar), dar mai
ales n memoria extern. Stocarea datelor n memoria extern a fost condiionat de aspecte
precum : accesul rapid i uor la date, volumul de date tot mai mare, cre terea complexit ii
datelor, perfecionarea echipamentelor de stocare i nu n ultimul rnd lucrul n reelele de
calculatoare.Stocarea datelor se poate face att n fiiere, ct i n baze de date (care au evoluat
din fiiere).
Baza de date este un ansamblu de colecii de date organizat coerent, structurat astfel nct
redundana s fie minim i controlat, iar accesul la date s fie permis mai multor utilizatori
simultan i n timp util. Dei exist mai multe generaii de baze de date (arborescente, re ea,
relaionale , orientate obiect), cele mai utilizate n practic sunt cele relaionale (aproximativ
>75% din total).
Pentru a nelege conceputul de baz de date, voi prezenta pe scurt elementele unei baze de date:

domeniul de valori desemneaz mulimea valorilor posibile pentru o caracteristic;


caracteristica reprezint definirea i descrierea unui anumit aspect dintr-o entitate din lumea

real;
familia de caracteristici reprezint ansamblul proprietilor care se refer la aceeai entitate
din lumea real;
18

colecia de date reprezint o familie de caracteristici asupra creia se aplic un predicat care
reprezint o legtur ntre colecia curent de date i o alt colecie.

Putem deci spune ca baza de date este un ansamblu de colec ii de date aflate n interdependen
mpreun cu descrierea datelor.
Revenind la modelul relaional, proiectarea unei baze de date presupune definirea
entitilor i a legturilor dintre acestea.Astfel, entitilevor fi definite sub forma unor tablouri
bidimensionale denumite tabele sau relaii. Conceptele utilizate sunt urmtoarele:

domeniul desemneaz ansamblul valorilor ce pot fi utilizate;


tabela sau relatia este un subansamblu al produsului cartezian dintre mai multe domenii,

caracterizat printr-o denumire;


atributul ilustreaz o coloan dintr-o tabel care are o denumire i care va lua valori dintr-un

domeniu. Unele atribute pot avea rolul de cheie;


tuplul (nregistrare/realizare/instan) este linia dintr-o tabela;
cheia reprezint un atribut ori un ansamblu de atribute cu rolul de a identifica un tuplu dintro tabel;

Definirea legturii dintre entiti se face la nivel logic prin construirea de asocieri cu ajutorul
unor atribute de legtur (chei externe).
Ansamblul tabelelor i al legturilor dintre acestea constituie schema bazei de date.
Un aspect important n realizarea unei baze de date este reprezentat de nlturarea anomaliilor.
Cea mai utilizat tehnic pentru rezolvarea acestei situaii este tehnica normalizrii care
presupune ca toate relaiile s respecte cele cinci forme normale.

3.2.2 Proiectarea practic a bazei de date


Proiectarea unei baze de date reprezint proiectarea schemei conceptuale (logice) i fizice
a acesteia pentru a rspunde cerinelor uneia sau mai multe aplicaii, sau mai exact pentru a
rspunde cerinelor utilizatorilor acesteia. Proiectarea unei baze de date este divizat astfel:
studiul cerinelor aplicaiei, proiectarea conceptual, alegerea unui SGBD, proiectarea logic i
proiectarea fizic a bazei de date.
n primul rnd trebuie analizate cerinele aplicaiei i ale situaiilor ce urmeaz a fi
rezolvate de ctre aceasta. Deoarece aplicaia urmeaz a fi utilizat de ctre mai multe persoane
n mod concurenial este nevoie ca aceasta s urmreasc o arhitectur client-server, deci i baza
de date utilizat trebuie sa fie adaptabil acestei situaii. Plusuri pentru folosirea acestei tipologii
sunt reprezentate de mrimea securitii datelor (care sunt situate pe o mainserver i pot fi
accesate doar n anumite condiii de ctre utilizatori), de eliberarea mainiiclient de procesele
de calcul dar i de faptul c aplicaia i implicit baza de date pot fi accesate de pe orice calculator
din reeaua local a companiei (ntruct vorbim despre o aplicaie bazat pe web).

19

Proiectul conceptual se realizeaz independent de Sistemul de Gestiune a Bazelor de Date ales, i


se reprezint n general prin modelul Entitate Asociere (Entity - Relationship) care se
concretizeaz ntr-o diagram Entitate-Asociere.
n proiectarea conceptual a bazei de date vor fi urmrii urmtorii pai:

Determinarea scopului bazei de date. Baza de date necesar aplicaiei de administrare a


activitii logistice pstreaz informaii despre mainile, oferii i cursele firmei de

transporturi n scopul calculrii de rezultate economice necesare administrrii activitii.


mprirea informaiilor n tabele. Se realizeaz prin gsirea celor mai importante entiti
sau subiecte din descrierea problemei reale. Observm astfel c principalele entit i sunt :

main, ofer, curs, defeciune, alimentare.


Transformarea elementelor de informaii n coloane. Vom decide ce informaii vor fi
stocate n fiecare tabel. Fiecare element devine un cmp afiat sub forma unei coloane a

tabelului.
Specificarea cheilor primare. Se alege coloana sau coloanele care vor identifica n mod
unic fiecare nregistrare din tabel.

n figurile 3.4 3.9 se observ faptul c atributele fiecrei entit i au fost transformate n
coloane ale tabelelor respective. n plus fiecare tabel are o cheie primar al crei rol este
acela de a identifica fiecare tuplu.

Figura 3.8 Tabela oferi

Figura 3.9 Tabela Maini

20

Figura 3.10 Tabela Curse

Figura 3.11 Tabela Defeciuni

Figura 3.12 Tabela Alimentri

Figura 3.13 Tabela Utilizatori

Configurarea relaiilor dintre tabele. Trebuie decis modul n care se asociaz datele dintrun tabel cu datele din alte tabele. Se observ din figurile 3.4 - 3.9 c a fost inut cont de
acest lucru deoarece unele tabele conin i chei externe care n alte tabele au rolul de chei
primare realizndu-se conexiunea dintre entiti. Tabela Utilizatori nu este legat de nici
21

o alt tabel deoarece este utilizat pentru administrarea aplicaiei i nu pentru


funcionalitatea activitii de transporturi.
Reprezentarea tabelelor mpreun cu relaiile dintre ele ilustreaz schema conceptual a bazei de
date sau diagrama Entitate - Asociere, prezentat n figura 3.10.

Figura 3.14 Schema conceptual a bazei de date

n figura de mai sus observm entitile i legturile dintre ele. Astfel, putem descrie baza de
date:

un ofer poate executa una sau mai multe curse, un ofer poate nregistra una sau mai
multe alimentri sau un ofer poate nregistra una sau mai multe defec iuni la ma ina pe

care o conduce.
main poate fi folosit n una sau mai multe curse, o main poate fi alimentat o dat
sau de mai multe ori i o main se poate defecta de una sau mai multe ori.

Legarea tabelelor este realizat prin chei externe. Astfel, id_sofer este cheie primar n tabela
soferi i cheie extern n tabelele curse, defeciuni i alimentri. Aceeai situaie se observ i n
cazul atributului nr_masina, cheia primar din tabela masini. Schema conceptual ilustreaz
faptul c avem un model de baz de date relaional, deoarece sunt prezente doar legturi de tipul
22

unul-la-mai muli. n cazul n care ar fi existat legturi de tipul mai mul i-la-mai mul i, atunci
acestea ar fi trebuit s fie aduse la forma unul-la-mai muli pentru a fi o baz de date relaional.
n cazul nostru schema conceptual coincide cu cea logic deoarece, aa cum am explicat
mai sus nu exist relaii mai muli-la-mai muli care s necesite transformare. Schema logic
este implementat in SGBD-ul ales (MySQL) prin preluarea schemei conceptuale i rafinarea ei
astfel nct s se utilizeze facilitile oferite de SGBD (modul de generare a cheilor primare,
definirea constrngerilor, etc).
Relaiile dintre tabele se stabilesc la momentul descrierii datelor prin LDD (limbajul de
descriere a datelor) cu ajutorul restriciilor de integritate. Restriciile de integritate sunt
implementate n SQL (Structured Query Language) cu ajutorul comenzilor CREATE TABLE i
ALTER TABLE i se clasific n restricii structurale i semantice. Primele se definesc prin
compararea unor valori din tabele i sunt reprezentate de: cheia unic (clauza UNIQUE),
restricia referenial (clauza FOREIGN KEY) i restricia entitii (clauza NOT NULL). A doua
categorie de restricii de integritate se definesc prin comportamentul datelor i in cont de
valorile din baza de date. Vorbim despre domeniul de valori al unui atribut, sau de restric iile
temporare care fac referire la valorile temporare obinute n urma calculelor.
Proiectarea fizic a bazei de date este reprezentat de alegerea structurilor de acces i
memorare a datelor, astfel nct acestea s fie optime. Se ine cont de timpul de rspuns,
utilizarea spaiului de memorie sau capacitatea tranzacional. Aceste decizii se pot lua dup
analiza aplicaiei care va utiliza baza de date i mai ales dup testarea funcionrii acesteia n
condiiile dorite (un anumit numr de utilizatori i un anumit volum de date). n principal,
analiza fizic a bazei de date are ca scop descoperirea atributelor care sunt cel mai frecvent
utilizate n interogri sau care sunt actualizate cel mai des, pentru stabilirea indexurilor
secundare ale relaiilor.
Un alt obiectiv care trebuie urmrit n proiectarea bazei de date este reprezentat de ctre
protecia bazei de date i ne referim la securitatea i integritatea datelor. Securitatea datelor este
realizat n primul rnd prin autorizarea i controlul accesului la date. Utilizatorii vor fi
identificai i vor avea anumite drepturi n ceea ce privete accesul la baza de date n func ie de
calitatea / funcia pe care o ndeplinesc. Un alt aspect ce ine de securitate este faptul c unele
date, cum ar fi parolele vor fi transmise codificat. Integritatea bazei de date este asigurat prin
restricii de integritate i validri asupra datelor, dar i prin salvarea unor copii de siguran
(backup).

3.3 Proiectarea interfeei


Interfaa (GUI - Graphical User Interface) este unul dintre cele mai importante elemente
ale unei aplicaii deoarece reprezint partea vizual cu care interacioneaz utilizatorul. Scopul
23

interfeei este acela de a face interaciunea utilizatorului ct de simpl i eficient posibil pentru
ca acesta sa-i ating obiectivele. Acest tip de gndire a interfe ei este de cele mai multe ori
denumit: user-centered design i anume aspect centrat pe utilizator i dup cum spune denumirea
se refer la faptul c atunci cnd se proiecteaz o interfa, persoana care folosete aplicaia
trebuie s fie cel mai important element luat n considerare. Procesul de dezvoltare a interfe ei
trebuie s balanseze funcionalitatea tehnic i elementele vizuale pentru a crea un sistem care
este nu doar operaional ci i utilizabil i adaptabil la schimbrile de care are nevoie utilizatorul.
Aspectul referitor la prezentarea informaiei este descris n articolul 12 al standardului ISO 9241
referitor la organizarea informaiei (aranjare, aliniere, grupare, etichetare, locaie), prin apte
atribute:

claritate: coninutul informaiei este redat rapid i exact;


discriminabilitate: informaiile redate pot fi distinse eficient;
simplitate: utilizatorii nu sunt suprancrcai cu informaii inutile;
consisten: un aspect unic, conform cu ateprile utilizatorilor;
detectabilitate: atenia utilizatorului este direcionat ctre informaia necesar;
lizibilitate: informaia este uor de citit;
nelegere: informaia este uor de neles, neambigu i uor recunoscut;

Aspectul aplicaiei este unul clasic pentru o aplicaie web, dar nu numai, i este reprezentat de
mprirea ferestrei browserului n 3 pari cu funcionaliti diferite, cum este prezentat n figura
3.11.

Figura 3.15 Aspectul general al aplicaiei

Se observ c fereastra browserului este mprit n 3 zone:

antetul - conine sigla companiei i alte informaii precum numele utilizatorului i ora;
meniul conine opiunile de navigare ctre modulele aplicaiei;
zona de lucru reprezint zona propriu-zis n care vor fi afiate formularele, rapoartele i
celelalte elemente vizuale ale fiecrui modul al aplicaiei;

24

4. Prezentarea aplicaiei privind logistica companiei


4.1 Implementarea aplicaiei
Pentru dezvoltarea aplicaiei am utilizat tehnologiile prezentate n capitolul 2 al curentei
lucrri. Astfel, am folosit ca i mediu de lucru Eclipse Juno (versiunea 4.2). Serverul web utilizat
este Apache care conine modulele de MySQL i PHP, iar pentru crearea structurii bazei de date
am folosit utilitarul MySQL Workbench. n timp ce partea care s-a ocupat cu func ionalitatea
aplicaiei a fost realizat n PHP i MySQL, pentru partea vizual a programului au fost utilizate
HTML, CSS i jQuery. Nu n ultimul rnd, a fost folosit cadrul de lucru ( framework) Codeigniter
care a facilitat implementarea arhitecturii Model-View-Controller.
Trebuie precizat c am utilizat PHP 5 cu facilitile sale de programare orientate pe
obiecte ceea ce a presupus implementarea de clase pentru entitile cu care lucreaz aplica ia i
implicit abstractizarea aplicaiei. Faptul c PHP 5 lucreaz cu obiecte face mult mai u oar
implementarea aplicaiei utiliznd arhitectura MVC.
Model View Controller ( model viziune unitate de control ) este un ablon
software care separ reprezentarea informaiei de interaciunea utilizatorului cu aceasta.Modelul
const n datele aplicaiei, logic i funcii necesare lucrului cu datele (regsire sau actualizare).
Modelul implementeaz practic lucrul cu baza de date. Viziunea (pagina de vizualizare) const n
prezentarea datelor i a informaiilor ctre utilizator. Viziunea implementeaz practic partea de
interfa grafic. Unitatea de control preia aciunile utilizatorului i le transform n comenzi
ctre model sau view. Unitatea de control implementeaz funcionalitatea aplicaiei.
Din figura 4.1, observm c atunci cnd utilizatorul interacioneaza cu un program,
lucreaz cu unitatea de control. La baz, unitatea de control reprezint punctul de start al
aplicaiei i controleaz fluxul de lucru bazat pe o anumit decizie a utilizatorului. Acesta
distribuie mai departe informaiile primite ctre model care le prelucreaz i formuleaz un
rspuns care este trimis napoi la unitatea de control. Acest rspuns este distribuit mai departe
ctre viziune care l red utilizatorului.

25

Figura 4.16 Arhitectura Model View - Controller

Din punctul meu de vedere, utilizarea unei arhitecturi de tipul MVC, este foarte util
deoarece impune o anumit rigurozitate n elaborarea codului surs, care n acest mod este mai
organizat i mai uor de urmrit i depanat. n plus, foarte multe funcii i metode pot fi utilizate
n mai multe module ceea ce duce la o programare eficient.
Aplicaia cuprinde 2 funcionaliti oarecum diferite. Prima se refer la manipularea
datelor desemnate de entitile bazei de date, n timp ce a doua parte se refer la posibilitatea
obinerii de grafice i rapoarte. Aceast separare este sugerat chiar de meniul aplicaiei.
n figura 4.2, care prezint meniul aplicaiei, se observ faptul c butoanele oferi, Ma ini,
Curse, Alimentri i Defeciuni reprezint entitie studiate sau tabelele din baza de date. Astfel,
fiecare seciune accesat prin aceste butoane va realiza operaii de manipulare a datelor din
tabela respectiv n principal, dar i din tabelele adiacente n cazul n care acestea sunt legate
ntre ele. Ultima opiune permite prezentarea unor grafice relevante pentru activitatea de
transporturi.

Figura 4.17 Meniul aplicaiei

26

4.1.1 Implementarea bazei de date i a funcionalitii acesteia


Implementarea bazei de date este realizat prin intermediul limbajului de descriere a
datelor (LDD) pentru crearea tabelelor, iar apoi prin limbajul de manipulare a datelor (LMD)
pentru popularea, regsirea i actualizarea datelor.
Crearea bazei de date a fost realizat utiliznd aplicaia MySQL Workbench care se
conecteaz la serverul MySQL i acceseaz baza de date. Crearea tabelelor poate fi fcut att n
mod vizual folosind asistentul aplicaiei, ct i prin scrierea de cod SQL. Spre exemplu, crearea
tabelei Soferi se realizeaz executnd urmtoarea comand SQL:
CREATE TABLE `logistica`.`soferi` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nume` VARCHAR(45) NULL ,
`prenume` VARCHAR(45) NULL ,
`cnp` VARCHAR(45) NULL ,
`varsta` INT NULL ,
`data_angajare` DATE NULL ,
`salariu` DOUBLE NULL ,
PRIMARY KEY (`id`) );

Se observ faptul c tabela soferi face parte din baza de date logistica, i are atributele: id,
nume, prenume, cnp, varsta, data_angajare i salariu, dintre care id este cheie primar.
Legturile dintre tabele sunt realizate prin intermediul cheilor externe, ns n cazul mysql nu
este neaprat nevoie ca acestea s fie declarate, ci este suficient ca atributele considerate chei
externe s aib aceeai denumire i tip de date ca i atributul din tabela printe. Putem vorbi
despre o legtur logic ntre tabele.
n ceea ce privete funcionalitatea bazei de date, acesta este realizat prin limbajul de
manipulare a datelor, apelat prin intermediul modelelor. Dup cum a fost prezentat anterior,
modelul reprezint o clas a aplicaiei care se ocup cu conectarea la baza de date i asigur
interfaa dintre aplicaie i baza de date.
Pentru implementarea modelelor am folosit o alt facilitate oferit de ctre Codeigniter i anume,
clasa Active Records, care permite scrierea comenzilor SQL, ntr-o manier orientat pe obiecte
specific PHP 5. Oferim ca exemplu operaiile executate pentru inserarea i actualizarea i
regsirea datelor din tabela soferi:

funcie pentru inserarea unei nregistrri n tabela soferi:


function add_sofer($nume,$prenume,$cnp,$varsta,$data_angajare,$salariu)
{
$this->db->set('nume',$nume);
$this->db->set('prenume',$prenume);
$this->db->set('cnp',$cnp);

27

$this->db->set('varsta',$varsta);
$this->db->set('data_angajare',$data_angajare);
$this->db->set('salariu',$salariu);
$this->db->insert('soferi');
}

n limbajul SQL, codul de mai sus este echivalent cu :


INSERT INTO SOFERI (nume, prenume, cnp, varsta, data_angajare, salariu) VALUES ($nume,
$prenume, $cnp, $varsta, $data_angajare, $salariu);

funcie pentru editarea unui tuplu din tabela soferi:


function edit_sofer($id, $nume, $prenume, $cnp, $varsta, $data_angajare, $salariu)
{
$this->db->where('id',$id);
$this->db->set('nume',$nume);
$this->db->set('prenume',$prenume);
$this->db->set('cnp',$cnp);
$this->db->set('varsta',$varsta);
$this->db->set('data_angajare',$data_angajare);
$this->db->set('salariu',$salariu);
$this->db->update('soferi');
}

Limbaj SQL: UPDATE soferi SET nume = $nume, prenume = $prenume, cnp = $cnp, data_angajare =
$data_angajare, salariu = $salariu, telefon = $telefon WHERE id= $id

funcie pentru stergerea unei nregistrri din tabela soferi:


function delete_sofer($id)
{
$this->db->where('id',$id);
$this->db->delete('soferi');
}

Limbaj SQL: DELETE FROM soferi WHERE id=$id

funcie pentru regsirea datelor din tabela soferi:


function get_soferi()
{
$return_array = array();
$this->db->select('*')->from('soferi');
$res = $this->db->get();
foreach($res->result_array() as $row)
{
$return_array[] = $row;
}
return $return_array;
}

Limbaj SQL : SELECT * FROM soferi ORDER BY nume, prenume

4.1.2 Implementarea interfeei i a funcionalitii acesteia


Interfaa este implementat utiliznd viziunile i unitile de control.Din prezentarea
arhitecturii Model View Controller, tim c viziunile se ocup cu prezentarea informa iilor
ctre utilizator, deci cu partea vizual a interfeei, n timp ce unitatea de control se ocup cu
funcionalitatea acesteia, ntruct preia cererile generate de aciunile utilizatorului i le
proceseaz, oferind un rspuns ce indic o nou direcie de navigare n cadrul aplicaiei sau
filtreaz o parte din informaiile ce trebuie redate. Vom oferi ca exemplu clasa Soferi, clas ce
28

implementeaz logica unei uniti de control a ablonului Model-View-Controller. Aceast clas


realizeaz listarea oferilor firmei i operaiile de adugare, editare sau tergere a unui ofer n
funcie de anumii parametri trimii n urma interaciunilor dintre utilizator i aplicaie.

funcie pentru listarea oferilor. Lista de soferi este regsit n baza de date prin apelarea
funciei get_soferi din modelul Soferi, iar apoi este trimis ctre viziune sub form
unui obiect json (javaScript object notation) fiind afiat.

public function lista()


{
$this->load->model('model_curse','curse');
$this->load->model('model_soferi','soferi');
$curse = $this->curse->get_curse();
$result = new stdClass();
$i=0;
foreach($curse as $row)
{
$sofer = $this->soferi->get_sofer($row['id_sofer']);
$row['sofer'] = '';
if(count($sofer)>0)
{
$row['sofer'] = $sofer['nume']." ".$sofer['prenume'];
}
$result->rows[$i]['id']=$row['id'];
$result->rows[$i]['cell']= array($i+1, $row['plecare'], $row['destinatie'],
$row['id_sofer'],$row['sofer'],$row['nr_masina'], $row['distanta'],$row['data']);
$i++;
}
echo json_encode($result);
}

funcie pentru adugarea, editarea sau tergerea unui ofer:

public function edit()


{
$oper = $this->input->get_post('oper');
$id = $this->input->get_post('id');
$plecare = $this->input->get_post('plecare');
$destinatie = $this->input->get_post('destinatie');
$id_sofer = $this->input->get_post('id_sofer');
$masina = $this->input->get_post('masina');
$distanta = $this->input->get_post('distanta');
$data = $this->input->get_post('data');
$this->load->model('model_curse','curse');
if($oper == 'add') $this->curse->add_cursa($plecare, $destinatie, $id_sofer, $masina,
$distanta,$data);
if($oper == 'edit') $this->curse->edit_cursa($id,$plecare, $destinatie, $id_sofer,$masina,
$distanta,$data);
if($oper == 'del') $this->curse->delete_cursa($id);
}

Din funciile prezentate mai sus, se observ clar rolul unit ii de control, i anume acela de a
dirija fluxul aplicaiei, ntre paginile ce trebuiesc afiate i elementele de logic ce asigur
funcionalitatea aplicaiei. Tot la partea de funcionalitate a aplicaiei se adaug accesul la
aplicaie pe baza unui nume de utilizator i a unei parole, care identific fiecare utilizator ce
lucreaz cu aplicaia. Pentru implementarea acestui modul, au fost create o viziune Login i o
unitate de control cu acelai nume. Acest modul, citete datele de autentificare i verific dac
sunt gsite n baza de date. n caz afirmativ, este permis accesul utilizatorului, n caz contrar,
29

accesul este interzis. Controlarea activitii de autentificare se desfoar dup cum urmeaz,
fiind gestionat de clasa Login:
class Login extends CI_Controller{
public function index()
{
$this->load->view('login/login');
}
public function check($username,$password)
{
$this->load->library('session');
$this->load->model('model_users','users');
$check = $this->users->check_user($username,$password);
if($check > 0)
{
echo 1;
$this->session->set_userdata(array('username'=>$username));
}
else echo 0;
}
}

Utilizatorii pot fi administrai din interiorul aplicaiei. Se ofer posibilitatea de a terge un


utilizator sau de a aduga altul. Implementarea modulului de autentificare este prezentat n
Anexa 1.
n ceea ce privete partea vizual a aplicaiei, un rol foarte important l-a avut limbajul
jQuery ce ofer o multitudine de extensii i teme pentru dezvoltarea unei interfee grafice
atractive.
Astfel, pentru listarea datelor regsite n tabelele bazei de date, a fost folosit extensia
(plugin) jqGrid, ce implementeaz un tabel i ofer faciliti de sortare, editare i rencrcare a
datelor. Aspectul unui tabel creat cu jQuery i jqGrid este prezentat n figura 4.3:

Figura 4.18 Tabel jqGrid

Respectivul tabel este construit ntr-o viziune, al crei cod este scris n HTML, javaScript i
jQuery i al crei rol este acela de a prezenta datele ntr-o manier u or de citit i de n eles i de
a realiza cererile ctre server. n continuare, vom vedea cum arat o astfel de viziune:
<script>
$(function(){
jQuery("#soferi_list").jqGrid({
url:'<?php echo $this->config->item('base_url');?>/soferi/lista',
editurl:'<?php echo $this->config->item('base_url');?>/soferi/edit',
datatype: 'json',
colNames:['Nr','Nume', 'Prenume', 'CNP', 'Varsta','Data
Angajare','Salariu','Vechime'],

30

colModel:[
{name:'nr',index:'nr', width:25, editable:false},
{name:'nume',index:'nume', width:180, editable:true},
{name:'prenume',index:'prenume', width:180, editable:true},
{name:'cnp',index:'cnp', width:110, editable:true},
{name:'varsta',index:'varsta', width:70, editable:true},
{name:'data_angajare',index:'data_angajare', width:125, editable:true},
{name:'salariu',index:'salariu', width:70, editable:true},
{name:'vechime',index:'vechime', width:70, sortable:false, editable:false}
],
sortname: "Nr",
rowNum:100000,
rowTotal:-1,
pgtext: "",
pgbuttons: false,
width:880,
toppager:true,
forceFit:true,
shrinkToFit:false,
pager: '#soferi_pager',
caption:"Lista soferi"
});
jQuery("#soferi_list").jqGrid('navGrid',"#soferi_pager",
{edit: true, add:true, del: true, search:false, cloneToTop:true, refresh:true},
{closeOnEscape:true},
{closeOnEscape:true}
);
});
</script>
<table id='soferi_list'></table>
<div id = 'soferi_pager'></div>

Observm c predomin codul jQuery ce realizeaz att prezentarea i formatarea


elementelor vizuale, ct i trimiterea cererilor ctre server.
Operaiile de inserare, actualizare sau tergere ce realizeaz manipularea bazei de date corespund
n interfaa aplicaiei anumitor formulare ce permit introducerea datelor.
Implementarea complet a modulului de administrare a oferilor este prezent n Anexa 2.

4.2 Utilizarea aplicaiei


Aplicaia este intuitiv i uor de utilizat de orice persoan, chiar i neini iat n lucrul cu
calculatorul sau n domeniul logisticii.
Primul pas care trebuie fcut pentru a putea folosi aplicaia este autentificarea, prin
introducerea numelui de utilizator i a parolei setate, ca n figura 4.4

31

Figura 4.19 Autentificare aplicaiei logistic

Dup autentificarea n aplicaie, utilizatorul are acces la cele trei zone de lucru ce vor fi
prezentate n ceea ce urmeaz. Implementarea paginii principale este prezentat n Anexa 3.
n primul rnd, zona din partea de sus a ecranului conine sigla companiei, numele aplica iei, iar
n partea dreapt, ora, numele utilizatorului conectat, un buton de administrare a utilizatorilor i
un buton de prsire a aplicaiei, dup cum este prezentat n figura 4.5:

Figura 4.20 Headerul aplicaiei

Administrarea utilizatorilor se face ntr-o fereastr de dialog, modal, care nu permite


interaciunea cu restul aplicaiei pn cnd nu este nchis. Astfel, se poate consulta lista
utilizatorilor conectai, se pot terge utilizatori (butonul Delete) sau pot fi aduga i utilizatori noi
(butonul Adaug utilizator).

Figura 4.21 Lista utilizatorilor autorizai

n cazul n care se dorete adugarea unui nou utilizator, va fi deschis o nou


fereastr, i aceasta modal, dup cum urmeaz:
32

Figura 4.22 Adugarea unui nou utilizator

Revenim la partea aplicaiei ce ine de domeniul logisticii i anume la meniul


situat n partea stng a ecranului care conine urmtoarele opiuni: Panou Central,
oferi, Maini, Curse, Alimentri, Defeciuni i Grafice.
Prima opiune (Panou central) reprezint ecranul de nceput al aplicaiei i
permite revenirea la acesta mai trziu. Acest ecran principal conine un grafic
dinamic ce reprezint una dintre cele mai relevante situaii de ieire din domeniul
transporturilor i anume Evoluia costului per kilometru. Efectund click pe orice
bar a graficului este prezentat un sumar al distanei parcurse i al costurilor din
respectiva lun, dup cum se observ n figura 4.8.

Figura 4.23 Panoul Central al aplicaiei

Efectund click pe butonul Soferi ne va fi afiat pagina de administrare a


oferilor, cum este prezentat n figura 4.9:
33

Figura 4.24 Lista oferilor

Operaiile de manipulare a tablei oferi din baza de date pot fi efectuate din aceast
pagin, prin intermediul butoanelor situate att deasupra tabelului ct si sub acesta. Observm
existena a 4 butoane de adugare, editare tergere i actualizare a listei. Formularele de adugare
i editare a oferilor sunt prezentate n figurile urmtoare:

Figura 4.25 Formular adugare ofer

34

Figura 4.26 Formular editare ofer

Apsarea butonului de tergere a unei nregistrri va duce la apariia unei casete de mesaj care
cere utilizatorului s confirme din nou intenia de a terge nregistrarea.

Figura 4.27 tergerea unui ofer din list

Deoarece una dintre regulile de prezentare a unei aplicaii precizeaz ca aceasta trebuie s aib
un aspect unitar, celelalte seciuni vor arta la fel ca seciunea oferi, diferind doar coninutul
acestora. Acest lucru se observ n figurile ce urmeaz:
35

Figura 4.28 lista de maini

Listele de curse, alimentri i defeciuni permit n plus filtrarea datelor n


funcie de o dat de nceput i una de sfrit.

Figura 4.29 Lista de curse

36

Figura 4.30 Lista de alimentri

Figura 4.31 Lista de defeciuni

Ultima opiune a meniului prezint o serie de grafice ce ofer informaii relevante despre starea
activitii de transporturi de-a lungul timpului i pot fi considerate suport pentru deciziile

37

viitoare. Dup cum se observ n figura 4.17, se poate alege o categorie de grafic, referitoare la
oferi, defeciuni, parcul auto sau furnizorii de combustibil.

Figura 4.32 Grafice

Astfel , n figura 4.18 este prezentat numrul de curse efectuate i ore efectiv lucrate de ctre un
ofer, n fiecare din lunile anului curent pn la cea prezent.

Figura 4.33 Numrul de curse efectuate de un ofer

Figura 4.19 prezint evoluia numrului de defeciuni nregistrate de ctre mainile firmei de-a
lungul timpului. Efectund click pe o bar a graficului, vor fi afiate mainile ce au avut nevoie
de reparaii n luna respectiv, mpreun cu oferul care a nregistrat defeciunea i data intrrii n
service.

38

Figura 4.34 numrul de defeciuni nregistrate

Figura 4.20 ilustreaz proporia mrcilor mainilor din parcul auto al firmei, iar la selectarea unui
productor de pe grafic vor fi afiate mainile corespunztoare acelui productor.

Figura 4.35 Situaie parc auto

39

n cele din urm, figura 4.21, prezint proporia furnizorilor de combustibil de la care
au fost efectuate alimentri.

Figura 4.36 Proporia benzinriilor de unde s-a alimentat

40

Concluzii

n concluzie, pot spune c tema aleas a fost una interesant i atractiv din punct de
vedere economic, dar mai ales din punct de vedere informatic. n ceea ce prive te domeniul
economic, tema a fost interesant deoarece a presupus cercetarea unui domeniu dinamic ce
implic costuri foarte ridicate i trebuie s fie optimizat. Din punct de vedere informatic,
atractivitatea temei s-a manifestat prin gsirea unei soluii de adminstrare a domeniului economic
studiat.
Cercetarea a presupus o documentare riguroas n domeniul bazelor de date i al
dezvoltrii web i s-a finalizat cu realizarea unei aplicaii web ce utilizeaz o baz de date i este
aplicabil oricrei firme din domeniul transporturilor. Aplicaia creat ofer posibilitatea
administrrii acestei activiti prin inerea unei evidene a personalului i vehiculelor i oferirea
unor rapoarte al cror rol este acela de a ajuta la luarea de decizii.
Soluia informatic realizat poate fi extins, iar una dintre primele idei de extindere este
implementarea unui modul care s permit localizarea autovehiculelor pe hart atunci cnd
acestea sunt n deplasare i un alt modul care s calculeze drumurile minime pentru optimizarea
transporturilor. Pot fi extinse i facilitile deja existente, prin adugarea unui numr mai mare de
situaii de ieire (grafice, rapoarte).

41

Referine bibliografice
[HEIVGL65]1

Heskett, Ivie & Glaskowsky - Business Logistics Management of

[AKFRDU05

Physical Supply and Distribution, Ronald Press Co, 1964


Mohammad Reza Akbary Jokar, Yannick Frein, Lionel Dupont Sur

]
[TH16]

levolution du concept de logistique, RIRL 2000


George Cyrus Thorpe Pure Logistics The Science of War

[MO96]

Preparation, Franklin Hudson Publishing Company, 1916


Charles Moeller Logistics concept development, Aalborg University

[LUCO06] 3

, 1996
Lect. Vasile Lupe, conf.dr. Ovidiu Cosma Supply Chain

[NOHU00]

Management (SCM) - Revista Informatica Economic nr.2 (38)/2006


Grant Norris, James Hurley E-business and ERP, University of

[WIKI01]

California, 2000
Wikipedia What You See Is What You Get

5
6
[WIKI02] 7
8
[LUVEBO099

-http://en.wikipedia.org/wiki/WYSIWYG
John Resig- jQuery Cookbook, OReilly Media, 2009
Michael Kofler The Definitive Guide to MySQL 5, Apress, 2005
CodeIgniter at a Glance
http://ellislab.com/codeigniter/user-guide/overview/at_a_glance.html
Model-view-contoller,Wikipedia
http://ro.wikipedia.org/wiki/Model-view-controller
Ion Lungu, Manole Velicanu, Iuliana Botha Database Systems

Present and Future, revista Informatica Economic vol. 13, no. 1/2009

[RE09]
[KO05]
[CO01]

Lista figurilor
Figura 1.1 Evoluia logisticii n cadrul firmei, [MO96].................................................4
Figura 1.2 Procese i fluxuri informaionale n lanul de desfacere, [NOHU00]...........8
42

Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura

1.3 Fluxul informaional al activitii logistice din cadrul unei companii..........9


2.1 Arhitectura Model View Controller, [WIKI02].......................................16
3.1 Fluxul informaional ce st la baza aplicaiei...........................................18
3.2 Componentele arhitecturii unui sistem de baze de date, [LUVEBO09]. . . .18
3.3 Funciile unui SGBD, [LUVEBO09]............................................................19
3.4 Tabela oferi............................................................................................ 21
3.5 Tabela Maini........................................................................................... 22
3.6 Tabela Curse............................................................................................ 22
3.7 Tabela Defeciuni..................................................................................... 22
3.8 Tabela Alimentri..................................................................................... 22
3.9 Tabela Utilizatori...................................................................................... 23
3.10 Schema conceptual a bazei de date....................................................23
3.11 Aspectul general al aplicaiei.................................................................26
4.1 Arhitectura Model View - Controller.......................................................27
4.2 Meniul aplicaiei....................................................................................... 28
4.3 Tabel jqGrid.............................................................................................. 32
4.4 Autentificare aplicaiei logistic...............................................................33
4.5 Headerul aplicaiei................................................................................... 33
4.6 Lista utilizatorilor autorizai.....................................................................34
4.7 Adugarea unui nou utilizator..................................................................34
4.8 Panoul Central al aplicaiei......................................................................35
4.9 Lista oferilor........................................................................................... 35
4.10 Formular adugare ofer........................................................................36
4.11 Formular editare ofer........................................................................... 36
4.12 tergerea unui ofer din list.................................................................37
4.13 lista de maini........................................................................................ 37
4.14 Lista de curse........................................................................................ 38
4.15 Lista de alimentri................................................................................. 38
4.16 Lista de defeciuni................................................................................. 39
4.17 Grafice................................................................................................... 39
4.18 Numrul de curse efectuate de un ofer................................................40
4.19 numrul de defeciuni nregistrate........................................................40
4.20 Situaie parc auto.................................................................................. 41
4.21 Proporia benzinriilor de unde s-a alimentat........................................41

Anexe
Anexa 1.Implementarea modulului de autentificare
class Login extends CI_Controller{
public function index()

43

$this->load->view('login/login');

public function check($username,$password)


{
$this->load->library('session');
$this->load->model('model_users','users');
$check = $this->users->check_user($username,$password);
if($check > 0)
{
$this->session->set_userdata(array("username"=>$username));
echo 1;
}
else echo 0;
}

<html>
<head>
<link rel="Stylesheet" type="text/css" href="htdocs/jquery/css/themes/uilightness/jquery-ui.min.css" />
<script src='htdocs/jquery/js/jquery-1.7.2.min.js'></script>
<script type="text/javascript" src='htdocs/jquery/js/jquery-ui1.8.20.custom.min.js'></script>
<script>
$(function(){
$("#btn_login").button()
.click(function(){
if($('#login_username').val()!="" && $("#login_password").val()!= "")
{
$.ajax({
type:'post',
url:'login/check/'+$('#login_username').val()+'/'+$("#login_password").val(),
success: function(data)
{
if(data == 1) {
window.location = "main";
}
else
{
$("#login_message").html("Numele de utilizator sau/si parola sunt
incorecte");
$("#login_username").val("");
$("#login_password").val("");
}
}
});
}
else alert("Completati numele de utilizator si parola");
});
$("#login_dialog").dialog({
modal:true,
width:400,
position: "center",
title: "Autentificare Administrare Logistica"
});
})
</script>

44

</head>
<body>
<div id='login_dialog'>
<div id='login_message'></div>
<table>
<tr><td>Nume utilizator </td>
<td><input type=text id='login_username' name="username"
style='width:200px;' /></td>
</tr>
<tr><td>Parola </td>
<td><input type=password id='login_password' name="password"
style='width:200px;' /></td>
</tr>
</table>
<button id='btn_login'>Autentificare</button>
</div>
</body>
</html>

Anexa 2. Implementarea modulului de administrare a oferilor:


// unitate de control
class Soferi extends CI_Controller{
public function lista()
{
$this->load->model('model_soferi','soferi');
$soferi = $this->soferi->get_soferi();
$result = new stdClass();
$i=0;
foreach($soferi as $row)
{
$data_ang = explode('-',$row['data_angajare']);
$an_angajare = $data_ang[0];
$an_curent = date('Y');
$row['vechime'] = $an_curent - $an_angajare;
$result->rows[$i]['id']=$row['id'];
$result->rows[$i]['cell']=array($i+1,$row['nume'],
$row['prenume'],$row['cnp'], $row['varsta'],$row['data_angajare'],
$row['salariu'],$row['vechime']);
$i++;
}
echo json_encode($result);
}
public function edit()
{
$oper = $this->input->get_post('oper');
$id = $this->input->get_post('id');
$nume = $this->input->get_post('nume');
$prenume = $this->input->get_post('prenume');
$cnp = $this->input->get_post('cnp');
$varsta = $this->input->get_post('varsta');
$data_angajare = $this->input->get_post('data_angajare');
$salariu = $this->input->get_post('salariu');
$this->load->model('model_soferi','soferi');

45

if($oper == 'add') $this->soferi->add_sofer($nume,$prenume,$cnp,$varsta,


$data_angajare,$salariu);
if($oper == 'edit') $this->soferi->edit_sofer($id,$nume,$prenume,$cnp,
$varsta,$data_angajare,$salariu);
if($oper == 'del') $this->soferi->delete_sofer($id);
}
}
// viziune
<script>
$(function(){
jQuery("#soferi_list").jqGrid({
url:'<?php echo $this->config->item('base_url');?>/soferi/lista',
editurl:'<?php echo $this->config->item('base_url');?>/soferi/edit',
datatype: 'json',
colNames:['Nr','Nume', 'Prenume', 'CNP', 'Varsta','Data
Angajare','Salariu','Vechime'],
colModel:[
{name:'nr',index:'nr', width:25, editable:false},
{name:'nume',index:'nume', width:180, editable:true},
{name:'prenume',index:'prenume', width:180, editable:true},
{name:'cnp',index:'cnp', width:120, editable:true},
{name:'varsta',index:'varsta', width:65, editable:true},
{name:'data_angajare',index:'data_angajare', width:125,
editable:true},
{name:'salariu',index:'salariu', width:65, editable:true},
{name:'vechime',index:'vechime', width:70, sortable:false,
editable:false}
],
sortname: "Nr",
rowNum:100000,
rowTotal:-1,
pgtext: "",
pgbuttons: false,
width:870,
toppager:true,
forceFit:true,
shrinkToFit:false,
pager: '#soferi_pager',
caption:"Lista soferi"
});
jQuery("#soferi_list").jqGrid('navGrid',"#soferi_pager",
{edit: true, add:true, del: true, search:false, cloneToTop:true,
refresh:true},
{closeOnEscape:true},
{closeOnEscape:true}
);
});
</script>
<table id='soferi_list'></table>
<div id = 'soferi_pager'></div>
// model
class Model_soferi extends CI_Model{
function __construct()
{
// Call the Model constructor
parent::__construct();
$this->load->database();
}

46

function get_soferi()
{
$return_array = array();
$this->db->select('*')->from('soferi');
$res = $this->db->get();
foreach($res->result_array() as $row)
{
$return_array[] = $row;
}
return $return_array;
}
function get_sofer($id)
{
$this->db->select('*')->from('soferi');
$this->db->where('id',$id);
$res = $this->db->get();
return $res->row_array();
}
function add_sofer($nume,$prenume,$cnp,$varsta,$data_angajare,$salariu)
{
$this->db->set('nume',$nume);
$this->db->set('prenume',$prenume);
$this->db->set('cnp',$cnp);
$this->db->set('varsta',$varsta);
$this->db->set('data_angajare',$data_angajare);
$this->db->set('salariu',$salariu);
$this->db->insert('soferi');
}
function delete_sofer($id)
{
$this->db->where('id',$id);
$this->db->delete('soferi');
}
function edit_sofer($id,$nume,$prenume,$cnp,$varsta,$data_angajare,
$salariu)
{
$this->db->where('id',$id);
$this->db->set('nume',$nume);
$this->db->set('prenume',$prenume);
$this->db->set('cnp',$cnp);
$this->db->set('varsta',$varsta);
$this->db->set('data_angajare',$data_angajare);
$this->db->set('salariu',$salariu);
$this->db->update('soferi');

ANEXA 3. Pagina principal a aplicaiei


<html>
<head>
<link rel="Stylesheet" type="text/css" href="htdocs/style.css" />
<link rel="Stylesheet" type="text/css" href="htdocs/jquery/css/themes/uilightness/jquery-ui.css" />

47

<link rel="Stylesheet" type="text/css" href="htdocs/jqgrid 3/css/


ui.jqgrid.css " />
<link rel="stylesheet" type="text/css" href="htdocs/jqPlot/jquery.jqplot.css"
/>
<script src='htdocs/jquery/js/jquery-1.7.2.min.js'></script>
<script type="text/javascript" src='htdocs/jquery/js/jquery-ui1.8.20.custom.min.js'></script>
<script type="text/javascript" src='htdocs/jqgrid 3/src/i18n/grid.localeen.js'></script>
<script src='htdocs/jqgrid 3/js/jquery.jqGrid.min.js'></script>
<script src='htdocs/clock.js'></script>
<script type="text/javascript" src="htdocs/jqPlot/jquery.jqplot.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.canvasTextRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.canvasAxisLabelRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.dateAxisRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.canvasTextRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.canvasAxisTickRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.categoryAxisRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.barRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.pieRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.categoryAxisRenderer.min.js"></script>
<script type="text/javascript"
src="htdocs/jqPlot/plugins/jqplot.pointLabels.min.js"></script>
<script type="text/javascript" src="htdocs/jquery.numeric.js"></script>
<script>
function print_content(id_content, page_title, id_grid)
{
$("#"+id_grid).jqGrid('setGridHeight','auto');
var disp_setting=" toolbar=yes, location=no,directories=yes,
menubar=yes,scrollbars=yes, width=1000, height=700, left=100, top=25";
var content_value = document.getElementById(id_content).innerHTML;
var docprint=window.open("","",disp_setting);
docprint.document.open();
docprint.document.write('<html><head><title>'+page_title+'</title>');
docprint.document.write('</head><body onLoad="self.print()"><center>');
docprint.document.write('</head><body><center>');
docprint.document.write(content_value);
docprint.document.write('</center></body></html>');
docprint.document.close();
docprint.focus();
}
$(function(){
$("#username_show").html('<?php echo $username;?>');
$("#btn_logout").button({icons:{primary:'ui-iconpower'}}).click(function(){
window.location = "login";
});

48

$("#admin").button({icons:{primary:'ui-iconperson'},text:false}).click(function(){
$('#dialog_users').load('<?php $this->config>item('base_url');?>users/users_list');
$
('#dialog_users').dialog({width:500,modal:true,title:'Lista utilizatori'});
});
$("#print").button({icons:{primary:'ui-iconprint'},text:false}).click(function(){
print_content("main_center");
});
$('.menu_button').button()
.click(function(){
var categorie = $(this).attr('categ');
$.ajax({
type: 'post',
url: <?php $this->config->item ('base_url');?
>'main/'+categorie,
success: function(data){
$("#main_center").html(data);
}
});
});
$("#main_panel_button").trigger('click');
})
</script>
</head>
<body>
<div id='main_top' class='ui-widget-header'>
<div style='width:150px; display:inline-block; position:absolute; top:0px;
left:0px;'>
<img src='htdocs/logo.png' style='background-color:transparent;
height:90px;' />
</div>
<div style='width:700px; display:inline-block; text-align:center;'>
<h2> Administrare Logistica </h2>
</div>
<div style='width:300px; display:inline-block; text-align:right; paddingright:50px; position:absolute; top:5px; right:5px;'>
<!--ceas -->
<div class="clock">
<div id="Date"></div>
<ul>
<li id="hours"></li>
<li id="point">:</li>
<li id="min"></li>
<li id="point">:</li>
<li id="sec"></li>
</ul>
</div>
<!-- ceas -->
<div id='username_show' style='padding-bottom:3px; paddingtop:1px;'></div>
<button id='admin' style='margin-right:5px; height:20px;
width:20px;'>Administrare utilizatori</button>
<button id='btn_logout' style='width:80px; height:30px; font-size:12px;
'>Logout</button>
</div>
</div>
<div id='main_left' >
<button id='main_panel_button' class='menu_button'
categ='panou_central'>Panou Central</button>

49

<button class='menu_button' categ='soferi'>oferi</button>


<button class='menu_button' categ='masini'>Maini</button>
<button class='menu_button' categ='curse'>Curse</button>
<button class='menu_button' categ='alimentari'>Alimentri</button>
<button class='menu_button' categ='defectiuni'>Defeciuni</button>
<button class='menu_button' categ='rapoarte'>Grafice</button>
</div>
<div id='main_center'>
</div>
<div id='dialog_users'></div>
</body>
</html>

ANEXA 4. Fi ierul CSS al aplica ei


#main_top
{
position:absolute;
left:0px;
top:0px;
height:100px;
width: 1100px;
border:1px solid silver;
text-align:center;
}
#main_left {
position: absolute;
left:0px;
top: 100px;
width:200px;
border:1px solid silver;
min-height:500px;
color:#FEFEFE;
text-align:left;
}
#main_center {
position:absolute;
left:200px;
top:100px;
width:880px;
min-height:480px;
border:1px solid silver;
padding: 10px;
}
button {
font-size:15px;
padding:3px;
}
.menu_button
{
width:100%;
margin: 0px;
padding:7px;
}
.clock { margin:0px; margin-left:10px; padding-top:5px; padding-bottom:1px;}

50

#Date {
font-family:'BebasNeueRegular', Arial, Helvetica, sans-serif;
font-size:15px;
text-align:right;
text-shadow:0 0 5px #00c6ff;
}
ul {
margin:0px; padding:0px;
list-style:none;
text-align:right;
}
ul li { display:inline;
font-size:14px;
text-right;
font-family:'BebasNeueRegular', Arial, Helvetica, sans-serif;
text-shadow:0 0 0px #FEFEFE;
}
#point { position:relative;
-moz-animation:mymove 1s ease infinite;
-webkit-animation:mymove 1s ease infinite;
padding-left:1px;
padding-right:1px;
}
/* Simple Animation */
@-webkit-keyframes mymove
{
0% {opacity:1.0; text-shadow:0 0 2px #FEFEFE;}
50% {opacity:0; text-shadow:none; }
100% {opacity:1.0; text-shadow:0 0 2px #FEFEFE; }
}
@-moz-keyframes mymove
{
0% {opacity:1.0; text-shadow:0 0 2px #FEFEFE;}
50% {opacity:0; text-shadow:none; }
100% {opacity:1.0; text-shadow:0 0 2px #FEFEFE; }
}

51