baze de date aplicatie privind inchirierea de casete video
TRANSCRIPT
APLICATIE PRIVIND INCHIRIEREA DE CASETE VIDEO
1. Tema de realizare.
Tema de realizare a proiectului consta in realizarea si implementarea unei aplicatii
care realizeaza gestiunea activitatii de inchiriere casete video la o societate comerciala de
profil. Aplicatia trebuie sa permita:
a) monitorizarea activitatilor de baza ale firmei, cum ar fi imprumutul respectiv restituirea de
casete video;
b) afisarea de rapoarte cu privire la clientii restanti, la toti clientii firmei, la casetele
disponibile;
c) realizarea de cautari in tabelele bazei de date, dupa anumite caracteristici, pentru un
anumit film, client, regizor, etc.
d) stergerea, respectiv adaugarea de clienti, casete, actori, filme, etc. in tabelele bazei de
date;
2. Proiectarea iesirilor.
Asa dupa cum s-a aratat mai sus, iesirile aplicatiei sunt urmatoarele:
a) valoarea contractelor de inchiriere pe zile si pe total;
Macheta de iesire este urmatoarea:
Data
contract
Nr. caseta Serie buletin Nume Prenume Valoare
Total valoare contracte la data 99/99/9999Total valoare contracte la data curenta (99/99/9999)
b) toate contractele firmei
Macheta de iesire este urmatoarea:
Data BI Nr.caseta Data restituirii Perioada
3. Proiectarea intrarilor.
Intrarile aplicatiei sunt corespondente urmatoarelor situatii:
1
a) imprumut de caseta
b) restituire de caseta
c) introducerea unui actor in baza de date
d) stergerea unui actor din baza de date
e) introducerea unei noi casete in baza de date
f) stergerea unei casete din baza de date
g) cautarea unor casete dupa regizor, actori, etc.
h) adaugarea unui nou client in baza de date
i) stergerea unui client din baza de date
j) cautarea unui client in baza de date
k) modificarea caracteristicilor unui client (ex. adresa);
l) modificarea caracteristicilor unui actor
4. Proiectarea bazei de date
Se va porni de la modelul entitate-asociere, figurand in mod distinct in schema fiecare
entitate, precum si relatiile ce exista intre entitati:
Atributele entitatilor in situatia de mai sus vor fi:
2
(1,n)
(1,n)
INCHIRIAZA
ACTORI
FILMEPERSOANE
JOACA
(0,m)
(1,1)
1) PERSOANE
- BI: caracter(8);
- Nume: caracter(20);
- Prenume: caracter(20);
2) ACTORI
- nrcas: numeric(4);
- nume actor: caracter(20);
- prenume actor: caracter(20);
3) FILME
- Nr. caseta: numeric(4);
- Titlu original: caracter(30);
- Titlu roman: caracter(30);
- Nume regizor: caracter(30);
- An aparitie: numeric(4);
- Stare (existenta sau inexistenta in gestiune): boolean;
Datorita faptului ca in diagrama de mai sus exista o legatura de tip "multi la multi", se
va folosi in plus o tabela intermediara:
4) IMPR
- Data: data;
- BI: caracter(8);
- Nr. caseta: numeric(4);
- Data restituirii: data;
- Perioada de inchiriere: numeric(1); acest camp s-a introdus pentru micsorarea
timpului de realizare a situatiilor finale, in detrimentul spatiului de stocare folosit,
folosind astfel o redundanta controlata a datelor;
3
Rezulta deci ca structura conceptuala a bazei de date este:
PERSOANE
BI NUME PREN
FILME
NRCAS TITO TITR NUMER ANAP STARE
ACTORI
NRCAS NUMEACT PRENACT
IMPR
DATA BI NRCAS DATARES PERIOADA
Folosind tehnica normalizarii, se va aduce baza de date in FN3. Se observa ca baza de
date se afla deja in forma normala 3, deci structura conceptuala va ramane identica cu cea de
mai sus. S-a considerat ca nu este ncesara o forma normala superioara, deoarece actualizarea
bazei de date se face la un interval de timp destul de mare, deci cu o frecventa redusa.
Pentru a asigura un compromis intre redundanta datelor si timpul de acces, s-a
introdus in tabela INTR si campul PERIOADA, camp ce memoreaza durata de timp pe care
este imprumutata o caseta. Astfel, creste dimensiunea bazei de date, dar situatiile operative,
care sunt solicitate relativ des, sunt furnizate cu o viteza sporita.
5. Schema de structura a aplicatiei.
Aceasta schema reprezinta 'viziunea' pe care fiecare subrutina a programului o are
asupra bazei de date, intelegand prin aceasta specificarea tabelelor pe care le poate accesa
fiecare aplicatie. Astfel, de exemplu, pentru operatiile de adaugare, stergere, modificare,
programul va avea acces la tabelele specifice operatiei respective (stergere caseta --> filme,
stergere client --> persoane, etc.). Pentru realizarea rapoartelor, programul va avea acces la
toate tabelele bazei de date.
6. Listing-ul aplicatiei.
4
close allclearset talk offset status offset safety offset date to dmyset procedure to r.prguse impr in aindex on bi tag tbiindex on data tag tdataindex on nrcas tag tnrcasindex on bi+str(nrcas,4) tag tcpuse pers in bselect persindex on bi tag tbiuse filme in cselect filmeindex on nrcas tag tnrcasindex on anap tag tanindex on reg tag treguse actori in dselect actoriindex on nrcas tag tnrcasindex on upper(nact+pact) tag tnpuse imprint in edefine window f from 1,0 to 24,79public pubpret,pubpenpubpret=1000pubpen=1500
define menu meniudefine pad p1 of meniu prompt '\<operatii' key alt+odefine pad p2 of meniu prompt '\<bazedate' key alt+bdefine pad p3 of meniu prompt '\<rapoarte' key alt+rdefine pad p4 of meniu prompt '\<setup' key alt+sdefine pad p5 of meniu prompt '\<iesire' key alt+ion pad p1 of meniu activate popup pp1on pad p2 of meniu activate popup pp2on pad p3 of meniu activate popup pp3on pad p4 of meniu activate popup pp4on pad p5 of meniu activate popup pp5
define popup pp4define bar 1 of pp4 prompt '\<preturi'define bar 2 of pp4 prompt 'p\<rinter'
define popup pp1define bar 1 of pp1 prompt '\<imprumut'define bar 2 of pp1 prompt '\<restituire'on selection bar 1 of pp1 do ada1on selection bar 2 of pp1 do del1
define popup pp2define bar 1 of pp2 prompt '\<imprumuturi'define bar 2 of pp2 prompt '\<persoane'define bar 3 of pp2 prompt '\<filme'define bar 4 of pp2 prompt '\<actori'on bar 1 of pp2 activate popup ppp1on bar 2 of pp2 activate popup ppp2on bar 3 of pp2 activate popup ppp3
5
on bar 4 of pp2 activate popup ppp4 define popup ppp1 define bar 1 of ppp1 prompt '\<modificare' define bar 2 of ppp1 prompt '\<stergere' on selection bar 1 of ppp1 do modi on selection bar 2 of ppp1 do deli define popup ppp2 define bar 1 of ppp2 prompt '\<modificare' define bar 2 of ppp2 prompt '\<stergere' on selection bar 1 of ppp2 do modp on selection bar 2 of ppp2 do delp define popup ppp3 define bar 1 of ppp3 prompt '\<adaugare' define bar 2 of ppp3 prompt '\<modificare' define bar 3 of ppp3 prompt '\<stergere' on selection bar 1 of ppp3 do adaf on selection bar 2 of ppp3 do modf on selection bar 3 of ppp3 do delf define popup ppp4 define bar 1 of ppp4 prompt '\<adaugare' define bar 2 of ppp4 prompt '\<modificare' define bar 3 of ppp4 prompt '\<stergere' on selection bar 1 of ppp4 do adaa on selection bar 2 of ppp4 do moda on selection bar 3 of ppp4 do dela
define popup pp3define bar 1 of pp3 prompt 'con\<tractele...'define bar 2 of pp3 prompt '\<clienti...'define bar 3 of pp3 prompt '\<filmele...'on bar 1 of pp3 activate popup pp31on bar 2 of pp3 activate popup pp32on bar 3 of pp3 activate popup pp33
define popup pp32define bar 1 of pp32 prompt '...\<restantieri'define bar 2 of pp32 prompt '...\<total'on selection bar 1 of pp32 @ 20,1 say 'rest'on selection bar 2 of pp32 do liscldefine popup pp31define bar 1 of pp31 prompt '...\<total'define bar 2 of pp31 prompt '...dintr-o anumita \<perioada'define bar 3 of pp31 prompt '...\<grupate pe zile'on selection bar 1 of pp31 do liscon selection bar 2 of pp31 @ 20,1 say 'cont per'on selection bar 3 of pp31 do rgrrdefine popup pp33define bar 1 of pp33 prompt '...de un anumit \<regizor'define bar 2 of pp33 prompt '...cu un anumit \<actor'define bar 3 of pp33 prompt '...dintr-un anumit a\<n'define bar 4 of pp33 prompt '...\<total'define bar 5 of pp33 prompt '...\<disponibile'on selection bar 1 of pp33 do lisron selection bar 2 of pp33 do lisaon selection bar 3 of pp33 do lisanon selection bar 4 of pp33 do lisfon selection bar 5 of pp33 do lisd
define popup pp5define bar 1 of pp5 prompt 'in \<fox'define bar 2 of pp5 prompt 'in \<dos'on selection bar 1 of pp5 returnon selection bar 2 of pp5 quit
6
activate menu meniuclear*close allreturn
procedure liscactivate window fselect imprdisplay allwaitdeactivate window freturn
procedure lisclactivate window fselect persdisplay allwaitdeactivate window freturn
procedure rgrractivate window fselect imprset order to tag tdatareport form rgrwaitdeactivate window freturn
***************************************************po.prgprocedure afispublic iclear@ 1,1 say 'S.C. EU S.R.L.'@ 3,20 say 'FISA IMPRUMUT '@ 5,5 say 'incheiata la data de ' get mdata@ 6,2 say 'nume ' get mnume picture '@!a'@ 6,25 say 'prenume ' get mpren picture '@!a'@ 7,2 say 'serie buletin ' get mbi picture 'aa999999' ; valid dupbi() error 'are casete nerestituite'@ 7,30 say 'numar casete imprumutate : ' get nrc picture '9' range 1,5 ; error 'maxim 5 casete 'read@ 8,5 to 10+nrc,25 double@ 9,7 say 'nrcaseta***durata'for i=1 to nrc
mnrc=0 @ 9+i,7 say str(i,1)+':' get mnrc picture '9999' ; valid dupnrc() and exf() and dupcp(); error 'caseta deja imprumutata,caseta inexistenta sau cp duplicat' @ 9+i,20 get mper[i] picture '9' range 1,5 read mnrcas[i]=mnrcendfor@ 16,5 to 18,45 doublea=1@ 17,15 get a function '*ht \!\<save;\<nosave' size 1,4,1return
7
function dupcpset order to tag tcpvb=not(seek(mbi+str(mnrc,4)))return vb
function exfselect filmeset order to tag tnrcasvb=seek(mnrc)select imprreturn vb
function dupnrcset order to tag tnrcasvb=not(seek(mnrc))return vb
function dupbiset order to tag tbinr=recno()vb=.t.locate for bi=mbi do while (not eof()) and vb=.t. and found()
*if found()if val(sys(11,date()))-val(sys(11,data))>per
vb=.f.else
continueendif
*endifenddogo nrreturn vb
procedure initomdata=date()mnume=space(15)mpren=space(15)mbi=space(8)nrc=0dimension mnrcas[5],mper[5]for i=1 to 5
mnrcas[i]=0mper[i]=0
endforreturn
procedure ada1public mdata,mnume,mpren,mlocal ;
mbi,nrc,a,mnrcpublic array mnrcas[5],mper[5]select impractivate window fdo while .t.
do initodo afisreadif a=1 select pers seek mbi if not found()
8
append blank replace bi with mbi,nume with mnume,pren with mpren endif
for i=1 to nrc select impr append blank replace nrcas with mnrcas[i],data with mdata ;
per with mper[i],bi with mbiselect filmeset order to tnrcasseek mnrcas[i]replace record recno() sit with .t.
endforendif@ 19,1 to 21,79 doubleras='d'@ 20,20 say 'continuati(d/n) : ' get ras picture 'a'read@ 20,2 clear to 21,78if lower(ras)='n'
exitendif
enddodeactivate window freturn
procedure movemdata=impr.datambi=pers.bimnume=pers.numempren=pers.prenmpr=impr.perreturn
procedure del1public mnrcs,mdata,mbi,mpr,mnume,mprenactivate window frs='d'do while lower(rs)='d'clearselect imprmnrcs=0mbi=space(8)@ 1,10 say 'LICHIDAREA IMPRUMUTULUI'@ 2,5 to 6,60 double@ 3,6 say 'cheia inregistrarii(serie buletin si numar caseta)'@ 4,6 say '\\\\\(serie buletin) : ' get mbi@ 5,6 say '\\\\\(numar caseta) : 'get mnrcs picture '9999'@ 19,1 to 21,79 doublereadcp=mbi+str(mnrcs,4)set order to tag tcpif seek(cp,'impr')
do movedo afisd@ 8,50 to 12,75 doubledi=val(sys(11,mdata))dr=val(sys(11,date()))if dr-di>mpr
plata=mpr*pubpretpen=(dr-di-mpr)*pubpen
9
totp=plata+penelse
plata=mpr*pubprettotp=platapen=0
endif@ 9,51 say 'COST NORMAL:'+str(plata)@ 10,51 say 'PENALIZARI:'+str(pen)@ 11,51 say 'TOTAL PLATA:'+str(totp)@ 19,1 to 21,79 doubleras='d'@ 20,20 say 'SE RESTITUIE(d/n) : ' get ras picture 'a'read@ 20,2 clear to 20,78if lower(ras)='d'
select impr scatter memvarm.datares=date()select imprintappend blankgather memvarselect imprdeletepackselect filme set order to tnrcasseek mnrcsreplace record recno() sit with .f.select impr
else@ 20,30 say 'INREGISTRARE NESTEARSA'WAIT@ 20,2 clear to 20,79
endifelse
@ 20,30 say 'INREGISTRARE NEGASITA'wait@ 20,1 clear to 20,78
endif@ 20,30 say 'continuati(d/n) : ' get rs picture 'a'read@ 20,1 clear to 20,78if lower(rs)='n'
exitendifenddodeactivate window freturn
procedure afisdclear@ 1,1 say 'S.C. EU S.R.L.'@ 3,20 say 'LICHIDARE IMPRUMUT '@ 5,5 say 'incheiat la data de '+dtoc(mdata)@ 5,35 say 'cu'@ 6,2 say 'nume ' +mnume @ 6,20 say 'prenume '+mpren @ 7,2 say 'serie buletin '+mbi @ 9,10 to 12,30 double@ 10,12 say 'nrcaseta***durata' @ 11,12 say mnrcs picture '9999'
10
@ 11,25 say mpr picture '9'return
******************************************************pi.prgprocedure modipublic mnrcs,mpractivate window frs='d'do while lower(rs)='d' clear select impr mnrcs=0 mbi=space(8) @ 1,30 say 'MODIFICARE IMPRUMUT' @ 2,5 to 6,60 double @ 3,6 say 'cheia inregistrarii(serie buletin si numar caseta)' @ 4,6 say '\\\\\(serie buletin) : ' get mbi picture 'aa999999' @ 5,6 say '\\\\\(numar caseta) : 'get mnrcs picture '9999' read @ 19,1 to 21,79 double cp=mbi+str(mnrcs,4) set order to tag tcp if seek(cp,'impr')
scatter memvarclear@ 1,1 say 'S.C. EU S.R.L.'@ 3,20 say 'FISA IMPRUMUT '@ 5,5 say 'incheiat la data de ' get m.data@ 5,40 say 'cu persoana cu'@ 6,2 say 'seria de buletin ' get m.bi picture 'aa999999' ;
valid exbi() and m.bi<>' ' ; error 'serie buletin existenta sau valoare nula'
@ 9,5 to 12,25 double@ 10,7 say 'nrcaseta***durata'
@ 11,7 say '1:' get m.nrcas picture '9999' ; valid testnc() and dupcpm() and m.nrcas<>0 ; error 'cheie principala duplicat' @ 11,20 get m.per picture '9' range 1,5
@ 14,5 to 16,45 doublea=1@ 15,15 get a function '*ht \!\<save;\<nosave' size 1,4,1 @ 19,1 to 21,79 doubleread*ras='d'*@ 20,20 say 'salvati(d/n) : ' get ras picture 'a'*readif a=1
select imprgather memvar
else@ 20,20 say 'INREGISTRARE NESALVATA' wait @ 20,2 CLEAR TO 20,78
endif else
@ 20,20 say 'INREGISTRARE NEGASITA'wait@ 20,2 clear to 20,78
endif @ 18,20 say 'CONTINUATI(D/N) : ' get rs picture 'a' read
11
if lower(rs)='n'exit
endifenddodeactivate window freturn
function exbiprivate auxbinr=recno()auxbi=biseek m.biif found() and auxbi<>bi
vb=.f.else
select persseek m.biif found()
replace bi with m.bi for bi=auxbiendifvb=.t.
endifselect imprgo nrreturn vb
procedure afismclear@ 1,1 say 'S.C. EU S.R.L.'@ 3,20 say 'FISA IMPRUMUT '@ 5,5 say 'incheiat la data de ' get m.data@ 5,40 say 'cu persoana cu'@ 6,2 say 'seria de buletin ' get m.bi picture 'aa999999' ;
valid exbi() and m.bi<>' ' ; error 'serie buletin existenta sau valoare nula'
@ 9,5 to 12,25 double@ 10,7 say 'nrcaseta***durata' @ 11,7 say '1:' get m.nrcas picture '9999' ; valid testnc() and dupcpm() and m.nrcas<>' ' ; error 'cheie principala duplicat' @ 11,20 get m.per picture '9' range 1,5 @ 14,5 to 16,45 doublea=1@ 15,15 get a function '*ht \!\<save;\<nosave' size 1,4,1 @ 19,1 to 21,79 doublereturn
function testncprivate nr,vbnr=recno()set order to tnrcasseek m.nrcasif found() and recno()<>nr
vb=.f.else
vb=.t.endifgo nrreturn vb
12
function dupcpmprivate nrnr=recno()set order to tag tcpseek m.bi+str(m.nrcas,4)if found()
if recno()=nr vb=.t.
else vb=.f.
endifelse
vb=.t.endifgo nrreturn vb
procedure delipublic mnrcsactivate window frs='d'do while lower(rs)='d' clear select impr mnrcs=0 mbi=space(8) @ 2,5 to 6,60 double @ 3,6 say 'cheia inregistrarii(serie buletin si numar caseta)' @ 4,6 say '\\\\\(serie buletin) : ' get mbi picture 'aa999999' @ 5,6 say '\\\\\(numar caseta) : 'get mnrcs picture '9999' read @ 19,1 to 21,79 double cp=mbi+str(mnrcs,4) aux=order() set order to tag tcp if seek(cp,'impr')
scatter memvarclear@ 1,1 say 'S.C. EU S.R.L.'@ 3,20 say 'FISA IMPRUMUT '@ 5,5 say 'incheiat la data de '+dtoc(m.data)@ 5,35 say 'cu' @ 7,2 say 'serie buletin '+m.bi @ 9,20 to 12,40 double@ 10,22 say 'nrcaseta***durata'
@ 11,22 say m.nrcas picture '9999' @ 11,35 say m.per picture '9'
@ 14,5 to 16,45 doublea=1@ 15,17 get a function '*h \!\<dele;\<nodele' size 1,4,5read@ 19,1 to 21,79 double*ras='d'*@ 20,20 say 'stergeti(d/n) : ' get ras picture 'a'*read
if a=1select imprdeletepack
else
13
@ 20,20 say 'INREGISTRARE NESTEARSA'WAIT@ 20,2 clear to 20,78
endifelse
@ 20,20 say 'INREGISTRARE NEGASITA'wait@ 20,2 clear to 20,78
endif@ 20,20 say 'CONTINUATI(D/N)?:' get rs picture 'a'read@ 20,2 clear to 20,79if lower(rs)='n'
exitendifenddodeactivate window freturn
****************************************************pp.prgprocedure modpactivate window fselect persdo while .T. clear ch=space(8) @ 1,25 to 3,55 double @ 2,30 say 'serie buletin :' get ch @ 19,1 to 21,79 double read seek ch if found() clear scatter memvar @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 to 7,65 double @ 4,30 say 'serie buletin :' get m.bi ; valid m.bi<>' ' and vbi() ; error 'serie buletin eronata' @ 5,10 say 'nume :' get m.nume @ 6,10 say 'prenume :' get m.pren @ 13,5 to 15,45 double a='save' @ 14,17 get a function '*h \!\<save;\<nosave' size 1,4,5 read if a='save' select impr seek pers.bi if found() replace bi with m.bi for bi=pers.bi endif select pers gather memvar else @ 20,20 say 'inregistrare nesalvata' wait @ 20,2 clear to 20,78 endif else @ 20,20 say 'INREGISTRARE NEGASITA'
14
wait @ 20,2 clear to 20,78 endifr='d'@ 20,20 say 'continuati(d/n)?' get rread@ 20,2 CLEAR TO 20,78if r='n' exitendifenddodeactivate window freturn
function vbinr=recno()seek m.biif found() and recno()<>nr
vb=.f.else
*select impr*seek pers.bi*if found()
* replace bi with m.bi for bi=pers.bi *endif vb=.t.endifgo nrreturn vb
procedure delpactivate window fselect persdo while .t.
clear ch=space(8) @ 1,25 to 3,55 double @ 2,30 say 'serie buletin :' get ch @ 19,1 to 21,79 double read seek ch if found() clear scatter memvar @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 to 7,65 double @ 4,30 say 'serie buletin :'+ upper(m.bi) @ 5,10 say 'nume :'+upper(m.nume) @ 6,10 say 'prenume :'+upper(m.pren) @ 13,5 to 15,45 double a=1 @ 14,17 get a function '*h \!\<dele;\<nodele' size 1,4,5 read if a=1 if cbi()=.t. define window fer from 5,10 to 20,70 activate window fer @ 7,1 say 'ERROR,CONTRACT INCHEIAT CU ACEASTA PERSOANA' wait deactivate window fer
15
release window fer *@ 20,2 clear to 22,78 else delete pack endif else @ 20,20 say 'inregistrare nestearsa' wait @ 20,2 clear to 20,78 endif else @ 20,20 say 'inregistrare negasita' wait @ 20,2 clear to 20,78 endifr='d'@ 20,20 say 'CONTINUATI(D/N)?' get rread@ 20,2 clear to 20,78if r='n' exitendifenddodeactivate window freturn
function cbiselect imprnr=recno()seek m.biif found() vb=.t.else vb=.f.endifgo nrselect persreturn vb
**********************************************pf.prgprocedure initmnrcas=0mtito=space(30)mtitr=space(30)mreg=space(30)manap=0msit=.f.mnract=space(4)nac=0dimension mnact[6],mpact[6]for i=1 to 6
mnact=space(20) mpact=space(20)
endforreturn
procedure adafpublic mnrcas,mtito,mtitr,mreg,manap,msit,mnract,mnact,mpact,nacactivate window fselect filme
16
do while .t.do init
clear @ 1,1 say 'S.C. EU S.R.L.' @ 3,2 say 'numar caseta : ' get mnrcas picture '9999'; valid not seek(mnrcas) error 'numar caseta invalid' @ 4,2 say 'titlu original : ' get mtito @ 5,2 say 'titlu romanesc : ' get mtitr @ 5,52 say 'an aparitie:' get manap picture '9999'; range 1900,year(date()) @ 6,2 say 'regizor :' get mreg @ 6,42 say 'situatia(imprumutata-t,neimp-f):' get msit @ 7,10 say 'numar actori care se introduc(maxim 5): ' get nac ; range 1,5 picture '9' read @ 8,5 to 10+nac,50 double @ 9,6 say 'nume actor' @ 9,27 say 'prenume actor' for i=1 to nac @ 9+i,6 get mnact[i] @ 9+i,27 get mpact[i] endfor @ 16,5 to 18,50 double a=1 @ 17,17 get a function '*h \!\<save;\<nosave' size 1,4,5 @ 19,1 to 21,79 double read
if a=1 select filme append blank
replace nrcas with mnrcas,tito with mtito,titr with mtitr,reg with mreg ;
,anap with manap,sit with msitfor i=1 to nac select actori append blank replace nrcas with mnrcas,pact with mpact[i],nact with
mnact[i]endfor
select filme else @ 20,20 say 'INREGISTRARE NESALVATA' wait @ 20,2 CLEAR TO 20,78 endif r='d' @ 20,20 say 'CONTINUATI(D/N)?' get r read @ 20,2 CLEAR TO 20,78 if r='n' exit endifenddodeactivate window freturn
function dupnrcasnr=recno()vb=not(seek(mnrcas))go nrreturn vb
17
procedure modfpublic mnrcas,b,a*set near onactivate window fdo while .t. clear mnrcas=0 @ 2,5 to 5,60 double @ 3,6 say 'cheia inregistrarii' @ 4,6 say 'numar caseta : ' get mnrcas picture '9999' @ 19,1 to 21,79 double read select filme set order to tnrcas seek mnrcas if found()
scatter memvar clear @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 say 'numar caseta : ' get m.nrcas ; valid m.nrcas<>0 and mdupnrc() ; error 'NUMAR CASETA EXISTENT' @ 4,5 say 'titlu original : ' get m.tito @ 5,50 say 'an aparitie:' get m.anap @ 5,5 say 'titlu romanesc : ' get m.titr @ 6,5 say 'regizor :' get m.reg @ 7,5 say 'situatia(imprumutata-f,neimp-t) : ' get m.sit @ 14,5 TO 16,45 double a='save' @ 15,17 get a function '*h \!\<save;\<nosave' size 1,4,5 @ 19,1 to 21,79 double
readif a='save'
select filmegather memvarselect actorilocate for nrcas=filme.nrcasif found()do while not eof()
replace nrcas with m.nrcas continue
enddoendif
else @ 20,20 say 'INREGISTRARE NESALVATA' wait @ 20,2 CLEAR TO 20,78
endif else
@ 20,20 say 'INREGISTRARE NEGASITA'wait@ 20,2 CLEAR TO 20,78
endif r='d' @ 20,20 say 'CONTINUATI(D/N)?' get r read @ 20,2 CLEAR TO 20,78 if r='n'
exit
18
endifenddodeactivate window freturn
function mdupnrcprivate vbnr=recno()seek m.nrcasif found() and recno()<>nr
vb=.f.else
select actoriset order to tnrcasseek filme.nrcasif found()
replace nrcas with m.nrcas for nrcas=filme.nrcasendifvb=.t.
endifselect filmego nrreturn vb
procedure delfpublic mnrcasactivate window fdo while .t. clear select filme mnrcas=0 @ 2,5 to 5,60 double @ 3,6 say 'cheia inregistrarii' @ 4,6 say 'numar caseta : ' get mnrcas picture '9999' @ 19,1 to 21,79 double read select filme set order to tnrcas if seek(mnrcas)
scatter memvar clear @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 say 'numar caseta : '+str(m.nrcas,4) @ 4,5 say 'titlu original : '+m.tito @ 5,50 say 'an aparitie:' +str(m.anap,4) @ 5,5 say 'titlu romanesc : '+m.titr @ 6,5 say 'regizor :' +m.reg @ 7,5 say 'situatia : ' if m.sit=.f. @ 7,16 say 'imprumutata' else @ 7,16 say 'neimprumutata' endif @ 14,5 TO 16,45 DOUBLE a=1 @ 15,17 get a function '*h \!\<dele;\<nodele' size 1,4,5 @ 19,1 to 21,79 double
readif a=1
select actorilocate for nrcas=filme.nrcas
19
if found()do while not eof()
deletecontinue
enddoendifpackselect filmedeletepack
else @ 20,20 say 'INREGISTRARE NESTEARSA' wait @ 20,2 CLEAR TO 20,78
endif else
@ 20,20 say 'INREGISTRARE NEGASITA'wait
endif r='d' @ 20,20 say 'CONTINUATI(D/N)?' get r read @ 20,2 CLEAR TO 20,78 if r='n'
exit endifenddodeactivate window freturn
**************************************************pa.prgprocedure modaactivate window fselect actorido while .t. clear ch=0 @ 1,30 to 3,50 double @ 2,31 say 'numar caseta :' get ch picture '9999' @ 19,1 to 21,79 double read set order to tag tnrcas locate for nrcas=ch if found() ras='d' do while not eof() and lower(ras)='d' clear scatter memvar @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 to 8,65 double @ 4,30 say 'numar caseta :' get m.nrcas picture '9999' @ 6,10 say 'nume actor :' get m.nact @ 7,10 say 'prenume actor :' get m.pact @ 14,05 to 16,45 double a='save' @ 15,16 get a function '*h \!\<save;\<nosave' size 1,4,5 @ 19,1 to 21,79 double read if a='save' gather memvar else
20
@ 20,20 say 'INREGISTRARE NESALVATA' wait @ 20,2 CLEAR TO 20,78 endif @ 20,2 clear to 20,78 @ 20,3 say ; 'DORITI GASIREA URMATOAREI INREGISTRARI CU ACELASI NRCAS' ; get ras read @ 20,2 CLEAR TO 20,78 if ras='d' continue endif enddo else @ 20,20 say 'INREGISTRARE NEGASITA' WAIT @ 20,2 CLEAR TO 20,78 endifr='d'@ 20,20 say 'CONTINUATI(D/N)?' get rread@ 20,2 CLEAR TO 20,78if lower(r)='n' exitendifenddodeactivate window freturn
procedure adaaactivate window fselect actorido while .t. clear scatter memvar blank @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 to 8,65 double @ 4,30 say 'numar caseta :' get m.nrcas picture '9999'; valid seek(m.nrcas,'filme') ; error 'NUMAR CASETA INEXISTENT IN FILME.DBF' @ 6,10 say 'nume actor :' get m.nact @ 7,10 say 'prenume actor :' get m.pact @ 14,5 to 16,45 double a=1 @ 15,17 get a function '*h \!\<save;\<nosave' size 1,4,5 @ 19,1 to 21,79 double read if a=1 append blank gather memvar else @ 20,20 say 'INREGISTRARE NESALVATA' wait @ 20,2 CLEAR TO 20,78 endifr='d'@ 20,20 say 'CONTINUATI(D/N)?' get rread@ 20,2 CLEAR TO 20,78if r='n'
21
exitendifenddodeactivate window freturn
function exnrcprivate vbnr=recno()select filmeset order to tnrcasseek m.nrcasif found()
vb=.t.else
vb=.f.endifselect actorigo nrreturn vb
procedure delaactivate window fselect actorido while .t.
clear ch=0 @ 1,30 to 3,50 double @ 2,31 say 'numar caseta :' get ch picture '9999' @ 19,1 to 21,79 double read set order to tag tnrcas locate for nrcas=ch if found() ras='d' do while not eof() and lower(ras)='d' clear scatter memvar @ 1,1 say 'S.C. EU S.R.L.' @ 3,5 to 8,65 double @ 4,30 say 'numar caseta :'+str(m.nrcas,4) picture '9999' @ 6,10 say 'nume actor :' +m.nact @ 7,10 say 'prenume actor :' +m.pact @ 14,5 to 16,45 double a='dele' @ 15,17 get a function '*h \!\<dele;\<nodele' size 1,4,5 @ 19,1 to 21,79 double read if a='dele' delete pack else @ 20,20 say 'INREGISTRARE NESTEARSA' wait @ 20,2 CLEAR TO 20,78 endif @ 20,2 clear to 20,78 @ 20,3 say ; 'DORITI GASIREA URMATOAREI INREGISTRARI CU ACELASI NRCAS' ; get ras
22
read @ 20,2 CLEAR TO 20,79 if ras='d' continue endif enddo else @ 20,20 say 'INREGISTRARE NEGASITA' WAIT @ 20,2 CLEAR TO 20,78 endifr='d'@ 20,20 say 'CONTINUATI(D/N)?' get rread@ 20,2 CLEAR TO 20,78if lower(r)='n' exitendifenddodeactivate window freturn
procedure lisfactivate window fselect filmeset order to tnrcas@ 1,1 say 'sc eu srl'@ 2,30 say 'filme gestionate' @ row()+2,1 say replicate('-',74)@ row()+1,1 say 'nr' @ row(),7 say 'denumire' @ row(),39 say 'regizor' @ row(),71 say 'an' @ row()+1,1 say 'cas' @ row(),7 say 'film' @ row()+1,1 say replicate('-' ,74)@ row()+1,1scan
@ row(),1 say nrcas @ row(),7 say titr@ row(),39 say reg @ row(),71 say anap @ row()+1,1if row()=20
wait@ 8,1 clear to 21,80@ 8,1
endifendscan@ row()+1,1 say replicate('-' ,74)waitdeactivate window freturn
procedure lisdactivate window fselect filmeset order to tag tnrcas@ 1,1 say 'sc eu srl'@ 2,30 say 'filme disponibile'
23
@ row()+2,1 say replicate('-',74)@ row()+1,1 say 'nr' @ row(),7 say 'denumire' @ row(),39 say 'regizor' @ row(),71 say 'an' @ row()+1,1 say 'cas' @ row(),7 say 'film' @ row()+1,1 say replicate('-' ,74)@ row()+1,1scan
if sit=.f.@ row(),1 say nrcas @ row(),7 say titr@ row(),39 say reg @ row(),71 say anap @ row()+1,1if row()=19
wait@ 8,1 clear to 19,80@ 8,1
endifendif
endscan@ row()+1,1 say replicate('-' ,74)waitdeactivate window freturn
procedure lisractivate window fselect filmemreg=space(30)@ 12,5 to 14,75 double@ 13,10 say 'numele regizorului :' get mreg picture '@x'readclearset order to tag treglocate for reg=mregif found()
@ 1,1 say 'sc eu srl'@ 2,20 say 'filme cu regizorul '+upper(mreg) @ row()+2,1 say replicate('-',74)@ row()+1,1 say 'nr' @ row(),7 say 'titlu romanesc' @ row(),39 say 'titlu original' @ row(),71 say 'an' @ row()+1,1 say 'cas' @ row(),7 say 'film' @ row()+1,1 say replicate('-',74)@ row()+1,1do while not eof()
@ row(),1@ row(),1 say nrcas @ row(),7 say titr@ row(),39 say tito@ row(),71 say anap @ row()+1,1if row()=19
wait@ 8,1 clear to 19,80
24
@ 8,1endifcontinue
enddoelse
@ 20,1 to 22,80 double@ 21,20 say 'nume regizor inexistent'wait@ 21,2 clear to 21,79
endifwaitdeactivate window freturn
procedure lisanactivate window fselect filmeman=0@ 12,5 to 14,75 double@ 13,10 say 'ANUL DE REFERINTA :' get man picture '9999'readclearset order to tanlocate for anap=manif found()
@ 1,1 say 'sc eu srl'@ 2,30 say 'filme gestionate' @ row()+2,1 say replicate('-',74)@ row()+1,1 say 'nr' @ row(),7 say 'denumire' @ row(),39 say 'regizor' @ row()+1,1 say 'cas' @ row(),7 say 'film' @ row()+1,1 say replicate('-',74)@ row()+1,1do while not eof()
@ row(),1@ row(),1 say nrcas @ row(),7 say titr@ row(),39 say reg
@ row()+1,1if row()=19
wait@ 8,1 clear to 19,80@ 8,1
endifcontinue
enddoelse
@ 20,1 to 22,80 double@ 21,20 say 'AN DE REFERINTA INEXISTENT'wait@ 21,2 clear to 21,79
endifwaitdeactivate window freturn
procedure lisa
25
activate window fpublic mnact,mpactselect actoriselect filmemnact=space(20)mpact=space(20)@ 12,5 to 16,75 double@ 13,10 say 'nume actor :' get mnact @ 15,10 say 'prenume actor :' get mpact readcleardo lisact.qprwaitdeactivate window freturn
26