CATEGORII DOCUMENTE |
I.TEMA
CENTRU DE VANZARE AL PIESELOR DE MASINI
Programul urmator, conceput in limbajul de programare Visual Fox Pro 6.0 poate fi utilizat la un centru de vanzare al masinilor
Volumul foarte mare de date necesare pentru a tine evidenta tuturor masinilor existente necesita o munca obositoare de contabilitate.
Programul de fata inlesneste retinerea acestor informatii intr-un mod
mult mai eficient. Cu ajutorul acestui program firma nu mai are nevoie de un contabil toate operatiunile putand fi efectuate de un gestionar si contractele s-ar incheia mult mai repede si fara prea mult fast.
Programul elimina necesitatea retinerii tuturor informatiilor in dosare, ce pot fi usor incurcate sau foarte greu de gasit in unele situatii.
In cazul in care un client doreste o anumita masina cautarea acesteia se face automat, dupa specificarea nume si prenume,nefiind necesara o munca fizica prestata de catre contabilul acelei firme.
De asemenea daca un client doreste o masina cuprinsa intre un anumit pret cu o listare dupa pret acesta isi poate alege piesa dorinta fara a i se mai prezenta si celelalte piese care nu il intereseaza.
Am creat acest program pentru a usura munca contabililor caracteristicile sa de baza fiiind: eficacitate, rapiditate si corectitudine.
II.DESCRIEREA LIMBAJULUI FOXPRO
Odata cu trecerea timpului si dezvoltarea informaticii, calculatorul s-a implicat in tot mai multe domenii de activitate, o multitudine de probleme gasindu-si astfel rezolvarea prin intermediul sau.
Datorita diversitatii problemelor rezolvate cu ajutorul calculatorului nu s-a putut realiza un program care sa rezolve (orice problema), realizandu-se in schimb mai multe programe (sau pachete de programe), fiecare specializat in rezolvarea unui anumit tip de problema. In functie de problema pe care o are de rezolvat, utilizatorul unui calculator alege acel program care se potriveste cel mai bine in realizarea scopului propus.
S-a ajuns astfel la o specializare foarte accentuata a sistemelor informatice, orientate spre rezolvarea diverselor tipuri de probleme.
O clasificare a problemelor rezolvate cu ajutorul calculatorului, tinand cont de volumul datelor si al prelucrarilor implicate in rezolvare ar putea fi urmatoarea :
probleme care implica prelucrari putine asupra unui volum mare de date
probleme a caror rezolvare presupune un volum mediu de prelucrari asupra unui volum mediu de date
probleme in rezolvarea carora intra un volum mic de date asupra lor efectuandu-se un volum mare de prelucrari.
Sistemele de gestiune a bazelor de date (SGBD) reprezinta sisteme informatice specializate in stocarea si prelucrarea unui volum mare de date, in rezolvarea problemelor de primul tip, din clasificarea anterioara.
Termenul de baza de date se va referi la datele de prelucrat, la modul de organizare a acestora pe suportul fizic de memorat iar termenul de gestiune se va referi la actiunea de memorare si prelucrare a acestor date.
Un SGBD trebuie sa asigure urmatoarele functiuni elementare, referitoare la bazele de date :
definirea bazei de date
introducerea datelor (adaugarea de noi date la baza de date)
modificarea unor date existente in baza de date
stergerea unor date
interogarea bazei de date, adica extragerea informatiilor stocate in aceasta
Pe masura dezvoltarii acestor sisteme lista s-a completat cu facilitati importante cum ar fi :
generare de rapoarte
modalitati noi de interogare a bazei de date (de exemplu un limbaj de tip SQL)
noi tipuri de organizare a bazelor de date si noi tipuri de acces (de exemplu accesul indexat)
FOXPRO 2.6 este un sistem de gestiune al bazelor de date relational iar in comparatie cu concurentii sai directi (DBASE 4 si PARADOX 2.5) se mentine in frunte datorita performantelor sale. Principalele sale atuuri sunt folosirea optimizarii Rushmore si prezenta in limbaj a unor instructiuni SQL.
Comenzile FOXPRO permit descrierea tuturor functiunilor generale ale unui SGBD, anume :
gestionarea structurii conceptuale a bazei de date separat de structura fizica (CREATE, MODIFY STRUCTURE, COPY STRUCTURE, DISPLAY STRUCTURE, CREATE TABLE)
gestionarea datelor : incarcare (APPEND, INSERT), modificare (REPLACE, EDIT, CHANGE), stergere (DELETE, ZAP, PACK, RECALL)
satisfacerea cerintelor de regasire rapida a datelor, fie prin specificarea unor criterii complexe de selectie, cit si prin folosirea unor chei de acces (FIND, SEEK, LOCATE) afisarea datelor in diferite modalitati (CREATE/MODIFY REPORT, CREATE/MODIFY LABEL, CREATE/MODIFY SCREEN)
programare structurata (IF, CASE, DO WHILE, SCAN)
modularizare si parametrizare (PROCEDURE, FUNCTION)
facilitati ale utilizatorilor in organizarea mediului de lucru (SET COLOR, DEFINE WINDOW, DEFINE MENU), protectie (SET LOCK, SET EXCLUSIVE, SET ENCRYPTION)
Elemente ale limbajului Foxpro folosite in aplicatie
Un element important al mediului FoxPro este fereastra, care reprezinta o portiune a ecranului tratata ca un unic element, cu anumite caracterisitici ce determina actiunile ce se pot executa asupra acesteia. Pe langa feresttrele ce apartin mediului FoxPro si care au fost definite la crearea acestui sistem de programe se pot defini ferestre si de catre utilizator, care pot fi utilizate in programele de aplicatii create sub mediul FoxPro.
Modul de lucru cu aceste ferestre este urmatorul:
mai intai acestea se definesc, cu ajutorul comenzii DEFINE WINDOW, moment in care se precizeaza si atributele lor
dupa definire se vor afisa pe ecran, folosind comenzile ACTIVATE WINDOW sau SHOW WINDOW si vor fi inlaturate de pe ecran la executarea comenzilor DEACTIVATE WINDOW sau HIDE WINDOW
pentru inlaturarea ferestrelor din memorie si bineinteles, de pe ecran, se folosesc comenzile CLEAR WINDOWS sau RELEASE WINDOWS
Alaturi de ferestre, meniurile FoxPro dau acestui mediu si acestui limbaj o putere deosebita, atat datorita eficientei si comoditatii cu care se lucreaza cu aceste elemente, ci si datorita aspectului deosebit de placut pe care cele doua elemente il ofera programelor de aplicatii si mediului FoxPro.
Meniul reprezinta un element FoxPro prin care se ofera utilizatorului posibilitatea selectarii unei anumite optiuni, dintr-o multime finita de optiuni posibile, afisata pe ecran total sau partial, urmand ca, in functie de selectarea facuta, sa se declanseze anumite actiuni, corespunzatoarea optiunii alese.
Un meniu este format dintr-o "bara a meniului" si mai multe "submeniuri". Bara meniului contine la randul ei mai multe optiuni, numite "optiuni bara", fiecareia dintre acestea putandu-i-se atasa un submeniu. Fiecare submeniu este format la randul lui din "optiuni".
Modul de lucru cu submeniurile definite de utilizator este urmatorul:
mai intai se defineste meniul respectiv, prin urmatoarele etape:
definirea barei meniului
definirea optiunilor bara
definirea submeniurilor
definirea optiunilor
definirea actiunilor ce se executa la alegerea unei optiuni sau a unei optiuni bara a meniului
se activeaza meniul, urmand a se selecta optiunea dorita a acestuia
se efectueaza diferite operatii specifice meniului
III. DESCRIEREA APLICATIEI
Fiind o aplicatie care necesita prelucrarea unui volum mare de date am ales drept limbaj pentru scrierea acestuia limbajul FOXPRO . Aplicatia poate rula pe sisteme de operare Windows 9x, Windows NT.
In cadrul aplicatiei am folosit folosit urmatoarele baze de date:
1. Marca Character 20
2. Pret Numeric 7
3. Greutate Numeric 2
4. Nr_buc Numeric 2
5. Tehnic Memo 10
1. Nume Character 22
2. Produs Character 20
3. Nr_buc Numeric 2
4. Data Date 8
Meniul principal al aplicatiei este:
Optiunea OPERATII permite realizarea de operatii asupra
bazelor de date. La selectarea acestei optiuni pe ecran va aparea urmatorul
meniu vertical:
Optiunea Adaugare permite inserarea unui nou tip de masina
in baza da date. Pe ecran va aparea o fereastra care cere utilizatorului sa introduca datele cerute.
In cazul in care masina exista in baza de date se va efectua numai incrementarea numarului de masini din stoc.
La selectarea optiunii Vanzare pe ecran va aparea o fereastra identica cu cea de mai jos.Prin intermediul acesteia se va vinde un numar de masini dintr-o anumita categorie in acelasi timp adaugandu-se si un nou articol la baza de date tranzactii.
La selectarea optiunii Cautare va aparea o fereastra in care utilizatorul va trebui sa treaca in zona marca masinii care doreste sa fie cautata.Daca aceasta masina este gasita se vor afisa datele referitoare la ea in caz contrar afisandu-se mesajul:
"NU EXISTA MASINA"
La selectarea optiunii Mod_pret se va schimba pretul unei categorii
de produse.
La selectarea barei Afisare va aparea un nou meniu vertical prin care utilizatorul poate alege baza de date ce va fi afisata.
Daca utilizatorul alege optiunea din Masini va aparea un nou meniu vertical prin care utilizatorul poate vedea lista masinilor existente in stoc sortate dupa marca pieselor sau dupa pret.
In cazul alegerii celei de a doua optiuni utilizatorului i se va afisa lista clientilor ordonata dupa nume sau dupa data in care acestia au achizitionat
masinile.
La selectarea barei Stergere din meniul principal va aparea un meniu vertical.
Acest meniu permite stergerea datelor introdu-se gresit sau stergerea clientilor care au achizitionat masini inaintea unei date introduse de la tastatura.
La selectarea optiunii Statistici din meniul principal va aparea deasemenea un meniu vertical:
La selectarea meniului Total se va afisa suma totala care a fost incasata de catre firma din vanzarea masinilor iar la selectarea celuilalt meniu se va afisa cea mai bine vanduta masina.
La selectarea ultimei bare din meniul principal va aparea
urmatoarea fereastra:
La selectarea acestui meniu utilizatorul poate parasi aplicatia in Foxpro sau in Sistemul de operare folosit de obicei Windows-ul.
LISTINGUL APLICATIEI
clear
set clock on
set safety off
set talk off
set bell off
set century on
set date to dmy
set escape off
set exact off
set default to 'C:Documents and SettingsHPDesktopATESTAT2'
close all
release all
*************INCEPUTUL ** ** ******
SET CURSOR ON
SET SYSMENU TO
SET SYSMENU AUTOMATIC
DEFINE WINDOW W1 FROM 10,0 TO 17,30 NONE CLOSE FLOAT MINIMIZE
ACTIVATE WINDOW W1
SHOW WINDOW W1
@ 1,7 SAY 'CONTABILUL'
@ 3,1 SAY 'CENTRU DE VANZARE MASINI'
FOR I=1 TO 7
MOVE WIND W1 BY 0,I
X=SECO()+0.1
DO WHILE SECO()<X
ENDD
ENDF
X=SECO()+2
DO WHILE SECO()<X
ENDD
DEACTIVATE WINDOW W1
CLEAR
WAIT WIND 'LOADING' TIMEOUT 2
CLEAR
** ** *BAZE DE DATE ** ** ***
use MASINI.DBF in 1
use TRANZACT.DBF in 2
** ** *MENIURI ** ** *********
define pad p1 of _MSYSMENU prompt '<Operatii ' message 'Actiuni'
define pad p2 of _MSYSMENU prompt '<Stergere ' message 'Se va efectua stergerea unor articole din DBf'
define pad p3 of _MSYSMENU prompt '<Statistici' message 'Suma totala incasata pe vanzarea masinilor'
define pad p4 of _MSYSMENU prompt '<Exit' message 'Iesire din aplicatie '
on pad p1 of _MSYSMENU activate popup pop1
define popup pop1
define bar 1 of pop1 prompt '<Adaugare' message 'Adaugare unei noi masini
define bar 2 of pop1 prompt '<Vanzare ' message 'Incheierea unui contract de vanzare'
define bar 3 of pop1 prompt '<Cautare ' message 'Cautarea unei masini'
define bar 4 of pop1 prompt '<Mod_pret' message 'Se va modifica pretul la o masina'
define bar 5 of pop1 prompt '<Afisare ' message 'Afisarea masinilor sau a contractelor'
on sele bar 1 of pop1 do adaugare
on sele bar 2 of pop1 do vanzare
on sele bar 3 of pop1 do cautare
on sele bar 4 of pop1 do pret
on bar 5 of pop1 activate popup pop
define popup pop
define bar 1 of pop prompt 'din <Masini ' message 'se va afisa continutul din Masini.dbf'
define bar 2 of pop prompt 'din <Contracte' message 'se va afisa continutul din tranzactii.dbf'
on bar 1 of pop activate popup one
on bar 2 of pop activate popup two
define popup one
define bar 1 of one prompt 'dupa <nume' message 'se vor afisa masinile ordonate alfabetic'
define bar 2 of one prompt 'dupa <pret' message 'se vor afisa masinile ordonate crescator dupa pret'
define popup two
define bar 1 of two prompt 'dupa <nume' message 'se vor afisa clientii ordonati alfabetic'
define bar 2 of two prompt 'dupa <data' message 'se vor afisa contractele ordonate dupa data'
on sele bar 1 of one do list1
on sele bar 2 of one do list2
on sele bar 1 of two do list3
on sele bar 2 of two do list4
on pad p2 of _MSYSMENU activate popup pop2
define popup pop2
define bar 1 of pop2 prompt '<Masini ' message 'Stergerea unei masini'
define bar 2 of pop2 prompt '<Tranzactii' message 'Stergerea unor clienti'
on sele bar 1 of pop2 do sterge
on bar 2 of pop2 activate popup michelin
define popup popa
define bar 1 of popa prompt '<Client' message 'Se va sterge un anumit client'
define bar 2 of popa prompt '<Data ' message 'Se vor sterge clientii care au incheiat contracte inainte de o anumita data'
on sele bar 1 of popa do sterge
on sele bar 2 of popa do sterge
on pad p3 of _MSYSMENU activate popup popy
define popup popy
define bar 1 of popy prompt '<Total ' message 'Se va afisa suma totala incasata din vanzarea masinilor'
define bar 2 of popy prompt '<Masina ' message 'Se va afisa cea mai bine vanduta masina'
on sele bar 1 of popy do total
on sele bar 2 of popy do statistic
on pad p4 of _MSYSMENU activate popup pop3
define popup pop3
define bar 1 of pop3 prompt '<Sistem de operare'
define bar 2 of pop3 prompt '<Foxpro'
on selection popup pop3 do iesire
ies=.f.
do while ies=.f.
ACTIVATE MENU _MSYSMENU
endd
SET SYSMENU TO DEFAULT
***********PROCEDURI ** ** *********
procedure list1
define window w1 from 3,3 to 22,60
activate window w1
sele 1
index on marca tag temp1
i=0
SCAN
IF i=4
WAIT 'apasa o tasta'
i=0
CLEAR
ENDIF
DISPLAY off
i=i+1
endscan
wait 'sfarsitul bazei de date'
clear
close index
deactivate window w1
return
procedure list2
define window w1 from 10,10 to 35,75
activate window w1
sele 1
index on pret tag temp2 descending
i=0
do while not eof()
if i=4
wait 'apasa o tasta'
i=0
clear
endif
disp off
i=i+1
skip
endd
wait 'sfarsitul bazei de date'
clear
close index
deactivate window w1
return
procedure list3
define window w1 from 10,10 to 35,75
activate window w1
sele 2
index on nume tag temp3
i=0
do while not eof()
if i=4
wait 'apasa o tasta'
i=0
clear
endif
disp off
i=i+1
skip
endd
wait 'sfarsitul bazei de date'
clear
close index
deactivate window w1
return
procedure list4
define window w1 from 10,10 to 35,75
activate window w1
sele 2
index on data tag temp1 ascending
i=0
do while not eof()
if i=4
wait 'apasa o tasta'
i=0
clear
endif
disp off
i=i+1
skip
endd
wait 'sfarsitul bazei de date'
clear
close index
deactivate window w1
return
procedure stergm
define window w1 from 10,10 to 25,50
activate window w1
ok=.t.
do while ok=.t.
sele 1
num=space(16)
@ 2,4 say 'marca:' get num function'!'
read
go top
locate for num=marca
if found()
dele for num=marca
pack
?'STERGEREA A FOST EFECTUATA!'
else
?'NU EXISTA PIESA'
endif
y=' '
@ 8,4 say 'Doriti sa continuati'DA/NU':' get y function '!'
read
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure sterg
define window w1 from 10,10 to 25,50
activate window w1
ok=.t.
do while ok=.t.
sele 2
num=space(22)
@ 2,4 say 'nume:' get num function'!'
read
go top
locate for num=nume
if found()
dele for num=nume
pack
?'STERGEREA A FOST EFECTUATA!'
else
?'NU EXISTA CLIENTUL'
endif
y=' '
@ 8,4 say 'Doriti sa continuati'DA/NU':' get y function '!'
read
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure sterge
define window w1 from 10,10 to 25,50
activate window w1
ok=.t.
do while ok=.t.
sele 2
data1=
@ 2,4 say 'data:' get data1 function'D'
read
go top
dele for data<data1
pack
?'STERGEREA A FOST EFECTUATA!'
y=' '
@ 8,4 say 'Doriti sa continuati'DA/NU':' get y function '!'
read
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure adaugare
define window w1 from 7,7 to 30,80
activate window w1
sele 1
ok=.t.
do while ok=.t.
num=space(16)
@ 5,4 say 'marca:' get num function'!'
read
go top
locate for num=marca
if found()
@ 6,4 say 'aceasta masina exista in stoc se va efectua marirea stocului'
x=0
@ 8,4 say 'nr_buc:' get x function'9'
read
replace nr_buc with nr_buc+x
else
append blank
replace marca with num
@ 6,4 say 'pret ' get pret picture'999999'
@ 7,4 say 'greutate ' get greutate picture'99'
@ 8,4 say 'nr_buc ' get nr_buc picture'99'
?'Pentru a completa campul campul memo tastati CTRL+PAGE UP!'
define wind w2 from 17,20 to 20,70
@ 10,4 say 'tehnic ' get tehnic function 'A' open window w2
read
endif
y=' '
@ 16,4 say 'Doriti sa continuati 'DA/NU':' get y function '!'
read
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure cautare
define window w1 from 10,10 to 30,80
activate window w1
ok=.t.
do while ok=.t.
sele 1
num=space(16)
@ 5,4 say 'marca:' get num function'!'
read
go top
locate for num=marca
if found()
DISPLAY FIELDS marca,pret, greutate, nr_buc
ref=' '
@ 9,4 say 'doriti sa vedeti referinte tehnice'DA/NU':' get ref function'!'
read
if ref='DA'
disp tehnic off
endif
else
?'NU EXISTA MASINA'
endif
y=' '
@ 16,4 say 'Doriti sa continuati'DA/NU':' get y function '!'
read
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure vanzare
define window w1 from 10,10 to 30,80
activate window w1
ok=.t.
do while ok=.t.
sele 1
num=space(16)
@ 5,4 say 'marca:' get num function'!'
read
go top
locate for num=marca
if found()
x=0
@ 8,4 say 'nr_buc:' get x function'99'
read
replace nr_buc with nr_buc-x
if nr_buc=0
dele
pack
endif
sele 2
append blank
@ 9,4 say 'nume ' get nume picture'! ! ! !'
read
dat=
@ 10,4 say 'data ' get dat
read
replace data with dat
replace produs with num
replace nr_buc with x
else
@ 8,4 say 'Masina nu exista in baza de date!'
endif
y=' '
@ 16,4 say 'Doriti sa continuati'DA/NU':' get y function '!'
read
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure pret
define window w1 from 10,10 to 30,80
activate window w1
ok=.t.
do while ok=.t.
sele 1
num=space(16)
@ 5,4 say 'marca:' get num function'!'
read
go top
locate for num=marca
if found()
x=0
@ 8,4 say 'noul pret:' get x function'99999'
read
replace pret with x
else
?'NU EXISTA MASINA'
endif
y=' '
@ 16,4 say 'Doriti sa continuati:' get y default 1 FUNCTION '*H DA;NU' SIZE 1,8
READ CYCLE
if y='NU'
ok=.f.
endif
clear
endd
deactivate window w1
return
procedure total
define window w1 from 8,12 to 16,56 title 'STASTICI' color scheme 5
acti wind w1
?'VALOAREA MASINILOR VANDUTE ESTE '
select sum(masini.pret*tranzact.nr_buc) ;
fromMASINI.DBF ,TRANZACT.DBF;
where tranzact.produs =masini.marca;
into array a
?a[1]
wait wind 'Pentru a parasi fereastra apasati orice tasta!'
deact wind w1
return
procedure statistic
define window w1 from 8,12 to 16,56 title 'STASTICI' color scheme 5
acti wind w1
?'CEA MAI BINE VANDUTA MASINA ESTE :'
select tranzact.produs, sum(tranzact.nr_buc);
from TRANZACT.DBF ;
group by tranzact.produs;
into table aur
use aur
calculate max(sum_nr_buc) to a
go top
?
list for sum_nr_buc=a off
wait wind 'Pentru a parasi fereastra apasati orice tasta!'
deact wind w1
return
PROCEDURE IESIRE
deact wind all
close data
close all
release all
IF BAR()=1
quit
ENDIF
IF BAR()=2
ies=.t.
ENDIF
BIBLIOGRAFIE
Gabriel si Mihai DIMA, "FoxPro", Editura TEORA 1998
Gabriel si Mihai DIMA, "FoxPro. MENIURI", Editura TEORA 1997
Mariana Pantiru, "Informatica economica. Baze de date. Proiect de manual pentru clasele XI-XII",Editura Petrion , Bucuresti 1996
Gabriel si Mihai DIMA, "Programarea calculatoarelor. Proiect de maual pentru clasa a XI-a , alterativa B " Editura TEORA 1998.
CUPRINS
Introducere...... 3
Descrierea aplicatiei..
Bibliografia. 25
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1499
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved