Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
COLEGIUL NATIONAL LICEAL "ALEXANDRU ODOBESCU"
Evidenta produselor dintr-un magazin
Prezentarea aplicatiei
O metoda simpla pentru mentinerea evidentei produselor dintr-un magazin este folosirea unui program ce contine toate aplicatiile necesare unei astfel de evidente. Am ales pentru realizarea aplicatiei, ca mediu de programare, limbajul Visual Fox Pro deoarece ofera pe langa facilitatile specifice SGBD-urilor si posibilitatea de a implementa o interfata prietenoasa.
Am creat baza de date Magazin.dbc cu tabelele produse.dbf si depozite.dbf.
produse.dbf depozite.dbf
codd C(3) codp C(5)
nume C(20) codd C(3)
adresa C(40) pretc N(10,2)
responsabil C(30) pretv N(10,2)
nrtel N(10) nrb N(4)
nume C(15)
Pentru realizarea aplicatiei am creat 7 formulare.
In formularul principal, operatiile sunt grupate intr-un "page frame" cu 2 pagini.
Pagina 1: Evidenta Depozite
In acest formular se introduc datele noului depozit, iar la apasarea butonului Adaugare depozit se introduc datele intr-o intrare noua in tabela Produse.dbf.
In acest formular se introduc numele si codul depozitului pentru care se fac modificarile, iar daca acestea sunt valide se trece la modificarea datelor pentru respectivul depozit.
In acest formular se introduce codul depozitului care urmeaza sa fie sters din baza de date. La apasarea butonului « Sterge depozit » respectivul depozit este sters din baza de date.
Pagina 2: Evidenta Produse
In acest formular se introduc datele noului produs, iar la apasarea butonului « Adaugare produs » se introduc datele intr-o noua intrare in tabela « Produse.dbf ». Daca produsul exista deja, numarul de bucati va fi suplimentat cu cel citit.
In acest formular se introduc numele si codul produsului pentru care se fac modificarile, iar daca acestea sunt valide se trece la modificarea datelor pentru respectivul produs.
In acest formular se introduce codul produsului care va fi vandut, precum si numarul de bucati care vor fi vandute. In cazul in care nu exista respectivul produs sau nu mai sunt destule bucati disponibile, va fi afisat un mesaj corespunzator.
Codul sursa
Formularul principal "Evidenta produselor si depozitelor"
Evenimentul "Load"
SET DEFAULT TO 'c:My DocumentsVisual FoxPro ProjectsAtestatuv15'
DEFINE WINDOW win FROM 10,3 TO 34,70
use
USE depozite.dbf
Pageframe1
Page1
Label "Adaugare depozit"
Evenimentul "Click"
DO FORM adaugdepo.scx
Label "Modificare depozit"
Evenimentul "Click"
DO FORM modifdepo.scx
Label "Stergere depozit"
Evenimentul "Click"
DO FORM stergdepo.scx
Label "Listare depozite"
Evenimentul "MouseMove"
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.pf.pg1.optiongroup2.Visible= .f.
thisform.pf.pg1.optiongroup1.Visible= .t.-
Label "Cautare depozite"
Evenimentul "MouseMove"
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.pf.pg1.optiongroup2.Visible= .t.
USE depozite.dbf
Optiongroup1
Option1 ''Dupa cod''
Evenimentul "Click"
DO depozitequery2.qpr
Option2 ''Dupa nume''
Evenimentul "Click"
DO depozitequery3.qpr
Option3 ''Dupa adresa''
Evenimentul "Click"
DO depozitequery4.qpr
Option4 ''Dupa responsabil''
Evenimentul "Click"
DO depozitequery5.qpr
Option5 "Dupa numar telefon"
Evenimentul "Click"
DO depozitequery6.qpr
Optiongroup2
Option1 "Dupa cod"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg1.text1.value))==UPPER(TRIM(codd))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg1.text1.value))==UPPER(TRIM(codd)) field nume,responsabil,nrtel off
ELSE
@1,1 say 'Depozitul nu exista'
endif
WAIT ''
thisform.pf.pg1.text1.value=''
DEACTIVATE WINDOW win
Option2 "Dupa nume"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg1.text1.value))==UPPER(TRIM(nume))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg1.text1.value))==UPPER(TRIM(nume)) field nume,responsabil,nrtel off
ELSE
@1,1 say 'Depozitul nu exista'
endif
WAIT ''
thisform.pf.pg1.text1.value=''
DEACTIVATE WINDOW win
Option3 "Dupa adresa"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg1.text1.value))==UPPER(TRIM(adresa))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg1.text1.value))==UPPER(TRIM(adresa)) field nume,responsabil,nrtel off
ELSE
@1,1 say 'Depozitul nu exista'
endif
WAIT ''
thisform.pf.pg1.text1.value=''
DEACTIVATE WINDOW win
Option4 "Dupa responsabil"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg1.text1.value))=UPPER(TRIM(responsabil))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg1.text1.value))=UPPER(TRIM(responsabil))field nume,responsabil,nrtel off
ELSE
@1,1 say 'Depozitul nu exista'
endif
WAIT ''
thisform.pf.pg1.text1.value=''
DEACTIVATE WINDOW win
Option5 "Dupa numar telefon"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
LOCATE ALL FOR val(thisform.pf.pg1.text1.value)=nrtel
IF FOUND()
DISPLAY all for val(thisform.pf.pg1.text1.value)=nrtel field nume,responsabil,nrtel off
ELSE
@1,1 say 'Depozitul nu exista'
endif
WAIT ''
thisform.pf.pg1.text1.value=''
DEACTIVATE WINDOW win
Page 2
Label "Achizitionare produs"
Evenimentul "Click"
do form adaugprodus.scx
Label "Modificare produs"
Evenimentul "Click"
DO FORM modifprodus.scx
Label "Stergere produs"
Evenimentul "Click"
DO FORM stergprodus.scx
Label "Listare produse"
Evenimentul "MouseMove"
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.pf.pg2.optiongroup3.Visible= .t.
Label "Cautare produse"
Evenimentul "MouseMove"
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.pf.pg2.optiongroup4.Visible= .t.
USE produse.dbf
Optiongroup3
Option1 "Dupa cod"
Evenimentul "Click"
DO produsequery1.qpr
Option2 "Dupa nume"
Evenimentul "Click"
DO produsequery2.qpr
Option3 "Dupa depozit"
Evenimentul "Click"
DO produsequery3.qpr
Option4 "Dupa pret vanzare"
Evenimentul "Click"
DO produsequery4.qpr
Option5 "Dupa pret cumparare"
Evenimentul "Click"
DO produsequery5.qpr
Optiongroup4
Option1 "Dupa cod"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
USE produse.dbf
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg2.text1.value))=UPPER(TRIM(codp))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg2.text1.value))=UPPER(TRIM(codp)) field nume,pretv,pretc off
ELSE
@1,1 say 'Produsul nu exista'
ENDIF
WAIT ''
thisform.pf.pg2.text1.value=''
use
DEACTIVATE WINDOW win
Option2 "Dupa nume"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
USE produse.dbf
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg2.text1.value))=UPPER(TRIM(nume))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg2.text1.value))=UPPER(TRIM(nume)) field nume,pretv,pretc off
ELSE
@1,1 say 'Produsul nu exista'
ENDIF
WAIT ''
thisform.pf.pg2.text1.value=''
use
DEACTIVATE WINDOW win
Option3 "Dupa depozit"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
USE produse.dbf
LOCATE ALL FOR UPPER(TRIM(thisform.pf.pg2.text1.value))=UPPER(TRIM(codd))
IF FOUND()
DISPLAY all for UPPER(TRIM(thisform.pf.pg2.text1.value))=UPPER(TRIM(codd)) field nume,pretv,pretc off
ELSE
@1,1 say 'Produsul nu exista'
ENDIF
WAIT ''
thisform.pf.pg2.text1.value=''
use
DEACTIVATE WINDOW win
Option4 "Dupa pret vanzare"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
USE produse.dbf
LOCATE ALL FOR val(thisform.pf.pg2.text1.value)=pretv
IF FOUND()
DISPLAY all for val(thisform.pf.pg2.text1.value)=pretv field nume,pretv,pretc off
ELSE
@1,1 say 'Produsul nu exista'
ENDIF
WAIT ''
thisform.pf.pg2.text1.value=''
use
DEACTIVATE WINDOW win
Option5 "Dupa pret cumparare"
Evenimentul "Click"
ACTIVATE WINDOW win
CLEAR
USE produse.dbf
LOCATE ALL FOR val(thisform.pf.pg2.text1.value)=pretc
IF FOUND()
DISPLAY all for val(thisform.pf.pg2.text1.value)=pretc field nume,pretv,pretc off
ELSE
@1,1 say 'Produsul nu exista'
ENDIF
WAIT ''
thisform.pf.pg2.text1.value=''
use
DEACTIVATE WINDOW win
Formularul "Adugare depozit"
Evenimentul "Load"
SET DEFAULT TO 'c:My DocumentsVisual FoxPro ProjectsAtestatuv15'
USE depozite.dbf
Evenimentul "Unload"
Use
Butonul "Adaugare depozit"
Evenimentul "Click"
OPEN DATABASE magazin.dbc
USE depozite.dbf
LOCATE ALL FOR (UPPER(TRIM(codd))=UPPER(TRIM(thisform.txtcodd.value))) and(UPPER(TRIM(nume))=UPPER(TRIM(thisform.txtnume.value)))
IF FOUND()
thisform.text1.Visible=.T.
thisform.text1.Value='Eroare:depozitul exista deja'
ELSE
APPEND BLANK
replace codd WITH thisform.txtcodd.value;
adresa WITH thisform.txtadresa.value;
nume WITH thisform.txtnume.value;
responsabil WITH thisform.txtresponsabil.value;
nrtel WITH VAL(thisform.txtnrtel.value)
ENDIF
CLOSE DATABASES
use
Formularul "Modificare depozit"
Evenimentul "Load"
SET DEFAULT TO 'C:Evidenta Produselor Dintr-un Magazin'
CLOSE DATABASES all
USE depozite.dbf
Evenimentul "Unload"
Use
Butonul "Modificare"
Evenimentul "Click"
IF thisform.txtadresa.Enabled = .T.
LOCATE ALL FOR (UPPER(TRIM(codd))=UPPER(TRIM(thisform.txtcodd.value))) AND (UPPER(TRIM(nume))=UPPER(TRIM(thisform.txtnume.value)))
IF FOUND()
replace codd WITH thisform.txtcodd.value;
adresa WITH thisform.txtadresa.value;
nume WITH thisform.txtnume.value;
responsabil WITH thisform.txtresponsabil.value;
nrtel WITH VAL(thisform.txtnrtel.value)
thisform.txtAdresa.Enabled = .F.
thisform.txtresponsabil.Enabled = .F.
thisform.txtnrtel.Enabled = .F.
thisform.text1.Value='Introduceti datele depozitului ale carui date vreti sa le modificati si apasati ,,modificare`` '
endif
ELSE
LOCATE ALL FOR (UPPER(TRIM(codd))=UPPER(TRIM(thisform.txtcodd.value))) AND (UPPER(TRIM(nume))=UPPER(TRIM(thisform.txtnume.value)))
IF FOUND()
thisform.txtAdresa.Enabled = .T.
thisform.txtresponsabil.Enabled = .T.
thisform.txtnrtel.Enabled = .T.
thisform.text1.Value= 'Modificati datele si apasati din nou modificare'
ELSE thisform.text1.Value= 'Depozitul nu exista, va rog introduceti datele din nou'
ENDIF
ENDIF
thisform.Refresh
Formularul "Stergere depozit"
Evenimentul "Load"
SET DEFAULT TO 'C:Evidenta Produselor Dintr-un Magazin'
CLOSE DATABASES all
Evenimentul "Unload"
Use
Butonul ,,Sterge depozit"
Evenimentul "Click"
OPEN DATABASE magazin.dbc
USE depozite.dbf
LOCATE ALL FOR UPPER(TRIM(thisform.text1.Value))=UPPER(TRIM(codd))
IF FOUND()
DELETE
thisform.text2.Value='Depozitul a fost sters'
ELSE
thisform.text2.Value='Depozitul nu exista'
ENDIF
use
CLOSE DATABASES
Formularul "Adaugare produs"
Evenimentul "Load"
SET DEFAULT TO 'C:Evidenta Produselor Dintr-un Magazin'
CLOSE DATABASES all
Evenimentul "Unload"
Use
Butonul "Achizitionare produs"
Evenimentul "Click"
OPEN DATABASE magazin.dbc
USE produse.dbf
LOCATE ALL FOR (UPPER(TRIM(thisform.txtCodp.value))==UPPER(TRIM(codp)))and(UPPER(TRIM(thisform.txtnume.Value))=UPPER(TRIM(nume)))
IF FOUND()
thisform.text1.Value='produsul exista deja,numarul de bucati a fost suplimentat'
replace nrb WITH nrb+VAL(thisform.txtNrb.value)
ELSE
APPEND BLANK
replace codd WITH thisform.txtcodd.Value;
codp WITH thisform.txtcodp.value;
nume WITH thisform.txtnume.Value;
pretc WITH VAL(thisform.txtpretc.value);
pretv WITH VAL(thisform.txtpretv.value);
nrb with VAL(thisform.txtnrb.value)
thisform.text1.Value='Produsul a fost achizitionat, introduceti alt produs'
thisform.txtcodd.Value=''
thisform.txtcodp.value=''
thisform.txtnume.Value=''
thisform.txtpretc.value=''
thisform.txtpretv.value=''
thisform.txtnrb.value=''
ENDIF
use
CLOSE DATABASES
Formularul "Modificare produse"
Evenimentul "Load"
SET DEFAULT TO 'C:Evidenta Produselor Dintr-un Magazin'
CLOSE DATABASES all
USE produse.dbf
Evenimentul "Unload"
Use
Butonul "Modifica"
Evenimentul "Click"
IF thisform.txtCodd.Enabled=.T.
LOCATE ALL FOR (UPPER(TRIM(thisform.txtCodp.value))=UPPER(TRIM(codp)))and(UPPER(TRIM(thisform.txtnume.Value))=UPPER(TRIM(nume)))
IF FOUND()
thisform.txtnume.Value=nume
thisform.txtcodp.Value=codp
replace codd WITH VAL(thisform.txtCodd.value)
replace pretc WITH VAL(thisform.txtpretc.value)
replace pretv WITH VAL(thisform.txtpretv.value)
replace nrb WITH VAL(thisform.txtNrb.value)
replace nume WITH thisform.txtnume.Value
replace codp WITH VAL(thisform.txtcodp.Value)
endif
else
LOCATE ALL FOR (UPPER(TRIM(thisform.txtCodp.value))=UPPER(TRIM(codp)))and(UPPER(TRIM(thisform.txtnume.Value))=UPPER(TRIM(nume)))
IF FOUND()
thisform.txtCodd.Enabled=.T.
thisform.txtpretc.Enabled=.T.
thisform.txtpretv.Enabled=.T.
thisform.txtNrb.Enabled=.T.
thisform.text1.Value='Modificati datele si apasati din nou modificare'
ELSE
thisform.text1.Value='produsul nu exista'
ENDIF
Endif
Formularul "Vanzare produs"
Evenimentul "Load"
SET DEFAULT TO 'C:Evidenta Produselor Dintr-un Magazin'
CLOSE DATABASES all
USE produse.dbf
Evenimentul "Unload"
Use
Butonul "Vanzare produs"
Evenimentul
"Click"
LOCATE
ALL FOR UPPER(TRIM(thisform.text1.Value))=UPPER(TRIM(codp))
IF FOUND()
IF nrb>=VAL(thisform.text3.value)
replace nrb with nrb-VAL(thisform.text3.Value)
thisform.text2.value='Produsul a fost vandut'
ELSE thisform.text2.value='Nu mai avem destule bucati din acest produsul in stoc'
ENDIF
endif
Copyright © 2024 - Toate drepturile rezervate