LUCRARE DE ATESTAT
- Gestionarea unei biblioteci -
CUPRINS
Introducere.. pag. 3
Cerinte Hardware si Software. pag. 4
Descrierea programului. pag. 4
Sursa programului. pag. 6
Bibliografie.. pag. 29
INTRODUCERE
Versiunea de FoxPro 2.5 a aparut , ca produs comercial , in primavara anului 1993.
Ca limbaj tehnologic din familia Xbase a reprezentat prima realizare a strategiei de portare intre platforme , el putand fi exploatat atat sub sistemul de operare DOS 6,-. , cat si sub Windows (95 , NT ).. Acest lucru face din FoxPro unul din principalii sustinatori ai suportului multiplatforma de exploatare pentru aplicatii de baze de date , mai ales pentru cei 212j91c care au fost legati de aplicatii Xbase.
In acelasi timp , FoxPro 2.5 continua sa extinda reputatia deja castigata a produsului pentru viteza , mai ales in situatia multiutilizator.Unele tipuri de cereri si activitati cu multe operatii de intrare-iesire sunt de trei pana la patru ori mai rapide decat erau in FoxPro 2.0 , iar acel produs era deja recunoscut ca lider in aceasta privinta.
Dar viteza de executie nu este totul. Astazi standardele de proiectare ale interfetei cu utilizatorul impun instrumente performante orientate vizual , ca sa permita de asemenea , o dezvoltare rapida a aplicatiilor , in vederea automatizarii pe cat posibil a intretinerii de platforme diferite a ecranelor , rapoartelor si a meniurilor.
FoxPro permite si exploatarea de baze de date non-Xbase , precum si a celor fara o orientare speciala catre gestiunea bazelor de date.
Un sistem de gestiune a bazelor de date (SGBD) este un sistem informatic SOFTWARE care se ocupa cu stocarea si prelucrarea unui volum mare de date, volumul prelucrarilor fiind relativ mic.
Functiile unui SGBD :
Functia de scriere a datelor: un SGBD trebuie sa permita definirea structurii datelor, a relatiilor dintre ele precum si a conditiilor de acces si validare.
2. Functia de manipulare a datelor: permite crearea, actualizarea si modificarea datelor, cautarea rapida si sortarea datelor.
3. Functia de utilizare: permite definirea unui interfete intre utilizator si sistemul de gestiune a bazelor de date in vederea comunicarii.
Pe langa aceste functii un sistem de gestiune al bazelor de date ofera si alte servicii si anume:
HELP pentru utilizator
Utilitare incorporate: sisteme de gestiune a fisierelor si tabelelor
Suport pentru limbajele de programare
Din aceste considerente , am elaborat lucrarea de fata sub acest limbaj.
CERINTE HARDWARE SI SOFTWARE
Programul nu necesita un calculator performant. Este compatibil cu orice calculator capabil sa ruleze Programul Visual Fox Pro.
Pentru a lucra in conditii optime este preferabil sa fie folosit Visual Fox Pro versiunea 9 .
DESCRIEREA PROGRAMULUI
Acest program vine in ajutorul oricarui bibliotecar, fiind util la tinerea evidentei cartilor dintr-o biblioteca.
Programul incepe cu cateva setari ale mediului de lucru.
' SET TALK OFF ' - fara mesaje din partea calculatorului.a unor rezultate ale comenzilor
' SET CENTURY ON'- permite afisarea anului pe patru caractere
' SET CLOCK ON ' - realizeaza aparitia ceasului.
' SET SYSMENU OFF' -nu se poate accesa bara de meniu din Fox Pro in timpul executiei programului
' SET DATE TO BRITISH'- regleaza data dupa modelul englezesc
Bara de meniu a programului contine urmatoarele PAD-uri:
CARTI
FISA
UNELTE
IESIRE
AJUTOR
La activarea acestuia prin simpla apasare a tastei 'ENTER',pe ecran va apare o fereastra din care putem selecta alte optiuni precum:
* adaugare carte-se poate adauga o noua carte in baza de date in functie de numele autorului
* transfer carte-prin selectarea acestei optiuni se transfera cartile din rafturile bibliotecii in depozit
* casare carte-cu ajutorul acestei optiuni se sterg cartile dorite din inventar
La activarea acestuia pe ecran se va deschide o fereastra care contine urmatoarele optiuni:
* imprumut-la selectarea acestei optiuni se deschide o noua fisa cu numele si datele personale ale solicitantului imprumutului
* restituire carte-se trece in baza de date, data cand a fost restituita cartea ce in prealabil a fost imprumutata
* stergere fisa-se sterge fisa dorita
La activarea pad-ului UNELTE va apare un meniu vertical ce contine urmatoarele optiuni:
* cauta-prin selectarea optiunii "cauta" se face cautarea cartii dorite, in baza de date, dupa autor sau dupa tipul acesteia (Fond fix,Lb. Straine,Enciclopedii,Albume arta,Dictionare,Critica)
* situatie-se afiseaza pe ecran situatia cartilor imprumutate, autorul acestora, numele persoanei ce a imprumutat cartea, si data la care a fost imprumutata si restituita cartea
* date personale-se vizualizeaza datele personale ale persoanei ce a imprumutat carti
* numar fisa- se afiseaza pe ecran continutul fisei respective
* afisare inventar-apare pe ecran o fereastra ce cuprinde cartile din baza de date, cu autorul fiecareia, pretul lor si numarul acestora
* tiparire inventar-se poate tipari la imprimanta cartile din inventar in functie de optiunea bibliotecarului
* valoare inventar-se afiseaza pe ecran valoarea cumulata a cartilor din inventar
La activarea pad-ului iesire va apare pe ecran o fereastra cu urmatoarele optiuni:
* Iesire in MS-DOS-prin aceasta optiune se paraseste mediul FOX PRO
* Iesire in FOX PRO-se iese din program in mediul FOX PRO
La activare pad-ului ajutor se afiseza pe ecran o ferestra in care
utilizatorul va intalni o serie de comenzi cu care se va face
SURSA PROGRAMULUI
set escape off
set clock to
set talk off
set default to c:biblioteca
set century on
set date to british
set sysmenu off
close all
select
use autori
select
use carti
select
use exemplar
select
use contract
select
sum nr_exemp*pret to valoare_totala
define menu meniu
define pad carti of meniu prompt '<Carti' at message 'Gestionarea cartilor'
define pad fisa of meniu prompt '<Fisa' at message 'Gestionarea fiselor de lucru'
define pad unelte of meniu prompt '<Unelte' at message 'Vizualizare situatie biblioteca'
define pad iesire of meniu prompt '<Iesire' at message 'Iesire din program'
define pad ajutor of meniu prompt '<Ajutor' at message 'Date ajutatoare cu privire la program'
on selection pad carti of meniu activate popup car
on selection pad fisa of meniu activate popup fis
on selection pad unelte of meniu activate popup une
on selection pad iesire of meniu activate popup ies
on selection pad ajutor of meniu do aju
define popup car from margin shadow
define bar of car prompt '<Adaugare_carte' message 'Adaugare carti in inventarul bibliotecii'
define bar of car prompt 'T<ransfer_carte' message 'Transfer carte (raft>depozit/depozit>raft)'
define bar of car prompt 'Ca<sare_carte' message 'Casare carte'
define popup fis from margin shadow
define bar of fis prompt '<Imprumut' message 'Imprumutare de carti'
define bar of fis prompt 'R<estituire_carte' message 'Restituirea cartilor imprumutate'
define bar of fis prompt '<Stergere fisa' message 'Stergere de fisa'
define popup une from margin shadow
define bar of une prompt '<Cauta carte >' message 'Cautare carte dupa diferite criterii'
define bar of une prompt 'S<ituatie' message 'Afisarea pe ecran a cartilor imprumutate'
define bar of une prompt 'Da<te personale' message 'Afisarea datelor personale'
define bar of une prompt 'Num<ar fisa' message 'Afisarea unei fise (dupa numar)'
define bar of une prompt 'Afi<sare inventar' message 'Afisarea inventarului bibliotecii'
define bar of une prompt 'Ti<parire inventar >' message 'Tiparirea inventarului bibliotecii la imprimanta'
define bar of une prompt '<Valoare inventar' message 'Afisarea valorii inventarului bibliotecii'
define popup unex from margin shadow
define bar of unex prompt '<dupa Autor'
define bar of unex prompt 'd<upa Titlu'
define bar of unex prompt 'Fo<nd fix' message 'Cautare carti ce fac parte din categoria Fond fix'
define bar of unex prompt 'Lim<bi straine' message 'Cautare carti ce fac parte din categoria Limbi straine'
define bar of unex prompt 'En<ciclopedii' message 'Cautare carti ce fac parte din categoria Enciclopedii'
define bar of unex prompt 'A<lbume arta' message 'Cautare carti ce fac parte din categoria Albume arta'
define bar of unex prompt '<Dictionare' message 'Cautare carti ce fac parte din categoria Dictionare'
define bar of unex prompt 'C<ritica' message 'Cautare carti ce fac parte din categoria Critica'
define popup tipinv from margin shadow
define bar of tipinv prompt '<Carte' message 'Tiparirea cartilor ce fac parte din categoria Carte'
define bar of tipinv prompt 'F<ond fix' message 'Tiparirea cartilor ce fac parte din categoria Fond fix'
define bar of tipinv prompt 'Li<mbi straine' message 'Tiparirea cartilor ce fac parte din categoria Limbi straine'
define bar of tipinv prompt 'Enc<iclopedii' message 'Tiparirea cartilor ce fac parte din categoria Enciclopedii'
define bar of tipinv prompt 'Al<bume arta' message 'Tiparirea cartilor ce fac parte din categoria Albume arta'
define bar of tipinv prompt 'D<ictionare' message 'Tiparirea cartilor ce fac parte din categoria Dictionare'
define bar of tipinv prompt '<Critica'message 'Tiparirea cartilor ce fac parte din categoria Critica'
define bar of tipinv prompt 'T<ot inventarul' message 'Tiparirea tuturor cartilor ce compun inventarul bibliotecii'
define popup ies from margin shadow
define bar of ies prompt '<Iesire in Ms-Dos'
define bar of ies prompt 'I<esire in Fox Pro'
on selection bar of car do adauga
on selection bar of car do transfer
on selection bar of car do caseaza
on selection bar of fis do imprumuta
on selection bar of fis do restit
on selection bar of fis do stergfis
on selection bar of une activate popup unex
on selection bar of une do situatie
on selection bar of une do datepers
on selection bar of une do nrfisa
on selection bar of une do afisinv
on selection bar of une activate popup tipinv
on selection bar of une do valinv
on selection bar of unex do caut
on selection bar of unex do ctit
on selection bar of unex do cauta with
on selection bar of unex do cauta with
on selection bar of unex do cauta with
on selection bar of unex do cauta with
on selection bar of unex do cauta with
on selection bar of unex do cauta with
on selection bar of tipinv do tip with
on selection bar of tipinv do tip with
on selection bar of tipinv do tip with
on selection bar of tipinv do tip with
on selection bar of tipinv do tip with
on selection bar of tipinv do tip with
on selection bar of tipinv do tip with
on selection bar of tipinv do tipall
on selection bar of ies quit
on selection bar of ies do endprogram
@ 5,1 say ÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ ÛÛÛ ÛÛ '
@ 6,1 say ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛ '
@ 7,1 say ÛÛÛÛÛ ÛÛ ÛÛÛÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛ ÛÛ ÛÛ ÛÛ'
@ 8,1 say ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛÛ'
@ 9,1 say ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ'
say ÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛ ÛÛÛÛÛÛÛ ÛÛÛ ÛÛ ÛÛ'
say ' Liceului Teoretic 'Grigore Moisil' Tulcea '
endprog=.f.
do while endprog=.f.
activate menu meniu
enddo
release menu meniu
procedure imprumuta
hide popup car
define window nume from to title 'Imprumut' float shadow double
store space to num
activate window nume
say 'Numele:' get num
read
deactivate window nume
release window nume
if lastkey
return
endif
select
locate for nume=num
if eof()=.f.
cd=nr_fisa
select
locate for nr_fisa=cd .and. data_rest<date
if eof()=.f.
wait 'Persoana are carti nerestituite !' window
return
else
select
define window dat from to title 'Date imprumut' float shadow double
dataimpr=date
datarest=date()
store to choice
activate window dat
@ 1,1 say 'Data:' get dataimpr
@ 2,1 say 'Data restituirii:' get datarest
@ 1,50 GET choice FUNCTION '* OK;Cancel' SIZE
read cycle
deactivate window dat
release window dat
if lastkey()=27 .or. choice=2
return
endif
endif
else
define window fisa from to title 'Fisa' float shadow double
activate window fisa
select
append blank
if recno()>1
go recno
cd=nr_fisa+1
go bottom
replace nr_fisa with cd
else
replace nr_fisa with 1
endif
dataimpr=date
datarest=date
replace nume with num
gata=.f.
do while gata=.f.
store to choice
@ 1,1 say 'Numar fisa:' get nr_fisa
@ 2,1 say 'Data:' get dataimpr
@ 3,1 say 'Nume:' get nume
@ 4,1 say 'Clasa:' get clasa
@ 5,1 say 'Data nasterii:' get nascut_la
@ 6,1 say 'Locul nasterii:' get nascut_in
@ 7,1 say 'Domiciliu:' get domiciliu
@ 8,1 say 'Telefon:' get telefon
@ 9,1 say 'Data restituirii:' get datarest
@ 2,50 GET choice FUNCTION '* OK;Cancel' SIZE
read cycle
cd=nr_fisa
replace nr_fisa with
go top
locate for nr_fisa=cd
if eof() .or. lastkey()=27 .or. choice=2
locate for nr_fisa=0
replace nr_fisa with cd
gata=.t.
else
wait 'Numarul de fisa este folosit !' window
locate for nr_fisa=0
endif
enddo
deactivate window fisa
release window fisa
go bottom
if lastkey()=27 .or. choice=2
delete
pack
return
endif
endif
define window car from to title 'Carte' float shadow double
store space to autor
store space to tit
nrinv=0
gata=.t.
do while gata
store to choice
activate window car
@ 1,1 say 'Nume autor:' get autor
@ 2,1 say 'Titlul cartii:' get tit
@ 3,1 say 'Numar inventar:' get nrinv
@ 1,60 GET choice FUNCTION '* OK;Stop' SIZE
read cycle
if lastkey()=27 .or. choice=2
gata=.f.
else
select
locate for upper(nume_autor)=upper(autor)
if eof
wait 'Autorul nu este gasit !' window
else
c=cod_autor
select
locate for upper(titlu)=upper(tit) .and. cod_autor=c
if eof
wait 'Titlu inexistent !' window
else
cc=cod_carte
select
locate for cod_carte=cc .and. nr_inv=nrinv
if eof
wait 'Carte imprumutata sau numar inventar inexistent !' window
go top
locate for cod_carte=cc .and. nr_fisa=0
if eof()=.f.
nrinv=nr_inv
endif
else
replace nr_fisa with cd
replace data_impr with dataimpr
replace data_rest with datarest
store space to autor
store space to tit
nrinv=0
endif
endif
endif
endif
enddo
*set console off
*set printer to
*set printer on
*select 4
*go top
*locate for nume=num
Fisa de imprumut '
*? ' Nume elev: '+nume
*? ' Clasa: '+clasa
' Numar fisa: '+str(nr_fisa)
*nrfisa=nr_fisa
*select 3
*go top
*locate for nr_fisa=nrfisa
*do while eof()=.f.
*nrinv=nr_inv
*cc=cod_carte
*select 2
*go top
*locate for cod_carte=cc
*tit=titlu
*ca=cod_autor
*select 1
*go top
*locate for cod_autor=ca
*? ' Autor: '+rtrim(nume_autor)+' Titlu: '+rtrim(tit)
*? ' Nr.Inventar: '+rtrim(str(nrinv))
*select 3
*continue
*enddo
*? ' Data imprumut: '+dtoc(dataimpr)+' Data restituire: '+dtoc(datarest)
Semnatura elevului: '
*set console on
*set printer to
*set printer off
release window car
deactivate window car
return
procedure restit
hide popup car
define window nume from to title 'Restituire' float shadow double
activate window nume
store space to num
say 'Numele restitutorului:' get num
read
deactivate window nume
if lastkey()=27)=.f.
select
go top
locate for upper(nume)=upper(num)
if eof
wait 'Numele nu este gasit !' window
release window nume
return
endif
cd=nr_fisa
* set console off
* set printer to
* set printer on
Fisa de restituire '
* ? ' Nume elev: '+rtrim(nume)
* ? ' Clasa: '+rtrim(clasa)
* ? ' Numar fisa: '+str(nr_fisa)
* set console on
* set printer to
* set printer off
nrfisa=nr_fisa
define window car from to title 'Carte' float shadow double
store space to autor
store space to tit
nrinv=0
gata=.t.
do while gata
store to choice
activate window car
@ 1,1 say 'Nume autor:' get autor
@ 2,1 say 'Titlul cartii:' get tit
@ 3,1 say 'Numar inventar:' get nrinv
@ 1,60 GET choice FUNCTION '* OK;Stop' SIZE
read cycle
if lastkey()=27 .or. choice=2
gata=.f.
else
select
locate for upper(nume_autor)=upper(autor)
if eof
wait 'Autorul nu este gasit !' window
else
c=cod_autor
select
locate for upper(titlu)=upper(tit) .and. cod_autor=c
if eof
wait 'Titlu inexistent !' window
else
cc=cod_carte
select
locate for cod_carte=cc .and. nr_inv=nrinv .and. nr_fisa=nrfisa
if eof
wait 'Cartea nu a fost imprumutata sau numar inventar inexistent !' window
go top
locate for cod_carte=cc .and. nr_fisa=cd
if eof()=.f.
nrinv=nr_inv
endif
else
select
locate for upper(nume_autor)=upper(autor)
autor=nume_autor
select
locate for upper(titlu)=upper(tit)
tit=titlu
select
* set console off
* set printer to
* set printer on
* ? ' Nume autor: '+rtrim(autor)+' Titlu: '+rtrim(tit)
* ? ' Nr.Inventar: '+str(nrinv)
* set console on
* set printer to
* set printer off
replace nr_fisa with
store space to autor
store space to tit
nrinv=0
endif
endif
endif
endif
enddo
select
locate for nr_fisa=nrfisa
*set console off
*set printer to
*set printer on
*if eof()
* ? ' Elevul nu mai are carti de restituit !'
*else
* ? ' Elevul mai are carti de restituit !'
*endif
Semnatura bibliotecarului:'
*set console on
*set printer to
*set printer off
release window car
deactivate window car
endif
release window nume
return
procedure adauga
hide popup car
define window autor from to title 'Adaugare' float shadow double
define window titlu from to title 'Titlu' float shadow double
define window exemp from to title 'Exemplar' float shadow double
do while .t.
clear
store space to num
activate window autor
store to choice
@ 1,1 say 'Introduceti numele autorului' get num
@ 3,52 GET choice FUNCTION '* OK;Stop' SIZE
read cycle
deactivate window autor
if num=space(30) .or. choice=2
exit
else
select
locate for nume_autor=num
if eof
&& daca autorul nu exista se adauga in lista
append blank
replace cod_autor with recno
replace nume_autor with num
endif
c=recno
endif
select
endtit=.f.
do while endtit=.f.
clear
append blank
store to t
store to choice
activate window titlu
incorect=.t.
do while incorect
@ 1,1 say num
@ 2,1 say 'Titlul:' get titlu
@ 3,1 say 'Editura:' get editura
@ 4,1 say 'An aparitie:' get aparitie
@ 5,1 say 'Numarul de exemplare:' get nr_exemp
@ 6,1 say 'Pret/exemplar:' get pret
get t function '^ Carte;Limbi straine;Enciclopedie;Album arta;Dictionar;Critica;Fond fix'
@ 2,52 GET choice FUNCTION '* OK;Stop' SIZE
read cycle
if (nr_exemp<=0 .or. pret<=0 .or. titlu=space(40)) .and. (lastkey()=27)=.f. .and. choice=1
if nr_exemp<=0
wait 'Numar de exemplare invalid !' window
endif
if pret<=0
wait 'Pret invalid !' window
endif
if titlu=space
wait 'Introduceti titlul cartii !' window
endif
else
incorect=.f.
endif
enddo
deactivate window titlu
if lastkey()=27 .or. choice=2
endtit=.t.
delete
pack
else
replace cod_autor with c
replace tip with t
if t=1
replace stat with
else
replace stat with
endif
cc=1
go top
locate for cod_carte=cc
do while eof()=.f.
cc=cc+1
continue
enddo
go bottom
replace cod_carte with cc
nrex=nr_exemp
valoare_totala=valoare_totala+nr_exemp*pret
select
for i=1 to nrex
append blank
store to choice
store TO dep
replace cod_carte with cc
replace nr_fisa with
activate window exemp
incorect=.t.
do while incorect
@ 1,1 say 'Exemplarul '+str(i)
@ 2,1 say 'Numar inventar:' get nr_inv
@ 3,1 get dep FUNCTION '*C Depozit'
@ 4,30 GET choice FUNCTION '* OK' SIZE
read cycle
nrinv=nr_inv
go top
locate for nr_inv=nrinv
if recno reccount
incorect=.f.
else
wait 'Numar de inventar deja folosit !' window
go bottom
endif
enddo
if dep=1
replace depozit with .t.
else
replace depozit with .f.
endif
endfor
deactivate window exemp
select
endif
enddo
enddo
release window autor
release window titlu
release window exemp
return
procedure transfer
hide popup car
select
define window trans from to title 'Transfer carte' float shadow double
nri=0
gata=.f.
do while gata=.f.
store to choice
activate window trans
say 'Numarul inventar:' get nri
@ 1,42 GET choice FUNCTION '* OK;Renunta' SIZE
read cycle
if lastkey()=27 or choice=2
deactivate window trans
release window trans
return
else
locate for nr_inv=nri
if eof
wait 'Numar de inventar inexistent !' window
else
gata=.t.
endif
endif
enddo
deactivate window trans
release window trans
if depozit=.t.
replace depozit with .f.
wait 'Cartea a fost mutata din depozit pe raft !' window
else
replace depozit with .t.
wait 'Cartea a fost mutata de pe raft in depozit !' window
endif
return
procedure caseaza
hide popup car
store space to autor
store space to tit
nrex=1
define window cas from to title 'Casare' float shadow double
activate window cas
incorect=.t.
do while incorect
incorect=.f.
store to choice
@ 1,1 say 'Autor:' get autor
@ 2,1 say 'Titlu:' get tit
@ 3,1 say 'Numar exemplare:' get nrex
@ 1,50 GET choice FUNCTION '* Caseaza;Renunta' SIZE
read cycle
if lastkey()=27 .or. choice=2
deactivate window cas
release window cas
return
else
select
go top
index on nume_autor to autori
set index to autori
locate for upper(nume_autor)=upper(autor)
if .not. found
wait 'Autor inexistent !' window
incorect=.t.
else
c=cod_autor
select
go top
locate for cod_autor=c .and. upper(titlu)=upper(tit)
if eof
wait 'Titlu inexistent !' window
incorect=.t.
else
if tip=7
wait 'Carte din fondul fix' window
incorect=.t.
endif
if nrex>nr_exemp
wait 'Numarul de exemplare mai mare decat cel existent !' window
incorect=.t.
endif
endif
endif
endif
enddo
deactivate window cas
if nrex=nr_exemp
valoare_totala=valoare_totala-nr_exemp*pret
cc=cod_carte
delete
pack
select
go top
locate for cod_carte=cc
do while eof()=.f.
delete
pack
continue
enddo
wait 'S-au casat toate cartile de acest fel din inventar !' window
else
replace nr_exemp with nr_exemp-nrex
valoare_totala=valoare_totala-nrex*pret
define window exemp from to title 'Exemplar' float shadow double
cc=cod_carte
select
activate window exemp
for i=1 to nrex
go top
locate for cod_carte=cc
nrinv=nr_inv
sav=nrinv
gata=.f.
do while gata=.f.
@ 1,1 say 'Exemplarul '+str(i)
@ 2,1 say 'Numar inventar:' get nrinv
@ 4,30 GET choice FUNCTION '* OK' SIZE
read cycle
go top
locate for cod_carte=cc .and. nr_inv=nrinv
if eof
wait 'Numar de inventar inexistent !' window
nrinv=sav
else
delete
pack
gata=.t.
endif
enddo
endfor
deactivate window exemp
endif
endif
release window exemp
release window cas
close all
delete file autori.idx
return
procedure stergfis
hide popup car
define window nume from to title 'Stergere fisa' float shadow double
activate window nume
cd
store to choice
say 'Numarul fisei:' get cd
GET choice FUNCTION '* Renunta;Sterge' SIZE
read cycle
deactivate window nume
if lastkey()=27)=.f. .and. choice=2
select
go top
locate for nr_fisa=cd
if eof
select
go top
locate for nr_fisa=cd
if eof
wait 'Fisa nu exista !' window
else
delete
pack
wait 'Fisa a fost stearsa !' window
endif
else
wait 'Persoana are carti imprumutate !' window
endif
endif
release window nume
return
procedure caut
hide popup unex
hide popup une
define window srch from to title 'Cauta' float shadow double
store space to autor
activate window srch
say 'Introduceti numele autorului:' get autor
read
deactivate window srch
if lastkey
else
select
locate for upper(nume_autor)=upper(autor)
if eof
wait 'Autorul nu este gasit !' window
else
clear
display fields nume_autor off
c=cod_autor
select
display fields titlu,editura,aparitie,nr_exemp,pret for cod_autor=c off
read
endif
endif
release window srch
clear
show popup une
return
procedure ctit
hide popup unex
hide popup une
define window srch from to title 'Cauta' float shadow double
store space to tit
activate window srch
say 'Introduceti titlul cartii:' get tit
read
deactivate window srch
if lastkey()=27)=.f.
select
locate for upper(titlu)=upper(tit)
if eof
wait 'Titlul nu exista !' window
else
c=cod_autor
select
display fields nume_autor for cod_autor=c off
select
display fields editura,aparitie,nr_exemp,pret off
cc=cod_carte
select
locate for cod_carte=cc
display fields nr_inv,depozit off
do while eof()=.f.
continue
display fields nr_inv,depozit off
endif
enddo
wait
clear
select
do while eof()=.f.
continue
c=cod_autor
select
display fields nume_autor for cod_autor=c off
select
display fields editura,aparitie,nr_exemp,pret off
cc=cod_carte
select
locate for cod_carte=cc
display fields nr_inv,depozit off
do while eof()=.f.
continue
display fields nr_inv,depozit off
enddo
select
if eof()=.f.
wait
clear
endif
enddo
endif
endif
release window srch
clear
show popup une
return
procedure cauta
parameters tp
clear
set cursor off
hide popup unex
hide popup une
store space to tit
select
locate for tip=tp
i=1
if eof
wait 'Nu exista carti din aceasta categorie !' window
else
do while eof()=.f.
c=cod_autor
tit=titlu
select
locate for cod_autor=c
? rtrim(nume_autor)+' - '+rtrim(tit)
i=i+1
if i=25
read
i=1
endif
select
continue
enddo
read
endif
clear
show popup une
set cursor on
return
procedure tip
parameters tp
hide popup tipinv
hide popup une
*set console off
*set printer to
*set printer on
*store space(15) to categ
*do case
* case tp=1
* categ='Carte'
* case tp=2
* categ='Limbi straine'
* case tp=3
* categ='Enciclopedii'
* case tp=4
* categ='Albume arta'
* case tp=5
* categ='Dictionare'
* case tp=6
* categ='Critica'
* case tp=7
* categ='Fond fix'
*endcase
*? ' Categoria: '+categ
*store space(20) to tit
*store space(20) to oldtit
*store space(30) to oldnum
*select 3
*index on nr_inv to exemp
*set order to exemp
*go top
*suntcarti=.f.
*do while eof()=.f.
* inv=nr_inv
* cc=cod_carte
* select 2
* go top
* locate for cod_carte=cc .and. tip=tp
* if eof()=.f.
* tit=titlu
* ca=cod_autor
* select 1
* go top
* locate for cod_autor=ca
* if tit=oldtit .and. nume_autor=oldnum
? 'Numar inventar: '+str(inv)
* else
?
? 'Nume autor: '+rtrim(nume_autor)+' Titlu: '+rtrim(tit)
? 'Numar inventar: '+str(inv)
* oldtit=tit
* oldnum=nume_autor
* suntcarti=.t.
* endif
* endif
* select 3
* skip
*enddo
*if suntcarti=.f.
*? 'Nu exista carti din aceasta categorie !'
*endif
*set console on
*set printer to
*set printer off
!del exemp.idx
show popup une
set cursor on
return
procedure tipall
hide popup tipinv
hide popup une
*set console off
*set printer to
*set printer on
Tiparirea inventarului:'
*store space(20) to tit
*store space(20) to oldtit
*store space(30) to oldnum
*select 3
*index on nr_inv to exemp
*set order to exemp
*go top
*do while eof()=.f.
* inv=nr_inv
* cc=cod_carte
* select 2
* go top
* locate for cod_carte=cc
* if eof()=.f.
* tit=titlu
* ca=cod_autor
* select 1
* go top
* locate for cod_autor=ca
* if tit=oldtit .and. nume_autor=oldnum
? 'Numar inventar: '+str(inv)
* else
?
? 'Nume autor: '+rtrim(nume_autor)+' Titlu: '+rtrim(tit)
? 'Numar inventar: '+str(inv)
* oldtit=tit
* oldnum=nume_autor
* endif
* endif
* select 3
* skip
*enddo
*? 'Valoarea totala a inventarului este de ',valoare_totala,' lei.'
*set console on
*set printer to
*set printer off
!
show popup une
set cursor on
return
procedure situatie
hide popup une
select
go top
locate for nr_fisa>0
if eof
wait 'Nu exista carti imprumutate !' window
return
endif
i=1
do while eof()=.f.
store space to num
cc=cod_carte
cd=nr_fisa
dat1=data_impr
dat2=data_rest
select
locate for nr_fisa=cd
num=nume
select
locate for cod_carte=cc
do while eof()=.f.
store space to tit
tit=titlu
c=cod_autor
select
locate for cod_autor=c
if date()>dat2
set color to r+/b
endif
alltrim(num)+' '+alltrim(nume_autor)+' - '+alltrim(tit)+' : '+dtoc(dat1)+' - '+dtoc(dat2)
set color set to
select
continue
i=i+1
if i=24
i=1
read
endif
enddo
select
continue
enddo
read
clear
return
procedure datepers
hide popup une
define window nume from to title 'Date personale' float shadow double
activate window nume
store space to num
say 'Numele persoanei:' get num
read
deactivate window nume
if lastkey()=27)=.f.
select
go top
locate for upper(nume)=upper(num)
if eof
wait 'Numele nu este gasit !' window
else
? 'Numar fisa: '+str(nr_fisa,5)
? 'Nume: '+nume
? 'Clasa: '+clasa
? 'Nascut la: '+dtoc(nascut_la)
? 'Nascut in: '+nascut_in
? 'Domiciliu: ' +domiciliu
? 'Telefon: '+telefon
read
clear
endif
endif
release window nume
return
procedure nrfisa
hide popup une
define window nume from to title 'Afisare fisa' float shadow double
activate window nume
cd
say 'Numarul fisei:' get cd
read
deactivate window nume
if lastkey()=27)=.f.
select
go top
locate for nr_fisa=cd
if eof
wait 'Fisa nu este gasita !' window
else
? 'Numar fisa: '+str(nr_fisa,5)
? 'Nume: '+nume
? 'Clasa: '+clasa
? 'Nascut la: '+dtoc(nascut_la)
? 'Nascut in: '+nascut_in
? 'Domiciliu: ' +domiciliu
? 'Telefon: '+telefon
read
clear
endif
endif
release window nume
return
procedure afisinv
clear
hide popup une
close all
delete file bibl.dbf
do bibl.qpr
use bibl
defi wind b from to double
acti wind b
browse noappend nomodi color b+/r+
deac wind b
clear
if lastkey
return
endif
return
procedure valinv
hide popup une
clear
say 'Valoarea inventarului Œn lei este de : '+ltrim str(valoare_totala))
read
clear
return
procedure endprogram
endprog=.t.
clear
deactivate menu meniu
return
procedure aju
hide menu all
defi wind f from to title 'GALEANU ALINA' double shadow color r/n
acti wind f
say '-Acest program a fost realizat pentru a facilita munca '
say 'celor care lucreaza intr-o biblioteca'
say
say '-selectati obtiunea Iesire in MS-Dos din Iesire pentru '
say 'iesirea in Norton Commander'
say '-apasati ESC pentru intoarcerea la meniul initial'
wait
deac wind f
BIBLIOGRAFIE
Initiere in FoxPro, colectia "Initiere in calculatoare" ed. Arves
Informatica varianta Visual FoxPro Mariana Pantiru, Ionut Pantiru
|