Sunteți pe pagina 1din 10

Casa de schimb valutar

Gestiunea activitii unei case de schimb valutar


programare n Oracle STRUCTURA LUCRRII DE ATESTAT I. Prezentarea general a temei II. Proiectarea logic II. 1. Diagrama entitate-relaie (ERD) II. 2. Reguli structurale II. 3. Reguli procedurale III. Proiectarea tehnic III. 1. Justificarea soluiei adoptate pentru realizarea lucrrii III. 2. Resurse necesare III. 3. Structura bazei de date III. 4. Paginile aplicaiei III. 5. Testarea aplicaiei IV. Extinderi posibile ale aplicaiei V. Anexe V. I. Secvene reprezentative de cod surs V. II. Capturi de ecran I. Prezentarea general a temei
Aplicaia realizeaz gestiunea activitii de tranzacionare a unei case de schimb valutar i genereaz rapoarte/grafice cu privire la evoluia cursului valutar i la volumul de tranzacii. Funciunile aplicaiei Stocheaz informaii despre clieni Stocheaz informaii despre casieri Stocheaz informaii despre valute i cursul de schimb al acestora

nregistreaz tranzaciile efectuate Realizeaz rapoarte i grafice despre evoluia cursului valutar i despre tranzaciile efectuate.

II. Proiectarea logic II.1. Diagrama entitate-relaie (ERD)

Diagrama Entitate-Relatie - Casa de schimb valutar

II. 2. Reguli structurale

Pe baza ERD-ului prezentat putem formula urmtoarele reguli structurale: Toate tranzaciile trebuie s fie efectuate de ctre un casier, la cererea unui client. Fiecare tranzacie const n vnzarea clientului sau cumprarea de la client (tipul tranzaciei) a unei sume dintr-o valut cu care firma opereaz. Un casier poate efectua una sau mai multe tranzacii. Un client poate solicita una sau mai multe tranzacii. Fiecare valut are un singur curs de schimb valabil, pentru vnzare, respectiv pentru cumprare.

II. 3. Reguli procedurale

Regulile procedurale nu reies n mod direct din ERD, ns ele au fost documentate i implementate: Tipul unei tranzacii este vnzare (-1) sau cumprare (1). O operaie de vnzare const n oferirea clientului sumei de valut pe care o solicit, n schimbul unei sume de lei, calculat la cursul de schimb valabil. O operaie de cumprare const n oferirea clientului sumei de lei, calculat la cursul de schimb valabil, reprezentnd suma de valuta pe care acesta o ofer la schimb. Cursul valabil pentru o valut este cursul cu data de nceput cea mai recent, neputnd fi introduse cursuri cu date de nceput din viitor. O tranzacie se poate realiza doar dac suma de valut solicitat de client este mai mic sau egal cu soldul acelei valutei (n cazul unei vnzri), respectiv exist suficieni lei pentru a efectua o cumprare de valut de la client. n urma unei tranzacii, soldul valutei tranzacionate i soldul leilor vor fi actualizate automat. nainte de a realiza o tranzacie, clientul trebuie sa fie introdus n baza de date (dac nu a fost introdus la o tranzacie anterioar).

III.Proiectarea tehnic
III. 1. Justificarea soluiei adoptate pentru realizarea lucrrii Am utilizat mediul ORACLE Application Express pentru implementarea produsului, deoarece acest limbaj are un viitor in domeniul economic (de gestiune a bazelor de date), dar i pentru modul plcut de lucru. ORACLE Application Express este un mediu de dezvoltare a bazelor de date, cunoscnd in prezent o larg rspndire datorit aplicaiilor dezvoltate pentru domenii din cele mai diverse, ct si pentru interfaa (meniuri, ferestre de dialog i alte caracteristici) care faciliteaz comunicarea uoar cu utilizatorul. Facilitile asigurate de mediul ORACLE Application Express sunt: definirea structurii (crearea bazei de date); introducerea datelor in bazele de date; modificarea unor date deja existente in bazele de date; tergerea datelor din bazele de date; consultarea bazelor de date (extragerea informaiilor); generare de rapoarte; generare de meniuri; generare de grafice. III. 2. Resurse necesare Aplicaia este realizat pe serverul ORACLE Academy i nu necesit instalare. Accesul la aplicaie se realizeaz pe pagina de Internet https://iacademy3.oracle.com/ pe baza unui nume de utilizator i a unei parole, cu ajutorul unui browser web.

III. 3. Structura bazei de date Baza de date relaional este realizat i ntreinut n mediul ORACLE Application Express i conine urmtoarele tabele: Casieri stocheaz date despre casierii firmei. Numrul estimativ de nregistrri din aceast tabel este de ordinul unitilor.
Tip Nume coloan cheie PK ID_CASIER NUME PRENUME CNP ADRESA TELEFON EMAIL Tip dat NUMBER VARCHAR(32) VARCHAR(32) VARCHAR(13) VARCHAR(256) VARCHAR(16) VARCHAR(32)

Clieni stocheaz date despre clienii firmei. Numrul estimativ de nregistrri din aceast tabel este de ordinul sutelor.
Tip Nume coloan cheie PK ID_CLIENT NUME PRENUME CNP Tip dat NUMBER VARCHAR(32) VARCHAR(32) VARCHAR(13)

Valute stocheaz date despre valutele cu care firma lucreaz. Numrul estimativ de nregistrri din aceast tabel este de ordinul zecilor.
Tip Nume coloan cheie PK ID_VALUTA DENUMIRE COD SOLD Tip dat NUMBER VARCHAR(20) VARCHAR(3) NUMBER

Tranzacii stocheaz date despre tranzaciile efectuate. Numrul estimativ de nregistrri din aceast tabel este de ordinul miilor.
Tip Nume coloan cheie PK FK FK ID_TRANZACTIE ID_CASIER ID_CLIENT TIP DATA FK ID_VALUTA SUMA Tip dat NUMBER NUMBER NUMBER NUMBER DATE NUMBER NUMBER

Cursuri stocheaz date despre cursurile de schimb. Numrul estimativ de nregistrri din aceast tabel este de ordinul miilor.
Tip Nume coloan cheie PK FK ID_CURS ID_VALUTA DATA_INCEPUT VANZARE CUMPARARE Tip dat NUMBER NUMBER DATE NUMBER NUMBER

III. 4. Paginile aplicaiei


1. TRANZACII Report: red informaiile privitoare la tranzaciile efectuate (data, tip, suma, valuta, client, casier). Pagina conine i un raport cu topul valorilor exprimate n lei a tranzaciilor. Form: permite introducerea unei noi tranzacii. Elemente: list dinamic de valori cu casierii, lista dinamic de valori cu clienii, list static pentru tipul tranzaciei, lista dinamic de valori cu valutele i suma maxim disponibil din fiecare valut, cmp cu calendar pentru dat, cmp cu calculator pentru suma tranzacionat. 2. Clieni Report: Raport cu clienii existeni. Pagina conine i un top al clienilor care au realizat cele mai mari tranzacii de-a lungul timpului.

Form (+report): Permite adugarea i modificarea datelor referitoare la un client. De asemenea, pentru un client ales, pagina prezint i un raport cu tranzaciile efectuate de acest client. 3. Casieri Report: Raport cu casierii existeni. Pagina conine i un top al casierilor n funcie de valoarea tranzaciilor realizate de-a lungul timpului. Form (+report): Permite adugarea i modificarea datelor referitoare la un casier. De asemenea, pentru un casier ales, pagina prezint i un raport cu tranzaciile efectuate de acest casier. 4. Valute Report: Raport cu valutele existente. Pagina conine i un top al valutelor n funcie de valoarea tranzaciilor realizate de-a lungul timpului. Form: Permite adugarea i modificarea datelor referitoare la o valut, precum i soldul acesteia. 5. Cursuri Report: Raport ce conine cursurile de schimb. Form: Permite adugarea i modificarea datelor referitoare la un anumit curs de schimb.

6. Grafice Grafic de tip linie cu evoluia n timp a cursului unei valute (pagini de tip Wizzard). Grafic de tip linie cu evoluia n timp a cursului tuturor valutelor. Grafic de tip bare verticale cu volumul de tranzacii grupat pe valute. Grafic de tip bare verticale cu volumul de tranzacii grupat pe casieri. Grafic de tip bare verticale cu volumul de tranzacii grupat pe clieni.

III. 5. Testarea aplicaiei


Aplicaia a fost testat prin generarea n mod aleatoriu de date pentru tabele, date ce simuleaz activitatea casei de schimb valutar pe o perioada de 20 de zile.

IV.

Extinderi posibile ale aplicaiei

O extindere util ar fi spre partea de resurse umane, care s realizeze gestiunea tuturor angajailor firmei (manageri, contabili, casieri). O alt extindere ar fi spre partea de contabilitate, care s ia n considerare ctigurile provenite din tranzaciile efectuate.

O alt extindere este gestiunea afacerii pentru un ntreg lan de case de schimb valutar, nu doar pentru o singur sucursal.

V. Anexe 1. Secvene

reprezentative de cod surs

V. 1. Actualizarea soldului unei valute dup efectuarea unei tranzacii (cod PL/SQL) BEGIN UPDATE valute SET sold = sold + :P2_TIP * :P2_SUMA WHERE id_valuta = :P2_ID_VALUTA; if :p2_tip = 1 then UPDATE valute SET sold = sold + (-1) * :P2_TIP * :P2_SUMA * (select cumparare from cursuri where id_valuta = :p2_id_valuta and data_inceput = (select max(data_inceput) from cursuri where id_valuta = :p2_id_valuta)) where id_valuta = 1; else UPDATE valute SET sold = sold + (-1) * :P2_TIP * :P2_SUMA * (select vanzare from cursuri where id_valuta = :p2_id_valuta and data_inceput = (select max(data_inceput) from cursuri where id_valuta = :p2_id_valuta)) where id_valuta = 1; end if; END; V. 2. a. Verificarea dac suma de valut este suficient pentru efectuarea tranzaciei (expresie SQL) (select sold from valute where id_valuta = :P2_id_valuta) + :P2_TIP * :P2_SUMA >= 0

b. Verificarea dac suma de lei este suficient pentru efectuarea tranzaciei (expresie
SQL) (select sold from valute where cod = 'RON') :P2_TIP * :P2_SUMA * (select DECODE(:P2_TIP, 1, (select cumparare from cursuri where id_valuta = :p2_id_valuta and data_inceput =

(select max(data_inceput) from cursuri where id_valuta = :p2_id_valuta)), (select vanzare from cursuri where id_valuta = :p2_id_valuta and data_inceput = (select max(data_inceput) from cursuri where id_valuta = :p2_id_valuta))) from dual) >= 0 V. 3. Raport tranzacii

SELECT t.ID_TRANZACTIE, c.nume || ' ' || c.prenume, cl.nume || ' ' || cl.prenume, decode(TIP, 1, 'C', 'V'), t.DATA, v.cod, t.suma FROM TRANZACTII t, casieri c, clienti cl, valute v WHERE t.id_casier = c.id_casier and t.id_client = cl.id_client and t.id_valuta = v.id_valuta
V. 4. Top tranzacii SELECT cl.nume || ' ' || cl.prenume Client, v.cod Valuta, (t.suma * DECODE(tip, 1, (select cumparare from cursuri where data_inceput = (select max(data_inceput) from cursuri where t.data >= data_inceput and t.id_valuta=cursuri.id_valuta) and t.id_valuta=cursuri.id_valuta), -1, (select vanzare from cursuri where data_inceput = (select max(data_inceput) from cursuri where t.data >= data_inceput and t.id_valuta=cursuri.id_valuta) and t.id_valut a=cursuri.id_valuta) ) ) "Val. tranz. (lei)" FROM tranzactii t, valute v, clienti cl where t.id_valuta = v.id_valuta and t.id_client = cl.id_client ORDER BY 3 DESC; V. 5. Tranzaciile fcute de un client

SELECT t.data, t.suma, v.cod Valuta, decode(t.tip, 1, 'Cump.', 'Vanz.') tip, c.nume || ' ' || c.prenume Casier from tranzactii t, casieri c, valute v where t.id_client = :P6_ID_CLIENT and t.id_casier = c.id_casier and t.id_valuta = v.id_valuta

order by 1 desc; V. 6. Evoluia cursului de schimb pentru o valut SELECT NULL LINK, to_char(data_inceput, 'dd/mm') LABEL, cumparare VALUE FROM cursuri where id_valuta = :P14_ITEM1 ORDER BY data_inceput

2. Capturi de ecran

Evoluia cursului unei valute

Raport tranzacii

S-ar putea să vă placă și