Aceasta lucrare are drept scop evidenta usoara si rapida a unei agende personale. Lucrarea este conceputa în sistemul de gestiune a bazelor de date Foxpro7.0 , sistem ce permite lucru cu baze de date de dimensiuni mari , precum si realizarea unei interfete utilizator elegante si usor de manevrat.
Meniul principal al aplicatiei are 4 optiuni si anume:
- Modificare
- Cautare
- Listare
- Terminare
a) Optiunea MODIFICARE permite introducerea si modificarea da 24224c219y telor cunostintelor. Pentru o evidenta cât mai riguroasa s-au preluat de la tastatura câmpurile despre Nume, Prenume, Tara, Judet, Localitatea, Strada.
Procedura de adaugare permite introducerea unei noi cunostinte în agenda.
go 1
do afis
procedure afis
clear
if recn()<=recc()
numar=recn()
num=nume
pren=prenume
textul="Articolul selectat : "+str(numar)+' '+num+' '+pren
else
textul="Sfarsitul bazei de date !"
endif
@ 0,50 say textul
?
?
?
?
?
endprocprocedure modif1
Procedura permite introducerea de noi date despre cunostinte la agenda. Datele se vor memora în niste variabile (n1..n9) prin intermediul unei machete de ecran, ce se realizeaza prin instructiunea accept, respectiv input. Datele se vor introduce în tabela prin comanda replace. Se va afisa un mesaj de confirmare prin instructiunea wait
Procedura de modif3 permite modificarea unei cunostinte in agenda.
Aceasta procedura va actiona asupra înregistrarilor selectate, având posibilitatea de-a modifica sau nu anumite câmpuri din agenda, mai departe se va trece la urmatoarea înregistrare pâna când se va ajunge la sfârsitul bazei de date. procedure modif3
* modif date
do afis
? 'Daca datele se pastreaza tastati <Enter> cand sunteti intrebat de modificare !'
? 'La campuri numerice pt ale pastra informatiile tastati 0 (tel,nr,ap)'
accept 'Noul nume : ' to n1
if n1<>''
replace nume with n1
endif
accept 'Noul prenume : ' to n2
if n2<>''
replace prenume with n2
endif
input 'Noul tel : ' to n3
if n3<>0
replace tel with n3
endif
accept 'Noua tara : ' to n4
if n4<>''
replace tara with n4
endif
accept 'Noul judet : ' to n5
if n5<>''
replace judet with n5
endif
accept 'Noua localitate : ' to n6
if n6<>''
replace localitate with n6
endif
accept 'Noua strada : ' to n7
if n7<>''
replace strada with n7
endif
input 'Noul nr : ' to n8
if n8<>0
replace nr with n8
endif
accept 'Noul bloc : ' to n9
if n9<>''
replace bloc with n9
endif
input 'Noul ap : ' to n10
if n10<>0
replace ap with n10
endif
accept 'Noul E-mail : ' to n11
if n11<>''
replace email with n11
endif
wait "S-a modificat inregistrarea"
endproc
procedure modif4
* sterge
do afis
disp
?
wait "Esti sigur ca vrei sa stergi inregistrarea (y/n) ?" to ras
if upper(ras)='Y'
delete
pack
? "Inregistrarea s-a sters"
else
? "Inregistrarea nu s-a sters"
endif
wait
do afis
endproc
Procedura modif4 va sterge înregistrarea selectata. Exista o posibilitate de alegere a stergerii, în eventualitatea actionarii accidentale.
Înregistrarea se marcheaza pentru stergere cu comanda delete si cu pack se va sterge din tabela.
b)Optiunea Cautare permite cautarea si regasirea rapida a datelor dupa mai multe criterii de cautare, cum ar fi Nume, Prenume, Tara ,Judet,Localitatea si Strada. Aceste criterii corespund celor 4 suboptiuni ale optiunii Cautare. De mentionat ca procedura de cautare este în asa fel realizata încât la introducerea pentru cautare spre exemplu a literei a(A) sunt afisate toate cunostintele ce încep cu litera respectiva.
procedure caut_nume
do afis
*caut dupa nume
accept "Dati numele cautat : " to x
locate all for upper(nume) = upper(x)
if recn()<=recc()
? 'S-a gasit prima inregistrare'
do afis
wait 'Continuam cautarea (y/n) ?' to ras
do while (upper(ras)='Y')
continue
do afis
wait 'Continuam cautarea (y/n) ?' to ras
enddo
else
? 'Nu am gasit o astfel de inregistrare'
endif
do afis
endproc
procedure caut_prenume
do afis
*caut dupa prenume
accept "Dati prenumele : " to x
locate all for upper(prenume) = upper(x)
if recn()<=recc()
? 'S-a gasit prima inregistrare'
do afis
wait 'Continuam cautarea (y/n) ?' to ras
do while (upper(ras)='Y')
continue
do afis
wait 'Continuam cautarea (y/n) ?' to ras
enddo
else
? 'Nu am gasit o astfel de inregistrare'
endif
do afis
endproc
procedure caut_localitate
do afis
*caut dupa localitate
accept "Dati localitatea : " to x
locate all for upper(localitate) = upper(x)
if recn()<=recc()
? 'S-a gasit prima inregistrare'
do afis
wait 'Continuam cautarea (y/n) ?' to ras
do while (upper(ras)='Y')
continue
do afis
wait 'Continuam cautarea (y/n) ?' to ras
enddo
else
? 'Nu am gasit o astfel de inregistrare'
endif
do afis
endproc
procedure caut_mail
do afis
*caut dupa mail
accept "Dati adresa de E-mail : " to x
locate all for upper(email) = upper(x)
if recn()<=recc()
? 'S-a gasit prima inregistrare'
do afis
wait 'Continuam cautarea (y/n) ?' to ras
do while (upper(ras)='Y')
continue
do afis
wait 'Continuam cautarea (y/n) ?' to ras
enddo
else
? 'Nu am gasit o astfel de inregistrare'
endif
do afis
endproc
c)Optiunea Listare
În proiectul meu listarea am facut-o în trei moduri :
- listarea tuturor cunostintelor pe ecranul FOX PRO-ului ;
- listarea cunostintei selectate pe ecranul FOX PRO-ului, selectie ce se poate face din meniul MODIFICARE optiune selectare;
- listare în tabela, care afiseaza toate cunostintele într-o tabela.
1. Listarea cunostintelor pe ecranul FOX PRO-ului. Instructiunea care asigura aceasta operatie este display all.
procedure list1
disp all
wait 'Apasati o tasta !'
do afis
endproc
2.Listarea cunostintelor selectate pe ecranul FOX PRO-ului, se face prin comanda display.
procedure list2
disp
wait 'Apasati o tasta !'
do afis
endproc
3.Listare în tabela. Se face prin browse iar optiunile de dupa comanda sunt puse pentru a nu a avea drept de editare, stergere si adaugare de date în tabela.
procedure list3
brow noedit nodelete noappend
wait 'Apasati o tasta !'
do afis
endproc
d)Optiunea Terminare se foloseste pentru parasirea unei sesiuni de lucru a aplicatiei si are 2 suboptiuni: <Foxpro si SO> adica permite reîntoarcerea
dupa caz în sistemul Foxpro sau în sistemul de operare Windows.
Iesirea în fox se face prin cancel, iar parasirea programului prin quit.
Lista principalelor functii si proceduri utilizate este:
DEFINE WINDOW - definirea unei ferestre
DEFINE POPUP - definirea unui meniu vertical
DEFINE MENU - definirea unui meniu orizontal
ACTIVATE POPUP - activarea unui meniu vertical
ACTIVATE MENU - activarea unui meniu orizontal
RELEASE MENU - eliminarea din memorie a unui meniu orizontal
RELEASE POPUP - eliminarea din memorie a unui meniu vertical
USE "NUME" - deschide o baza de date
USE - închide o baza de date
CLOSE ALL - închide toate bazele de date
BROWSE - deschide o baza de date pentru adaugare si/sau modificare
REPLACE "CAMP" WITH "EXPRESIE" - calculeaza un câmp într-o baza de date
DO WHILE
- ciclu repetitiv cu test initial
ENDDO
SCAN
- parcurge baza de date si executa instructiunile
la fiecare înregistrare
ENDSCAN
IF
ELSE - instructiune de decizie simpla
ENDIF
DO CASE variabila
CASE O1
INSTR1 - instructiune de decizie multipla
CASE O2
INSTR2
ENDCASE
PROCEDURE
INSTRUCTIUNI - procedura (subprogram)
RETURN
FUNCTION
INSTRUCTIUNI - functie (subprogram)
RETURN
ON KEY LABEL - executa o anumita actiune la apasarea unei
anumite taste.
ON SELECTION PAD - executa o anumita actiune la apasarea unei
optiuni dintr-un meniu orizontal
ON SELECTION BAR - executa o anumita actiune la apasarea unei
optiuni dintr-un meniu vertical
SET TALK - da/nu afiseaza mesajele Foxpro
SET SAFETY - da/nu face confirmare la suprascriere
SET CURSOR - da/nu afiseaza cursorul
SET EXACT - da/nu compara exact 2 siruri de caractere
Aceasta agenda foloseste la dispozitive portabile precum laptopuri, pagere, si altele pentru gasirea adreselor tuturor cunostintelor printr-o metoda mult mai usoara.
|