Paunisabellaandreea [612903]

Universitatea POLITEHNICA Bucure ș ti
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială

LUCRARE DE LICENȚĂ
Gestionarea unei biblioteci online cu modul de rezervare
preliminară a căr ț i

Coordonator Absolvent: [anonimizat].dr.ing Alexandra Cernian Păun Isabella Andreea

2017

Cuprins
1. Introducere……………………………………………………………………………..3
1.1. Alegerea temei……………………………..….………………………………..3
1.2. Defini ț ii…………………………………………………………………………3
1.3. Arhitectura aplica ț iei………………………………………………….………..3
1.4. Organizarea aplica ț iei………………………………………………….……….4
2. Tehnologii utilizate…..………………………………………………………….….….5
2.1 Limbaje ………………………………………………………………….……..5
2.1.1. CSS………………………………………………….…………….……5
2.1.2. PHP………………………………………………………….…….……6
2.1.3. HTML 5………………………………………………………………..8
2.1.4. JavaScript………………………………………………………………9
2.2. Programe folosite………………………………………………………………9
2.2.1. Apache…………………………………………………………………9
2.2.2. MySQL………………………………………………………………..10
2.2.3. Google Chrome………………………………………………………11
2.2.4. PHPstorm…………………………………………………………….12
2.2.5. XAMPP………………………………………………………………13
2.2.6. Adobe Photoshop CS6……………………………………………….14
2.2.7. CakePhp………………………………………………………………15
3. Prezentarea platformei……………………………………………………………….16
3.1. Descrierea aplica ț iei………………………………………………………….16
3.2. Proiectarea aplica ț iei………………………………………………………….17
3.3. Obiectivul aplica ț iei………………………………………………………….21
3.4. Componentele necesare implementări……………………………………….22
4. Prezentarea modulelor aplica ț iei……………………………………………………..23
4.1. Modul Rezervare……………………………………………………………..23
4.2. Modul Împrumut……………………………………………………………..25
1

4.3. Manipulare produse site………………………………………………………26
4.4. Creare de filtre………………………………………………………………..28
4.5. Sistem multilanguage…………………………………………………………30
4.6. Setări site……………………………………………………………………..31
4.7. Trimitere mail-uri…………………………………………………………….32
4.8. Cron Jobs……………………………………………………………………..33
5. Bug-uri……………………………………………………………………………….35
5.1. Trimitere mail-uri…………………………………………………………….35
5.2. Unicitate pe cod de produs……………………………………………………35
6. Îmbunătă ț iri……… …………………………………………………………………..36
6.1. Cache…..……………………………………………………………………..36
6.2. Împrumut fără rezervare………………………………………………………36
6.3. Sistem de penalizări………………………………………………………….36
6.4. Import produse ( Excel/CSV )………………………………………………………………..37
6.5. Elemente meniu………………………………………………………………37
7. Concluzii……………………………………………………………………………..38
8. Bibliografie……………………………………………………………………………39
9. Anexe…………………………………………………………………………………41

2

1. Introducere

1.1. Alegerea temei
Scopul principal al aplica ț iei a fost acela de a da posibilitatea cititorului să verifice
disponibilitatea fizică a unei căr ț i în stocul bibliotecii în momentul căutării ș i în plus de a o
putea rezerva( pentru o perioadă de timp bine determinată) pentru a fi sigur că aceasta va
putea fi împrumutată când utilizatorul va ajunge în bibliotecă.

1.2. Defini ț ii
Gestiune: ​ “Administrare a bunurilor unei întreprinderi, institu ț ii sau persoane;
răspunderea păstrării bunurilor ș i a mânuirii fondurilor unei întreprinderi, institu ț ii sau
persoane; ansamblu de opera ț ii privind primirea, păstrarea ș i eliberarea unor bunuri materiale
apar ț inând altcuiva; (conc r.) totalitate a bunurilor încredin ț ate cuiva în vederea administrării
lor.”[1]
Preliminar:” ​ Ac ț iune premergătoare; introducere la ceva; preparative. “[2]

1.3. Arhitectura aplica ț iei:
Persoanele care utilizează aplica ț ia pot fi:
Admin : Are ca principale sarcini : manipularea produselor din site (adăugare, editare,
ș tergere), gestiunea perio adelor de timp pentru rezervările ș i împrumuturile de căr ț i (perioada
maximă de împrumut al unei căr ț i, perioada maximă de rezervare a unei căr ț i, numărul
maxim de prelungiri ale unei rezervări etc. ), gestionarea împrumuturilor ș i ale rezervărilor
(verificarea perioadelor)

Client: Persoana căruia îi este destinată aplica ț ia. El poate rezerva dar ș i împrumuta
căr ț i, poate verifica datele de expirare ale împrumuturilor ș i rezervărilor făcute.
3

Principalele componente ale platformei create sunt baza de date ș i interfa ț a cu
utilizatorul.
Cele mai importante date gestionate de baza de date sunt :
– produsele :
-descriere
-denumire
-diverse caracteristici specifice aplica ț iei ( editură, autor…..)
– utilizatori :
-date personale (nume, prenume …..)
-date de acces ( email, parolă)
– ac ț iunile utilizator ului :
-rezervări, împrumuturi (perioadă de valabilitate).

1.4. Organizarea aplica ț iei
Aplica ț ia are rolu l de a-i oferi utilizatorului posibilitatea de a vedea de oriunde ș i de
pe diverse device-uri produsele disponibile ș i de a rezerva în cazul în care acestea sunt
disponibile.

4

2. Tehnologii utilizate
2.1. Limbaje
2.1.1. CSS

​ CSS descrie cum sunt elemente de HTML pentru a fi afișate pe ecran, hârtie, sau în
alte medii.
CSS poate controla scheme de mai multe pagini web odată.
Foile de stil externe sunt stocate în fișierele CSS.
CSS este utilizat pentru a defini stilurile paginilor web, inclusiv de design, schemă și
variațiile de afișaj pentru diferite dispozitive și dimensiuni de ecran. CSS rezolvă o problemă
mare deoarece HTML-ul nu a fost niciodată destinat să conțină tag pentru formatarea unei
pagini web.HTML a fost creat pentru a descrie conținutul unei pagini web, precum:
<h1>Aceasta este o rubrică</h1>
<p>Aceasta este un paragraf.</p>
Atunci când etichetele ca <font>, și atributele de culoare au fost adăugate la HTML
3.2 conform specificației, a început un coșmar pentru dezvoltatorii web. Dezvoltarea de
site-uri de dimensiuni mari, unde fonturi și informații despre culoare au fost adăugate la
fiecare pagină, a devenit un proces de lungă durată și costisitor.Pentru a rezolva această
problemă, World Wide Web Consortium (W3C) a creat CSS.
CSS a scos stilul de formatare din pagina HTML.
5

Cu un fișier foaie de stil externă, puteți schimba aspectul unui întreg site web prin
schimbarea doar unui singur fișier.
CSS3 este cel mai recent standard pentru CSS.
Module CSS3
CSS3 a fost împărțită în “module “. Acesta conține "vechile specificații CSS " (care a
fost divizat în bucăți mai mici).
Unele din cele mai importante module CSS3 sunt:
1.Selectoare glisante
2.Model de casetă
3.Fundaluri și margini
4.Valori de imagine și înlocuirea conținutului
5.Efecte de text
6.Transformări 2D/3D
7.Animații
8.Coloană de scheme multiple
9.Interfață Utilizator
Majoritatea noilor proprietăți CSS3 sunt puse în aplicare în browserele moderne.
[9],[10]

2.1.2. PHP

​ PHP este suficient de puternic pentru a fi la nivelul de bază al sistemului de blogging
cea mai mare de pe web (WordPress). Este destul de profund pentru a rula cea mai mare rețea
6

socială (Facebook). De asemenea este suficient de ușor pentru a fi primul limbaj de server al
unui începător .
PHP este utilizat pe scară largă, open source , fiind un limbaj de scripting de uz
general potrivit în special pentru dezvoltarea aplica ț iilor web ce pot fi încorporate în HTML.
Con ț inutul dinam ic pe pagină este dat de PHP .El scrie, creează, deschide, închide ș i
cite ș te fi ș ierele aflate pe server.
Php poate cripta date dar ș i trimite cookies. Poate fi utilizat ș i pentru a modifica
datele dintr-o bază de date.
Exemplu PHP:
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
</head>
<body>
<?php
echo "Hi, I'm a PHP script!" ;
?>
</body>
</html>
În loc de multe comenzi folosite la HTML , paginile PHP con ț in HTML incorporat
cu partea de cod-sursa care face "ceva" (în acest caz, ieșirea "Hi, eu sunt un script PHP!").
[16],[17],[18]

7

2.1.3. HTML 5

HTML este elementul important al World Wide Web, utilizat pentru a descrie cum trebuie să
arate o pagină web.
HTML5 este cea mai recentă versiune, fiind cross-platform (poate fi utilizat de pe
smartphone, tabletă, notebook sau Smart TV ). Poate fi folosit atunci când nu sunte ț i
conectat la internet pentru a scrie aplica ț ii web .
Îmbunătă ț iri ale HTML5 :
● ​ <header> și <footer> tag-uri pentru a vă ajuta să izolați partea de sus și baza
blocurilor de conținut;
● ​ <Article> tag care identifică o anumită bucată de conținut singulară;
● <nav> tag ce prezintă blocurile de naviga ț ie;
● <section> tag care vă lasă să definiți o secțiune generică de conținut;
● ​ <audio> și <video> tag-uri utilizate pentru con ț inutul audio ș i video;
● ​ <embed> tag pentru a include conținut extern sau aplicații în pagină.

HTML5 este viitorul în navigarea pe web și va revoluționa cu siguranță modul în care
navigăm pe internet. [12],[13]

8

2.1.4. JavaScript

​ JavaScript este folosit pentru partea de dezvoltare web client-side (opera ț iile făcute de
client), fiind cel mai utilizat limbaj de scripting.
Limbajele de scripting sunt limbaje de programare dinamice care sunt compilate de
fiecare dată când se rulează.
– Un JavaScript constă în linii de cod de calculator executabil;
– Paginile HTML con ț in un JavaScript;
– Un JavaScript se poate utiliza atunci când un utilizator accesează un element HTML.
– HTML-ul poate fi modificat de un JavaScript.
– JavaScript validează datele ce urmează a fi puse pe server.
– JavaScript creează cookie-uri, acesta poate re ț ine informa ț ii despre vizitator. [14]

2.2. Programe folosite
2.2.1. Apache

​ Apache este gratuit, fiind cel mai utilizat server web. Are o sursă deschisă fiind
disponibilă pentru oricine, permi ț ând accesul către adaptare, optimizare ș i repararea codului,
astfel se pot adăuga module.
9

Se poate utiliza atât pentru site-uri mici cât ș i pentru cele complexe ajungând la mii de
pagini fiind disponibil static dar ș i dinamic.
Apache apar ț ine c elor de la Apache Software Foundation. Acesta oferă servicii
browserelor web client. La început a fost conceput pentru a lucra cu sistemele de operare
Linux/ Unix, urmând sa fie dezvoltat ș i pentru Windows ș i Mac.
Un rol foarte important în utilizarea Apache este dat de utilizarea protocolului
TCP/IP, urmat de comunicarea între re ț ele ș i existen ț a mai multor site-uri pe acela ș i server.
[4]

2.2.2. MySQL

​ MySQL este Open Source, fiind cea mai utilizată bază de date. Sistemul de gestionare
SQL este dezvoltat de My SQL AB.
Este una dintre părțile foarte populare platforme de Lamp,Linux, Apache, MySQL și
PHP. MySQL rulează pe o gamă largă de sisteme de operare, inclusiv UNIX sau Linux,
Microsoft Windows, Apple Mac OS X, și altele.Wikipedia, YouTube, Facebook folosesc
MySQL. Aceste site-uri gestionează milioane de interogări de fiecare zi. MySQL vine în
două versiuni: MySQL sistemul de server și MySQL sistemul încorporat.
MySQL se ocupă cu gestionarea bazelor de date. Acesta poate fi orice de la o simplă
listă de produse la cantități mari de informații în rețeaua companiei. My SQL server este
folosit pentru a accesa anumite date din calculator , dar ș i pentru a le procesa.
MySQL con ț ine b aze de date rela ț ionale care stochează i nforma ț iile în mai multe
tabele.
10

Pentru a putea oferi o viteză mai bună, structurile de date sunt organizate în fi ș ierele
fizice optimizate.
MySQL software poate fi utilizat ș i modificat de către orice utilizator, astfel se poate
utiliza fără a pla ț i ceva. B aza de date a server –ului MySQL este foarte rapidă ș i u ș or de
utilizat. [15]

2.2.3. Google Chrome

Google Chrome este un browser web gratuit de la Google. Acesta a fost prima dată
lansat în 2008, pentru Microsoft Windows ș i mai târziu a fost adaptată pentru Linux , macOS
, iOS ș i Android . Chrom e este cel mai popular browser web datorită caracteristicilor
avansate.
Viteză: Fiind echipat cu un motor V8 Java Script, Google Chrome este foarte rapid
astfel aplica ț iile web mai complexe nu devin o problemă.
Din punct de vedere al securită ț i, Google Chrome de ț ine foarte multe instrumente
pentru a vă men ț ine în sig uran ț ă online. Este actualizat constant m en ț inând protec ț ia asupra
celor mai periculo ș i viru ș i.
De asemenea Chrome dispune ș i de traduceri ale paginilor în limba selectată. [11]

11

2.2.4. PHPStorm

​ PhpStorm dispune de un editor pentru PHP , JavaScript și HTML.
Beneficiile utilizării PhpStorm:
1. Editor PHP inteligent
• finalizarea codului PHP
• suportul Smarty ș i PHPDoc
2. U ș or de instalat
3. Inspecție vizuală pentru depanare în interiorul IDE
PhpStorm vă oferă o variantă automată finalizării de cod, arătând toate fi ș ierele din
interiorul proiectului.
Aplicații PHPStorm
-Afișarea /Ascunderea vizualizărilor: o vedere permite programatorului PHP să vadă
anumite aspecte din cod;
-Personalizarea vederii;
-Accesarea fi ș ierelor din proiect;
-Posibilitatea de a se întoarce la editorul anterior;
-Restabilirea resurselor eliminate. [19],[20],[21]

12

2.2.5 XAMPP

XAMPP este gratuit și cu sursă deschisă la soluții pachet de platformă de server web,
constând în principal în bază de date Apache HTTP Server, MySQL și interpre ț ilor
pentru script scris în limbaje de programare PHP și Perl.
Numele lui XAMPP este un acronim pentru:
-X (a se citi "Cross" cu sensul platform)
-Apache HTTP Server
-MySQL
-PHP
-Perl
Avantajele XAMPP:
1. Ușor de instalat;
2. Are o platformă Multi Cross, XAMPP este disponibil pentru Linux , Mac și Windows.
3. Con ț ine o serie de mod ule: OpenSSL, phpMyAdmin , MediaWiki, Joomla, WordPress și
altele.
4. Se poate deschide ș i închide o anumită stivă de date print-o singură comandă.
[22],[23],[24]

13

2.2.6 Adobe Photoshop CS6

Adobe Photoshop apar ț ine celor de la Adobe Systems fiind o aplica ț ie software, fiind
un editor grafic.
Avantajele Photoshop-ului:
-lucrul cu straturi (layers);
-lucrul cu mă ș tile(Masks) ;
-aplicarea retu ș urilor;
-folosirea selec ț iilor pentr u a putea edita doar anumite zone;
Adobe Photoshop CS6 este un instrument foarte puternic de a edita imaginile. Este cel
mai popular fiind utilizat de milioane de persoane.
Cele mai noi instrumente de editare:
– Camera RAW: folosit pentru a putea de ț ine controlul imaginii, păstrând fi ș ierul
principal;
– Adobe Bridge: folosit pentru u ș urin ț a gestionări fi ș ierelor;
– Multitasking;
– Shadow / Highlight: folosit pentru a echilibra vizual imaginea prin îmbunată ț irea
contrastului;
– Suport HDR: utilizat pentru crearea imaginilor pe 32 de bi ț i;
– Blur Gallery : oferă 3 tipuri noi de efecte pentru blurare;[3]
14

2.2.7 CakePhp

​ CakePHP este open source utilizat pentru PHP. Acesta este destinat pentru a face
dezvoltarea, implementarea ș i între ț inerea aplica ț iilor mult mai u ș or. CakePHP este bazată pe
o arhitectură tip MVC care este atât de puternic și de u ș or de în ț eles.
Avantajele de folosire a CakePHP sunt următoarele:
-Open source;
-Cadrul MVC;
-Dezvolta rapid aplica ț iile;
-Motor Templating;
-Cache pentru opera ț ii;
-Cadru ușor (creare, citire, actualizare , ș tergere) interac ț iuni de baze de date;
-Biblioteci;
-Validarea încorporată;
-Email, cookie, securitate, sesiune și solicitarea de manipularea a componentelor;
-Vizualizarea ajutoarelor pentru AJAX, Javascript ș i HTML.
CakePHP este foarte important pentru dezvoltatorii de PHP. Îi ajută să construiască
aplica ț ii web complexe m ult mai repede. [6],[7],[8]

15

3. Prezentarea platformei
3.1. Descrierea aplica ț iei.
La modul general, sistemul de gestiune a unei biblioteci online trebuie să poată
îndeplini următoarele cerin ț e:
– să poată asigura gestiunea produselor afi ș ate pe site( adăugare, actualizare date,
ș tergere);
– mentenan ț a să se poată face într-un mod cât mai simplu ș i de către un utilizator mai
pu ț in experimenta t;
Pentru realizarea acestui proiect au fost luate în calcul în principal gestiunea
produselor, a rezervărilor ș i împrumuturilor realizate de către clien ț ii bibliotecii, gestiunea
utilizatorilor aplica ț iei.
Fiecare tip de utilizator al aplica ț iei are acces numai la facilită ț ile disponibile pentru
categoria din care face parte:
– clientul poate rezerva ș i împrumuta căr ț i, le poate re ț ine într-o lista de dorin ț e, î ș i
poate crea cont ș i administra datele de contact.

Figura 3.1.1 – Facilită ț ile utilizatorului
16

– administratorul de sistem asigură – a ș a cum am prezentat ș i mai sus – mentenan ț a
sistemului( produse, utilizatori, rezervări, împrumuturi); are acces la toate facilită ț ile
pe care le are un utilizator obi ș nuit, dar ș i la unele speciale ;

Figura 3.1.2 – Facilită ț ile administratorului

3.2. Proiectarea aplica ț iei
Pentru a putea fi îndeplinite toate cerin ț ele aplica ț iei am creat o bază de date
rela ț ională ( tabelele sunt legate între ele prin rela ț ii) în MySQL, unde au fost definite
următoarele tabele:
– Attributes ​ ( attribute_key, slag, slag_en,slag_ro, name_en, name_ro, type):
sunt păstrate datele ce reprezintă caracteristicile produselor; pot fi de tip text,
select sau checkbox;
– Attribute_Group ​ ( group_id, attribute_id, position): tabelă de legătură între
atribute ș i grupuri; cheia unică este formată din mai multe câmpuri( group_id
ș i attribute _id);
– Attribute_Values ​ (attribute_id, name_en, name_ro, slag,
slag_en,slag_ro,value, position): în această tabelă sunt salvate valorile
17

atributelor de tip select sau checkbox(a fost aleasă această metodă pentru a fi
eliminată redundan ț a datelor);
– Backend_Menus ​ (name_en, name_ro,parent_id, controller, action, parameters,
link, description, icon, position): ț ine toate butoanele/meniurile din zona de
administrare a site-ului; link-urile de pe butoane pot fi descrise prin
combina ț ia controller – action sau un link direct( nu este recomandată această
variantă);
– Company_Details ​ (company, logo, street,city,province, country, zipcode,cif,
norc, bank, bank_account,site, contact_name,phone, password, user_id):
păstrează datele clientului( în cazul nostru datele bibliotecii);
– Email_Lists ​ (email, client_name, email_subject, email_body, attachment,
from_email, from_name, from_user_id, cc, bcc, sent, provider, session_id,
created): păstrează coada de email-uri ce urmează a fi trimise;
– Email_List_Logs ​ (email, client_name, email_subject, email_body,
attachment, from_email, from_name, from_user_id, cc, bcc, sent, provider,
session_id, created): sunt salvate toate email-urile care au fost trimise;
– Email_Providers ​ (provider, max_email, priority, from, host,
username,password, port): sunt salva ț i providerii – clien ț ii de email – prin
intermediul cărora se face trimiterea mailurilor din aplica ț ie;
– Filter_Sets ​ (name_en, name_ro, frontend_name_en, frontend_name_ro,
deleted, slag, slag_ro, slag_en): sunt salvate datele de filtre;
– Filter_Sets_Attribute_Values ​ (filter_sets_id, attribute_id, attribute_value_id,
display, position):sunt păstrate datele pentru filtre( valorile de atribute
disponibile pentru un anumit filtru ș i ordinea în care să fie afi ș ate acestea în
site);
– Filter_Sets_Values ​ (position, filter_sets_id, deleted, attribute_id, type,
display); sunt salvate atributele în baza cărora să se facă filtrarea pe site; tipul
reprezintă modul de selec ț ie( select – selec ț ie simplă, checkbox – selec ț ie
multiplă);
18

– Image_Settings ​ (max_width, max_height, is_thumbnail): tabela păstrează
diferitele rezolu ț ii la care să se facă redimensionarea imaginilor uploadate în
aplica ț ie(ex: pentru afi ș area imaginilor pe un devic e mobil nu este nevoie de
preluarea imaginii full, fiind suficientă una cu acelea ș i propor ț ii, dar de
dimensiune mai mică);
– Languages ​ (name, iso, country, currency_id,cake_type,active,image):
păstrează limbile în care poate fi tradusă aplica ț ia;
– Loans ​ (user_id, product_id,name, email, phone, created, expires, active,
extensions_nr): tabela în care sunt salvate toate căr ț ile împrumutate( care se
află în momentul de fa ț ă la cititori, dar ș i cele care au fost returnate); salvează
date precum utilizatorul care a împrumutat cartea, ce carte a împrumutat, dacă
ș i de câte o ri a fost prelungit împrumutul căr ț ii respective ș i data limită la care
ar trebui returnată cartea( se actualizează automat la fiecare prelungire a unui
împrumut);
– Products ​ (name_en, name_ro, description_en, description_ro, sku, active,
stock, show_to_frontend): reprezintă tabela în care sunt păstrate anumite date
despre produsele manipulate de aplica ț ie);
– Product_Attributes ​ (product_id, attribute_id, attribute_value_id, value_en,
value_ro, attribute_type): este o tabelă de legătură între produse ș i anumite
caracteristici ale acestora; se salvează cheia către un produs, atributul asociat
acestuia( cheia către valoarea de atribut pentru cele de tip select sau checkbox)
sau o valoare specifică fiecărui produs pentru atributele de tip text;
– Product_Images ​ (product_id, folder,filename,position,is_main): sunt salvate
imaginile produselor din site; în cazul în care un produs are mai multe imagini
este nevoie de câmul is_main pentru a ș ti ce imagine să fie afi ș ată în listarea
de produse;
– Product_Loans ​ (product_id, loans_nr): este o tabelă care se actualizează de
fiecare dată când o carte este împrumutată; este folosită la afi ș area celor mai
cerute căr ț i din bibliotecă;
19

– Product_Stocks ​ (product_id, stock): se actualizează în momentul în care o
carte este împrumutată sau returnată de către un cititor; este utilă petru a ș ti
stocul exact la fiecare moment de timp pentru fiecare carte manipulata de
aplica ț ia creată;
– Reservations ​ (user_id, product_id, name, email, phone, extensions_nr,
created, expires): tabela în care sunt păstrate datele rezervărilor făcute de către
clien ț i;salv ează date precum utilizatorul care a rezervat cartea, ce carte a
rezervat, dacă ș i de câte ori a fost prelungit rezervarea căr ț ii respective ș i data
limită la care expiră rezervarea( se actualizează automat la fiecare prelungire a
unei rezervări);
– Routes ​ (active, seo_link, cake_link, element, element_id, subelement_id,
meta_title, meta_description, meta_kw, language): este folosită pentru SEO(
indexarea în google), dar ș i pentru afi ș area de link -uri friendly-user( ajuta
totodată ș i la securitatea aplica ț iei);
– Settings ​ (title_en, title_ro, name, category_ro, category_en, value, value_ro,
type, position, active, for): tabelă ce oferă aplica ț iei o flexibilitate sporită(în ea
sunt salvate date pot fi modificate foarte u ș or de către un utilizator cu rol de
administrator prin intermediul aplica ț iei);
– Translations ​ (type, domain, message_en, message_ro): în această tabelă sunt
salvate datele ce permite aplica ț iei să fie de tip multilanguage; cu ajutorul
datelor păstrate aici sunt generate fi ș ierele .pot cu ajutorul cărora sunt traduse
toate mesajele din site;
– Users ​ (login_hash, email, sex, password, role_id, first_name, last_name,
phone, cnp, active, deleted, created, modified): aici sunt păstrate toate datele
utilizatorilor aplica ț iei( atât clien ț ii bibliotecii, cât ș i administratorii aplica ț iei);
– User_Roles ​ (name, client_default): tabelă ce păstrează toate posibilele roluri
ale utilizatorilor aplica ț iei;
– Wishlist ​ (user_id, active): în această tabelă sunt salvate date necesare pentru
lista de dorin ț e a fiecărui utilizator al aplica ț iei( se generează câte o singură
20

linie pentru fiecare client în parte în momentul în care acesta adaugă prima
dată un produs în lista de dorin ț e);
– Wishlist_Products ​ (wishlist_id, product_id): reprezintă o tabelă de legătură
între produse ș i utilizatorii aplica ț iei; cheia unică e ste formată din două
câmpuri( wishlist_id – care la rândul lui este unic pentru fiecare utilizator în
parte ș i product_id) pentru a se evita redundan ț a datelor;

Figura 3.2.1- Diagrama bază de date

3.3. Obiectivul aplica ț iei
Obiectivul aplica ț iei create a fost acela de a realiza un sistem flexibil, u ș or de folosit(
atât de către utilizatorii aplica ț iei cât ș i de către administratorii de sistem) care să dea
posibilitatea clien ț ilor une i biblioteci de a- ș i rezerva o carte înainte de a ajunge personal în
bibliotecă pentru a o ridica.

21

3.4. Componentele necesare implementări
Atât pentru implementarea cât ș i pentru testarea aplica ț iei a fost folosit un laptop ce
are următoarea configura ț ie:
– Laptop Asus X 550J
– Procesor Intel Core I7-410HQ
– Memorie RAM 4.00 GB
Pentru implementare ș i testare au fost folosite mai multe programe:
– diferite browsere (în special pentru partea de testare): Google Chrome, Mozilla
Firefox, Opera, Microsoft Edge;
– editor de text; PHPStorm

22

​ 4. Prezentarea modulelor aplica ț iei

Principalul obiectiv al aplica ț iei a fost acela de a facilita accesul utilizatorilor la baza
de date a bibliotecii, ace ș tia putându- ș i asigura preliminar căr ț ile înainte de a le împrumuta.
Pe lângă principalele două module( rezervare ș i împrumut), aplica ț ia creată
beneficiază ș i de alte siste me:
– manipulare produse site
– creare de filtre
– sistem multilanguage
– setări site
– trimitere mail-uri

4.1. Modul Rezervare

Acest modul este cea mai importantă parte a aplica ț iei( reprezintă scopul pentru care
aceasta a fost creată).
Pentru ca un utilizator să poată face o rezervare în sistem, este necesară crearea unui
cont. În acest mod, biblioteca asigură securitatea cărților pe care le deține ș i le împrumută
cititorilor.
Produsele bibliotecii pot fi vizualizate de oricine, însă în momentul în care acesta
dore ș te să facă o rezervar e, sistemul obligă la autentificare( sau la crearea unui nou cont).
Pentru utilizatorii care nu sunt autentifica ț i pe site, în momentul apăsării butonului
Rezervă din pagina de produs, se deschide un pop-up în care se cere autentificarea sau
crearea unui cont nou( img).
23

Figura 4.1.1 – Autentificare

În cazul în care un utilizator( ce are cont pe site) dore ș te să rezerve o carte ș i aceasta
nu este disponibilă la momentul respectiv, acesta poate să adauge cartea într-o listă de dorin ț e
pentru a o putea rezerva ș i împrumuta în momentul în care aceasta devine disponibilă.
Dacă însă produsul este disponibil la momentul rezervării, se va deschide un pop-up
în care cititorul trebuie să introducă datele de contact după care se va face rezervarea. Caseta
destinată unei rezervări arată ca în imaginea de mai jos.
24

Figura 4.1.2 – Detalii rezervare

Deoarece un client trebuie să fie autentificat în momentul în care se face o rezervare,
datele se vor completa automat. Cititorul are însă ș i posibilitatea de a modifica datele de
contact.
Atunci când se adaugă o rezervare nouă, în baza de date sunt salvate datele de contact
introduse de utilizator în formular, dată din momentul respectiv, referin ț e către utilizator ș i
cartea respectivă, data la care va expira rezervarea, precum ș i numărul de prelungiri la care a
fost supusă acea rezervare(implicit 0)

4.2 Modul Împrumut

În cadrul acestei versiuni a aplica ț iei, împrumutul unei căr ț i se poate realiza numai
dacă a fost făcută o rezervare înainte. Dorim extinderea acestei func ț ionalită ț i în versiunea a
doua a proiectului.
Pentru acest modul, există ni ș te setări prestabilite ce pot fi modificate de către
administratorul site-ului precum: numărul maxim de posibile prelungiri ale împrumutului
25

unei căr ț i, numărul maxim de zile cu care un împrumut poate fi prelungit sau numărul maxim
de zile ale unui împrumut standard.
Fiecare utilizator al aplica ț iei poate vedea detaliile tuturor împrumuturilor făcute, fie
ele active( cartea încă se află la el), fie inactive( cartea a fost returnată bibliotecii) din pagina
Împrumuturile mele.
Pentru fiecare împrumut activ, utilizatorul poate prelungi termenul scadent de
returnare a căr ț ii( în limit a numărului maxim de posibile prelungiri stabilit de către
administrator din setările site-ului; în momentul în care s-a atins acest număr maxim,pentru
căr ț ile la care această con di ț ie a fost îndeplinită, în listarea de împ rumuturi nu va mai fi
disponibil butonul de prelungire).

Figura 4.2.1 – Detalii imprumuturi
În momentul în care o carte este returnată de către un cititor, se actualizează ș i stocul
ei (astfel se poate avea o eviden ț ă exactă asupra căr ț ilor disponibile pentru rezervare sau
împrumut la un anumit moment de timp).

4.3 Manipulare produse site

Ca la orice aplica ț ie din această categorie, este necesară manipularea unor produse.
Acest lucru se poate face de către administratorii de sistem( angaja ț ii bibliotecii ). Ace ș tia pot
adăuga, actualiza sau ș terge produsele din sistem.
Pagina de adăugare a unui produs arată ca în figura de mai jos:
26

Figura 4.3.1 – Adăugare produs

Datele care se re ț in în baza de date pentru fiecare produs se împart în 3 mari categorii:
mandatory data, images ș i atribute.
Mandatory data reprezintă – a ș a cum sugerează ș i denumirea – acele date care trebuie
să existe în mod obligatoriu pentru fiecare produs. Acestea sunt: denumirea, o scurtă
descriere, SKU/codul de produs( unic pentru fiecare în parte), o variabilă care spune dacă
respectivu produs este sau nu afi ș at pe site ș i stocul ( numărul de bucă ț i pentru fiecare carte în
parte; acesta este format din numărul de produse împrumutate ș i de numărul de căr ț i
disponibile la acela ș i mom ent de timp).
Pentru afi ș area pr oduselor în site este nevoie ca fiecare produs să aibă cel pu ț in câte o
imagine. Aplica ț ia creată permite adăugarea mai multor imagini pentru fiecare produs în
parte. Fi ș ierele sunt salva te pe disc pe structură de foldere.
Atributele reprezintă caracteristicile produselor( ex: autor, editură, număr de pagini,
etc. ). Nu este obligatorie setarea pentru un produs a tuturor atributelor din site. Tipurile de
27

atribute în acest moment sunt: checkbox ( permite setarea mai multor valori simultan pe un
singur produs; de ex. o carte poate avea mai mul ț i autori), select ( permite setarea unei
singure valori pentru un produs; ex: o carte nu poate avea mai multe edituri în acela ș i timp),
text( trebuie introdusă manual valoarea pentru fiecare produs în parte; valorile sunt diferite
pentru fiecare limbă a site-ului). În func ț ie de aceste atribute se poate face o filtrare pentru a
facilita căutarea unui anumit produs pe site.
A fost adoptată această metodă( fiecărui produs din site i se poate sau nu seta un
anumit atribut) deoarece acest lucru oferă o flexibilitate sporită aplica ț iei. Totodată, datorită
modului de rezolvare adoptat a fost ș i optimizată baza de date.

4.4 Creare de filtre

Un filtru reprezintă produsele listate la un moment dat pe site. Acestea sunt create în
baza unor atribute(împreună cu valorile lor).
La crearea unui filtru pot fi setate mai multe op ț iuni.

Figura 4.4.1 – Filtre produs
28

A ș a cum se poate observa în imaginea de mai sus, putem alege:
– ce atribute să fie afi ș ate – Display attribute – (dintre acestea un utilizator poate filtra
produsele afi ș ate p entru ca în final să poată ajunge mai u ș or la produsele dorite);
– general information reprezintă numele filtrului( este cheia unică după care un filtru
poate fi găsit în baza de date);
– attributes:( în aceasta casetă sunt înlăn ț uite toate atributele de tip checkbox sau
select(care au valori) salvate în baza de date; în momentul în care unui atribut i se
setează o pozi ț ie, înseamnă că în func ț ie de acel atribut va putea fi făcuta o filtrare în
lista de produse afi ș ate, totodată acea pozi ț ie reprezentând ordinea în care atributele
vor fi afi ș ate în sit e; tipul de atribut poate fi dropdown( pentru o filtrare poate fi
selectată o singură valoare a acelui atribut) sau checkbox( la o filtrare pot fi alese una
sau mai multe valori ale atributului); în acela ș i timp, în momentul în care unui atribut
i se asociază o pozi ț ie, în caseta attribute values vor apărea toate valorile acelui
atribut, a ș a cum e ste prezentat în imaginea de mai jos;

Figura 4.4.2 – Valori atribut
29

– attribute values: a ș a cum a fost prezentat ș i mai sus, în această casetă vor fi afi ș ate
valorile tuturor atributelor cărora le-a fost setată câte o pozi ț ie; asemenea atributelor,
li se poate asocia câte o pozi ț ie ș i valorilor de atribute; în plus, la acestea se poate
alege dacă respectiva valoare să apară sau nu în site( bifarea casetei din dreptul
numelui valorii de atribut semnifică faptul că s-a ales ca avea valoare de atribut să
apară în site);

4.5 Sistem multilanguage

Sistemul multilanguage permite aplica ț iei posibilitatea de extindere pe viitor în
diferite ț ări. În acest mom ent sistemul este format din două limbi: română ș i engleză, iar
administrarea lui fiind un pic mai greoaie( atunci când în sistem – tabela languages – este
introdusă o nouă limbă, mai trebuiesc introduse câmpuri noi ș i în alte tabele: products pentru
nume ș i descriere, transla tions, etc. ).
Pentru această func ț ionalitate a platformei create a fost folosită func ț ia ​ i18n ​ (o
descriere mai amănun ț ită a ei poate fi găsită în link-ul următor:
https://book.cakephp.org/2.0/en/console-and-shells/i18n-shell.html ​ ). După ce a fost rulată
func ț ia i18n, pentru ca sis temul să ruleze corespunzător mai trebuiesc rulate două func ț ii:
importTextToTranslate ș i generateTranslatedFiles( aceste func ț ii vor fi descrise într-un
modul posterior).
După rularea func ț iei i18n(care preia din cod toate mesajele ce trebuiesc traduse – în
momentul de fa ț ă limba d e bază a site-ului este limba română) urmează func ț ia
importTextToTranslate. După rularea mesajele ce trebuiesc traduse pot fi găsite în aplica ț ie(
Translations -> Frontend Translations), a ș a cum se vede în imaginea de mai jos:
30

Figura 4.5.1 – Sec ț iunea traducere
Mesajele în limba română sunt de tip read-only( ele nu trebuiesc modificate deoarece
sistemul le caută în cod exact în această formă), pentru fiecare existând posibilitatea de a fi
tradus în celelalte limbi ale site-ului(în cazul de fa ț ă, limba engleză).
După ce mesajele au fost traduse trebuie executată ș i func ț ia generateTranslatedFiles
pentru ca sistemul multilanguage să fie func ț ional.

4.6 Setări site
Componenta de setări site asigură flexibilitatea aplica ț iei, în sensul că în func ț ie de
datele salvate cu ajutorul acestei func ț ionalită ț i sistemul poate avea un comportament diferit(
spre exemplu, cu ajutorul acestor setări se poate modifica durata maximă în zile a unui
împrumut, durata maximă a men ț inerii unei rezervări în sistem, numărul maxim de posibile
prelungiri ale unei rezervări sau ale unui împrumut, datele de logare pentru pentru sistemul de
trimitere mailuri – datele pentru clientul de mail de pe care să se trimită mailurile din site,
etc).
31

Figura 4.6.1 – Setări site
Aceste setări nu sunt administrabile, ci pot fi introduse numai manual în baza de date,
deoarece pentru func ț ionarea lor este necesară interven ț ia asupra codului aplica ț iei, ceea ce
poate fi făcut numai de către un programator( pentru a nu risca producerea de bug-uri în
diverse func ț ionalită ț i ale platformei).

4.7 Trimitere mail-uri
Componenta de trimitere de email-uri a fost creată pentru a putea avea o eviden ț ă
asupra mailurilor care se trimit din aplica ț ie. Pentru această func ț ionalitate a fost necesară
adăugarea în tabela de setări a datelor de logare la clientul de mail de pe care să se trimită
toate mailurile din site( host, user, parolă, port).
Pentru optimizarea sistemului s-a adăugat tabela de email_providers(fiecare provider
are o prioritate ș i un num ăr maxim de trimitere de mailuri pe oră). Pentru fiecare email ce
trebuie trimis se alocă un provider ș i se salvează câte o linie în tabela email_lists. După
execu ț ia job-ului de trimi tere mailuri( sendEmailFromList) datele sunt trimise în tabela
email_list_logs.
32

4.8 Cron Jobs
Sunt acele func ț ii care “activează” diverse func ț ionalită ț i ale sistemului. Acestea se
împart în trei categorii: cele care trebuie să ruleze automat la anumite intervale de timp, cele
care trebuiesc rulate manual după diferite interven ț ii făcute de către administrator( toate
aceste func ț ii se găsesc în Settings -> Cronuri), dar ș i func ț ii care rulează în fundal( în
interiorul altor func ț ii; vo r fi descrise mai jos).

Figura 4.8.1 – Func ț ii care rulează în fundal

A ș a cum se vede î n imaginea de mai sus, în momentul de fa ț ă sunt disponibile ș ase
astfel de func ț ii pentru ad ministrator.
Func ț ii ce rulează automat la intervale bine determinate:
– removeExpiredReservations: se execută o dată pe zi; aduce din baza de date
toate rezervările a căror dată de expirare este identică cu data curentă(zi, lună,
an) ș i le ș terge;
– sendEmailFromList: este necesar să ruleze la un interval foarte mic de timp( o
dată pe minut) pentru ca mail-urile să se trimită foarte repede; preia datele din
tabela email_lists( liniile care nu au session_id ș i provider setat ș i unde sent
este 0), le trimite ș i apoi scrie liniile care au fost trimise cu succes în tabela
email_list_logs( creată pentru a se putea ț ine eviden ț a email-urilor trimise din
site);
33

Func ț ii ce se exec ută manual de către administrator:
– importTextToTranslate: se execută după ce se termină rularea func ț iei i18n din
cake, preia datele din fi ș ierele .pot rezultate ș i le salvează în tabela translations
din baza de date;
– clearCache: se poate executa oricând; ș terge datele din memoria cache;
– updateProductStocks: se execută după ce în site au fost adăugate produse noi(
se poate face ș i o metodă automată a ei); caută în tabela de produse pe acelea
care nu se regăsesc în tabela product_stocks ș i apoi salvează stocurile în
această tabelă(pentru produsele rezultate);
– generateTranslatedFiles: rulează după ce au fost traduse mesajele din aplica ț ie;
preia datele din tabela translations ș i generează fi ș ierele .pot în folderul Locale
pe disc;
Func ț ii ce rulează în fundal (în interiorul altor func ț ii):
– resizeImg: func ț ie ce se execută la adăugarea de produse din site(în cazul în
care produsul nou salvat are imagini se face un resize la toate dimensiunile din
setările aplica ț iei);
– generateProductsThumbs: func ț ie ce se execută la adăugarea de produse din
site(în cazul în care produsul nou salvat are imagini, pentru fiecare se
generează câte o imagine de tip thumb);
– createTempTable: rulează în momentul în care se creează sau editează filtre
din aplica ț ie; pentru fiecare filtru se scriu date despre atributele ș i valorile lor
în tabela temp_prod_attributes);

34

5. Bug-uri

5.1 Trimitere mail-uri
În aceasta versiune a aplica ț iei componenta de trimitere mail-uri func ț ionează par ț ial:
problema apare în momentul în care se iau email-urile din baza de date( tabela email_lists) ș i
se încearcă trimiterea lor. Acestea apar ca fiind trimise, se ș terg din tabela respectivă, se
salvează în email_lists_logs, însă ele nu ajung.
Dorim ca această problemă să fie rezolvată în versiunea a doua a proiectului.( după
implementarea sistemului de cache-ing se pot păstra toate codurile de produs existente fără a
mai face o interogare asupra bazei de date la fiecare adăugare a unui produs, ceea ce ar
facilita rezolvarea acestei probleme).

5.2 Unicitate pe cod de produs
O problemă care apare în acest moment o reprezintă unicitatea codului de produs. Ș i
anume, în momentul în care se adaugă un produs nou în baza de date, în cazul în care există
deja un alt produs cu acela ș i cod sistemul va da eroare în momentul salvării( datorită
restric ț iei de unicitate a c odului de produs pusă pe tabela products din baza de date).
Ca ș i rezolvare a a cestei probleme o poate reprezenta o verificare suplimentară la
adăugarea de noi produse în site. Aceasta verificare va fi facilitată ș i de sistemul de
cache-ing, deoarece toate codurile de produs existente pot fi aduse fără a se mai face de
fiecare dată câte o interogare asupra bazei de date.

35

6. Îmbunătă ț iri
6.1 Cache
Pe viitor dorim o îmbunătă ț ire a performan ț ei aplica ț iei, iar una dintre metode poate fi
reprezentată de crearea unui sistem de cache. Cele mai importante componente pe care se
poate face cache sunt datele de pe produse ș i datele din paginile de listare de produse. Toate
acestea ar duce la reducerea numărului de interogări făcute asupra bazei de date, ceea ce ar
însemna la o încărcare mai rapidă a paginilor, ceea ce înseamnă implicit ș i performan ț e
sporite.

6.2 Împrumut fără rezervare
În momentul de fa ț ă, un utilizator nu poate împrumuta o carte fără a fi făcută o
rezervare înainte. Pe viitor dorim să existe această posibilitate, iar acest lucru ar putea fi
implementat prin adăugarea unui împrumut manual de către administratorul site-ului.
Această nouă facilitate ar putea avea două op ț iuni: adăugare împrumut pentru
utilizator existent( administratorul site-ului va avea la dispozi ț ie o listă cu to ț i clien ț ii care au
cont pe site în care se va face autocompletare după nume, email sau telefon), dar ș i pentru
utilizatori noi( administratorul va adaugă datele de contact ale persoanei care împrumută
cartea, iar în momentul în care se salvează datele despre împrumut, să se creeze ș i un nou
cont, iar toate conturile vor avea ori aceea ș i parola ini ț iala setată din admin, ori se va crea
parola identică cu emailul sau numărul de telefon adăugate la finalizarea împrumutului).

6.3 Sistem de penalizări
În următoarea versiune a sistemului se va implementa un sistem de penalizări pentru
cititorii care întârzie înapoierea căr ț ilor împrumutate. Această facilitate trebuie dezvoltată
pentru a favoriza utilizatorii “de bună credin ț ă” ș i de a-i prioritiza pe ace ș tia.

36

6.4 Import produse ( Excel/CSV )
O altă posibilă îmbunătă ț ire a sistemului ar fi posibilitatea de a importa produsele
dintr-un fi ș ier de tip EXC EL sau CSV. O astfel de func ț ionalitate ar u ș ura munca
administratorului de sistem în ceea ce prive ș te adăugarea sau actualizarea produselor din site.

6.5 Elemente meniu
Elementele care apar în meniul site-ului sunt în acest moment hardcodate. Ne dorim
ca la următoarea versiune a aplica ț iei acestea să poată fi aduse în mod dinamic( astfel încât să
avem cei mai citi ț i autori, cele mai căutate titluri, etc.)

37

7. Concluzii

În aceasta aplica ț ie am dat posibilitatea cititorului să verifice disponibilitatea unei
căr ț i într-o bibliotecă fără a fi nevoie să se deplaseze în incinta bibliotecii. Mai mult el o
poate rezerva pentru a fi sigur de disponibilitatea ei până la prezentarea în bibliotecă.
Consider că folosirea acestei aplica ț ii este foarte utilă deoarece reduce timp ș i efort.
Unul din avantajele aplica ț iei este acela că se poate accesa de pe orice device, fără a fi nevoie
de o instalare în prealabil, simpla conectare la internet este suficientă.

38

8. Bibliografie:

1. DEX – gestiune : ​ https://dexonline.ro/definitie/gestiune ​ , accesat în 2017
2. DEX – preliminar: ​ https://dexonline.ro/definitie/preliminar ​ , accesat în 2017
3. Documenta ț ie Ad obe Photoshop : ​ https://ro.wikipedia.org/wiki/Adobe_Photoshop ​ ,
accesat în 2017
4. Documenta ț ie Ap ache :
https://code.tutsplus.com/tutorials/an-introduction-to-apache–net-25786 ​ , accesat în
2017
5. Documenta ț ie Ap i : ​ http://api.jquery.com/ ​ , accesat în 2017
6. Documenta ț ie Cak e Php :
https://www.tutorialspoint.com/cakephp/cakephp_installation.htm ​ , accesat în 2017
7. Documenta ț ie Cak e Php : ​ https://www.cakedc.com/cakephp ​ , accesat în 2017
8. Documenta ț ie Cak e Php : ​ https://book.cakephp.org/2.0/en/index.html ​ , accesat în
2017
9. Documenta ț ie CS S: ​ https://www.w3schools.com/css/css_intro.asp ​ , accesat în 2017
10. Documenta ț ie CS S : ​ https://www.w3.org/Style/CSS/Overview.en.html ​ , accesat în
2017
11. Documenta ț ie Go ogle Chrome :
https://www.gcflearnfree.org/chrome/getting-started-with-google-chrome/1/ ​ , accesat
în 2017
12. Documentatie Html 5 :
h t t p : / / w w w . t e c h r a d a r . c o m / n e w s / i n t e r n e t / w e b / h t m l 5 – w h a t – i s – i t – 1 0 4 7 3 9 3 ​ , accesat în
2017
13. Documentatie Html 5 :
http://www.makeuseof.com/tag/what-is-html5-and-how-does-it-change-the-way-i-bro
wse-makeuseof-explains/ ​ , accesat în 2017
39

14. Documenta ț ie Jav a Script: ​ https://people.cs.pitt.edu/~mehmud/cs134/javascript1.html
, accesat în 2017
15. Documenta ț ie My SQL: ​ https://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html ​ ,
accesat în 2017
16. Documenta ț ie Php : ​ https://www.w3schools.com/php/php_intro.asp ​ , accesat în 2017
17. Documenta ț ie Php : ​ http://php.net/manual/en/intro-whatis.php ​ , accesat în 2017
18. Documenta ț ie Php : ​ http://php.net/docs.php ​ , accesat în 2017
19. Documenta ț ie Php Storm :
developers.shopware.com/developers-guide/phpstorm/#configure-source-directories ​ ,
accesat în 2017
20. Documenta ț ie Php Storm: ​ https://en.wikipedia.org/wiki/PhpStorm ​ , accesat în 2017
21. Documenta ț ie Php Storm:
https://www.packtpub.com/mapt/book/web_development/9781782173878/1/ch01lvl1
sec19/restoring-deleted-resources ​ , accesat în 2017
22. Documenta ț ie Xampp : ​ https://en.wikipedia.org/wiki/XAMPP ​ , accesat în 2017
23. Documenta ț ie Xampp :
https://studyreadeducate.blogspot.ro/2017/03/introduction-of-xampp-lamp-wamp.htm
l ​ ​ , accesat în 2017
24. Documenta ț ie Xampp :
http://script.spoken-tutorial.org/index.php//Introduction_to_PHP,_XAMPP_and_MyS
QL/ ​ ​ , accesat în 2 017

40

9. Anexe:
Listă de figuri:
1. Figura 3.1.1 – Facilită ț ile utilizatorului
2. Figura 3.1.2 – Facilită ț ile administratorului
3. Figura 3.2.1- Diagrama bază de da
4. Figura 4.1.1 – Autentificare
5. Figura 4.1.2 – Detalii rezervare
6. Figura 4.2.1 – Detalii imprumuturi
7. Figura 4.3.1 – Adăugare produs
8. Figura 4.4.1 – Filtre produs
9. Figura 4.4.2 – Valori atribut
10. Figura 4.5.1 – Sec ț iunea traducere
11. Figura 4.6.1 – Setări site
12. Figura 4.8.1 – Func ț ii care rulează în fundal

41

Similar Posts