Documente Academic
Documente Profesional
Documente Cultură
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.
1. Prezentarea activitii de
Logistic
ntr-o companie
1.1 Logistica. Concepte generale
1.1.1
Scurt istoric
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]
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
Control
Operator
Executare
Figura 1.3 Fluxul informaional al activitii logistice din cadrul unei companii
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
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
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
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
biblioteci mici, iar celelalte biblioteci necesare sunt ncrcate dinamic la cerere;
este printre cele mai rapide cadre de lucru, n primul rnd datorit caracteristicii
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.
16
Software
Utilizator
Elemente auxiliare
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
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:
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:
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.
19
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.
20
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
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).
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:
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.
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
25
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.
26
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:
27
$this->db->set('varsta',$varsta);
$this->db->set('data_angajare',$data_angajare);
$this->db->set('salariu',$salariu);
$this->db->insert('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 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.
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;
}
}
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>
31
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:
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:
34
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.
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
36
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.
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.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.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.
39
n cele din urm, figura 4.21, prezint proporia furnizorilor de combustibil de la care
au fost efectuate alimentri.
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
[AKFRDU05
]
[TH16]
[MO96]
[LUCO06] 3
, 1996
Lect. Vasile Lupe, conf.dr. Ovidiu Cosma Supply Chain
[NOHU00]
[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
Anexe
Anexa 1.Implementarea modulului de autentificare
class Login extends CI_Controller{
public function index()
43
$this->load->view('login/login');
<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>
45
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');
47
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
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