Sunteți pe pagina 1din 10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof.

Alina Pintescu + Carmen Anton


Cerinte generale:
1. numele tabelei se va alege de catre elev intr-un mod corespunzator problemei
2. numele si tipul campurilor tabelei se vor stabili de catre elev in conformitate cu cerintele din
enunt
OBS : la rezolvarea pb

n fereastra command
set defa to ......calea spre dir curent........
create ......numele bazei de date ............
modi comm ..... numele fis de program .....
do ....numele fis de program ......
quit {p sirea fox}

1. Schimb valutar
La o cas de schimb valutar cele mai importante tranzactii se p streaz ntr-o tabela ce con ine
informatii despre:
- numele persoanei care efectueaza tranzactia
- tipul operatiei efectuate de casa de schimb poate fi cumparare sau vanzare
- tipul valutei dolar sau euro
- cursul zilnic valuta lei
- suma de bani tranzactionata de catre persoana, exprimata in lei.
Construi i o aplica ie care s realizeze opera iile:
a) citirea de la tastatura a unei sume de bani exprimata in lei, nu mai mare de 1000 si afisarea
persoanelor care au tranzactionat prin cumparare mai mult decat suma citita
b) adaugarea in tabela a unei tranzactii noi si afisarea intregii tabele dupa adaugare
c) calcularea sumei totale in lei cumparata de acea casa de schimb

Rezolvare
-

baza de date:
nume, caracter, 20
operatia, caracter, 9 {poate fi vanzare sau cumparare}
casa valuta, caracter, 1 {e = euro sau d = dolar}
curs, numeric, 5
suma, numeric, 7 {<=1000}

problema1.prg

use casa
x=0
input 'dati suma de bani' to x
if x>1000
?'suma a fost > 1000'
else
browse fields nume for (suma>x) and
(operatia="cumparare")
endif
append
browse nomodify
sum suma to y for operatia="cumparare"
?'valoarea totala tranzactionata prin cumparare este '
?y
use

1/10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton
2. Oficiul fortelor de munca
La oficiul fortelor de munca se retin intr-o tabela urmatoarele informatii despre persoanele fara
loc de munca :
- numele
- sex
- varsta
- profesie
Construi i o aplica ie care s realizeze opera iile:
a) citirea de la tastatura a unei profesii si afisarea persoanelor de sex feminin care au calificarea
respectiva
b) adaugarea in tabela a unei inregistrari noi se impune restrictia ca persoana introdusa sa
aiba cel putin 16 ani. Vizualizarea tabelei in cazul in care s-a facut adaugarea
c) afisarea varstei maxime din tabela si a datelor personale a persoanei sau persoanelor care
poseda acea varsta

Rezolvare
-

baza de date:

munca

Problema2.prg

nume, caracter, 20
sex, caracter, 1 {f = feminin sau m = masculin}
varsta, numeric, 2 { >=16 }
profesia, caracter, 15

use munca
x=''
accept 'dati profesia' to x
browse fields nume for (sex='f') or (sex='F') and (profesia=x)
nomodify
accept 'numele=' to n
accept 'sex=' to s
input 'varsta=' to v
accept 'profesia=' to p
if v<16
?'varsta nu e corespunzatoare'
else
go bottom
append blank
replace nume with n, sex with s, varsta with v, profesia with p
browse nomodify
endif
calculate max(varsta) to x
browse fields nume for varsta=x nomodify
use

3. Casa de bilete
Pentru eviden a biletelor de c torie vndute la o cas de bilete, fiecare bilet se nregistreaz ntr-o
tabel cu informatiile:
- numar bilet
- destinatie
- clasa
- pret
- numar tren
- data emiterii
Construi i o aplica ie care s realizeze opera iile:
a) introduce i datele unui bilet nou
b) vizualizati biletele vandute pentru clasa I, ordonate dupa destinatie
c) calculati ce incasari a avut casa de bilete pentru o luna citita de la tastatura
2/10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton

Rezolvare
-

Problema3.prg

baza de date:
numar, numeric, 5
destinatie, caracter, 20
clasa, numeric, 1
bilete pret, numeric, 5

use bilete
append
browse nomodify
sort to bilete2 on destinatie
use bilete2
browse for clasa=1 nomodify
input 'dati luna=' to x
sum pret to y for x=month(data_e)
?y
use

nrtren, numeric, 5
data, date

4. Banca
La o banca se tine evidenta depunatorilor intr-o tabela ce contine urmatoarele informatii:
- nume depunator
- suma depusa
- termen
- dobanda
- depozit
Construi i o aplica ie care s realizeze opera iile:
a) adaugati un nou deponent
b) cititi de la tastatura o suma minima si afisati alfabetic toti depunatorii care au depus o suma
mai mare decat cea citita
c) calculati totalul sumelor depuse in banca cu scadenta la 24 luni

Rezolvare
-

Problema4.prg

baza de date:

banca

nume, caracter, 20
suma, numeric, 7
termen, numeric, 3
dobanda, numeric, 5

use banca
append
browse nomodify
input 'dati suma=' to x
sort to banca2 on nume
use banca2
browse for suma>x nomodify
sum suma to y for termen=24
?y
use

depozit, numeric, 5
5. Medic de familie
Pentru evidenta persoanelor arondate unui
medic de familie, se organizeaz o tabela
cu informatiile:
- cnp
- nume
- adresa
- ultimul diagnostic
- data ultimului consult
Construi i o aplica ie care s realizeze opera iile:
a) o persoana noua face o cerere si vrea sa intre in evidenta medicului de familie. Introduceti
datele acelei persoane in tabela.
b) afisati persoanele care au fost consultate in luna curenta, impreuna cu diagnosticul lor
c) cititi de la tastatura un diagnostic si calculati cate persoane au primit acel diagnostic

Rezolvare

Problema5.prg

baza de date:
cnp, numeric, 13
nume, caracter, 20
adresa, caracter, 20
medic
diag_u, caracter, 15
data_c, date, 8

use medic
append
browse nomodify
browse fields nume, diag_u for month(data_c)=month(date()) nomo
accept 'dati diagnostic ' to d
count to y for diag_u=d
?'au fost un nr de persoane= '
?y
3/10
use

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton
6. Camping
Pentru evidenta rezervarilor/ocuparii locurilor de cazare intr-un camping se organizeaza o tabela cu
informatiile:
- numarul locului de cazare
- tipul locului
- data inchirierii
- numar nopti de cazare
- numele persoanei titulare pe locul respectiv
Construi i o aplica ie care s realizeze opera iile:
a) adaugarea in tabela a unei noi rezervari
b) pentru o persoana citita de la tastatura calculati si afisati de cate ori a mai fost cazata in acel
camping in casute
c) afisati locurile libere de cazare (data inchirierii+ numar nopti cazare < data curenta)
ordonate dupa tipul locului

Rezolvare

Problema6.prg

baza de date:
nr, numeric, 3
tip, caracter, 10
camping data_i, date, 8
Nr_nopti, numeric, 3
nume, caracter, 15

use camping
append
browse nomo
accept 'dati numele pers ' to n
count to y for (nume=n)and (tip='casute')
?'nr cazarilor este'
?y
sort to camping2 on tip
use camping2
browse for data_i+nr_nopti<date() nomo
use

7. Magazin
Pentru gestionarea produselor dintr-un magazin se organizeaza intr-o tabela informatiile:
- cod produs
- denumire produs
- unitate de masura
- cantitate
- pret unitar
Construi i o aplica ie care s realizeze opera iile:
a) adaugati o noua inregistrare
b) afisati produsele care se g sesc ntr-o cantitate cuprins ntre dou limite date de la tastatur
c) calculati valoarea stocului din magazin (pret unitar*cantitate)

Rezolvare

Problema7.prg

baza de date:
cod, numeric, 5
denumire, caracter, 10
magazin unitate, caracter, 10
cantitate, numeric, 5
pret, float, 7, 2

use magazin
append
browse nomo
input 'dati lim inferioara' to li
input 'dati lim superioara' to ls
browse for (cantitate>=li) and (cantitate<=ls) nomo
sum pret*cantitate to y
?' valoarea stocului este'
?y
use

8. Agenda personala
O persoana isi organizeaza agenda personala cu informatii de genul:
- nume
- data nasterii
- localitate de domiciliu

4/10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton
- telefon fix
- telefon mobil
Construi i o aplica ie care s realizeze opera iile:
a) calculati numarul persoanelor care isi sarbatoresc data nasterii azi
b) introduceti o noua persoana in tabela
c) afisati numerele de telefon ale persoanelor dintr-o localitate data si al caror nume incepe cu
litera L

Rezolvare
-

baza de date:

agenda

nume, caracter, 15
data_n, date, 8
loc, caracter, 20
telefon_f, numeric, 10
telefon_m, numeric, 10

Problema8.prg

use
count to y for day(data_n)=day(date()) and month(data_n)=month(date())
?'nr de persoane='
?y
append
browse nomo
accept 'dati localitatea' to y
browse fields telefon, mobil, nume for(loc=y) and substr(nume,1,1)='l'
use

9. Concurs
Municipalitatea orasului a hotarat sa organizeze un concurs pe tema Miscarea inseamna
sanatate. Pentru aceasta a stabilit 3 probe: atletism, ciclism si proba de forta. Datele referitoare
la concurs sunt:
- nume participant
- punctaj proba1
- punctaj proba2
- punctaj proba3
- total puncte
Construi i o aplica ie care s realizeze opera iile:
a) introducerea unui nou participant (total puncte nu se va introduce)
b) calculati totalul pentru fiecare participant si afisati noua tabela ordonata descrescator dupa
punctaj
c) calculati cati participanti au obtinut mai mult de 20 de puncte la proba 1

Rezolvare
-

baza de date:
nume, caracter, 20
pb1, numeric, 3
concurs pb2, numeric, 3
pb3, numeric, 3
total, numeric, 3

Problema9.prg
use concurs
accept 'nume' to n
input 'punctaj 1= ' to p1
input 'punctaj 2 = ' to p2
input 'punctaj 3 = ' to p3
append blank
replace nume with n, pb1 with p1, pb2 with p2,pb3 with p3
browse nomo
scan
replace total with pb1+pb2+pb3
endscan
sort to concurs2 on total/D
use concurs2
browse nomo
count to x for pb1>20
?x
5/10
use

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton
10. Diriginte
Un diriginte tine o evidenta a situatiei absentelor in clasa sa astfel:
- nume elev
- numar total absente
- numar absente nemotivate
- media la purtare
Construi i o aplica ie care s realizeze opera iile:
a) introduceti un nou elev in tabela
b) calculati cate absente motivate sunt pe toata clasa
c) afisati elevii cu note peste 7 la purtare, ordinati alfabetic

Rezolvare

Problema10.prg

baza de date:
nume, caracter, 20
nr_abs, numeric, 3
diriginte abs_nem, numeric, 3
media_p, float, 5, 2

use diriginte
append
browse nomo
sum nr_abs - abs_nem to y
?'nr absente motivate este= '
?y
sort to diriginte2 on nume
use diriginte2
browse fields nume for media_p>7
use
11. FISC
La Fisc se pastreaza evidenta impozitelor pe imobile intr-o tabela cu structura :
- nume persoana
- tip locuinta (casa, vila sau apartament)
- impozit
- achitat
Construi i o aplica ie care s realizeze opera iile:
a) adaugati o persoana in tabela
b) calculati suma incasata pana in prezent din impozite
c) afisati alfabetic toate persoanele care detin o casa sau vila

Rezolvare
-

baza de date:
nume, caracter, 20
tip, caracter, 15
fisc impozit, numeric, 10
achitat, logic, 1

Problema11.prg
use fisc
append
browse nomo
sum impozit to y for achitat=.T.
?y
sort to fisc2 on nume
use fisc2
browse fields nume for (tip='casa') or (tip='vila')
use

12. Seminar
La un seminar international organizat pe probleme de ecologie, au fost invitate personalitati
politice, oameni de cultura si oameni de afaceri din diferite tari europene. La biroul
Organizare se solicita datele unui invitat:
- nume
- domeniul activitatii
- tara de origine
- varsta
Construi i o aplica ie care s realizeze opera iile:
a) introducerea datelor unui nou invitat
b) citirea de la tastatura a unie tari si afisarea invitatilor din acea tara
c) calcularea mediei de varsta pe domeniul afaceri
6/10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton

Rezolvare

Problema12.prg

baza de date:
nume, caracter, 20
domeniul, caracter, 20
seminar tara, caracter, 15
varsta, numeric, 3

use seminar
append
browse nomo
accept 'dati numele= ' to y
browse fields nume for tara=y nomo
sum varsta to x for domeniul='afaceri'
count to z for domeniul='afaceri'
?'media de varsta pe domeniul afaceri este='
?x/z
13. Tari
Intr-o tabela se organizeaza informatii referitoare la tari: use
- denumirea tarii
- continentul in care se afla
- capitala
- numar locuitori
Construi i o aplica ie care s realizeze opera iile:
a) introducerea unei noi tari in tabela
b) se citeste de la tastatura un continent, calculati cate tari de pe acel continent exista in tabela
c) afisati tarile cu capitalele lor, ordonate descrescator dupa numarul de locuitori

Rezolvare
-

Problema13.prg

baza de date:

tari

denumirea, caracter, 20
continent, caracter, 15
capitala, caracter, 15
Nr_loc, numeric, 10

use tari
append
browse nomo
accept 'dati numele continentului=' to x
count to y for continent=x
?'nr de tari este='
?y
sort to tari2 on nr_loc/D
use tari2
browse fields denumirea, capitala, nr_loc nomo
use

14. Unitati scolare


Sa se retina in tabela SCOLI informatii despre unitatile scolare dupa cum urmeaza:
- numele unitatii scolare
- localitatea
- nivelul de invatamant-primar, gimnazial, liceal, sam
- numarul de clase din unitate
- numar de elevi in unitate
Construi i o aplica ie care s realizeze opera iile:
a) Adaugati o noua inregistrare
b) Pentru o localitate citita de la tastatura, copiati in alta tabela identica informatiile referitoare la
unitatile scolare din acea localitate
c) afisati numarul total al elevilor pentru un anumit nivel de invatamant, nivelul fiind introdus de la
tastatura
Problema14.prg
use scoli
Rezolvare
append
- baza de date:
browse nomo
nume, caracter, 15
accept 'dati localitatea= ' to x
localitatea, caracter, 15
sort to scoli2.dbf on nume for localitatea=x
scoli nivel, caracter, 15
use scoli2
nr_clase, numeric, 2
browse nomo
nr_elevi, numeric, 4
use scoli
accept 'dati nivelul= ' to y
sum nr_elevi to z for nivel = y
? 'nr elevi este= '
7/10
?z
use

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton
15. Biblioteca
Pentru evidenta persoanelor inscrise la o bibiloteca avem la dispozitie informatiile :
- cnp
- numele
- data nasterii
- cod personal pentru acces la biblioteca
Construi i o aplica ie care s realizeze opera iile:
a) introduceti date pentru o persoana noua care se prezinta la biroul de inscrieri
b) calculati cate femei sunt inscrise la biblioteca
c) afisati numele si codul persoanelor nascute intr-un anumit an citit de la tastatura

Rezolvare
baza de date:
cnp, caracter, 13
nume, caracter, 15
biblioteca data_n, date, 8
cod, numeric, 10

Problema15.prg

use biblioteca
append
browse nomo
count to y for substr(cnp,1,1)='2'
?'femei sunt='
?y
input 'dati anul=' to x
browse fields nume, cod for year(data_n)=x nomo
use

16. Politia rutiera


Angajatii de la politia rutiera au hotarat sa creeze o evidenta a soferilor din judetul lor. In acest sens
au creat o tabela SOFER continand :
- numele soferului
- localitatea de domiciliu
- data la care a fost eliberat permisul de conducere
- numarul total al amenzilor pe care le-a primit acel sofer
- valoarea ultimei amenzi platite de catre conducatorul auto
Construi i o aplica ie care s realizeze opera iile:
a) Introduceti o noua inregsitrare
b) Afisati acei soferi care inca mai trebuie sa poarte semnul de incepator( nu a trecut inca un an de
cand au obtinut permisul)
c) calculati numarul total de amenzi date soferilor dintr-o localitate citita de la tastatura

Rezolvare

Problema16.prg

baza de date:
nume, caracter, 20
localit, caracter, 20
data_e, date, 8
sofer
nr_amen, numeric, 3
amenda_u, F, 7, 2

use sofer
append
browse nomo
browse for (data_e+365)>=date()
accept 'dati localitatea= ' to x
sum nr_amen to y for localit=x
?'nr total de amenzi este= '
?y
use

17. Scoala
La secretariatul unei scoli sunt necesare informatii referitoare la colectivele de elevi existente,
interesand in principal :
- identificatorul clasei
- numarul de elevi din clasa
- numele dirigintelui
Construi i o aplica ie care s realizeze opera iile:
a) calculati cate clase au un efectiv de exact 30 elevi si afisati acele clase
b) pentru un nume de profesor introdus de la tastatura, precizati al cui diriginte este
c) pentru toate clasele a IX-a din tabela, cresteti numarul de elevi cu 3.
8/10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton

Rezolvare

Problema17.prg

baza de date:
identificator, caracter, 4
colective nr_elevi, numeric, 2
diriginte, caracter, 20

use colective
count to x for nr_elevi=30
?'nr de clase cu 30 elevi este'
?x
browse for nr_elevi=30 nomo
accept 'dati numele prof= ' to y
browse for diriginte=y nomo
scan
if substr(identificator,1,2)= 'IX'
replace nr_elevi with nr_elevi + 3
endif
endscan
browse nomo
use

18. Angajati
Se considera o tabela ce contine urmatoarele informatii referitoare la angajatii unei firme :
- nume angajat
- varsta
- tipul muncii prestate (productiv sau neproductiv)
- salar vechi
- salar nou
Construi i o aplica ie care s realizeze opera iile:
a) introduceti o noua inregistrare in tabela (salar nou nu se introduce)
b) afisati descendent toti salariatii care au cel mult 50 de ani
c) actualizati salariu nou cu salariu vechi indexat cu procentul p citit de la tastatura

Rezolvare
-

baza de date:

angajati

nume, caracter, 20
varsta, numeric, 2
tip_munca, caracter, 1
salar_v, numeric, 7

{p=productiv sau n=neproductiv}

salar_n, numeric, 7

Problema18.prg

use angajati
append
sort to angajati2 on varsta/d for varsta<=50
use angajati2
browse nomo
use angajati
input 'dati procentul ' to p
scan
replace salar_n with salar_v+(p/100) * salar_v
endscan
browse nomo
use

19. Biblioteca personala


O persoana doreste sa-si organizeze biblioteca personala. Informatiile care o intereseaza pe
persoana sunt:
- titlul cartii
- autorul
9/10

Atestat 2007-Subiecte Baze de Date, rezolvari propuse de prof. Alina Pintescu + Carmen Anton
- genul caruia ii apartine lucrarea (poezie, beletristica, proza sau SF)
- numar volume.
Construi i o aplica ie care s realizeze opera iile:
a) introduceti o carte noua in tabela
b) afisati toate cartile care apartin unui gen literar citit de la tastatura, ordonate alfabetic dupa titlu
c) calculati cate carti din biblioteca au mai mult de 5 volume

Rezolvare

Problema19.prg

baza de date:
titlu, caracter, 20
autor, caracter, 20
biblioteca gen, caracter, 20
nr_vol, numeric, 1

use biblioteca
append
accept 'dati genul ' to g
sort to biblioteca2 on titlu for gen=g
use biblioteca2
browse nomo
use biblioteca
count to y for nr_vol>5
?'nr cartilor care au mai mult de 5 volume este='
?y
use

20. Licitatie
Pentru participarea la o licitatie mai multe firme depun oferte. Organizatorii sunt interesati sa
cunoasca :
- denumirea firmei
- data infiintarii
- tipul firmei S.A, S.R.L.
- capitalul social
- valoarea ofertei curenta.
Construi i o aplica ie care s realizeze opera iile:
a) introducerea unei noi inregistrari in tabela
b) se citeste de la tastatura un prag maxim al ofertei. Stergeti din tabela firmele care au depus o
oferta ce depaseste pragul respectiv.
c) Stabiliti care este firma ce a facut cea mai buna oferta (minima ca si pret ) si afisati informatiile
despre ea

Rezolvare

Problema20.prg

baza de date:
nume, caracter, 20
data_i, date, 8
licitatie tip, caracter, 6 (SA sau SRL)
capital, F, 7, 2
valoare, F, 7, 2

use licitatie
append
browse nomo
input 'dati pragul max al ofertei= ' to p
delete for valoare>p
set delete on
calculate min(valoare) to m
browse for valoare=m nomo
use

10/10