Dezvoltarea Aplicatiilor Mobile
CUPRINS
INTRODUCERE
CAPITOLUL 1. DESCRIEREA PROBLEMEI ECONOMICE
1.1. Prezentarea domeniului bancar
1.2. Compartimentele domeniului bancar
1.3. Activitățile domeniului bancar
1.4. Prezentarea activității care va fi informatizată
CAPITOLUL 2: TEHNOLOGII INFORMATICE UTILIZATE
2.1 Tehnologia MySQL
2.2. Tehnologia Java
2.3. Tehnologia Android
CAPITOLUL 3. ANALIZA ȘI PROIECTAREA SISTEMULUI INFORMATIC
3.1. Specificarea cerințelor sistemului informatic
3.2. Identificarea procedurilor necesare
3.3. Proiectarea noului sistem
CAPITOLUL 4. REALIZAREA APLICAȚIEI INFORMATICE
4.1. Implementarea aplicației
4.2. Prezentarea aplicației
CONCLUZII
BIBLIOGRAFIE
ANEXĂ
INTRODUCERE
Segmentul studiat în prezenta lucrare de licență este cel al sistemului bancar din România, având ca principal scop îmbinarea sistemelor bancare cu noile tehnologii mobile, respectiv implementarea aplicațiilor mobile în domeniu bancar.
Baza de date reprezintă o colecție de date, stocată pe un suport de memorie, organizată logic într-o anumită structură, fiind astfel ușor accesibilă calculatorului și disponibilă utilizatorului pentru modelare, raportare, modificare.
Aplicația mobilă este un produs software proiectat pentru a rula pe un dispozitiv mobil, care are un sistem de operare, cum ar fi smartphone-urile sau tabletele. Aplicațiile mobile sunt frecvent dezvoltate pentru a le putea oferi utilizatorilor, pe un dispozitiv mobil, servicii similare cu cele accesate de pe PC.
Sistemul bancar este alcătuit din toate instituțiile, normele, relațiile financiar-bancare, infrastructurile, tehnicile ce interacționează în mod complex, cu scopul direcționării sub formă de depozite și de a oferi, sub formă de credite, fonduri monetare, precum și de a oferi facilități inclusiv sisteme de plăți, pentru diverși agenți economici, financiari sau nefinanciari, inclusiv persoane fizice. Sistemul bancar este una dintre cele mai importante componente ale sistemului financiar al unei țări [1].
Sistemul bancar reprezintă o ramură crucială în economia modernă, nu poate fi conceput un sistem economic în absența sectorului bancar. Una din principalele funcții ale sectorului bancar este cea de creditare.
Sistemul bancar românesc are o evoluție accelerată, determinată de necesitatea adaptării sale la cerințele funcționării într-o economie în tranziție către economia de piață. Sporirea complexității sale corelată cu cerința creșterii vitezei de răspuns la stimuli externi, proveniți din economia reală, precum și cu necesitatea sporirii eficienței sale impug dezvoltarea tehnicilor moderne de calcul în acest sistem. Relațiile de interdependență existente între segmentele de activitate dezvoltate în cadrul băncii sunt cele care fac necesară o abordare sistemică intregratoare a acestei dezvoltări. Trebuie avut în vedere caracterul dinamic al dezvoltării și funcționării sistemului, datorat impactului pe care acesta îl are cu mediul din care face parte, caracterizat prin transformarea continuă în toate componentele sale (juridic, economic, cultural etc.) și concurența sporită internă și externă. [2]
Funcția de creditare și-a făcut apariția în perioada istorică a dezvoltării producției industrial și de mărfuri, funcție creată pentru a facilita transferul de produse de la vânzător la comparator, fără că valoarea oferită de către comparator vânzătorului să aibă loc simultan, ci la un anumit interval stabilit în prealabil.
În esență economia de piață are nevoie de existența unui sistem bancar care poate asigura mobilizarea tuturor lichidităților disponibile și direcționarea lor temporară în desfășurarea de activități economice. Astfel, s-au conturat anumite relații între bancă și client, relații care au evoluat, într-o piață liberă și concurențială prin dezvoltarea produselor și serviciilor, oferite prin managementul bancar.
Dezvoltarea unui sistem informatic are un rol crucial în desfășurarea activității unui business, în special în cazul unui business de asemenea dimensiuni ca o instituție bancară. În lipsa unui sistem informatic, pentru a putea stoca și procesa datele nu ar putea face față pieței concurențiale contemporane.
Tehnologia informației în sectorul bancar își face simțită prezența în toate departamentele, de la partea operațională până la management, oferind mijloacele necerate pentru implementarea serviciilor și oferind posibilitatea unor analize detaliate.
Pornind de la aceste premise mi-am propus realizarea unei aplicații informatice care este folosită de către departamentul de vânzări, al instituției bancare, prin intermediul căreia se vor analiza creditele solicitate de către persoane.
Voi surprinde în primul capitol al acestei lucrări descrierea problemei economice, cu implicațiile în domeniul bancar, activitățile și componentele sale, dar și ramură ce va fi informatizată.
În cel de-al doilea capitol voi prezenta tehnologiile folosite în dezvoltarea soluției.
În capitolul trei voi realiza analiza și proiectarea sistemului informatic, specificarea cerințelor acestuia, analiza sistemului existent dar și proiectarea noului sistem informatic.
În ultimul capitol voi prezenta aplicația propriu-zisă, pașii parcurși pentru realizarea acesteia, dar și funcționalitățile.
CAPITOLUL 1. DESCRIEREA PROBLEMEI ECONOMICE
Prezentarea domeniului bancar
Sistemul bancar românesc, în perioada economiei cu planificare centrală, a fost organizat după modelul sovietic, care punea mare accent pe conceptul de monobancă. Banca Națională Română exercita atât anumite funcții de bancă comercială cât și unele de bancă de emisiune, BNR-ul aflându-se în centrul sistemului statului român care se ocupă de implementarea planului central și de controlul administrativ al fluxurilor de fonduri în economie. Pe lângă BNR, sistemul cuprindea patru bănci cu specializare în finanțarea unui sector de activitate economică specifică. Un număr restrâns de operațiunile în valută erau efectuate de patru bănci străine autorizate (Société Générale, Frankfurt Bucharest Bank, Banque Franco-Roumaine, Manufacturers Hanover Trust). [8]
În decembrie 1990, când sistemul monobancar caracteristic economiei cu programare centrală a fost schimbat cu un sistem ordonat pe două niveluri (BNR și bănci comerciale), a început reforma sistemului bancar. În procesul de structurare al unui sistem bancar de tip occidental, BNR și-a însușit sarcina de a dirija politica monetară și de a exercita funcțiile definitorii ale unei bănci centrale, iar activitățile sale comerciale au fost atribuite unei bănci nou create: Banca Comercială Română (BCR). În același timp băncile specializate au fost schimbate în bănci comerciale universale. [8]
Parlamentul României a adoptat în aprilie 1991 legea cu privire la activitatea bancară și legea cu privire la statutul BNR., aceste legi au stabilit înființarea noului sistem bancar axat pe piață. Dezvoltarea băncilor cu capital privat și posibilitatea de intrare liberă pe piața bancară autohtonă a instituțiilor financiare străine au fost încurajate de noul cadru juridic.
Băncile, în calitate de bănci comerciale de tip universal, realizează o gamă amplă de operațiuni bancare pe întreg teritoriul României, ca autoritate de supraveghere bancară, cu condiția respectării normelor de prudentiale emise de Banca Centrală. Odată cu promulgarea legislației (1994) care face referire la bursele de valori și valorile mobiliare, băncile nu mai pot acționa în mod direct pe piețele de capital, fiind util în acest scop crearea unor filiale specializate sub formă de societăți de valori mobiliare. În următorii ani, cadrul legislativ care legalizează activitatea bancară a fost sistematizat,
cu ajutorul emiterilor de ordonanțe de urgență, pentru a realiza un grad cât mai mare de compatibilitate cu reglementările asemănătoare europene și cele mai bune aplicări internaționale. [8]
Apariția banilor în economie au influențat înființarea unei instituții care să asigure atât emisiunea cât și supravegherea circulației în condiții optime a acestora. Funcționarea instituțiilor de stat au dus la nevoia acoperirii unor cheltuieli suplimentare realizate prin emisiunea monetară. Drept urmare, la momentul respectiv, monopolul emisiunii purtat de stat a stat la baza creării autorității monetare. Ca urmare a nevoii de coordonare a activităților bancare în economie și intensificării la nivel internațional a presiunilor inflaționiste s-a impus existența băncii centrale, în calitate de instituție ierarhică superioară celorlalte instituții bancare. [3]
În anul 1668 a fost creată prima bancă – Banca Regală Suedeză, iar în 1694 Banca Angliei. Banca Națională a României a fost creată în anul 1880. [4]
Legea 17 din data de 29 aprilie 1880 care preciza” înființarea unei bănci de scont și circulație” a condus la crearea BAR. Începând cu 1 iulie 1880, se înființează pentru o perioadă de 20 de ani BNR având dreptul doar de a elabora” bilete de bancă la purtător”. Capitalul era doar de 30 de milioane de lei, dintre care doar 10 milioane erau prestate de stat, iar restul fiind alcătuite prin subscripție publică. [5]
Sistemul bancar românesc a avut o evoluție accelerată, fiind determinată de cerințele de funcționare și nevoia adaptării la acestea, într-o economie care evoluează către economia de piață. Cerința de creștere a vitezei de răspuns la stimulii externi corelată cu sporirea complexității sale, precum și cu necesitatea de sporire a eficienței sale impulsionează dezvoltarea tehnicilor de calcul moderne în acest sistem. Segmentele de activitate avansate în cadrul băncii prezintă relații de interdependență, care necesită o abordare coerentă integratoare a acestei dezvoltări.
Trebuie luat în calcul caracterul dinamic al funcționării și dezvoltării sistemului, datorat impactului avut de acesta cu mediul de care aparține. Acesta este caracterizat de transformarea continuă a tuturor componentelor sale (economic, juridic, cultural, etc.) și de concurență sporită externă și internă. [6]
Principala ramură a acestei activități bancare este comerțul cu bani. Sunt situații în care banca are posibilitatea de a cumpăra bani, suportând astfel costul reprezentat de dobândă, iar în alte situații
banca are posibilitatea de a vinde bani, prin intermediul activităților de creditare, prin perceperea dobânzii.
Pornind de la aceste argumente, propun dezvoltarea unei soluții menite să inoveze sistemul actual privind serviciile oferite angajaților băncii, respective agenții de vânzări, pentru identificarea potențialilor clienți, pentru calculul scoringului specific fiecărui tip de credit și pentru înaintarea cererii de credit inițiată de un client.
Scoring-ul este un indicator bancar, bazat pe o analiză statistică a datelor oferite de către client și pe comportamentul de plată al solicitantului în relațiile anterioare cu banca. Algoritmul de calculare al scoring-ului se updatează în timp, o dată cu modificarea comportamentului clienților. În funcție de datele aferente solicitantului, se face o analiză pe baza fiecărei caracteristici și se estimează un profil de risc. Utilizând profilul rezultat, banca decide eligibilitatea clientului de a obține un împrumut și plafonul maxim pe care acesta îl poate accesa pe o perioadă definită.
Sistemul de calcul al scoring-ului este unul confidențial și specific fiecărei bănci în parte. Pe baza datelor statistice obținute de fiecare bancă se validează un algoritm de calcul, în funcție de experiențele anterioare, de previziunile statistice realizate și de gradul de risc pe care și-l asumă banca. Fiind un algoritm flexibil în timp pot interveni modificări astfel încât o persoană care nu este eligibilă pentru un credit, poate fi acceptată în următorul interval de timp sau de către altă bancă.
Proiectul studiază structura, departamentele și situația actuală în sistemul bancar, cu preponderență comportamentul departamentului de Vânzări Directe, cu scopul de a facilita oferirea de credite și implicit creșterea veniturilor realizate.
Compartimentele domeniului bancaelor statistice obținute de fiecare bancă se validează un algoritm de calcul, în funcție de experiențele anterioare, de previziunile statistice realizate și de gradul de risc pe care și-l asumă banca. Fiind un algoritm flexibil în timp pot interveni modificări astfel încât o persoană care nu este eligibilă pentru un credit, poate fi acceptată în următorul interval de timp sau de către altă bancă.
Proiectul studiază structura, departamentele și situația actuală în sistemul bancar, cu preponderență comportamentul departamentului de Vânzări Directe, cu scopul de a facilita oferirea de credite și implicit creșterea veniturilor realizate.
Compartimentele domeniului bancar
Banca reprezintă o persoană juridică, structurată ca societate comercială bancară pe acțiuni. Datorită nevoii oamenilor de a efectua diverse tranzacții, banca a apărut ca un rezultat al progresului societății, ajutând activitățile bancare să se adapteze la noile cerințe. În acest fel s-a dezvoltat rețeaua de bănci, cu scopul de a desfășura o activitate cât mai complexă. [7]
Banca este împărțită, din punct de vedere structural-funcțional în următoarele compartimente: sediul central, filiale, sucursale, agenții. Partea operațională a băncii este formată din sucursale, filiale și agenții, care țin legătura directă cu clienții.
Identificarea activităților băncii și nivelurile ierarhice de exercitare a activităților sunt reprezentate prin organigrama funcțională. Principalele activități sunt grupate astfel:
activitățile de exploatare care asigură relațiile directe cu clienții. Misiunea principală a acestor activități este aceea de a vinde servicii și produse clienților băncii;
activitățile de producție tratează operațiile inițiate de activitățile de exploatare: calculul dobânzilor, comisioanelor, evidența conturilor clienților;
activități de asistare care vizează în principal următoarele:
asistență resurse materiale (tratare informații, imobile) și de personal;
asistență de specialitate: juridic, piețe de capital, marketing, relații externe;
asistență tehnică: inginerie financiară, trezorerie; [9]
Figura 1.2 Ierarhie compartimente bancare [8]
Departamentele cele mai importante ale unei bănci sunt: de sinteză, tezaur și casierie, trezorerie, operațiuni comerciale externe, de metodologie și control, operațiuni necomerciale externe, operațiuni comerciale externe, investiții proprii, credite, internațional, secretariatul general, resurse umane, servicii informatice, investiții proprii, contabilitate, juridic. [10]
Departamentul de credite reprezintă un punct de interes central. Organizarea activității de creditare este diferită în funcție de mărimea unei unități. Ofițerul unei unități mici poate realiza toată munca: negocierea, contactul cu clientul, acordarea creditului, instrumentarea dosarului de credit, revizuirea în mod frecvent a dosarului de credit și încasarea. În schimb, în unități mai mari, ofițerii de credite se perfecționează în consultarea clientului, instrumentarea dosarului, negociere, existând o divizare funcțiilor pe departamente: analiza creditului, revizuirea și încasarea împrumutului. [9]
Activitățile domeniului bancar
În limita autorizației acordate, persoanele juridice, băncile și sucursalele băncilor străine pot desfășura următoarele activități:
acceptare depozite;
operațiuni de factoring, scontare efecte de comerț inclusiv forfetare și contracte de creditare;
emitere și gestiune instrumente de plată și de credit;
leasing financiar;
plăti și decontări;
emitere de garanții și asumare de angajamente;
transferuri de fonduri;
tranzacții în cont propriu sau în contul clienților cu:
valută;
instrumente monetare negociabile (cambii, cecuri, certificate de depozit);
valori mobiliare;
pietre prețioase, metale prețioase, obiecte confecționate din acestea;
instrumente financiare derivate;
administrarea de portofolii ale clienților, în numele și pe riscul acestora;
intermedierea în plasamentul de valori mobiliare și oferirea de servicii legate de acesta;
depozitar pentru organismele de plasament colectiv de valori mobiliare;
custodia și administrarea de valori mobiliare;
consultanță financiar-bancară;
operațiuni de mandat;
închirierea de casete de siguranță;
Băncile pot să deruleze activități prevăzute de legislația privind bursele de valori prin valori mobiliare și societăți distincte, caracteristicile pieței de capital, care vor activa sub reglementarea și supravegherea Comisiei Naționale a Vămilor Mobiliare, excepție făcând activitățile executate în mod direct de către bănci. Băncile vor desfășura operațiunile de leasing financiar prin societăți distincte. [11]
Activitatea de creditare fiind cea urmărită în proiect, voi detalia în cele ce urmează.
Principala misiune a acestui serviciu este de a analiza dosarele clienților care solicită credit, capacitatea de plată a acestora. Prin acest serviciu se efectuează revizuirea creditelor și încasarea împrumuturilor. [9]
Una dintre activitățile de bază ale unei bănci este reprezentată de creditare. În ansamblul activelor unei bănci, creditele reprezintă o activitate importantă a acestora, fiind o sursă importantă de venit. Partea cea mai vizibilă a personalului unei bănci este reprezentată de ofițerii de credit, iar politicile de creditare ale unei bănci constituie o funcție importantă în creșterea economică și dezvoltarea anumitor domenii de activitate. [12]
Principalele componente ale departamentului de creditare sunt:
Comitetul de credit (sucursale, filiale, agenții) este compus din:
conducerea unității;
șef serviciu credite.
Acest comitet are următoarele sarcini:
analiza și aprobarea creditelor în limita plafoanelor atribuite de centrală;
revizuirea și propunerea măsurilor pentru creditele restante;
stabilește o nouă dată pentru credite;
analiza și trimiterea creditelor mari spre aprobare. [9]
Departamentul de credit (centrală) este comportamentul centralei de lucru, care are următoarele sarcini:
participarea la elaborarea politicii de creditare a băncii;
analizarea dosarelor de credit alcătuite de unitățile din subordine pentru creditele care intră în competența de aprobare a centralei. După aceea sunt înaintate spre Comitetul de credite spre aprobare.
acordarea asistenței tehnice și de specialitate pentru a evalua garanțiile;
efectuarea de expertize pentru evaluările prezentate de clienți ca garanții;
elaborarea normelor de creditare în conformitate cu legea. [9]
Comitetul de risc (centrală)- băncile au nevoie de două comitete de acest fel:
comitetul de risc al directorilor
comitetul de risc al ofițerilor de credite. (ofițeri de credite-experți, specialiști externi direcției de credite).
Comitetul ofițerilor se întâlnește zilnic, sarcinile acestuia fiind:
urmărirea respectării normelor bancare, politicii de creditare și normelor interne;
asigurarea unui audit periodic pentru toate unitățile din teritoriu;
informarea comitetului de rist al directorilor și managementului cu privire la condițiile generale ale portofoliului de credite, pentru propunerea de măsuri.
Comitetul de risc al directorilor este compus din președintele băncii și directori din Comitetul de direcție. Aceștia au ca atribuții analiza și aprobarea propunerilor comitetului de risc al ofițerilor. [9]
Prezentarea activității care va fi informatizată
Dorim să informatizăm activitatea departamentului de creditare din cadrul sistemului bancar.
În funcție de mărimea unității urmărite, se pot observa diferențe în activitatea de creditare. Spre exemplu, într-o unitate mică, un singur ofițer din sucursala respectivă, poate acoperi majoritatea activităților: contactul cu clientul, negocierea, întocmirea documentației și chiar acordarea creditului. În cazul unităților mai mari, sunt definite departamente separate pentru consultant, negocierea cu clienții, întocmirea dosarului, analiza propriu-zisă a cererii de credit, validarea și acordarea creditului după caz. În unele cazuri există departamente separate pentru clienții business împărțite pe domeniile de activitate ale clienților, oferind astfel servicii personalizate.
Sistemul informatic din sectorul bancar este una din ramurile cele mai importante, reprezentând scheletul infrastructurii unei bănci. Rolurile sistemului informatic sunt:
menține rețeaua de calculatoare într-o stare funcțională, la parametrii optimi specificați în prealabil, pentru a fi folosită de către utilizatorul final într-o manieră cât mai eficientă;
posibilitatea de a utiliza diverse programe informatice;
stabilirea drepturilor oferite pentru fiecare utilizator în conformitate cu atribuțiunile acestuia;
asigură utilizarea într-un mod cât mai eficient a resurselor informatice. [13]
Având în vedere perioada de recesiune traversată de România, în ultimii ani și diverși factori interni, din ce în ce mai multe firme aleg să externalizeze diverse departamente eligibile. În acest scop au apărut agenți economici care doresc preluarea activității, activitate preluată în baza legislației în vigoare, pe baza anumitor condiții impuse de către beneficiar și beneficii solicitate, aceste aspect fiind specificate într-un contract semnat de comun acord.
Acest mod de activitate a fost adoptat și în domeniul bancar, primele departamente externa lizate fiind cel de vânzări și cel de recuperare creanțe. O dată cu externalizarea departamentelor au apărut și câteva probleme legate de calitatea serviciilor oferite, și în special de confidențialitatea datelor interne.
În această lucrare urmărim activitatea agenților economici care desfășoară activitatea de vânzări directe a serviciilor de creditare. În prezent, activitatea desfășurată de agenții de vânzări se limitează la prospectarea pieței, identificarea potențialilor client persoane fizice sau juridice și negociere, adică activități strict legate de vânzări. În momentul de față instituția bancară în cauză se confruntă cu o altă problemă, și anume, procesarea unui volum foarte mare de cereri de credit, venite sub formă de lead-uri din partea agenților.
La nivel de management s-a luat decizia de a extinde responsabilitățile agenților de vânzări, și anume de a oferi și consultanță la un nivel de bază. Se dorește astfel o filtrare a clienților pe baza unor criterii etice, crearea unui scoring și eliminarea clienților care nu sunt eligibili pentru un împrumut. Pentru a putea însă, pune în aplicare decizia luată, este strict necesară dezvoltarea unui sistem informatic, care poate susține această modificare.
Din partea nivelului business se solicită crearea unei aplicații software, sincronizată cu sistemele interne ale băncii care să răspundă eficient la aceste cerințe.
Din partea prestatorului de servicii, însă se solicită caracterul de portabilitate al sistemului, având în vedere că cea mai mare parte a programului agenților de vânzări se desfășoară pe teren.
Ca și soluție informatică oferită din partea mea ca dezvoltator, ar fi implementarea unei aplicații mobile ce poate fi folosită de către utilizatorul final pe un terminal mobil, smaragdine sau tabletă.
Avantajele implementării unui astfel de sistem, ar fi: flexibilitatea oferită agenților, calitatea serviciilor oferite clientului, rapiditatea și promptitudinea oferită de aplicație în comparație cu timpul de răspuns din partea departamentului de analiză, disponibilitatea la orice oră și în orice zi prin intermediul oricărui dispozitiv care îndeplinește condițiile tehnice.
Din punct de vedere business cele mai mari avantaje ar fi reducerea costurilor care implică analiza și utilizarea la un nivel de eficiență mai ridicat al resurselor umane.
Din punct de vedere tehnic se urmărește eficientizarea resurselor informatice, scăzând fluxul de date transmis de către sistemele externe ale prestatorului și implicit, și cantitatea de date care trebuie procesată.
CAPITOLUL 2: TEHNOLOGII INFORMATICE UTILIZATE
. Tehnologia MySQL
MySQL este cel mai popular sistem de gestiune al bazelor de date, în prezent, fiind un element principal al stivei LAMP (Linux, Apache, MySQL, PHP). MySQL a fost conceput de către MySQL AB și este distribuit sub licență publică. [16]
Atingând peste 100 de milioane de descărcări, MySQL este cea mai frecvent utilizată platforma de baze de date, deoarece prezintă o multitudine de caracteristici cum ar fi: viteză superioară, ușurință în utilizare și fiabilitate. Aceste atuuri sunt esențiale în procesul decizional de alegere al platformei de baze de date. Drept urmare corporațiile și marile companii de telecomunicații aleg să lucreze cu MySQL, având la dispoziție nenumărate beneficii, printre care se numără: administrarea aplicațiilor online precum și întreținerea acestora. [17]
MySQL ajută la eliminarea barierelor de timp prin faptul că oferă posibilitatea administrării unor sisteme critice de business, a site-urilor web cu capacități mari și a pachetelor software, în acest fel organizațiile și marile companii ajung să se dezvolte rapid. Astfel de companii sunt: Yahoo, Booking, Google, Youtube, Wikipedia. [17]
Platforma de baze de date MySQL se poate folosi în combinație cu o mare parte din limbajele de programare, însă frecvent este folosită cu PHP. Cu ajutorul limbajelor de programare JAVA, C, C++, PHP, etc., împreună cu diverselor scheme API, disponibile în acest moment, se pot realiza o mulțime de aplicații în MySQL. [16]
Printre metodele de administrare a bazelor de date MySQL gratuite se numără:
modul linie de comandă,
utilizarea unei interfețe grafice (MySQL Query Browser, MySQL Administrator)
utilizarea aplicației dezvoltate de PHP – PHPMyAdmin.
Majoritatea sistemelor de operare actuale permit rularea platformei de baze de date MySQL. [16]
Principalele avantaje oferite de MySQL sunt:
Viteză. MySQL este cea mai rapidă platformă de baze de date.
Ușurință în utilizare. În pofida faptului că MySQL este un sistem de gestiune al bazelor de date performant, este relativ simplu de utilizat, administrat și configurat în comparație cu celelalte sisteme.
Cost. Pentru majoritatea cazurilor în care este folosit intern, nu prezintă nici un cost.
Este suport pentru limbaje de interogare. De exemplu SQL, aplicațiile ODBC (Open Database Conectivity)
Prezintă o mulțime de caracteristici. Mai mulți clienți se pot conecta la server, iar aceștia au posibilitatea de a utiliza mai multe baze de date. Numeroasele interfețe permit introducerea de interogări și vizualizarea de rezultate: browsere Web, clienți X Windows System, clienți în linie de comandă, accesul la MySQL devenind astfel interactiv.
Serverele de baze de date MySQL se administrează cu ajutorul unei platforme independente GUI întitulată MYSQL (MySQL Control Center).
Limbajele de programare Pyton, PHP, C și Perl au la dispoziție o mulțime de interfețe de programare, oferind posibilitatea de obținere a aplicațiilor personalizate prin folosirea programelor client sau prin scrierea propriilor programe.
Securitate și conectivitate. MySQL prezintă opțiunea de controlare a accesului, astfel încât se poate restricționa accesul pentru anumite persoane. Partajarea datelor se poate face oricând, oriunde deoarece bazele de date pot fi accesate de oriunde din Internet, iar MySQL se poate folosit integral în rețele.
Portabilitate. Numeroase sistemele UNIX, cât și alte sistemele non-UNIX (OS/2, WINDOWS) permit rularea MySQL. MySQL rulează atât pe calculatoare de birou cât și pe servere cu performate ridicate, o mare parte din programarea MySQL realizându-se pe sisteme Linux ieftine.
Distribuția liberă. Deși MySQL este prezent în comunitatea Open Source, datorită termenilor licenței care nu prezintă reguli foarte stricte, nu este un proiect Open Source. Motivul ar fi acela că în acest caz ar fi necesară o licență cu anumite condiții. [18]
Tehnologia Java
Pentru realizarea interfeței grafice pentru baza de date am folosit tehnologia Java, dezvoltarea realizându-se pe platforma ECLIPSE.
Limbajul Java, conceput de către James Gosling, este un limbaj de programare orientat-obiect și foarte tipizat. A fost conceput în cadrul Sun Microsystems la începutul anilor ’90, lansându-se însă în 1995. Java a luat amploare, fiind dezvoltate pe baza sa majoritatea aplicațiilor software, inclusiv aplicațiile mobile și pentru dezvoltarea aplictiilor destinate intranet-ului. „În felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat.”
Caracteristicile principale ale Java:
simplitate – Prin eliminarea părților mai complicare cum ar fi supraîncărcarea operatorilor, moștenirea multiplă, șabloanele, java devine un limbaj de programare mai accesibil și ușor de învățat.
robustețe – Prin eliminarea pointerilor, introducerea administrării memoriei în mod automat și introducerea unei proceduri de „colectare a gunoiului” eliminând astfel fisurile de memorie, se exclud cele mai frecvente erori.
complet orientat pe obiecte – Este eliminat modelul procedural, bazându-se pe încapsulare, polimorfism, moștenire.
ușurință în ceea ce privește programarea în rețea
securitate – Comparând cu tehnologiile existente pe piață în prezent, Java este cel mai sigur limbaj de programare. Se face o verificare dinamică a codului în vederea identificării secvențelor periculoase și se impun anumite reguli stricte în cazul rulării programelor pe dispozitive aflate la distanță.
neutru din punct de vedere arhitectural
portabilitate – O aplicație dezvoltată în Java rulează, fără a-i aplica nicio modificare, pe cele mai folosite sisteme: Windows, UNIX sau Macintosh, caracteristică foarte importantă în cazul aplicațiilor web-based. Sloganul de bază este „Write once, run anywhere”.
compilat și interpretat
performanță ridicată a codului de octeți
dinamicitate
este modelat după C și C++ – Este posibilă modificarea din C/C++ la Java într-un mod facil
este case sensitive
permite îmbunătățirea aplicațiilor web-based prin adăugarea de animații și multimedia
Java Development Kit (JDK) este disponibil gratis [15]
Dezvoltarea în Java se poate face utilizând mai multe tehnologii, grupate în platforme de lucru. O platformă de lucru reprezintă un cumul de librării scrise în Java și de programe utilitare, folosite pentru a satisface nevoia unei anumite clase de utilizator și pentru a putea oferi soluții personalizate.
Limbajul Java este unul atât interpretat cât și compilat. Prin limbaj interpretat înțelegem traducerea de către un interpretor a liniilor în instrucțiuni mașină, rezultând de aici caracteristică de portabilitate a limbajului. Prin limbaj compilat înțelegem că este implementat un compilator ce convertește codul sursă al programului într-un cod numit cod mașină și poate fi executat direct de procesor rezultând de aici rapiditatea execuției. Java îmbină ambele concept, implementând un compilator ce convertește programul sursă în cod mașină și un interpretor care rulează codul de octeți. [15]
Există două tipuri de aplicații în Java:
Aplicațiile de sine stătătoare – Acestea rulează ca un program normal pe terminal, aplicații consolă sau aplicații cu ferestre. Aceste programe au aceleași capacitate ca orice program de pe sistem. Ca și în cazul altor limbaje este mai ușor a crea o aplicație consolă decât o aplicație cu ferestre.
Miniaplicațiile Java (applet) – Aceste aplicații rulează într-un browser web și sunt dezvoltate sub formă de aplicații cu ferestre. Sunt rulate într-o mașină virtuală Java (JVM) restricționată, numită “sandbox”, de la care fișierele de input/output și printarea sunt imposibile.
Tehnologia Android
Android este o platformă și un sistem de operare conceput pentru terminalele mobile, dezvoltată de către Google, fiind dezvoltat pe baza nucleului Linux. Dezvoltarea aplicațiilor Android este realizată în limbajul de programare Java, folosind bibliotecile Java dezvoltate de Google. Ca și alternativă, nesusținută oficial de Google, ar fi dezvoltarea aplicațiilor în limbajul C, compilate ulterior în cod mașină ARM și executate.
În anul 2005, gigantul Google a prelua o companie denumită „Android Inc”, a cărei fondatori au continuat să dezvolte proiectul în cadrul Google. Această tranzacție realizată de Google a ridicat multe suspiciuni, cunoscându-se despre foarte puține despre „Android Inc”.
În cadrul Google a fost ulterior un sistem de operare pentru terminalele mobile, bazându-se pe nucleul Linux. Sistemul de operare a fost prezentat în primă fază operatorilor de telefonie mobilă și producătorilor de telefoane, sistem prezentat ca fiind unul upgradabil și flexibil. Până în momentul lansării oficial a „Android” se făceau diverse speculații legate de viitoarele domenii de activitate urmărite de Google.
La data de 5.11.2007 a fost fondată o înțelegere între mai multe companii din domeniu telecomunicațiilor, hardware și software, denumită „Open Handset”, colaborare creată în vederea dezvoltării tehnologiilor pentru terminale mobile. Cu această ocazie a fost anunțată și lansarea platformei Android, platforma la care cea mai mare contribuție asupra codului a fost adusă de Google, sub licența Apache, fiind o licență open-source și gratuită.
Începând cu 21.10.2008, Google a făcut public codul sursă, transformând astfel Android într-un sistem Open Source.
Caracteristicile platformei Android sunt următoarele:
Configurații dispozitive – Platforma se poate adapta la configurații mari cum ar fi: biblioteci grafice 2D și 3D, VGA
Stocare de date – Poate fi utilizată o gamă largă de platforme de baze de date
Conectivitate – Suportă principalele tehnologii de conectivitate: Wi-Fi, Gsm/Edge, Bluetooth, Umts, etc.
Mesagerie instant – Sunt acceptate tehnologiile de mesagerie text și multimedia: SMS și MMS
Navigatorul de web – Broser-ul web este dezvoltat în cadrul platformei, însă sunt disponibile și variante al Google Chrome, Modzila, Opera, etc.
Suport media – Este acceptată o gamă largă de formate multimedia. Din cele principale amintim: JPEG, GÂF, PNG, MPEG-4, MP3, ETC.
Suport hardware adițional – Se pot utiliza componente hardware adiționale cum ar fi: GPS, Accelerometru, grafică accelerată 3D și touchscreen.
Mediu de dezvoltare – Platforma Eclipse include diverse unelte de depănare, performanță, profilare de memorie și un emulator de dispozitive.
Piața Android – A fost inclus și un catalog de aplicații, denumit „Play Store”, asemănător cu „App Store” de pe iPhone. Folosind Play Store se pot se pot instala diverse aplicații pe dispozitiv folosind o conexiune la internet. Politica inițială aplicată de către Google a fost să ofere toate aplicațiile gratuit, însă începând cu 19.02.2009 sunt disponibile și aplicații contra cost.
Multi-touch – Funcționalitatea de multi-touch este disponibilă, având un caracter nativ.
CAPITOLUL 3. ANALIZA ȘI PROIECTAREA SISTEMULUI INFORMATIC
3.1. Specificarea cerințelor sistemului informatic
Principalele entități pentru activitatea analizată sunt:
Angajații care utilizează aplicația (ANGAJAȚI);
Clienții care solicită un credit (CLIENȚI);
Date despre credit (CREDITE);
Istoricul creditelor (ISTORIC_CREDITE);
Calcularea scoring-ului (SCORING);
Acțiunile întreprinse de angajați (LOGURI);
Identificarea atributelor cheie:
Pentru entitatea ANGAJAȚI – id_angajat
Pentru entitatea CLIENȚI – id_client;
Pentru entitatea CREDITE – id_credit;
Pentru entitatea ISTORIC_CREDITE – id_istoric;
Pentru entitatea SCORING – id_scoring;
Pentru entitatea LOGURI – id_log;
Identificarea atributelor aferente entităților:
Tabelul 3.1. Atributele corespunzătoare entităților
Identificarea procedurilor necesare
În prima parte a aplicației am realizat o formă de autentificare, cu ușer name și parolă, pentru utilizatorul aplicației. Pentru a alege opțiunile dorite, am realizat un meniu principal ce conține mai multe butoane pentru căutarea unui client, informații despre tipurile de credit existente, afișarea istoricului unui client identificat prin cnp, calculul -ului, introducerea unui client, afișarea clienților adăugați de către utilizatorul logat în aplicație. În această aplicație afișăm informațiile necesare și prin intermediul unor butoane se pot realiza operații de căutare, ștergere, adăugare și modificare a datelor din baza de date.
Pentru realizarea conexiunii bazei de date cu aplicația, am folosit o serie de fișiere php pentru interacțiunea cu baza de date MySQL. Prin intermediul fișierului putem fie să listăm înregistrări din baza de date, ca obiecte JSON, fie să modificăm, să inserarăm sau să ștergem înregistrările din tabele. Preluarea datelor din baza de date se realizează pentru fiecare table în parte.
Pentru conectarea la server am folosit următorul script php pentru fiecare tabelă:
$con = mysql_connect("mysql16.000webhost.com","a1004965_iuli","parola");
Pentru inchiderea conexiunii am folosit următoarea linie:
mysql_close($con);
După realizarea conexiunii cu serverul, pentru fiecare tabelă în parte am folosit următorul script:
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("a1004965_iuli", $con);
$result = mysql_query("SELECT * FROM tabela");
while($row = mysql_fetch_assoc($result))
{
$output[]=$row;
}
print(json_encode($output));
Pentru introducerea unui client am folosit următorul script php:
<?php
if(isset($_REQUEST['user']))
{
$con = mysql_connect("mysql16.000webhost.com","a1004965_iuli","plmplmplm00");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("a1004965_iuli", $con);
$name = $_REQUEST['user'];
$result = mysql_query("SELECT id_angajat FROM angajati WHERE nume_utilizator = '$user' ") or die('Errant query:');
$row = mysql_fetch_assoc($result);
$id_ang = $row[0];
$cnp = $_GET['cnp'];
$nume = $_GET['nume'];
$prenume = $_GET['prenume'];
$telefon = $_GET['telefon'];
$adresa = $_GET['adresa'];
$sex = $_GET['sex'];
$varsta = $_GET['varsta'];
$id_client = 0;
$result = mysql_query("SELECT COUNT(id_client) FROM clienti") or die('Errant query:');
$row = mysql_fetch_assoc($result);
$nr = $row[0];
if($nr > 0)
{
$result = mysql_query("SELECT MAX(id_client) FROM clienti") or die('Errant query:');
$row = mysql_fetch_assoc($result);
$id_client = $row[0] + 1;
}
$insert_querry = "INSERT INTO `clienti`(`id_client`, `id_angajat`, `cnp`, `nume`, `prenume`, `telefon`, `adresa`, `sex`, `varsta`) VALUES('$id_client', '$id_ang', '$cnp', '$nume', '$prenume', '$telefon', '$adresa', '$sex', '$varsta')";
mysql_query($con, $insert_querry);
$id_log = 0;
$result = mysql_query("SELECT COUNT(`id_log`) FROM `loguri`") or die('Errant query:');
$row = mysql_fetch_assoc($result);
$nr = $row[0];
if($nr > 0)
{
$result = mysql_query("SELECT MAX(id_log) FROM loguri") or die('Errant query:');
$row = mysql_fetch_assoc($result);
$id_log = $row[0] + 1;
}
$insert_querry = "INSERT INTO loguri(id_log, id_client, data_log, tip_actiune) VALUES('$id_log', '$id_client', now(), 'adaugare client nou')";
mysql_query($con, $insert_querry);
print(json_encode($output));
mysql_close($con);
}
else
{
$output = "not found";
print(json_encode($output));
}
?>
Aplicația realizată permite căutarea unui client după CNP, în tabela CLIENȚI, căutare ce poate fi urmată fie de adăugarea clientului, în cazul în care acesta nu este găsit în baza de date, fie de verificarea istoricului de plăți. Istoricul plăților pentru un client are rol decisive în acordarea unui credit. În cazul în care clientul are sume restante sau are încă un credit active, nu mai poate primi alt credit.
Verificarea istoricului de plăți al unui client se face, de asemenea, prin căutarea după CNP-ul clientului. Căutarea se realizează că și în celelalte cazuri cu ajutorul fișierelor php.
Pentru a calcula scoring-ul, luăm în calcul următoarele variabile: venitul net lunar, nivelul de educație, numărul de membrii ai familiei, vechimea în câmpul muncii și starea civilă. În funcție de aceste variabile aplicația obține un scoring aplicația realizând recomandarea unuia sau a mai multor credite.
Proiectarea noului sistem
Proiectarea schemelor bazei de date
Tabelul nr.3.3.1. Tipurile de date din tabela ANGAJATI
Tabelul nr.3.3.2 Tipurile de date din tabela CLIENTI
Tabelul nr.3.3.3. Tipurile de date din tabela LOGURI
Tabelul nr.3.3.4. Tipurile de date din tabela ISTORIC_CREDITE
Tabelul nr.3.3.5. Tipurile de date din tabela CREDITE
Tabelul nr.3.3.6. Tipurile de date din tabela SCORING
În continuare voi prezenta schema bazei de date corespunzătoare aplicației informatice privind analiza creditelor.
Fig 3.3.1 Schema bazei de date
Pentru fiecare tabelă în parte am definit câte o cheie primară astfel: pentru tabela ANGAJAȚI cheia primară este id_angajat, pentru tabela CLIENȚI cheia primară este id_client, pentru ISTORIC_CREDITE cheia primară este id_istoric, pentru CREDITE avem id_credit, pentru SCORING cheie primara este id_scoring, iar pentru LOGURI avem id_log.
Legatura între tabele se realizează prin intermediul unei chei externe aparținând unei tabele, care se leagă de cheia primară a altei tabele.
Tabela CLIENȚI are definită cheia externă id_angajat prin care se face legătura între tabelele CLIENȚI și ANGAJAȚI.
Tabela ISTORIC_CREDITE are definite cheile externe id_credit și id_client prin care se face legătura între tabelele ISTORIC_CREDITE, CLIENȚI și CREDITE.
Tabela SCORING are definită cheia externă id_client prin care se face legătura între tabelele CLIENȚI și SCORING.
Tabela LOGURI are definită cheia externa id_angajat prin care se face legătura între tabelele CLIENȚI și LOGURI.
Proiectarea prelucrărilor
Această aplicație are rolul de a analiza datele în vederea calculării scoring-ului pentru client și pentru obținerea unui credit.
Pentru a obține un rezultat trebuie completate toate câmpurile, începând cu cele din tabela CLIENT, care conține următoarele atribute: “id_client”, “vârstă” pentru care se introduc valori numerice, “nume”, “prenume”, “adresă”, “nr_telefon”, “cnp”, “sex” pentru care se introduce un șir de caractere.
Căutarea unui client se face pe baza CNP-ului, aplicația returnând datele clientului. Odată ce a fost găsit clientul avem acces la istoricul clientului. Istoricul clientului conține numărul de credite precedente, data început a ultimului împrumut, existența restanțelor și date referitoare la ultimul credit obținut: durata maximă a ultimului credit, durata minimă, suma obținută, rata lunară, tipul creditului și monedă.
Datele pentru calcularea scoring-ului se introduc, după verificarea istoricului creditelor, astfel: dacă potențialul creditor nu are sume restante sau are un împrumut active se introduc datele pentru calcularea scoring-ului. Pentru introducerea venitului lunar se introduc valori numerice, pentru nivel educație am setat trei RadioButtons: gimnaziu, liceu și facultate, putând fi selectat doar un singur nivel de educație, pentru numărul de membrii ai familiei și vechimea în câmpul muncii se introduc valori întregi, iar pentru stare civilă am setat, de asemenea două RadioButtons cu opțiunile căsătorit și necăsătorit.
După introducerea corectă a datelor aferente scoring-ului aplicația face o recomandare a tipurilor de credite ce pot fi accesate de către client.
În pagina informații credite regăsim toate creditele existente în baza de date cu toate datele caracteristice: durata maximă, durata minimă, suma maximă care poate fi accesată, rata lunară, monedă în care se acordă creditul și tipul clientului. Navigarea prin credite se realizează cu ajutorul a două butoare: Anteriorul tip de credit și Următorul tip de credit.
Pentru a efectua o analiză corectă a creditului dorit, trebuie completate corect toate datele și parcurși toți pașii prezentați anterior.
CAPITOLUL 4. REALIZAREA APLICAȚIEI INFORMATICE
Implementarea aplicației
Aplicația informatică pentru analiza creditelor am realizat-o cu ajutorul programului Eclipse, disponibil pe site-ul: http://developer.android.com/sdk/index.html
Figura 4.1.1 Pagina download Eclipse
Baza de date a fost implementată prin intermediul platformei MySQL, disponibilă pe site-ul: http://dev.mysql.com/downloads/workbench/
Figura 4.1.2. Pagina download MySQL
Primul pas relizat în crearea aplicației a fost crearea bazei de date, implicit crearea tebelelor.
Figura 4.1.3 Creare Tabele
Figura 4.1.4 Creare Tabele
Au fost create astfel următoarele tabele:
Figura 4.1.5 ListăTabele
Crearea bazei de date a fost urmată de crearea aplicației mobile pe platforma Eclipse.
Figura 4.1.6 Creare Aplicatie Eclipse
Prezentarea aplicației
Primul formular creat în aplicație, este cel al procedurii de autentificare prin ușer și parolă. Fiecărui utilizator îi este atribuit câte un ușer și o parolă. În situația de față, în tabela angajați avem și câmpurile ușer_name și parolă. Odată introduce de la tastatură se face verificarea în baza de date după ușer și parolă.
Figura 4.2.1. Aplicația
În cazul în care datele sunt introduce greșit este afișat un mesaj corespunzător:
”Numele sau parola au fost completate greșit.”
După realizarea autentificării, am creat un formular pentru meniul aplicației, format din diverse butoane care fac posibilă alegerea opțiunilor pentru introducerea datelor în fiecare secțiune ce creează o legătură cu baza de date, asupra căreia se realizează multiple operații.
Meniul este definit ca o activitate principală, din care putem accesa toate celelalte activități, după cum apare în imaginea de mai jos. Am atașat la Anexă codul folosit pentru implementarea meniului aplicației
Figura 4.2.2 Meniu Principal
Din acest meniu putem face căutarea unui client după cnp și putem accesa celelalte funcționalități ale aplicației: informații credit, afișare istoric, calcul scoring, adăugare client și afișarea clienților adăugați de către angajatul logat.
Căutarea se face și pentru client, ca și în cazul user-ului și al parolei în baza de date în tabela clienți după CNP-ul introdus. În cazul în care nu este găsit niciun client cu cnp-ul introdus, este afișat un mesaj corespunzător: Nu există niciun client cu acest cnp.
Figura 4.2.3 Căutare Client
În pagina Informații credit sunt afișate din baza de date toate tipurile de credite. Navigarea de la un tip de credit la altul se realizează cu ajutorul a două butoane: Anteriorul tip de credit și Următorul tip de credit. Este realizată afișarea tuturor câmpurilor din tabela credite.
Figura 4.2.4 Informații Credite Figura 4.2.5 Istoric Credite
Figura 4.2.5 Istoric Credite
Figura 4.2.4 Informații Credite
În cazul în care un client a fost găsit în meniul principal, utilizatorul are posibilitatea de a verifica istoricul de credite al clientului prin intermediul butonului Afișare istoric. În pagina Istoric Credit sunt afișate informațiile preluate din două tabele: clienți și credite. Interogarea s-a realizat concomitent, prin intermediul unei joncțiuni. În cazul în care clientul nu a mai avut niciun credit este afișat un mesaj corespunzător: Nu există istoric.
Datele completate pentru efectuarea unui calcul al scoring-ului sunt considerate corecte dacă se introduc valori numerice în toate câmpurile din acest formular, făcând excepție cele pentru care se alege opțiunea. În caz contrar, se va afișa un mesaj de atenționare pentru a fi completate corect: Ați introdus date invalide!
Figura 4.2.6 Calcul scoring Figura 4.2.7 Rezultat calcul scoring
Adăugarea unui client în baza de date se face completând toate câmpurile, după care se apasă pe butonul “Adaugă client nou”. Validarea se face pentru fiecare câmp în parte. Pentru câmpul cnp se face verificarea dacă este null, dacă este format din 13 caractere și toate caracterele sunt numerice. Pentru numărul de telefon se face verificarea dacă este alcătuit din 10 caractere numerice. Validarea pentru câmpul vârstă se face pentru a verifica dacă persoana adăugată este majoră sau dacă este introdusă o dată relevanta, mai mică de 120. Pentru celelalte câmpuri se face validarea dacă sunt nule. Pentru a vizualiza efectul operațiilor asupra bazei de date se apasă pe butonul “Căutare client” din pagina principal după ce a fost introdus cnp-ul.
Figura 4.2.8 Pagina Adăugare Client Figura 4.2.9 Adăugare Client
În fereastra Adăugare Clienți Adăugați regăsim lista clienților adăugati de către angajatul logat.
Figura 4.2.10 Pagina Afișare Clienți
CONCLUZII
Aplicația realizată în această lucrare aparține este special concepută pentru departamentul de vânzări directe, departament externalizat în cazul celor mai multe bănci din România. În această aplicație am încercat să realizez obiectivele propuse. Dintre acestea, amintesc obiectivul principal, analiza creditelor, dar și obiectivele secundare care reflectă în realizarea scoring-ului și de reducere a fluxului de date trimis către departamentul de analiză. Aplicația permite de asemenea administrarea și centralizarea datelor în baza de date prin intermediul unui sistem securizat prin autentificare.
Datele se introduc de la tastatură, iar în cazul completării incorecte, ele se pot modifica. De asemenea, datele pot fi căutate în baza de date, în funcție de anumite câmpuri.
Utilizarea aplicației nu creează dificultăți pentru persoana care o administrează, deoarece am evitat folosirea unui meniu complex cu multiple opțiuni care pot genera o eroare sau care duc la solicitarea intensă a sistemului.
Din punctul meu de vedere aplicația este funcțională și practică deoarece include cele mai utile opțiuni pentru a putea fi utilizată, dar se pot realiza și îmbunătățiri asupra acesteia, mai ales în sistemul de calcul al scoring-ului, pentru care se schimbă destul de repede proporțiile din modalitatea de calcul.
Consider că aplicația aduce inovație în sistemul de creditare, calcularea rapidă a scoring-ului,
precum și flexibilitatea utilizării acesteia fiind folosită pe un dispozitiv mobil
BIBLIOGRAFIE
[1] Sistemul bancar, consultat în data de 23 iunie 2014, pe pagina http://ro.wikipedia.org/wiki/Sistemul_bancar
[2] Prof.univ.dr. Carmen HARTULARI; Prof.univ.dr. Mihai PAUN; Asist.univ.drd. Ramona-Mihaela PAUN, „Analiza, diagnoza si modelarea sistemelor financiar bancare” Capitolul 1, Editura ASE, An aparitie 2005
[3] Conf.univ.dr. Ionela COSTICA; Lect.univ.dr. Sorin Adrian LAZARESCU, „Politici si tehnici bancare”, consultat în data de 26 iunie 2014, pe pagina http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=359&idb=6
[4] Costin C. Kirițescu, „Sistemul bănesc al leului și precursorii lui”, Editura Enciclopedică, An aparitie 1997.
[5] Costin C. Kirițescu, „Sistemul bănesc al leului și precursorii lui”, Editura Enciclopedică, An aparitie 1997.
[6] Prof.univ.dr. Carmen HARTULARI; Prof.univ.dr. Mihai PAUN; Asist.univ.drd. Ramona-Mihaela PAUN, „Analiza, diagnoza si modelarea sistemelor financiar bancare ” Capitolul 1, Editura ASE, An aparitie 2005
[7] Carmen HARTULARI, Mihai PAUN, Ramona-Mihaela PAUN – Analiza, diagnoza si modelarea sistemelor financiar bancare, Capitolul 1, Editura ASE, An aparitie 2005
[8] SISTEMUL BANCAR, consultat în data de 28 iunie 2014, pe pagina http://www.cerope.ro/pub/study38ro.htm
[9] ORGANIZAREA UNEI BĂNCI, consultat în data de 28 iunie 2014, pe pagina http://academiacomerciala.ro/cursuri/Management//An%20III/Sem.%20II%20-%20Gestiune%20bancara//Capitolul%201.pdf
[10] Sistemul Bancar al României, Capitolul 2, consultat în data 28 iunie 2014, pe pagina http://ligiagolosoiu.ro/content/cap2-Sistemul_Bancar_al_Romaniei.pdf
[11] Activitati permise bancilor, consultat in data de 28 iunie 2014, pe pagina http://www.brcv.ro/capitolul-ii-activitati-permise-bancilor-l-147.htm
[12] ACTIVITATEA DE CREDITARE A BĂNCILOR, consultat in data de 28 iunie 2014, pe pagina http://www.revista-informare.ro/showart.php?id=214&rev=7
[13] Carmen HARTULARI, Mihai PAUN, Ramona-Mihaela PAUN – Analiza, diagnoza si modelarea sistemelor financiar bancare, Capitolul 1, Editura ASE, An aparitie 2005
[14] Java(Limbaj de programare), consultat în data 28 iunie 2014, pe pagina http://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
[15] Curs practic de Java, consultat in data de 29 iunie 2014, pe pagina https://java.net/downloads/jdf/Cristian_Frasinaru-Curs_practic_de_Java.pdf
[16] MySQL, consultat in data de 06 iulie 2014, pe pagina http://ro.wikipedia.org/wiki/MySQL
[17] Despre MySQL – Cea mai populara baza de date open source din lume, consultat in data de 06 iulie 2014, pe pagina http://www.buysoftware.ro/mysql.asp
[18] Introducere în MySQL și SQL consultat in data de 06 iulie 2014, pe pagina http://www.robotics.ucv.ro/flexform/craiova_cursuri/C2_1/MySQL/L1.pdf·
ANEXĂ
Codul sursa pentru meniul aplicatiei
public class PaginaPrincipala extends ActionBarActivity implements View.OnClickListener {
private Button cautaClient;
private Button infoCredit;
private Button istCredit;
private Button calcScoring;
private Button adaugaClient;
private int idClientCurent;
//private String loggedUser;
private TextView errorLabel;
private EditText cnpInput;
private Client clientGasit;
private Button afisareClienti;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pagina_principala);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
setupButtons();
this.idClientCurent = -1;
this.clientGasit = null;
//this.user = getIntent().getExtras().getString("user");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.pagina_principala, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_pagina_principala, container, false);
return rootView;
}
}
private void setupButtons()
{
this.cautaClient = (Button)findViewById(R.id.cautareClient);
this.cautaClient.setOnClickListener(this);
this.calcScoring = (Button)findViewById(R.id.calculScoring);
this.calcScoring.setOnClickListener(this);
this.infoCredit = (Button)findViewById(R.id.InformatiiCredit);
this.infoCredit.setOnClickListener(this);
this.istCredit = (Button)findViewById(R.id.afisareIstoric);
this.istCredit.setOnClickListener(this);
this.adaugaClient = (Button)findViewById(R.id.adaugareClient);
this.adaugaClient.setOnClickListener(this);
this.errorLabel = (TextView)findViewById(R.id.errMsgLab);
this.cnpInput = (EditText)findViewById(R.id.cnp);
this.afisareClienti = (Button)findViewById(R.id.afisareClientiAdaugatiDeUserulCurent);
this.afisareClienti.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.cautareClient: cautareClientClick(); break;
case R.id.calculScoring: calculScoring(); break;
case R.id.afisareIstoric: afisareIstoric(); break;
case R.id.adaugareClient: adaugareClient(); break;
case R.id.InformatiiCredit: informatiiCredite(); break;
case R.id.afisareClientiAdaugatiDeUserulCurent: afisareClientiAdaugati(); break;
}
}
private void afisareClientiAdaugati()
{
Intent i = new Intent(PaginaPrincipala.this, AfisareClientiAdaugati.class);
startActivity(i);
}
private void informatiiCredite()
{
Intent i = new Intent(PaginaPrincipala.this, InformatiiCredit.class);
startActivity(i);
}
private void adaugareClient()
{
Intent i = new Intent(PaginaPrincipala.this, AdaugareClient.class);
//i.putExtra("user", this.user);
startActivity(i);
}
private void cautareClientClick()
{
String errorMessage = null;
//String infoClient = null;
if(this.cnpInput.getText().toString() == null)
{
errorMessage = "Completati cnp-ul";
}
if(errorMessage != null)
{
this.errorLabel.setText(errorMessage);
}
else
{
//display infoClient
Client[] clienti = getData();
Client c = null;
for(int i = 0; i < clienti.length; i++)
{
if(clienti[i].getCnp().equals(this.cnpInput.getText().toString()))
{
c = clienti[i];
}
}
if(c == null)
{
this.errorLabel.setText("Nu exista nici un client cu acest cnp");
}
else
{
String cText = c.toString();
this.errorLabel.setText(cText);
this.clientGasit = c;
}
}
}
private void calculScoring()
{
if(this.clientGasit != null)
{
Intent intent = new Intent(PaginaPrincipala.this, CalculScoring.class);
String id = (new Integer(this.idClientCurent)).toString();
intent.putExtra("ClientId", id);
startActivity(intent);
}
else
{
//display message: no user selected
this.errorLabel.setText("Nu a aveti nici un client selectat");
}
}
private void afisareIstoric()
{
if(this.clientGasit != null)
{
Intent intent = new Intent(PaginaPrincipala.this, IstoricCredit.class);
InfoAngajatLogat.clientGasit = this.clientGasit;
startActivity(intent);
}
else
{
//display message: no user selected
this.errorLabel.setText("Nu a aveti nici un client selectat");
}
}
public Client[] getData(){
String result = "";
Client[] clienti = null;
InputStream isr = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://licentaiuli.herobo.com/clienti.php");
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch(Exception e){
Log.e("log_tag","Error in http conection"+e.toString());
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result=sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
String s = "";
//parse json data
try {
JSONArray jArray = new JSONArray(result);
clienti = new Client[jArray.length()];
for(int i=0; i<jArray.length();i++){
JSONObject json = jArray.getJSONObject(i);
clienti[i] = new Client();
clienti[i].setIdAngajat(json.getInt("id_angajat"));
clienti[i].setIdClient(json.getInt("id_client"));
clienti[i].setNume(json.getString("nume"));
clienti[i].setPrenume(json.getString("prenume"));
clienti[i].setCnp(json.getString("cnp"));
clienti[i].setTelefon(json.getString("telefon"));
clienti[i].setAdresa(json.getString("adresa"));
clienti[i].setSex(json.getString("sex"));
clienti[i].setVarsta(json.getInt("varsta"));
}
}
catch (Exception e) {
Log.e("log_tag", "Error Parsing Data ");
if(result == null)
Log.e("log_tag", "result == null");
}
return clienti;
}
}
.
BIBLIOGRAFIE
[1] Sistemul bancar, consultat în data de 23 iunie 2014, pe pagina http://ro.wikipedia.org/wiki/Sistemul_bancar
[2] Prof.univ.dr. Carmen HARTULARI; Prof.univ.dr. Mihai PAUN; Asist.univ.drd. Ramona-Mihaela PAUN, „Analiza, diagnoza si modelarea sistemelor financiar bancare” Capitolul 1, Editura ASE, An aparitie 2005
[3] Conf.univ.dr. Ionela COSTICA; Lect.univ.dr. Sorin Adrian LAZARESCU, „Politici si tehnici bancare”, consultat în data de 26 iunie 2014, pe pagina http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=359&idb=6
[4] Costin C. Kirițescu, „Sistemul bănesc al leului și precursorii lui”, Editura Enciclopedică, An aparitie 1997.
[5] Costin C. Kirițescu, „Sistemul bănesc al leului și precursorii lui”, Editura Enciclopedică, An aparitie 1997.
[6] Prof.univ.dr. Carmen HARTULARI; Prof.univ.dr. Mihai PAUN; Asist.univ.drd. Ramona-Mihaela PAUN, „Analiza, diagnoza si modelarea sistemelor financiar bancare ” Capitolul 1, Editura ASE, An aparitie 2005
[7] Carmen HARTULARI, Mihai PAUN, Ramona-Mihaela PAUN – Analiza, diagnoza si modelarea sistemelor financiar bancare, Capitolul 1, Editura ASE, An aparitie 2005
[8] SISTEMUL BANCAR, consultat în data de 28 iunie 2014, pe pagina http://www.cerope.ro/pub/study38ro.htm
[9] ORGANIZAREA UNEI BĂNCI, consultat în data de 28 iunie 2014, pe pagina http://academiacomerciala.ro/cursuri/Management//An%20III/Sem.%20II%20-%20Gestiune%20bancara//Capitolul%201.pdf
[10] Sistemul Bancar al României, Capitolul 2, consultat în data 28 iunie 2014, pe pagina http://ligiagolosoiu.ro/content/cap2-Sistemul_Bancar_al_Romaniei.pdf
[11] Activitati permise bancilor, consultat in data de 28 iunie 2014, pe pagina http://www.brcv.ro/capitolul-ii-activitati-permise-bancilor-l-147.htm
[12] ACTIVITATEA DE CREDITARE A BĂNCILOR, consultat in data de 28 iunie 2014, pe pagina http://www.revista-informare.ro/showart.php?id=214&rev=7
[13] Carmen HARTULARI, Mihai PAUN, Ramona-Mihaela PAUN – Analiza, diagnoza si modelarea sistemelor financiar bancare, Capitolul 1, Editura ASE, An aparitie 2005
[14] Java(Limbaj de programare), consultat în data 28 iunie 2014, pe pagina http://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
[15] Curs practic de Java, consultat in data de 29 iunie 2014, pe pagina https://java.net/downloads/jdf/Cristian_Frasinaru-Curs_practic_de_Java.pdf
[16] MySQL, consultat in data de 06 iulie 2014, pe pagina http://ro.wikipedia.org/wiki/MySQL
[17] Despre MySQL – Cea mai populara baza de date open source din lume, consultat in data de 06 iulie 2014, pe pagina http://www.buysoftware.ro/mysql.asp
[18] Introducere în MySQL și SQL consultat in data de 06 iulie 2014, pe pagina http://www.robotics.ucv.ro/flexform/craiova_cursuri/C2_1/MySQL/L1.pdf·
ANEXĂ
Codul sursa pentru meniul aplicatiei
public class PaginaPrincipala extends ActionBarActivity implements View.OnClickListener {
private Button cautaClient;
private Button infoCredit;
private Button istCredit;
private Button calcScoring;
private Button adaugaClient;
private int idClientCurent;
//private String loggedUser;
private TextView errorLabel;
private EditText cnpInput;
private Client clientGasit;
private Button afisareClienti;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pagina_principala);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
setupButtons();
this.idClientCurent = -1;
this.clientGasit = null;
//this.user = getIntent().getExtras().getString("user");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.pagina_principala, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_pagina_principala, container, false);
return rootView;
}
}
private void setupButtons()
{
this.cautaClient = (Button)findViewById(R.id.cautareClient);
this.cautaClient.setOnClickListener(this);
this.calcScoring = (Button)findViewById(R.id.calculScoring);
this.calcScoring.setOnClickListener(this);
this.infoCredit = (Button)findViewById(R.id.InformatiiCredit);
this.infoCredit.setOnClickListener(this);
this.istCredit = (Button)findViewById(R.id.afisareIstoric);
this.istCredit.setOnClickListener(this);
this.adaugaClient = (Button)findViewById(R.id.adaugareClient);
this.adaugaClient.setOnClickListener(this);
this.errorLabel = (TextView)findViewById(R.id.errMsgLab);
this.cnpInput = (EditText)findViewById(R.id.cnp);
this.afisareClienti = (Button)findViewById(R.id.afisareClientiAdaugatiDeUserulCurent);
this.afisareClienti.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.cautareClient: cautareClientClick(); break;
case R.id.calculScoring: calculScoring(); break;
case R.id.afisareIstoric: afisareIstoric(); break;
case R.id.adaugareClient: adaugareClient(); break;
case R.id.InformatiiCredit: informatiiCredite(); break;
case R.id.afisareClientiAdaugatiDeUserulCurent: afisareClientiAdaugati(); break;
}
}
private void afisareClientiAdaugati()
{
Intent i = new Intent(PaginaPrincipala.this, AfisareClientiAdaugati.class);
startActivity(i);
}
private void informatiiCredite()
{
Intent i = new Intent(PaginaPrincipala.this, InformatiiCredit.class);
startActivity(i);
}
private void adaugareClient()
{
Intent i = new Intent(PaginaPrincipala.this, AdaugareClient.class);
//i.putExtra("user", this.user);
startActivity(i);
}
private void cautareClientClick()
{
String errorMessage = null;
//String infoClient = null;
if(this.cnpInput.getText().toString() == null)
{
errorMessage = "Completati cnp-ul";
}
if(errorMessage != null)
{
this.errorLabel.setText(errorMessage);
}
else
{
//display infoClient
Client[] clienti = getData();
Client c = null;
for(int i = 0; i < clienti.length; i++)
{
if(clienti[i].getCnp().equals(this.cnpInput.getText().toString()))
{
c = clienti[i];
}
}
if(c == null)
{
this.errorLabel.setText("Nu exista nici un client cu acest cnp");
}
else
{
String cText = c.toString();
this.errorLabel.setText(cText);
this.clientGasit = c;
}
}
}
private void calculScoring()
{
if(this.clientGasit != null)
{
Intent intent = new Intent(PaginaPrincipala.this, CalculScoring.class);
String id = (new Integer(this.idClientCurent)).toString();
intent.putExtra("ClientId", id);
startActivity(intent);
}
else
{
//display message: no user selected
this.errorLabel.setText("Nu a aveti nici un client selectat");
}
}
private void afisareIstoric()
{
if(this.clientGasit != null)
{
Intent intent = new Intent(PaginaPrincipala.this, IstoricCredit.class);
InfoAngajatLogat.clientGasit = this.clientGasit;
startActivity(intent);
}
else
{
//display message: no user selected
this.errorLabel.setText("Nu a aveti nici un client selectat");
}
}
public Client[] getData(){
String result = "";
Client[] clienti = null;
InputStream isr = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://licentaiuli.herobo.com/clienti.php");
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch(Exception e){
Log.e("log_tag","Error in http conection"+e.toString());
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result=sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
String s = "";
//parse json data
try {
JSONArray jArray = new JSONArray(result);
clienti = new Client[jArray.length()];
for(int i=0; i<jArray.length();i++){
JSONObject json = jArray.getJSONObject(i);
clienti[i] = new Client();
clienti[i].setIdAngajat(json.getInt("id_angajat"));
clienti[i].setIdClient(json.getInt("id_client"));
clienti[i].setNume(json.getString("nume"));
clienti[i].setPrenume(json.getString("prenume"));
clienti[i].setCnp(json.getString("cnp"));
clienti[i].setTelefon(json.getString("telefon"));
clienti[i].setAdresa(json.getString("adresa"));
clienti[i].setSex(json.getString("sex"));
clienti[i].setVarsta(json.getInt("varsta"));
}
}
catch (Exception e) {
Log.e("log_tag", "Error Parsing Data ");
if(result == null)
Log.e("log_tag", "result == null");
}
return clienti;
}
}
.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Dezvoltarea Aplicatiilor Mobile (ID: 162336)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
