Analiza Activitatilor Privind Acordarea Creditelor Bancare

CUPRINS

INTRODUCERE

1. Analiza activităților privind acordarea creditelor bancare

1.1. Sistemul bancar-acordarea creditelor

1.2. Proceduri de acordare a creditelor bancare

1.2.1. Etapele acordării creditelor bancare persoanelor fizice

2. TEHNOLOGII INFORMATICE FOLOSITE

2.1 Oracle JDeveloper

2.2 Tehnologia Java

2.3 SQL Developer

2.4 UML

3. Realizarea aplicației cu baze de date

3.1. Studiul situației existente

3.2. Specificarea cerințelor noii aplicații

3.2.1. Diagrame ale cazurilor de utilizare

3.2.2. Descriere textuală a cazurilor de utilizare

3.3. Diagrame de activitate

3.4. Diagrama de clase

3.5. Prezentarea bazei de date

3.6. Prezentarea aplicației

CONCLUZII

Bibliografie

ANEXA 1

ANEXA 2

ANEXA 3

INTRODUCERE

Într-o societate informațională, datele reprezintă cel mai important „activ” al unei societăți.În condițiile actuale ale pieței, unde se remarcă o concurență extraordinară între băncile străine care și-au deschis filiale și sucursale în Romania, o societate bancară este viabilă doar dacă sistemul informatic care operează este viabil. Un astfel de sistemul informatic trebuie să răspundă cât mai rapid la cererile utilizatorilor și să asigure o interfață ușor de folosit. Un alt aspect important care definește un sistem informatic viabil este coerența datelor stocate.

Proiectul de față urmarește implementarea unui modul de creditare – o mică parte a unui astfel sistem informatic, care are drept scop informatizarea procedurii de acordare a creditelor bancare.

Mi-am ales această temă deoarece operația de creditare este foarte des intâlnită în zilele noastre, în condițiile în care creditele bancare au devenit cea mai importantă resursă bănească de care cetățenii se pot folosi pentru a-și satisface nevoile personale.

În scopul reducerii timpului de procesare a cererilor de credit și depășirii inconvenientelor, care pot apărea în etapa de evaluare a situației financiare a solicitantului de credit, soluția care se dorește a fi implementată are în vedere elaborarea unui modelul de scoring, folosit ca instrument de decizie în procesul de creditare. Aplicarea acestei metode conduce la reducerea cheltuielilor și timpului aferent investigării dosarelor de credit. Mai mult, această aplicație oferă utilizatorilor posibilitatea de a cunoaște întreaga ofertă finaciară și modelul de evaluare atunci când doresc să solicite un împrumut. Folosirea unei aplicații de creditare ușurează eforturile utilizatorilor în căutarea celor mai bune produse finaciare,în funcție de propriile necesități.

Implementarea acestui sistem aduce beneficii atât utilizatorilor, cât și instituțiilor financiare deoarece se reduce riscul operațional asociat, crește productivitatea echipei de vânzări, care se poate concentra mai mult pe interacțiunea cu clienții, operațiunile manuale administrative fiind preluate de procesele automatizate.

Analiza activităților privind acordarea creditelor bancare

Sistemul bancar-acordarea creditelor

Sistemul bancar deține un rol foarte important în economia de piață a unui stat, asigurând mobilizarea tuturor fondurilor monetare existente în economie și distribuirea lor în scopul realizării unor activități economice eficiente. Sistemul bancar include un ansamblu de bănci care se află sub conducerea unei bănci centrale. Funcțiile băncii centrale sunt: emisiune monetară, concentrarea rezervelor bănești ale băncilor comerciale și acordarea creditelor de refinanțare, acordarea de împru- muturi statului și păstrarea tezaurului public. În același timp, banca centrală stabilește regulile pentru emiterea autorizațiilor de funcționare a băncilor și decide care entități juridice pot opera ca bănci.

În România, sistemul bancar a luat naștere în anul 1800, odată cu inființarea Băncii Naționale a României, care juca rolul atât de bancă centrală, cât și de bancă comercială. Banca Națională iși pierde caracterul comercial – din Banca Națională a României se desprinde Banca Comercială Română, prin adoptarea legilor bancare: Legea privind activitatea bancară și Legea privind Statutul Băncii Naționale care organizează întregul sistem bancar pe două niveluri.

În prezent sistemul bancar românesc este puternic afectat de recensiunea economică și criza financiară globală din 2008. Deși BCR și BRD au rămas liderii pieței, cota de piață a acestor bănci s-a erodat seminificativ. Statisticile au înregistrat la sfarșitului anului 2013, o cotă de piață a BCR cu aproape 3 puncte procentuale mai mică față de 2008, iar în cazul BRD, locul 2 pe piața locală, o cota de piață mai scăzută cu 2,7% față de 2008. [22]

În ultimii 5 ani de criza sistemul bancar a trecut prin schimbări puternice: dupa 3 ani de pierderi consolidate, în anul 2013 sistemul bancar a trecut pe profit. Totuși, profitul net în valoare de jumătate de miliard de lei, înregistrat în 2013, este nesemnificativ in comparație cu pierderile înregistrate între 2010 și 2012 de băncile românești. Evoluția profitului/pierderii nete este reprezentată în graficul de mai jos:

Fig.1.1 Evoluția profitului net și a rentabilității capitalurilor (ROE)

Deși anul 2013 a fost unul de stabilizare, anul 2014 se preconizează a fi dificil, în condițiile în care rata creditelor neperformante continuă să urce. Creditele neperformante au efecte negative asupra calității portofoliului de credite și bineînțeles asupra creșterii economice.

Activitățile desfășurate de societățile bancare au drep scop „atragerea de fonduri de la persoane juridice si fizice, sub forma de depozite sau instrumente nenegociabile, plătibile la vedere sau la termen, precum și acordarea de credite.”[11]

Operația de creditare reprezintă activitatea de bază într-o bancă, care constă în cedarea de bunuri sau servicii, la un moment dat, de către bancă în folosința unui subiect economic. Acesta are obligația de a restitui, la un termen stabilit, contravaloarea bunului sau serviciului primit, plus o sumă de bani care poartă denumirea de interes sau dobândă. Astfel, în activitatea de creditare intervin două categorii de subiecte economice: creditorul – banca si debitorul –poate fi o persoană juridică, persoană fizică sau statul.

Aparut din „necesitatea stingerii obligatiilor dintre diferiti agenti economici, proces caruia moneda lichida nu-i putea face fata”, creditul poate fi definit ca „ puterea de cumpărare, fără a deține numerar”.[4]

Rolul creditului în dezoltarea economiei este evidențiat prin funcțiile care acesta le îndeplinește:

redistribuirea fondurilor disponibile – din capitalurile disponibile ale diverșilor agenți economici, banca acordă credite pe termen scurt, pentru acoperirea unor nevoi temporare ale altor agenți economici;

funcția de asigurare a stabilității prețurilor – prețul de echilibru dintre cererea si oferta de bani permite reglarea cererii si ofertei de bunuri,contribuind indirect la stabilitatea prețurilor;

funcția de transformare a economiilor în investitii – creditul asigură capitalul necesar întreprinzătorului pentru a realiza investitii care vor contribuii la creșterea economică.

Astfel, creditul este văzut ca o pârghie economică indispensabila, ce contribuie la formarea de unitati productive sau la fructificarea acumularilor banesti.

Conform art3. alin.7 din Legea nr.58/1998 creditul este „orice angajament de punere la dispoziție sau acordarea unei sume de bani ori prelungirea scadenței unei datorii, în schimbul obligației debitorului la rambursarea sumei respective, precum și la plata unei dobânzi sau a altor cheltuieli legate de această sumă sau orice angajament de achiziționare a unui titlu care încorporează o creanță ori a altui drept la incasarea unei sume de bani”.[20]

Dobânda obținută în urma acordării creditului bancar reprezintă o sursă de profit a băncilor. Dobânda aferentă creditului bancar trebuie să acopere costurile și riscurile implicate. Prin urmare, rata dobânzii reflectă în mare măsură rata riscului afacerii.

Riscurile implicate în acordarea creditelor bancare de către bancă, pot conduce la pierderea totală sau parțială a sumei împrumutate. Băncile iși pot reduce riscul de credit prin solicitarea de garanții. Tipurile de garanții acceptate la acordarea unui credit pot fi:

a) Garanția bancară (scrisoare de garanție bancară) reprezintă un angajament irevocabil și necondiționat, emis de o bancă în calitate de garant. Banca se angajează să platească creditul, în cazul în care beneficiarul garanției (debitorul) nu execută plata la o anumită dată stabilită.

b) Depozitul bancar (cash colateral) reprezintă o garanție sub forma unei sume de bani pe care debitorul o depune la banca unde contractează creditul. În cazul în care debitorul nu poate rambursa creditul la data scadentă, banca va intra în proprietatea sumelor aflate în depozitul bancar.

c) Gajul – debitorul depune drep garanție bunurile sale mobile și imobile.

Este important de știut scopul utilizării creditului de către client. El poate fi acordat pentru consum sau destinat producției. Aceasată distincție este important și este legat de sursa și riscul rambursării. Creditul pentru consum prezintă un risc sporit și de aceea trebuie tratată cu mai multă prudență. Această categorie de credite are o pondere nesemnificativă în activitatea bancară. Creditul destinat producției, în condiții normale, își găsește sursa rambursării în însăși derularea ciclului industrial sau comercial și de aceea este mai puțin riscant pentru bancher.

Ca urmare a realizării creditării, debitorul primește un grafic de rambursare în care sunt specificate termenul de plată, rata de credit, rata dobânzii și soldul rămas nerambursat, pe întreaga perioadă a creditului. Graficul este reînnoit ori de câte ori una din condițiile inițiale s-a modificat (de exemplu rata dobânzii).

Acordarea creditului bancar presupune stabilirea unei perioade în care debitorul poate rambursa suma imprumutată. În funcție de durata acordată imprumutului, se identifică mai multe tipuri de credit:

creditele pe termen scurt – mai puțin de un an;

creditele pe termen mediu – între 1 an și 5 ani;

credite pe termen lung – peste 5 ani;

Creditul pe termen scurt este necesar pentru derularea unui ciclu complet de producție, de la procurarea materiei până la vânzarea produsului finit, sau de distribuție, de la cumpărarea mărfii și pâna la revânzarea ei. Creditul pe termen mediu nu este decât o subdiviziune a unui credit pe termen lung. Creditul pe termen lung este destinat finanțării investițiilor și rambursarea lui eșalonată este legată de amortizarea acestei investiții, de etapele în care ele dau rezultate financiare scontate. Ambele credite au acceași finalitate și se disting prin termenul de rambursare.

O altă clasificare a creditului, poate fi realizată în funcție de subiectul economic care contractează un credit:

credite acordate perosoanelor fizice;

credite acordate persoanelor juridic;

credite acordate alor bănci;

credite acordate statului;

Proceduri de acordare a creditelor bancare

Procedura de acordare a creditelor bancare are la bază prudența bancară, ca principiu fundamental, ce caracterizează întreaga activitate a băncii.Astfel, băncile trebuie să își realizeze un cadru de informare și documentare pentru a studia capacitatea de plată a debitorilor. În vederea acordării creditului, banca are responsabilitatea de a descrie într-un mod concis și cuprinzător toate tipurile de credit pe care le acordă. Prin urmare, fiecare tip de credit va conține informații despre scopul creditului, scadența și structura de rambursare, preț, gajul necesar sau alt tip de asigurare, etc.

În vedera minimizării riscurilor ce pot apărea în activitatea de creditare , băncile trebuie să analizeze capacitatea de rambursare a creditului de către creditor. Pentru a determina gradul riscului acordării unui credit, instituțiile bancare evaluează dosarele de credit care conțin datele personale ale creditorului,sursele de venit ale acestora, existența altor credite. Pentru evaluarea acestor dosaretă a debitorilor. În vederea acordării creditului, banca are responsabilitatea de a descrie într-un mod concis și cuprinzător toate tipurile de credit pe care le acordă. Prin urmare, fiecare tip de credit va conține informații despre scopul creditului, scadența și structura de rambursare, preț, gajul necesar sau alt tip de asigurare, etc.

În vedera minimizării riscurilor ce pot apărea în activitatea de creditare , băncile trebuie să analizeze capacitatea de rambursare a creditului de către creditor. Pentru a determina gradul riscului acordării unui credit, instituțiile bancare evaluează dosarele de credit care conțin datele personale ale creditorului,sursele de venit ale acestora, existența altor credite. Pentru evaluarea acestor dosare se implementează algoritmi care vor folosi drept date de intrare, informațiile din dosarele de credit.Un exemplu de astfel de algoritm este scoring-ul bancar . Deoarece nu există un algoritm universal, fiecare bancă poate să creeze un model de scoring sau să implementeze unul deja existent.

Modelul credit-scoring reprezintă un model matematic sau statistic, cu ajutorul căruia, în baza istoricului de creditare a clienților precedenți, banca încearcă să determine dacă potențialul debitor poate să își onoreze pe viitor obligațiile.Astfel, modelul de scoring însumează toate valorile care sunt atribuite unor caracteristici predeterminate ale debitorului (nivelul indicatorilor financiari, experiența în activitate, situația conturilor, existența altor împrumuturi, datele ultimelor plăți, sumele neachitate, ramura de activitate etc.).Pe baza rezultatului obținut banca identifică probabiliatea de rambursare a creditului de către potențialul debitor și poate decide dacă acordă sau nu creditul.

Conform recomandărilor Comitetului de la Basel și Băncii Naționale există câteva „principii ce trebuie avute în vedere în momentul alcătuirii modelului de scoring:

a) instituțiile de credit nu trebuie să uite că responsabilitatea primară în procesul de

alcătuire îi revine acesteia;

b) modelul trebuie să aibă reale capacității predictive a estimărilor de risc ale unei bănci

și examinarea modului în care acestea sunt utilizate în activitățile relevante ale

instituției de credit;

c) nu există o metodă univesală de elaborare a acestora ci doar elemente minime ce

trebuie introduse în model;

d) trebuie să includă atât elemente calitative cât și elemente cantitative;

e) procesul și rezultatele trebuie supuse unor revizuiri independente”. [10]

1.2.1. Etapele acordării creditelor bancare persoanelor fizice

Considerențele pe care băncile le au în vedere, în cazul persoanelor fizice sunt:

să fie angajat cu contract de muncă și să realizeze venituri certe, asigurând astfel plata lunară a ratelor din credite și a dobânzilor aferente;

să aibă un cont curent la banca respectivă pentru a depune avansul minim solicitat ca sursă proprie și o sumă cel puțin egală cu nivelul ratei lunare totale de rambursat, sumă care se va menține pe toată perioada de creditare;

să garanteze rambursarea împrumuturilor solicitate atât cu veniturile ce realizează, cât și cu garanții reale și/sau persoanle;

să nu înregistreze debite sau alte obligații neachitate la scadență către bancă sau terți, la data solicitării împrumutului, potrivit documentelor doveditoare (extrase de cont de la diferite bănci, certificate de la circumscripțiile financiare, declarații pe propria răspundere etc.).

În funcție de cerințele clienților, băncile continuă să își extindă și să își diversifice portofoliul de credite.Categoriile de credite care pot fi contractate de persoanele fizice sunt: creditul nenominalizat, creditul auto, creditul imobiliar, creditul ipotecar, creditul pentru bunuri de folosinta indelungata, cardul de credit.

Prima etapă pentru acordarea unui credit bancar este inițiată prin depunerea cererii de împrumut. În funcție de datele din cererea de credit cu privire la volumul și destinația împrumutului, ofițerii de credit prezintă solicitantului condițiile generale pe care trebuie să le îndeplinească în vederea contractării de împrumuturi. Dintre aceste condiții, se evidețiază măsura în care solicitantul poate asigura rambursarea creditului și garanta împrumutul, precum și plata dobânzilor aferente. Dacă se constata posibilitatea de garantare și rambursare a împrumutului, agenții de credite vor stabili: suma împrumutului solicitat și nivelul ratei lunare totale pe care clientul o va plăti. Aceasta nu trebuie să fie mai mare de jumătate din veniturile nete lunare realizate de către debitor și nici mai mică de o treime din aceste venituri. În cazul în care solicitantul indeplinește conditiile prezentate, el va trebui să depună toate documentele necesare în vederea contractării creditului.

Cererea de împrumut, însoțită de restul documentației, se verifică și analizează de serviciul de credite. Analiza documentelor de împrumut presupune parcurgerea urmatoarelor etape:

se stabilește calitatea solicitantului pe baza informațiilor din documentul de identitate;

se examinează dacă creditul se încadrează în criteriile și condițiile specifice categoriei de împrumut, în funcție de scopul împrumutului;

se determină capacitatea debitorului de a rambursa creditul și dobânzile aferente, pe baza analizei bugetului familiei;

se verifica la fața locului informațiile înscrise în documentele prezentate băncii cu privire la bunurile solicitantului ce urmează a fi constituite drept garanții.

Dacă în urma analizei realizate se obțin concluzii favorabile se poate trece la întocmirea referatului de credite din care trebuie să rezulte:

datele de identitate ale solicitantului și giranților;

volumul creditului propus și aprobat și scopul acestuia;

încadrarea, condițiile generale și specifice de creditare;

sursele și capacitatea de rambursare, cuantumul ratelor lunare totale de rambursat care sunt antecalculate;

garanțiile ce se vor constitui;

competența de aprobare.

Referatul de credite, împreună cu întreaga documentație, se prezintă șefului compartimentului de credite, care are obligația de a verifica daca se respectă condițiile și criteriile prevăzute în instrucțiunile de lucru. Urmatoarea etapă presupune prezentarea propunerii în fața comitetului de credite și stabilirea deciziei de aprobare sau respingere a creditului.

2. TEHNOLOGII INFORMATICE FOLOSITE

2.1 Oracle JDeveloper

”Oracle este un sistem de gestiune a bazelor de date complet relațional, extins, cu facilități din tehnologia orientată obiect (OO)”[6]. Realizat de Oracle Corporation,acesta reprezintă cel mai important furnizor software utilizat pentru gestiunea datelor. Istoria dezoltării Oracle a început la sfârșitul anilor 70, având o evoluție spectaculoasă.

Arhitectura sistemului Oracle este structurată pe trei niveluri: interfață, nucleu, instrumenete de întreținere. Nucleul conține limbajele folosite pentru dezvoltarea programelor cu baze de date: limbajul SQL și limbajul procedural propriu PL/SQL. Instrumentele de întreținere sunt componete care asigură buna funcționare a bazei de date. Interfețele sunt reprezentate de produsele software care permit dezvoltarea aplicațiilor cu baze de date.

JDeveloper este un mediu integrat de dezvoltare (IDE) a aplicațiilor web și desktop folosind limbajele Java, XML, servicii Web, SQL.

JDeveloper reprezintă produsul de bază pentru dezvoltarea aplicațiilor din cadrul suitei de produse Oracle Fusion Middleware, oferind suport pentru întregul ciclu de dezvoltare, cu facilități integrate pentru modelare, programare, depanare, optimizare, testare, utilizare, și implementare a aplicațiilor.

Acest IDE oferă o abordare de programare vizuală și declarativă care are drept scop simplificarea procesului pentru dezvoltarea aplicatiilor cu baze de date. Pentru atingerea scopului propus, JDeveloper ofera și un mediu de lucru denumit Oracle ADF – care este o platform Java EE care implementează sabloane de proiectare .

Principalele caracteristici ale produsului Oracle JDeveloper sunt:

reprezintă un mediu de lucru consistent, care poate fi utilizat pentru diferite tehnologii, informatice: Java, SOA, SQL, PL / SQL, HTML, și JavaScript, etc; Tehnologiile folosite pentru dezvoltarea aplicatiei mele sunt SQL – utilizat pentru crearea bazei de date si Java – folosit pentru dezvoltarea modulelor functionale ale aplicatiei.

este un mediu complet pentru dezvoltarea și modelarea aplicatiilor care permite crearea obiectelor bazei de date și stocarea procedurilor. Pentru modelarea funcționalității aplicațiilor se pot utiliza instrumenetele de modelare UML, disponibile în Jdeveloper;

oferă o gamă largă de opțiuni pentru implementarea aplicațiilor în care se regăsește și serviciul Oracle WebLogic Server, integrat pentru rularea și testarea aplicațiilor înainte de a fi implementate pe mediul de producție;

oferă intrumente care permit personalizarea aplicațiilor pe baza nevoilor identificate în procesul de dezvoltare .

Acest IDE permite integrarea cu baze de date, folosind  standardele de comunicație Java DataBase Connectivity (JDBC) și Open DataBase Connectivity (ODBC). Bazele de date încorporate pot fi baze de date de tip Oracle dar si Microsoft SQL Server, IBM DB2, MySQL și alte tipuri.

JDeveloper este un sistem multiplatformă care rulează pe următoarele sistemele de operare Windows, Linux, Mac OS X și ale sisteme de operare care au la baza UNIX. Sistemul de operare care se va folosi pentru dezvolarea dar și pentru testarea aplicatiei mele este Windows 7.

JDeveloper 11g este disponibil în două ediții: Oracle JDeveloper Studio și Oracle JDeveloper Java. Varianta Studio este versiunea completă a produsului JDeveloper și include toate caracteristicile. Ediția Java conține doar instrumentele Java și caracteristicile XML, necesitând un timp mai scurt pentru a fi descărcat. Dintre cele două ediții precizate mai sus, am optat pentru JDeveloper Studio 11.1.2.1.0 , ca mediu de dezvoltare pentru aplicația prezentată în acest proiect.

Oracle JDeveloper oferă un mediu de dezvoltare complet și integrat pentru a satisface cerințele dezvoltătorilor de aplicații Java, cât și a celor care doresc implementarea aplicațiilor Web.

2.2 Tehnologia Java

Java este un limbaj de programare de nivel inaltcu o larga utilizare la nivel mondial. „Java reprezintă baza pentru aproape toate tipurile de aplicații în rețea și este standardul global pentru dezvoltarea și implementarea de aplicații mobile, jocuri, conținut pe web și software la nivel de companie.” [21]

Prima versiune de Java a fost lansată în anul 1995 de către Sun Microsystems. Fiind un limbaj robust și independent de platform, Java este utilizat la dezvoltarea aplicațiilor Web, locale și client-server.

Java este un limbaj orientat obiect, cea mai mare parte a sintaxei de programare fiind moștenită din C++. Programele Java pot rula pe diferite tipuri de platformă, singura condiție impusă este existența unui mașini virtuale Java pe platform respectivă. In figura 2.2 este prezentat procesul de compilare a unui cod Java. Pentru a compila un cod Java, este nevoie de un mediu JRE (Java Runtime Environment) instalat. Acesta oferă biblioteci de bază, o Mașină Virtuală Java dependentă de platformă, colecții de biblioteci atașabile (plug-in) pentru browser. Pe de altă parte putem folosi mediu JDK (Java Developement Kit) ce conține atât mediul JRE cât și interfete pentru dezvoltare, compilator pentru cod mașină și o facilitate pentru depanare. JDK este o colecție de software folosita pentru dezvoltarea aplicațiilor.

Fig2.2 Execuția unui program Java[21]

Platformele Java sunt livrate in urmatoarele versiuni:

Java Standard Edition – este o soluție proiectată pentru a dezvoltarea aplicațiilor desktop, aplicațiilor web-client, module de tip applet, etc.

Java Micro Edition – este utilizată de un mare număr de dezvoltatori pentru telefoane mobile. Oracle este cel mai important furnizor de tehnologie pentru telefoane mobile, tehnologie utilizată până în prezent pentru peste trei miliarde de dispositive;

Java Enterprise Edition – această platforma este folosită pentru a dezvolta aplicații complexe nivel de companie.

Platforma folosita pentru dezvoltarea aplicatiei mele este Java Standard Edition deoarece am optat pentru dezvoltarea unei aplicatii desktop, iar acesta versiune satisface cel mai bine cerintele implementarii unei astfel de aplicatii.

Principalele caracteristici ale platformei Java sunt:

independența platformei – Java rulează pe o multitudine de platforme și sisteme de operare fie folosind JVM de la Oracle, fie ca parte a comunității OpenJDK;

utilizare prioritară la scară global – Java este cea mai cunoscuta platformă de aplicații la nivel mondial și oferă un o serie de instrumente suport destinate dezolvatorilor: cărți, biblioteci, mostre de cod și multe altele;

medii de execuție consecvente – Java permite o implementare fiabilă, cu o gamă largă de platforme de execuție, de la Java SE pentru desktop, la Java SE pentru dispozitive integrate și Oracle Java Micro Edition Embedded Client;

optimizat pentru integrare – platforma Java SE pentru dispozitive integrate oferă o serie de facilitate care satisfac cerințele programatorilor: procesor integrat, gestionarea alimentării, impactul redus asupra mediului și altele;

„Oracle Java ME Embedded Client se bazează pe tehnologia Connected Device Configuration (CDC), inclusă în platformă Java SE și permite obținerea unor performanțe îmbunătățite pentru dispozitivele cu resurse limitate.”[ 27]

aplicații portabile și performanțe de excepție – Java atinge performanțe maxime, asigurând totodată portabilitatea pe o gamă largă de procesoare și sisteme de operare integrate;

securitatea aplicatiilor –Java este ideal pentru aplicațiile în rețea deoarece acesta permite protejarea utilizatorilor în fața unor situații critice, precum rularea loacala a programelor provenite din diferite surse.

2.3 SQL Developer

Oracle SQL Developer este un mediul de lucru a datelor foarte des utilizat, oferit gratuit de compania Oracle. Folosirea acestui mediu simplifică dezvoltarea aplicatiilor cu baze de date și asigură creșterea productivității. Proiectat pentru administratori și dezvoltatori de baze de date, SQL Developer oferă acestora posibilitatea de a scrie și depana coduri SQL și PL/SQL. Folosind SQL Developer, utilizatorii pot defini și decrie structura bazei de date, pot introduce date conform unor restricții de integritate impuse de modelul utilizat și pot realiza operații asupra datelor.

Utilizatorii pot crea conxiuni și cu baze de date non Oracle, cum ar fi: MySQL, Microsoft SQL Server, Microsoft Access, Sybase Adaptive Server, etc.

Prima versiune a produsului SQL Devloper a fost lansată pe piață în Martie 2006. Cea mai recentă veriusne Oracle SQL Developer 4.0.1 a fost disponibilă din Februarie 2014.

SQL Developer a fost realizat în Oracle Jdeveloper IDE, fiind folosit limbajul de programare Java.

Dezvoltat în Java, SQL Developer rulează pe mai multe platforme: Windows, Linux și Mac OS X. Acesta este un mare avantaj pentru numărul tot mai mare de dezvoltători de aplicații cu baze de date care folosesc platforme diferite. Utilizatorii își instalează mediul SQL Developer și se conectează la distanță la baza de date. Conectivitatea la baza de date se realiazează cu ajutorul driver-ului JDBC.

Pentru a dezvolta aplicatia mea, am ales SQL Developer 3.2 care oferă îmbunătățiri continue pentru interfața cu utilizatorul. Îmbunătățirile includ: opțiunea drag and drop a tabelelor sau a numelor de coloane, opțiunea DB Dif, folosită pentru a compara două scheme de baze de date, DB Doc folosit pentru raportare, etc.

Unul din limbajele folosite de SQL Developer pentru a gestiuna datele este SQL. SQL(Structured Query Language) este un limbaj relational, definit ca standard pentru bazele de date relaționale, de către ANSI și adoptat ulterior de către ISO.

Acest limbaj oferă suport pentru definirea bazei de date relaționale și a legăturilor dintre tabele, prin intemediul componentei de definire a datelor DDL.O altă facilitate oferita de acest limbaj este posibilitatea de a realiza operații de manipulare a datelor stocate în bazele de date relaționale: adaugare, modificare, ștergere, interogare, etc.

2.4 UML

UML- Unified Modeling Language este un limbaj de modelare unificat, ce sintetizează notațiile și conceptele utilizate în programarea orientate obiect. UML a fost conceput ca un limbaj, care contribuie la modelarea sistemelor informatice. Astfel,acest limbaj de notații este destinat vizualizării, specificării, construirii și documentării sistemelor informatice.

Realizat de către trei dintre cei mai importanți proiectanți de software orientat obiect – Ivar Jacobson, Grady Booch și James Rumbaugh, limbajul UML este adoptat ca limbaj standard

pentru analiza orientată obiect, de către Object Management Group (OMG).

UML oferă o exprimare grafică a structurii și comportamentului sistemului informatic, înainte de se a iniția procesul pentru dezvoltarea acestuia.

Dintre componentele UML distingem:

1.Vederile (View) reprezintă proiecții a descrierii sistemului luând în considerare diferite aspecte. Aceste caracteristici pot fi clasificate astfel:

Funcționale: este descrisă structura statică și comportamentul dinamic al

sistemului;

Non-funcționale: necesarul de timp pentru dezvoltarea sistemuluiș

Organizatoric: organizarea lucrului, maparea modulelor de cod.

Vederile sunt alcătuite din mai multe diagrame .

2.Diagramele sunt grafuri care ilustrează o anumită parte a unui sistem. Limbajul unificat de modelare oferă zece tipuri de diagrame, care pot fi combinate pentru a forma toate vederile sistemului.

3.Elementele de modelare sunt concepte folosite în diagrame, cum ar fi: clase, obiecte, actori, mesaje, relații între acestea( asocierea, dependența, generalizarea).

4.Mecanismele generale permit introducerea de comentarii și alte informații despre un anumit element.

Diagramele UML se grupează în patru clase principale:

pentru modelarea proceselor de afaceri- se bazează exclusiv pe cazurile de utilizare pentru specificarea cerințelor sistemului;

pentru modelarea structurii statice -prezinta legăturile între diferitele elemente

de structură ale modelului;

pentru modelarea dinamicii- prezintă cum interacționează între ele diferitele elemente ale modelului. Din această categorie fac parte digramele de interacțiune și diagramele de comportament;

de implementare – modelează componentele sistemului informatic și grupează elemenetele diagramelor în pachete.

Diagrama cazurilor de utilizare este o reprezentare grafică a cazurilor de utilizare și a actorilor și este adesea însoțită de o descrie a funcționalității sistemului. În aceasta diagramă sunt ilustrate interacțiunile sistemului cu mediul, respectiv interacțiuni cu factorul uman, interacțiuni cu alte sisteme și interacțiuni între calculatoare.

Din categoria diagramelor pentru modelarea structurii statice fac parte diagrama claselor și diagrama obiectelor. Diagrama claselor este cea mai importantă în procesul de analiză a sistemului informatic. Aceasta pune în evidență atributele și operațiile claselor și legăturile care se pot realiza între clase. Distingem patru tipuri de legaturi între clase: asociere, agregare, generalizare și dependență. Relația de asociere permite conectarea unei clase cu ea însăși – asociere unară sau conectarea a două clase – asociere binară. Relația de agregare este o formă de asociere binară reprezentând o relație de tip parte -întreg. Această se împarte în două categorii: agregare partajată și compusă. Relația de generalizare este folosită pentru a indica moștenirea dintre o clasă generală (superclasă) și o clasă specifică (subclasă), iar relația de dependență folosită pentru a arăta o gamă largă de dependențe între elementele unui model. Diagrama obiectelor este alcătuită dintr-un set de obiecte, ce reprezintă instanțe ale claselor și realatiile dintre acestea.

Diagramele de interacțiune sunt diagrama de secvență și diagrama de colaborare. Diagrama de secvență descrie comportamentul instanțelor actorilor și a sistemului prin intermediul mesajelor. Această diagramă poate reprezenta o posibilă implementarea a scenariului unui caz de utilizare. Diagrama de colaborare prezintă aceleași informații ca și diagrama de secvența, punând accentual pe organizarea obiecteleor care participă la interacțiune. Diagramele de stare și de acțiune sunt diagrame de comportament. Diagrama de stare conține acțiuni, stări, tranzacții, decizii. Toate aceste elemente contribuie la modelarea stării dinamice a unui obiect. O diagramă de activitate prezintă fluxul secvențelor de activități pentru realizarea unei operații. Această diagramă se poate realiza pentru unul sau mai multe cazuri de utilizare sau pentru descrierea unor operații complexe.

Din cadrul diagramelor de implementare fac parte:

Diagrama componentelor – prezintă dependențele existente între diverse componente software care alcătuiesc sistemul informatic;

Diagrama de desfășurare – modelează echipamentele mediului de implementare a sistemului software

Diagrama pachetelor – permite organizarea elementelor din cadrul diagramelor sub formă unor pachete.

Abordarea UML a dezvoltării aplicațiilor este tot mai larg răspândită, asigurând o multitudine de beneficii precum: compatibilitate, posibilități de interoperabilitate, reutilizare a software-ului.

In vederea realizarii aplicatiei am elaborat diagrama cazurilor de utilizate pentru a prezenta functionalitatea sistemului informatic. Un caz de utilizare reprezinta o colecție de scenarii care arata ce trebuie sa facă sistemul si nu cum.

Pentru a reprezenta fluxul secvențelor de activități pentru realizarea procesului de obținere a unui credit bancar am elaborate diagramele de activitate Autentificare, Diagrama de activitate pentru cautarea si aplicarea pentru un credit, pentru gestiunea unui dosar de credit, Diagrama pentru analiza unui dosar.

Pentru realizarea modelului static al aplicației am elaborate diagrama de clase in care putem identifica conceptele care participă la realizarea cazurilor de utilizare , precum și relațiile dintre concepte .

Realizarea aplicației cu baze de date

Primul pas avut in vedere pentru realizarea acestei aplicatii a fost studierea programelor software existente pe piata, a caror functionalitate este de a facilita procesul de acordare a creditelor bancare atat pentru client, cat si pentru agentii bancari.

Pornind de la probleme cu care se confrunta clientii in momentul in care doresc un imprumut bancar si solutiile existente pe piata am elaborat functionalitatile noii aplicatii care vin atat in ajutorul clientilor pentru a obtine credite cat mai usor si rapid, cat si in cel al agentilor bancari deoarece prin intermediul acestei aplicatii isi pot prezenta ofertele bancare si usura procesele de analiza ale dosarelor de credite. Dupa ce am identificat cerintele aplicatiei, am realizat un scenariul in care am descris pas cu pas secventele de actiuni care pot avea loc in sistem la un moment dat. Pe baza scenariului am identificat actorii, care interactioneaza cu sistemul informatic prin intermediul cazurilor de utilizare.

Cu ajutorul diagramelor de activitate am determina fluxul de activitati operationale ale componentelor sistemului informatic si conditiile in care acestea se desfasoara , iar pentru a determina structura sistemului de acordare a creditelor bancare , am descris clasele care alcatuiesc sistemul – Credit, Client, Dosar credit, Catalog de credite si relatiile care se stabilesc intre acestea.

Studiul situației existente

In vederea obtinerii unui credit bancar, clinetii trebuie sa culeaga cat mai multe informatii de la fiecare banca in parte pentru a vedea care sunt ofertele de creditare , dobanzile afarente creditelor, sumele maxime pe are le pot imprumuta , perioadata de timp necesara pentru rambursarea creditului. Dupa ce clientul si-a ales creditul dorit, acesta trebuie sa contacteze banca de la care doreste sa obtina imprumutul pentru a se interesa ce acte sunt necesare in vederea obtinerii creditului bancar si ce conditii de eligibilitate trebuie sa indeplineasca. Pentru a obtine aceste informatii este necesara o lunga perioada de timp .

Mai mult operatia de analiza a cererii de creditare evaluarea situatiei financiare a solicitantului de credit este procesata manual, de catre functionarul bancii in termen de 10 zile de la de la data întocmirii dosarului clientului cu documentația completă. Astfel, peroiada de timp indelungata necesara obtinerii informatiilor dorite si procesarii cererilor, conduc la o productivitate scazuta a activitatii de creditare.

În prezent există aplicații precum eFin.ro, FinZoom.ro,Conso.ro sau MoneyCenter .ro care au drept scop facilitarea procesului de acordare a creditelor bancare.Aceste aplicații oferă clienților numeroase beneficii precum : posibilitatea de a cauta creditele necesare cu ajutorul unei interfețe simple și intuitive, accesul rapid la informațiile de care sunt interesați: detalii legate despre credite , criterii de eligibilitate , posibilitatea de a compara credite de la diferite bănci.Toate facilitățile oferite de aceste aplicații oferă clienților șansa de a obține cele mai avantajoase credite.

De exemplu eFin.ro permite clienților să își caute creditul dorit prin specificarea tipului de credit și suma pe care dorește să o împrumute.Acest site pune la dispoziția clienților și un meniu prin intermediul căruia , utilizatorii pot accesa diferitele tipuri de credite.

O altă funcționalitate pe care Efin.ro o pune la dispoziția utilizatorilor este Credit Scoring cu ajutorul căruia se determină capacitatea unui creditor de a-și plăti ratele .” Credit Scoring Efin.ro a fost creat pentru a-ți oferi o evaluare financiară personală atunci când dorești să aplici online pentru un credit sau un împrumut.”[1]

Pentru a determina capacitatea financiară , utilizatorii trebuie să introducă următoarele date : „Date necesare pentru evaluarea personală și familială”, „Date necesare pentru determinarea veniturilor actuale, sursa și stabilitatea lor”, „Situația creditelor și datoriile către instituțiile financiare”, „Istoricul de plată a obligațiilor față de instituțiile financiare.”[2]

În comparație cu celelalte site-uri analizate eFin.ro este singurul site care oferă posibilitatea persoanelor de a calcula scoring-ul .Mai mult această aplicație web oferă clienților detalii depre modul de calcul al Credit Scoringului și cum se poate îmbunătăți scorul obținut prin specificarea principalelor componenete ale modelului de scoring și modalitatea în care aceste caracteristici influențează decizia instituțiilor bancare de a oferi un împrumut.

Finzoom permite un acces la rapid la toate tipurile de credite existente prin accesarea linkurilor Compară credite și Catalog credite existente pe pagina principală a site-ului, pentru fiecare credit în parte.Accesul la credite se poate realiza și prin intermediul meniului „FINANȚARE”.

Motorul de căutare oferit de Finzoom este mai complex decât cel pe care le pune la dispoziție Efin.ro. Astfel criteriile definite de Finzomm.ro – tip credit, moneda, valoarea reditului perioada de rambursare permit identificarea mai rapidă a creditelor căutate.

În urma introducerii criteriilor de căutare sunt afișate creditele care respectă criteriile de căutare fiind specificate totodată instituția financiară care oferă creditul, DAE,rata lunara , suma de rambursat, rata dobânda și tipul dobânzii.Utilizatorii pot aplica direct pentru o anumită ofertă financiară sau pot opta pentru obținerea mai multor informații despre un credit precum „Informații generale de căutare”, „Costuri incluse în Calculul DAE” , „Informații Generale Credit”, „Alte Costuri”, „Criterii de Eligibilitate”, „Asigurări”.Mai mult utilizatorili au posibilitatea de a genera graficul de Rambursare pentru creditul selectat.

Pentru a aplica pentru un credit , utilizatorii trebuie să completeze un formular cu datele de contact, informații despre credit , informații despre venitul net și cheltuielile lunare, locul de muncă și comentarii.Înainte de finalizarea acestui proces utilizatorul trebuie să accepte termenii și condițiile de Confidențialitate, să verifice că datele introduse anterior sunt corecte și opțional acesta poate opta pentru a fi contactat de reprezentanții altor bănci pentru a-i oferi „detalii și calcule de eligibilitate despre un produs similar.”[3]

Specificarea cerințelor noii aplicații

Pachetul software urmărește îmbinarea funcționalităților aplicațiilor prezentate mai sus pentru a oferi avantaje atât clienților – reducerea timpului de căutare a creditelor bancare de către potențialii creditori , obținerea celor mai avantajoase credite, dar și băncilor – reducerea cheltuielilor și timpului aferent investigării dosarelor de credit.

Folosind aceasta aplicatie utilizatorilor pot obtine cat mai multe informatii despre creditele bancare existente pe piata – de exemplu rata dabanzii, tipul dobanzii, perioada minima de rambursare a creditului , perioada maxima, suma minima pe care o pot imprumuta, suma maxima,etc. Mai mult acesti pot aplica pentru creditul care il doreste completand un formular cu datele personale si un formular care contine informatii despre tipul creditului, suma de bani pe care doreste sa o imprumute, valuta si de asemenea perioada de rambursare. Pentru analiza dosarului de credit , am folosit un modelul de scoring, care este folosit ca instrument de decizie. Modelul de scoring este un algoritm care determina capacitatea potentialilor debitori de a plati ratele la credite si imprumuturi. Acest algoritm foloseste mai multi parametrii care au valori diferite, in functie de influenta pe care o au in stabilirea riscului. In functie de rezultatul obtinut in urma aplicarii acestui algoritm, sistemul trimite unui agent al bancii contractante un e-mail pentru in care sunt specificate urmatoarele informatii: date generale client – nume, prenume, CNP, venit lunar mediu, datele de contact ale clientului – adresa, telefon, e-mail, date referitoare la creditul care se doreste a fi imprumutat – suma, perioada de rambursare, rata initiala si soring-ul obtinut.

Din cele prezentate putem determina următoarele cerințe funcționale pentru noua aplicație:

creare conturi utilizatori, pe baza cărora utilizatorii se pot autentifica;

afișarea catalogului de credite pentru fiecare categorie de credite ;

căutarea creditelor în funcție de anumite criterii specificate de utilizator (tipul creditului, moneda, suma, perioada);

afișarea detaliilor creditului selectat de client;

crearea unui dosar de credite pe baza informațiilor introduse de utilizator;

generarea graficului de rambursarea a creditului bancar ;

analiza dosarului de credit : – se compară mai întâi criteriile de eligibilitate ale tipului de credit ales cu datele clientului: vârsta, venitul minim net;

se calculează valoarea ratei lunare , în funcție de valoarea, dobânda și perioada de rambursare a creditului și se compară cu valoarea ratei lunare maxime pe care clientul o poate susține, conform venitului net, cheltuielilor de subzistență și ratele aferente altor credite.

Se determină ponderea dosarului în funcție de valorile selectate pentru criteriile avute în vedere pentru calcularea scorului și se compară cu valoarea minimă acceptată de bancă;

notificarea utilizatorilor în legătură cu acceptarea / respingerea creditului în funcție de scoringul obținut;

notificarea băncilor la care utilizatorul a aplicat în scopul obținerii unui credit.

Diagrame ale cazurilor de utilizare

Utilizarea în condiții de succes a aplicației informatice prezentate, se bazează pe următorul scenariu:

Utilizatorul dorește să găsească, cel mai rapid posibil, un anumit credit din Catalogul de credite.

Sistemul afișează criteriile pe care utilizatorul trebuie să le completeze și pe baza cărora se va realiza căutarea .După ce utilizatorul completează criteriile de căutare , sistemul afișează o listă cu toate creditele care respectă criteriile specificate anterior.

Utilizatorul selectează un credit.

Sistemul listează o fișă detaliată pentru creditul ales care va conține:

Informații generale de căutare – valoare credit, perioadă de rambursare, dobândă,total plată, rată lunară;

Detalii dobândă – detalii dobândă, tip dobândă, metodă de calcul dobândă;

Informații generale credit – monedă, tip credit, grad maxim de îndatorare, avans credit, tipul garanției, valoarea minimă a creditului, valoarea maximă a creditului, etc.

Utilizatorul aplică pentru creditul care îl interesează.

Sistemul afișează un dosar de credit care conține informațiile utilizatorului și informațiile generale ale creditului.Utilizatorul poate să își modifice, ulterior, informațiile personale. Dosarul de credite mai conține și graficul de rambursare al creditului.

Utilizatorul validează datele, iar apoi cere analiza dosarului de credit.

Sistemul afișează un formular de scoring pe care clientul trebuie să îl completeze.

Sistemul determină dacă clientul respectă criteriile de eligibilitate și dacă are capacitatea de a plăti ratele creditului la timp pe baza datelor introduse de client(vârstă, venituri nete, suma de împrumutat, perioada de rambursare). Daca utilizatorul respecta criteriile de eligibilitate sistemul insumeaza punctajele care corespund fiecarei optiuni alese de utilizator pentru fiecare criteriu luat in calculul scoringului bancar. Sistemul afișează datele obținute – valoare scor credit și valoare grad maxim de îndatorare și specifică dacă creditul este aprobat sau nu.

Utilizatorul cere sistemului trimiterea dosarului de credit, dacă dosarul a fost acceptat .

Sistemul notifică agentul băncii la care se aplică creditul, prin expedierea unui e-mail în care este trimis dosarul de credit.

Sistemul confirmă clientului , expedierea cu succes a dosarului de credit .

În continuare voi prezenta diagrama cazurilor de utilizare, realizată pe baza scenariului prezentat mai sus:

Figura 0.1Diagrama cazurilor de utilizare

Descriere textuală a cazurilor de utilizare

In diagrama prezentata in figura 3.2.1 identificam urmatorii actori: Utilizator, Agent banca care este relationat cu Agent BRD, Agent ING, Agent BCR. Actorul Utilizator interactioneaza cu urmatoarele cazuri de utilizaret: Autentificare care include cazul de utilizare Inregistrare, Gestionarea dosarului de credite ce include introducerea datelor clientului si celor specific creditului,solicitarea analizei dosarului de credite, care include completarea criteriilor pentru determinarea scoringului .Cazul de utilizare trimite dosar , ce este conditionat de cazul Solicita analiza dosar si este relationat cu actorul Agent banca.

Cazul de utilizare Autentificare are drept scop realizarea autentificarii utilizatorului pentru ca acesta sa poate accesa functionalitatile aplicatiei. Pentru a se realiza acest caz de utilizare aplicatia trebuie sa fie conectata la baza de date in care sunt stocate toate datele despre utilizatori(date personale si date cont utilizator). Acest caz de utilizare include si Inregistrare cont client in care putem identifica urmatoarele fluxuri de baza: Sistemul ofera posibilitatea utilizatorului de a se inregistra in aplicatie. Datele introduse de utilizator sunt salvate in baza de date. Printre datele furnizate de utilizator identificam e-mail si parola, care vor fi folosite de utilizator pentru a se loga in aplicatie. Acest caz de utilizare este precedat de Cautarea unui credit. Deoarece scopul principal al utilizatorului este de a gasi creditul cel mai potrivit , sistemul ii ofera acestuia posibilitatea de a cauta un credit pe baza unor criterii precum :tipul de credit, suma dorita, moneda in care se doreste creditul, perioada de rambursare a imprumutului. Acest caz de utilizare cuprinde si selectarea creditului si obtinerea detaliata a informatiilor despre acesta.

Descrierea scenariului Cauta Credite

Actor principal:Utilizatorul

Descriere:Căutarea rapidă a unui credit din catalogul de credite

Precondiții: Catalogul de credite este disponibil

Postcondiții: Clientul a găsit creditul căutat sau un alt credit și a aplicat pentru acesta

Decalsator:Utilizatorul dorește să se informeze despre creditele existente pe piață și să aplice la creditul cel mai potrivit pentru el.

Flux de bază:

Utilizatorul lansează o căutare rapidă, completând criteriile de căutare:categorie credit, tipul creditului, suma, moneda, perioada de rambursare a creditului;

Sistemul afișează rezultate sub formă tabelară.[Curs alternativ A:Nu există niciun credit care să se încadreze în criteriile specificate];

Utilizatorul selectează un credit. .[Curs alternativ B: Utilizatorul nu este interesat de rezultat];

Sistemul afișează o fișă detaliată pentru creditul respectiv cu următoarele categorii de informații: Informații generale de căutare, Detalii dobândă, Informații generale credit

Utilizatorul aplică pentru creditul care îl interesează.[ Curs alternativ B: Utilizatorul nu este interesat de rezultat];

Utilizatorul lansează o căutare rapidă, completând criteriile de căutare:categorie credit, tipul creditului, suma, moneda, perioada de rambursare a creditului;

Sistemul afișează rezultate sub formă tabelară.[Curs alternativ A:Nu există niciun credit care să se încadreze în criteriile specificate];

Utilizatorul selectează un credit. .[Curs alternativ B: Utilizatorul nu este interesat de rezultat];

Sistemul afișează o fișă detaliată pentru creditul respectiv cu următoarele categorii de informații: Informații generale de căutare, Detalii dobândă, Informații generale credit;

Utilizatorul aplică pentru creditul care îl interesează.[ Curs alternativ B: Utilizatorul nu este interesat de rezultat];

Fluxuri alternative:

Pornind de la fluxurile de baza am identificat si fluxuri alternative:

A:

Sistemul semnalează eșecul și propune utilizatorului o nouă căutare.Cazul reîncepe de la pasul 1 al fluxului de bază.

B:

Utilizatorul revine la prima etapă a fluxului de bază , pentru a lansa o nouă căutare;

Utilizatorul abandonează căutarea și cazul de utilizare ia sfârșit.

Frecvența utilizării: Foarte frecvent

Cauta credite reprezinta si o preconditie pentru realizarea urmatorului caz de utilizare, Gestionarea dosarului de credite. In acest caz de utilizare identificam urmatoarele secvente de activitati: Sistemul afiseaza datele utilizatorului – nume, prenume, cnp, telefon, adresa, telefon, e-mail si venit net lunar si varsta si ale creditului selectat de acesta- nume credit, valoare, perioada de rambursare, dobanda, avans. Utilizatorul poate modifica datele personale, suma si perioada de rambursare a creditului. Inainte de a trece la urmatorul caz de utilizare, Solicitarea analizei dosarului ,utilizatorul poate cere sistemului sa ii afiseze graficul de rambursare a creditului folosind datele specific creditului : dobanda si suma si perioada de rambursare specificata de utilizator.

Descirerea scenariului Gestionarea dosarului de credite

Actor principal:Utilizatorul

Descriere:Atunci când un utilizator dorește să aplice pentru un credit , acest credit este salvat în dosarul de credite.Dosarul de credite conține date despre utilizator și datele generale ale creditului.Utilizatorul poate modifica aceste date în cazul în care nu sunt valide.

Precondiții: Utilizatorul a aplicat pentru un credit.

Decalsator: Utilizatorul aplică pentru un credit.

Flux de bază:

Utilizatorul aplică pentru creditul care îl interesează.

Sistemul afișează atât datele utilizatorului, cât și datele creditului.Sunt afișate valoarea creditului, moneda, perioada de rambursare, rata dobândă și avansul.

Utilizatorul poate să modifice, ulterior, informațiile personale și informațiile referitoare la valoarea creditului, moneda și perioada de rambursare.

Pe baza datelor despre credit se poate genera graficul de rambursare.

Utilizatorul validează datele și cere executarea următorului caz de utilizare:Solicitarea analizei dosarului.[Caz alternativ A: Utilizatorul nu mai este interesat de creditul respectiv]

Fluxuri alternative:

A:

Utilizatorul revine la prima etapă a fluxului de bază , pentru a lansa o nouă căutare.

Utilizatorul nu mai dorește să aplice la alt credit și cazul de utilizare ia sfârșit.

Frecvența utilizării: Foarte frecvent.

Solicitarea analizei dosarului cuprinde secventele de activitati prin care sistemul determină dacă clientul respectă criteriile de eligibilitate și dacă are capacitatea de plăti ratele creditului la timp. Criteriile de eligibilitate sunt: varsta, venitul minim net al clientului si gradul maxim de indatorare. Daca toate acestea sunt indeplinite sistemul calculeaza scoring-ul si il instiinteaza pe client in legatura cu decizia luata. Acest caz de utilizare este urmat de Trimiterea dosarului, care este compus din urmatorul flux: sistemul preia datele din dosarul de credite si le trimite agentului bancii, folosind posta electronica.

Descirerea scenariului Solicitarea analizei dosarului

Actor principal:Utilizatorul

Descriere: Sistemul determină dacă clientul respectă criteriile de eligibilitate și dacă are capacitatea de plăti ratele creditului la timp.

Precondiții: Dosarul de credite să fie completat cu date valide.

Postcondiții: Utilizatorul primește un răspuns cu privire la decizia luată de sistem.

Decalsator: Utilizatorul dorește să aplice pentru un credit.

Flux de bază:

Sistemul verifică dacă vârsta utilizatorului se încadrează între vârsta minimă și maximă pentru care se acordă creditul.

Sistemul verifică dacă venitul net este mai mare decât venitul minim net impus de creditul ales.

Sistemul verifică dacă suma, moneda și perioada de rambursare a creditului se încadrează în valorile impuse de credit.

Sistemul calculează valoarea ratei lunare și o compară cu valoarea ratei lunare maxime pe care clientul o poate susține, conform venitului net, cheltuielilor de subzistență și ratele aferente altor credite.

Sistemul acordă câte un punctaj fiecărei caracteristici ale modelului de scoring . Prin însumarea acestor punctaje se obține un scor final .

Sistemul decide acceptarea sau respingerea dosarului de credite în funcție de rezultatele obținute în pașii prezentați anterior.

Sistemul îl înștiințează pe client că dosarul a fost acceptat . [Punct de extindere:CU09 Trimiterea dosarului ][Caz alternativ A: Dosarul a fost respins]

Fluxuri alternative:

Utilizatorul revine la prima etapă a fluxului de bază , pentru a lansa o nouă căutare.

Utilizatorul abandonează căutarea și cazul de utilizare ia sfârșit.

Frecvența utilizării: Foarte frecvent

Diagrame de activitate

Diagramele de activitate prezentate mai jos prezintă fluxul secvențelor de activități pentru realizarea procesului de obținere a unui credit bancar. Aceste diagrame au fost realizate pentru cazurile de utilizare identificate în pasul precedent .Astfel, activitatea „Autentificare ”, prezentata in figura 3.2.1 a fost realizată pentru primul caz de utilizare , unde putem identifica toate acțiunile care sunt parcurse pentru ca utilizatorul să se poate autentifica, și astfel să poată avea acces în aplicație: sistemul ii solicita clientului adresa de e-mail si parola pe baza carora se va realize autentificarea. Adresa de e-mail este unica pentru fiecare client, deci atunci cand se adaunga un nou client mai intai se verifica daca adresa de e-mail exista deja in baza de date.

In cazul in care clientul detine un cont de utilizator, acesta trebui sa introduca datele solicitate de sistem. Sistemul verifica daca parola si adresa de e-mail corespund contului de utilizator, iar in caz afirmativ acesta realizeaza autentificare si astfel se termina fluxul de activitate. In situatia in care credentialele introduce de utilizator nu corespund cu cele stocate in baza de date , sistemul ii solicita utilizatorului sa introduca din nou datele de autentificare.

Pentru utilizatorii care inca nu au cont in aplicatie, acestia au posibilitatea de a se inregistra completand un formular. Sistemul preia datele, creeaza contul de utilizator si fluxul de activitate revine la pasul “Solicita autentificare.”

Figura 0.2 Diagrama de activitate pentru autentificarea utilizatorului

În diagrama de activitate prezentată în figura 3.2.2 sunt prezentați pașii pe care un utilizator trebuie să îi urmeze pentru a găsi creditul dorit și a obține toate informațiile necesare pentru realizarea unui împrumut bancar. Acest flux de activitate este declansat de utilizator, care solicita sistemului sa gaseasca un anumit credit. La cererea clientului, sistemul afiseaza criteriile de cautare pe care utilizatorul trebuie sa le completeze pentru a se putea realiza cautarea. Astfel sistemul selecteaza din baza de date doar creditele care respecta conditiile impuse de client.

In cazul in care sistemul nu gaseste niciun credit care sa corespunda cerintelor utilizatorului, afiseaza un mesaj de atentionare si propune o noua cautare. In acesta situatie avem un nod de decizie:clientul realizeaza o noua cautare sau renunta si in acest caz fluxul de activitate se termina. Daca se incearca o noua cautare si de data aceasta exista credite in baza de date care corespund nevoilor utilizatorului, sistemul afiseaza toate creditele gasite. Utilizatorul vizualizeaza toate rezultatele si in cazul in care este interesat de un anumit credit solicita sistemului sa furnizeze mai multe informatii despre creditul selectat.

In urma analizei ofertei, utilizatorul poate opta fie pentru obtinerea creditului, fie pentru a realiza o noua cautare. Daca clientul aplica pentru oferta vizualizata, sistemul afiseaza un dosar de credite care contine atat datele utilizatorului, cat si cele ale creditului.

Dacă utilizatorul este interesat de un anumit credit , el poate aplica pentru creditul respectiv.

Figura 0.3 Diagrama de activitate pentru cautarea si aplicarea pentru un credit

După activitatea de selectare a unui credit, sistemul preia datele utilizatorului și ale creditului și le afișează în dosarul de credit al utilizatorului. Dosarul de credite se poate contine doar un singur credit , deoarece utilizatorul nu poate aplica în același timp pentru mai multe credite.

Dosarul de credite trebuie să fie complet și să conțină date valide atât despre credit , cât și despre client , deoarece pe baza acestui dosar se va decide dacă se poate obține sau nu, creditul avut în vedere. Atunci cand se realizeaza dosarul de credite vor fi preluate din baza de date urmatoarele date ale clientului: nume, prenume, adresa, cnp, telefon, e-mail. Pe langa aceste date mai sunt afisate si campurile venit lunar net si varsta pe care clientul trebuie sa le completeze. Pentru datele refertoare la credit, sistemul preia informatiile din tabelul de unde a fost selectat creditul:dobanda, moneda, avansul. Daca aceste date nu sunt corecte, utilizatorul le poate modifa sau poate adauga altele noi acolo unde este cazul. Urmatorul pas este solicitarea graficului de rambursare de catre client pentru a afla care este suma ce trebuie achitata in fiecare luna, care este dobanda si care este soldul ramas ce trebuie returnat.

Sistemul genereaza graficul pe baza urmatoarelor informatii: suma imprumutata, perioada de rambursare, rata dobanzii si avansul.

In urma analizarii graficului, clientul poate cere analiza dosarului sau se poate intoarce la activitatea de cautarea a altui credit. In cazul in care clientul cere analiza dosarului, sistemul preia datele si se trece la activitatea de analiza a dosarului de credit.

Pașii parcursi pentru gestiunea dosarului de credit sunt reprezentati si in Figura 3.3.3:

Figura 0.4 Diagrama de activitate pentru gestiunea unui dosar de credit

Diagrama de activitate Analiză dosar prezentata in figura Figura 3.3.4 urmărește identificarea etapelor din cadrul procesului de analiză a unui dosar de credit.

Pentru analiza dosarului sistemul analizeaza criteriile de eligibilitate : varsta clientului trebuie sa fie cuprinsa intre varsta minima si maxima impusa de credit, suma pe care utilizatorul o solicita trebuie sa fie cuprinsa intre suma minima si maxima a creditului, iar venitul net trebuie sa fie mai mare decat venitul net minim stabilit pentru creditul respectiv. Daca toate aceste criterii sunt indeplinite se trece la urmatorul pas. In caz contrar activitatea se termina.

Urmatorul pas il constituie compararea ratei lunare, determinata in actiunea de generare a graficului de rambursare, cu rata lunara maxima pe care clientul o poate rambursa conform veniturilor sale. Daca rata lunara este mai mica decat rata lunara maxima, sistemul ii cere clientului sa completeze parametrii scoringului. Pentru fiecare valoare completata, exista in baza de date o pondere pe care sistemul o extrage si o adauga la suma totala. Suma obtinuta se compara cu valorile stocate in tabela REZULTAT_SCOR, pentru banca de la care se solicita creditul si se extrage decizia stabilita de aceasta. Astfel sistemul decide daca dosarul de credit va fi acceptat sau nu de catre unitatea bancara.

Figura 0.5 Diagrama de activitate pentru analiza unui dosar

Pentru a modela caracterul dinamic al întregului proces de acordare a unui credit bancar , urmărit în aplicația de față am realizat diagrama de activitate prezentată în figura 3.3.5 , care surprinde principalele activități derulate în procesul obținerii unui credit bancar. Prima activitate este autentificare clientului in aplicatie prezentata in figura 3.3.1 care este urmata de activitatea de selectarea creditului dorit surprinsa in figura 3.3.2. Pe baza informatiilor despre credit si utilizator sistemul intocmeste dosarul de credite pe care utilzatorul poate sa il gestioneze astfel: poate modifica datele existente sau poate adauga alte date pe care dosaul nu le contine, dar care vor fi utile in urmatoarele activitati. De exemplu suma solicitata si perioada de rambursare pot lispi la intocmirea dosarului, dar ele sunt solicitate pe parcurs deoarece pe baza acestora se genereaza graficul de rambursare al creditului. In momentul in care dosarul contine toate datele necesare, utilizatorul poate solicita analiza dosarului de credit. Pentru realizarea acestei activitati clientul trebuie sa furnizeze venitul lunar net si varsta.

In cazul un care clientul nu mai este interesat de creditul selectat, el poate solicita cautarea altui credit. Daca acesta solicita analiza dosarului se realizeaza activitatea descrisa in figura 3.3.4 in care se prezinta etapele parcurse pentru luarea deciziei de acceptare sau respingere a dosarului. Daca se decide acceptarea dosarului si clientul inca mai doreste sa aplice pentru acest credit, sistemul salveaza dosarul in baza de date si trimite un e-mail bancii care ofera creditul, pentru a notifica existenta unui potential creditor. Actiunea Notifica agent banca se realizaeza in paralel cu actiunea Confirma trimitere dosar prin care sistemul ii confirma clientului ca procesul de notificare a bancii a fost initiata. In caz contrar, clientul poate solicita alt credit sau poate anula orice cautarea si fluxul de activitate ajunge la final.

Figura 0.6 Diagrama de activitate pentru obtinerea unui credit bancar

Diagrama de clase

Pentru realizarea modelului static al aplicației trebuie să identificăm conceptele care participă la realizarea cazurilor de utilizare , precum și relațiile dintre concepte .

In figura ….este prezentata diagrama de clase, unde putem identifica urmatoarele concepte:

Credit, Client, DosarCredit, CategorieCredit, Dobanda, Bancă, RezultatScor, ParametruScoring si ValoriParametru.Fiecare clasa are trei compartimente: nume, atribute și operații. Numele clasei este specificat singur în primul compartiment – de exemplu Credit, al doilea compartiment descrie proprietãti sub forma atributelor – de exemplu avans, banca, codCredit si operatiile care apar în descrierea clasei – de exemplu getAvans().

Atributele pe care le poate conține conceptul Credit sunt: denumire,suma minimă, suma maximă, vârsta minimă, vârsta maximă, perioada minimă, perioada maximă, tip garanție, grad maxim de îndatorare, moneda, avans, venit net minim,categorie credit, banca,dobânda.(Figura 3.4.1).

Figura 0.7 Clasa conceptuala Credit

În figura 3.4.1 este reprezentată clasa Client care conține în compartimentul dedicat atributelor proprietăți precum: adresa,cnp,codClient, email,nume,prenume,telefon,venit net.

Figura 0.8 Clasa Client

Atributele pe care le putem atribui conceptului CategorieCredit sunt:cod categorie și cod categorie principală.

Tipurile de informații pe care le poate conține clasa conceptuală DosarCredite pot fi: codDosar, valoareCredit, perioadaRamburs, rataLunară, totalPlată, dataDosar, rată, LunaraMAx, rezultatScor, client, credit.

În figura 3.4.2 sunt prezentate atributele conceptului Dobânda:

Figura 0.9 Clasa conceptuala Dobanda

Clasa Bancă conține următoarele ca și atribute codBanca și cuiBanca.

Clasa conceptulă RezultatScor este caracterizată prin atributele prezentate în figura 3.4.3: codRezultat,decizie,max_puncte,min_puncte și bancă

Figura 0.10 Clasa conceptuala RezultatScor

Conceptul ParametruScoring poate conține următoarele atribute: codParametru și denumire.

Atributele pe care le poate conține clasa conceptuală ValoriParametru sunt codValoare, denumire,scor și parametruScoring.

Următorul pas care trebuie realizat în vederea elaborării diagramei claselor a fost stabilirea legăturilor dintre clasele conceptuale. Clasele sunt conectate prin asocieri, având un nume, multiplicitate, constrângeri și roluri. Clasele sunt o abstractizare a obiectelor, deci este necesar să specificăm câte clase participă într-o asociere

Asocierea conceptelor client și credit se realizează prin intermediul asociației solicită.La asociere participă o instanță sau mai multe instanțe ale entității client și una sau mai multe instanțe ale entității credit, deoarece un client solicită unul sau mai multe și un credit poate să fi solicitat de cel puțin un client dar poate fi solicitat și de mai mulți clienți.

Asocierea conceptelor credit și categorie_credit se realizează prin intermediul asociației aparține, astfel un credit poate face parte dintr-o singură categorie de credite și fiecare categorie de credite poate conține un credit sau mai multe credite.

Asocierea conceptelor banca și credit  se realizează prin intermediul asociației aparține, astfel un credit aparține unei bănci și o bancă poate avea unul sau mai multe credite.

Legatura dintre credit și dobândă este realizata prin asociatia detine, astfel un credit are o dobândă și o dobândă aparține unui credit.

Legatura conceptelor credit și bancă se realizează prin intermediul asociației salvat, astfel unei instanțe credit i se poate asocia una sau mai multe instanțe ale clasei Dosar credite.

Unei instanțe a clasei Client i se pot asocia una sau mai multe instanțe ale clasei Dosar credite.Legatura dintre clasele conceptuale Client și Dosar credit este realizata prin intermediul asociatiei regasit.

Prezentarea bazei de date

Baza de date este realizată folosind produsul software SQLDeveloper fiind alcatuita din urmatoarele tabele:

DOSAR_CREDITE – tabela in care se stocheaza datele utilizatorilor si cele referitoare la credit:

COD_DOSAR: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare dosar;

DATA:câmp de tip varcharde lungime 50 care specifică data la care s-a realizat dosarul;

COD_CLIENT: câmp de tip integer de lungime 10 cararctere , reprezintă cheia de externă (foreign key) care leagă tabelele client și dosar de credite;

VALOARE_CREDIT: câmp de tip float de lungime 10 caractere, specifică valoarea pe care clientul dorește să o împrumute;

PERIOADĂ_RAMBURSARE: câmp de tip varchar de dimensiune maximă 10 caractere specifică durata de rambursare a creditului;

TOTAL_PLATĂ: câmp de tip float de dimensiune maximă 10 caractere, reprezintă suma care poate fi achitată în avans atunci când se contractează un credit;

COD_CREDIT: câmp de tip integer de lungime 10 cararctere, reprezintă cheia de externă (foreign key) care leagă tabelele credit și dosar de credit;

RATĂ_LUNARĂ: câmp de tip float de dimensiune maximă 10 caractere, reprezintă suma pe care creditorul o achită lunar, în urma realizării împrumutului;

RATĂ_LUNARĂ_MAXIMĂ: câmp de tip float de dimensiune maximă 10 caractere, reprezintă suma maximă pe care creditorul o achită lunar, în urma realizării împrumutului;

COD_REZULTAT: câmp de tip integer de lungime 10 cararctere, reprezintă cheia de externă care leagă tabelele REZULTAT_SCOR și DOSAR_CREDITE.

CLIENT – este entitatea utilizată pentru a gestiona clienții care accesează site-ul de credite.

COD_CLIENT: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare client;

NUME: câmp de tip varchar de dimensiune 50 caractere stochează numele clientului;

PRENUME: câmp de tip varchar de dimensiune 50 de caractere care salvează prenumele clientului;

CNP: câmp de tip varchar de lungime maximă 10 caractere care indică codul numeric personal al clientului;

TELEFON: câmp de tip varchar cu dimensiunea maximă de 50 caractere care salvează numărul la care poate fi contactat clientul;

EMAIL : câmp de tip varchar de lungime maximă de 50 caractere stochează adresa de e-mail a clientului;

ADRESĂ : câmp de tip varchar de lungime maximă de 50 caractere stochează adresa de clientului;

PAROLA: câmp de tip varchar de lungime maximă de 50 caractere stochează parola utilizatorului;

VENIT_NET: câmp de tip float stochează venitul utilizatorului.

BANCA- entitatea folosită pentru a gestiona băncile cu care colaborează site-ul de credite

COD_BANCA: de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare bancă;

CUI:câmp de tip integer de lungime maximă 50 caractere, reprezintă codul unic de înregistrare a unei bănci;

DENUMIRE_BANCĂ: câmp de tip varchar, de dimesiune maximă 50 caractere specifică denumirea băncii care oferă creditul.

DOBÂNDA: cuprinde informațiile necesare pentru efecuarea calcului DAE

COD_DOBÂNDĂ – de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare dobândă

Rată_dobândă – câmp de tip float de lungime maximă 10 caractere, exprimă în procente dobânda creditului;

VALOARE_DOBÂNDĂ – câmp de tip float , conține informații despre dobânda percepută de către instituțiile financiare la acordarea unui credit bancar;

TIP_DOBÂNDĂ– câmp de tip varchar de lungime maximă 50 caractere conține informații de tipul dobânzii, care poate fi fiză sua variabilă;

DETALII_DOBÂNDĂ– de tip varchar de lungime maximă 50 caractere conține detalii despre dobânda variabilă;

METODĂ_CALCUL – câmp de tip varchar de lungime maximă 50 caractere.Acesta precizează metoda de calcul a dobânzii.Majoritatea băncilor folosesc o formulă de calcul pentru anul financiar de 360 de zile.Există însă bănci care folosesc o formulă cu 365 de zile pentru calculul anuității.

CATEGORIE_CREDIT- pentru a gestiona categoriile de credite existente în baza de date.

COD_CATEGORIE: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare categorie;

DENUMIRE_CATEGORIE:câmp de tip varchar de lungime 50 de caratere , indică categoria generală a fiecărui tip de credit;

COD_CATEGORIE_PRINCIPALĂ: câmp de tip integer de lungime 10 caractere, reține codul categoriei principale.

CREDIT- este entitatea utilizată pentru gestionarea creditelor existente în baza de date a site-ului:

COD_CREDIT: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare credit;

DENUMIRE_CREDIT: câmp de tip varchar de lungime maximă 50 caractere, specifică denumirea creditului;

suma_maximă:câmp de tip float, indică suma maximă pe care o poate acorda banca pentru un credit;

suma_minimă:câmp de tip float, indică suma minimă pe care o poate acorda banca pentru un credit

vârsta_minimă:câmp de timp integer de lungime maximă 10 caractere , indică vârsta de la care o persoană poate solicita un credit;

vârsta_maximă: câmp de timp integer de lungime maximă 10 caractere , indică vârsta până la care o persoană poate solicita un credit;

perioada_maximă: câmp de tip integer de lungime maximă 10 caractere, indică durata maximă de rambursare a creditului;

perioada_minimă: câmp de tip integer de lungime maximă 10 caractere, indică durata minimă de rambursare a creditului;

tip_garanție: câmp de tip varchar de lungime maximă 50 caractere , specifică garanția creditului;

grad_maxim_îndatorare: câmp de tip float, specifică gradul maxim de îndatorare a unui credit , exprimat în procente;

moneda: câmp de tip varchar de dimensiune maximă 3 caractere, specifică moneda în care poate fi acordat creditul;

AVANS: câmp de tip float, specifică avansul pe care clientrul trebuie să îl acorde în vederea acordării unui credit;

VENIT_NET_MINIM:câmp de tip float, specifică venitul net minim pentru care se acordă creditul;

COD_CATEGORIE: câmp de tip integer de lungime maximă 10 caractere, reprezintă cheia externă care leagă tabelele CATEGORIE_CREDIT si CREDIT.

COD_BANCĂ: câmp de tip integer de lungime maximă 10 caractere, reprezintă cheia externă care leagă tabelele BANCĂ și CREDIT.

COD_DOBÂNDĂ: câmp de tip integer de lungime maximă 10 caractere, reprezintă cheia externă care leagă tabelele DOBÂNDĂ și CREDIT.

Structura tabelei PARAMETRU_SCORING are următoarea structură:

COD_PARAMETRU: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare parametru;

DENUMIRE :câmp de tip varchar de lungime maximă 50 caractere;

Structura tabelei VALORI_PARAMETRU_SCORING are urmatoarea structura:

COD_VALOARE: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare valoare a a unui parametru;

DENUMIRE:câmp de tip varchar de lungime maximă 50 caractere;

SCOR: câmp de tip float, specifică punctajul pentru o valoare a unui parametru;

COD_PARAMETRU: câmp de tip integer de lungime maximă 10 caractere, reprezintă cheia externă care leagă tabelele VALORI_PARAMETRU_SCORING și PARAMETRU_SCORING

Structura tabelei REZULTAT_SCOR are următoarea structură:

COD_REZULTAT: câmp de tip integer de lungime 10 caractere are proprietatea de incrementare automată folosit pe post de cheie primară cu valoare unică pentru fiecare scor rezultat;

MIN_PUNCTE: câmp de tip float, specifică numărul minim de puncte în care trebuie să se încadreze scorul final pentru o anumită decizie;

MAX_PUNCTE: câmp de tip float, specifică numărul maxim de puncte în care trebuie să se încadreze scorul final pentru o anumită decizie;

DECIZIE:câmp de tip varchar de lungime maximă 50 caractere;

COD_BANCĂ:câmp de tip integer de lungime maximă 10 caractere, reprezintă cheia externă care leagă tabelele BANCĂ și REZULTAT_SCOR.

„Modelarea conceptuală sau proiectarea conceptuală a bazei de date este procesul de

construire a unui model de informații utilizate într-o companie, care este independent de detaliile

de implementare, cum ar fi sistemul SGBD, programele aplicație, limbajele de programare sau

orice alte tipuri de considerații fizice. Schema conceptuală trebuie să fie o implementare completă și corectă a cerințelor companiei (organizației) privind datele”[31]

In figura 2.2 din ANEXA 2 este prezentata Schema conceptuala a bazei de date care contine 9 tabele intre care se stabilesc relatii de dependenta. Astfel in tabela dependenta se adauga o cheie straina care refera cheia primara a entitatii referite.

Tabela CLIENT este legata de tabela DOSAR CREDIT prin atributul cod_client care este cheia primara in tabela CLEINT si cheie externa in tabela DOSAR CREDIT. Intre tabele DOSAR CREDIT si CREDIT se realizeaza relatia de dependenta prin intermediul atributului cod_credit, un dosar contine doar un singur credit, dar un credit poate apartine mai multor dosare.

Un credit poate apartine unei singure categorii deci tabela CATEGORIE_CREDIT si CREDIT sunt legate prin intermediul atributului cod_categorie.

Tabele BANCA si CREDIT sunt legate folosind atributul cod_banca care este cheie primara in tabela Banca si cheie externa in cea de-a doua tabela.

Atributul cod_dobanda reprezinta referinta din tabela DOBANDA in tabela CREDIT, cu ajutorul careia se realizeaza asocierea intre cele doua tabele, deoarece un credit are o dobanda.

Tabela REZULTAT_SCOR este legata de tabela BANCA prin intermediul atributului cod_banca si de tabela DOSAR_CREDIT prin intermediul cod_rezultat, deoarece o banca poate solicita un anumit scor pentru decizia de acceptare/ respingere a dosarului, iar fiecare dosar trebuie sa contina decizia luata de catre sistem in urma unei analize.

Tabele PARAMETRU_SCORING si VALORI_PARAMETRU_SCORING sunt legate folosind cheia externa cod_parametru deoarece un parametru poate avea mai multe valori.

Prezentarea aplicației

Primul pas în dezolvarea aplicației îl reprezintă conectarea la baza de date în scopul introducerii datelor utilizatorilor folosite pentru autentificarea acestora, extragerii informațiilor necesare afișării creditelor,introducerea datelor utilizate pentru realizarea dosarului de credite,etc.(Figura ). Conectarea la baza de date se realizează prin intermediul API-ului JDBC care este responsabil cu accesul efectiv la datele stocate, fiind legatura între aplicație și baza de date. Folosind metoda getConnection(String url, String user, String password) din clasa DriverManager, putem realiza conexiunea la baza de date:

conn =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","vlad","oracle");

Odată conectați la baza de date putem trece la dezvoltarea modulelor funcționale ale aplicației.

Aplicația conține o fereastră de login prin intermediul căreia utilizatorii se pot autentifica folosind adresa de e-mail și o parolă. FeSistemul verifică dacă datele sunt valide astfel: mai intâi verifică dacă adresa de e-mail corespunde unui client din baza de date. În caz afirmativ se compară parola introdusă în fereastra de Login cu parola existentă în baza de date pentru clientul respectiv.În cazul în care cele două parole sunt diferite sistemul afișează un mesaj de eroare, astfel se deschide principala fereastră a aplicației.

Figura 0.11 Pagina de Login

În cazul în care aceștia nu și-au înregistrat datele personale în sistem, o pot face accesând butonul „Înregistrare ” din fereastra de „Login”. Sistemul va afisa fereastra de Înregistrare in care este prezentat un formular, unde utilizatorul trebuie să iși introducă datele persoanle în vederea realizării unui cont client(Figura 1 din Anexa nr.2). Toate datele din formular sunt obligatorii:nume,prenume, adresa, CNP, telefon, e-mail, parola si confirmare parola

Pentru a evita introducerea unor valori eronate pentru câmpul CNP, am implementat un algortim care contine două metode: getArray(String s) și isValid(String s). Metoda isValid preia sirul de caractere din vampul CNP . Mai intai verifica daca lungimea acestuia este egala cu 13, apoi apeleaza getArray penreu a transforma sirul de caractere intr-un vector de tip String. Fiecare caracter , mai putin ultimul este multiplicat de un numar de ori si este adugat la suma sum. Intr-o variabila de tip long salvam restul impartirii sumei finale la 11 si o folosim in conditia care verifica daca sirul de caractere reprezinta o valoare valida pentru campul CNP.

Figura 0.12 Algortim de validare CNP

În cazul în care CNP-ul nu este valid utilizatorul este atenționat prin mesajul de eroare „CNP invalid !” prezentat în figura 4.2.2.

Figura 0.13 Mesaj eroare „CNP Invalid!”

Pentru a asigura o securitate cât mai ridicată , parola trebuie să respecte condițiile ilustrate în figura 4.2.4.: „Sa contina intre 8 si 16 caractere”, „Sa contina cel putin o cifra”, „Sa contina cel putin o litera mare si o litera mica ” si „Sa contina cel putin unul din caractere speciale :@, %, #, $. În cazul în care una din condițiile menționate mai sus , nu este îndeplinită, sistemul afișează un mesaj de eroare, ca și în cazul CNP-ului.

Figura 0.14 Conditii parola

Algoritmul din figura Figura 4.4.5 este folosit pentru a verifica dacă sirul de caractere introdus in campul Parola îndeplinește criteriile specificate .Pentru aceasta se folosește clasa Pattern pe baza căreia se creează o instanță de tip Matcher care poate potrivi secvențe de caractere arbitrare cu o expresie. Mai intai se realizeaza o instanta a clasei Pattern cu ajutorul metodei statice compile() care primeste ca parametru constanta de tip String : PASSWORD_PATTERN = "((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?=.*[@#$%!]).{8,16}). Apeland metoda matcher(String s ) din clasa Pattern obtinem o instanta de tip Matcher , cu ajutorul careia putem apela metoda matches() ce returneaza true in cazul in care parola se potriveste cu secventele de caracteze din constanta PASSWORD_PATTERN si false in caz contrar.

Figura 0.15 Agoritm validare parola

În fereastra principală a aplicației, Fig.4.2.6, sunt prezentate categoriile principale de credite: Credite de consum, Credite Imobiliare si Credite Auto. Pentru fiecare categorie de credite , fereastra conține două butoane „Caută credite”, respectiv „Catalog credite”cu ajutorul cărora putem accesa fereastra Cauta credite pentru a căuta un anumit tip de credit sau accesa catalogul de credite pentru a vizualiza toate creditele dintr-o anumita categorie.

Figura 4.2.0.16 Pagina Principală

Fereastra principală mai conține și un meniu cu ajutotur căruia putem naviga prin ferestrele aplicației: Catalog credite si formularul de căutare.

Formularul de căutare conține 5 câmpuri care reprezintă criteriile de căutare a unui credit și anume: Categorie credit este o componeneta de tip JcomboBox care permite selectarea unei anumite categorii de credite, Tip credit – această componentă devine activă doar după ce a fost selectată o categorie de credite și conține tipurile de credit pentru o anumită categorie, Valoare credit este un câmp de tip text în care este introdusă valoarea care se dorește a fi impurmutata, Moneda – componentă JcomboBox care permite selctarea valutei in care se doreste imprumutul , Perioada de rambrsare a creditului – câmp de tip text în care se introduce perioada de timp pe care clientul o dorește pentru a returna creditul.

Toate câmpurile pe baza cărora se va face căutarea sunt obligatorii. Dacă unul dintre criterii nu este completat, utilizatorul este atenționat, iar căutarea se va realiza doar în momentul în care toate criterii au fost completate. Acest lucru este ilustrat în Fig.4.2.7 unde este simulata situatia in care utilizatorul nu introduce valoarea creditului si nu selecteaza moneda :

Figura 4.2.0.17 Validare criteriilor de căutare

Metoda de selectare al creditelor din baza de date prezentata în Fig.4.2.8 primeste ca parametrii categorieCredit, valoareCredit, moneda, perioadacredit, ce vor fi utilizati pentru a construi conditia pentru instructiunea select. Pe baza rezultatelor obtinute se creeaza instante ale Clasei credit care se adauga in lista credit.

Figura 4.2.0.18 Fereastra Caută credite

În urma căutării unui credit, sistemul returnează toate creditele din baza de date care respectă condițiile mai sus menționate sub forma unui tabel ilustrat în Fig. 4.2.9 care contine urmatoarele coloane : Banca, Nume credit, Avans, Rata initiala, Suma de rambursat, Rata dobanda si Tip dobanda. În cazul în care nu există niciun credit în baza de date este afișat urmatorul mesaj de atenționare Nu există rezultate folosind aceste criterii.

Figura 4.2.0.19 Fereastra Caută credite

În urmă afișării rezultatelor, utilizatorul poate opta pentru obținerea mai multor informații despre creditul selectat, accesând butonul „Detalii credit” din meniul pop-up ilustrat în Fig.4.2.10 sau poate trece la pasul următor accesând butonul „Aplică”.

Figura 4.2.0.20 Fereastra Caută credite

Dacă este ales butonul „Detalii credit” se vă afișa o pagină care conține detalii despre creditul selectat.Aici sunt specificate „Informațiile generale de căutare” , „Detalii dobânda” și „Informațiile generale credit” care sunt prezentate sub forma de tab-uri.

În figura 4.2.6 este prezentat tab-ul „Informațiile generale de căutare” care conține informațiile pe baza cărora s-a realizat căutarea, rata lunară și totalul de plată.

Figura 4.2.6 Fereastra Caută credite

Rata lunară este calculată pe baza unui algoritm, folosind următoarele date: valoarea creditului, perioada de rambursare(ani), dobânda și avansul. In Fig. 4.2.11 este prezentata metoda calculeaza calculeazaRataLunara(double sold, double rata_dobanda, int nr_ani, int avans) unde se calculeaza rata_dobanda si soldul din care se scade procentul care trebuie achitat ca avans , dupa care se aplica formula generala pentru a determina rata lunară a unui credit.

Figura 4.2.7 Fereastra Caută credite

În tab-ul „Detalii dobânda” ilustrat în Fig.4.2.12 sunt afișate datele despre tipul dobânzii și metoda de calcul. Aceste date sunt preluate din tabela Dobanda unde cheia primara este egala cu valoarea atributului cod_dobanda din clasa Credit.

Figura 4.2.8 Fereastra Detalii Dobânda

În „Informațiile generale credit” sunt afișate cele mai importante informații cu privire la creditul care se dorește a fi împrumutat(Fig.4.2.13).

Aceste informatii sunt preluate din baza de date pe baza creditului selectat din fereastra Caută Credite folosind metoda cautaCredit(String denumireCredit ) din clasa CreditController.

Figura 4.2.9 Fereastra Informații generale credit

Butonul „Aplică Acum” face referință la Dosarul de credite prin intermediul căruia utilizatorul poate obține un credit, după ce sistemul realizează o analiză preliminară a datelor din dosarul de credite.

Prima fereastră a dosarului de credite conține datele personale ale utilizatorului preluate din baza de date și informații cu privire la creditul selectat. Pentru a afisa aceste date am folosit campuri de tip JTextField si JTextArea in cazul adresei clientului. Pe langa datele completate de catre utilizator in formularul de inregistrare mai sunt afisate si Venit lunar net si Varsta care vor fi competate de utilizator in momentul in care se doreste analiza dosarului. În cazul în care datele personale ale utilizatorului nu corespund cu cele afișate în dosarul de credite, utilizatorul are posibilitatea de a-si actualiza datele inlocuid valorile existente cu altele noi si accesând butonul Actualizează date personale. Atunci cand este apasat butonul Actualizează date personale se actualizeaza toate datele din tabela Client cu valorile actuale din campurile de tip JTextField.

In cazul in care creditul afisat este preluat din formularul de cautare, in fereastra Dosar de credit vor fi afisate urmatorele informatii: Valoare credit, Perioada de rambursare in luni, Moneda, Rata dobanda si Avans. Daca se opteaza pentru alegerea creditului din Catalogul de credite valoarea creditului di perioada de rambursare nu vor fi afisate initial in Dosarul de credit. Acestea vor fi completate ulterior de catre utilizator.

Inainte de a solicita analiza dosarului, utilizatorul poate analiza graficul de rambursare al creditului prin selectarea butonului Grafic de rambursare. Mai intai se verifica daca valorile campului Valoare credit si perioada rambursare sunt diferite de null. Daca aceste conditii sunt false se afiseaza mesajul de eroare “Va rugam introduceti valoarea creditului”, respectiv mesajul prezentat in figura 4.2.10, “Va rugam introduceti perioada de rambursare a creditului”. Fara aceste doua valori nu se poate genera greficul de rambursare.

Figura 4.2.10

Graficului se realizeaza apeland metoda Object[][] calculeazaGraficRambursare(double sold, double rata_dobanda, int nr_ani, int avans,double rata_lunara,double dobanda_total) din clasa CalculatorRata prezentata in ANEXA 3 unde am determinat soldul care trebuie rambursat pentru fiecare luna in parte si am calculat dobanda lunara folosind formula dobanda_lunara = dobanda_total / (nr_ani * 12), principalul si numarul de luni ramase. Aceste date sunt returnate dub forma unei matrici de tipul Object si sunt adaugate in tabelul Grafic de Rambursare prezentat in figura 2 din ANEXA 2. Alaturi de acest grafic sunt mentionate si totalul sumei care se ramburseaza si rata lunara care trebuie platita.

Pentru analiza dosarului se verifica daca utilizatorul a completat campurile Venit lunar si Varsta. Fara acestea nu se poate trece la etapa de analiza.De aceea in cazul in care una dintre cele doua valori lipsesc sistemul il notifica pe utilizator printr-un mesaj realizat folosind metoda showMessageDialog(parentComponent, message, title, messageType) din clasa JOptionPane.

De exemplu in cazul in care nu este introdusa valoarea venitului sistemul apeleaza JOptionPane.showMessageDialog ( null, "Va rugam sa introduceti venitul lunar! ", "Eroare", JOptionPane.ERROR_MESSAGE) .

Prima conditie care se verifica in etapa de analiza a dosarului este daca venitul net este cuprins in intervalul salvat in baza de date pentru creditul respectiv. In cazul in care conditia nu este indeplinita, sistemul afiseaza un mesaj in care se prezinta decizia de respingere a dosarului si solicitarea unei confirmari in cazul in care se doreste cautarea altui credit. Acest lucru se realizeaza urmatoarea metoda din clasa JOptionPane:

showConfirmDialog(null, "Rata lunara " + new CalculatorRata().truncateDecimal(rata_lunara,

credit.getMoneda() + " depaseste rata maxima,"

+new CalculatorRata().truncateDecimal (gradIndatorare, 2) + " " +credit.getMoneda() +" , care poate fi acordata, conform venitului dvs! \n"+"Doriti sa cautati alt credit?", "Dosar respins", JOptionPane.YES_NO_OPTION);

In cazul in care valoarea returnata de acesta metoda este egala cu optiunea JOptionPane.YES_OPTION inseamna ca utilizatorul a ales cautarea altui credit si este afisata pagina Cauta credite.

Cea de-a doua conditie este verificarea criteriului de eligibilitate vasrta care trebuie sa fie cuprinsa intre valorile impuse de catre banca care acorda creditul.In cazul in care acesta conditie nu este indeplinita se procedeaza ca la pasul anterior si se afiseaza mesajul de eroare din Figura 4.2.11 in care sistemul notifica clientul de respingerea dosarului.

Urmatorul pas este completarea criteriilor pentru determinarea scoringului bancar. Criteriile care se folosesc pentru a calcula scoringul sunt : Stare civila , Persoane in intretinere, Nivel educatie, Ocupatie/Loc de munca, Durata contract, Vechime in munca, Venit lunar mediu minus impozite si alte retineri, Garantii bancare, Bunuri pentru asigurarea creditului.

Fiecare criteriu contine mai multe valori, dintre care clientul trebuie sa aleaga una din optiunile prezentate.De exemplu in figura 4.2.12 au fost selectate urmatoarele valori: pentru criteriul Stare civila -necasatorit, Persoane in intretinere – 2 persoane , Ocupatie/Loc de munca – Salariat , Durata contract – Perioada nedeterminata, Vechime in munca: – 6luni – 3 ani, Venit lunar mediu minus impozite si alte retineri – 2000-3000 RON, Garantii bancare – Depozite bancare, Bunuri pentru asigurarea creditului – Apartament.

Fiecarui parametru ii este asociata o pondere, asftel atunci cand utilizatorul selecteaza un anumit parametru din tabela valori_parametru_scoring este extrasa o valoare care este adaugata la suma scoringului.Pentru suma determinata se extrage din tabela rezultat_scor decizia impusa de banca pentru situatia de fata.

In cazul in care dosarul este acceptat este afidat un mesaj in care se prezinta decizia luata pe baza rezultatului de scoring.

In situatia in care utilizatorul nu obtine un punctaj care sa ii permita sa aplice pentru creditul pe care il doreste sistemul ii propune noua cautare. Daca acesta este interesat de alt credit selecteaza YES, atfel poate selecta No si activitatea de obtinere a unui credit se termina.

In figura 4.2.13 este prezentat rezultatul obtinut in urma selectarii variantelor de la pasul anterior. In urma interogarii bazei de date , s-a decis acceptarea dosarului pentru punctajul obtinut .In aceasta situatie este afisat mesajul “Punctajul obtinut ii permite utilizatorului sa aplice pentru creditul dorit.” si este afisata fereastra Finalizare precontract in care sunt prezentate rezultatele finale ale analizei dosarului : Rezultatul scoringului, Venitul net actual , Gradul maxim de indatorare.

Daca utilizatorul nu mai este interest de creditul actual poate accesa butonul Anuleaza si astfel se revine la pagina principala. In caz contrar el acceseaza Finalizeaza si banca este notificata de existenta unui potential creditor. Notificarea bancii se realizaeaza prin trimiterea unui e-mail de atre sistem. Acest e-mail contine date referitoare la client, cat si la creditul care se doreste a fi imprumutat.

De exemplu, in Figura 3 din ANEXA 2 este prezentat un model de e-mail care se trimite unui agent al bancii.

CONCLUZII

Sistemul bancar deține un rol foarte important în economia de piață a unui stat, asigurând mobilizarea tuturor fondurilor monetare existente în economie și distribuirea lor în scopul realizării unor activități economice eficiente. Sistemul bancar include un ansamblu de bănci care se află sub conducerea unei bănci centrale. Funcțiile băncii centrale sunt: emisiune monetară, concentrarea rezervelor bănești ale băncilor comerciale și acordarea creditelor de refinanțare, acordarea de împrumuturi statului și păstrarea tezaurului public.

Ceea ce m-a motivat in alegerea temei de disertatie „Baza de date in sistemul bancar – solutie Oracle” a fost in primul rand multitudinea imprumuturilor bancare realizate de catre persoanele care necesita o anumita suma de bani pentru investitii sau nevoi personale. Decizia acordarii de credite unei anumite persoane implica un proces de analiza detaliata, tinandu-se cont de mai multi factori insa cel principal este venitul net.

Utilizabilitatea unei aplicatii de acordare de credite care analizeaaza si este capabil sa ia decizii este si va fi din ce in ce mai mare de la an la an, clientilor fiindu-le mult mai comod sa foloseasca un sistem informatic care sa le returneze un raspuns in functiile de anumite date de intrare introduse in sistem decat sa alerge institutiile bancare pentru a putea realiza un imprumut.

Astfel, importanta unei aplicatii informatice de acordare de credite se rezuma in primul rand la economisirea timpului si la un nivel de stres mai scazut, fiind necesar un calculator sau un laptop, o conexiune la internet si aproximativ 20 de minute din timpul liber, actiunea putandu-se derula la orice ora din zi si din noapte. Timpul este o resursa foarte importanta, de altfel toate sistemele informatice sunt realizate pentru a usura activitatile zilnice ale omenilor.Acesta a fost si unul dintre principalele motive pentru care am ales sa dezvolt o aplicatie informatica de acordare de credite destul de utila si necesara.

Bibliografie

Andrew Murray: "Analiza creditului", Editura Expert, Bucuresti, 2002

A.Berea, O.Berea.:Sistemul bancar romanesc si integrarea europeana, Editura Expert, 2000

Dan Moraru, R.Caracota: – Monedă, bănci, credit, Editura Sylvi, București, 2001.

Dardac, N. și Moinescu B, Evaluarea cantitativă a riscului de credit din

perspectiva Basel II, Revista Economie teoretică și aplicată, 2006

Duffie, Darrell & Kenneth J. Singleton (2003), Credit Risk: Pricing, Measurement,

and Management, Princeton University Press, Princeton.

Ion Lungu,Constanta Bodea,Georgeta Badescu,Cristina Ionita,Baze de date organizare,proiectare si implementare,Editura All Educational,Bucuresti,1995.

Ion Turcu: Operațiuni și contracte bancare, Editura Lumina Lex, București, 1995.

Ionescu Lucian, Băncile și operațiunile bancare, Editura Economică, București, 1996

Mihai Ilie, Tehnica și managementul operațiunilor bancare, Editura Expert, București, 2003

Palferman D. Ford Ph., Elements of Banking, Pitman, London, 1989

Servigny, Arnaud și Olivier (2004), Ghidul de măsurare și de gestionare a riscului de

credit, Standard & Poor's, McGraw-Hill.

Ungureanu, Pavel, Banking – produse și operațiuni bancare, Editura Dacia, Cluj-Napoca, 2001

Valentin Leoveanu: "Credit si institutii de credit", Editura Bren, Bucuresti,2008

Velicanu Manole, Lungu Ion, Ionescu Simona, Muntean Mihaela, Sisteme de baze de date, Ed.Petrion Gaudeamus, București, 2003 Popescu, I., Modelarea bazelor de date – Editura Tehnica, Bucuresti 2001;

ARTICOLE:

Basel Committee on Banking Supervision (1999), Credit Risk Modelling: Current

Practices and applications, www.bis.org/publ/bcbs49.pdf

European Central Bank (2009), The challenges of credit risk management: lessons learned from the crisis,http://www.ecb.int/press/key/date/2010/html/sp100526.en.html

Kocenda, E., Vojtek, M. (2009), “Default Predictors and Credit Scoring Models for

Retail Banking”, Cesifo Working Paper No. 2862, http://papers.ssrn.com/sol3/papers. cfm?abstract_id=1519792

NUCU, Anca Elena (2011): Managementul riscului de creditare: realizări actuale, analiză critică, sugestii, http://mpra.ub.uni-muenchen.de/27932/

Trenca, Ioan, Bolocan Mihail-Dragoș (2010), Considerations regarding credit portfolio risk management of the banking institution, Revista „Finanțe. Provocările viitorului”, Anul IX, nr.1/2010 pp.84-90, Editura Universitară Craiova (ISSN 1583 – 3712), JEL, RePEc (G21).

ACTE NORMATIVE

Legea nr. 58/05 martie 1998, Legea bancară, publicată în Monitorul Oficial al României nr.121 din 23 martie 1998 http://www.legex.ro/Legea-33-1991-1949.aspx

ADRESE DE SITE-URI

http://inf.ucv.ro/~giurca/courses/CB3105/resources/Introducere%20in%20UML.pdf

http://the-money-channel.ro/?p=21426

http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=458&idb=

http://www.bnro.ro/Home.aspx

http://www.efin.ro/credit-scoring-prezentare

http://www.efin.ro/credit-scoring?l=credite_nevoi_personale&p=549

https://www.finzoom.ro/AF/ConsumerLoans/ING/Confirmation.aspx

http://www.oracle.com/ro/technologies/java/overview/index.html

http://www.raiffeisen.ro/

http://www.unicredit-tiriac.ro/

http://vega.unitbv.ro/~cataron/Courses/BD/BD_Cap_2.pdf

ANEXA 1

Abrevieri

BCR – Banca Comerciala Romana

BRD – Banca Romana de Dezvoltare

XML – Extensible Markup Language

SQL – Structured Query Language IDE

PL/SQL – Procedural Language/Structured Query Language

ADF – Application Development Framework

EE – Enterprise Edition

SOA – Service-oriented architecture

IDE – Integrated development environment

HTML – HyperText Markup Language

UML – Unified Modeling Language

SE – Satndard Edition

JDK – Java Developement Kit

OOP – Object Oriented Programming

DB Dif – Database Diff

DB Doc – Dabase Doc

DDL – Data Definition Language

API – Application Program Interface

JDBC- Java Database Connectivity)

ANEXA 2

În figura 3.4.10 este prezentată Diagrama claselor care pune în evidență modelul static al aplicației informatice.

Figura 0.1 Diagrama de clase

Figura 0.2 Schema conceptula a bazei de date

Figura 1.0.3 Fereastra Inregistrare

Figura 1.0.5 E-mail notificare banca

Figura 1.0.4 Grafic rambursare

ANEXA 3

Metoda calculeazaGraficRambursare returneaza o matrice de tip Object care fi adaugata in tabela in care se afiseaza graficul de rambursare pentru un credit.

public Object[][] calculeazaGraficRambursare(double sold, double rata_dobanda, int nr_ani, int avans,double rata_lunara, double dobanda_total) {

rata_dobanda = rata_dobanda / 100;

sold = sold – ((avans / 100) * sold);

int i = 1;

dobanda_lunara = dobanda_total / (nr_ani * 12);

principal = rata_lunara – dobanda_lunara;

sold_ramas = sold – principal;

int nr = nr_ani * 12;

Object rowData[][] = new String[nr][100];

rowData[0][0] = "1";

rowData[0][1] = truncateDecimal(sold, 2) + "";

rowData[0][2] = truncateDecimal(principal, 2) + "";

rowData[0][3] = truncateDecimal(dobanda_lunara, 2) + "";

rowData[0][4] = truncateDecimal(rata_lunara, 2) + "";

rowData[0][5] = truncateDecimal(sold_ramas, 2) + "";

nr_ani = nr_ani * 12 – 1;

while (nr_ani > 0) {

i = i + 1;

sold = sold_ramas;

dobanda_total = sold * rata_dobanda * nr_ani;

dobanda_lunara = dobanda_total / (nr_ani * 12);

principal = rata_lunara – dobanda_lunara;

nr_ani = nr_ani – 1;

sold_ramas = sold – principal;

rowData[i – 1][0] = i + "";

rowData[i – 1][1] = truncateDecimal(sold, 2) + "";

rowData[i – 1][2] = truncateDecimal(principal, 2) + "";

rowData[i – 1][3] = truncateDecimal(dobanda_lunara, 2) + "";

rowData[i – 1][4] = truncateDecimal(rata_lunara, 2) + "";

rowData[i – 1][5] = truncateDecimal(sold_ramas, 2) + "";

}

return rowData;

}

Generare e-mail la apasarea butonului Finalizeaza

private void jButton9_actionPerformed(ActionEvent e) {

DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");

Date date = new Date();

String from = "[anonimizat]";

String pass = "ioanalovealex18iulie";

String[] to = { credit.getBanca().getEmail() }; // list of recipient email addresses

String subject = "Dosar credit " + client.getPrenume() + " " + client.getNume();

String body =

"<html>" + "<body>" + "<p>COD DOSAR: </p>" + " <p>DATA DOSAR: " + dateFormat.format(date) + " </p>" +

"<h2>DATE SOLICITANT </h2>" + "<p>SOLICITANT: " + client.getPrenume() + " " + client.getNume() + "</p>" +

"<p>CNP: " + client.getCnp() + " </p>" + "<h3>DATE CONTACT</h3>" + "<p>ADRESA: " + client.getAdresa() +

"</p>" + "<p>TELEFON: " + client.getTelefon() + "</p>" + "<p>EMAIL: " + client.getEmail() + "</p>" +

"<p></p>\n" +

"<h2>DATE CREDIT</h2>" + "<p>DENUMIRE CREDIT: " + credit.getDenumireCredit() + " </p>" +

"<p>VALOARE CREDIT: " + sold + " " + credit.getMoneda() + " </p>" + "<p>PERIOADA RAMBURSARE: " + nr_ani +

" ani </p>" + "<p>RATA LUNARA: " + new CalculatorRata().truncateDecimal(rata_lunara, 2) + " " +

credit.getMoneda() + " </p>" + "<h2>DATE ANALIZA DOSAR</h2>" + "<p>REZULTAT SCORING: " + totalScor +

" puncte </p>" + "<p>VENIT LUNAR: " + salariuNetTextField.getText() + " RON </p>" + "</body>" + "</html>";

new Emailing().sendFromGMail(from, pass, to, subject, body);

JOptionPane.showMessageDialog(null, "Dosarul de credit a fost aplicat cu sucess!", "Confirmare",

JOptionPane.INFORMATION_MESSAGE);

dispose();

}

Cauta credit in functie de criteriile selectate de catre client si afisarea rezultatelor extrase din baza de date

//cautare credit

private void jButton1_actionPerformed(ActionEvent e) {

String categorieCredit=jComboBox1.getSelectedItem().toString();

String valoareCredit= jTextField1.getText();

String moneda=jComboBox3.getSelectedItem().toString();

String perioadacredit=jTextField2.getText();

String denumireSubcategorie=jComboBox2.getSelectedItem().toString();

jLabel9.setText("");

jLabel10.setText("");

jLabel11.setText("");

jLabel12.setText("");

jLabel13.setText("");

//verificam daca fiecare criteriu de cautare este introdus

if(categorieCredit.equals(" – Alege – ")){

jLabel9.setText("Va rugam sa alegeti categoria de credit");

}

if(denumireSubcategorie.equals(" – Alege – ")){

jLabel10.setText("Va rugam sa alegeti tipul de credit");

}

if(valoareCredit.equals("")){

jLabel11.setText("Va rugam sa introduceti valoarea creditului");

}

if(moneda.equals(" – Alege – ")){

jLabel12.setText("Va rugam sa alegeti moneda");

}

if(perioadacredit.equals("")){

jLabel13.setText("Va rugam sa introduceti perioada de rambursare");

return;

}

if(((categorieCredit.equals(" – Alege – "))||(denumireSubcategorie.equals(" – Alege – "))||(valoareCredit.equals(""))||(moneda.equals(" – Alege – ")))&&(perioadacredit!="")){

return;

}

ArrayList<Credit> credit=MainController.getInstance().cautaCredit(denumireSubcategorie,Float.parseFloat(valoareCredit), moneda, Integer.parseInt(perioadacredit));

System.out.println(credit.toString());

if(credit.isEmpty())

{

JOptionPane.showMessageDialog(null, "Nu exista rezultate !","Atentie", JOptionPane.WARNING_MESSAGE);

} else

{

if (tabelModel.getRowCount() > 0) {

for (int i = tabelModel.getRowCount() – 1; i > -1; i–) {

tabelModel.removeRow(i);

}

}

for(Credit c:credit){

//System.out.println("SearchFrame:"+c.getBanca().getDenumireBanca()+" "+c.getDenumireCredit()+" "+c.getDobanda().getValoaredobanda());

CalculatorRata n = new CalculatorRata();

double rataLunara = n.calculeazaRataLunara(Double.parseDouble(valoareCredit),c.getDobanda().getValoaredobanda(),Integer.parseInt(perioadacredit)/12,c.getAvans());

double totalPlata=rataLunara*Integer.parseInt(perioadacredit);

Object[] val = {c.getBanca().getDenumireBanca(),c.getDenumireCredit(),c.getAvans()+"%",new CalculatorRata().truncateDecimal(rataLunara, 2)+" "+c.getMoneda(),new CalculatorRata().truncateDecimal(totalPlata, 2)+" "+c.getMoneda(),c.getDobanda().getValoaredobanda()+ "%",c.getDobanda().getTipDobanda()};

tabelModel.addRow(val);

table.setModel(tabelModel);

}

}

}

Bibliografie

Andrew Murray: "Analiza creditului", Editura Expert, Bucuresti, 2002

A.Berea, O.Berea.:Sistemul bancar romanesc si integrarea europeana, Editura Expert, 2000

Dan Moraru, R.Caracota: – Monedă, bănci, credit, Editura Sylvi, București, 2001.

Dardac, N. și Moinescu B, Evaluarea cantitativă a riscului de credit din

perspectiva Basel II, Revista Economie teoretică și aplicată, 2006

Duffie, Darrell & Kenneth J. Singleton (2003), Credit Risk: Pricing, Measurement,

and Management, Princeton University Press, Princeton.

Ion Lungu,Constanta Bodea,Georgeta Badescu,Cristina Ionita,Baze de date organizare,proiectare si implementare,Editura All Educational,Bucuresti,1995.

Ion Turcu: Operațiuni și contracte bancare, Editura Lumina Lex, București, 1995.

Ionescu Lucian, Băncile și operațiunile bancare, Editura Economică, București, 1996

Mihai Ilie, Tehnica și managementul operațiunilor bancare, Editura Expert, București, 2003

Palferman D. Ford Ph., Elements of Banking, Pitman, London, 1989

Servigny, Arnaud și Olivier (2004), Ghidul de măsurare și de gestionare a riscului de

credit, Standard & Poor's, McGraw-Hill.

Ungureanu, Pavel, Banking – produse și operațiuni bancare, Editura Dacia, Cluj-Napoca, 2001

Valentin Leoveanu: "Credit si institutii de credit", Editura Bren, Bucuresti,2008

Velicanu Manole, Lungu Ion, Ionescu Simona, Muntean Mihaela, Sisteme de baze de date, Ed.Petrion Gaudeamus, București, 2003 Popescu, I., Modelarea bazelor de date – Editura Tehnica, Bucuresti 2001;

ARTICOLE:

Basel Committee on Banking Supervision (1999), Credit Risk Modelling: Current

Practices and applications, www.bis.org/publ/bcbs49.pdf

European Central Bank (2009), The challenges of credit risk management: lessons learned from the crisis,http://www.ecb.int/press/key/date/2010/html/sp100526.en.html

Kocenda, E., Vojtek, M. (2009), “Default Predictors and Credit Scoring Models for

Retail Banking”, Cesifo Working Paper No. 2862, http://papers.ssrn.com/sol3/papers. cfm?abstract_id=1519792

NUCU, Anca Elena (2011): Managementul riscului de creditare: realizări actuale, analiză critică, sugestii, http://mpra.ub.uni-muenchen.de/27932/

Trenca, Ioan, Bolocan Mihail-Dragoș (2010), Considerations regarding credit portfolio risk management of the banking institution, Revista „Finanțe. Provocările viitorului”, Anul IX, nr.1/2010 pp.84-90, Editura Universitară Craiova (ISSN 1583 – 3712), JEL, RePEc (G21).

ACTE NORMATIVE

Legea nr. 58/05 martie 1998, Legea bancară, publicată în Monitorul Oficial al României nr.121 din 23 martie 1998 http://www.legex.ro/Legea-33-1991-1949.aspx

ADRESE DE SITE-URI

http://inf.ucv.ro/~giurca/courses/CB3105/resources/Introducere%20in%20UML.pdf

http://the-money-channel.ro/?p=21426

http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=458&idb=

http://www.bnro.ro/Home.aspx

http://www.efin.ro/credit-scoring-prezentare

http://www.efin.ro/credit-scoring?l=credite_nevoi_personale&p=549

https://www.finzoom.ro/AF/ConsumerLoans/ING/Confirmation.aspx

http://www.oracle.com/ro/technologies/java/overview/index.html

http://www.raiffeisen.ro/

http://www.unicredit-tiriac.ro/

http://vega.unitbv.ro/~cataron/Courses/BD/BD_Cap_2.pdf

ANEXA 1

Abrevieri

BCR – Banca Comerciala Romana

BRD – Banca Romana de Dezvoltare

XML – Extensible Markup Language

SQL – Structured Query Language IDE

PL/SQL – Procedural Language/Structured Query Language

ADF – Application Development Framework

EE – Enterprise Edition

SOA – Service-oriented architecture

IDE – Integrated development environment

HTML – HyperText Markup Language

UML – Unified Modeling Language

SE – Satndard Edition

JDK – Java Developement Kit

OOP – Object Oriented Programming

DB Dif – Database Diff

DB Doc – Dabase Doc

DDL – Data Definition Language

API – Application Program Interface

JDBC- Java Database Connectivity)

ANEXA 2

În figura 3.4.10 este prezentată Diagrama claselor care pune în evidență modelul static al aplicației informatice.

Figura 0.1 Diagrama de clase

Figura 0.2 Schema conceptula a bazei de date

Figura 1.0.3 Fereastra Inregistrare

Figura 1.0.5 E-mail notificare banca

Figura 1.0.4 Grafic rambursare

ANEXA 3

Metoda calculeazaGraficRambursare returneaza o matrice de tip Object care fi adaugata in tabela in care se afiseaza graficul de rambursare pentru un credit.

public Object[][] calculeazaGraficRambursare(double sold, double rata_dobanda, int nr_ani, int avans,double rata_lunara, double dobanda_total) {

rata_dobanda = rata_dobanda / 100;

sold = sold – ((avans / 100) * sold);

int i = 1;

dobanda_lunara = dobanda_total / (nr_ani * 12);

principal = rata_lunara – dobanda_lunara;

sold_ramas = sold – principal;

int nr = nr_ani * 12;

Object rowData[][] = new String[nr][100];

rowData[0][0] = "1";

rowData[0][1] = truncateDecimal(sold, 2) + "";

rowData[0][2] = truncateDecimal(principal, 2) + "";

rowData[0][3] = truncateDecimal(dobanda_lunara, 2) + "";

rowData[0][4] = truncateDecimal(rata_lunara, 2) + "";

rowData[0][5] = truncateDecimal(sold_ramas, 2) + "";

nr_ani = nr_ani * 12 – 1;

while (nr_ani > 0) {

i = i + 1;

sold = sold_ramas;

dobanda_total = sold * rata_dobanda * nr_ani;

dobanda_lunara = dobanda_total / (nr_ani * 12);

principal = rata_lunara – dobanda_lunara;

nr_ani = nr_ani – 1;

sold_ramas = sold – principal;

rowData[i – 1][0] = i + "";

rowData[i – 1][1] = truncateDecimal(sold, 2) + "";

rowData[i – 1][2] = truncateDecimal(principal, 2) + "";

rowData[i – 1][3] = truncateDecimal(dobanda_lunara, 2) + "";

rowData[i – 1][4] = truncateDecimal(rata_lunara, 2) + "";

rowData[i – 1][5] = truncateDecimal(sold_ramas, 2) + "";

}

return rowData;

}

Generare e-mail la apasarea butonului Finalizeaza

private void jButton9_actionPerformed(ActionEvent e) {

DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");

Date date = new Date();

String from = "[anonimizat]";

String pass = "ioanalovealex18iulie";

String[] to = { credit.getBanca().getEmail() }; // list of recipient email addresses

String subject = "Dosar credit " + client.getPrenume() + " " + client.getNume();

String body =

"<html>" + "<body>" + "<p>COD DOSAR: </p>" + " <p>DATA DOSAR: " + dateFormat.format(date) + " </p>" +

"<h2>DATE SOLICITANT </h2>" + "<p>SOLICITANT: " + client.getPrenume() + " " + client.getNume() + "</p>" +

"<p>CNP: " + client.getCnp() + " </p>" + "<h3>DATE CONTACT</h3>" + "<p>ADRESA: " + client.getAdresa() +

"</p>" + "<p>TELEFON: " + client.getTelefon() + "</p>" + "<p>EMAIL: " + client.getEmail() + "</p>" +

"<p></p>\n" +

"<h2>DATE CREDIT</h2>" + "<p>DENUMIRE CREDIT: " + credit.getDenumireCredit() + " </p>" +

"<p>VALOARE CREDIT: " + sold + " " + credit.getMoneda() + " </p>" + "<p>PERIOADA RAMBURSARE: " + nr_ani +

" ani </p>" + "<p>RATA LUNARA: " + new CalculatorRata().truncateDecimal(rata_lunara, 2) + " " +

credit.getMoneda() + " </p>" + "<h2>DATE ANALIZA DOSAR</h2>" + "<p>REZULTAT SCORING: " + totalScor +

" puncte </p>" + "<p>VENIT LUNAR: " + salariuNetTextField.getText() + " RON </p>" + "</body>" + "</html>";

new Emailing().sendFromGMail(from, pass, to, subject, body);

JOptionPane.showMessageDialog(null, "Dosarul de credit a fost aplicat cu sucess!", "Confirmare",

JOptionPane.INFORMATION_MESSAGE);

dispose();

}

Cauta credit in functie de criteriile selectate de catre client si afisarea rezultatelor extrase din baza de date

//cautare credit

private void jButton1_actionPerformed(ActionEvent e) {

String categorieCredit=jComboBox1.getSelectedItem().toString();

String valoareCredit= jTextField1.getText();

String moneda=jComboBox3.getSelectedItem().toString();

String perioadacredit=jTextField2.getText();

String denumireSubcategorie=jComboBox2.getSelectedItem().toString();

jLabel9.setText("");

jLabel10.setText("");

jLabel11.setText("");

jLabel12.setText("");

jLabel13.setText("");

//verificam daca fiecare criteriu de cautare este introdus

if(categorieCredit.equals(" – Alege – ")){

jLabel9.setText("Va rugam sa alegeti categoria de credit");

}

if(denumireSubcategorie.equals(" – Alege – ")){

jLabel10.setText("Va rugam sa alegeti tipul de credit");

}

if(valoareCredit.equals("")){

jLabel11.setText("Va rugam sa introduceti valoarea creditului");

}

if(moneda.equals(" – Alege – ")){

jLabel12.setText("Va rugam sa alegeti moneda");

}

if(perioadacredit.equals("")){

jLabel13.setText("Va rugam sa introduceti perioada de rambursare");

return;

}

if(((categorieCredit.equals(" – Alege – "))||(denumireSubcategorie.equals(" – Alege – "))||(valoareCredit.equals(""))||(moneda.equals(" – Alege – ")))&&(perioadacredit!="")){

return;

}

ArrayList<Credit> credit=MainController.getInstance().cautaCredit(denumireSubcategorie,Float.parseFloat(valoareCredit), moneda, Integer.parseInt(perioadacredit));

System.out.println(credit.toString());

if(credit.isEmpty())

{

JOptionPane.showMessageDialog(null, "Nu exista rezultate !","Atentie", JOptionPane.WARNING_MESSAGE);

} else

{

if (tabelModel.getRowCount() > 0) {

for (int i = tabelModel.getRowCount() – 1; i > -1; i–) {

tabelModel.removeRow(i);

}

}

for(Credit c:credit){

//System.out.println("SearchFrame:"+c.getBanca().getDenumireBanca()+" "+c.getDenumireCredit()+" "+c.getDobanda().getValoaredobanda());

CalculatorRata n = new CalculatorRata();

double rataLunara = n.calculeazaRataLunara(Double.parseDouble(valoareCredit),c.getDobanda().getValoaredobanda(),Integer.parseInt(perioadacredit)/12,c.getAvans());

double totalPlata=rataLunara*Integer.parseInt(perioadacredit);

Object[] val = {c.getBanca().getDenumireBanca(),c.getDenumireCredit(),c.getAvans()+"%",new CalculatorRata().truncateDecimal(rataLunara, 2)+" "+c.getMoneda(),new CalculatorRata().truncateDecimal(totalPlata, 2)+" "+c.getMoneda(),c.getDobanda().getValoaredobanda()+ "%",c.getDobanda().getTipDobanda()};

tabelModel.addRow(val);

table.setModel(tabelModel);

}

}

}

Similar Posts