Program Pentru Evidenta Scolara
CUPRINS
Introducere ––––––––––––––––––– 1
Capitolul I: NOȚIUNI GENERALE –––––– 3
1.1 Crearea și funcționarea obiectelor de control –––- 3
1.1.1 Comutatoare ––––––––––– 3
1.1.2 Lista ––––––––––––––––- 3
1.1.3 Lista ascunsă ––––––––––– 4
1.1.4 Declanșatoare ––––––––––– 4
1.1.5 Butoane radio ––––––––––– 5
1.1.6 Regiuni de editare text ––––––––- 5
1.2 Crearea și funcționarea meniurilor ––––––––- 6
1.2.1 Comenzi pentru lucrul cu meniuri –––- 6
Capitolul II: DESCRIEREA PROGRAMULUI –––- 8
2.1 Generalități ––––––––––––––––- 8
2.2 Bazele de date ––––––––––––––––- 8
2.3 Programul ––––––––––––––––- 11
2.4 Codul sursă ––––––––––––––––- 19
Bibliografie ––––––––––––––––––– 41
Cuprins ––––––––––––––––––– 42
=== l ===
INTRODUCERE
Dinamismul si complexitatea societatii moderne antreneaza o crestere continua a volumului si diversitatii informatiilor facand vitala disponibilitatea
si utilizarea pe scara larga a tehnologiilor informatiei. Majoritatea aplicatiilor manipuleaza volume importante de date care trebuiesc culese exact in momentul generarii lor, transportate, prelucrate, pastrate in conditi de maxima eficacitate.
Tehnologia bazelor de date se asimileaza relative usor si este de mare x spectaculozitate prin flexibilitatea proectarii rapide, vizuale a aproape tuturor obiectelor cu care vrem sa lucram intr-o aplicatie .
Complexitatea unui SGBD rezida in dimensiunea sa, reflectata nu numai in multitudinea instructiunilor sale dar si in multimea componentelor, fiind prin complexitate cel putin la nivelul unui sistem de operare (SO).
SGBD lucreaza ca subsistem sub controlul sistemului de operare al calculatorului care constituie suportul hard al bazei de date.
In aceasta calitate, SGBD foloseste selective o serie de functii oferite de SO. Astfel, calitatea SO se repercuteaza corespunzator asupra SGBD. SGBD contine in principal monitor, compilatoare, monitor de inlantuire, programe utilitare.
Monitorul cuprinde module specializate pentru gestionarea bazei de date, a zonelor de memorie interna, a retelei de teletransmisie si mesajelor terminale, fisiere externe, cat si pentru manipularea datelor, proceselor si procesoarelor, asigurarea confidentialitatii, comunicarea cu operatorul SO, coordinator de aplicatie, activarea proceselor distribuitor, etc.
Compilatoarele folosite sunt cele associate limbajelor de descriere si manipulare. Monitorul de inlantuire asigura succesiunea fazelor distincte de prelucrare.
Programele utilitare sunt diverse: editor de texte, generator de rapoarte, module de securitate, reorganizarea fizica, urmarirea performantelor BD prin statistici, etc. O sesiune a unui SGBD decurge in principiu astfel:
Calculatorul functioneaza sub controlul sistemului de operare SO
Un utilizator face apel la SGBD x in sensul ca emite catre SO comanda de lansare in executie a produsului SGBD x
SO analizeaza comanda utilizator si incarca de pe disc monitorul SGBD. Din acest moment intreaga activitate este controlata de programul monitor care va active componentele specifice fiecarei cereri utilizator
Iesirea din programul monitor permite preluarea controlului de catre SO.
CAPITOLUL I
NOȚIUNI GENERALE
Crearea și funcționarea obiectelor de control
S-a constatat că este mult mai ușor și mai plăcut pentru operator să aleagă una
din valorile prezentate pe un ecran, pentru a completa variabila get, decât să se introducă acea valoare caracter cu caracter, în plus, posibilitățile de eroare sunt mult mai mici. Fox prezintă proiectanților de aplicații diferite obiecte de control cum ar fi: comutatoare, liste de valori, liste ascunse, declanșatoare, butoane radio. Obiectele de control se descriu prin comanda GET unde clauzele de format FUNCTION și PICTURE vor conține codul de control corespunzător.
COMUTATOARE
Comutatoarele permit selectarea între două valori posibile (adevărat sau
fals). Apar pe ecran sub forma a două paranteze pătrate cu text explicativ. Comutatoarele se descriu prin codul de control C al clauzei FUNCTION sau prin @*C în clauza PICTURE. Textul explicativ al comutatorului poate fi trecut chiar în clauza unde apare codul de control, separat de un spațiu.
@<r,c>GET<var>FUNCTION ‘*C <text explicativ>’
@<r,c>GET<var>PICTURE ‘@*C <text explicativ>’
@<r,c>GET<var>FUNCTION ‘*C’ PICTURE ‘<text explicativ>’
Memorarea alegerii făcute de utilizator se face în variabila var care trebuie să fie de tip numeric sau logic. Pentru var de tip numeric, valoarea zero semnifică comutator neselectat. Pentru var de tip logic, valoarea .F. semnifică comutator neselectat.
LISTA
Se afișează o listă pe ecran din care utilizatorul poate selecta o valoare prin
apăsarea tastei ENTER. Lista se afișează vertical, total sau parțial și dacă nu încape pe ecran, apare o bară de defilare. Lista este preluată dintr-un vector, din prima coloană a unei matrici sau dintr-un submeniu (meniu de tip popup).
Listele se descriu prin clauzele FUNCTION sau PICTURE în care apare drept cod de control & in FUNCTION sau @& in PICTURE.
@<l,c>GET<var-get>FROM <tablou>[RANGE<n1>[,<n2>]/POPUP<submeniu> FUNCTION’&’/PICTURE’@&’
Dacă este prezentă clauza RANGE, lista este afișată doar cu o parte din elementele vectorului: cele cuprinse între limitele indicate în clauză.
LISTA ASCUNSĂ
Acest element, foarte folosit în FoxPro, este asemănător listei simple, dar,
dacă la lista simplă apare pe ecran lista întreagă, în cazul acesta apare un dreptunghi în care este trecut elementul curent din listă, restul fiind ascuns. Selectarea se face tot cu tasta ENTER pe dreptunghiul listei. În acest moment apare lista și se poate alege un element al listei cu enter. Funcția care realizează acest obiect este ^ in clauza FUNCTION sau &^ in clauza PICTURE.
@<r,c>GET<var-get>FUNCTION’^’PICTURE’<elem1>[;<elem2>]…’
@<r,c>GET<var-get>FUNCTION’^<elem1>[;<elem2>]…’
@<r,c>GET<var-get>FUNCTION’<elem1>[;<elem2>]…’PICTURE ‘@^’
@<r,c>GET<var-get>PICTURE’@^<elem1>[;<elem2>]…’
Elementele listei ascunse pot fi enumerate în continuarea codului prin separarea de acesta cu un spațiu.
DECLANȘATOARE
Declanșatorul este un obiect de control prin care se determină pornirea
imediată a unei acțiuni. Apare pe ecran cu textul explicativ între paranteze unghiulare. De exemplu: <sfarsit> <continua>.
Selectarea unui declansator determina o actiune, si se vizualizeaza prin schimbarea culorilor folosite pentru acel obiect. Functia care defineste declansatorul este * in FUNCTION, sau @* in PICTURE.
@<r,c>GET<var-get>FUNCTION’*<text1>[;<text2>]…’/ PICTURE’@*<text1>;…’
Printr-o comandă pot fi definite mai multe declanșatoare, primul fiind poziționat la punctul de coordonate r, c iar celelalte în continuare.
Memorarea opțiunii utilizatorului se face în variabila-get care poate fi numerică(întoarce numărul de ordine al declanșatorului selectat) sau de tip caracter (întoarce numele declanșatorului așa cum a fost el definit ca nume).
BUTOANE RADIO
Un alt obiect util și care face dialogul cu operatorul foarte prezentabil, este
butonul radio. Este important de reținut că selectarea unei opțiuni determină deselectarea automată a tuturor celorlalte opțiuni; deci, la un moment dat poate fi selectat un singur obiect. Butoanele apar pe ecran prin paranteze rotunde alăturate textului opțiunii. Pentru opțiunea selectată apare un punct între paranteze rotunde. Funcția care realizează acest obiect este R în FUNCTION sau @R in PICTURE. Textele explicative pot fi puse în continuarea codului de funcție, separate de un spațiu față de cod și separate între ele prin punct și virgulă.
@<r,c>GET<var-get>FUNCTION’*R<text1>[;<text2>]…’/
PICTURE’@*R<text1>;…’
REGIUNI DE EDITARE TEXT
Sintaxa este următoarea:
@<r,c>GET<memvar>/<field>
[FUNCTION<expC1>]
[PICTURE<expC2>]
[FONT<expC3>[,<expN1>]]
[STYLE<expC4>]
[DEFAULT<expr1>]
[ENABLE/DISABLE]
[MESSAGE<expC5>]
[[OPEN]WINDOW<window name>]
[RANGE[<expr2>][,<expr3>]]
[SIZE<expN2>,<expN3>]
[VALID<expL1>/<expN4>[ERROR<expC6>]]
[WHEN<expL2>]
[COLOR SCHEME<expN5>/COLOR<color pair list>]
Open Window este inclus pentru a realiza compatibilitatea cu versiunile mai vechi ale limbajului. Se poate folosi @<r,c>EDIT<memvar>/<field>. Comanda @EDIT permite modificarea unui sir de caractere intr-o zona dreptunghiulara de editare.
Crearea și funcționarea meniurilor
COMENZI PENTRU LUCRUL CU MENIURI
Asigurarea unei interfețe prietenoase cu utilizatorii unei aplicații dezvoltate
sub mediul oricărui sistem de gestiune a bazelor de date, este o preocupare constantă a programatorilor. Utilizarea de ferestre sau meniuri ușurează prezentarea diferitelor acțiuni ale programului și conferă un aspect atractiv aplicației.
Prin meniu înțelegem un element de interfață prin care se oferă utilizatorului posibilitatea selectării unei anumite opțiuni, dintr-o mulțime finită, afișată pe ecran, total sau parțial, urmând ca, în funcție de selectarea făcută, să se declanșeze anumite acțiuni.
Meniurile sunt de două tipuri: meniuri “menu”(bară) – folșosite de obicei ca meniuri principale ale aplicației, cu lista de opțiuni fără încadrare în chenar – și meniuri “popup”(verticale) – cu lista de opțiuni încadrată standard într-o bandă invers-video, folosite de obicei ca submeniuri.
Meniuri tip bară:
Definirea barei-meniu cu atzribuirea unui nume se face prin comanda:
DEFINE MENU <meniu>[MESSAGE<mesaj>]
Comanda permite și afișarea unui mesaj pe ultima linie a ecranului.
Definirea opțiunilor dintr-un meniu se face prin comanda:
DEFINE PAD<optiune>OF<meniu>PROMPT<sir>[AT<r,c>] [MESSAGE<mesaj>]
Precizarea acțiunii de executat la selectarea unei opțiuni:
ON SELECTION PAD<optiune>OF<meniu><comanda>
Activarea unui meniu bara:
ACTIVATE MENU<meniu>[PAD<optiune>]
Dezactivarea unui meniu:
DEACTIVATE MENU
Stergerea meniurilor din memorie se face cu comanda:
DEACTIVATE MENU<lista-meniuri>
Meniuri de tip popup:
Meniurile de tip popup prezintă mai multe opțiuni sub formă de listă verticală încadrată printr-o bandă invers-video.
Definirea meniului popup se face astfel:
DEFINE POPUP <submeniu> FROM<r1,c1> [TO<r2,c2>] [PROMPT STRUCTURE/FIELD<camp>/FILES[LIKE<masca>]][MESSAGE<mesaj>]
Comanda definește numele, poziția unui meniu popup precum și tipul opțiunilor acestui meniu. Opțiunile dintr-un meniu popup pot fi:
O listă de cerințe definite de utilizator
O listă de câmpuri din structura bazei active de date(Prompt structure)
O listă de valori ale unui câmp din baza activă de date, valori ale articolelor filtrate sau nu (Prompt Field)
O listă de fișiere care verifică o mască(Prompt Files Like)
Dacă meniul va conține o listă de opțiuni utilizator, acestea vor fi definite în continuare prin comenzile DEFINE BAR.
Definirea opțiunilor utilizator într-un meniu popup sunt:
DEFINE BAR<nr-linie>OF<submeniu>PROMPT<sir1>[MESSAGE<mesaj>] [SKIP[FOR<cond>]]
Comanda stabilește opțiunea de pe linia cu număr nr-linie, definind textul opțiunii. Dacă se folosește SKIP, atunci se afișează sir1, dar nu se permite selecția opțiunii. Dacă se folosește SKIP FOR atunci se afișează sir1, dar se va permite selecția numai dacă este îndeplinită condiția cond.
Stabilirea acțiunii de executat la selecția meniului se face prin comanda:
ON SELECTION POPUP<submeniu>/ALL<comanda>
Exista o singura comanda pentru un submeniu popup, spre deosebire de meniuri bara unde se precizeaza actiunea pentru fiecare optiune in parte.
Activarea meniului popup si afisarea lui pe ecran se poate face prin comanda:
ACTIVATE POPUP<submeniu>
Activarea submeniului direact dintr-o optiune a meniului apelant se face prin:
ON PAD<optiune>OF<meniu>ACTIVATE POPUP<submeniu>
Stergerea de pe ecran a meniului popup:
DEACTIVATE POPUP
Stergerea din memorie a submeniurilor:
RELEASE POPUP<lista-submeniuri>
CAPITOLUL II
DESCRIEREA PROGRAMULUI
2.1 Generalități
Programul IMOBIL, program care este descris în cele ce urmează, din punct de vedere structural, conține programul principal și următoarele 14 proceduri:
Pr1
Pr2
Pr3
Pr4
Pr5
Pr6
Pr7
Pr8
Pr9
Pr10
Pr11
Pr12
Final1
Final2
Aplicația gestionează datele stocate în două baze de date, și anume:
Cumpărat.dbf
Vândut.dbf
2.2 Bazele de date
Programul Imobil oferă posibilitatea consultării și prelucrării datelor privitoare la casele, apartamentele, terenurile intravilane și terenurile agricole cumpărate și vândute de către firma imobiliară.
Prelucrarea acestor date oferă informațiile necesare personalului care lucrează în cadrul companiei la care este implementată această aplicație.
Datele respective sunt stocate în două tabele, CUMPĂRAT.DBF și VÂNDUT.DBF.
Structura bazei de date: CUMPARAT.DBF
Structura bazei de date: VANDUT.DBF
2.3 Programul
Programul prezentat în această lucrare conține în jur de 1.100 de linii de program.
Execuția unui program din interiorul altui program, folosind comanda DO, reprezintă un pas important în structurarea aplicațiilor de dimensiuni mai mari. Pe măsură ce crește dimensiunea unei aplicații, testarea și depanarea acesteia devine din ce în ce mai dificilă, datorită numărului mare de variabile folosite, datorită numărului mare de instrucțiuni și a legăturilor dintre acestea. O rezolvare la această problemă poate fi gruparea unor instrucțiuni în module separate, aceste module fiind independente între ele. Comunicarea lor cu celelalte module se face prin intermediul unor parametrii, variabile de comunicare, care realizează interfața modulului cu exteriorul.
Module de acest tip pot fi create chiar în interiorul fișierului ce conține programul, formând așa numitele “proceduri și funcții definite de utilizator”.
Astfel, aplicația prezentată conține programul principal și un număr de 14 proceduri, toate create în interiorul unui fișier sursă numit imobil.prg.
Programul principal crează prin instrucțiuni specifice meniul IMOBIL, iar prin selectarea opțiunilor din submeniurile acestuia se apelează procedurile specificate.
PROGRAMUL PRINCIPAL
În programul principal are loc inițializarea variabilei “exit” cu valoarea “false”,
apoi se deschid bazele de date “cumparat.dbf” în zona 1 de lucru și “vandut.dbf” în zona 2 de lucru.
Tot în programul principal se definește meniul IMOBIL cu opțiunile bară:
Vanzari
Cumparari
Rapoarte
Iesire
În continuare se vor defini următoarele submeniuri, cu opțiunile specificate:
Pop1 Case
Apartamente
Terenuri
Modi / Sterge
Pop2 Case
Apartamente
Terenuri
Modi / Sterge
Pop3 Cumparari
Vanzari
Pop4 Intravilane
Agricole
Pop5 Intravilane
Agricole
Pop6 FoxPro
Sistemul de operare
Se va intra apoi într-o buclă “do while” care va executa o secvență de activare a meniului și a elementelor acestuia (pad-uri, popup-uri) atâta timp cât expresia “not exit” este “true”.
PROCEDURA PR1
Procedura Pr1 este apelată de către programul principal și corespunde opțiunilor
de meniu Vanzari Case.
Se va selecta prin program zona de lucru 1, zonă în care este deschisă baza de date cumparat.dbf, apoi se vor inițializa o serie de variabile.
În continuare se va crea un masiv prin instrucțiunea DIMENSION, masiv ce va avea ca elemente șiruri de caractere formate prin concatenarea unor subșiruri obținute din câmpuri ale bazei de date, câmpuri ce corespund înregistrărilor referitoare doar la case (nu și cele ce se referă la apartamente, terenuri intravilane sau terenuri agricole). Selecția înregistrărilor se face prin instrucțiunea SCAN FOR casa=.T.
Elementele masivului mat1 se formează astfel:
Mat1(x) = (str(nr_camere) + ’ ‘ + adresa + ’ ‘ + str(pret_cump + (pret_cump*5) / 100 + ’ ‘)
Pret_cump + (pret_cump*5)/100 reprezintă prețul de vânzare al imobilului, calculat din prețul cu care acesta a fost cumpărat de către firmă la care este adăugat un procent de 5 la sută, care reprezintă beneficiul firmei.
Pe ecran va fi afișată o listă din care utilizatorul, un angajat al firmei, va alege imobilul solicitat de către client. Apoi, prin intermediul unor obiecte de control, va introduce în baza de date vandut.dbf date referitoare la client: nume, prenume, buletin de identitate, adresa, numărul de telefon.
PROCEDURA PR2
Această procedură oferă posibilitatea procesării datelor necesare vânzării unui
apartament către un anumit client.
Procedura Pr2 este apelată atunci când utilizatorul selectează din meniul principal opțiunile Vanzari Apartamente.
Această procedură determină apariția acelorași evenimente ca și procedura pr1, cu diferența că elementele masivului mat1 se vor forma din câmpuri corespunzătoare doar înregistrărilor ce se referă la apartamente, adică înregistrări pentru care condiția apartament=.T. este adevărată. Această condiție se testează tot prin intermediul unei instrucțiuni SCAN.
PROCEDURA PR3
Este apelată atunci când operatorul alege Cumparari Case.
Procedura Pr3 crează mai multe obiecte de control prin intermediul cărora, în
final, se vor introduce în baza de date cumparat.dbf informații referitoare la imobilele cumparate de către firmă, imobile cumpărate cu scopul de a fi revândute apoi cu un preț mai mare.
Prin intermediul obiectelor de control disponibile aici se vor introduce de la tastatură:
Date referitoare la imobil:
Adresa imobilului
Număr de camere
Prețul la care a fost cumpărat
Date referitoare la proprietar:
Nume
Prenume
Buletin de identitate
Număr de telefon
În partea de jos a ecranului vor fi apoi afișate două declanșatoare:
Cumpără
Ieșire
Odată cu selectarea primului dintre acestea, la baza de date cumparat.dbf va fi
adăugată o nouă înregistrare, în care vor fi depuse informațiile introduse de către utilizator.
Selectarea celui de-al doilea declanșator are ca urmare curățarea ecranului și activarea meniului principal.
PROCEDURA PR4
Alegerea opțiunilor Cumparari Apartamente duca la apelul procedurii pr4, unde, prin intermediul obiectelor de control create și afișate pe ecran, utilizatorul va introduce în tabela cumparat.dbf datele referitoare la apartamentele cumpărate de către firmă.
Vor fi introduse în câmpurile de editare corespunzătoare adresa apartamentului, numărul de camere pe care acesta le conține, prețul la care a fost achiziționat, numele, prenumele, seria și numărul buletinului de identitate al fostului proprietar, cât și numărul acestuia de telefon.
Apoi această procedură crează și afișează declanșatoarele “Cumpără” și “Ieșire”, declanșatoare care au funcții identice cu cele create în procedura pr3.
PROCEDURA PR5
Corespunde opțiunilor de meniu Rapoarte Cumparari.
Procedura selectează zona 1 de lucru, zonă în care este deschisă baza de date cumparat.dbf . În această procedură se listează imobilele / terenurile care au fost cumpărate de firmă într-o perioadă dată de timp.
Utilizatorul își poate defini intervalul de timp pentru care se va face listarea, introducând data minimă și data maximă. Apoi poate selecta destinația afișării (pe ecran sau la imprimantă), folosind butoane radio. În final se poate alege tipul de imobil(casă sau apartament) sau teren(intravilan sau agricol) tot prin intermediul unor butoane radio.
După ce s-a realizat selecția, se sortează baza de date cumparat.dbf după câmpurile data_c, nume_v și pren_v, obținându-se astfel fișierul sortat cump.dbf, care se deschide în zona 3 de lucru, apoi se lansează în execuție raportul rep1.frx, prin comanda REPORT FORM rep1.frx. Acest raport conține toate informațiile necesare despre imobilele / terenurile care au fost cumpărate de firmă în perioda: data minimă – data maximă, precum și suma plătită de firmă pentru achiziționarea lor. La închiderea raportului fișierul cump.dbf este șters din memorie.
PROCEDURA PR6
Corespunde opțiunilor de meniu Rapoarte Vanzari.
Procedura selectează zona 2 de lucru, zonă în care este deschisă baza de date vandut.dbf . În această procedură se listează imobilele / terenurile care au fost vândute de firmă într-o perioadă dată de timp.
Utilizatorul își poate defini intervalul de timp pentru care se va face listarea, introducând data minimă și data maximă. Apoi poate selecta destinația afișării (pe ecran sau la imprimantă), folosind butoane radio. În final se poate alege tipul de imobil(casă sau apartament) sau teren(intravilan sau agricol) tot prin intermediul unor butoane radio.
După ce s-a realizat selecția, se sortează baza de date vandut.dbf după câmpurile data_v, nume_c și pren_c, obținându-se astfel fișierul sortat vand.dbf, care se deschide în zona 3 de lucru, apoi se lansează în execuție raportul rep2.frx, prin comanda REPORT FORM rep2.frx. Acest raport conține toate informațiile necesare despre imobilele / terenurile care au fost vândute de firmă în perioda: data minimă – data maximă, precum și beneficiul obținut de firmă în urma vânzărilor (diferența dintre prețul de vânzare și prețul de achiziție). La închiderea raportului fișierul vand.dbf este șters din memorie.
PROCEDURA PR7
Procedura Pr7 este apelată de către programul principal și corespunde opțiunilor de meniu Vanzari Terenuri Intravilane.
Se va selecta prin program zona de lucru 1, zonă în care este deschisă baza de date cumparat.dbf, apoi se vor inițializa o serie de variabile.
În continuare se va crea un masiv prin instrucțiunea DIMENSION. Acest masiv va avea ca elemente șiruri de caractere formate prin concatenarea unor subșiruri obținute din câmpuri ale bazei de date, câmpuri ce corespund înregistrărilor referitoare doar la terenuri intravilane. Selecția înregistrărilor se face prin instrucțiunea SCAN FOR intravilan=.T.
Elementele masivului mat1 se formează astfel:
Mat1 ( x ) = ( suprafata + ‘ ‘ + adresa + ‘ ‘ + str ( pret_cump + ( pret_cump*5 ) /100 + ‘ ‘)
Pret_cump + (pret_cump*5)/100 reprezintă prețul de vânzare al terenului intravilan ales, calculat din prețul cu care acesta a fost cumpărat de către firmă la care este adăugat un procent de 5 la sută, care reprezintă beneficiul firmei.
Pe ecran va fi afișată o listă din care utilizatorul, un angajat al firmei, va alege terenul intravilan solicitat de către client. În continuare, prin intermediul unor obiecte de control, se vor introduce în baza de date vandut.dbf date referitoare la client: nume, prenume, buletin de identitate, adresa, numărul de telefon.
PROCEDURA PR8
Această procedură este identică cu procedura Pr7, diferența constând în faptul că este apelată atunci când utilizatorul alege următoarea opțiune de meniu:
Vanzari Terenuri Agricole, iar elementele listei din care clienții vor avea posibilitatea de a alege un anumit teren agricol pentru a-l cumpăra, vor fi create din înregistrările tabelei cumparat.dbf pentru care agricol=.T. .
PROCEDURA PR9
Corespunde opțiunii de meniu Cumparari Terenuri Intravilane.
Procedura Pr9 crează mai multe obiecte de control prin intermediul cărora, în final, se vor introduce în baza de date cumparat.bdf informații referitoare la terenurile intravilane cumpărate de către firmă, terenuri cumpărate pentru a fi revândute apoi cu un preț mai mare.
Prin intermediul a mai multor obiecte de control disponibile utilizatorul va introduce de la tastatură următoarele informații:
Date referitoare la teren:
Adresa la care se află terenul
Suprafața terenului
Prețul la care a fost cumpărat
Date referitoare la proprietar:
Nume
Prenume
Buletin de identitate
Număr de telefon
În partea de jos a ecranului vor fi apoi afișate două declanșatoare:
Cumpara
Iesire
Odată cu selectarea primului dintre acestea, la baza de date cumparat.dbf va fi adăugată o nouă înregistrare, utilizându-se în acest scop comanda APPEND BLANK, înregistrare în care vor fi depuse informațiile introduse de către utilizator.
Selectarea celui de-al doilea declanșator are ca efect curățarea ecranului și activarea meniului principal, de unde operatorul va putea alege o altă opțiune sau va putea ieși din program.
PROCEDURA PR10
Alegerea opțiunilor Cumparari Terenuri Agricole duce la apelul procedurii Pr10, unde, prin intermediul obiectelor de control create și afișate pe ecran, utilizatorul va introduce în tabela cumparat.dbf informațiile referitoare la terenurile agricole cumpărate de către firmă.
Vor fi introduse în câmpurile de editare corespunzătoare locația terenului, suprafața acestuia exprimată în metri pătrați, prețul la care a fost achiziționat, numele, prenumele, seria și numărul buletinului de identitate al fostului proprietar, cât și numărul acestuia de telefon.
Apoi această procedură crează și afișează declanșatoarele Cumpara și Iesire , declanșatoare care au funcții identice cu cele create în procedura Pr9.
PROCEDURA PR11
În această procedură, utilizatorul are posibilitatea de a modifica sau a șterge anumite înregistrări din tabela vandut.dbf , adică să opereze asupra imobilelor sau terenurilor vândute de firmă.
La început se poate selecta prin intermediul unor butoane radio tipul acțiunii: modificări sau ștergeri.
Dacă s-a ales opțiunea de modificări, pe ecran apare un obiect de control de tip listă, unde sunt afișate adresele imobilelor / terenurilor vândute de firmă. După selectarea unei adrese, pe ecran vor apărea toate informațiile despre imobilul / terenul vândut de firmă, iar utilizatorul are posibilitatea, prin deplasarea de pe un câmp pe altul, să modifice unde este cazul. La sfârșit, înregistrarea din baza de date vandut.dbf va fi modificată, după selectarea declanșatorului OK.
Dacă s-a ales opțiunea de ștergeri, pe ecran apare din nou un obiect de control de tip listă, unde sunt afișate adresele imobilelor / terenurilor vândute de firmă. După selectarea unei adrese, utilizatorul are opțiunea de a decide ștergerea înregistrării, prin acționarea declanșatorului STERGE, sau renunțarea la ștergere, prin acționarea declanșatorului IESIRE.
PROCEDURA PR12
În această procedură, utilizatorul are posibilitatea de a modifica sau a șterge anumite înregistrări din tabela cumparat.dbf , adică să opereze asupra imobilelor sau terenurilor cumpărate de firmă.
La început se poate selecta prin intermediul unor butoane radio tipul acțiunii: modificări sau ștergeri.
Dacă s-a ales opțiunea de modificări, pe ecran apare un obiect de control de tip listă, unde sunt afișate adresele imobilelor / terenurilor cumpărate de firmă. După selectarea unei adrese, pe ecran vor apărea toate informațiile despre imobilul / terenul cumpărat de firmă, iar utilizatorul are posibilitatea, prin deplasarea de pe un câmp pe altul, să modifice unde este cazul. La sfârșit, înregistrarea din baza de date cumparat.dbf va fi modificată, după selectarea declanșatorului OK.
Dacă s-a ales opțiunea de ștergeri, pe ecran apare din nou un obiect de control de tip listă, unde sunt afișate adresele imobilelor / terenurilor cumpărate de firmă. După selectarea unei adrese, utilizatorul are opțiunea de a decide ștergerea înregistrării, prin acționarea declanșatorului STERGE, sau renunțarea la ștergere, prin acționarea declanșatorului IESIRE.
PROCEDURA FINAL1
Această procedură asigură ieșirea din program în mediul de programare FoxPro.
PROCEDURA FINAL2
Această procedură asigură ieșirea din program în sistemul de operare.
2.4 Codul sursă
*LUCRARE DE ATESTAT
*PROGRAM PENTRU AGENTII IMOBILIARE
CLEAR ALL
CLOSE ALL
SET TALK OFF
SET STATUS OFF
SET SYSMENU OFF
SET DATE TO DMY
SET CENTURY ON
SET ESCAPE OFF
SET BORDER TO DOUBLE
STORE .F. TO EXIT
USE cumparat IN 1
USE vandut IN 2
DEFINE MENU Imobil
DEFINE PAD pad1 OF Imobil PROMPT ' VANZARI ' COLOR SCHEME 3
DEFINE PAD pad2 OF Imobil PROMPT ' CUMPARARI ' AT 0, 11 COLOR SCHEME 3
DEFINE PAD pad3 OF Imobil PROMPT ' RAPOARTE ' AT 0, 24 COLOR SCHEME 3
DEFINE PAD pad4 OF Imobil ;
PROMPT ' IESIRE ' ;
AT 0, 36 COLOR SCHEME 3
DEFINE POPUP pop1 FROM 1, 0 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF pop1 PROMPT 'CASE'
DEFINE BAR 2 OF pop1 PROMPT 'APARTAMENTE'
DEFINE BAR 3 OF pop1 PROMPT 'TERENURI'
DEFINE BAR 4 OF pop1 PROMPT 'MODI/STERGE'
DEFINE POPUP pop2 FROM 1, 11 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF pop2 PROMPT 'CASE'
DEFINE BAR 2 OF pop2 PROMPT 'APARTAMENTE'
DEFINE BAR 3 OF pop2 PROMPT 'TERENURI'
DEFINE BAR 4 OF pop2 PROMPT 'MODI/STERGE'
DEFINE POPUP pop3 FROM 1, 24 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF pop3 PROMPT 'CUMPARARI'
DEFINE BAR 2 OF pop3 PROMPT 'VANZARI'
DEFINE POPUP pop4 FROM 4, 13 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF pop4 PROMPT 'INTRAVILANE'
DEFINE BAR 2 OF pop4 PROMPT 'AGRICOLE'
DEFINE POPUP pop5 FROM 4, 24 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF pop5 PROMPT 'INTRAVILANE'
DEFINE BAR 2 OF pop5 PROMPT 'AGRICOLE'
DEFINE POPUP pop6 FROM 1,36 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF pop6 PROMPT 'FOXPRO'
DEFINE BAR 2 OF pop6 PROMPT 'SISTEMUL DE OPERARE'
ON PAD pad1 OF Imobil ACTIVATE POPUP pop1
ON PAD pad2 OF Imobil ACTIVATE POPUP pop2
ON PAD pad3 OF Imobil ACTIVATE POPUP pop3
ON BAR 3 OF pop1 ACTIVATE POPUP pop4
ON BAR 3 OF pop2 ACTIVATE POPUP pop5
ON PAD pad4 OF Imobil ACTIVATE POPUP pop6
ON SELECTION BAR 1 OF pop1 DO pr1
ON SELECTION BAR 2 OF pop1 DO pr2
ON SELECTION BAR 1 OF pop2 DO pr3
ON SELECTION BAR 2 OF pop2 DO pr4
ON SELECTION BAR 1 OF pop3 DO pr5
ON SELECTION BAR 2 OF pop3 DO pr6
ON SELECTION BAR 1 OF pop4 DO pr7
ON SELECTION BAR 2 OF pop4 DO pr8
ON SELECTION BAR 1 OF pop5 DO pr9
ON SELECTION BAR 2 OF pop5 DO pr10
ON SELECTION BAR 4 OF pop1 DO pr11
ON SELECTION BAR 4 OF pop2 DO pr12
ON SELECTION BAR 1 OF pop6 DO final1
ON SELECTION BAR 2 OF pop6 DO final2
DO WHILE NOT exit
CLEAR
FOR i=17 TO 61
@7,i SAY"*"
@15,i SAY"*"
ENDFOR
FOR i=8 TO 14
@i,17 SAY"*"
@i,61 SAY"*"
ENDFOR
@10,22 SAY'PROGRAM PENTRU TRANZACTII IMOBILIARE' COLOR gr+/b
@12,20 SAY'VANZARI – CUMPARARI IMOBILE SI TERENURI' COLOR gr+/b
ACTIVATE MENU Imobil
ENDDO
RELEASE MENU Imobil
CLOSE ALL
RETURN
*–––––––
PROCEDURE PR1
*Firma lucreaza cu un comision de 5%
hide popup all
clear
store space(10) to nu1, pre1
store 0 to x, cl1
l=space(55)
tel1=space(10)
adr1=space(50)
bi1 =space(8)
ss =space(6)
ss1 =space(50)
store 0 to cc1, cc2
@2,32 say'Vanzari de case' color g+/b
@3,31 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@4,27 say'Date referitoare la imobil' color gr+/b
select 1
go top
scan for casa=.T.
x=x+1
endscan
do case
case x=0
dimension mat1(1)
@6,27 say' Nu sunt de vanzare case ' color gr+/bg+
case x<>0
dimension mat1(x)
x=1
go top
scan for casa=.T.
mat1(x)=(str(nr_camere) + ' ' + adresa + ' ';
+ str(pret_cump + (pret_cump*5)/100) + ' ')
x=x+1
endscan
l=mat1(1)
@5, 3 say'Nr. camere'
@5,16 say'Adresa imobil'
@5,71 say'Pret'
@6 ,1 get l from mat1 function '&' size 6,78
@12,38 get cl1 function '*TV Ok' size 1, 4
read cycle
if cl1=1
@13,25 say'Date referitoare la cumparator' color gr+/b
@14, 20, 20, 59 box 'ÚÄ¿³ÙÄÀ³'
@15,23 say'Nume'
@16,23 say'Prenume'
@17,23 say'Buletin de identitate'
@18,23 say'Adresa actuala'
@19,23 say'Numar telefon'
@15,45 edit nu1 size 1, 12, 10 color scheme 1
@16,45 edit pre1 size 1, 12, 10 color scheme 1
@17,45 edit bi1 size 1, 12, 8 color scheme 1
@18,45 edit adr1 size 1, 12, 50 color scheme 1
@19,45 edit tel1 size 1, 12, 10 color scheme 1
@22,36 get cc1 function '*TV Vinde;\?Iesire' size 1, 8
read cycle
do case
case cc1=1
dv=date()
ss =substr(l, 69, 6)
ss1=substr(l, 14, 50)
sele 1
go top
locate for adresa=ss1
if found()
nrc=nr_camere
adr=adresa
pret=pret_cump
nu=nume_v
pre=pren_v
tel=tel_v
bi=bi_v
dc=data_c
@21,24say'Baza de date a fost actualizata' color r+/b
sele 2
append blank
replace nume_c with upper(nu1), pren_c with upper(pre1),;
tel_c with tel1,bi_c with upper(bi1), adresa with upper(adr),;
pret_vand with val(ss),casa with .T., apartament with .F.,;
intravilan with .F.,agricol with .F.,adresa_c with upper(adr1),;
pret_cump with pret, nume_v with upper(nu),;
pren_v with upper(pre), tel_v with tel, bi_v with upper(bi),;
nr_camere with nrc,data_v with dv,data_c with dc
sele 1
delete
pack
endif
case cc1=2
clear
deactivate popup all
return
endcase
endif
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR2
*Firma lucreaza cu un comision de 5%
hide popup all
clear
store space(10) to nu1, pre1
store 0 to x, cl1
l=space(55)
tel1=space(10)
adr1=space(50)
bi1 =space(8)
ss =space(6)
ss1 =space(50)
store 0 to cc1, cc2
@2,31 say'Vanzari de apartamente' color g+/b
@3,31 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@4,27 say'Date referitoare la imobil' color gr+/b
sele 1
go top
scan for apartament=.T.
x=x+1
endscan
do case
case x=0
dimension mat1(1)
@11,21say' Nu sunt de vanzare apartamente ' color gr+/bg+
case x<>0
dimension mat1(x)
x=1
go top
scan for apartament=.T.
mat1(x)=(str(nr_camere) + ' ' + adresa + ' ';
+ str(pret_cump + (pret_cump*5)/100) + ' ')
x=x+1
endscan
l=mat1(1)
@5, 3 say'Nr. camere'
@5,16 say'Adresa imobil'
@5,71 say'Pret'
@6 ,1 get l from mat1 function '&' size 6,78
@12,38 get cl1 function '*TV Ok' size 1,4
read cycle
if cl1=1
@13,25 say'Date referitoare la cumparator' color gr+/b
@14, 20, 20, 59 box 'ÚÄ¿³ÙÄÀ³'
@15,23 say'Nume'
@16,23 say'Prenume'
@17,23 say'Buletin de identitate'
@18,23 say'Adresa actuala'
@19,23 say'Numar telefon'
@15,45 edit nu1 size 1, 12, 10 color scheme 1
@16,45 edit pre1 size 1, 12, 10 color scheme 1
@17,45 edit bi1 size 1, 12, 8 color scheme 1
@18,45 edit adr1 size 1, 12, 50 color scheme 1
@19,45 edit tel1 size 1, 12, 10 color scheme 1
@22,36 get cc1 function '*TV Vinde;\?Iesire' size 1, 8
read cycle
do case
case cc1=1
dv=date()
ss =substr(l, 69, 6)
ss1=substr(l, 14, 50)
sele 1
go top
locate for adresa=ss1
if found()
nrc=nr_camere
adr=adresa
pret=pret_cump
nu=nume_v
pre=pren_v
tel=tel_v
bi=bi_v
dc=data_c
@21,24say'Baza de date a fost actualizata' color r+/b
sele 2
append blank
replace nume_c with upper(nu1), pren_c with upper(pre1),;
tel_c with tel1,bi_c with upper(bi1), adresa with upper(adr),;
pret_vand with val(ss),casa with .F., apartament with .T.,;
intravilan with .F., agricol with .F.,adresa_c with adr1,;
pret_cump with pret, nume_v with nu, pren_v with pre,;
tel_v with tel, bi_v with bi, nr_camere with nrc;
data_c with dc,data_v with dv
sele 1
delete
pack
endif
case cc1=2
clear
deactivate popup all
return
endcase
endif
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR3
hide popup all
clear
store space(10) to nu, pre
store 0 to cc1, cc2
nrc =space(2)
pret=space(6)
adr =space(50)
bi =space(8)
tel =space(10)
@2,31 say'Cumparari de case' color g+/b
@3,30 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@5,27 say'Date referitoare la imobil' color gr+/b
@ 6, 20, 10, 59 box 'ÚÄ¿³ÙÄÀ³'
@ 7,26 say'Adresa'
@ 8,26 say'Numar camere'
@ 9,26 say'Pret'
@ 7,40 edit adr size 1, 14, 50 color scheme 1
@ 8,40 edit nrc size 1, 14, 2 color scheme 1
@ 9,40 edit pret size 1, 14, 6 color scheme 1
@ 9,55 say'USD'
@12,25 say'Date referitoare la proprietar' color gr+/b
@13, 20, 18, 59 box 'ÚÄ¿³ÙÄÀ³'
@14,23 say'Nume'
@15,23 say'Prenume'
@16,23 say'Buletin de identitate'
@17,23 say'Numar telefon'
@14,47 edit nu size 1, 10, 10 color scheme 1
@15,47 edit pre size 1, 10, 10 color scheme 1
@16,47 edit bi size 1, 10, 8 color scheme 1
@17,47 edit tel size 1, 10, 10 color scheme 1
@22,35 get cc1 function '*TV Cumpara;\?Iesire' size 1, 9
read cycle
do case
case cc1=1
dc=date()
@19,24say'Baza de date a fost actualizata' color r+/b
sele 1
append blank
replace casa with .T., apartament with .F., intravilan with .F.,;
agricol with .F., nr_camere with val(nrc), adresa with upper(adr),;
pret_cump with val(pret),nume_v with upper(nu),pren_v with upper(pre),;
tel_v with tel, bi_v with upper(bi),data_c with dc
case cc1=2
clear
deactivate popup all
return
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR4
hide popup all
clear
store space(10) to nu, pre
store 0 to cc1, cc2
nrc =space(2)
pret=space(6)
adr=space(50)
bi =space(8)
tel=space(10)
@2,28 say'Cumparari de apartamente' color g+/b
@3,27 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@5,27 say'Date referitoare la imobil' color gr+/b
@ 6, 20, 10, 59 box 'ÚÄ¿³ÙÄÀ³'
@ 7,26 say'Adresa'
@ 8,26 say'Numar camere'
@ 9,26 say'Pret'
@ 7,40 edit adr size 1, 14, 50 color scheme 1
@ 8,40 edit nrc size 1, 14, 2 color scheme 1
@ 9,40 edit pret size 1, 14, 6 color scheme 1
@ 9,55 say'USD'
@12,25 say'Date referitoare la proprietar' color gr+/b
@13, 20, 18, 59 box 'ÚÄ¿³ÙÄÀ³'
@14,23 say'Nume'
@15,23 say'Prenume'
@16,23 say'Buletin de identitate'
@17,23 say'Numar telefon'
@14,47 edit nu size 1, 10, 10 color scheme 1
@15,47 edit pre size 1, 10, 10 color scheme 1
@16,47 edit bi size 1, 10, 8 color scheme 1
@17,47 edit tel size 1, 10, 10 color scheme 1
@22,35 get cc1 function '*TV Cumpara;\?Iesire' size 1, 9
read cycle
do case
case cc1=1
dc=date()
@19,24say'Baza de date a fost actualizata' color r+/b
sele 1
append blank
replace casa with .F.,apartament with .T.,intravilan with .F.,;
agricol with .F.,nr_camere with val(nrc),adresa with upper(adr),;
pret_cump with val(pret),nume_v with upper(nu),pren_v with upper(pre),;
tel_v with tel,bi_v with upper(bi),data_c with dc
case cc1=2
clear
deactivate popup all
return
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR5
clear
hide popup all
select 1
d1={//}
d2={//}
ok=0
varx='CASA'
vary='PE ECRAN'
@3,20say"IMOBILE SI TERENURI CUMPARATE DE FIRMA"
@4,20say"======================================"
@6,10 say"INTRODUCETI DATA MINIMA:" get d1 function'd'
@7,10 say"INTRODUCETI DATA MAXIMA:" get d2 function'd'
@9,10 say"SELECTATI DESTINATIA AFISARII:"
@11,10 get vary ;
picture'@*rnv PE ECRAN;LA IMPRIMANTA'
@14,10 say"SELECTATI TIPUL DE IMOBIL SAU TEREN:"
@16,10 get varx;
picture'@*rnv CASA;APARTAMENT;TEREN INTRAVILAN;TEREN AGRICOL'
@21,31 get ok function'*h OK;IESIRE'
read cycle
do case
case ok=1
w=0
if varx='CASA'
v='CASE'
sort to cump on data_c,nume_v,pren_v
use cump in 3
select 3
if vary='PE ECRAN'
report form rep1.frx;
for (casa=.t.)and((d1<=data_c) and (data_c<=d2)) preview
use
erase cump.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep1.frx ;
for (casa=.t.)and((d1<=data_c)and(data_c<=d2)) to printer ;
noconsole
use
erase cump.dbf
clear
deactivate popup all
endif
endif
if varx='APARTAMENT'
v='APARTAMENTE'
sort to cump on data_c,nume_v,pren_v
use cump in 3
select 3
if vary='PE ECRAN'
report form rep1.frx ;
for (apartament=.t.)and((d1<=data_c)and(data_c<=d2)) preview
use
erase cump.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep1.frx ;
for (apartament=.t.)and((d1<=data_c)and(data_c<=d2)) to printer;
noconsole
use
erase cump.dbf
clear
deactivate popup all
endif
endif
if varx='TEREN INTRAVILAN'
v='TERENURI INTRAVILANE'
sort to cump on data_c,nume_v,pren_v
use cump in 3
select 3
if vary='PE ECRAN'
report form rep1.frx;
for (intravilan=.t.)and((d1<=data_c)and(data_c<=d2)) preview
use
erase cump.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep1.frx ;
for (intravilan=.t.)and((d1<=data_c)and(data_c<=d2)) to printer;
noconsole
use
erase cump.dbf
clear
deactivate popup all
endif
endif
if varx='TEREN AGRICOL'
v='TERENURI AGRICOLE'
sort to cump on data_c,nume_v,pren_v
use cump in 3
select 3
if vary='PE ECRAN'
report form rep1.frx ;
for (agricol=.t.)and((d1<=data_c)and(data_c<=d2)) preview
use
erase cump.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep1.frx ;
for (agricol=.t.)and((d1<=data_c)and(data_c<=d2)) to printer;
noconsole
use
erase cump.dbf
clear
deactivate popup all
endif
endif
case ok=2
clear
deactivate popup all
return
endcase
*–––––––
PROCEDURE PR6
clear
hide popup all
select 2
d1={//}
d2={//}
ok=0
varx='CASA'
vary='PE ECRAN'
@3,20say"IMOBILE SI TERENURI VANDUTE DE FIRMA"
@4,20SAY"===================================="
@6,10 say"INTRODUCETI DATA MINIMA:" get d1 function'd'
@7,10 say"INTRODUCETI DATA MAXIMA:" get d2 function'd'
@9,10 say"SELECTATI DESTINATIA AFISARII:"
@11,10 get vary ;
picture'@*rnv PE ECRAN;LA IMPRIMANTA'
@14,10 say"SELECTATI TIPUL DE IMOBIL SAU TEREN:"
@16,10 get varx;
picture'@*rnv CASA;APARTAMENT;TEREN INTRAVILAN;TEREN AGRICOL'
@21,31 get ok function'*h OK;IESIRE'
read cycle
do case
case ok=1
w=0
if varx='CASA'
v='CASE'
sort to vand on data_v,nume_c,pren_c
use vand in 3
select 3
if vary='PE ECRAN'
report form rep2.frx ;
for (casa=.t.)and((d1<=data_v)and(data_v<=d2)) preview
use
erase vand.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep2.frx ;
for (casa=.t.)and((d1<=data_v)and(data_v<=d2)) to printer;
noconsole
use
erase vand.dbf
clear
deactivate popup all
endif
endif
if varx='APARTAMENT'
v='APARTAMENTE'
sort to vand on data_v,nume_c,pren_c
use vand in 3
select 3
if vary='PE ECRAN'
report form rep2.frx ;
for (apartament=.t.)and((d1<=data_v)and(data_v<=d2)) preview
use
erase vand.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep2.frx ;
for (apartament=.t.)and((d1<=data_v)and(data_v<=d2)) to printer;
noconsole
use
erase vand.dbf
clear
deactivate popup all
endif
endif
if varx='TEREN INTRAVILAN'
v='TERENURI INTRAVILANE'
sort to vand on data_v,nume_c,pren_c
use vand in 3
select 3
if vary='PE ECRAN'
report form rep2.frx ;
for (intravilan=.t.)and((d1<=data_v)and(data_v<=d2)) preview
use
erase vand.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep2.frx ;
for (intravilan=.t.)and((d1<=data_v)and(data_v<=d2)) to printer;
noconsole
use
erase vand.dbf
clear
deactivate popup all
endif
endif
if varx='TEREN AGRICOL'
v='TERENURI AGRICOLE'
sort to vand on data_v,nume_c,pren_c
use vand in 3
select 3
if vary='PE ECRAN'
report form rep2.frx ;
for (agricol=.t.)and((d1<=data_v)and(data_v<=d2)) preview
use
erase vand.dbf
clear
deactivate popup all
endif
if vary='LA IMPRIMANTA'
report form rep2.frx ;
for (agricol=.t.)and((d1<=data_v)and(data_v<=d2)) to printer;
noconsole
use
erase vand.dbf
clear
deactivate popup all
endif
endif
case ok=2
clear
deactivate popup all
return
endcase
*–––––––
PROCEDURE PR7
hide popup all
clear
store space(10) to nu1, pre1
store 0 to x, cl1
l=space(55)
tel1=space(10)
adr1=space(50)
bi1 =space(8)
supr=space(6)
ss =space(6)
ss1 =space(50)
store 0 to cc1, cc2
@2,24 say'Vanzari de terenuri intravilane' color g+/b
@3,23 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@4,27 say'Date referitoare la teren' color rb+/b
sele 1
go top
scan for intravilan=.T.
x=x+1
endscan
do case
case x=0
dimension mat1(1)
@11,19say' Nu sunt de vanzare terenuri intravilane ' color gr+/bg+
case x<>0
dimension mat1(x)
x=1
go top
scan for intravilan=.T.
mat1(x)=(suprafata + ' ' + adresa + ' ';
+ str(pret_cump + (pret_cump*5)/100) + ' ')
x=x+1
endscan
l=mat1(1)
@5, 2 say'Supr.(mý)'
@5,12 say'Adresa'
@5,67 say'Pret(USD)'
@6 ,1 get l from mat1 function '&' size 6,78
@12,38 get cl1 function '*TV Ok' size 1,4
read cycle
if cl1=1
@13,25 say'Date referitoare la cumparator' color gr+/b
@14, 20, 20, 59 box 'ÚÄ¿³ÙÄÀ³'
@15,23 say'Nume'
@16,23 say'Prenume'
@17,23 say'Buletin de identitate'
@18,23 say'Adresa actuala'
@19,23 say'Numar telefon'
@15,45 edit nu1 size 1, 12, 10 color scheme 1
@16,45 edit pre1 size 1, 12, 10 color scheme 1
@17,45 edit bi1 size 1, 12, 8 color scheme 1
@18,45 edit adr1 size 1, 12, 50 color scheme 1
@19,45 edit tel1 size 1, 12, 10 color scheme 1
@22,36 get cc1 function '*TV Vinde;\?Iesire' size 1, 8
read cycle
do case
case cc1=1
dv=date()
ss =substr(l, 65, 6)
ss1=substr(l, 10, 50)
sele 1
go top
locate for adresa=ss1
if found()
adr =adresa
pret=pret_cump
nu =nume_v
pre =pren_v
tel =tel_v
bi =bi_v
supr=suprafata
dc=data_c
@21,24say'Baza de date a fost actualizata' color r+/b
sele 2
append blank
replace nume_c with upper(nu1), pren_c with upper(pre1),;
tel_c with tel1,bi_c with upper(bi1),adresa with upper(adr),;
pret_vand with val(ss),casa with .F.,apartament with .F.,;
intravilan with .T.,agricol with .F.,adresa_c with adr1,;
pret_cump with pret, nume_v with nu, pren_v with pre,;
tel_v with tel, bi_v with bi, suprafata with supr;
data_c with dc,data_v with dv
sele 1
delete
pack
endif
case cc1=2
clear
deactivate popup all
return
endcase
endif
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR8
hide popup all
clear
store space(10) to nu1, pre1
store 0 to x, cl1
l=space(55)
tel1=space(10)
adr1=space(50)
bi1 =space(8)
supr=space(6)
ss =space(6)
ss1 =space(50)
store 0 to cc1, cc2
@2,26 say'Vanzari de terenuri agricole' color g+/b
@3,25 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@4,27 say'Date referitoare la teren' color rb+/b
sele 1
go top
scan for agricol=.T.
x=x+1
endscan
do case
case x=0
dimension mat1(1)
@11,21say' Nu sunt de vanzare terenuri agricole ' color gr+/bg+
case x<>0
dimension mat1(x)
x=1
go top
scan for agricol=.T.
mat1(x)=(suprafata + ' ' + adresa + ' ';
+ str(pret_cump + (pret_cump*5)/100) + ' ')
x=x+1
endscan
l=mat1(1)
@5, 2 say'Supr.(mý)'
@5,12 say'Adresa'
@5,67 say'Pret(USD)'
@6 ,1 get l from mat1 function '&' size 6,78
@12,38 get cl1 function '*TV Ok' size 1, 4
read cycle
if cl1=1
@13,25 say'Date referitoare la cumparator' color gr+/b
@14, 20, 20, 59 box 'ÚÄ¿³ÙÄÀ³'
@15,23 say'Nume'
@16,23 say'Prenume'
@17,23 say'Buletin de identitate'
@18,23 say'Adresa actuala'
@19,23 say'Numar telefon'
@15,45 edit nu1 size 1, 12, 10 color scheme 1
@16,45 edit pre1 size 1, 12, 10 color scheme 1
@17,45 edit bi1 size 1, 12, 8 color scheme 1
@18,45 edit adr1 size 1, 12, 50 color scheme 1
@19,45 edit tel1 size 1, 12, 10 color scheme 1
@22,36 get cc1 function '*TV Vinde;\?Iesire' size 1, 8
read cycle
do case
case cc1=1
dv=date()
ss =substr(l, 65, 6)
ss1=substr(l, 10, 50)
sele 1
go top
locate for adresa=ss1
if found()
adr =adresa
pret=pret_cump
nu =nume_v
pre =pren_v
tel =tel_v
bi =bi_v
supr=suprafata
dc=data_c
@21,24say'Baza de date a fost actualizata' color r+/b
sele 2
append blank
replace nume_c with upper(nu1),pren_c with upper(pre1),;
tel_c with tel1,bi_c with upper(bi1),adresa with upper(adr),;
pret_vand with val(ss),casa with .F.,apartament with .F.,;
intravilan with .F.,agricol with .T.,adresa_c with adr1,;
pret_cump with pret, nume_v with nu, pren_v with pre, ;
tel_v with tel, bi_v with bi, suprafata with supr;
data_c with dc,data_v with dv
sele 1
delete
pack
endif
case cc1=2
clear
deactivate popup all
return
endcase
endif
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR9
hide popup all
clear
store space(10) to nu, pre
store 0 to cc1, cc2
supr=space(6)
pret=space(6)
adr =space(50)
bi =space(8)
tel =space(10)
@2,23 say'Cumparari de terenuri intravilane' color g+/b
@3,22 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@5,27 say'Date referitoare la teren' color gr+/b
@ 6, 20, 10, 59 box 'ÚÄ¿³ÙÄÀ³'
@ 7,26 say'Adresa'
@ 8,26 say'Suprafata'
@ 9,26 say'Pret'
@ 7,40 edit adr size 1, 14, 50 color scheme 1
@ 8,40 edit supr size 1, 14, 6 color scheme 1
@ 9,40 edit pret size 1, 14, 6 color scheme 1
@ 8,55 say'Mý'
@ 9,55 say'USD'
@12,25 say'Date referitoare la proprietar' color gr+/b
@13, 20, 18, 59 box 'ÚÄ¿³ÙÄÀ³'
@14,23 say'Nume'
@15,23 say'Prenume'
@16,23 say'Buletin de identitate'
@17,23 say'Numar telefon'
@14,47 edit nu size 1, 10, 10 color scheme 1
@15,47 edit pre size 1, 10, 10 color scheme 1
@16,47 edit bi size 1, 10, 8 color scheme 1
@17,47 edit tel size 1, 10, 10 color scheme 1
@22,35 get cc1 function '*TV Cumpara;\?Iesire' size 1, 9
read cycle
do case
case cc1=1
dc=date()
@19,24say'Baza de date a fost actualizata' color r+/b
sele 1
append blank
replace casa with .F.,apartament with .F.,intravilan with .T.,;
agricol with .F.,adresa with upper(adr),pret_cump with val(pret),;
nume_v with upper(nu),pren_v with upper(pre),tel_v with tel,;
bi_v with upper(bi), suprafata with supr,data_c with dc
case cc1=2
clear
deactivate popup all
return
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR10
hide popup all
clear
store space(10) to nu, pre
store 0 to cc1, cc2
supr=space(6)
pret=space(6)
adr =space(50)
bi =space(8)
tel =space(10)
@2,25 say'Cumparari de terenuri agricole' color g+/b
@3,24 say'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' color g+/b
@5,27 say'Date referitoare la teren' color gr+/b
@ 6, 20, 10, 59 box 'ÚÄ¿³ÙÄÀ³'
@ 7,26 say'Adresa'
@ 8,26 say'Suprafata'
@ 9,26 say'Pret'
@ 7,40 edit adr size 1, 14, 50 color scheme 1
@ 8,40 edit supr size 1, 14, 6 color scheme 1
@ 9,40 edit pret size 1, 14, 6 color scheme 1
@ 8,55 say'Mý'
@ 9,55 say'USD'
@12,25 say'Date referitoare la proprietar' color gr+/b
@13, 20, 18, 59 box 'ÚÄ¿³ÙÄÀ³'
@14,23 say'Nume'
@15,23 say'Prenume'
@16,23 say'Buletin de identitate'
@17,23 say'Numar telefon'
@14,47 edit nu size 1, 10, 10 color scheme 1
@15,47 edit pre size 1, 10, 10 color scheme 1
@16,47 edit bi size 1, 10, 8 color scheme 1
@17,47 edit tel size 1, 10, 10 color scheme 1
@22,35 get cc1 function '*TV Cumpara;\?Iesire' size 1, 9
read cycle
do case
case cc1=1
dc=date()
@19,24say'Baza de date a fost actualizata' color r+/b
sele 1
append blank
replace casa with .F.,apartament with .F.,intravilan with .F.,;
agricol with .T.,adresa with upper(adr),pret_cump with val(pret),;
nume_v with upper(nu),pren_v with upper(pre),tel_v with tel,;
bi_v with upper(bi), suprafata with supr,data_c with dc
case cc1=2
clear
deactivate popup all
return
endcase
@22, 34 clear to 23, 43
@23, 36 get cc2 function '*TV Iesire' size 1, 8
read cycle
if cc2=1
clear
deactivate popup all
return
endif
*–––––––
PROCEDURE PR11
clear
hide popup all
sele 2
varx='MODIFICARI'
ok=0
go top
x=adresa
@2,5 to 20,70 double
@3,24say"MODIFICARI/STERGERI DE IMOBILE-TERENURI"
@7,28 say"ALEGETI TIPUL ACTIUNII:"
@9,28 get varx picture'@*rnv MODIFICARI;STERGERI'
@15,28 get ok function'*h OK;IESIRE'
read cycle
do case
case ok=1
clear
if varx='MODIFICARI'
ok1=0
oko=0
@2,5 to 22,70
@3,23say"MODIFICARI DE IMOBILE-TERENURI"
@5,10 say"SELECTATI ADRESA CARE SE MODIFICA:"
define popup lista prompt field adresa scroll
@6,10 get x popup lista function'&'size 12,52
@19,10 get oko function'*h MODIFICA;IESIRE'
read cycle
clear
do case
case oko=1
locate for adresa=x
if found()=.t.
scatter memvar
@1,5say"ADRESA IMOBILULUI/TERENULUI VANDUT"
@2,10 get m.adresa ;
picture"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
function"!"
if m.casa=.t.
va='CASA'
endif
if m.apartament=.t.
va='APARTAMENT'
endif
if m.intravilan=.t.
va='TEREN INTRAVILAN'
endif
if m.agricol=.t.
va='TEREN AGRICOL'
endif
@3,10 say"Tipul achizitiei:" get va;
function'*rnv CASA;APARTAMENT;TEREN INTRAVILAN;TEREN AGRICOL'
@7,10 say"Numar camere:" get m.nr_camere function"99";
when (va='CASA')or(va='APARTAMENT')
@8,10 say"Suprafata:"get m.suprafata function"xxxxxx";
when (va='TEREN INTRAVILAN')or(va='TEREN AGRICOL')
@9,5say"DATE DESPRE FOSTUL PROPRIETAR:"
@10,10 say"Numele:" get m.nume_v;
picture"xxxxxxxxxx" function"!"
@11,10 say"Prenumele:" get m.pren_v;
picture"xxxxxxxxxx" function"!"
@12,10 say"Buletinul de identitate:" get m.bi_v picture"xxxxxxxx";
function"!"
@13,10 say"Telefonul:"get m.tel_v picture"xxxxxxxxxx"
@14,5say"DATE DESPRE ACTUALUL PROPRIETAR:"
@15,10say"Numele:" get m.nume_c picture"xxxxxxxxxx" function"!"
@16,10say"Prenumele:" get m.pren_c picture"xxxxxxxxxx" function"!"
@17,10say"Buletinul de identitate:" get m.bi_c picture"xxxxxxxx";
function"!"
@18,10say"Telefonul:" get m.tel_c picture"xxxxxxxxxx"
@19,10say"Adresa veche:"get m.adresa_c ;
picture"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
function"!"
@20,5 say"Data cumpararii de catre firma:"get m.data_c function'd'
@21,5 say"Pretul de cumparare:" get m.pret_cump picture"999999"
@22,5 say"Data vanzarii de catre firma:"get m.data_v function'd'
@23,5say"Pretul de vanzare:" get m.pret_vand picture"999999"
@24,30 get ok1 function'*h OK'
read cycle
gather memvar
deactivate popup all
clear
return
else
deactivate popup all
clear
return
endif
case oko=2
deactivate popup all
clear
return
endcase
endif
if varx='STERGERI'
ok1=0
clear
@2,5 to 22,70
@3,23 say"STERGERI DE IMOBILE-TERENURI"
@5,10 say"SELECTATI ADRESA CARE SE STERGE:"
define popup lista prompt field adresa scroll
@6,10 get x popup lista function'&'size 12,52
@20,10 get ok1 function'*h STERGE;IESIRE'
read cycle
do case
case ok1=1
locate for adresa=x
if found()=.t.
delete
pack
deactivate popup all
clear
return
else
deactivate popup all
clear
return
endif
case ok1=2
deactivate popup all
clear
return
endcase
endif
case ok=2
clear
deactivate popup all
clear
return
endcase
*–––––––
PROCEDURE PR12
clear
hide popup all
sele 1
varx='MODIFICARI'
ok=0
go top
x=adresa
define window wind from 2,2 to 22,77;
title'MODIFICARI/STERGERI DE IMOBILE-TERENURI' double
activate window wind
@4,28 say"ALEGETI TIPUL ACTIUNII:"
@6,28 get varx picture'@*rnv MODIFICARI;STERGERI'
@10,28 get ok function'*h OK;IESIRE'
read cycle
do case
case ok=1
clear
if varx='MODIFICARI'
ok1=0
okk=0
@2,10 say"SELECTATI ADRESA CARE SE MODIFICA:"
define popup lista prompt field adresa scroll
@3,10 get x popup lista function'&'size 12,52
@17,20 get okk function'*h MODIFICA;IESIRE'
read cycle
do case
case okk=1
clear
locate for adresa=x
scatter memvar
@2,10 say"Numele fostului proprietar:" get m.nume_v;
picture"xxxxxxxxxx" function"!"
@3,10 say"Prenumele fostului proprietar:" get m.pren_v;
picture"xxxxxxxxxx" function"!"
@4,10 say"Buletinul:" get m.bi_v picture"xxxxxxxx" function"!"
@5,10 say"Telefonul:"get m.tel_v picture"xxxxxxxxxx"
@6,10 say"Data cumpararii de catre firma:"get m.data_c function'd'
@7,10 say"Pretul:" get m.pret_cump picture"999999"
if m.casa=.t.
va='CASA'
endif
if m.apartament=.t.
va='APARTAMENT'
endif
if m.intravilan=.t.
va='TEREN INTRAVILAN'
endif
if m.agricol=.t.
va='TEREN AGRICOL'
endif
@8,10 say"Tipul achizitiei:" get va;
function'*rnv CASA;APARTAMENT;TEREN INTRAVILAN;TEREN AGRICOL'
@12,10 say"Numar camere:" get m.nr_camere function"99";
when (va='CASA')or(va='APARTAMENT')
@13,10 say"Suprafata:"get m.suprafata function"xxxxxx";
when (va='TEREN INTRAVILAN')or(va='TEREN AGRICOL')
@15,10 say"ADRESA:" get m.adresa;
picture"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
function"!"
@17,31 get ok1 function'*h OK'
read cycle
gather memvar
deactivate popup all
deactivate window wind
release window wind
return
case okk=2
deactivate popup all
deactivate window wind
release window wind
return
endcase
endif
if varx='STERGERI'
ok1=0
clear
@2,10 say"SELECTATI ADRESA CARE SE STERGE:"
define popup lista prompt field adresa scroll
@3,10 get x popup lista function'&'size 12,52
@17,10 get ok1 function'*h STERGE;IESIRE'
read cycle
do case
case ok1=1
locate for adresa=x
delete
pack
deactivate popup all
deactivate window wind
release window wind
return
case ok1=2
deactivate popup all
deactivate window wind
release window wind
return
endcase
endif
case ok=2
clear
deactivate popup all
deactivate window wind
release window wind
return
endcase
*–––––––
PROCEDURE FINAL1
exit=.t.
clear
deactivate menu imobil
return
*–––––––
PROCEDURE FINAL2
close all
quit
return
*–––-SFARSIT PROGRAM–––-
BIBLIOGRAFIE
“ FoxPro 2.5, 2.6 pentru DOS ”
autori: Gabriel Dima, Mihai Dima
“ Bazele Visual FoxPro 5.0 “
autori: Gabriel Dima, Mihai Dima
“ Manual de informatică – Baze de date “
autori: Mariana Panțiru, Ionuț Panțiru
“ Informatică economică “
autori: Cătălin Frâncu
“ Microsoft FoxPro “
autori: Leon Țâmbulea
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Program Pentru Evidenta Scolara (ID: 148915)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
