Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
CFR - APLICATIE PENTRU EVIDENTA MERSURILOR TRENURILOR SI REZERVARE DE BILETE - lucrare de diploma
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

SPECIALIZAREA TEHNICA DE CALCUL h4h12hh

Cuprins

1. INTRODUCERE 3
1.1 Aplicabilitate 3
1.2 Specificatii de definitie 4
1.3 Reguli de calcul Error! Bookmark not defined.
2. MEMORIU TEHNIC 5
2.1 Aplicatii cu baze de date 5
2.2 Metodica de proiectare a aplicatiei Error! Bookmark not defined.
2.3 Etapa analiza. Entitati si Atribute 10
2.4 Etapa analiza. Evenimente si Functii 15
2.5 Etapa proiectare. Diagrama Entitate-Relatie 16
2.6 Etapa proiectare. Diagrama Functionala 19
2.7 Etapa proiectare. Arhitectura aplicatiei 22
2.8 Etapa implementare 24
3. MEMORIU JUSTIFICATIV 25
3.1 Proiectarea si implementarea bazei de date 25
3.2 Proiectarea interfetei utilizator Error! Bookmark not defined.
Meniul aplicatiei 27
Formulare Error! Bookmark not defined.
3.3 Implementare Error! Bookmark not defined.
Functii publice Error! Bookmark not defined.
Functia de calcul a cheltuielilor Error! Bookmark not defined.
Raportul cheltuielilor Error! Bookmark not defined.
3.4 Documentare Error! Bookmark not defined.
3.5 Testare Error! Bookmark not defined.
3.6 Pachet de instalare Error! Bookmark not defined.
4. CAIET DE SARCINI Error! Bookmark not defined.
5. MANUAL DE OPERARE Error! Bookmark not defined.
Instructiuni pentru instalarea aplicatiei Error! Bookmark not defined.
Instructiuni de utilizare Error! Bookmark not defined.
6. CONCLUZII Error! Bookmark not defined.
Aprecieri Error! Bookmark not defined.
Posibilitati de dezvoltare ulterioara Error! Bookmark not defined.
BIBLIOGRAFIE Error! Bookmark not defined.
ANEXE Error! Bookmark not defined.
Anexa 1. Listing Program Error! Bookmark not defined.


1. INTRODUCERE

In partea introductiva a lucrarii vom prezenta scopul aplicatiei, posibilitatile de utilizare practica, precum si notiunile de baza utilizate de catre CFR, notiuni utilizate la implementarea aplicatiei sub forma elementelor de proiectare.
De asemenea, din partea introductiva va rezulta si necesitatea dezvoltarii unei astfel de aplicatii si implicatiile pe care le are utilizarea acesteia in cadrul CFR-ului.




1.1 Aplicabilitate

Aplicatia este destinata calatorilor CFR care vor sa se infomeze asupra mersului trenurilor si care in acelasi timp pot sa isi rezerve bilete la un anumit tren intr-o anumita data , prin caracterul sau general acesta putandu-se aplica in orice localitate din Romania, respectand prevederile legale ale CFR-ului aflate in vigoare.
Se urmareste automatizarea procesului de rezervare bilete si a cea de informare asupra mersului trenurilor. Biletele care se dau de la agentie se pot da online sau de la un bancomat chitanta sevind drept bilet, in orice moment exista posibilitatea rezervarii de bilete si aflarii de informatii asupra mersului trenurilor, deci o aplicatie care usureze si sa ii sistematizeze activitatea este binevenita.
In principiu, aplicatia trebuie sa permita aflare tuturor trenurilor care sosesc si pleaca intr-o gara intr-o anumita data, informatii despre un anumit tren si tote trenurile care circula pe o anumita ruta data de utilizator, de unde se poate face si rezervarea de bilete. De asemenea aplicatia trebuie sa permita introducerea trenurilor in baza de date, modificare anumitor campuri din baza de date si stergerea unor trenuri .
Aplicatia pate fi folosita impreuna cu un automat aflat pe strada la care se introduce ruta, trenul si data la care vrea sa calatoreasca clientul, iar automatul ii va da biletul.
Pentru faza de documentare si testare, s-au folosit atat informatii provenite de pe site-ul www.cfr.ro cat si informatii provenite din gara mica Cluj-Napoca.

1.2 Specificatii de definitie

Notiuni specifice. In urma studierii siteul www.cfr.ro si a unor legi in vigoare, au rezultat o serie de notiuni, care vor fi utilizate la faza de implementare sub forma unor elemente de proiectare. Va prezentam in continuare aceste notiuni si semnificatia lor.
Ruta reprezinta drumul intre doua gari pe un anumit traseu, gara de unde porneste un anumit tren si pana unde merge. Este compusa din statii care sunt garile prin cate trece. Intre 2 gari exista posibilitatea de a ajunge pe rute diferite.
Statia reprezinta gara in care stationeaza un anumit tren la o anumita data si ora.
Gara reprezinta locul dintr-o localitate in care stationeaza un anumit tren si locul de unde se pot rezerva si bilete incepand cu o ora inaintea orei de pornire al trenului cu re dorim sa calatorim.
Trenul reprezinta vagoanele care circula pe o anumita ruta la o anumita data.
Tip tren. Exista 4 tipuri de tren: personal care opreste in toate garile, acceleratul care opreste numai in orase si inplicit ajune mai repede decat personalul, rapidul care nu opreste in toate orasele si merge mai repede decat acceleratul avand in componenta vagoane de clasa I si dormit mai multe decat la un accelerat.
Traseul reprezinta distanta dintre 2 statii ale unui tren.
Biletul reprezinta documentul care atesta ca un calator are rezervare la un anumit tren.
Locul reprezinta locatia dintr-un tren in care are rezervare un calator, adica vagonul si numarul locului.
Calatorul reprezinta persoana care calatoreste pe o anumita ruta, la o anumita data si cu un anumit tren si care are bilet.

2. MEMORIU TEHNIC

2.1 Aplicatii cu baze de date

O aplicatie este in principiu o colectie software consolidata cu scopul de a rezolva un set dat de probleme. Rezolvarea problemelor prin punerea in practica a software-ului se numeste software engineering. Tot asa cum in alte proiecte ingineresti cum ar fi constructia unei cladiri sau a unui aparat de zbor este depus un efort considerabil inaintea punerii primei caramizi in constructia cladirii sau inainte de conceperea primei piese a aparatului de zbor. In timpul fazei initiale (numita faza de proiectare) o serie de elemente vor intra in contact unele cu altele pentru a da forma proiectului de aplicatie. Unele din elemente sunt ne-negociabile sau resurse limitate cum ar fi timpul, banii, sau mana de lucru. Altele, cum ar fi tehnologiile disponibile, cunostintele, sau indemanarea sunt resurse dinamice si variaza pe parcursul ciclului de viata al sistemului "business".a9i
Notiunea de baza de date este strans legata de notiunea de date, care refera „fapte culese din lumea reala” a11i. Baza de date se refera la un volum mare de date, care sunt stocate pe suport fizic; ea reprezinta, in cazul sistemului computerizat, echivalentul arhivei din viata reala. Mai poate fi inteleasa ca o colectie (de obicei mare) de date organizate intr-o structura descrisa printr-un model conceptual, de exemplu: nume de categorii (PERSOANA), nume de proprietati (varsta), legaturi intre categorii (PERSOANA casatorita cu alta PERSOANA), operatii permise / nepermise (restrictii de integritate - constrangeri).
Pentru o baza de date cel mai important lucru este manipularea datelor continute in acea baza de date. Aceasta „manipulare” refera operatiile care se pot efectua asupra datelor: operatii de adaugare a unor date noi, operatii de regasire, de modificare, de stergere a datelor existente.
Programarea bazelor de date constituie, de fapt, procesul de stocare -; folosind o modalitate standard -; a unei varietati de informatii, astfel incat sa fie posibila o accesare si o intretinere facila a datelor. Informatiile stocate intr-o baza de date, spre deosebire de un document creat cu un procesor de texte, respecta de obicei un format standard.a10i
Pentru aplicatia ceruta, utilizarea unei aplicatii cu baze de date in detrimentul altor metode de rezolvare a problemei date, cum ar fi o aplicatie standard, fara baze de date, rezolva o serie de probleme si neajunsuri. Din acest punct de vedere, unele avantaje ale proiectarii aplicatiei cu baze de date au constituit un factor important de decizie atunci cand am ales modalitatea de rezolvare a problemei date, cum ar fi:
- posibilitatea stocarii unui volum relativ mare de informatii, precum si accesul ulterior la aceste informatii;
- remanenta informatiei, care in cazul unei aplicatii standard, fara baze de date, era incerta;
- transparenta totala a implementarii, utilizatorul aplicatiei nu trebuie sa cunoasca modalitatile efective de implementare, modul de stocare a datelor, verificarile de corectitudine a informatiilor introduse. Utilizatorul nu trebuie sa cunoasca ce se intampla cu o informatie introdusa in sistem, dar in acelasi timp acesta trebuie sa aiba acces la informatia respectiva;
Concluzionand, baza de date va trebui sa contina toate informatiile necesare aflarii mersului trenurilor si calculului distantelor rutelor si al biletelor. Aceste informatii vor fi introduse de catre utilizatorul sistemului, adica de catre administratorul site-ului, prin intermediul interfetei puse la dispozitie de aplicatie.
Avand in vedere complexitatea introducerii unui tren in baza de date si a volumului de date mare care trebuie introdus, aplicatia trebuie sa fie cat mai intuitiva, cat mai usor de utilizat si sa nu contina elemente care ar putea sa genereze situatii de ambiguitate. Este de asemenea important ca interfata aplicatiei sa fie realizata in intregime cu termeni in limba romana, iar termenii utilizati pentru denumirea elementelor constitutive ale interfetei sa reprezinte cat mai bine termenii corespondenti din limbajul specific al acestui domeniu.
Automatizarea procesului de calcul prin intermediul aplicatiei trebuie sa fie de asemenea transparent, fazele in care se obtin valori intermediare nu au importanta practica pentru administrator.

2.2 Metodica de proiectare a aplicatiei

Dezvoltarea unui sistem este o activitate laborioasa ce cuprinde o multitudine de sub-activitati ("tasks") desfasurate intr-o maniera metodica. Aceste sub-activitati pot fi grupate in etape importante. Fiecare etapa are definite clar elementele livrate (adica ce produse finale sunt obtinute la incheierea etapei) etapelor ulterioare.
In cadrul fiecarei etape (stadiu) sub-activitatile tind sa fie de scurta durata si pot fi estimate cu usurinta. Fiecare sub-activitate este divizata in mai multe sub-sub-activitati. O anumita sub-sub-activitate se poate repeta de un numar de ori din diferite motive.
Vom discuta despre dezvoltarea pe baza modelului CASE (Computer-Aided Szstems Engineering).
Prezentam in mare etapele importante de dezvoltare, conform acestui model, fara a insista cu detalii asupra metodelor si sub-activitatilor corespunzatoare fiecarei etape :
- etapa de strategie -; obiectivul este de a produce un set de modele de business, un set de recomandari si un plan agreat pentru dezvoltarea sistemelor de informatii ce vor servi nevoilor curente si viitoare ale organizatiei, tinand cont de constrangerile financiare si tehnice ale organizatiei.a9i Este analizata problema care trebuie rezolvata, pe baza specificatiilor de definitie. Aceste specificatii sunt obtinute in urma discutiilor avute cu beneficiarul aplicatiei, studierea unor documentatii legate de domeniul de activitate respectiv, in acest caz este vorba de studierea legislatiei asociatiilor de proprietari si discutiile avute cu administratorul de imobil;
- etapa de analiza -; Preia si verifica lucrurile obtinute in etapa strategie si le expandeaza in detaliu suficient pentru a asigura acuratetea de business, fezabilitatea si un fundament sanatos pentru proiectare, in cadrul domeniului organizatiei si avand in minte sisteme existente;a9i
- etapa de proiectare -; pe baza etapei de analiza, se realizeaza proiectarea aplicatiei, in urma careia rezulta directive concrete pentru etapa de implementarea9i, de exemplu se realizeaza proiectarea schemei bazei de date, stabilirea functiilor de business necesare in sistem, etc.;
- etapa de implementare -; realizarea efectiva a aplicatiei, scrierea codului, realizarea bazei de date, compilarea aplicatiei sub forma unui program executabil;
- etapa de testare -; produsul software este testat in conditii normale de utilizare si se rezolva eventualele probleme;
- etapa de documentare -; se scrie documentatia aplicatiei (sub forma tiparita si/sau online), se face instruirea viitorilor utilizatori ai aplicatiei.

Figura 1. Ciclul de viata al unui sistem informatica9i

Rezultatul stadiilor strategie si analiza trebuie sa fie complet independente de orice tehnica de implementare specifica, pentru a da proiectantului oportunitatea maxima de a folosi tehnologia potrivita si pentru a proiecta in coexistenta cu sisteme curente. Metoda CASE trebuie sa fie doar scheletul, ea trebuie completata cu ideile proprii si inovatia contribuie la calitatea produsului final.
Business-urile sunt in continua miscare. In linii mari se schimba nu CE este facut ci CINE si CUM face. Modelele folosite pentru a defini cerintele business-ului trebuie sa permita modificari rezonabile in structura organizatiei. Modelele trebuie sa fie de asemenea independente de toate solutiile cunoscute.
Sistemul trebuie sa continue sa functioneze eficient cand, de exemplu, sunt adoptate proceduri noi de fabricatie, vanzare, administrare.
Cerintele ar trebui modelate si definite intr-o maniera generica. Cerintele functionale ar trebui sa defineasca ce este facut, nu cum sau de catre cine. Structura datelor trebuie sa permita modificari: in structura organizatiei, pentru exceptii si pentru limite curente si observabile.a9i

2.3 Etapa analiza. Entitati si Atribute

Pentru a ajunge la realizarea structurii bazei de date, am utilizat specificatiile de definitie(prezentate in subcapitolul 1.2). Pe baza acestor specificatii extragem entitatile si atributele care constituie puncte de plecare la proiectarea bazei de date.

NOTIUNE CALITATE(entitate sau atribut) gara Entitate denumire Atribut poza Atribut ruta Entitate gara plecare Atribut gara sosire Atribut ora plecare Atribut oar sosire Atribut rute date Entitate data Atribut statie Entitate gara Atribut ora plecare Atribut ora sosire Atribut ordinea Atribut
Traseu Entitate gara 1 Atribut gara 2 Atribut
Kilometrii Atribut tren Entitate ruta Atribut tipul Atribut tipuri vagoane Atribut tip tren Entitate denumire Atribut culoare Atribut
Bilet Entitate ruta Atribut data Atribut
Km Atribut pret Atribut calator Atribut gara plecare Atribut gara sosire Atribut locul Atribut calator Entitate nume Atribut prenume Atribut seria buletin Atribut numar buletin Atribut
Loc Entitate numar tren Atribut vagon Atribut clasa Atribut numar loc Atribut
Tabel 1. Lista cu entitati si atribute

In tabelul 2 prezentam entitatile cu tipul acestora precum si cu legaturile dintre ele.
ENTITATE TIP ENTITATE ENTITATI CU CARE ARE LEGATURA gara entitate de legatura • ruta
• statie
• bilet
• traseu ruta entitate de baza • gara
• statie
• bilet
• ruta_date statie entitate de baza • ruta
• gara
• tren traseeu entitate de baza • gara ruta_date entitate de baza • ruta bilet entitate de baza • calator
• ruta
• gara
• tren
• pret
• supliment calator entitate de baza • bilet tren entitate de legatura • tip_tren
• loc
• bilet tip_tren entitate de baza • tren loc entitate de baza • tren pret entitate de baza • bilet supliment entitate de baza • bilet user entitate de baza

Tabel 2. Entitatile si legaturile dintre ele

Aceste legaturi le-am stabilit pe baza textului care constituie specificatiile de definitie si sunt piesele de baza la proiectarea structurii bazei de date. Pentru inceput, entitatile si atributele acestora sunt elementele de baza pentru alcatuirea diagramei entitate-relatie.
Modelarea ER a fost inventata la mijlocul anilor '70 de Peter Chen si ramane in continuare principala abordare pentru modelarea datelor.a9i Prin aceasta reprezentare schematica sub forma unei diagrame se reprezinta entitatile, atributele si relatiile dintre entitati precum si tipul acestor relatii.

In tabelul 3 sunt enumerate atributele, pentru fiecare dintre acestea am stabilit tipul de date pe care il vor avea la realizarea bazei de date, in vederea reprezentarii corecte si complete a informatiei. Coloana a 2-a reprezinta numele efectiv utilizat pentru implementare.
ATRIBUT NUME UTILIZAT IN BD TIP DE DATE LUNGIME
NULL ENTITATEA DE CARE APARTINE denumire gara denumire varchar 255 NOT NULL gara poza poza varchar 255 gara gara de plecare gara_plecare intreg 11 NOT NULL ruta gara de sosire gara_sosire intreg 11 NOT NULL ruta ora de plecare ora_plecare intreg 50 NOT NULL ruta ora de sosire ora_sosire time NOT NULL ruta id-ul rutei id_ruta Intreg 11 NOT NULL statie id-ul garii id_gara intreg 11 NOT NULL statie ora plecare ora_plecare time NOT NULL statie ora sosire ora_sosire time NOT NULL statie order order intreg 11 NOT NULL statie id-ul rutei id_ruta intreg 11 NOT NULL rute_date data data time NOT NULL rute_date id-ul rutei id_ruta intreg 11 NOT NULL tren id-ul tipului id_tip intreg 11 NOT NULL tren vagon clasa a II-a vagon_cl2 integ 11 NOT NULL tren vagon clasa a I-a vagon_cl1 intreg 11 NOT NULL tren vagon retaurant vagon_restaurant intreg 11 NOT NULL tren id gara 1 id_gara1 intreg 11 NOT NULL traseu id gara 2 id_gara2 intreg 11 NOT NULL traseu

Kilometrii Km intreg 11 NOT NULL traseu id-ul tipului id_tip varchar 255 NOT NULL tip_tren denumire denumire varchar 255 NOT NULL tip_tren culoare culoare varchar 255 NOT NULL tip_tren numar tren nr_tren intreg 11 NOT NULL loc numar vagon nr_vagon intreg 11 NOT NULL loc clasa clasa varchar 255 NOT NULL loc numar loc nr_loc intreg 11 NOT NULL loc id-ul rutei id_ruta intreg 11 NOT NULL bilet data data date NOT NULL bilet
Kilometrii Km intreg 11 NOT NULL bilet pret pret double NOT NULL bilet id-ul calatorului id_calator intreg 11 NOT NULL bilet id-ul garii plecare id_garaplecare intreg 11 NOT NULL bilet id-ul garii sosire id_garasosire intreg 11 NOT NULL bilet id-ul locului id_loc intreg 11 NOT NULL bilet numele nune varchar 255 NOT NULL calator prenumele prenume varchar 255 NOT NULL calator seria buletin bl_seria varchar 255 NOT NULL calator numar buletin bl_numar varchar 255 NOT NULL calator intervalul Km1 intreg 11 NOT NULL preturi intervalul Km2 intreg 11 NOT NULL preturi clasa clasa varchar 255 NOT NULL preturi personal Pers double NOT NULL preturi accelerat Acc double NOT NULL preturi rapid R double NOT NULL preturi ineter city IC double NOT NULL preturi tichet rezervare TichetRrezervare double NOT NULL preturi intervalul Km1 intreg 11 NOT NULL supliment intervalul Km2 intreg 11 NOT NULL supliment clasa clasa varchar 255 NOT NULL supliment personal Pers double NOT NULL supliment accelerat Acc double NOT NULL supliment rapid R double NOT NULL supliment ineter city IC double NOT NULL supliment

Tabel 3. Atributele cu tipurile de date corespunzatoare si entitatile de care apartin
Continuand analiza specificatiilor de definitie, extragem relatiile dintre entitati, care pot sa fie dintre urmatoarele tipuri:
- 1:N (one to many) - la o instanta a unei entitati ii corespunde una sau mai multe din cea de-a doua entitate
- 1:1 (one to one) - la o instanta a unei entitati ii corespunde o instanta a celei de-a doua entitatati
- N:N (many to many) - la o instanta a unei entitati ii corespunde una sau mai multe din cea de-a doua entitate si reciproc, acesteia din urma ii corespund una sau mai multe instante ale primei entitati. In acest caz trebuie introdusa o entitate de legatura pentru implementarea relatiei.
Astfel, relatiile pentru cazul de fata vor fi:
TEXT SPECIFICATIE ENTITATE 1 ENTITATE 2 TIP DE RELATIE o ruta contine una sau mai multe statii ruta statie 1:N* pentru o ruta se acorda unul sau mai multe bilete ruta bilet 1:N* o gara apartine mai multor statii gara statie 1:N* o gara este sursa pentru traseu si in acelasi timp destinatie pentru traseu gara traseu 1:N* un calator poate detine unul sau mai multe bilete calator bilet 1:N* un tren poate avea unul sau mai multe bilete tren bilet 1:N un tren are unul sau mai multe bilete tren loc 1:N* un tiptren caracterizeaza unul sau mai multe trenuri tiptren tren 1:N

Tabel 4. Relatiile dintre entitati
Relatiile notate cu * sunt obligatorii.

2.4 Etapa analiza. Evenimente si Functii

Instantierea entitatilor se face numai in momentul aparitiei unor evenimente sau functii de business. Principala functie de business pe care trebuie sa o rezolve aceasta aplicatie ar fi calculul biletului. Prezentam in continuare o lista a acestor functii.
EVENIMENT FUNCTIE ATASATA EVENIMENTULUI EXPLICATIE CU DETALII
Rezervare bilet Calculul biletului - stabilirea rutei si a clasei vagonului
- verificare daca sunt locuri libere
- stabilirea distantei si a intervalului in care se incadreaza
- calculul pretului
- afisarea pretului

Tabel 5. Evenimente si functii

2.5 Etapa proiectare. Diagrama Entitate-Relatie

In etapa de proiectare vom utiliza informatiile obtinute la faza de analiza pentru a realiza diagrama Entitate-Relatie, pe baza listelor cu entitati, atribute si relatii dintre acestea, precum si diagrama de functii, pe baza listei de evenimente si functii.
Diagrama Entitate-Relatie este o forma generalizata si abstractizata a listei de entitati si atribute, si este utilizata apoi pentru realizarea schemei bazei de date. Aceasta diagrama este independenta de sistemul de gestiune a bazelor de date utilizat in etapa de implementare.
Pentru generarea diagramei Entitate-Relatie, se pot utiliza unelte CASE, care permit editarea acesteia in mod vizual si care apoi pe baza diagramei astfel realizate pot sa genereze in mod automat structura bazei de date. Am utilizat in acest scop aplicatia AllFusion ERwin Data Modeler 4.1, dar pentru ca utiliza elemente de reprezentare a diagramei diferite de cele studiate, am decis sa realizez aceasta diagrama manual.
Prezentam in continuare cateva elemente de notatie ale diagramei Entitate-Relatie.

pentru entitati, exista urmatoarele notatii:
Dreptunghiul cu colturile rotunjite reprezinta entitatea, in care cu litere mari se noteaza denumirea entitatii, si cu litere mici se noteaza atributele.
Linia dintre entitati indica existenta unei relatii intre acestea. Astfel, linia continua indica o relatie obligatorie, linia intrerupta(punctata) reprezinta o relatie obligatorie iar „furca” reprezinta o relatie la N in partea respectiva, in cazul reprezentarii de mai sus relatia fiind de 1:N. pentru specificarea atributelor, exista 3 simboluri distincte:
# (diez) indica faptul ca atributul respectiv este un element de identificare a entitatii, numit si cheie, sau ID.
* (asterisc) indica faptul ca atributul este unul obligatoriu.
? (grad) indica faptul ca atributul este optional.

Diagrama entitate relatie:

Citirea diagramei Entitate-Relatie:
Cuvintele din apropierea liniilor sunt cuvinte cheie care definesc relatia si se citesc astfel:
<ENTITATE 1> <cuvant cheie><ENTITATE 2>
Cuvintele cheie care sunt deasupra liniei sau stanga liniei sunt pentru citirea in directia de la stanga la dreapta sau sus in jos, iar cele care sunt sub linie sau din dreapta liniei pentru citirea in sens invers, de la dreapta la stanga sau jos in sus.
O ruta trebuie sa inceapa de la o gara si numai una si sa se termine la o gara si numai una.
O gara trebuie sa fie sursa si destinatie pentru o ruta
.
..
.
..
..
.
.

Se poate observa in diagrama Entitate-Relatie existenta unor atribute de identificare, , identificatori unici sau de tip cheie, acestea sunt necesare pentru stabilirea legaturilor dintre entitati in faza de implementare a schemei bazei de date. In continuare vom enumera aceste atribute:

ATRIBUT ENTITATEA DE CARE APARTINE TIP CAMP TIP ATRIBUT id_gara gara int (11) not null primary key auto increment id_ruta ruta int (11) not null primary key auto increment id_traseu traseu int (11) not null primary key auto increment id tip tren int (11) not null primary key auto increment id_loc loc int (11) not null primary key auto increment id_calator calator int (11) not null primary key auto increment id pret int (11) not null primary key auto increment id supliment int (11) not null primary key auto increment

Tabel 6. Atribute de identificare

Am exclus entitatea user din diagrama Entitate-Relatie pentru ca legatura acesteia cu alte entitati a fost ignorata din considerente bine intemeiate.

2.6 Etapa proiectare. Diagrama Functionala

Figura 3. Diagrama functionala

E1


E2


E3

E4


E5

E1


































E3









E4
























E5


















2.7 Etapa proiectare. Arhitectura aplicatiei

Pentru dezvoltarea aplicatiilor cu baze de date, in functie de necesitatile de utilizare ale aplicatiei, se pot utiliza 3 tipuri de arhitectura, pe care le vom prezenta in continuare.

a. Arhitectura Desktop
Arhitectura desktop este caracterizata de coexistenta aplicatiei si a bazei de date pe aceeasi masina fizica(pe acelasi calculator)

Figura 4. Arhitectura Desktop

Acest tip de arhitectura se utilizeaza in cazul aplicatiilor de complexitate redusa, cand baza de date este utilizata de o singura aplicatie si eventual de un singur utilizator. Accesul la baza de date se face fie direct de catre aplicatie(de exemplu in cazul unei aplicatii realizate in Visual Fox) sau prin intermediul unui motor de baze de date.

b. Arhitectura Client-Server
In cazul arhitecturii client-server, baza de date si aplicatia nu se gasesc neaparat pe acelasi calculator. Aplicatia ruleaza pe un sistem de calcul numit client, iar baza de date se gaseste pe un alt sistem de calcul, numit server, si este gestionata de un server de baze de date(de exemplu SQL Server, MySQL, etc.) Comunicarea dintre client si server se face prin intermediul unui canal de comunicatie, care este de obicei o retea locala LAN(Local Area Network) sau o retea WAN(Wide Area Network).
Acest tip de arhitectura permite accesul la baza de date de la distanta prin conectarea directa a clientului la serverul de baze de date, de exemplu printr-o conexiune de tip peer-to-peer.

Figura 5. Arhitectura Client-Server

c. Arhitectura Multistrat
Arhitectura multistrat este cea mai moderna dintre cele 3, si este caracterizata prin existenta a cel putin 3 sisteme de calcul, in mod generic. Aplicatia ruleaza pe sistemul client, pe care eventual ruleaza si un browser de web, prin intermediul caruia aplicatia poate sa emita cereri serverului de aplicatii, care poate fi de asemenea si un server de web. Serverul de aplicatii contine regulile de business ale aplicatiei, si este controlat de un administrator care cunoaste foarte bine intregul sistem si se ocupa cu eventualele actualizari ale sistemului. Un al treilea sistem este serverul de baze de date, unde se gaseste si baza de date. Serverul de aplicatii functioneaza ca un intermediar(gestionar) intre client si serverul de baze de date.
In aplicatiile prin intermediul internetului, de multe ori pe calculatorul client nu ruleaza o aplicatie specializata, ci doar serverul de web, iar utilizatorul are acces la baza de date prin accesarea unei pagini de internet.

Figura 6. Arhitectura Multistrat

Dintre cele trei arhitecturi prezentate, vom utiliza pentru dezvoltarea aplicatiei arhitectura desktop, pentru ca deocamdata nu se justifica utilizarea unei conexiuni la distanta sau prin intermediul internetului. Intr-o etapa de dezvoltare ulterioara a aplicatiei, se pot lua in considerare si celelalte tipuri de arhitectura. Aceasta problema este dezbatuta pe larg in capitolul Dezvoltari ulterioare.

2.8 Etapa implementare

Pentru implementarea aplicatiei am ales mediul de programare PHP si MySql.

2.8.1. PHP

2.8.1.1. Introducere

PHP, acronim care provine din “PHP:Hypertext Preprocessor”, este un limbaj de scripting utilizat pe scara larga, realizat si distribuit in sistem Open Source, care este special realizat pentru a dezvolta aplicatii web, prin integrarea codului PHP in documente HTML. Sintaxa sa provine din C, Java si Pearl si este usor de invatat. Scopul principal al limbajului este acela de a scrie rapid pagini web dinamice, dar cu PHP se pot realiza mult mai multe.
Pe masura ce site-urile devin tot mai mari si mai complexe, fisierele HTML statice isi ating limitele. Azi Web-ul este o platforma orientata spre tranzactii comerciale folosind aplicatii cum sunt cele de comert online. Pentru satisfacerea acestor nevoi este necesara o tehnologie care genereaza pagini web cu continut dinamic. PHP este o solutie special creata pentru web.
Traditional dezvoltatorii foloseau scripturile CGI (Common Gateway Interface) pentru interactiunea cu utilizatorii sau pentru interogarea bazelor de date. Totusi pentru ca scripturile CGI sunt programe separate care se executa ca un proces individual de fiecare data cand un utilizator trimite o cerere, scalabilitatea este absenta. Scripturile CGI pot consuma rapid toata memoria disponibila si puterea procesorului.
PHP este una dintre cele mai interesante tehnologii existente in prezent. Deoarece imbina caracteristici dintre cele mai coplexe cu simplitatea in utilizare, PHP a devenit rapid un instrument de frunte pentru dezvoltarea aplicatiilor web, cum este Pearl, PHP este un limbaj de programare comod pentru incepatori, chiar si pentru cei care nu au mai desfasurat activitati de programare in trecut.
PHP este un limbaj de script care functioneaza alaturi de un server Web. Deci, fata de alte limbaje de script, precum Javascript, la PHP codul se executa pe server. Daca pe serverul Web se afla un script similar, clientul nu va primi decat rezultatul executiei scriptului, fara a avea nici o posibilitate de acces la codul care a produs rezultatul. Daca serverul de Web este configurat sa prelucreze toate fisierele HTML ca fisiere PHP, nu exista nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice.
Sintaxa PHP-ului este imprumutata din C, Java si Pearl, insa are si o seama de noi caracteristici. Un mare avantaj fata de C sau Pearl este faptul ca nu necesita utilizarea unui numar mare de comenzi pentru a crea cod HTML.
PHP este un limbaj algoritmic, care arata mai bine, cat de importanta este prelucrarea algoritmica atunci cand avem de a face cu informatia transmisa prin Internet.
Diferenta dintre PHP si HTML apare din mai multe motive. Cel mai important este totusi urmatorul: in PHP semnele sunt interpretate pe mai multe nivele:
- cel al simbolurilor pentru operatii ale procesorului;
- cel al interpretarii simbolurilor si operatiilor cu simboluri de iesire; continutul propriu-zis al iesirii.
Insa PHP-ul nu se limiteaza la generarea de cod HTML: el poate genera cod PDF sau chiar animatii Flash. PHP poate face ceea ce orice alt limbaj poate face in CGI si chiar mai mult decat atat. Poate fi folosit de majoritatea sistemelor de operare: Linux, de majoritaea variantelor Unix, Windows, RISC OS, etc.

De asemenea, PHP are suport pentru majoritate serverelor Web(Apache, Microsoft Internet Information Server, Microsoft Personal Web Server, Netscape Server si multe altele). Unul dintre marile avantaje al PHP-ului este suportul cu un numar mare de baze de date.
Are, de asemenea suport pentru comunicarea cu alte servicii, folosind protocoale ca LDAP, IMAP, SNMP, NNTP, POP3, HTTP.
Scopul principal al PHP-ului este de a permite dezvoltatorilor sa creeze pagini Web dinamice. Limbajul a devenit atat de popular datorita faptului ca este simplu, rapid si gratuit. In plus, PHP foloseste foarte multe facilitati predefinite (built-in).
PHP reprezinta un pachet puternic care ofera un limbaj de programare accesibil din cadrul fisierelor HTML, limbaj asemanator cu Pearl si C, plus suport pentru manipularea bazelor de date intr-un dialect SQL (dBase, informix, MySql, Oracle, PostgresSQL, Solid, Sybase, ODBC) si acces la sisteme hipermedia precum Hyperwave. PHP-ul permite scrierea de scripturi CGI, suporta incarcarea fisierelor de pe calculatorul client: upload si ofera suport pentru cookies (mecanism de stocare a datelor in navigatorul client pentru identificarea utilizatorilor, propus de Netscape).

2.8.1.2. Avantajele PHP
- Este usor de instalat, configurat si intretinut.
- Pentru cei ce cunosc limbajul C este forte usor de invatat.
- Codul sursa este disponibil gratis (open source).
- Codul se dezvolta mai rapid (este un limbaj slab tipizat).
- Poate rula ca modul Apache sau separat.
- Nu este atat de vulnerabil ca JSP-ul in cazul codului scris prost.
- Este creat special pentru Web.
- Functioneaza pe aproape orice sistem de operare.
- Sintaxa seamana cu C,Pearl, Java si Javascript.
2.8.2. MySQL

2.8.2.1. Descriere
Pe masura ce industria calculatoarelor migreaza catre mediile distribuite si isi muta mare parte din date de la mainframe-uri catre servere, trebuie intelese conceptele care stau la baza mediilor de baze de date client/server. Majoritatea bazelor de date folosite pe computere sunt baze de date relationale si de asemenea suporta folosirea SQL. (“Structured Query Language”) pe langa alte unelte proprii pentru accesul la date. In sistemele care folosesc servere pentru baze de date procesarea datelor este optimizata, permitand fiecarei componente sa acceseze informatiile independent, in modul cel mai eficient posibil; serverul este centrat pe procesele din baza de date iar clientul este centrat pe prezentarea informatiei.
Procesarea de date este strans legata de operatiile de stocare si furnizare de date. O baza de date aaa cum este MySQL este proiectata ca fiind un depozit pentru datele unei intregi organizatii. Natura esentiala a datelor implica importanta metodelor folosite pentru stocarea, procesarea si returnarea lor.
MySQL indeplineste toate caracteristicile altor servere de baze de date si in plus ofera trasaturi care nu sunt necesare altor baze de date. Majoritatea acestor trasaturi suplimentare sunt rezultatul integrarii serverului SQL cu sistemele de operare Windows NT.
SQL Server ofera capabilitati de stocare de date si de manipulare a volumelor de date la fel ca si un mainframe sau minicomputer.
MySQL este un produs matur, scalabil, rapid si gratuit, cu caracteristici foarte potrivite pentru multe dintre aplicatiile care folosesc suportul de baze de date pentru Web. Detaliile tehnice referitoare la MySQL se aplica in orice domeniu de tip Unix si chiar si Windows.
MySQL este un sistem de administrare a unei baze de date. O baza de date este o colectie structurata de date. Pentru a adauga, accesa si procesa date inregistrate intr-o baza de date, este nevoie de un sistem de administrare asa cum este MySqlServer.
MySql este un sistem de administrare a bazelor de date relationale. O baza de date relationala inregistreaza date in tabele separate. Aceste adaugari sunt rapide si flexibile. Tabelele sunt legate prin relatii bine definite facand posibila combinarea datelor din cateva tablouri la cerere.
MySql Software este o sursa deschisa (Open Source): Open Source inseamna ca este posibila folosirea si modificarea de catre orice utilizator. Oricine poate descarca MySql Softwarede pe Internet si sa-l foloseasca fara sa plateasca nimic. Orice persoana care are ceva cunostinte poate sa studieze codul sursa si sa-l modifice conform nevoilor sale.
MySql DataBase Server este foarte rapid si usor de utilizat, are de asemenea un set de trasaturi foarte bine dezvoltate si a fost conceput pentru a se descurca, pentru a solutiona baze de date mari mai rapid decat solutiile deja existente si a fost utilizat cu succes in mediile cu o productie de nivel inalt de-a lungul anilor.
MySql opereaza in baza unui model client/server. Orice masina care doreste sa proceseze interogari asupra bazei de date MySql trebuie sa ruleze MySql server (mysqld), care este responsabil de tot traficul de tip incoming/outgoing cu baza de date. Ca orice alt server, mysqld “asculta” pe un port particular (3306) eventualele cereri de conexiune ale unui “client” -; orice aplicatie care trimite cereri catre o baza de date via mysqld. Acest client poate fi un simplu script in Pearl care -; gratie modulului DBI -; poate trimite o cerere catre baza de date prin intermediul serverului MySQL, sau chiar clientul “command-line” mysql. Clientul mysql este o interfata interactiva pentru trimiterea de comenzi catre server.

2.8.2.2. Modelul de securitate

Modelul folosit de MySQL se bazeaza pe username/password, hostname si privilegii si este similar celui generic folosit de sitemele Unix. Prin privilegii se inteleg in cazul MySQL operatiunile ce vor fi permise asupra bazei/bazelor de date, tabelelor sau indecsilor, cum sunt de exemplu SELECT, INSERT, UPDATE, DELETE, CREATE, DROP.
Cream o baza de date: shell>mysql -;u root -;p mysql> database Clienti; mysql> use Clienti;
Acordam utilizatorului “user” cu parola “parola” care se conecteaza la serverul MySQL de pe orice masina din reteaua “.retea-singura.net” dreptul de a face SELECT pe orice tabele din baza de date “Clienti”: mysql>GRANT SELECT ON Clienti.* TO user@”% retea-singura.net” IDENTIFIED BY “parola”;
Folosirea GRANT si REVOKE este semnalata serverului imediat si, spre deosebire de acordarea de privilegii cu UPDATE sau INSERT, nu necesita o comanda ulterioara de tip FLUSH PRIVILEGES, care spune serverului sa reciteasca tabelele de permisiuni.
Pe de alta parte: mysql>GRANT ALL PRIVILEGES ON Clienti.* TO gigi@localhost
IDENTIFIED BY “parola_lunga”;
Ofera “puteri plenipotentiare” user-ului “gigi”, dar numai de la consola serverului.
Crearea “Clienti si recitirea tabelelor de privilegii prin FLUSH PRIVILEGES se poate face si cu mysqladmin. Revocarea privilegiilor acordate se face folosind explicit REVOKE sau prin scrierea directa in tabelele de drepturi (,ysql.user, mysql.db, mysql.host, mysql.tables_priv si mysql.colums_priv).
Pentru o imagine completa asupra modului in care functioneaza modelul de securitate MySQL, este obligatorie citirea cu atentie a paginilor respective din manual. Pentru securizarea datelor si a accesului la mysqld se recomanda implementarea politicilor specifice necesare, instrumentele furnizate de MySQL fiind doar o parte din intreg.

2.8.2.3. Utilizare

Exemplul ales prezinta modalitatile de creare si utilizare a doua tabele simple in MySQL, tabele denumite “Facturare” si “Facturi”. Detaliile legate de ceea ce se numeste “data modelling” nu sunt necesare pentru exemplul simplu al acestei aplicatii.
Continutul si structura tabelelor “Facturare” si “Facturi” folosite in exemplu nostru sunt prezentate mai departe.
Sintaxa pentru crearea tabelului “Facturare” : mysql>CREATE TABLE Facturare ( Nume_client CHAR(255) NOT NULL, Email_client CHAR(255) NOT NULL, Factura INTEGER NOT NULL, Total DECIMAL(6,2) NOT NULL, Platit TINYINT NULL, INDEX IDX_FACTURA (Factura));
Sintaxa pentru crearea tabelului “Facturi” : mysql>CREATE TABLE Facturi (Factura INTEGER NOT NULL, Ore DECIMAL(8,2) NOT NULL, Rate DECIMAL(6,2) NOT NULL, INDEX IDX_FACTURA (Factura));
Crearea corecta a celor doua tabele se verifica prin: mysql>show tables; mysql>describe Facturare; mysql>describe Facturi;

3.5.4. Incarcarea datelor

Incarcarea datelor in tabelele proaspat create se face, printre alte metode, folosind comanda LOAD DATA INFILE, cu conditia ca datele sa fie in prealabil existente in fisiere text, delimitate de caracterele “tab” sau “,”. Delimitatorul implicit recunoscut de LOAD DATA INFILE este “tab”, deci in cazul unui fisier “facturare.txt” ce contine datele din tabelul “Facturare” delimitate prin tab, sintaxa va fi: mysql> LOAD DATA INFILE”/calea/catre/facturare.txt”
INTI TABLE “Facturare” IGNORE 1 LINES;
Similar: mysql> LOAD DATA INFILE”/calea/catre/facturare.txt”
INTI TABLE “Facturi” IGNORE 1 LINES;
Pentru alti delimitatori a se vedea optiunea FIELDS TERMINATED BY din sintaxa comenzii LOAD DATA INFILE. De mentionat ca optiunea IGNORE 1 LINES determina importul din fisierul text in tabelul din baza de date a tuturor datelor mai putin primul rand din fisierul text, care in general este header-ul tabelului, existent deja in tabelul creat in baza de date. Din motive de securitate, cand se citesc fisiere aflate pe server, acestea trebuie sa se afle ori in directorul bazei de date (var/lib/mysql/Clienti) sau sa aiba drepturi de read pentru “all”. De asemenea, privilegiul “file” trebuie sa existe pe server. In cazul nostru, pentru simplitate, se copiaza fisierele “facturi.txt” si “facturare.txt” in var/lib/mysql/Clienti si se importa din acest director.
Se verifica prin: mysql>select * from Facturi; mysql>select * from Facturare;
In acest moment, mysqld poate furniza informatii din tabelele bazei de date Clienti.

2.8.2.3.1. Expunerea datelor pe WWW

Daca pe aceeasi masina au fost instalate si modelele de PERL mentionate anterior, tot ce mai trebuie pentru a putea publica intr-o pagina HTML (pe Web) este un server web (incetatenit este Apache) si unul sau mai multe scripturi CGI in Pearl. Subiectul “CGI programming” este vast, pornind de la alegerea limbajului de programare sau scripting si a serverului de aplicatie care va procesa practic aplicatiile CGI, terminand cu securitatea programelor CGI. Administratorii de sistem si programatorii CGI experimentati stiu ca de securitatea unui script CGI poate depinde securitatea masinii pe care acesta ruleaza. Pentru simplitate, este prezentat un script Perl rudimentar, care se conecteaza la mysqld folosind userul “user” si parola “parola” (trebuie o pereche username/password validata pentru mysqld pe masina server, altfel scriptul nu se va putea conecta la baza de date) si face un SELECT simplu asupra tabelului Facturare.
#!/usr/bin/perl
#query.cgi- exemplu Perl/MySQL use DBI
$dbh=DBI->connect(‘dbi:mysql:Clienti”,’user”,’parola’ );
#pregateste si executa statement SQL
$sqlstatement=”SELECT Nume_Client,Email_Client FROM Facturare”;
$sth=$dbh->prepare($sqlstatement);
$sth->execute|| die ”Nu se poate executa instructiunea SQL…”;
#scrie la stdout rezultatele extrase din baza de date print “Content-Type:text/html\n\n”; print” <html>\n<head><title>Pagina Demo</title></head>\n<body><div align=center>\n”;
while (@row=$sth->fetchrow_array)
A print”@row\n<br>”;
S print”</div></body></html>”;
Acest script se copiaza in directorul “cgi-bin” al serverului web. Pentru a putea fi executat de daemonul httpd, se seteaza corespunzator permisiunile: shell> chmod 755 query.cgi
Afisarea rezultatelor in browser se face simplu, accesand locatia: https://nume_masina/cgi-bin/query.cqi unde “nume_masina” este numele (sau adresa IP) a masinii pe care se afla aplicatia. Aplicatia astfel creata este accesibila (sau nu, in functie de optiuni) de oriunde din Internet, de exemplu de pe orice calculator dotat cu modem si care are acces la Internet printr-un cont de dial-up.

2.8.2.3.2. Performanta MySQL

Sunt testate mai multe sisteme de gestiune a bazelor de date instalate pe sistemul de operare Windows NT. Rezultatele testului arata performanta MySQL in comparatie cu alte SGBD-uri concurente.
Un alt test care foloseste tehnologia ADO si care executa comanda: “SELECT * FROM ADOXYZ” confirma viteza MySQL (rezultatele in secunde);

2.8.3. HTML, JavaScript

Hypertext Markup Language (HTML) poate fi descris ca un set de coduri speciale numite “tag”-uri care informeaza un browser web despre cum se afiseaza un document hypertext. HTML poate fi privit ca si o colectie de “stiuluri” care definesc diferite componente ale unei pagini web. Toate documentele HTML sunt in format text ASCII, putand fi citite universal de catre diferitele browsere web existente ce ruleaza pe diferite computere cu diferite sisteme de operare.
Javascript este un limbaj de scripting compact orientat obiect folosit pentru dezvoltarea aplicatiilor Internet client si server. El permite extinderea comportamentului paginulor web mai departe decat clasicul “click and wait” oferit de HTML standard. Cu ajutorul JavaScript-urilor, utilizatorii trec de la folosirea paginilor web la interactiunea cu acestea, viteza de raspuns a paginii web va fi mai mare din cauza ca actiunile JavaScript se petrec la nivelul browserului si nu la cel al serverului care gazduieste pagina web. Interactiunile adaugate cu ajutorul scripturilor transforma pagina intr-o adevarata aplicatie. Codul pentru functiile JavaScript este transmis clientului odata cu pagina HTML, in acest mod browserul poate interpreta acest cod si il poate executa la nivelul clientului. Astfel se pot face verificari de forme la nivelul clientului, se pot deschide ferestre noi, se poate raspunde la miscarea de mouse sau la click-ul de mouse in alte moduri decat cel standard de navigare. Cu toate ca aparentele spun ca javaScript-ul poate fi folosit in mod rau intentionat exista restrictii referitoare la functiile JavaScript, printre care de exemplu interzicerea accesului la disc.
O caracteristica importanta JavaScript este ca pot fi create fisiere cu functii JavaScript care pot fi incluse apoi in paginile HTML, usurand in acest mod reutilizarea codului.

2.8.2.4. Posibilitati de realizare

2.8.2.4.1. APACHE-PHP-MYSQL

Pentru realizarea aplicatiei voi utiliza arhitectura three-tier formata din: Server de web: Apache, Server de baze de date: MySQL, limbaj de programare PHP.

Acestea sunt determinate de faptul ca nu orice sistem de operare ruleaza pe orice hardware, nu toate limbajele de scripting se pot conecta la toate bazele de date, si asa mai departe.
PHP si MySQL pot rula pe orice platforma Linux, Windows, Unix, Mac. Ambele sunt open source.
Elocvente sunt si benchmark-urile anterioare care arata clar ca triada Apache-PHP-MySQL are o performanta ridicata. Aceasta tehnologie este foarte utilizata in prezent pe Internet.
Integrarea PHP cu MySQL este excelenta. Exista foarte multe unelte de management al bazelor de date MySQL. Facilitatile disponibile sunt comparabile cu cele oferite de concurenta. Exista niste functii utile care nu exista in alte produse cum sunt: mysql_insert_id() si mysql_qffected_rows().
PHP si MySQL reprezinta o solutie foarte buna pentru site-urile web din sectorul de mijloc. MySQL este gandit pentru sectorul de mijloc in care selectarea si stocarea rapida de date multe sunt mai importante decat suportul tranzactional. Acest suport tranzactional permite programatorilor sa sincronizeze update-ul mai multor tabele, lucru de care majoritatea aplicatiilor web nu au nevoie.
In comparatie cu Microsoft Acces, MySQL este mult mai rapid. Oracle si Microsoft SQL Server au cam aceeasi performanta cu MySQL, dar costurile sunt foarte ridicate. Oricum comparatia MySQL cu Oracle de exemplu este cam fortata pentru ca fiecare are alt segment caruia i se adreseaza. MySQL este campion cand este vorba de instructiuni cum sunt SELECT, UPDATE si INSERT. In schimb pentru tranzactii Oracle este mai bun.
Apache este astazi cel mai popular Web Server, servind site-urile web de pe Internet, prin functionalitate, viteza si fiabilitate. Apache este un server HTTP cu sursa deschisa, dezvoltat de Apache Group. Codul sursa Apache este disponibil gratuit, inlesnind participarea unei mari comunitati la remedierea eventualelor disfunctionalitati, trecerea pe noi platforme si personalizarea pentru scopuri speciale.
PHP este un limbaj de scripting pe partea de server proiectat special pentru web. Intr-o pagina html se poate scrie cod php care va fi executat de fiecare data cand este vizitata. Pe serverul web codul php este interpretat si se genereaza o pagina HTML. PHP este un proiect open source.

De ce PHP?
PHP are multi competitori cum sunt Pearl, Microsoft ASP, JSP, Colp Fusion. In comparatie cu aceste produse PHP are urmatoarele avantaje:
- performanta ridicata
- suporta interfatarea cu multe sisteme de baze de date
- include librarii pentru multe din cele mai comune task-uri web
- cost redus
- usor de invatat si folosit
- este portabil
- este disponibil codul sursa

Performanta
PHP este foarte eficient. Folosind un singur server ieftin se pot deservi milioane de cereri zilnic. Benchmark-urile arata ca PHP isi depaseste competitia.

Integrarea cu bazele de date
PHP are disponibile conexiuni native cu multe sisteme de baze de date. Pe langa Mysql se poate conecta direct la PostgresSQL, mSQL, Oracle, etc.
Folosind ODBC se poate conecta la orice baza de date care are un driver ODBC.
Librarii incluse
Pentru ca PHP a fost proiectat pentru web, acesta are functii predefinite pentru efectuarea diferitelor taskuri. Se pot genera imagini gif “on-the-fly”, se poate conecta la diferite servicii de retea, poate trimite mailuri, poate lucra cu cookie-uri, poate genera fisiere PDF, toate cu doar cateva linii de cod.

Costuri
PHP este gratuit. Poate fi downloadat de pe site-ul oficial www.php.net.

Invatarea PHP
Sintaxa PHP este bazata pe a altor limbaje de programare, mai ales pe C si Pearl. Pentru un cunoscator de C, C++, Pearl sau Java limbajul se poate invata foarte repede.

Portabilitatea
PHP este disponibil pentru diferite sisteme de operare. Functioneaza pe cele gratuite cum sunt Linux si free BSD, pe versiunile comerciale de UNIX cum sunt Solaris si IRIX, pe diferite versiuni de Microsoft Windows. Codul merge in general fara modificari pe oricare sistem pe care ruleaza PHP.

Codul sursa
Accesul la codul sursa este gratuit. Se pot efectua modificari sau adaugiri fara restrictii.

De ce MySQL?
Unii dintre competitorii principali sunt PostgresSQL, Microsoft SQL Server si Oracle. MySQL are multe avantaje: performante ridicate, cost redus, usor de invatat si configurat, portabil, codul sursa este disponibil.
Performanta
MySQL este fara indoiala rapid. Asa cum o arata si benchmark-urile.

Cost redus
MySQL este disponibil gratuit sub licenta open Source sau la un cost redus sub licenta comerciala daca este necesar.

Usor de utilizat
Multe dintre sistemele de baze de date moderne folosesc SQL. Oricine a folosit un SGBD se va putea adapta la MySQL repede. Este mai usor de instalat decat multe produse similare.

Portabilitatea
MySQL poate fi utilizat pe multe sisteme UNIX si pe cele Windows.

Codul sursa
La fel ca si PHP si pentru MySQL este disponibil codul sursa.
Printre dezavantaje s-ar putea mentiona ca MySQL nu suporta proceduri stocate, triggere si instructiunea SELECT INTO.

2.8.2.5. Securitatea web
Criptografia, este stiinta care foloseste matematica pentru a cripta si decripta datele. Criptografia este folosita pentru a stoca date confidentiale, sau pentru a le trimite prin medii nesecurizate. Datele criptate, se numesc cipher, iar impreuna cu datele necriptate, constiuie criptograma.
Cuvantul “criptografie”, vine de la grecescul “krypte”, care inseamna “ascuns” si de la grecescul “grafik”, care inseamna “scriere”.
Criptografia este folosita pentru securizarea datelor, iar inversul ei, este criptanaliza, care este stiinta care analizeaza si “sparge” datele criptate. Cipher-ul este mesajul produs prin aplicarea unei metode de criptografie asupra datelor. Practic, orice cipher, este rezultatul aplicarii unui algoritm, care este invariabil si a unei chei care este variabila.
Criptarea unor date, poate fi puternica sau slaba. Puterea de criptare, este data de timpul si de resursele necesare decriptarii textului criptat, fara sa se stie cheia de criptare. Astfel, pentru a decripta niste date bine criptate, nu sunt de ajuns un miliard de calculatoare, care sa execute un miliard de instructiuni pe secunda si sa aiba la dispozitie tot timpul de acum si pana peste un miliard de ani. Dar, nimeni nu spune ca acest mod de protejare a informatiilor este perfect. Posibilitatea “spargerii” codului, creste cu inaintarea in timp (datorita aparitiei calculatoarelor din ce in ce mai performante) si cu aparitia unor criptanalisti din ce in ce mai determinati.
Un algoritm criptografic, este o functie matematica, folosita in procesul de criptare si decriptare. Algoritmul criptografic, lucreaza cu o cheie (care poate fi un cuvant, un numar, o fraza) pentru a cripta textul. Acelasi algoritm, cripteaza diferit cu diferite chei. Securitatea datelor criptate, depinde de doua lucruri: puterea algoritmului si secretul cu care este tinuta cheia.

Criptarea conventionala (algoritmi simetrici)
In criptarea conventionala, o asa zisa cheie secreta, este folosita atat pentru criptare, cat si pentru decriptare. Criptarea conventionala, se poate zice ca a fost folosita si acum 2000 de ani, cand Iulius Caesar, neavand incredere in mesagerii sai, a inlocuit toate literele a cu d, toate literele b cu e, s.a.m.d.
Deci, fiecare litera venea astfel:
ABCDEFGHIJKLMNOPQRSTUWXYZ
DEFGHIJKLMNOPQRSTUWXYZABC
Folosind acest algoritm, cuvantul “SECRET”, va deveni “VHFUHW”. Pentru ca un text criptat sa fie citit de catre altcineva, va trebuie sa i se spuna cheia, care, in acest caz este 3.
Acest tip de criptare, are avantajul ca este rapid. El este eficient cand nu trebuie sa se transmita datele de la o persoana la alta. Dezavantajul, consta in transmiterea cheii secrete catre cealalta persoana. Daca o a treia persoana intra in posesia cheii, ea poate sa modifice, sa stearga sau doar sa citeasca datele.
Criptarea cu cheie publica (algoritmi asimetrici)
Problema distribuirii cheii secrete, este rezolvata de acest tip de criptare. Ea a fost inventata in 1975 de Whitfield Diffie si Martin Hellman (sunt dovezi ca acest tip de criptare a fost descoperit inaintea celor doi de catre Serviciul Secret Britanic, dar a fost tinut secret si nu s-a facut nimic cu el).
Criptarea cu cheie publica consta in folosirea a doua chei: una publica si alta privata. Cheia publica, se poate spune oricui, ea nefolosind decat la criptarea mesajului. Decriptarea mesajului, este realizata de a doua cheie (cea privata).
Algoritmi care folosesc astfel e chei sunt:
• Elgamal
• RSA
• Diffie-Helman
• DSA

In practica, de cele mai multe ori, sunt folositi, in combinatie, atat algoritmii simetrici, cat si cei nesimetrici. Un algoritm cu cheie publica este folosit pentru a cripta o cheie luata aleator, iar cheia necriptata, este folosita pentru a cripta datele propriu-zise, folosind un algoritm simetric. Acest tip de criptare, este numit criptare hibrida, si este foarte folosit datorita rapiditatii si protectiei care sunt oferite in acelasi timp.
Algoritmul MD5 (Message Digest) are ca intrare un mesaj de lungime arbitrara si produce la iesire o “amprenta” de 128 de biti a intrarii. Ipoteza este ca e imposibil computational ca doua mesaje sa aiba aceeasi semnatura, sau sa se produca o anumita iesire specificata. Algoritmul este utilizat pentru semnaturi digitale, unde un fisier mare trebuie securizat inainte sa fie criptat cu o cheie privata intr-un sistem de criptare cu cheie publica asa cum este RSA.

3. MEMORIU JUSTIFICATIV

3.1 Proiectarea si implementarea bazei de date

Proiectarea bazei de date am facut-o pe baza etapelor studiate in capitolul anterior, iar implementarea cu ajutorul produsului SQLyog.
Baza de date va fi sub forma unor fisiere de tip frm, MYD si MYI. Pentru fiecare tabel din baza de date vom avea 3 astfel de fisiere.
In urma etapelor de analiza si de proiectare prezentate in capitolul anterior, am realizat structura bazei de date cu ajutorul produsului SQLyog. Astfel, baza de date contine un numar de 13 tabele, 12 sunt cele corespunzatoare entitatilor prezentate in tabelul 1 din subcapitolul 2.3:
- gara
- ruta
- rute_date
- statie
- tren
- traseu
- tiptren
- bilet
- loc
- pret
- supliment
- calator
Celelalt tabel este auxiliar, nu rezulta in urma analizei, ci a fost introdus ca element ajutator pentru administrare. Acesta este:
- user -; contine userii care au ddreptul sa administreze site-ul cu numele, parola si tipul user-ului
In figura urmatoare, prezentam structura bazei de date, cu tabelele si legaturile dintre ele. Observam ca fata de atributele prezente in diagrama entitate-relatie, sunt prezente si atributele de identificare de tip chei straine, care se propaga in momentul realizarii legaturilor dintre tabele. De exemplu, in tabela tren, atributul id_tip, este cheie straina propagata din tabela tiptren, pentru a se face legatura dintre cele 2 tabele.

1 1

8 8
8
8


8
1

1

8
8 1

In general, am denumit atributele de identificare cu sufixul id (de la identificator sau index).

3.2 Proiectarea interfetei utilizator

Meniul aplicatiei
Meniul principal al aplicatiei este implementat in HTML, iar cel de la mersul trenurilor in PHP si au urmatoarea structura arborescenta:





































Figura 8. Structura arborescenta a meniului

De la cauta informatii tren spre rute am facut linia punctata deoarece acel link apare doar in cazul in care am ajuns in informatii tren din rute.

Tabelul urmator contine categoriile, subcategoriile meniului precum si functionalitatea acestora.
CATEGORIE SUBCATEGORIE FUNCTIONALITATE
Home Pagina de start
Mersul trenurilor Plecari / Sosiri Informatii despre orarul de parcurs al trenurilor intr-o anumita gara
Informatii tren Informatii despre un anume tren.
Rute Informatii despre toate trenurile care circula pe o ruta la o anumita data
Jurnal feroviar Articole gazetararesti
Galerie foto O galerie foto cu gari realizata in java script cu ajutorul ajutorul softului Xara WebStyle 4

Tabel 7. Structura meniului
Meniul principal este afisat permanent pe frame-ul de sus.


In figura .... este prezentata o mostra referitoare la organizarea meniului mersul trenurilor.

Continutul lucrarii:
Pagina principala este pagina care se dechide la fiecare rulare a aplicatiei si in care v-a aparea meniul de sus asa cum apare in figura ....
Index.php este pagina din care se pot afla informatii despre plecari/sosiri, trenuri si rute in care va aparea trei coloane cu trei meniuri pentru fiecare optiune prezentata mai sus. Pagina arata ca si in fig. .....
Realizarea acestei pagini s-a facut prin crearea unei tabele care a fost impartita in trei coloane. In prima coloana este formularul care trebuie completat pentru a afla tabelele cu plecari sau sosiri in gara dorita.
Cauta gara sunt prezentate toate trenurile care pleaca sau care sosesc intr-o anumita gara impreuna cu orele aferente de plecare sau sosire.
Realizare acestei pagini s-a facut prin crearea unei tabele care a fost impartita in doua coloane. In prima coloana s-a creat un nou tabel in care se afiseaza trenurile care circula pe ruta respectiva, iar in a doua coloana se afiseaza poza garii.


Exemplu:

Fig. Ffff
Cauta tren sunt prezentate toate statiile prin care trece un tren incepad cu gara de plecaresi pana la gara de sosire impreuna cu orele la care sosesc si la care pleaca trenul in gara respectiva.
Exemplu:

Cauta rute sunt prezentate toate trenurile care circula pe ruta respectiva intr-o anumita data.
Exemplu:

Rezervare aceasta optiune per


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta