baze de date aplicatie privind inchirierea de casete video

26
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/9999 Total 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

Upload: mihai-uncescu

Post on 11-May-2017

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 2: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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)

Page 3: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 4: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 5: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 6: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 7: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 8: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 9: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 10: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 11: Baze de Date Aplicatie Privind Inchirierea de Casete Video

@ 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

Page 12: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 13: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 14: Baze de Date Aplicatie Privind Inchirierea de Casete Video

@ 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

Page 15: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 16: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 17: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 18: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 19: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 20: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 21: Baze de Date Aplicatie Privind Inchirierea de Casete Video

@ 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

Page 22: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 23: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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

Page 24: Baze de Date Aplicatie Privind Inchirierea de Casete Video

@ 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

Page 25: Baze de Date Aplicatie Privind Inchirierea de Casete Video

@ 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

Page 26: Baze de Date Aplicatie Privind Inchirierea de Casete Video

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