|
SISTEME DE GESTIUNE A BAZELOR DE DATE -FOXPRO
1. Fie o baza de date numita Elevi.dbf care contine urmatoarele informatii: nume(c,10), prenume(c,10), clasa (c,3), medie(n,5,2). Baza de date Olimp.dbf contine rezultatele la olimpiadele scolare ale elevilor din scoala si are structura nume(c,10), prenume(c,10), disciplina (c,15), rezultatul obtinut (c,15) (premiul I, premiul II, premiul III, mentiune, participant). Cerinte:
a) sa se afiseze elevii premianti (I,II,III) din fiecare clasa;
b) Sa se creeze o noua baza de date, numita Rezultate.dbf, care sa contina elevii din baza Olimp cu structura nume, prenume, disciplina, rezultatul obtinut, clasa, media.
a) Use prob 1 in 1
Sele 1
Display all
Use olimp in 2 order nume
Sele 2
Display all
Sele 2
Set relation to nume into b
Index on clasa tag clasa
List a.nume, a.clasa, b.rez_obtin for b.rez_obtin='1' or b.rez_obtin='2' or b.rez_obtin='3'
b) copy to rezultate fields a.nume, b.prenume, b.disciplina, b.rez_obtin, a.clasa, a.medie
use rezultate in 3
sele3
display all
erase rezultate.dbf
2. La o biblioteca exista bazele de date carti.dbf cu campurile cod(N,2), autor(C,12), editura(C,12), pret(N,6), dataintr(D), deteriorat(L), si denumire.dbf cu campurile cod(N,2) si carte(C,12).
Se cer:
1) Sa se afiseze pentru fiecare carte in parte numele ei, numele autorului, editura si pretul sub forma de raport. Sfarsitul raportului va contine o linie cu pretul total al cartilor.
2) Sa se afiseze pretul total al cartilor din fiecare editura in parte.
3.Se da o situatie a cartilor unei biblioteci numita Biblio.dbf, care contine campurile: titlu (c,10), autor (c,30), editura (c,10), pret (n, 9,3), data de imprumut (d,8). Cerinte:
a) pentru o editura ceruta de utilizator, sa se listeze titlul, autorul si pretul cartilor ordonate dupa un criteriu dat (autor sau pret sau titlu);
b) sa se mareasca pretul cartilor din editura x cu p% unde p , x sunt citite de la tastatura.
a) use prob3 in 1
sele 1
list
accept ,nume editura' to x
index on autor tag autor
list titlu, autor, pret for editura =x
browse
b) accept 'editura?' to y
input to z
replace pret with pret=pret*z/100 for editura=y
sele 1
display all
4.Se da baza de date ELEVI.DBF avand articolele cu urmatoarea structura:
NUME - nume elev;
CLASA - 3 caractere din care doua semnifica anul, urmatorul litera clasei;
N1,N2,N3 - note obtinute la examen;
MED - media generala;
Se considera respins la examen elevul care are cel putin una din note mai mica decat 5 sau media generala mai mica decat 6.
Se cer urmatoarele:
a) Sa se completeze campul MED cu media aritmetica a notelor N1, N2, N3 pentru toate inregistrarile.
b) Sa se afiseze numele elevului cu cea mai mare medie din fiecare clasa
a) Use prob4 in 1
Sele 1
List
Replace all media with (n1+n2+n3)/3
Display all
b) index on clasa tag clasa
calculate max(media) to x
list clasa, nume for media=x
5. Se da o situatie a cartilor unei biblioteci numita Biblio.dbf, care contine campurile: titlu (c,10), autor (c,30), editura (c,10), pret (n, 9,3), data de imprumut (d,8), data de restituit (d,8) si date cititor (c,40) (contine numele cititorului si orasul in care locuieste). Cerinte:
a) sortarea alfabetica a tuturor cartilor unui autor specificat prin introducere de la tastatura si crearea cu acestea a bazei de date Copie.dbf;
b) sa se creeze baza de date Restantiri.dbf care sa contina toti restantierii, in ordine alfabetica;
a) use prob5 in 1
sele 1
index on titlu tag titlu
accept ,nume autor' to x
sort to copie on titlu for autor=x
use copie in 2
display all
b) sele 1
index on date_cititor tag date cititor
sort to restantieri on date_cititor for empty(data_rest)
use restantieri in 3
display all
6. Se da baza de date ELEVI.DBF avand articolele cu urmatoarea structura:
NUME - nume elev;
CLASA - 3 caractere din care doua semnifica anul, urmatorul litera clasei;
ABS - numarul total de absente;
N1,N2,N3 - note obtinute la examen;
MED - media generala;
ADMIS - are valoarea .T. (admis, promovat) sau .F. (respins, nepromovat);
Se considera respins la examen elevul care are cel putin una din note mai mica decat 5 sau media generala mai mica decat 6.
Se cer urmatoarele:
a)Sa se listeze inregistrarile pentru o clasa citita de la tastatura cu elevii a caror medie este mai mare decat 8.
b)Sa se numere inregistrarile pentru care campul MED este mai mic decat 5 .
a) use prob 6 in 1
sele 1
list
replace all med with (n1+n2+n3)/3
browse
accept ,nume clasa' to x
list cls, nume for clasa=x and med>8
b) count to y all for med<5
'nr elevi cu media<5 este ', y
7. Se da baza de date ELEVI.DBF avand articolele cu urmatoarea structura:
NUME - nume elev;
CLASA - 3 caractere din care doua semnifica anul, urmatorul litera clasei;
N1,N2,N3 - note obtinute la examen;
MED - media generala;
ADMIS - are valoarea .T. (admis, promovat) sau .F. (respins, nepromovat);
Se considera respins la examen elevul care are cel putin una din note mai mica decat 5 sau media generala mai mica decat 6.
Se cer urmatoarele:
a)Sa se ordoneze inregistrarile pe clase si in cadrul claselor pe medii;
b)Sa se obtina lista elevilor cu medii intre 9 si 10.
a) use prob7 in 1
sele 1
display all
replace all med with (n1+n2+n3)/3
display all
index on cls +str(med) tag t
display all
b) display all for med>=9 and med<=10
8. Se da o baza de date numita CARTI.DBF cu urmatoarea structura: titlu C(30), autor C(30), editura C(20), an N(4), pret N(7), nr N(5), gen C(15). Realizati un program intr-un SGBD care sa permita urmatoarele operatii:
Introducerea de date noi prin intermediul unei machete.
Calculul valorii tuturor cartilor din baza de date si a cartilor de un anumit gen (dat de la tastatura);
Cautarea unei carti dupa nume sau autor.
a) use prob8 in 1
goto bottom
append blank
@1,5 say 'introducerea datelor'
@3,5 say 'titlu' get titlu
@5,5 say 'autor' get autor
@7,5 say 'editura' get editura
@9.5 say 'an' get an
@11,5 say 'pret' get pret
@13,5 say 'numar' get nr
@15,5 say 'gen' get gen
read
display all
b) calculate sum(pret)
accept 'genul' to x
calculate sum(pret) for gen=x
c) accept 'titlul cartii' to y
accept 'nume autor' to z
list gen, pret for titlu=y and autor=z
9.Se da o baza de date numita ELEVI.DBF cu urmatoarea structura: nume C(40), clasa C(3), matricol N(5), adresa C(30), telefon C(10). Realizati un program intr-un SGBD care sa permita urmatoarele operatii:
Introducerea de date noi prin intermediul unei machete
Cautarea unui elev dupa nume sau numarul matricol;
Stergerea unui elev;
a) use prob9 in 1
goto bottom
append blank
@1,5 say 'introducerea datelor'
@3,5 say 'numele' get nume
@5,5 say 'clasa' get clasa
@7,5 say 'nr. matricol' get matricol
@9.5 say 'adresa' get adresa
@11,5 say 'nr. tel' get telefon
read
display all
b) accept ,nume elev' to x
locate for nume=x
?recno()
c)accept ,nume elev' to y
delete for nume=y
pack
display all
Introducerea de date noi prin intermediul unei machete;
Cautarea unei masini dupa numar;
Afisarea tuturor masinilor in ordine descrescatoare dupa anul fabricatiei, apoi alfabetic dupa marca.
a) use prob10 in 1
goto bottom
append blank
@1,5 say 'introducerea datelor'
@3,5 say 'nr masina' get numar
@5,5 say 'culoare' get culoare
@7,5 say 'marca' get marca
@9.5 say 'an fabricatie' get an_fabric
@11,5 say 'proprietar' get proprietar
@13,5 say 'adresa' get adresa
read
display all
b) accept ,numar cautat' to x
list all for numar=x
c) index on an_fabric to y descending
display all
index on marca to z
display all
Introducerea de date noi prin intermediul unei machete;
Afisarea tuturor produselor in ordine descrescatoare dupa data fabricatiei, apoi crescator dupa pret;
Calculul valori tuturor produselor din baza de date.
a)use prob11 in 1
goto bottom
append blank
@1,5 say 'introducerea datelor'
@3,5 say 'nume produs' get nume
@5,5 say 'pret' get pret
@7,5 say 'data fabricatiei' get data_f
@9.5 say 'cantitate' get cantitate
read
display all
b)index on data_f tag x descending
display all
c)replace all valoare with pret*cantitate
display all
Introducerea de date noi prin intermediul unei machete;
Modificarea informatiilor despre o caseta;
Afisarea tuturor casetelor in ordine crescatoare dupa data aparitiei, apoi alfabetic dupa interpret.
a) use prob12 in 1
goto botoom
append blank
@1,5 say 'introducerea datelor'
@3,5 say 'interpret' get interpret
@5,5 say 'album' get album
@7,5 say 'pret' get pret
@9.5 say 'data lansarii' get data_l
@11,5 say 'genul muzicii' get gen
read
display all
b) browse
display all
c) index on data_l tag x ascending
display all interpret, album, data_l
index on interpret tag interpret
display all
Introducerea de date noi prin intermediul unei machete;
Afisarea pretului maxim al unei valute date dintr-o anumita luna;
Calculul valorii tuturor valutelor vandute intr-o anumita zi .
a) use prob13 in 1
goto bottom
append blank
@1,5 say 'introducerea datelor'
@3,5 say 'denumire valuta' get valuta
@5,5 say 'data schimb' get data_schimb
@7,5 say 'valoarea unei valute' get valoare
@9.5 say 'cantitatea schimbata' get cantitate
read
display all
b) input to x
accept 'numele valutei' to y
calculate all max(valoare) for valuta=y nad month(data_schimb)=x
c)input to z
replace all valoare with valoare*cantitate for day(data_schimb)=z
14. Se da baza de date ACTOR.DBF cu urmatoarea structura :
NUME C(30)
SEX C(1)
NRFILME N(3)
a) Sa se afiseze toti actorii care au jucat in mai mult de 10 filme
b) Sa se afiseze toate actritele debutante (0 filme)
c) Sa se afiseze in ordine descrescatoare a filmelor jucate actorii si apoi actritele
a) use prob14 in 1
display all
display all nume for nr_filme>10
b)display all nume for nr_filme>10
c)index on nr_filme tag x descending
display all nume, nr_filme for sex='m'
display all nume, nr_filme for sex='f'
15. Se da baza de date ELEV.DBF cu urmatoarea structura :
NUME C(30)
NOTA1 N(5,2)
NOTA2 N(5,2)
MEDIA N(5,2)
Baza de date se considera completa.
a) Sa se formeze o baza de date ADMISI.DBF care contine campurile nume, media, la fel ca in ELEVI.DBF cu elevii care au media >=5 si o baza de date RESPINSI.DBF care sa contina campurile nume, media, la fel ca in ELEV.DBF, cu elevii care au media<5
b) Sa se listeze pe ecran in ordine descrescatoare a mediilor elevii admisi si in ordine alfabetica elevii respinsi
a) use prob 15 in 1
sele 1
display all
replace all media with (nota1+nota2)/2
copy to admis fields nume, media for media>=5
use admis in 2
sele 2
index on media tag x descending
display all
copy to respinsi fields nume, media for media<5
use respinsi in 3
sele3
index on nume tag y
display all
16. Se da baza de date STUDENT.DBF care contine campurile :
NUME C(30)
MEDIA N(5,2)
TIPBURSA C(1)
0 daca nu are bursa (media<8)
1 daca are bursa tip1-1.000.000(media intre 8-9.49)
2 daca are bursa tip2-2.000.000(media intre 9.50-10)
a) Sa se scrie un program pentru a completa tipul de bursa si in cazul in care studentii sunt bursieri, sa se completeze si suma corespunzatoare.
b) Sa se afiseze studentii bursieri cerand tipul bursei, si sa se calculeze sumele totale necesare pentru fiecare tip de bursa.
a) Use prob 16 in 1
Display all
Replace all tipbursa with '0' for media<8
Replace all tipbursa with '1' for media>=8 and media<9.50
Replace all tipbursa with'2' for media.=9.50 and media<10
Replace all valoare with 1000000 for tipbursa='1'
Replace all valoare with 2000000 for tipbursa='2'
Display all
b) display all nume, tipbursa for tipbursa<>0
calculate sum(valoare) for tipbursa='1'
calculate sum(valoare) for tipbursa='2'
17. Se da baza de date STATE.DBF cu urmatoarea structura :
NUME_TARA C(30)
CAPITALA C(20)
POPULATIE N(15)
CONTINENT C(20)
Baza de date se considera completa .
a) Dandu-se numele tarii, sa se afiseze capitala si populatia
b) Sa se afiseze toate tarile cu capitalele lor dintr-un continent
c) Sa se afiseze cat este populatia lumii si populatia unui continent dat.
a)use problema 17 in 1
dislplay all
accept'nume tara' to x
display all nume-tara,capitala,populatie for nume tara=x
b)accept 'nume continent'tag y
index on continent tag t
display all nume tara,capitala for continent=y
c)calculate num(populatie)
accept 'nume,continent'to t
calculate sum(populatie)for continent=t
18. Se da baza de date ATESTAT.DBF cu urmatoarea structura :
NUME C(40)
NUMETEMA C(30)
LIMBAJ C(20)
NOTAP1 N(5,2) -NOTA PROF.1
NOTAP2 N(5,2) -NOTA PROF.2
NOTAF N(5,2) -NOTA FINALA
a) Sa se actualizeze aceasta baza de date (adaugare , modificare, stergere)
b) Sa se listeze in ordine descrescatoare, dupa NOTAF, rezultatele elevilor la atestat.
a)use problema 18 in 1
display all
replace all nota f with (nota p1+nota p2)/2
browse
display all
b)index on nota f tag x
descending
display all nume,nota f
19. Se da baza de date PRODUSE.DBF. Se considera datele introduse.
CODPRODUS C(10)
DENUMIRE C(30)
CANTITATEA N(5)
PRETCUMP N(7)
PRETVANZ N(7)
a) Sa se scrie un program care afiseaza intr-o fereastra, produsele a caror cantitate este mai
mare decat 0.
b) Sa se efectueze o vanzare a unui produs, cerandu-se codul produsului.
c) Sa se listeze valoarea stocului la pret de cumparare si la pret de vanzare .
use problema 19 in 1
a)display all
browse fields denumire,cantitatea
for cantitate>0
replace all valoare_cump with cantitatea X
pret cump
b)accept 'codul produsului' to x
display all cod produs,pret vanzare
c)replace all valoare_vanz with cantitatea
pret-vanz.
calculate sum(valoare-cumparare)
calculate sum(valoare-vanzare
20 Se da baza de date SPITAL.DBF cu datele introduse si cu urmatoarea structura:
NUME C(30)
BOALA C(20)
NRZILETRAT N (3)
a) Sa se afiseze toti bolnavii care au o anumita boala.
b) Sa se introduca numele si sa se afiseze boala pacientului si numarul zilelor de tratament.
c) Sa se afiseze toti pacientii in ordine alfabetica.
a) use prob20 in 1
display all
accept 'nume boala' to x
display all nume for boala=x
b)accept 'nume pacient' to y
display all boala nrziletrat for nume=y
c)index on nume tag z
display all nume
21 Se da baza de date FORTAM.DBF cu urmatoarea structura :
MESERIE C(20)
NRPOSTDISP N(2)
a) Sa se faca un program care sa adauge in baza de date meserii noi sau decat numarul de posturi disponibile daca meseria deja exista.
b) Sa se stearga inregistrarile pentru care numarul de posturi disponibile este 0
c) Sa se afiseze numarul de meserii la un moment dat si numarul total de slujbe disponibile.
Use pb 21 in 1
Display all
a) accept 'nume meserie' to x
input to p
locate for meserie=x
if found( )
replace nrpostdisp with p
else
append blank
endif
replace all meserie with x
b) delete all for nrpostdisp=0
c) count to y
@1,60 say 'nr de meserii este: '
@1,80 say y
Count to z for nrpostdisp=0
@3,60 say 'nr de meserii disponibile'
@3,80say z
22 Se da baza de date ELEVI.DBF, in care se considera completate campurile nume, nota_rom si nota_mat.
NUME C(30)
NOTA_ROM N(5,2)
NOTA_MAT N(5,2)
MEDIA N(5,2)
a) Sa se scrie un program pentru a calcula mediile elevilor.
b) Sa se listeze in ordine descrescatoare dupa medie, elevii admisi(media si notele>=5).
c) Sa se tipareasca la cererea unui nume, notele si media acelui elev.
a) use pb22 in 1
display all
replace all media with (nota_rom+nota_mat)/2
b)index on media tag x descending
display all for media>=5 andnota_rom>=5 and nota_mat>=5
c) accept 'numele elevului' to y
display all nume, nota_rom, nota_mat, media for nume=y
23 Se da baza de date MUNCITOR.DBF cu urmatoarea structura:
NUME C(30)
DATAN DATE(8)
SALARIU N(6)
Baza de date se considera corecta.
a) Sa se calculeze suma totala necesara pentru plata muncitorilor.
b) Sa se afiseze toti muncitorii cu un salariu citit de la tastatura.
c) Sa se stearga logic din baza de date muncitorii care nu au salariul completat.
a) use pb23 in 1
display all
calculate sum(salariu)
b) accept 'salariu calculat' to x
display all nume, salariu
c) delete all for empty (salariu)
display all
24 Sa se creeze baza de date Bac1.dbf cu urmatoarea structura:
Numele si prenumele caracter(30)
Nota1 numeric(5,2)
Nota2 numeric(5,2)
Nota3 numeric(5,2)
Media numeric(5,2)
Sa se introduca minim 5 inregistrari in baza de date. Sa se calculeze prin intermediul programului valorile pentru campul media.
Sa se afiseze datele in ordine descrescatoare dupa campul media.
Use pb24 in 1
Display all
Replace all media with (nota1+nota2+nota3)/3
Index on media tag x descending
Display all
25. Sa se creeze baza de date Agenda.dbf cu urmatoarea structura:
Numele si prenumele caracter(30)
Adresa memo
Telefon numeric(10)
Sa se introduca minim 5 inregistrari in baza de date.
Sa se afiseze persoanele in ordine alfabetica.
Sa se caute in baza de date telefonul unei persoane citite si in cazul in care s-a gasit, sa se afiseze.
Use pb25 in 1
Display all
Index on nume_prenumetag x
Display all nume_prenume
Accept 'numele persoanei' to y
If empty(telefon)
@1,60 say 'nu are telefon'
Else
?telefon
endif
26 Sa se creeze baza de date Absente.dbf cu urmatoarea structura:
Numele si prenumele caracter(30)
Absente motivate numeric(3)
Absente nemotivate numeric(3)
Total absente numeric(3)
Sa se introduca minim 5 inregistrari in baza de date. Sa se calculeze prin intermediul programului valorile pentru campul Total absente.
Sa se afiseze elevii in ordine descrescatoare dupa campul. Total absente.
Use pb26 in 1
Display all
Replace all total_abs with abs_n+abs_m
Index on total_abs tag x descending
27 Sa se creeze baza de date Farmacie.dbf cu urmatoarea structura:
Medicament caracter(20)
Data_exp data(8)
Numar numeric(3)
Sa se introduca minim 5 inregistrari in baza de date.
Sa se afiseze medicamentele expirate in ordine alfabetica.
Use pb28 in 1
Display all
Index on medicament tag x
Display all for data_exp<date( )
28 Sa se creeze baza de date Admitere.dbf cu urmatoarea structura:
Numele si prenumele caracter(30)
Nota1 numeric(5,2)
Nota2 numeric(5,2)
Media numeric(5,2)
Rezultat caracter(10)
Sa se introduca minim 5 inregistrari in baza de date.
Sa se calculeze prin intermediul programului valorile pentru campul media.
Sa se calculeze prin intermediul programului valorile pentru campul rezultat, astfel: "ADMIS" pentru elevii cu media>=5 si "RESPINS", pentru elevii cu media<5 .
Sa se afiseze elevii admisi in ordine descrescatoare dupa campul media.
Sa se afiseze elevii respinsi in ordine descrescatoare dupa campul media.
Use pb28 in 1
Display all
a) replace all media with (nota1+nota2)/2
b) replace all rezultat with 'admis' for media>=5
replace all rezultat with 'respins' for media<5
c)index on media tag x descending
display all nume_prenume, media for media>=5
d)display all nume_prenume, media for media<5