Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Sisteme informatice. Proiectarea unei aplicatii vizuale

fox pro



+ Font mai mare | - Font mai mic



Sisteme informatice.     Proiectarea unei aplicatii vizuale



Un sistem informatic reprezinta un model fizic de simulare a comportamentului unei parti din lumea reala sau conceptuala. Acest model fizic este definit prin intermediul unui limbaj de programare si se concretizeaza intr-o aplicatie ce poate fi rulata pe un sistem de calcul.

Etapele parcurse in dezvoltarea unei aplicatii pot fi:

Culegerea de specificatii (analiza functionala), ce presupune definirea problemei, specificarea detaliata a functionalitatilor ce trebuie sa fie suportate de catre sistemul informatic

Analiza in cadrul careia se realizeaza identificarea caracteristicilor tuturor solutiilor corecte posibile

Proiectarea aplicatiei, care adauga modelelor de analiza noi elemente ce definesc o solutie particulara, optimizata

Implementarea aplicatiei, in care se realizeaza un proiect executabil al solutiei modelate in faza de proiectare

Testarea aplicatiei, in care se verifica echivalenta implementarii cu modelul proiectat si valideaza faptul ca implementarea respecta criteriile de corectitudine identificate in etapa de analiza.

Realizarea unui sistem informatic complex presupune utilizarea:

notiunilor de programare orientata pe obiecte pentru crearea interfetei aplicatiei

limbajului SQL pentru interogarea bazei de date.

Programare orientata pe obiecte in Visual FoxPro

Clasele Visual FoxPro sunt de doua tipuri:

clase de baza: clase de tip control si clase de tip container

clase definite de utilizator.

Exemple de clase de baza Visual FoxPro sunt prezentate in tabelul 1:

ActiveDoc

CommandButton

Label

TextBox

CheckBox

Combo-Box

ListBox

Image

Form

Container

OLEBoundControl

PageFrame

Grid

Control

OLEContainerControl

Shape

Tabel 1

Orice clasa de baza are asociate evenimente si proprietati. Exemple de evenimente comune claselor de baza Visual FoxPro sunt prezentate in tabelul 2:

Eveniment

Descriere

Init

Apare la crearea obiectului

Destroy

Apare la distrugerea obiectului

Error

Apare la generarea unei erori

Tabel 2

Exemple de proprietati comune claselor de baza Visual FoxPro sunt: Class (clasa care contine obiectul), BaseClass (clasa de baza, daca clasa curenta este derivata), ParentClass (clasa parinte, daca clasa curenta este derivata).

Crearea claselor definite de utilizator se poate realiza:

o       in mod vizual utilizand instrumentul Class Designer, sau

o       in mod programatic.

Crearea claselor utilizand instrumentul Class Designer

Metoda 1: din meniul File, optiunile New, Class, New Class, unde se specifica: numele clasei, clasa de baza si directorul unde se creeaza noua clasa.

Metoda 2: din fereastra de comenzi utilizand comanda:

CREATE CLASS nume_clasa | ?

[OF Nume1 | ?] [AS clasa_baza [FROM Nume2]] [NOWAIT]

Argumentele comenzii sunt:

? - afiseaza fereastra de dialog New Class; OF Nume1 - numele bibliotecii de clase vizuale ce se vor crea. Extensia fisierului este .vcx

AS clasa_baza - clasa de baza a noii clase; poate fi orice clasa definita de utilizator sau o clasa de baza cu exceptia urmatoarelor clase Column, Cursor, DataEnvironment, Header, Page si Relation. Daca se omite clauza AS, se considera clasa de baza FormSet.

FROM Nume2 - numele bibliotecii ce contine clasa de baza definita de utilizator; NOWAIT - continua executia programului, dupa ce a fost deschis Class Designer.

Exemplu: Sa se creeze o clasa pentru crearea unui buton de iesire dintr-un formular Visual FoxPro.

Crearea clasei buton1, folosind comanda CREATE CLASS (figura 1) - se stabilesc numele clasei (buton1), clasa de baza (CommandButton) si directorul unde se creeaza):

Fereastra Class Designer (figura 2) furnizeaza interfata pentru vizualizarea si editarea proprietatilor clasei create. Fereastra Properties contine lista de proprietati, evenimente si metode pentru obiectul selectat (ce poate fi un formular, control, cursor, relatie sau mediul de lucru salvat)

In fereastra Properties se opereaza urmatoarele modificari: Caption (E<xit) si procedura evenimentului Click (thisform.release) - figura 3:

Apelarea clasei se poate realiza astfel: se adauga la bara de instrumente Form Controls clasa creata anterior, din biblioteca Aplicatie.vcx (figura 4):

se traseaza pe formularul Form1 un control din clasa buton1; se stabilesc proprietatile controlului; se lanseaza in executie formularul Form1 si se verifica daca la efectuarea unui click pe butonul Exit, se inchide formularul (figura 5):

Proiectarea unei aplicatii vizuale

Fie baza de date FIRMA cu tabelele DEPART (departamente), ANG (angajati), SALGRD (grade salarizare). Sa se realizeze o aplicatie de gestiune a angajatilor din baza de date FIRMA, care sa foloseasca biblioteci de clase vizuale.

Etapele realizarii aplicatiei sunt:

Crearea proiectului si conectarea la baza de date - din meniul File, se aleg optiunile: New, Project. In fereastra Project Manager se expandeaza nodul Data à butonul Add pentru adaugarea bazei de date (figura 6):

Crearea formularului principal: din sectiunea Documents se selecteaza Forms à New à New Form.

Adaugarea paginilor pentru operatiile de baza: afisare, inserare date, cautare si stergere: afisarea barei de instrumente Form Controls: meniul View à Form Controls Toolbar à Form Controls (figura 7):

se traseaza pe formularul Form1 un control din clasa buton1 (creata la paragraful anterior), pentru iesirea din aplicatie, un control Page Frame (PageFrame1) cu proprietatile: Layout à Page Count (numarul de pagini) - 4; Pentru modificarea fiecarei pagini: selectare PageFrame1, click dreapta à Edit; Pagina 1: Caption - Afisare; pagina 2: Caption - Inserare date; pagina 3 - Cautare; pagina 4 -Stergere.

Pagina Afisare contine un control Grid (figura 8), care stabileste legatura cu baza de date - in sectiunea Data: Record Source Type - Alias; Record Source - angajati (vedere bazata pe o jonctiune interna a tabelelor ANG si DEPART).

Observatii:

q       Metoda Refresh a obiectului Form1 (Form1.Refresh) este:

create view angajati;

as select nume,functie, salariu, numedepart as Departament,;

loc as Localitate from ang inner join depart;

on ang.nrdepart=depart.nrdepart && jonctiune interna

use angajati

q       Metoda Load a obiectului Form1 (Form1.Load) este:

close databases

open database firma exclusive

thisform.refresh

Dupa compilarea aplicatiei in acest stadiu, se obtine formularul din figura 9:

Pagina Inserare date: butonul ,Adaugare angajat' - pentru inserarea unui angajat in tabelul ANG; etichetele Nume, Functie, Data nasterii, Nr departament, Salariu; obiectele TextBox: nume, functie, datan, nrdepart, salariu (figura 10):

Metoda ClickEvent asociata obiectului buton ,Adaugare angajat' contine:

dimension a(1,1)

a(1,1) = 0

select max(codang) from ang into array a

v_codang = a(1,1) +1

&& se determina urmatorul cod angajat disponibil

v_nume = proper(alltrim(thisform.PageFrame1.Page2.nume.text))

v_functie = upper(alltrim(thisform.PageFrame1.Page2.functie.text))

v_datan = ctod(thisform.PageFrame1.Page2.datan.text)

v_nrdepart = val(thisform.PageFrame1.Page2.nrdepart.text)

v_salariu = val(thisform.PageFrame1.Page2.salariu.text)

select depart

&& se verifica respectarea restrictiei referentiale la inserare

locate for v_nrdepart =nrdepart

if found() && daca exista departamentul v_nrdepart in tabelul parinte && DEPART se poate insera angajatul in tabelul copil ANG

if v_functie = 'VANZATOR'

v_comision = 200 && pentru vanzatori, se ofera un comision fix

else

v_comision = NULL

endif

insert into ang (nume, functie, codang, datan, nrdepart,;

salariu,comision);

values (v_nume, v_functie,v_codang , v_datan, v_nrdepart,;

v_salariu, v_comision)

&& se sterg datele din TextBox

thisform.PageFrame1.Page2.nume.value =' '

thisform.PageFrame1.Page2.functie.value = ' '

thisform.PageFrame1.Page2.datan.value = ' '

thisform.PageFrame1.Page2.nrdepart.value = ' '

thisform.PageFrame1.Page2.salariu.value = ' '

&& se actualizeaza vederea angajati obtinuta dintr-o interogare

requery('angajati')

else

&& nu se respecta restrictia referentiala la inserare

messageBox('Nu exista acest departament in firma')

&& se sterg datele din TextBox si inserarea angajatului nu are loc

thisform.PageFrame1.Page2.nume.value =' '

thisform.PageFrame1.Page2.functie.value = ' '

thisform.PageFrame1.Page2.datan.value = ' '

thisform.PageFrame1.Page2.nrdepart.value = ' '

thisform.PageFrame1.Page2.salariu.value = ' '

endif

Observatii:

q       Inserarea unui angajat folosind pagina ,Inserare date' se reflecta in pagina ,Afisare', datorita instructiunii: requery('angajati') care creeaza din nou vederea ,angajati' folosind interogarea din Form1.Refresh.

q       Codul angajatilor inserati in tabel se genereaza in ordine crescatoare folosind tabloul A, care memoreaza maximul din coloana ,codang' a tabelului ,ang'.

Pagina Cautare (figura 11) contine: butonul ,Cauta' - pentru cautarea unui angajat in tabelul ,ANG.DBF' dupa cod; etichetele Mesaj1 (Caption - Dati codul angajatului) si Mesaj2 (Caption -None); 1 obiect TextBox (cod) pentru citirea codului angajatului; 1 obiect Grid, pentru afisarea informatiilor despre angajat, daca exista (RecordSource Type - Alias; Visible -False); in sectiunea Layout: FontBold - True.

Metoda Click Event a obiectului buton este:

x= val(alltrim(thisform.PageFrame1.Page3.Cod.text))

select ang

locate for codang = x

if found()

create view angajat_gasit;

as select nume,codang as Cod_angajat,functie, salariu,;

numedepart as Departament,loc as Localitate from ang inner join;

depart on ang.nrdepart=depart.nrdepart where codang = x

use angajat_gasit

requery('angajat_gasit')

thisform.PageFrame1.Page3.Grid1.Visible = .T.

thisform.PageFrame1.Page3.Grid1.RecordSource='angajat_gasit'

thisform.PageFrame1.Page3.Mesaj2.Caption = 'Angajatul este:'

else

thisform.PageFrame1.Page3.Mesaj2.Caption = ;

'Nu exista acest angajat in baza de date'

thisform.PageFrame1.Page3.Grid1.Visible = .F.

thisform.PageFrame1.Page3.Cod.value = ' '

endif

Dupa compilarea aplicatiei in acest stadiu, se obtine formularul din figura 12:

Pagina Stergere contine: butonul ,Sterge' - care permite cautarea unui angajat in tabelul ,ANG.DBF' dupa cod si stergerea lui; etichetele Mesaj1 (Caption - Dati codul angajatului) si Mesaj2 (Caption -None); 1 obiect TextBox (cod) pentru citirea codului angajatului; in sectiunea Layout: FontBold - True (figura 13):

Metoda Click Event a obiectului buton este:

x= val(alltrim(thisform.PageFrame1.Page4.Cod.text))

select ang

locate for codang = x

if found()

y=alltrim(nume)

thisform.PageFrame1.Page4.Mesaj2.Caption =;

'Angajatul '+y+' va fi sters'

delete from ang where codang = x

pack

requery('angajati')

else

thisform.PageFrame1.Page4.Mesaj2.Caption = ;

'Nu exista acest angajat in baza de date'

thisform.PageFrame1.Page4.Cod.value = ' '

endif



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2090
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved