Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Baze de date


Qdidactic » stiinta & tehnica » informatica » baze de date
Lucrare - informatica, baze de date



Lucrare - informatica, baze de date




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


NOTIUNI GENERALE


Crearea si functionarea obiectelor de control


S-a constatat ca este mult mai usor si mai placut pentru operator sa aleaga una

din valorile prezentate pe un ecran, pentru a completa variabila get, decat sa se introduca acea valoare caracter cu caracter, in plus, posibilitatile de eroare sunt mult mai mici. Fox prezinta proiectantilor de aplicatii diferite obiecte de control cum ar fi: comutatoare, liste de valori, liste ascunse, declansatoare, butoane radio. Obiectele de control se descriu prin comanda GET unde clauzele de format FUNCTION si PICTURE vor contine codul de control corespunzator.


COMUTATOARE


Comutatoarele permit selectarea intre doua valori posibile (adevarat sau

fals). Apar pe ecran sub forma a doua paranteze patrate cu text explicativ. Comutatoarele se descriu prin codul de control C al clauzei FUNCTION sau prin C in clauza PICTURE. Textul explicativ al comutatorului poate fi trecut chiar in clauza unde apare codul de control, separat de un spatiu.


@<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 facute de utilizator se face in variabila var care trebuie sa fie de tip numeric sau logic. Pentru var de tip numeric, valoarea zero semnifica comutator neselectat. Pentru var de tip logic, valoarea .F. semnifica comutator neselectat.


LISTA


Se afiseaza o lista pe ecran din care utilizatorul poate selecta o valoare prin

apasarea tastei ENTER. Lista se afiseaza vertical, total sau partial si daca nu incape pe ecran, apare o bara de defilare. Lista este preluata dintr-un vector, din prima coloana a unei matrici sau dintr-un submeniu (meniu de tip popup).

Listele se descriu prin clauzele FUNCTION sau PICTURE in 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’@&’


Daca este prezenta clauza RANGE, lista este afisata doar cu o parte din elementele vectorului: cele cuprinse intre limitele indicate in clauza.


LISTA ASCUNSA


Acest element, foarte folosit in FoxPro, este asemanator listei simple, dar,

daca la lista simpla apare pe ecran lista intreaga, in cazul acesta apare un dreptunghi in care este trecut elementul curent din lista, restul fiind ascuns. Selectarea se face tot cu tasta ENTER pe dreptunghiul listei. In acest moment apare lista si se poate alege un element al listei cu enter. Functia care realizeaza 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 in continuarea codului prin separarea de acesta cu un spatiu.


DECLANSATOARE


Declansatorul este un obiect de control prin care se determina pornirea

imediata a unei actiuni. Apare pe ecran cu textul explicativ intre 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 comanda pot fi definite mai multe declansatoare, primul fiind pozitionat la punctul de coordonate r, c iar celelalte in continuare.

Memorarea optiunii utilizatorului se face in variabila-get care poate fi numerica(intoarce numarul de ordine al declansatorului selectat) sau de tip caracter (intoarce numele declansatorului asa cum a fost el definit ca nume).


BUTOANE RADIO


Un alt obiect util si care face dialogul cu operatorul foarte prezentabil, este

butonul radio. Este important de retinut ca selectarea unei optiuni determina deselectarea automata a tuturor celorlalte optiuni; deci, la un moment dat poate fi selectat un singur obiect. Butoanele apar pe ecran prin paranteze rotunde alaturate textului optiunii. Pentru optiunea selectata apare un punct intre paranteze rotunde. Functia care realizeaza acest obiect este R in FUNCTION sau R in PICTURE. Textele explicative pot fi puse in continuarea codului de functie, separate de un spatiu fata de cod si separate intre ele prin punct si virgula.


@<r,c>GET<var-get>FUNCTION’*R<text1>[;<text2>] . ’/

PICTURE’@*R<text1>; . ’


REGIUNI DE EDITARE TEXT


Sintaxa este urmatoarea:


@<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 si functionarea meniurilor


COMENZI PENTRU LUCRUL CU MENIURI


Asigurarea unei interfete prietenoase cu utilizatorii unei aplicatii dezvoltate

sub mediul oricarui sistem de gestiune a bazelor de date, este o preocupare constanta a programatorilor. Utilizarea de ferestre sau meniuri usureaza prezentarea diferitelor actiuni ale programului si confera un aspect atractiv aplicatiei.

Prin meniu intelegem un element de interfata prin care se ofera utilizatorului posibilitatea selectarii unei anumite optiuni, dintr-o multime finita, afisata pe ecran, total sau partial, urmand ca, in functie de selectarea facuta, sa se declanseze anumite actiuni.

Meniurile sunt de doua tipuri: meniuri “menu”(bara) – folsosite de obicei ca meniuri principale ale aplicatiei, cu lista de optiuni fara incadrare in chenar – si meniuri “popup”(verticale) – cu lista de optiuni incadrata standard intr-o banda invers-video, folosite de obicei ca submeniuri.


Meniuri tip bara:

Definirea barei-meniu cu atzribuirea unui nume se face prin comanda:

DEFINE MENU <meniu>[MESSAGE<mesaj>]


Comanda permite si afisarea unui mesaj pe ultima linie a ecranului.

Definirea optiunilor dintr-un meniu se face prin comanda:

DEFINE PAD<optiune>OF<meniu>PROMPT<sir>[AT<r,c>] [MESSAGE<mesaj>]


Precizarea actiunii de executat la selectarea unei optiuni:

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 prezinta mai multe optiuni sub forma de lista verticala incadrata printr-o banda 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 defineste numele, pozitia unui meniu popup precum si tipul optiunilor acestui meniu. Optiunile dintr-un meniu popup pot fi:

O lista de cerinte definite de utilizator

O lista de campuri din structura bazei active de date(Prompt structure)

O lista de valori ale unui camp din baza activa de date, valori ale articolelor filtrate sau nu (Prompt Field)

O lista de fisiere care verifica o masca(Prompt Files Like)

Daca meniul va contine o lista de optiuni utilizator, acestea vor fi definite in continuare prin comenzile DEFINE BAR.

Definirea optiunilor utilizator intr-un meniu popup sunt:

DEFINE BAR<nr-linie>OF<submeniu>PROMPT<sir1>[MESSAGE<mesaj>] [SKIP[FOR<cond>]]


Comanda stabileste optiunea de pe linia cu numar nr-linie, definind textul optiunii. Daca se foloseste SKIP, atunci se afiseaza sir1, dar nu se permite selectia optiunii. Daca se foloseste SKIP FOR atunci se afiseaza sir1, dar se va permite selectia numai daca este indeplinita conditia cond.

Stabilirea actiunii de executat la selectia 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 Generalitati


Programul IMOBIL, program care este descris in cele ce urmeaza, din punct de vedere structural, contine programul principal si urmatoarele 14 proceduri:


Pr1

Pr2

Pr3

Pr4

Pr5

Pr6

Pr7

Pr8

Pr9

Pr10

Pr11

Pr12

Final1

Final2


Aplicatia gestioneaza datele stocate in doua baze de date, si anume:

Cumparat.dbf

Vandut.dbf


2.2 Bazele de date


Programul Imobil ofera posibilitatea consultarii si prelucrarii datelor privitoare la casele, apartamentele, terenurile intravilane si terenurile agricole cumparate si vandute de catre firma imobiliara.

Prelucrarea acestor date ofera informatiile necesare personalului care lucreaza in cadrul companiei la care este implementata aceasta aplicatie.

Datele respective sunt stocate in doua tabele, CUMPARAT.DBF si VANDUT.DBF







Structura bazei de date: CUMPARAT.DBF







Name

Type

Width

Observatii

CASA

Logical


Stabileste tipul de

APARTAMENT

Logical


imobil / teren

INTRAVILAN

Logical


cumparat de firma

AGRICOL

Logical



NR_CAMERE

Numeric


Adresa imobilului /

ADRESA

Character


terenului cumparat

SUPRAFATA

Character


de firma

PRET_CUMP

Numeric


Pretul

NUME_V

Character


Date despre fostul

PREN_V

Character


proprietar

TEL_V

Character



BI_V

Character



DATA_C

Date


Data cumpararii




















Structura bazei de date: VANDUT.DBF





Name

Type

Width

Observatii

CASA

Logical


Stabileste tipul de

APARTAMENT

Logical


imobil / teren

INTRAVILAN

Logical



AGRICOL

Logical



NR_CAMERE

Numeric


Adresa imobilului

ADRESA

Character


vandut de firma

SUPRAFATA

Character



PRET_CUMP

Numeric


Pretul de cumparare

NUME_V

Character


Date despre fostul

PREN_V

Character


proprietar

TEL_V

Character



BI_V

Character



NUME_C

Character


Date despre actualul

PREN_C

Character


proprietar

TEL_C

Character



BI_C

Character



ADRESA_C

Character



PRET_VAND

Numeric


Pretul de vanzare

DATA_C


Date


Data cumpararii de firma

DATA_V

Date


Data vanzarii de firma












2.3 Programul


Programul prezentat in aceasta lucrare contine in jur de 1.100 de linii de program.

Executia unui program din interiorul altui program, folosind comanda DO, reprezinta un pas important in structurarea aplicatiilor de dimensiuni mai mari. Pe masura ce creste dimensiunea unei aplicatii, testarea si depanarea acesteia devine din ce in ce mai dificila, datorita numarului mare de variabile folosite, datorita numarului mare de instructiuni si a legaturilor dintre acestea. O rezolvare la aceasta problema poate fi gruparea unor instructiuni in module separate, aceste module fiind independente intre ele. Comunicarea lor cu celelalte module se face prin intermediul unor parametrii, variabile de comunicare, care realizeaza interfata modulului cu exteriorul.

Module de acest tip pot fi create chiar in interiorul fisierului ce contine programul, formand asa numitele “proceduri si functii definite de utilizator”

Astfel, aplicatia prezentata contine programul principal si un numar de 14 proceduri, toate create in interiorul unui fisier sursa numit imobil.prg

Programul principal creaza prin instructiuni specifice meniul IMOBIL, iar prin selectarea optiunilor din submeniurile acestuia se apeleaza procedurile specificate.


q      PROGRAMUL PRINCIPAL


In programul principal are loc initializarea variabilei “exit” cu valoarea “false”,

apoi se deschid bazele de date “cumparat.dbf” in zona 1 de lucru si “vandut.dbf” in zona 2 de lucru.

Tot in programul principal se defineste meniul IMOBIL cu optiunile bara:


Vanzari

Cumparari

Rapoarte

Iesire

In continuare se vor defini urmatoarele submeniuri, cu optiunile 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 intr-o bucla “do while” care va executa o secventa de activare a meniului si a elementelor acestuia (pad-uri, popup-uri) atata timp cat expresia “not exit” este “true”.


q      PROCEDURA PR1


Procedura Pr1 este apelata de catre programul principal si corespunde optiunilor

de meniu Vanzari Case.

Se va selecta prin program zona de lucru 1, zona in care este deschisa baza de date cumparat.dbf, apoi se vor initializa o serie de variabile.

In continuare se va crea un masiv prin instructiunea DIMENSION, masiv ce va avea ca elemente siruri de caractere formate prin concatenarea unor subsiruri obtinute din campuri ale bazei de date, campuri ce corespund inregistrarilor referitoare doar la case (nu si cele ce se refera la apartamente, terenuri intravilane sau terenuri agricole). Selectia inregistrarilor se face prin instructiunea SCAN FOR casa=.T.

Elementele masivului mat1 se formeaza astfel:


Mat1(x) = (str(nr_camere) + ’     ‘ + adresa + ’ ‘ + str(pret_cump + (pret_cump*5) / 100 + ’ ‘)


Pret_cump + (pret_cump*5)/100 reprezinta pretul de vanzare al imobilului, calculat din pretul cu care acesta a fost cumparat de catre firma la care este adaugat un procent de 5 la suta, care reprezinta beneficiul firmei.

Pe ecran va fi afisata o lista din care utilizatorul, un angajat al firmei, va alege imobilul solicitat de catre client. Apoi, prin intermediul unor obiecte de control, va introduce in baza de date vandut.dbf date referitoare la client: nume, prenume, buletin de identitate, adresa, numarul de telefon.





q      PROCEDURA PR2


Aceasta procedura ofera posibilitatea procesarii datelor necesare vanzarii unui

apartament catre un anumit client.

Procedura Pr2 este apelata atunci cand utilizatorul selecteaza din meniul principal optiunile Vanzari Apartamente.

Aceasta procedura determina aparitia acelorasi evenimente ca si procedura pr1, cu diferenta ca elementele masivului mat1 se vor forma din campuri corespunzatoare doar inregistrarilor ce se refera la apartamente, adica inregistrari pentru care conditia apartament=.T. este adevarata. Aceasta conditie se testeaza tot prin intermediul unei instructiuni SCAN.


q      PROCEDURA PR3


Este apelata atunci cand operatorul alege Cumparari         Case.

Procedura Pr3 creaza mai multe obiecte de control prin intermediul carora, in

final, se vor introduce in baza de date cumparat.dbf informatii referitoare la imobilele cumparate de catre firma, imobile cumparate cu scopul de a fi revandute apoi cu un pret mai mare.

Prin intermediul obiectelor de control disponibile aici se vor introduce de la tastatura:


Date referitoare la imobil:


T    Adresa imobilului

T    Numar de camere

T    Pretul la care a fost cumparat


Date referitoare la proprietar:


T    Nume

T    Prenume

T    Buletin de identitate

T    Numar de telefon


In partea de jos a ecranului vor fi apoi afisate doua declansatoare:


v    Cumpara

v    Iesire


Odata cu selectarea primului dintre acestea, la baza de date cumparat.dbf va fi

adaugata o noua inregistrare, in care vor fi depuse informatiile introduse de catre utilizator.

Selectarea celui de-al doilea declansator are ca urmare curatarea ecranului si activarea meniului principal.


q      PROCEDURA PR4


Alegerea optiunilor Cumparari Apartamente duca la apelul procedurii pr4, unde, prin intermediul obiectelor de control create si afisate pe ecran, utilizatorul va introduce in tabela cumparat.dbf datele referitoare la apartamentele cumparate de catre firma.

Vor fi introduse in campurile de editare corespunzatoare adresa apartamentului, numarul de camere pe care acesta le contine, pretul la care a fost achizitionat, numele, prenumele, seria si numarul buletinului de identitate al fostului proprietar, cat si numarul acestuia de telefon.

Apoi aceasta procedura creaza si afiseaza declansatoarele “Cumpara” si “Iesire”, declansatoare care au functii identice cu cele create in procedura pr3.


q      PROCEDURA PR5


Corespunde optiunilor de meniu Rapoarte Cumparari.

Procedura selecteaza zona 1 de lucru, zona in care este deschisa baza de date cumparat.dbf . In aceasta procedura se listeaza imobilele / terenurile care au fost cumparate de firma intr-o perioada data de timp.

Utilizatorul isi poate defini intervalul de timp pentru care se va face listarea, introducand data minima si data maxima. Apoi poate selecta destinatia afisarii (pe ecran sau la imprimanta), folosind butoane radio. In final se poate alege tipul de imobil(casa sau apartament) sau teren(intravilan sau agricol) tot prin intermediul unor butoane radio.

Dupa ce s-a realizat selectia, se sorteaza baza de date cumparat.dbf dupa campurile data_c, nume_v si pren_v, obtinandu-se astfel fisierul sortat cump.dbf, care se deschide in zona 3 de lucru, apoi se lanseaza in executie raportul rep1.frx, prin comanda REPORT FORM rep1.frx. Acest raport contine toate informatiile necesare despre imobilele / terenurile care au fost cumparate de firma in perioda: data minima – data maxima, precum si suma platita de firma pentru achizitionarea lor. La inchiderea raportului fisierul cump.dbf este sters din memorie.





q     

q      PROCEDURA PR6


Corespunde optiunilor de meniu Rapoarte Vanzari.

Procedura selecteaza zona 2 de lucru, zona in care este deschisa baza de date vandut.dbf . In aceasta procedura se listeaza imobilele / terenurile care au fost vandute de firma intr-o perioada data de timp.

Utilizatorul isi poate defini intervalul de timp pentru care se va face listarea, introducand data minima si data maxima. Apoi poate selecta destinatia afisarii (pe ecran sau la imprimanta), folosind butoane radio. In final se poate alege tipul de imobil(casa sau apartament) sau teren(intravilan sau agricol) tot prin intermediul unor butoane radio.

Dupa ce s-a realizat selectia, se sorteaza baza de date vandut.dbf dupa campurile data_v, nume_c si pren_c, obtinandu-se astfel fisierul sortat vand.dbf, care se deschide in zona 3 de lucru, apoi se lanseaza in executie raportul rep2.frx, prin comanda REPORT FORM rep2.frx. Acest raport contine toate informatiile necesare despre imobilele / terenurile care au fost vandute de firma in perioda: data minima – data maxima, precum si beneficiul obtinut de firma in urma vanzarilor (diferenta dintre pretul de vanzare si pretul de achizitie). La inchiderea raportului fisierul vand.dbf este sters din memorie.


q      PROCEDURA PR7


Procedura Pr7 este apelata de catre programul principal si corespunde optiunilor de meniu Vanzari         Terenuri Intravilane.

Se va selecta prin program zona de lucru 1, zona in care este deschisa baza de date cumparat.dbf, apoi se vor initializa o serie de variabile.

In continuare se va crea un masiv prin instructiunea DIMENSION. Acest masiv va avea ca elemente siruri de caractere formate prin concatenarea unor subsiruri obtinute din campuri ale bazei de date, campuri ce corespund inregistrarilor referitoare doar la terenuri intravilane. Selectia inregistrarilor se face prin instructiunea SCAN FOR intravilan=.T.

Elementele masivului mat1 se formeaza astfel:


Mat1 ( x ) = ( suprafata + ‘ ‘ + adresa + ‘ ‘ + str ( pret_cump + ( pret_cump*5 ) /100 + ‘ ‘)


Pret_cump + (pret_cump*5)/100 reprezinta pretul de vanzare al terenului intravilan ales, calculat din pretul cu care acesta a fost cumparat de catre firma la care este adaugat un procent de 5 la suta, care reprezinta beneficiul firmei.

Pe ecran va fi afisata o lista din care utilizatorul, un angajat al firmei, va alege terenul intravilan solicitat de catre client. In continuare, prin intermediul unor obiecte de control, se vor introduce in baza de date vandut.dbf date referitoare la client: nume, prenume, buletin de identitate, adresa, numarul de telefon.


q      PROCEDURA PR8


Aceasta procedura este identica cu procedura Pr7, diferenta constand in faptul ca este apelata atunci cand utilizatorul alege urmatoarea optiune de meniu:

Vanzari Terenuri Agricole, iar elementele listei din care clientii vor avea posibilitatea de a alege un anumit teren agricol pentru a-l cumpara, vor fi create din inregistrarile tabelei cumparat.dbf pentru care agricol=.T. .


q      PROCEDURA PR9


Corespunde optiunii de meniu Cumparari Terenuri Intravilane.

Procedura Pr9 creaza mai multe obiecte de control prin intermediul carora, in final, se vor introduce in baza de date cumparat.bdf informatii referitoare la terenurile intravilane cumparate de catre firma, terenuri cumparate pentru a fi revandute apoi cu un pret mai mare.

Prin intermediul a mai multor obiecte de control disponibile utilizatorul va introduce de la tastatura urmatoarele informatii:


Date referitoare la teren:


T    Adresa la care se afla terenul

T    Suprafata terenului

T    Pretul la care a fost cumparat


Date referitoare la proprietar:


T    Nume

T    Prenume

T    Buletin de identitate

T    Numar de telefon


In partea de jos a ecranului vor fi apoi afisate doua declansatoare:


v    Cumpara

v    Iesire


Odata cu selectarea primului dintre acestea, la baza de date cumparat.dbf va fi adaugata o noua inregistrare, utilizandu-se in acest scop comanda APPEND BLANK, inregistrare in care vor fi depuse informatiile introduse de catre utilizator.

Selectarea celui de-al doilea declansator are ca efect curatarea ecranului si activarea meniului principal, de unde operatorul va putea alege o alta optiune sau va putea iesi din program.


q      PROCEDURA PR10


Alegerea optiunilor Cumparari         Terenuri Agricole duce la apelul procedurii Pr10, unde, prin intermediul obiectelor de control create si afisate pe ecran, utilizatorul va introduce in tabela cumparat.dbf informatiile referitoare la terenurile agricole cumparate de catre firma.

Vor fi introduse in campurile de editare corespunzatoare locatia terenului, suprafata acestuia exprimata in metri patrati, pretul la care a fost achizitionat, numele, prenumele, seria si numarul buletinului de identitate al fostului proprietar, cat si numarul acestuia de telefon.

Apoi aceasta procedura creaza si afiseaza declansatoarele Cumpara si Iesire , declansatoare care au functii identice cu cele create in procedura Pr9.


q      PROCEDURA PR11


In aceasta procedura, utilizatorul are posibilitatea de a modifica sau a sterge anumite inregistrari din tabela vandut.dbf , adica sa opereze asupra imobilelor sau terenurilor vandute de firma.

La inceput se poate selecta prin intermediul unor butoane radio tipul actiunii: modificari sau stergeri.

Daca s-a ales optiunea de modificari, pe ecran apare un obiect de control de tip lista, unde sunt afisate adresele imobilelor / terenurilor vandute de firma. Dupa selectarea unei adrese, pe ecran vor aparea toate informatiile despre imobilul / terenul vandut de firma, iar utilizatorul are posibilitatea, prin deplasarea de pe un camp pe altul, sa modifice unde este cazul. La sfarsit, inregistrarea din baza de date vandut.dbf va fi modificata, dupa selectarea declansatorului OK.

Daca s-a ales optiunea de stergeri, pe ecran apare din nou un obiect de control de tip lista, unde sunt afisate adresele imobilelor / terenurilor vandute de firma. Dupa selectarea unei adrese, utilizatorul are optiunea de a decide stergerea inregistrarii, prin actionarea declansatorului STERGE, sau renuntarea la stergere, prin actionarea declansatorului IESIRE.




q      PROCEDURA PR12


In aceasta procedura, utilizatorul are posibilitatea de a modifica sau a sterge anumite inregistrari din tabela cumparat.dbf , adica sa opereze asupra imobilelor sau terenurilor cumparate de firma.

La inceput se poate selecta prin intermediul unor butoane radio tipul actiunii: modificari sau stergeri.

Daca s-a ales optiunea de modificari, pe ecran apare un obiect de control de tip lista, unde sunt afisate adresele imobilelor / terenurilor cumparate de firma. Dupa selectarea unei adrese, pe ecran vor aparea toate informatiile despre imobilul / terenul cumparat de firma, iar utilizatorul are posibilitatea, prin deplasarea de pe un camp pe altul, sa modifice unde este cazul. La sfarsit, inregistrarea din baza de date cumparat.dbf va fi modificata, dupa selectarea declansatorului OK.

Daca s-a ales optiunea de stergeri, pe ecran apare din nou un obiect de control de tip lista, unde sunt afisate adresele imobilelor / terenurilor cumparate de firma. Dupa selectarea unei adrese, utilizatorul are optiunea de a decide stergerea inregistrarii, prin actionarea declansatorului STERGE, sau renuntarea la stergere, prin actionarea declansatorului IESIRE.


q      PROCEDURA FINAL1


Aceasta procedura asigura iesirea din program in mediul de programare FoxPro.


q      PROCEDURA FINAL2


Aceasta procedura asigura iesirea din program in sistemul de operare.

















2.4 Codul sursa


*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'AAAAAAAAAAAAAAAAA' 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAAAAA' 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAA' color g+/b

@5,27 say'Date referitoare la imobil' color gr+/b

@ 6, 20, 10, 59 box 'ÚAs³ÙAÀ³'

@ 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAAAAAAAAA' color g+/b

@5,27 say'Date referitoare la imobil' color gr+/b

@ 6, 20, 10, 59 box 'ÚAs³ÙAÀ³'

@ 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' color g+/b

@5,27 say'Date referitoare la teren'           color gr+/b

@ 6, 20, 10, 59 box 'ÚAs³ÙAÀ³'

@ 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 'ÚAs³ÙAÀ³'

@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'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' color g+/b

@5,27 say'Date referitoare la teren' color gr+/b

@ 6, 20, 10, 59 box 'ÚAs³ÙAÀ³'

@ 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 'ÚAs³ÙAÀ³'

@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 informatica – Baze de date “

autori: Mariana Pantiru, Ionut Pantiru



“ Informatica economica “

autori: Catalin Francu



“ Microsoft FoxPro “

autori: Leon Tambulea




















Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright