You are on page 1of 15

Liceul Teoretic “Horia Hulubei” cu cls.

I – XII
Lucrare de atestat

Lucrare de atestat

Data : mai 2009


Autor : Nicolau Albert
Profesor coordonator: Caprarescu Alina
Liceul Teoretic “Horia Hulubei” cu cls. I – XII
Lucrare de atestat

Program de gestiune
al unei case de schimb valutar

Data : mai 2009


Autor : Nicolau Albert
2
Profesor coordonator : Caprarescu Alina
Cuprins

1.Introducere

2.Prezentare generala
Fereastra principala
Meniul “Clienti”
Meniul “Curs valutar”
Meniul “Iesire”
Mod de folosire

3.Bibliografie
4.Anexe

3
1.Introducere / utilitatea lucrării

Programul prezentat serveste la gestiunea unei case de schimb valutar,fiind


realizat in limbajul de programare de la Microsoft,Fox Pro 2.6 .Alcatuit din 16
fisiere,dintre care 4 de tip bitmap(BMP),11 baze de date(DBF) si programul principal
(PRG),programul prezentat tine evidenta cursurilor de schimb(vanzare-cumparare)
pentru 9 monede:dolar american, dolar australian,dolar canadian, franc elvetian,franc
francez , gulden olandez,lira egipteana, lira sterlina,marca germana.

Introducerea de clienti noi,afisarea si cautarea acestora dupa un anumit


criteriu,schimbarea si afisarea cursului valutar,sunt numai cateva din posibilitatile
acestui program cu o interfata foarte usor de utilizat.

2.Structura programului

2.1 Meniuri / meniul principal

Fereastra principala cuprinde 3 meniuri,ce vor fi descrise in capitolele urmatoare:

• Clienti
• Curs valutar
• Iesire

Meniurile "Clienti" si "Curs valutar" sunt practic cele doua submeniuri de


baza alaferestrei principale, dispuse simetric, de-o parte si de alta a optiunii de iesire.

2.1.1 Meniul “Clienti”

E format din 4 submeniuri prin care se pot realiza urmatoarele:

- introducerea de clienti noi:

Acest meniu serveste introducerii in baza de date a unor clienti noi, mai
bine zis datele acestora: numele, buletinul si schimbul realizat - cele doua monede
care au luat parte la tranzactie. Practic, la aceasta optiune se va face apel ori de cate

4
ori se va realiza o tranzactie, nu doar cand apare un client care schimba pentru prima
data la casa de schimb; astfel, un o persoana apare de atatea cate schimburi a efectuat.

- sortare clienti dupa nume,prenume,data efectuarii schimbului valutar:

Se realizeaza astfel o 'ordonare' a bazei de date ce contine datele despre


clienti dupa anumite campuri - nume, prenume sau dta efectuarii schimbului.

- cautare clienti dupa nume,prenume,data efectuarii schimbului valutar:

Se cauta in baza de date clienti, in campul rspectiv - nume, prenume sau


data schimbului - articolul care sa coincida cu datele introduse de la tastatura.

- date informative cu privire la cantitatea de schimburi efectuate:

Arata sumele tranzactionate la vanzare si respectiv cumparare a unei sau


mai multor valute. Acestea sunt afisate in aceeasi fereastra in care sunt precizate
valutele la care se face referire.

2.1.2 Meniul “Curs valutar”

E format din 3 submeniuri ce se desfasoara astfel:

- modificarea cursului de schimb:

Alegerea optiunii "curs nou" din meniul "Curs valutar" aduce pe ecran
fereastra de modificare a raportului de schimb, care cere mai intai sa se precizeze care
dintre valutele disponibile pentru schimb este aleasa pentru a i se schimba cursul;
dupa selectare, daca se apasa <Enter> sau se da click pe "Accepta" - ceea ce face sa
se confirme intentia de a modifica cursul de schimb al monedei alese - cursul actual

va aparea in fereastra, dandu-i-se in acelasi timp utilizatorului dreptul de a modifica


5
acest curs. Dupa ce se introduc noile date, utilizatorul trebuie sa dea din nou "Accept"
pentru a salva noile data si a schimba astfel cursul. Daca se doreste renuntarea la
aceasta modificare, se apasa tasta <Esc> urmata de otiunea "Renunta".

- afisare curs de schimb curent sau curs de schimb trecut pentru moneda
aleasa:

Acest submeniu cere initial sa se specifice ce curs urmeaza a fi afisat, dupa


care (daca este aleasa comanda "Accepta") va afisa cursul curent al monedei alese.
Nu este posibila alegerea vizualizarii mai multor cursuri simultan.

- cautare curs de schimb pentru moneda si data alease:

Spre deosebire de "Afisare curs schimb curent", aceasta optiune permite


alegerea unei date pentru care sa afiseze cursul; astfel se poate afisa cursul de la o
anumita perioada.

2.1.3 Meniul “Iesire”

Realizeaza inchiderea programului, a ferestrelor si a bazelor de date. Ramane astfel


deschisa doar fereastra Fox. (optiunea "Iesire" nu este prevazuta cu o secventa de
incheiere)

2.2 Mod de instalare / utilizare

Programul se instaleaza in directorul “d:\valuta” si se lanseaza din fereastra


de comenzi din Fox Pro,cu comanda “do d:\valuta\valuta”. O alternativa ar fi dublu-
click pe unul din fisierele 'valuta.prg' sau 'valuta.fxp'.

6
Odata rulat programul, dupa ce s-a incheiat secventa de 'intro' acesta poate
fi intrerupt (realizandu-se iesirea din program, nu si din fereastra principala care
continuua sa ramana activa) prin executarea unui clik oriunde in afara barei de
meniuri - in cadrul ferestrei, in afara ei sau in bannerul acesteia. Pentru a reveni in
program este suficient un click-dreapta oriunde in fereastra FoxPro in care este
deschisa aplicatia. Iesire din program cu inchiderea ferestrei principale se realizeaza
prin clik sau <enter> pe optiunea "Iesire" din meniul principal.

In meniuri se poate naviga fie cu mouse-ul, fie cu tastatura, folosind taste


de baze cu functiile lor de baza - <Esc>,<Enter>, sageti s.a. Diferitele optiuni ce apar
in timpul executiei programului pot fi acceptate sau refuzate prin butoanele
“Accepta” sau “Renunta”.

7
BIBLIOGRAFIE :

- Mariana Panţiru / Ionuţ Panţiru - “Manual de informatică / Baze de date” / ‘L&S


‘, Bucureşti 2000;

- Cătălin Fâncu - “Informatică Economică” ( Manual pentru clasa a XII-a FoxPro) /


‘L&S ‘, Bucureşti 1999;

- Rodica Pintea / D. Oprescu / D. Grigoriu – “Texte de sinteză în


programare”/‘L&S ‘, Bucureşti 2001;

- Microsoft FoxPro 2.6 for Windows Help.

8
clear
3.Anexe @9,i say ' realizat de Popa Vlad' style 'T'
Codul sursa al programului: @2,14 say 'Program de evidenta
a unei case de schimb valutar' style 'T'
wait '' timeout 0.01
clear endfor
hide window all set cursor off
define windows w1 from 3,15 to 19,85 title wait '' timeout 3
"Schimb valutar" close system fill file set bell to 1700,1
d:\valuta\bani.bmp ??chr(7)
activate window w1 set cursor on
define menu m1 release window w2
set century on return
set date dmy
set cursor on procedure iesire
set safety off show window all
set talk off set bell to 1700,1
set sysmenu off ??chr(7)
define pad p1 of m1 prompt ' Clienti ' release window w1
define pad p2 of m1 prompt ' Iesire ' deactivate menu m1
define pad p3 of m1 prompt ' Curs valutar ' set cursor on
define popup cli from 1,2 return
define bar 1 of cli prompt '- clienti noi'
define bar 2 of cli prompt '- sortare procedure delete
clienti'+chr(16) set bell to 1700,1
define bar 3 of cli prompt '- cautare ??chr(7)
clienti'+chr(16) delete
define bar 4 of cli prompt '- date informative' pack
define popup crs from 1,51 return
define bar 1 of crs prompt '- curs nou'
define bar 2 of crs prompt '- afisare curs' procedure clienti
define bar 3 of crs prompt '- cautare curs' do case
do despre case bar()=1
on sele popup cli do clienti set bell to 1700,1
on sele popup crs do curs ??chr(7)
on sele pad p1 of m1 activate popup cli define window w2 from 1,15 to 12,55 in
on sele pad p2 of m1 do iesire window w1 fill file d:\valuta\5.bmp style 'T'
on sele pad p3 of m1 activate popup crs panel
activate menu m1 activate window w2
on key label rightmouse do d:\valuta\valuta use d:\valuta\clienti
y=0
procedure despre append blank
define window w2 from 1,12 to 11,58 fill file @1,12 say 'Clienti noi' style 'BU'
d:\valuta\2.bmp in window w1 none @3,3 say 'Numele clientului :' get nume size
activate window w2 1,11
set cursor off @4,3 say 'Buletinul clientului:' get buletin size
for j=23 to 14 step -1 1,11
clear @5,3 say 'Codul monedei dorite:' get
@2,j say 'Program de evidenta a cod_moneda size 1,11
unei case de schimb valutar' style 'T' @6,3 say 'Tipul de schimb(c/v):' get
wait '' timeout 0.1 tip_schimb size 1,11
endfor @7,3 say 'Suma primita :' get valoare_p
wait ''timeout 1 size 1,11
for i=1 to 23
@9,9 get y function '*H Accepta!;Renunta!' x=' '
size 1,7,3 do while y=1
read cycle @0,7 say 'Informatii vanzare-cumparare' style
if y=2 'BUT'
delete @1,1 say 'Cod' style 'TU'
pack @1,11 say 'Nume' style 'TU'
endif @1,28 say 'Vandut' style 'TU'
if y=1 @1,39 say 'Cumparat' style 'TU'
v=valoare_p @2,2 say '1 ' style 'T' get o1 function '*C Dolar
t=tip_schimb SUA' style 'T'
m=cod_moneda @3,2 say '2 ' style 'T' get o2 function '*C
replace data with date() Dolar australian' style 'T'
use d:\valuta\curs @4,2 say '3 ' style 'T' get o3 function '*C
val=0 Dolar canadian' style 'T'
locate for cod=m @5,2 say '4 ' style 'T' get o4 function '*C
if t='c' Franc francez' style 'T'
val=v*cumparare @6,2 say '5 ' style 'T' get o5 function '*C
endif Franc elvetian' style 'T'
if t='v' @7,2 say '6 ' style 'T' get o6 function '*C Lira
val=v/vanzare egipteana' style 'T'
endif @8,2 say '7 ' style 'T' get o7 function '*C Lira
use d:\valuta\clienti sterlina' style 'T'
go bottom @9,2 say '8 ' style 'T' get o8 function '*C
replace valoare_d with val Marca germana' style 'T'
endif @10,2 say '9 ' style 'T' get o9 function '*C
release window w2 Gulden olandez' style 'T'
deactivate popup cli @11,27 get y function '*H Accepta!;Renunta!'
case bar()=2 size 1,7,3
set bell to 1700,1 read cycle
??chr(7) use d:\valuta\clienti
define popup sor2 from 2,21 if y=1
define bar 1 of sor2 prompt '- nume' clear
on sele bar 1 of sor2 do nume if o1=1
define bar 2 of sor2 prompt '- buletin' sum all valoare_p for
on sele bar 2 of sor2 do buletin (tip_schimb='v')and(cod_moneda=1) to v1
define bar 3 of sor2 prompt '- data schimb' sum all valoare_d for
on sele bar 3 of sor2 do datas (tip_schimb='c')and(cod_moneda=1) to v2
activate popup sor2 @2,21 say str(v1)+' Lei' style 'T'
case bar()=3 @2,34 say str(v2)+' Lei' style 'T'
set bell to 1700,1 endif
??chr(7) if o2=1
define popup cau from 3,21 sum all valoare_p for
define bar 1 of cau prompt '- nume' (tip_schimb='v')and(cod_moneda=2) to v1
define bar 2 of cau prompt '- buletin' sum all valoare_d for
define bar 3 of cau prompt '- data schimb' (tip_schimb='c')and(cod_moneda=2) to v2
on sele popup cau do cauta @3,21 say str(v1)+' Lei' style 'T'
activate popup cau @3,34 say str(v2)+' Lei' style 'T'
case bar()=4 endif
set bell to 1700,1 if o3=1
??chr(7) sum all valoare_p for
define window w2 from 1,10 to 14,60 in (tip_schimb='v')and(cod_moneda=3) to v1
window w1 fill file d:\valuta\5 panel sum all valoare_d for
activate window w2 (tip_schimb='c')and(cod_moneda=3) to v2
y=1 @4,21 say str(v1)+' Lei' style 'T'
store 0 to o1,o2,o3,o4,o5,o6,o7,o8,o9 @4,34 say str(v2)+' Lei' style 'T'

10
endif deactivate popup cli
if o4=1 endcase
sum all valoare_p for return
(tip_schimb='v')and(cod_moneda=4) to v1
sum all valoare_d for procedure cauta
(tip_schimb='c')and(cod_moneda=4) to v2 do case
@5,21 say str(v1)+' Lei' style 'T' case bar()=1
@5,34 say str(v2)+' Lei' style 'T' set bell to 1700,1
endif ??chr(7)
if o5=1 define window w5 from 1,3 to 9,67 in window
sum all valoare_p for w1 fill file d:\valuta\5.bmp panel
(tip_schimb='v')and(cod_moneda=5) to v1 activate window w5
sum all valoare_d for use d:\valuta\clienti
(tip_schimb='c')and(cod_moneda=5) to v2 n=' '
@6,21 say str(v1)+' Lei' style 'T' @3,11 say 'Introduceti numele clientului:'style
@6,34 say str(v2)+' Lei' style 'T' 'T' get n style 'T'
endif read
if o6=1 brow for nume=n font 'MS Sans Serif',9
sum all valoare_p for noedit
(tip_schimb='v')and(cod_moneda=6) to v1 case bar()=2
sum all valoare_d for set bell to 1700,1
(tip_schimb='c')and(cod_moneda=6) to v2 ??chr(7)
@7,21 say str(v1)+' Lei' style 'T' define window w5 from 1,3 to 9,67 in window
@7,34 say str(v2)+' Lei' style 'T' w1 fill file d:\valuta\5.bmp panel
endif activate window w5
if o7=1 use d:\valuta\clienti
sum all valoare_p for n=' '
(tip_schimb='v')and(cod_moneda=7) to v1 @3,11 say 'Introduceti buletinul
sum all valoare_d for clientului:'style 'T' get n style 'T'
(tip_schimb='c')and(cod_moneda=7) to v2 read
@8,21 say str(v1)+' Lei' style 'T' brow for buletin=n font 'MS Sans Serif',9
@8,34 say str(v2)+' Lei' style 'T' noedit
endif case bar()=3
if o8=1 set bell to 1700,1
sum all valoare_p for ??chr(7)
(tip_schimb='v')and(cod_moneda=8) to v1 define window w5 from 1,3 to 9,67 in window
sum all valoare_d for w1 fill file d:\valuta\5.bmp panel
(tip_schimb='c')and(cod_moneda=8) to v2 activate window w5
@9,21 say str(v1)+' Lei' style 'T' use d:\valuta\clienti
@9,34 say str(v2)+' Lei' style 'T' d={//}
endif @3,11 say 'Introduceti data schimbului:'style
if o9=1 'T' get d style 'T'
sum all valoare_p for read
(tip_schimb='v')and(cod_moneda=9) to v1 brow for data=d font 'MS Sans Serif',9 noedit
sum all valoare_d for endcase
(tip_schimb='c')and(cod_moneda=9) to v2 release window w5
@10,21 say str(v1)+' Lei' style 'T' deactivate popup cli
@10,34 say str(v2)+' Lei' style 'T' return
endif
endif procedure nume
enddo set bell to 1700,1
use d:\valuta\clienti ??chr(7)
sum all valoare_p for define window w3 from 1,3 to 15,67 in
(tip_schimb='v')and(cod_moneda=1) to v1 window w1 panel
release window w2 activate window w3

11
use d:\valuta\clienti @2,2 get x function '*RV Dolar SUA;Dolar
index on nume to x australian;Dolar canadian;Franc francez;Franc
on key label del do delete elvetian;Lira egipteana;Lira sterlina;Marca
brow title 'Afisare clienti' font 'MS Sans germana;Gulden olandez' style 'T'
Serif',9 noedit @11,20 get y function '*H Accepta!;Renunta!'
push key clear size 1,7,1
release window w3 read cycle
deactivate popup cli use d:\valuta\curs
if y=1
procedure buletin do case
set bell to 1700,1 case x='Dolar SUA'
??chr(7) go 1
define window w3 from 1,3 to 15,67 in @2,22 get vanzare
window w1 panel @2,31 get cumparare
activate window w3 read
use d:\valuta\clienti @2,22 say ' ' style 'T'
index on buletin to x replace data with date()
on key label del do delete v=vanzare
brow title 'Afisare clienti' font 'MS Sans c=cumparare
Serif',9 noedit use d:\valuta\d_sua
push key clear append blank
release window w3 replace vanzare with v
deactivate popup cli replace cumparare with c
replace data with date()
procedure datas case x='Dolar australian'
set bell to 1700,1 go 2
??chr(7) @3,22 get vanzare
define window w3 from 1,3 to 15,67 in @3,31 get cumparare
window w1 panel read
activate window w3 @3,22 say ' 'style 'T'
use d:\valuta\clienti replace data with date()
index on data to x v=vanzare
on key label del do delete c=cumparare
brow title 'Afisare clienti' font 'MS Sans use d:\valuta\d_austr
Serif',9 noedit append blank
push key clear replace vanzare with v
release window w3 replace cumparare with c
deactivate popup cli replace data with date()
case x='Dolar canadian'
procedure curs go 3
do case @4,22 get vanzare
case bar()=1 @4,31 get cumparare
set bell to 1700,1 read
??chr(7) @4,22 say ' 'style 'T'
define window w2 from 1,15 to 14,55 in replace data with date()
window w1 fill file d:\valuta\4 style 'T' panel v=vanzare
activate window w2 c=cumparare
y=1 use d:\valuta\d_canad
x=' ' append blank
do while y=1 replace vanzare with v
clear replace cumparare with c
@0,7 say 'Modificare curs curent' style 'BUT' replace data with date()
@1,21 say 'Vanzare' style 'UT' case x='Franc francez'
@1,29 say 'Cumparare' style 'UT' go 4
@5,22 get vanzare

12
@5,31 get cumparare @9,22 get vanzare
read @9,31 get cumparare
@5,22 say ' 'style 'T' read
replace data with date() @9,22 say ' 'style 'T'
v=vanzare replace data with date()
c=cumparare v=vanzare
use d:\valuta\f_franc c=cumparare
append blank use d:\valuta\m_germ
replace vanzare with v append blank
replace cumparare with c replace vanzare with v
replace data with date() replace cumparare with c
case x='Franc elvetian' replace data with date()
go 5 case x='Gulden olandez'
@6,22 get vanzare go 9
@6,31 get cumparare @10,22 get vanzare
read @10,31 get cumparare
@6,22 say ' 'style 'T' read
replace data with date() @10,22 say ' 'style 'T'
v=vanzare replace data with date()
c=cumparare v=vanzare
use d:\valuta\f_elvet c=cumparare
append blank use d:\valuta\g_oland
replace vanzare with v append blank
replace cumparare with c replace vanzare with v
replace data with date() replace cumparare with c
case x='Lira egipteana' replace data with date()
go 6 endcase
@7,22 get vanzare endif
@7,31 get cumparare enddo
read case bar()=2
@7,22 say ' 'style 'T' set bell to 1700,1
replace data with date() ??chr(7)
v=vanzare define window w2 from 1,5 to 15,65 in
c=cumparare window w1 fill file d:\valuta\4 panel
use d:\valuta\l_egipt activate window w2
append blank y=1
replace vanzare with v x=' '
replace cumparare with c @0,17 say 'Afisare curs de schimb' style 'BUT'
replace data with date() @3,21 say '\' style 'T'
case x='Lira sterlina' @4,22 say '|' style 'T'
go 7 @5,22 say '|' style 'T'
@8,22 get vanzare @6,22 say '|' style 'T'
@8,31 get cumparare @7,22 say '} Cursuri de schimb trecute' style
read 'T'
@8,22 say ' 'style 'T' @8,22 say '|' style 'T'
replace data with date() @9,22 say '|' style 'T'
v=vanzare @10,22 say '|' style 'T'
c=cumparare @11,21 say '/' style 'T'
use d:\valuta\l_sterl do while y=1
append blank on key label del do delete
replace vanzare with v @2,2 get x function '*RV Curs de schimb
replace cumparare with c curent;Dolar SUA;Dolar australian;Dolar
replace data with date() canadian;Franc francez;Franc elvetian;Lira
case x='Marca germana' egipteana;Lira sterlina;Marca germana;Gulden
go 8 olandez' style 'T'

13
@5,49 get y function '*V Accepta!;Renunta!' d={//}
size 1,7,3 style 'T' @11,2 say 'Data:' style 'TU' get d
read cycle @9,29 get y function '*V Accepta!;Renunta!'
if y=1 size 1,7,1
do case read cycle
case x='Curs de schimb curent' use d:\valuta\curs
use d:\valuta\curs if y=1
brow title 'Afisare curs de schimb' font 'MS do case
Sans Serif',9 noedit case x='Dolar SUA'
case x='Dolar SUA' use d:\valuta\d_sua
use d:\valuta\d_sua locate for data=d
brow title 'Afisare curs de schimb' noedit brow title 'Afisare curs de schimb' noedit
case x='Dolar australian' case x='Dolar australian'
use d:\valuta\d_austr use d:\valuta\d_austr
brow title 'Afisare curs de schimb' noedit locate for data=d
case x='Dolar canadian' brow title 'Afisare curs de schimb' noedit
use d:\valuta\d_canad case x='Dolar canadian'
brow title 'Afisare curs de schimb' noedit use d:\valuta\d_canad
case x='Franc francez' locate for data=d
use d:\valuta\f_franc brow title 'Afisare curs de schimb' noedit
brow title 'Afisare curs de schimb' noedit case x='Franc francez'
case x='Franc elvetian' use d:\valuta\f_franc
use d:\valuta\f_elvet locate for data=d
brow title 'Afisare curs de schimb' noedit brow title 'Afisare curs de schimb' noedit
case x='Lira egipteana' case x='Franc elvetian'
use d:\valuta\l_egipt use d:\valuta\f_elvet
brow title 'Afisare curs de schimb' noedit locate for data=d
case x='Lira sterlina' brow title 'Afisare curs de schimb' noedit
use d:\valuta\l_sterl case x='Lira egipteana'
brow title 'Afisare curs de schimb' noedit use d:\valuta\l_egipt
case x='Marca germana' locate for data=d
use d:\valuta\m_germ brow title 'Afisare curs de schimb' noedit
brow title 'Afisare curs de schimb' noedit case x='Lira sterlina'
case x='Gulden olandez' use d:\valuta\l_sterl
use d:\valuta\g_oland locate for data=d
brow title 'Afisare curs de schimb' noedit brow title 'Afisare curs de schimb' noedit
endcase case x='Marca germana'
endif use d:\valuta\m_germ
push key clear locate for data=d
enddo brow title 'Afisare curs de schimb' noedit
case bar()=3 case x='Gulden olandez'
set bell to 1700,1 use d:\valuta\g_oland
??chr(7) locate for data=d
define window w2 from 1,15 to 14,55 in brow title 'Afisare curs de schimb' noedit
window w1 fill file d:\valuta\4 panel endcase
activate window w2 endif
y=1 enddo
x=' ' endcase
do while y=1 release window w2
clear deactivate popup crs
@0,7 say 'Cautare curs de schimb' style 'BUT' retur
@2,2 get x function '*RV Dolar SUA;Dolar
australian;Dolar canadian;Franc francez;Franc
elvetian;Lira egipteana;Lira sterlina;Marca
germana;Gulden olandez' style 'T'

14