sâmbătă, 1 ianuarie 2011

Atestat Casa de schimb valutar Gratis

Model Documentatie Proiect Atestat Informatica Baze de Date ORACLE gratis

referat


Casa de schimb valutar


Gestiunea activităţii unei
case de schimb valutar

programare în Oracle

STRUCTURA LUCRĂRII DE ATESTAT



I.     Prezentarea generală a temei
II.    Proiectarea logică
II. 1. Diagrama entitate-relaţie (ERD)
II. 2. Reguli structurale
II. 3. Reguli procedurale
III. Proiectarea tehnică
III. 1. Justificarea soluţiei adoptate pentru realizarea lucrării
III. 2. Resurse necesare
III. 3. Structura bazei de date
III. 4. Paginile aplicaţiei
III. 5. Testarea aplicaţiei
IV.   Extinderi posibile ale aplicaţiei
V. Anexe
V. I. Secvenţe reprezentative de cod sursă
V. II. Capturi de ecran

I. Prezentarea generală a temei

Aplicaţia realizează gestiunea activităţii de tranzacţionare a unei case de schimb valutar şi generează rapoarte/grafice cu privire la evoluţia cursului valutar şi la volumul de tranzacţii.

Funcţiunile aplicaţiei
·      Stochează informaţii despre clienţi
·      Stochează informaţii despre casieri
·      Stochează informaţii despre valute şi cursul de schimb al acestora
·      Înregistrează tranzacţiile efectuate
·      Realizează rapoarte şi grafice despre evoluţia cursului valutar şi despre tranzacţiile efectuate.
  
II. Proiectarea logică

II.1. Diagrama entitate-relaţie (ERD)
Diagrama Entitate-Relatie - Casa de schimb valutar


II. 2. Reguli structurale




Pe baza ERD-ului prezentat putem formula următoarele reguli structurale:
·      Toate tranzacţiile trebuie să fie efectuate de către un casier, la cererea unui client.
·      Fiecare tranzacţie constă în vânzarea clientului sau cumpărarea de la client (tipul tranzacţiei) a unei sume dintr-o valută cu care firma operează.
·      Un casier poate efectua una sau mai multe tranzacţii.
·      Un client poate solicita una sau mai multe tranzacţii.
·      Fiecare valută are un singur curs de schimb valabil, pentru vânzare, respectiv pentru cumpărare.


II. 3. Reguli procedurale

Regulile procedurale nu reies în mod direct din ERD, însă ele au fost documentate şi implementate:
·      Tipul unei tranzacţii este vânzare (-1) sau cumpărare (1).
·      O operaţie de vânzare constă în oferirea clientului sumei de valută pe care o solicită, în schimbul unei sume de lei, calculată la cursul de schimb valabil.
·      O operaţie de cumpărare constă în oferirea clientului sumei de lei, calculată la cursul de schimb valabil, reprezentând suma de valuta pe care acesta o oferă la schimb.
·      Cursul valabil pentru o valută este cursul cu data de început cea mai recentă, neputând fi introduse cursuri cu date de început din viitor.
·      O tranzacţie se poate realiza doar dacă suma de valută solicitată de client este mai mică sau egală cu soldul acelei valutei (în cazul unei vânzări), respectiv există suficienţi lei pentru a efectua o cumpărare de valută de la client.
·      În urma unei tranzacţii, soldul valutei tranzacţionate şi soldul leilor vor fi actualizate automat.
·      Înainte de a realiza o tranzacţie, clientul trebuie sa fie introdus în baza de date (dacă nu a fost introdus la o tranzacţie anterioară).

III.Proiectarea tehnică

III. 1. Justificarea soluţiei adoptate pentru realizarea lucrării

       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 plăcut de lucru.
        ORACLE Application Express este un mediu de dezvoltare a bazelor de date, cunoscând in prezent o largă răspândire datorită aplicaţiilor dezvoltate pentru domenii din cele mai diverse, cât si pentru interfaţa (meniuri, ferestre de dialog şi alte caracteristici) care facilitează comunicarea uşoară cu utilizatorul.
        Facilităţile 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 informaţiilor);
ü generare de rapoarte;
ü generare de meniuri;
ü generare de grafice.

III. 2. Resurse necesare
Aplicaţia este realizată pe serverul ORACLE Academy şi nu necesită instalare.
Accesul la aplicaţie 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 relaţională este realizată şi întreţinută în mediul ORACLE Application Express şi conţine următoarele tabele:
Casieri  stochează date despre casierii firmei. Numărul estimativ de înregistrări din această tabelă este de ordinul unităţilor.
Tip cheie
Nume coloană
Tip dată
PK
ID_CASIER
NUMBER

NUME
VARCHAR(32)

PRENUME
VARCHAR(32)

CNP
VARCHAR(13)

ADRESA
VARCHAR(256)

TELEFON
VARCHAR(16)

EMAIL
VARCHAR(32)
Clienţi  stochează date despre clienţii firmei. Numărul estimativ de înregistrări din această tabelă este de ordinul sutelor.
Tip cheie
Nume coloană
Tip dată
PK
ID_CLIENT
NUMBER

NUME
VARCHAR(32)

PRENUME
VARCHAR(32)

CNP
VARCHAR(13)
Valute stochează date despre valutele cu care firma lucrează. Numărul estimativ de înregistrări din această tabelă este de ordinul zecilor.
Tip cheie
Nume coloană
Tip dată
PK
ID_VALUTA
NUMBER

DENUMIRE
VARCHAR(20)

COD
VARCHAR(3)

SOLD
NUMBER
Tranzacţii stochează date despre tranzacţiile efectuate. Numărul estimativ de înregistrări din această tabelă este de ordinul miilor.
Tip cheie
Nume coloană
Tip dată
PK
ID_TRANZACTIE
NUMBER
FK
ID_CASIER
NUMBER
FK
ID_CLIENT
NUMBER

TIP
NUMBER

DATA
DATE
FK
ID_VALUTA
NUMBER

SUMA
NUMBER
Cursuri stochează date despre cursurile de schimb. Numărul estimativ de înregistrări din această tabelă este de ordinul miilor.
Tip cheie
Nume coloană
Tip dată
PK
ID_CURS
NUMBER
FK
ID_VALUTA
NUMBER

DATA_INCEPUT
DATE

VANZARE
NUMBER

CUMPARARE
NUMBER
III. 4. Paginile aplicaţiei
1.    TRANZACŢII
Ø       Report: redă informaţiile privitoare la tranzacţiile efectuate (data, tip, suma, valuta, client, casier). Pagina conţine şi un raport cu topul valorilor exprimate în lei a tranzacţiilor.
Ø       Form: permite introducerea unei noi tranzacţii. Elemente: listă dinamică de valori cu casierii, lista dinamică de valori cu clienţii, listă statică pentru tipul tranzacţiei, lista dinamică de valori cu valutele şi suma maximă disponibilă din fiecare valută, câmp cu calendar pentru dată, câmp cu calculator pentru suma tranzacţionată.
2.   Clienţi
Ø       Report: Raport cu clienţii existenţi. Pagina conţine şi un top al clienţilor care au realizat cele mai mari tranzacţii de-a lungul timpului.
Ø       Form (+report): Permite adăugarea şi modificarea datelor referitoare la un client. De asemenea, pentru un client ales, pagina prezintă şi un raport cu tranzacţiile efectuate de acest client.
3.   Casieri
Ø       Report: Raport cu casierii existenţi. Pagina conţine şi un top al casierilor în funcţie de valoarea tranzacţiilor realizate de-a lungul timpului.
Ø       Form (+report): Permite adăugarea şi modificarea datelor referitoare la un casier. De asemenea, pentru un casier ales, pagina prezintă şi un raport cu tranzacţiile efectuate de acest casier.
4.   Valute
Ø       Report: Raport cu valutele existente. Pagina conţine şi un top al valutelor în funcţie de valoarea tranzacţiilor realizate de-a lungul timpului.
Ø       Form: Permite adăugarea şi modificarea datelor referitoare la o valută, precum şi soldul acesteia.
5.   Cursuri
Ø       Report: Raport ce conţine cursurile de schimb.
Ø       Form: Permite adăugarea şi modificarea datelor referitoare la un anumit curs de schimb.
6.   Grafice
Ø       Grafic de tip linie cu evoluţia în timp a cursului unei valute (pagini de tip Wizzard).
Ø       Grafic de tip linie cu evoluţia în timp a cursului tuturor valutelor.
Ø       Grafic de tip bare verticale cu volumul de tranzacţii grupat pe valute.
Ø       Grafic de tip bare verticale cu volumul de tranzacţii grupat pe casieri.
Ø       Grafic de tip bare verticale cu volumul de tranzacţii grupat pe clienţi.

III. 5. Testarea aplicaţiei
Aplicaţia 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 aplicaţiei
O extindere utilă ar fi spre partea de resurse umane, care să realizeze gestiunea tuturor angajaţilor firmei (manageri, contabili, casieri).
O altă extindere ar fi spre partea de contabilitate, care să ia în considerare câştigurile provenite din tranzacţiile 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. Secvenţe reprezentative de cod sursă
V. 1. Actualizarea soldului unei valute după efectuarea unei tranzacţii (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 tranzacţiei (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 tranzacţiei (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 tranzacţii
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 tranzacţii
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_valuta=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. Tranzacţiile făcute 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. Evoluţia 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 
 

Evoluţia cursului unei valute
Raport tranzacţii



3 comentarii:

  1. Frumos proiect! Felicitari! prof. M. Dinu

    RăspundețiȘtergere
  2. Foarte interesant,

    ma-ti putea ajuta cu cateva idei pentru un campionat sportiv, ce campuri a-si putea avea?
    eu am ales echipa, gol, jucator,campionat...

    RăspundețiȘtergere
  3. Ma puteti ajuta cu acest proiect in format complet? Va multumesc!

    RăspundețiȘtergere