GRUP SCOLAR STEFANESTI
AGENITA DE VOIAJ
Sisteme de gestiune a bazelor de date
Sistemul de gestiune a bazelor de date (SGBD) este un ansamblu de programe (produs software) , carea realizeaza interfata dintre o baza de date si utilizatorii acesteia . SGBD asigura urmatoarele obiective : independenta datelor fata de programe , facilitati de descriere si utilizare a datelor , securitatea datelor , partajabilitatea datelor intre utilizatori.
Pentru ca un sistem software sa fie SGBD , el trebui sa aisgure obiecitvele de mai sus prin patru functii proprii : definirea datelor , manipularea datelor , utilizarea datelor , administrarea datelor .
Pe langa instrumentele specifice puse la dispozitie de SGBD pentru administratorul bazei de date , acesta isi poate crea , in colaborare cu programatorii de aplicatie , o serie de alte interfete , necesare gestionarii optime a bazei de date.
Arhitectura unui SGBD evidentiaza componentele acestuia si legaturile dintre ele . Pe parcursul evolutiei SGBD - urilor au fost elaborate standarde de arhitecturi , precum si numeroase late propuneri . Tendinta actuala este de a structura componentele unui SGBD intr-o arhitectura pe trei niveluri : nucleul , interfetele , instrumentele .
Nucleul SGBD contine principalele mecanisme care asigura functiile sistemului . Acest lucru este asigurat in mare parte de limbajele sistemului (LDD , LMD).
Interfetele sunt componente destinate , in special , dezvoltarilor aplicatiilor cu baze de date . Aici sunt incluse generatoarele , interfetele cu alte limbaje de programare , elementele de proiectare asistata CASE (Computer Aided Software Engeneering).
Instrumentele sunt componente destinate intretinerii si administrarii bazei de date. Ele sunt destinate tuturor categoriilor de utilizatori ai bazei de date , dar in mod special administratorului . Aici sunt incluse depanatoare , editoare , browsere , produse de retea , utilitare de diferite tipuri.
Programele de aplicatie sunt scrise , in cea mai mare parte , in limbajele de programare oferite de SGBD - uri . Cele doua tipuri de limbaje , LDD si LMD , permit scrierea programelor pentru descrierea si manipularea datelor prin istructiuni (scrierea codului sursa) sa prin interfete (generarea codului sursa) .
Unele module de program pot fi realizate de programatorii de aplivatie in limbajele de programare universale pe care le accepta ( ca interfete de programare ) diferitele SGBD - uri. De exemplu FoxPRo adminte interfata cu cu limbajul C si cu limbajul de asamblare.
Programele de aplicatie sunt compuse atat din module procedurale ( pentru prelucrari , interfete om - masina ) , cat si module neprocedurale ( pentru accesul la baza de date ).
Modulele procedurale sunt scrise in limbaje imperative , care permit dezvoltarea celor trei structuri fundamentale din programarea structurala : secventiala , alternativa , repetitiva. Astfel de limbaje de programare sunt cele universale ( Basic , Pascal , C , etc. ) sau cele proprii unor SGBD - uri ( FoxPro , dBase , Progress ).
Modulele neprocedurale sunt scrise in limbaje descriptive care permit dezvoltarea doar a unor structuri secventiale de program. Astfel de limbaje de programare sunt cele relationale ( SQL , QBE ) sau cele orientate obiect ( Smalltalk ).
Exemple de tipuri de module de program de aplicatie : pentru incarcare / validare de date , pentru actualizare , pentru regasire , pentru construirea de meniuri .
Pentru dezvoltarea programelor de aplicatie , in vederea cresterii eficientei muncii de programare , se folosesc atat tehnicile de programare clasice ( structurala , modulara ) , cat si cele mai noi ( orientata obiect , vizuala ) . Tot pentru cresterea productivitatii programarii se pot genera module de program de aplicatie cu intrumentele oferite de SGBD - uri ( exemple : generatoare de meniuri , de videoformate , de rapoarte , de grafice , etc. ).
Avantajul generatoarelor este ca usureaza munca de programare s ca permit dezvoltarea rapida a aplicatiilor cu baze de date . Dezavantajul este ca rezulta o flexibilitate mai redusa a aplicatiilor.
Sisteme de gestiune a bazelor de date relationale
Sistemele relationale au ca orice SGBD caracteristicile comune prezentate anterior . Pe langa acestea , fiecare tip de SGBD , deci si cele relationale , au o serie de caracteristici specifice . Aceste elemente specifice pentru SGBD relationale (SGBDR) vor fi trecute in revista , pe scurt , in cele ce urmeaza
Conceptele din teoria relationala , prezentate anterior , sunt implementatea in VFP. O parte dintre ele au denumiri diferite , dar continutul este acelasi . De asemenea , stiind faptul ca organizarea datelor in baze de date din memoria externa a evoluat din organizarea in fisiere , exista analogii in ceea ce priveste notiunile utilizate.
Un SGBD este relational daca utilizeaza pentru organizarea datelor in memori externa modelul de date relational si limbajele relationale . Sistemele relationale fac parte din generatia a doua de SGBD - uri.
Evaluarea unui SGBDR se poate face riguros pe cele 13 reguli ale lui E.F. Codd. Deoarece acestea sunt foarte restrictive , in practica se foloseste un set de cerinte mnimale desprinse din regulile lui Codd:
a) intreaga baza de date se reprezinta prin tabele (relatii );
b) operatiile cu tabele nu fac apel la pointeri , fisiere inverse ;
c) operatorii relationali de proiectie , selecti , jonctiune trebuie sa fie implementati fara limitari interne;
d) toti operatorii de baza din algebra relationala trebuie sa fie implementati fara limitari interne;
e) sunt suportate restrictiile de integritate referitoare la unicitatea cheii (UNIQUE) si cea referentiala (FOREIGN KEY) . In functie de modul cum sunt asigurate cerintele de mai sus , se poate face evaluarea unui SGBD astfel : comple relational(a,b,c,d) , minimal relational (a,b,c) , presudorelational (a,c) , cu interfata relationala ( a , c partial - doar pentru interogare).
Arhitectura unui SGBDR respecta structurarea pe trei niveluri , cu urmatoarele aspecte specifice :
nucleul contine un limbaj relational si un limbaj procedural ( propriu sau gazda ) ; cel mai utilizat limbaj relational , singurul standardizat international , este SQL ;
interfetele contin generatoare pentru dezvoltarea aplicatiilor ( videoformate , ecrane , rapoarte , grafice ) , elemente de CASE pentru proiectarea asistata a aplicatiilor , interfete cu alte sisteme de baza de date sau cu limbaje de programare universale ;
instrumentele contin utilitare pentru intretinerea bazei de date , puse la dispozitia administratorului bazei de date si a ạtor utilizatori.
Caracteristicile unui SGBDR pot fi identificate la nivel global si particular.
Caracteristicile globale rezulta din faptul ca sistemel relationale sunt o categorie distincta de SGBD - uri :
limbajele relationale permit definirea datelor - LDD si manipularea datelor LMD. Exemple de limbaje relationale : SQL , QUEL , QBE, ISBL;
controlul integritatii semantice se face in conformitate cu restrictiile de integritate impuse la descrierea datelor prin mecanisme specifice de control;
asigurarea coerentei datelor prin tratarea unitatii de lucru , care este tranzactia , cu mecanisme specifice ;
optimizarea cererilor de regasire pentru cresterea performantelor prin implementarea unor interfete automate ;
utilitare specializate pentru diferitele categorii de utilizatori.
Caracteristicile particulare rezulta din faptul ca fiecare SGBDR are caracteristici individuale comparativ cu alte SGBDR - uri similare . Aceste caracteristici sunt de fapt criterii de comparatie intre diferite SGBDR .Prezentam aceste caracteristici particulare grupate astfel :
caracteristici functie de facilitatile de descriere a datelor ( modul de implementare a modelului relational , utilizarea comceptului de baza de date , definirea metodelor , actualizarea schemei relatiei , restrictiile de integritate ce pot fi dclarate ;
caracteristici functie de facilitatile de manipulare a datelor ( limbajul relational implementat pentru manipularea datelor , modurile de acces la date , calculul aritmetic , tratarea valorii NULL , optimizarea cererilor de regasire , actualizarea realtiilor de baza si virtuale , programarea orientata obiect ;
caracteristici functie de utilizare si administrare ( generatoare de diferite tipuri : videoformate , meniuri , rapoarte , grafice , aplicatii ; elemente de CASE , analize statistice , acces la distanta , autorizarea accesului , utilitate de intretinere).
Exemple de SGBDR : Oracle , DB2 , Informix , Ingres , SQL Server , Visual FoxPro , Acces , Progress , Paradox , dBase.
DESCRIEREA APLICATIEI
Agentia de voiaj este o aplicatie realizata in Microsoft Visual FoxPro 6.0 si are ca scop simularea unei baze de date specifice unei agentii de voiaj. Contine patru sectiuni principale : angajati , trasee , finante si rezervari , cu urmatoarele functii : adaugare , modificare , stergere , vizualizare. Lansarea in executie a aplicatiei se face cu Agentia de voiaj.app iar modificarea acesteia cu Agentia de voiaj.pjx.
STRUCTURA BAZEI DE DATE
Tabele:
ANGAJATI - stocheaza informatii despre angajati
NUME C 15 numele
DATA_N D 8 data nasterii
LOC C 20 locul nasterii
CNP C 13 cnp - ul
FUNCTIE C 20 functia
DATA_A D 8 data angajarii
SALARIU N 5 salariu
ADRESA C 4 adresa
NR C 10 numarul de telefon
TRASEE - stocheaza informatii despre trasee
RUTA C 30 plecarea si destinatia
OPRIRI M 4 opririle pe traseu
PLECARE C 5 ora de plecare
SOSIRE C 5 ora de sosire
SOFER C 20 soferul
LISTA C 50 camp folosit pentru lista de pe formular
REZERVARI - stocheaza informatii despre rezervari
NUME C 15 numele
CNP C 13 cnp - ul
RUTA C 50 ruta
LOC C 2 locul in autocar
DATA D 8 data rezervarii
FINANTE - stocheaza informatii despre finante
AN C 4 anul
LUNA C 15 luna
MOTORINA N 5 cheltuieli pe motorina
INTRETIN N 5 intretinere autovehicule
SALARII N 5 salarii
ALTELE N 5 alte cheltuieli
CHELTUIELI N 5 total cheltuieli
INCASARI N 5 total incasari
PROFIT N 5 profit
La rularea aplicatiei se lanseaza in executie formularul main care contine urmatorele butoane:
info - lanseaza in executie formularul info care contine informatii despre aplicatie
angajati - lanseaza formularul angajati care permite adaugarea de noi angajati , si modificarea datelor celor existenti . Contine butoanele :
a. adauga - adauga un angajat in baza de date:
if empty (thisform.text1.value)
messagebox('Introduceti numele !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text2.value)
messagebox('Introduceti data nasterii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text3.value)
messagebox('Introduceti locul nasterii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti cnp - ul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text5.value)
messagebox('Introduceti functia !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text6.value)
messagebox('Introduceti data angajarii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text7.value)
messagebox('Introduceti salariul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text8.value)
messagebox('Introduceti adresa !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text9.value)
messagebox('Introduceti numarul de telefon !',16,'Agentie de voiaj')
return
endif
use angajati
set exact on
locate for thisform.text1.value = nume
if found()
messagebox('Numele figureaza deja in baza de date !',16,'Agentie de voiaj')
return
else
append blank
replace nume with thisform.text1.value
replace data_n with thisform.text2.value
replace loc with thisform.text3.value
replace cnp with thisform.text4.value
replace functie with thisform.text5.value
replace data_a with thisform.text6.value
replace salariu with thisform.text7.value
replace adresa with thisform.text8.value
replace nr with thisform.text9.value
messagebox('Inregistrarea a fost adaugata !',48,'Agentie de voiaj')
endif
use
thisform.init()
thisform.list1.click()
b. reseteaza - reseteaza toate campurile:
thisform.text1.value = ''
thisform.text2.value =
thisform.text3.value = ''
thisform.text4.value = ''
thisform.text5.value = ''
thisform.text6.value =
thisform.text7.value = 0
thisform.text8.value = ''
thisform.text9.value = ''
c. sterge - sterge angajatul selectat:
if empty(thisform.list1.value)
messagebox('Selectati un angajat !',16,'Agentie de voiaj')
return
endif
use angajati
set exact on
locate for thisform.list1.value = nume
delete
pack
messagebox('Inregistrarea a fost stearsa !',48,'Agentie de voiaj')
use
thisform.init()
thisform.list1.click()
d. modifica - modifica datele angajatului selectat:
if empty (thisform.text1.value)
messagebox('Introduceti numele !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text2.value)
messagebox('Introduceti data nasterii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text3.value)
messagebox('Introduceti locul nasterii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti cnp - ul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text5.value)
messagebox('Introduceti functia !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text6.value)
messagebox('Introduceti data angajarii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text7.value)
messagebox('Introduceti salariul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text8.value)
messagebox('Introduceti adresa !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text9.value)
messagebox('Introduceti numarul de telefon !',16,'Agentie de voiaj')
return
endif
use angajati
set exact on
locate for thisform.text1.value = nume
replace nume with thisform.text1.value
replace data_n with thisform.text2.value
replace loc with thisform.text3.value
replace cnp with thisform.text4.value
replace functie with thisform.text5.value
replace data_a with thisform.text6.value
replace salariu with thisform.text7.value
replace adresa with thisform.text8.value
replace nr with thisform.text9.value
messagebox('Inregistrarea a fost modificata !',48,'Agentie de voiaj')
use
thisform.list1.click()
e. inapoi - inchide formular curent si lanseaza formularul main:
thisform.release
do form main
finante - ruleaza formularul finante care permite adaugarea de noi inregistrari sau vizualizarea celor existente . Contine butoanele :
a. adauga - adauga noi inregistrari:
if empty(thisform.text1.value)
messagebox('Introduceti un an !',16,'Agentia de voiaj')
return
endif
if empty(thisform.combo1.value)
messagebox('Selecatati o luna !',16,'Agentia de voiaj')
return
endif
use finante
set exact on
locate for thisform.text1.value = an and thisform.combo1.value = luna
if found()
messagebox('Exista inregistrari pe luna selectata !',16,'Agentie de voiaj')
return
else
append blank
replace an with thisform.text1.value
replace luna with thisform.combo1.value
replace motorina with thisform.text2.value
replace intretin with thisform.text3.value
replace salarii with thisform.text4.value
replace altele with thisform.text5.value
replace cheltuieli with thisform.text6.value
replace incasari with thisform.text7.value
replace profit with thisform.text8.value
messagebox('Inregistrarea a fost salvata !',48,'Agentia de voiaj')
endif
use
b. reseteaza - reseteaza campurile de pe formular:
thisform.text1.value = ''
thisform.combo1.value = ''
thisform.text8.value = 0
thisform.text2.value = 0
thisform.text3.value = 0
thisform.text4.value = 0
thisform.text5.value = 0
thisform.text6.value = 0
thisform.text7.value = 0
c. vizualizeaza - afiseaza inregistrarile de pe luna selectata:
if empty(thisform.text9.value)
messagebox('Introduceti un an !',16,'Agentia de voiaj')
return
endif
if empty(thisform.combo2.value)
messagebox('Selecatati o luna !',16,'Agentia de voiaj')
return
endif
use finante
set exact on
locate for thisform.text9.value = an and thisform.combo2.value = luna
if found()
thisform.text10.value = motorina
thisform.text11.value = intretin
thisform.text12.value = salarii
thisform.text13.value = altele
thisform.text14.value = cheltuieli
thisform.text15.value = incasari
thisform.text16.value = profit
else
messagebox('Nu exista inregistrari pe luna selectata !',16,'Agentie de voiaj')
return
endif
use
d. inapoi - inchide formularul curent si ruleaza formularul main :
thisform.release
do form main
trasee - ruleaza formularul trasee care permite adaugarea de noi trasee , stergerea sau modificarea celor existente. Contine butoanele :
a. adauga - adauga un traseu nou :
if empty (thisform.text1.value)
messagebox('Introduceti ruta !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text2.value)
messagebox('Introduceti ora plecarii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text3.value)
messagebox('Introduceti introduceti ora sosirii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti soferul cursei !',16,'Agentie de voiaj')
return
endif
if empty (thisform.edit1.value)
messagebox('Introduceti opririle din timpul cursei !',16,'Agentie de voiaj')
return
endif
use trasee
set exact on
locate for thisform.text1.value = ruta and thisform.text2.value = plecare
if found()
messagebox('Cursa figureaza deja in baza de date !',16,'Agentie de voiaj')
return
else
append blank
replace ruta with thisform.text1.value
replace plecare with thisform.text2.value
replace sosire with thisform.text3.value
replace sofer with thisform.text4.value
replace opriri with thisform.edit1.value
replace lista with thisform.text5.value
messagebox('Inregistrarea a fost adaugata !',48,'Agentie de voiaj')
endif
use
thisform.init()
thisform.list1.click()
b. reseteaza - reseteaza toate campurile :
thisform.text1.value = ''
thisform.text2.value = ''
thisform.text3.value = ''
thisform.text4.value = ''
thisform.edit1.value = ''
c. sterge - sterge traseul selectat:
if empty(thisform.list1.value)
messagebox('Selectati o cursa !',16,'Agentie de voiaj')
return
endif
use trasee
set exact on
locate for thisform.list1.value = lista
delete
pack
messagebox('Inregistrarea a fost stearsa !',48,'Agentie de voiaj')
use
thisform.init()
thisform.list1.click()
d. modifica - modifica traseul selectat:
if empty (thisform.list1.value)
messagebox('Selectati o ruta !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text1.value)
messagebox('Introduceti ruta !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text2.value)
messagebox('Introduceti ora plecarii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text3.value)
messagebox('Introduceti introduceti ora sosirii !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti soferul cursei !',16,'Agentie de voiaj')
return
endif
if empty (thisform.edit1.value)
messagebox('Introduceti opririle din timpul cursei !',16,'Agentie de voiaj')
return
endif
use trasee
set exact on
locate for thisform.list1.value = lista
replace ruta with thisform.text1.value
replace plecare with thisform.text2.value
replace sosire with thisform.text3.value
replace sofer with thisform.text4.value
replace opriri with thisform.edit1.value
replace lista with thisform.text5.value
messagebox('Inregistrarea a fost modificata !',48,'Agentie de voiaj')
use
thisform.init()
thisform.list1.click()
e. inapoi - inchide formularul curent
rezervari - ruleaza formularul rezervari care permite efectuare de noi rezervari si modificarea celor existente. Contine butoanele :
a. adauga - adauga o noua rezervare:
if empty (thisform.text1.value)
messagebox('Introduceti numele !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text2.value)
messagebox('Introduceti cnp - ul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text3.value)
messagebox('Introduceti ruta rezervata !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti locul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti data rezervarii !',16,'Agentie de voiaj')
return
endif
use rezervari
set exact on
locate for thisform.text1.value = nume and thisform.text3.value = ruta
if found()
messagebox('Rezervarea figureaza deja in baza de date !',16,'Agentie de voiaj')
return
else
append blank
replace nume with thisform.text1.value
replace cnp with thisform.text2.value
replace ruta with thisform.text3.value
replace loc with thisform.text4.value
replace data with thisform.text5.value
messagebox('Inregistrarea a fost adaugata !',48,'Agentie de voiaj')
endif
use
thisform.init()
thisform.list2.click()
b. reseteaza - reseteaza toate campurile :
thisform.text1.value = ''
thisform.text2.value = ''
thisform.text3.value = ''
thisform.text4.value = ''
thisform.text5.value = ''
c. sterge - sterge o rezervare:
if empty(thisform.list2.value)
messagebox('Selectati un nume !',16,'Agentie de voiaj')
return
endif
use rezervari
set exact on
locate for thisform.list2.value = nume
delete
pack
messagebox('Inregistrarea a fost stearsa !',48,'Agentie de voiaj')
use
thisform.init()
thisform.list2.click()
d. modifica - modifica o rezervare
if empty(thisform.list1.value)
messagebox('Selectati un nume !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text1.value)
messagebox('Introduceti numele !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text2.value)
messagebox('Introduceti cnp - ul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text3.value)
messagebox('Introduceti ruta rezervata !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti locul !',16,'Agentie de voiaj')
return
endif
if empty (thisform.text4.value)
messagebox('Introduceti data rezervarii !',16,'Agentie de voiaj')
return
endif
use rezervari
set exact on
locate for thisform.text1.value = nume and thisform.text3.value = ruta
replace nume with thisform.text1.value
replace cnp with thisform.text2.value
replace ruta with thisform.text3.value
replace loc with thisform.text4.value
replace data with thisform.text5.value
messagebox('Inregistrarea a fost adaugata !',48,'Agentie de voiaj')
use
thisform.init()
thisform.list2.click()
e. inapoi - inchide formularul
iesire - asigura iesirea din aplicatie si din mediul FoxPro:
quit.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |