Sunteți pe pagina 1din 19

Cerinţe generale:

1. numele tabelei se va alege de către elev într-un mod corespunzator problemei


2. numele şi tipul câmpurilor tabelei se vor stabili de către elev în conformitate cu cerinţele
din enunţ

1. Schimb valutar
La o casă de schimb valutar cele mai importante tranzacţii se păstrează într-o tabelă ce
conţine informaţii despre:
- numele persoanei care efectuează tranzacţia
- tipul operaţiei efectuate de casa de schimb – poate fi cumpărare sau vânzare
- tipul valutei – dolar sau euro
- cursul zilnic valută – lei
- suma de bani tranzacţionată de către persoană, exprimată în lei.
Construiţi o aplicaţie care să realizeze operaţiile:
a) citirea de la tastatură a unei sume de bani exprimată în lei şi afişarea persoanelor
care au tranzacţionat prin cumpărare mai mult decât suma citită
b) adăugarea în tabelă a unei tranzacţii noi şi afişarea întregii tabele după adăugare
c) calcularea sumei totale în lei cumpărată de acea casă 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

Pb1.prg use casa


x=0
input 'dati suma de bani' to x
browse fields nume for (suma>x) and (operatia="cumparare")
append
browse
y=0
sum suma to y for operatia="cumparare"
?'valoarea totala tranzactionata prin cumparare este '
?y
close data
2. Oficiul forţelor de muncă
La oficiul forţelor de muncă se reţin într-o tabelă următoarele informaţii despre persoanele fără loc de
muncă :
- nume
- sex
- vârstă – se impune restricţia ca aceasta să fie cel puţin 16 ani
- profesie
Construiţi o aplicaţie care să realizeze operaţiile:
a) citirea de la tastatură a unei profesii şi afişarea persoanelor de sex feminin care au calificarea
respectivă
b) adăugarea în tabelă a unei înregistrări noi şi afişarea întregii tabele după adăugare
c) afişarea vârstei maxime din tabelă şi a datelor personale a persoanei sau persoanelor care posedă
acea vârstă
Baza de date:
nume, caracter, 20
sex, caracter, 1 {f = feminin sau m = masculin}
munca varsta, numeric, 2
profesia, caracter, 15

use munca
x=''
accept 'dati profesia=' to x
browse fields nume for (sex='f') or (sex='F') and (profesia=x)
append
pb2.prg browse
y=0
calculate max(varsta) to y
browse fields nume for varsta=y
close data
3. Casa de bilete
Pentru evidenţa biletelor de călătorie vândute la o casă de bilete, fiecare bilet se înregistrează într-o tabelă
cu informaţiile:
- număr bilet
- destinaţie
- clasa (I, II)
- preţ
- număr tren
- data emiterii
Construiţi o aplicaţie care să realizeze operaţiile:
a) introduceţi datele unui bilet nou şi afişaţi întreaga tabelă după adăugare
b) vizualizaţi biletele vândute pentru clasa I, ordonate după destinaţie
c) calculaţi ce încasări a avut casa de bilete pentru o lună citită de la tastatură
baza de date:
numar, numeric, 5 use bilete
append
destinatie, caracter, 20
browse
clasa, numeric, 1 sort to bilete2 on destinatie
pret, numeric, 5 use bilete2
nrtren, numeric, 5 browse for clasa=1
bilete pb3.prg x=0
data_e, date
input 'dati luna=' to x
y=0
sum pret to y for x=month(data_e)
?y
close all
4. Banca
La o bancă se ţine evidenţa depunătorilor într-o tabelă ce conţine următoarele informaţii:
- nume depunător
- suma depusă
- termen ( 3 luni, 6 luni, 12 luni, 24 luni, 36 luni)
- dobânda (câmp calculat ca procent din suma depusă)
Construiţi o aplicaţie care să realizeze operaţiile:
a) adaugaţi un nou deponent şi afişaţi întreaga tabelă după adăugare
b) citiţi de la tastatură o sumă şi afişaţi alfabetic toţi depunătorii care au depus o sumă
mai mare decât cea citită
c) calculaţi dobânda plătită de bancă persoanelor care au depus banii cu scadenţă la
24 luni
- baza de date:
nume, caracter, 20 use banca
suma, numeric, 7 append
termen, numeric, 3 browse
dobanda, numeric, 5 x=0
input 'dati suma=' to x
sort to banca2 on nume
banca use banca2
pb4.prg browse for suma>x
y=0
use banca
sum (suma*dobanda)/100 to y
for termen=24
?y
close all
5. Medic de familie
Pentru evidenţa persoanelor arondate unui medic de familie, se organizează o tabelă cu
informaţiile:
- cnp
- nume
- adresa
- ultimul diagnostic
- data ultimului consult
Construiţi o aplicaţie care să realizeze operaţiile:
a) o persoană nouă face o cerere şi vrea să intre în evidenţa medicului de familie.
Introduceţi datele acelei persoane în tabelă şi afişaţi întreaga tabelă după adăugare.
b) afişati numele și diagnosticul tuturor persoanelor care au fost consultate în luna
curentă
c) citiţi de la tastatură un diagnostic şi afișați câte persoane au primit acel diagnostic
- baza de date:
cnp, numeric, 13
nume, caracter, 20
medic adresa, caracter, 20
diag_ultim, caracter, 15
data_c, date, 8

use medic
append
browse nomodify
browse fields nume, diag_ultim for month(data_c)=month(date())
d=’’
pb5.prg accept 'dati diagnostic ' to d
y=0
count to y for diag_ultim=d
?'au fost un nr de persoane= '
?y
close data
6. Camping
Pentru evidenţa rezervărilor/ocupării locurilor de cazare într-un camping se organizează o
tabelă cu informaţiile:
- numărul locului de cazare
- tipul locului (cort, căsuță)
- data închirierii
- număr nopţi de cazare
- numele persoanei titulare pe locul respectiv
Construiţi o aplicaţie care să realizeze operaţiile:
a) adăugarea în tabelă a unei noi rezervări şi afişarea întregii tabele după adăugare
b) pentru o persoană citită de la tastatură calculaţi şi afişaţi de câte ori a mai fost cazată
în acel camping în căsuţe
c) afişaţi locurile libere de cazare (data închirierii+ număr nopţi cazare < data curentă)
ordonate după tipul locului
- baza de date:
nr, numeric, 3
tip, caracter, 10
data_i, date, 8
camping
nr_nopti, numeric, 3
nume, caracter, 20

use camping
append
browse
accept 'dati numele persoanei ' to x
count to y for (nume=x)and (tip='casute')
pb6.prg ?'nr cazarilor este '
?y
sort to camping2 on tip
use camping2
browse for data_i+nr_nopti<date()
close data
7. Magazin
Pentru gestionarea produselor dintr-un magazin se organizează într-o tabelă informaţiile:
- cod produs (numeric)
- denumire produs
- unitate de masură
- cantitate
- preţ unitar
Construiţi o aplicaţie care să realizeze operaţiile:
a) adăugaţi o nouă înregistrare şi afişaţi întreaga tabelă după adăugare
b) afişati produsele care se găsesc într-o cantitate cuprinsă între două limite date de la
tastatură
c) calculaţi valoarea stocului din magazin (preţ unitar*cantitate )

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

use magazin
append
browse
li=0
ls=0
input 'dati lim inferioara=' to li
pb7.prg input 'dati lim superioara=' to ls
browse for (cantitate>=li) and (cantitate<=ls)
s=0
sum pret*cantitate to s
?' valoarea stocului este='
?s
close data
8. Agenda personală
O persoană îşi organizează agenda personală cu informaţii de genul:
- nume
- data naşterii
- localitate de domiciliu
- telefon mobil
Construiţi o aplicaţie care să realizeze operaţiile:
a) calculaţi numărul persoanelor care îşi sărbătoresc data naşterii azi
b) introduceţi o nouă persoană în tabelă şi afişaţi întreaga tabelă după adăugare
c) afişaţi numerele de telefon ale persoanelor dintr-o localitate dată şi al căror nume
începe cu litera ’L’
- baza de date:
nume, caracter, 15
data_n, date, 8
agenda localitate, caracter, 15
mobil, caracter, 10
use agenda
y=0
count to y for day(data_n)=day(date()) and month(data_n)=month(date())
?'nr de persoane sarbatorite astazi= '
?y
pb8.prg append
browse
accept 'dati localitatea= ' to x
browse fields nume,mobil for(localitate=x) and substr(nume,1,1)='L'
close data
9. Concurs
Municipalitatea oraşului a hotărât să organizeze un concurs pe tema „Mişcarea
înseamnă sănătate”. Pentru aceasta a stabilit 3 probe: atletism, ciclism şi proba de forţă.
Datele referitoare la concurs sunt:
- nume participant
- punctaj proba1
- punctaj proba2
- punctaj proba3
- total puncte (câmp calculat ca sumă a punctajelor obținute la cele trei probe)
Construiţi o aplicaţie care să realizeze operaţiile:
a) introducerea unui nou participant (total puncte nu se va introduce) şi afişarea întregii
tabele după adăugare
b) calculaţi totalul pentru fiecare participant şi afişati noua tabelă ordonată descrescator
după punctaj
c) calculaţi câţi participanţi au obţinut mai mult de 20 de puncte la proba 1

- baza de date:
nume, caracter, 20
pb1, numeric, 3
concurs pb2, numeric, 3
pb3, numeric, 3
total, numeric, 3
use concurs
append
browse
scan
replace total with pb1+pb2+pb3
endscan
pb9.prg sort to concurs2 on total/d
use concurs2
browse
x=0
count to x for pb1>20
?x
close data
10. Diriginte
Un diriginte ţine o evidenţă a situaţiei absenţelor în clasa sa astfel:
- nume elev
- număr total absenţe
- număr absenţe nemotivate
- media la purtare (câmp calculat în funcție de numărul de absențe nemotivate. La 9
absențe nemotivate se scade un punct)
Construiţi o aplicaţie care să realizeze operaţiile:
a) introduceţi un nou elev în tabelă şi afişaţi întreaga tabelă după adăugare
b) calculaţi câte absenţe motivate sunt pe toată clasa
c) afişati elevii cu note peste 7 la purtare, ordonaţi alfabetic
- baza de date:
nume, caracter, 20
nr_abs, numeric, 3
diriginte
abs_nem, numeric, 3
media_p, numeric, 3
use diriginte
append
browse
y=0
sum nr_abs - abs_nem to y
?'nr absente motivate este= '
?y
pb10.prg
scan
replace media_p with 10-floor(abs_nem/9)
endscan
sort to diriginte2 on nume
use diriginte2
browse for media_p>7
close data
11. FISC
La Fisc se păstrează evidenţa impozitelor pe imobile într-o tabelă cu structura:
- nume persoană
- tip locuinţă (casă, vilă sau apartament)
- impozit (valoarea totală a impozitului)
- achitat (valoarea din impozit achitată pănă la data curentă)
Construiţi o aplicaţie care să realizeze operaţiile:
a) adaugaţi o persoană în tabelă şi afişaţi întreaga tabelă după adăugare
b) calculaţi suma încasată până în prezent din impozite
c) afişaţi alfabetic toate persoanele care deţin o casă sau vilă

baza de date:
nume, caracter, 20
tip, caracter, 15
fisc
impozit, numeric, 10
achitat, numeric, 10
use fisc
append
browse
sum achitat to y
?'suma incasata = '
pb11.prg
?y
sort to fisc2 on nume
use fisc2
browse for (tip='casa') or (tip='vila')
close data
12. Seminar
La un seminar internaţional organizat pe probleme de ecologie, au fost invitate
personalităţi politice, oameni de cultură şi oameni de afaceri din diferite ţări europene.
La biroul “Organizare” se solicită datele unui invitat:
- nume
- domeniul activităţii
- ţara de origine
- vârsta
Construiţi o aplicaţie care să realizeze operaţiile:
a) introducerea datelor unui nou invitat şi afişarea întregii tabele după adăugare
b) citirea de la tastatură a unei ţări şi afişarea invitaţilor din acea ţară
c) calcularea mediei de vârstă pe domeniul “afaceri”

baza de date:
nume, caracter, 20
domeniul, caracter, 20
seminar
tara, caracter, 15
varsta, numeric, 3
use seminar
append
browse
accept 'dati numele unei tari= ' to y`
browse for tara=y
pb12.prg sum varsta to x for domeniul='afaceri'
count to z for domeniul='afaceri'
?'media de varsta pe domeniul afaceri este='
?x/z
close data
13. Ţări
Într-o tabelă se organizează informaţii referitoare la ţări:
- denumirea ţării
- continentul în care se află
- capitala
- număr locuitori
Construiţi o aplicaţie care să realizeze operaţiile:
a) introducerea unei noi ţări în tabelă şi afişarea întregii tabele după adăugare
b) se citeşte de la tastatură un continent, calculaţi câte ţări de pe acel continent există
în tabelă
c) afişaţi ţările cu capitalele lor, ordonate descrescător după numărul de locuitori

baza de date:
denumire, caracter, 20
continent, caracter, 20
tari
capitala, caracter, 20
nrloc, numeric, 6

use tari
append
browse
accept 'introd nume continent= ' to x
count to y for continent=x
pb13.prg ?'nr de tari este= '
?y
sort to tari2 on nrloc/d
use tari2
browse
close data
14. Unităţi şcolare
Să se reţină în tabela ŞCOLI informaţii despre unităţile şcolare după cum urmează:
- numele unităţii şcolare
- localitatea
- nivelul de învăţământ - primar, gimnazial, liceal
- numărul de clase din unitate
- numărul de elevi din unitate
Construiţi o aplicaţie care să realizeze operaţiile:
a) adaugaţi o nouă înregistrare şi afişaţi întreaga tabelă după adăugare
b) copiaţi în altă tabelă identică informaţiile referitoare la primele 3 unităţi şcolare
înregistrate în tabela SCOLI, apoi afişaţi noua tabelă
c) afişaţi numărul total al elevilor pentru un anumit nivel de învăţământ, nivelul fiind
introdus de la tastatură
baza de date:
nume, caracter, 20
localitate, caracter, 20
nivel, caracter, 15
scoli nrclase, numeric, 3
nrelevi, numeric, 3

use scoli
append
browse
copy to scoli2 for recno()<=3
use scoli2
browse
pb14.prg use scoli
accept 'dati nivelul= ' to y
sum nrelevi to z for nivel = y
? 'nr elevi este= '
?z
close data
15. Biblioteca
Pentru evidenţa persoanelor înscrise la o bibilotecă avem la dispoziţie informaţiile :
- cnp
- numele
- data naşterii
- cod personal pentru acces la bibliotecă
Construiţi o aplicaţie care să realizeze operaţiile:
a) introduceţi date pentru o persoană nouă care se prezintă la biroul de înscrieri şi afişaţi
întreaga tabelă după adăugare
b) calculaţi câte femei sunt înscrise la bibliotecă (primul caracter din cnp este 2 sau 6)
c) afişaţi numele şi codul persoanelor născute într-un anumit an citit de la tastatură
baza de date:
cnp, caracter, 13
nume, caracter, 20
biblioteca data_n, date, 8
cod, numeric, 5

use biblioteca
append
browse
y=0
count to y for (substr(cnp,1,1)='2' or substr(cnp,1,1)='6')
pb15.prg ?'nr de femei= '
?y
x=0
input 'ce an doriti = 'to x
browse fields nume, cod for year(data_n)=x
close data
16. Poliţia rutieră
Angajaţii de la poliţia rutieră au hotărât să creeze o evidenţă a şoferilor din judeţul lor. În
acest sens au creat o tabelă SOFER conţinând:
- numele şoferului
- localitatea de domiciliu
- data la care a fost eliberat permisul de conducere
- numărul total al amenzilor pe care le-a primit acel şofer
- valoarea ultimei amenzi plătite de către conducătorul auto
Construiţi o aplicaţie care să realizeze operaţiile:
a) introduceţi o nouă înregsitrare şi afişaţi întreaga tabelă după adăugare
b) afişaţi acei şoferi care încă mai trebuie să poarte semnul de începator (nu a trecut încă
un an de când au obţinut permisul)
c) calculaţi numărul total de amenzi date şoferilor dintr-o localitate citită de la tastatură

baza de date:
nume, caracter, 25
localitate, caracter, 20
sofer data_p, date, 8
nr_amenzi, numeric, 3
ult_am, numeric, 5

use sofer
append
browse
browse for data_p> date()-365
pb16.prg accept 'localitate = ' to y
sum nr_amenzi to x for localitate=y
?'nr total amenzi= '
?x
close data
17. Şcoala
La secretariatul unei şcoli sunt necesare informaţii referitoare la colectivele de elevi
existente, interesând în principal :
- identificatorul clasei (ex: IXA, XB)
- numărul de elevi din clasă
- numele dirigintelui
Construiţi o aplicaţie care să realizeze operaţiile:
a) calculaţi câte clase au un efectiv de exact 30 elevi şi afişati acele clase
b) pentru un nume de profesor introdus de la tastatură, precizaţi al cui diriginte este
c) pentru toate clasele a IX-a din tabelă, creşteţi numărul de elevi cu 3.

baza de date:
idclasa, caracter, 5
scoala nr_elevi, numeric, 3
numediri, caracter, 25

use scoala
count to x for nr_elevi=30
?'nr clase cu 30 elevi sunt:'
?x
browse for nr_elevi=30
accept 'nume diriginte = ' to y
pb17.prg browse for numediri=y
scan
replace nr_elevi with nr_elevi+3 for substr(idclasa,1,2)='IX'
endscan
browse
close data
18. Angajaţi
Se consideră o tabelă ce conţine următoarele informaţii referitoare la angajaţii unei firme :
- nume angajat
- vârsta
- tipul muncii prestate (productiv sau neproductiv)
- salar vechi
- salar nou (câmp calculat ca salar vechi+salar vechi*procent de majorare)
Construiţi o aplicaţie care să realizeze operaţiile:
a) introduceţi o nouă înregistrare în tabelă (salar nou nu se introduce) şi afişaţi întreaga
tabelă după adăugare
b) afişaţi descendent toţi salariaţii care au cel mult 50 de ani
c) actualizaţi salariu nou cu salariu vechi indexat cu procentul 5%

baza de date:
nume, caracter, 25
varsta, numeric, 2
tip, caracter, 25
angajati
salarv, numeric, 10,2
salarn, numeric, 10,2

use angajati
append
browse
sort to angajati2 on varsta/d
use angajati2
browse for varsta<=50
pb18.prg use angajati
scan
replace salarn with salarv+salarv*(5/100)
endscan
browse
close data
19. Biblioteca personală
O persoană doreşte să-şi organizeze biblioteca personală. Informaţiile care o interesează
sunt:
- titlul cărţii
- autorul
- genul căruia îi aparţine lucrarea (poezie, beletristică, proză sau SF)
- număr volume.
Construiţi o aplicaţie care să realizeze operaţiile:
a) introduceţi o carte nouă în tabelă şi afişaţi întreaga tabelă după adăugare
b) afişaţi toate cărţile care aparţin unui gen literar citit de la tastatură, ordonate alfabetic
după titlu
c) calculaţi câte cărţi din bibliotecă au mai mult de 5 volume

baza de date:
titlu, caracter, 25
autor, caracter, 25
biblioteca gen, caracter, 15
nrvol, numeric, 10

use biblioteca
append
browse
accept 'ce gen literar = ' to x
sort to biblioteca2 on titlu
pb19.prg use biblioteca2
browse for gen=x
count to y for nrvol>5
?'nr vol mai mult de 5 sunt:'
?y
close data
20. Licitaţie
Pentru participarea la o licitaţie mai multe firme depun oferte. Organizatorii sunt interesaţi
să cunoască:
- denumirea firmei
- data înfiinţării
- tipul firmei – S.A, S.R.L.
- capitalul social
- valoarea ofertei curentă.
Construiţi o aplicaţie care să realizeze operaţiile:
a) introducerea unei noi înregistrări în tabelă şi afişarea tabelei după adăugare
b) se citeşte de la tastatură un prag maxim al ofertei. Ştergeţi din tabelă firmele care au
depus o ofertă ce depăşeşte pragul respectiv.
c) stabiliţi care este firma ce a făcut cea mai bună ofertă (minimă ca preţ) şi afişaţi
informaţiile despre ea.

baza de date:
denumire, caracter, 25
data_i, date, 8
licitatie tip, caracter, 10
capital, numeric, 10
valoare, numeric, 10

use licitatie
append
browse
input 'dati pragul max al ofertei= ' to p
delete for valoare>p
pb20.prg pack
browse
calculate min(valoare) to m
browse for valoare=m
close data

S-ar putea să vă placă și