Realizarea Unui Sistem Informatic Pentru O Agentie Imobiliara

CUPRINS

INTRODUCERE

Mulți oameni au efectuat măcar o dată în viață o tranzacție imobiliară, fie că a fost vorba de închirierea sau cumpărarea unui spațiu pentru locuit sau de vânzarea unuia, cu scopul obținerii unui venit.

Pentru a efectua o astfel de tranzacție, de cele mai multe ori oamenii apelează la un anunț dintr-un ziar sau de pe un site de specialitate, care, de cele mai multe ori, conduce către o agenție imobiliară. Ajungând în acest punct, persoana se așteaptă să găsească un personal calificat, care poate oferi încredere, sprijin și condiții optime la încheierea tranzacției.

În vestul Europei, dar și în Statele Unite ale Americii, legislația privind modul de funcționare al agențiilor imobiliare este foarte bine reglementată, existând asociații profesionale care verifică corectitudinea agențiilor și buna lor funcționare. Această “bună funcționare” este asigurată prin intermediul personalului calificat, iar orice abatere duce la excluderea lui din rândul agenților imobiliari.

Din nefericire, în România, această meserie a apărut abia după anul 1989, când întreprinzătorii au adoptat din țările vestice modul de funcționare al unei agenții imobiliare, pe teritoriul românesc deschizându-și filiale firme internaționale, cu un bogat portofoliu în spate, precum Colliers International și JonesLangLassale.

Următorul deceniu ce a precedat Revoluția din 1989 a fost unul de tranziție, iar agențiile imobiliare românești nu au avut reguli de funcționare foarte bine conturate și nici personal calificat, ca atare puține firme au reușit să aibă succes și să își câștige respectul în societate.

Agențiile imobiliare ar trebui să ofere clienților toată gama de servicii imobiliare, începând de la prezentarea terenurilor, caselor sau a apartamentelor, continuând cu oferirea consultanței, efectuarea studiilor de piață, până la evaluare și asistență la încheierea tranzacției.

La agenții apelează toate firmele multinaționale care vor să își deschidă filiale în România, precum și alți oameni de afaceri care vor să își deschidă un punct de lucru și nu cunosc foarte bine mediul imobiliar. Prin intermediul unei agenții imobiliare și-au cumpărat sau au închiriat sedii de birouri companii precum Coca-Cola, Deutche Bank, Ericsson Telecommunciations, World-Bank,mUnilever Romania, Carrefour etc.

Românii sunt însă mai reținuți atunci când vine vorba de a colabora cu o astfel de agenție, având în vedere slaba pregătire profesională a agenților sau neseriozitatea de care au dat dovadă aceștia în cadrul unei colaborări anterioare.

În cadrul prezentei aplicații mi-am propus să creez un sistem informatic, necesar oricărei agenții imobiliare ce își dorește să gestioneze portofoliul de clienți, oferte și cereri. De asemenea, această aplicație este în egală măsură utilă și agenților imobiliari, pentru a vedea tranzacțiile în curs de desfășurare, pentru a oferi consultanță privind valoare tranzacțiilor efectuate și cerințele clienților. În acest mod agenții reușesc să ofere o cât mai bună consultanță clienților actuali sau potențiali, dar totodată pot face previziuni asupra pieței imobiliare.

CAPITOLUL 1.
PIAȚA IMOBILIARĂ

Piața imobiliară – noțiuni generale

De-a lungul vieții, tot mai multe persoane efectuează tranzacții imobiliare. Acestea sunt, poate cele mai importante tranzacții financiare și au un grad ridicat de complexitate ridicat, având în vedere aspectul legal, fiscal și financiar. Aceste tipuri de tranzacții se desfășoară în toate țările cu sisteme economice bazate pe economia de piață, indiferent de gradul de dezvoltare.

Elementele cheie, comune tuturor tranzacțiilor imobiliare sunt: întâlnirea cererii cu oferta, transferul drepturilor de proprietate și finanțarea.

Piața imobiliară cuprinde toate tranzacțiile prin care se acordă dreptul de proprietate sau folosință asupra locuințelor, terenurilor, fie ele intravilane sau extravilane, prețul de tranzacție depinzând atât de cererea actuală, cât și de ofertă. Tranzacția imobiliară presupune transferul permanent sau temporar al unui drept de la o parte la cealaltă în schimbul unei recompense, de obicei fiind o sumă de bani.

În general, o tranzacție financiară reprezintă cumpărarea, deținerea și vânzarea acțiunilor, obligațiunilor, mărfurilor, valutelor, bunurilor de colecție, bunuri imobile sau produse derivate. La baza tranzacțiilor imobiliare stau motive precum: dorința de a deține un spațiu pentru locuit sau de utilitate personală, dorința de a obține profit și dorința de a obține un venit fix, periodic, în urma închirierii imobilului. Datorită caracterului specific al bunurilor imobiliare, transferul proprietății sau folosinței acestora nu implică și transportul efectiv al bunului, iar fiecare spațiu vândut sau cumpărat diferă față de celelalte prin poziționare, suprafață, infrastructura aferentă. Această eterogenitate duce la creșterea costurilor de vânzare/cumpărare și creează distribuția asimetrică a informațiilor.

Într-un “Raport de investigație pentru analizarea pieței imobiliare și a serviciilor conexe tranzacțiilor imobiliare”, Consiliul Concurenței subliniază importanța pieței imobiliare în societatea actuală deoarece “prețul clădirilor și al terenurilor impulsionează disponibilitatea și capacitatea băncilor de a împrumuta bani”.

Potrivit aceluiași raport, un indicator de bază al pieței imobiliare îl reprezintă chiriile, valoarea acestora depinzând de Produsul Intern Brut real, care cuprinde nivelul agregat al venitului pe cap de locuitor și dimensiunea populației și ratele anticipate ale dobânzilor reale.

Cu toate acestea, ”motorul” întregii piețe imobiliare îl reprezintă piața rezidențială, având influență asupra evoluției sectoarelor de construcții, spații de retail sau terenuri, aceasta reprezentând un punct de referință pentru celelalte sectoare din economie (de exemplu prețul unui produs din magazinul X este mai mare decât prețul aceluiași produs din magazinul Y pentru că magazinul X este poziționat într-o zonă centrală, iar chiria spațiului este mai mare decât cea plătită pentru magazinul Y).

Tranzacțiile imobiliare au caracteristici asemănătoare cu alte tipuri de tranzacții, de exemplu cele ale valorilor mobiliare, diferența majoră fiind că pe piața imobiliară atât vânzătorii, cât și cumpărătorii se bazează pe estimarea dinamicii viitoare a pieței, dar elementul care creează probleme este legat de așa-numitul ”comportament miop”, care induce ideea că trendul actual al prețurilor va continua și în viitor, aceștia ne mai luând în calcul o eventuală schimbare a tendinței prețurilor, dată fiind rigiditatea structurală a prețurilor. De regulă, prețurile locuințelor scad destul de rar, în condițiile deteriorării mediului economic general. În aceste perioade economice, de regulă, vânzătorii refuză să participe la piață, având suficient timp de așteptare pentru un nou val de creșteri datorită costurilor relativ reduse de gestionare a activelor imobiliare.

Analiza concurenței pe piața imobiliară

Cu toții știm că pe piața imobiliară există un număr foarte mare atât de vânzători, cât și de cumpărători, numărul și valoarea tranzacțiilor fiind imensă, ceea ce face ca această piață să se apropie de modelul concurenței perfecte. Fiind un număr mare de oferte, dar și de cereri, vânzătorii/cumpărătorii nu pot impune prețul de tranzacționare. În acest context, prețul fiecărui lot de teren, spațiu comercial sau locuință, este influențat aproape în totalitate de interacțiunea dintre volumul agregat al cererii și al ofertei.

Conform Raportului realizat de către Consiliul Concurenței din România [NET05], ”Imposibilitatea participanților la piață de a influența semnificativ prețul de tranzacționare și dependența evoluției pieței de cerere reprezintă rezultatul faptului că averea imobiliară a unei țări este puternic divizată, iar marea majoritate a populației participă la această piață fie în calitate de (potențiali) vânzători, fie în calitate de (potențiali) cumpărători, sau ambele. Această caracteristică extremă, unică pieței imobiliare, o face să se apropie suficient de mult de modelul concurenței perfecte fără a îndeplini unele dintre condițiile consacrate de teoria economică, și anume: bunurile imobiliare nu sunt omogene, iar asimetriile informaționale creează un avantaj important vânzătorilor.”

În condițiile prezentate anterior, urmând modelul concurenței perfecte, putem afirma că nici măcar Statul nu are suficient de multe resurse pentru a influența prețurile, atunci când se află in poziția de vânzător sau cumpărător. În schimb, dispune de instrumente coercitive cu influență directă, cum ar fi politica fiscală sau de reglementare a regimului proprietăților, precum și instrumente de natură monetară, cum ar fi influența asupra dobânzilor pe termen scurt și controlul masei monetare.

Pentru un investitor, elementele esențiale sunt randamentul chiriei și potențialul creșterii prețurilor, dar pentru un consumator elementele principale sunt: apropierea față de locul de muncă, de prieteni, rude, calitatea zonei și a proprietății, accesul la mijloacele de transport în comun. Tocmai de aceea, lichiditatea variază în funcție de zonă (de exemplu, prețurile locuințelor din zonele centrale sunt mult mai mari decât prețurile locuințelor aflate al periferie).

Evoluția fondului de locuințe în România

După anul 1991, se poate observa o creștere constantă a numărului de locuințe, de la 7,7 milioane în 1990, la 8,5 milioane de locuințe în anul 2011. (Date furnizate în urma recensământului din 2011).

Figura 1.1. – Evoluția numărului de locuințe în perioada 1991 – 2011

La baza acestei evoluții a stat și schimbarea structurală majoră a proprietății fondului de locuințe, de la o pondere a locuințelor de stat de aproape 21% în anul 1991, la o pondere de 2% a proprietăților de stat în cadrul fondului de locuințe al României. Se poate observa, de asemenea, și o creștere a suprafeței locuibile.

Conform datelor furnizate în urma recensământului din 2011 [NET06], au fost înregistrate “locuințele convenționale , alte unități de locuit nedestinate prin construcție a fi locuite, dar care sunt practic locuite și spațiile colective de locuit. Prin înregistrarea unor caracteristici constructive și de dotare, recensământul permite estimarea unor indicatori necesari pentru caracterizarea condițiilor de locuit ale populației.”

Figura 1.2. – Modalitatea de calcul a mărimii fondului de locuințe la recensământ

Sursa: insse.ro

Tabel 1.1 – Fondul de locuințe

Sursa: insse.ro

Piața imobiliară în România

Conform ultimului Recensământ al populației [NET06], în România există aproximativ 8,5 milioane de locuințe, însumând în total aproximativ 21 milioane de camere și o suprafață locuibilă de peste 300 de milioane m2.

Majoritatea locuințelor au fost construite înainte de anul 1989, când rata natalității și evoluția demografică era mult mai mare deât în prezent, populația României scăzân de la 23 milioane în 1989, la 19 milioane în 2011.

Dacă înainte de Revoluția din 1989, statul deținea mare parte din locuințe, după acest moment istoric, proprietățile deținute de stat au trecut în proprietate privată, populația deținând aproximativ 98% din fondul locativ.

O problemă serioasă ce apare pe piața imobiliară din România este reprezentată de faptul că în majoritatea cazurilor moneda de tranzacționare este euro, iar veniturile participanților la piață sunt în moneda națională, fenomen ce poate părea paradoxal la o primă vedere.

Figura 1.3. – Credite pentru locuințe, acordate populației în ultimii 3 ani

Valoarile sunt tranformate in lei

Sursa: BNR

Conform datelor furnizate de Banca Națională a României, în ultimul an, creditele pentru locuințe solicitate de către populație în euro sau în altă valută au început să scadă destul de mult.

Tabel 1.2- Credite pentru locuințe acordate în anul 2015

sfârșitul perioadei% față de aceeași perioadă a anului trecut – sfârșitul perioadei

Sursa: BNR

Potrivit aceleiași surse, Banca Națională a României, impactul monedei de tranzacționare asupra ponderii pe care o are moneda autohtonă în totalul creditelor pentru locuințe este legat de discrepanța între anumite regiuni a acestei ponderi. Astfel, în București majoritatea prețurilor pentru anunțurile imobiliare sunt afișate în euro, dar în județe precum Gorj, Tulcea sau Olt, ponderea monedei naționale în structura creditelor pentru locuințe este mult mai mare, anunțurile imobiliare cuprinzând și prețuri în lei.

Serviciile de intermediere

Așa cum am mai menționat, piața imobiliară este una dintre cele mai dinamice piețe, fiind una de “căutare”, iar prețurile sunt stabilite prin negocieri bilaterale. Prețul afișat are un rol deosebit de important în atragerea cumpărătorilor și poate furniza informații prețioase despre calitatea proprietății. De foarte puține ori prețul cerut inițial de vânzător este și cel oferit de către cumpărător, având loc o negociere bilaterală. Procesul prin care o proprietate trece din proprietatea unei persoane în proprietatea alteia este facilitat de către agențiile imobiliare.

Un agent imobiliar este un intermediar între cerere și ofertă, asigurând întâlnirea celor două componente ale pieței.

Principalele metode prin care ofertele apar în atenția cumpărătorilor sunt:

Afișarea anunțului la sediul agenției;

Publicarea de anunțuri în presa scrisă, locală, dar și națională;

Utilizarea mijloacelor de social media (site-uri, rețele sociale).

De menționat este faptul că nu există în niciun stat din lume obligativitatea de a apela la serviciile unei agenții, dar cu toate acestea, aproximativ 70% dintre tranzacțiile imobiliare se realizează prin intermediul unei agenții. Gradul de intermediere este mult mai ridicat în zonele puternic dezvoltate, urbane, față de zonele slab dezvoltate.

Conform unui raport publicat în 2007, în statele membre ale Organization for Economic Co-operation and Development (OECD), nivelul comisioanele este cuprins între 1% și 15% din valoare tranzacției de vânzare, iar în cazul tranzacțiilor de închiriere valoarea comisionul este cuprinsă între 50% și 100% din valoarea chiriei plătite pentru o lună de zile. Valoare comisionului poate fi negociată. Cu toate acestea, valoarea comisionului este una destul de ridicată, iar în viitor se prognozează o creștere a tranzacțiilor imobiliare directe și evident o scădere a costurilor aferente serviciilor de intermediere la nivel global. Situația asta se va creea datorită creșterii importanței internetului și site-urilor de socializare, peste 70% dintre cumpărători folosind internetul în căutarea unei locuințe.

Agențiile imobiliare sunt firme care intermediază tranzacții imobiliare, oferă consultanță, facilitând legătura dintre cerere și ofertă, în scopul plății, de regulă, a unui comision, valoarea acestuia reprezentând un anumit procent din suma tranzacționată.

Serviciul de intermediere presupune găsirea unei oferte compatibile cu cerințele clientului, în vederea semnării unui act (de închiriere, vânzare, schimb etc.) privind transferul proprietății.

Agenția imobiliară, ca orice societate comercială, are personalitate juridică, are un sediu și angajați (agenți imobiliari), aceștia din urmă fiind responsabili de identificarea și selectarea cererilor și a ofertelor, analiza pieței imobiliare pe baza datelor de care dispune, studierea materialelor de specialitate, publicarea anunțurilor imobiliare, încheierea contractelor de comisioane, participarea la negocierile privind prețul imobilului.

Modalitatea de lucru este următoarea: vânzătorul/cumpărătorul se adresează unei agenții imobiliare și se poartă o discuție asupra condițiilor de tranzacționare (vânzare-cumpărare, închiriere, schimb), inclusiv prețul, după care se precizează comisionul cerut de agenție pentru intermedierea tranzacției. Agenția imobiliară este responsabilă să promoveze ofertele prin diferite mijloace: site-uri de specialitate, rețele sociale, presă scrisă etc.

Fiecare client al agenției trebuie înregistrat în baza de date, în care se notează atât datele personale, de contact, cât și date despre imobil (zonă, suprafață, vicii ale imobilului, anul construcției etc.)

Principalele servicii oferite de către orice agenție sunt:

Intermedieri în vederea vânzării, cumpărării sau închirierii unei proprietăți imobiliare;

Consultanță în domeniul imobiliar;

Efectuarea de previziuni în ceea ce privește piața imobiliară din România.

Aceste servicii ale agenției se pot desfășura în bune condiții având la bază un sistem informatic foarte bine pus la punct, pus la dispoziția tuturor agenților imobiliari din cadrul firmei. Aplicația propusă permite centralizarea și gestionarea datelor despre clienți, oferte, cereri, dar oferă și posibilitatea efectuării de rapoarte.

CAPITOLUL 2.
TEHNOLOGII INFORMATICE UTILIZATE

Noțiuni generale Baze de Date

În societatea anului 2015, bazele de date fac parte din viața noastră, fie că lucrăm zi de zi cu ele, suntem înregistrări sau doar le accesăm atunci când plătim energia electrică, diverse facturi, taxe sau când cumpărăm ceva de la supermarket. De exemplu, atunci când vrem să cumpărăm un lucru de la magazin și să plătim folosind cardul de credit, în cadrul sistemului informatic se verifică dacă datele de pe card coincid cu PIN-ul, mai apoi dacă utilizatorul are suficient credit pentru a desfășura tranzacția, iar în cele din urmă banii sunt retrași din contul clientului iar toate aceste operațiuni au loc în mai puțin de un minut.

Conform lui Thomass Connolly [COBE05], “bază de date reprezintă o colecție de date centralizate, logic înlănțuite, concepută pentru satisfacerea nevoilor unei organizații”. Pe lângă scopul principal, de regăsire rapidă a datelor, bazele de date sunt folosite pentru a evita pierderea integrității datelor, duplicarea datelor, care conduce la risipă de bani, timp, spațiu de stocare. Totodată, o bază de date poate fi accesată de mai mulți utilizatori, simultan.

Sisteme de baze de date relaționale

Conform [VLMI03], un Sistem de Gestiune a Bazelor de Date (SGBD) este “un ansamblu complex de programe care asigură interfața între o bază de date și utilizatorii acesteia”, interacționând cu toate componentele unei baze de date. În acest fel se asigură legătura și interdependența între elementele sistemului.

SGBD-urile sunt utilizate pentru:

A defini structura bazei de date, conform unui model de date

A introduce/modifica înregistrări în baza de date, respectând restricțiile de integritate ale sistemului

A asigura protecția bazei de date

A întreține baza de date

Conform aceleiași surse precizate anterior[VLMI03], printre obiectivele unui SGBD putem sublinia: independența fizică și logică a datelor, partajabilitatea datelor,, facilități de utilizare, performanțe globale ale aplicației, redundanță minimă și controlată, securitatea și integritatea datelor.

Pentru ca un SGBDR să fie relațional trebuie respectate cele 13 reguli formulate de Edgar Codd, acestea reprezentând cerințele necesare pentru ca un SGBDR să fie relațional și sunt necesare pentru evaluarea performanțelor unui SGBDR (vezi [VLMI03]).

Caracterizarea unui SGBDR se face atât particular, cât și global, în cea din urmă categorie intrând: limbaje relaționale (limbajul de descriere a datelor-LDD, limbajul de manipulare a datelor LMD), mecanisme pentru coerența și optimizarea datelor, controlul integrității datelor. Din caracteristicile particulare putem enumera: facilități de descriere, manipulare, utilizare și administrare.

Tipuri de baze de date relaționale

Tabel 2.1 – Sisteme de Gestiune a bazelor de date

Tehnologia SQL-Server

Prezenta aplicație este realizată utilizând tehnologiile SQL-Server și .NET, în mediul de dezvoltare Microsoft Visual Studio, și limbajele de programare C# și SQL.

SQL Server este o platformă dezvoltată de Microsoft, ce permite crearea de aplicații utilizeazând bazele de date relaționale. Tehnologia oferită de Microsoft nu se limitează la o aplicație monolitică, ci se structurează din mai multe componente. Limbajele de programare utilizate de acest sistem de management al bazelor de date relaționale sunt T-SQL și ANSI SQL.

De-a lungul timpului, acest produs software a apărut în mai multe versiuni și în diverse ediții destinate unei largi game de afaceri și pentru utilizarea în gestiunea unui volum diferit de date.

Conform [PETK10], primele versiuni de SQL Server, 1.0 și 1.1, au apărut în anii 1989, respectiv 1991, fiind produse de către Microsoft în cooperare cu Sybase și Ashton-Tate, fiind bazate pe sistemele de operare OS/2.

Începând cu versiunea 4.2 s-a realizat trecerea la sistemul de operare Windows, inițial fiind dezvoltată o variantă pentru Windows NT. Acesta reprezentat și faza în Microsoft s-a separat de partenerii săi în realizarea acestui produs.

Versiunea 7.0 a venit cu o restructurare vizibilă a acestei platforme, fiind momentul în care serviciile OLAP, redenumite ulterior servicii de analiză, au fost introduse.

SQL Server 2000 dispune de suport pentru instanțe multiple și a introdus componenta de Data mining. SQL Server Reporting Services a apărut după lansarea acestei versiuni, ca un pachet adițional de îmbunătățire a produsului, împreună cu posibilitatea de compatibilizare cu procesoarele de 64 de biți.

Versiunea de SQL Server apărută în anul 2005 a venit cu următoarele îmbunătățiri: stocarea și interogarea datelor nerelaționale în format XML, introducerea SQL Server Management Studio pentru a înlocuirea tool-urilor anterioare de management al datelor, limbajul T-SQL a fost îmbunătățit substanțial, incluzând și structuri de tratare a excepțiilor, SQL Server 15 Integration Services a înlocuit DTS (Data Transformation Services), view-uri și funcții dinamice de management au fost introduse pentru o monitorizare mai eficientă și performantă a datelor, de asemenea s-au introdus opțiunile de criptare a coloanelor și de Database mirroring.

Prin produsul lansat în anul 2008, cei de la Microsoft au adăugat următoarele aspecte: tehnologiile ”SQL Server Always On” – introduse pentru a reduce întârzierile, tehnologiile de criptare și compactare a bazelor de date fiind incluse, s-a introdus tipurile de date spațial și cele specializate pentru timp și dată, se oferea un suport mai bun pentru datele structurate și nestructurate prin tipul Filestream și posibilitatea accesării și administrării bazelor de date din Windows PowerShell.

Printre îmbunătățirile și opțiunile suplimentare aduse de SQL Server 2008 R2 putem include: management multi-server, introducerea posibilităților de analiză folosind PowerPivot, substanțiale modificări ale SQL Server Reporting Services, introducerea Master Data Services pentru administrarea datelor referință și multe altele.

Microsoft SQL Server 2012 a fost anuțată ca fiind cea din urmă versiune ce suportă nativ conexiune de timp OLE DB, preferându-se conexiunea nativă ODBC,ce permite portarea pe alte platforme fiind independentă de sistemul de operare.

Ultima versiune, SQL Server 2014 a aparut în luna martie a anului 2014 și are la bază produsul livrat anterior, dar de această dată fiind mult mai eficient, pentru a dezvolta aplicații de înaltă performanță și soluții de Business Intelligence, acestea ajutând clienții să ia decizii rapide, mai bune. SQL Server 2014 utilizează tehnologia in-memory peste OLTP, depozite de date, business intelligence, analiză și volumul de lucru fără a fi nevoie de a cumpăra programe scumpe de completare sau dispozitive high-end. SQL Server 2014 utilizează un set comun de instrumente pentru a implementa și gestiona baze de date, atât local cât și în cloud, ceea ce face mai ușor pentru clienții să profite de cloud, cu abilități existente.

SQL Server 2014 a fost proiectat pentru a lucra într-un mediu hibrid care se întinde local și în cloud și utlizează noi instrumente pentru back-up și recuperare în caz de dezastru, soluții din cadrul Microsoft Azure.

Microsoft a lansat produsul SQL Server în multiple ediții, în funcție de caracteristicile oferite și publicul țintă al acestora. Astfel există următoarele ediții: Datacenter, Enterprise, Standard, Web, Business Intelligence, Workgroup, Express, precum și edițiile specializate: Developer, Azure, Compact SQL(CE), Embedded(SSEE), Fast Track, Evaluation, LocalDB, PDW(Paralel Data Warehouse), Datawarehouse Appliance Edition.

Pentru dezvoltarea aplicației destinată gestiunii activității unei agenții imobiliare am utilizat Microsoft SQL-Server Express Edition, mai exact componența acestuia Microsoft SQL Server Management Studio Express cu rol în crearea bazei de date.

Microsoft SQL-Server Express Edition este varianta scalabilă a SQL Server, ce se distribuie gratuit, și care include nucleu bazei de date. Această ediție nu impune o limită asupra numărului de baze de date ce se pot crea sau asupra numărului de utilizatori permiși, însă este restricționat la folosirea unui singur procesor, 1 GB de memorie și fișiere de date de 4 GB.

SQL Server Management Studio este o interfață grafică destinată folosirii de către utilizator pentru configurarea și administrarea tuturor componentelor din cadrul pachetului Microsoft SQL Server, care a fost inclusă începând cu versiunea lansată pe piață în anul 2005. Acest instrument software include atât editoare pentru script, cât și unelte grafice care interacționează cu obiectele și caracteristicile serverului de date. Pentru SQL Server Express Edition, această componentă poartă denumirea de SQL Server Management Studio Express (SSMSE).

O caracteristică de bază a SQL Server Management Studio este Object Explorer care permite utilizatorului selectarea și manipularea oricărui obiect al bazei de date, putându-se astfel observa, analiza și optimiza performanțele acesteia. Această componentă a SQL Server poate fi folosit și la crearea unei noi baze de date sau la modificarea uneia deja existente prin adăugarea sau alterarea de tabele și indecși.

Limbajul de programare folosit pentru crearea bazei de date, introducerea datelor și manipularea acestora este, așa cum am menționat și anterior, SQL (Structured Query Language). Acesta reprezintă un limbaj de programare standardizat ce a fost inițial dezvoltat de către IBM și care are drept scop definirea, modificarea și interogarea bazelor de date relaționale. T -SQL sau Transact-SQL este extensia dezvoltată de către compania Microsoft acestui limbaj, pentru a include elemente de programare procedurală, variabile locale, diverse funcții pentru prelucrarea datelor de tip string, date etc, și care modifică comenzile DELETE și UPDATE. Orice aplicație care comunică cu o instantță SQL Server face acest lucru trasmițând o comandă T-SQL către server, indiferent de interfața utilizată. De aceea, Transact-SQL este elementul pe care se centrează utilizarea Microsoft SQL Server.

Limbajul C#

C# este un limbaj de programare apărut la începutul anilor 1990, venind în ajutorul dezvoltatorilor pentru a putea implementa o multitudine de aplicații sigure și robuste, fiind compatibil cu Microsoft .NET.

C# este utilizat pentru a dezvolta aplicații Windows de tip client, servicii web XML, aplicații de tip client-server, aplicații ce au în componență baze de date și multe altele.

Sintaxa acestui limbaj de programare este una simplă, asemănătoare cu C și C++, ușor de învățat și de folosit. Fiind un limbaj de tip orientat-obiect, C# permite folosirea conceptelor precum: încapsulare, moștenire, polimorfism. Diferențele dinte C# și C++ sunt minore, cum ar fi utilizarea “;” după numele claselor.

La fel ca și Java, C# nu suportă moștenirea multiplă, motiv pentru care se folosesc interfețele, prin care se specifică anumite funcții pe care clasa trebuie sa le pună în aplicare. Utilizând interfețele se evită pericolele moștenirii multiple, menținând în același timp capacitatea de a lăsa mai multe clase să implementeze același set de metode.

O altă caracteristică utilă a limbajului este garbage collection. Prin urmare nu este necesar să fie incluși destructori pentru fiecare clasă, execepție făcând situația în care o clasă nu e capabilă să administreze resursele. În această situați, este necesară eliberarea resurselor din interiorul clasei (funcția de finalizare este utilizată pentru a “curăța” aceste resurse neutilizate).

De asemenea, C# oferă acces direct către memorie prin C++ style pointers, dar acești pointeri nu sunt garbage collected până când nu sunt lansați de către dezvoltator.

C#, ca parte a tehnologiei .NET, este compliat de Microsoft Intermediate Language (MSIL), care este asemănător cu Java. MSIL permite C#-ului să fie o platformă independent.

Programele care rulează utilizând .NET câștigă viteză odată cu utilizarea repetată. Mai mult de atât, pentru că celelalte limbaje care alcătuiesc platforma .NET (inclusive VB și Cobol), compilează folosind MSIL, este posibil pentru clase să fie moștenite între limbaje. MSIL, ca bytecode, permite C# să fie o platformă independentă.

Tehnologia .NET

Arhitectura .NET este un mediu de dezvoltare oferit de către Microsoft, ce oferă un cadru stabil de programare în care se poate realiza, instala și executa software pe sisteme de operare de tip Windows. Aceasta oferă acces la date, posibilitatea conectării la baze de date, algoritmi numerici și criptografici, precum și facilitatea creării de interfețe pentru utilizatori, aplicații web și conexiuni de rețea.

Mediul .NET permite programelor dezvoltate în cadrul acestuia să acceseze funcționalități ale programelor create în afara lui. Proprietății de interoperabilitate, descrisă anterior, i se adaugă și aceea ce independență a limbajului care permite schimbul de tipuri de date între programe create cu ajutorul a două limbaje diferite. Caracteristicile .NET includ și folosirea librăriilor, pentru evitarea rescrierii de mai multe ori a codului. Programele dezvoltate prin intermediul .NET prezintă comportament tipic în accesarea memoriei, tratarea excepțiilor și în ceea ce privește securitatea. Proprietatea de implementare simplificată a arhitecturii se referă la instrumentele oferite de aceasta care permit gestionarea instalării soft-ului pentru ca acesta să nu interfereze cu versiunile anterioare existente și nici să nu compromită securitatea sistemului.

Microsoft a dezvoltat această arhitectură inițial sub numele de Next Generation Windows Services (NGWS), la sfârșitul anilor `90, iar până la finalul lui 2000 a fost lansată și prima versiune beta .NET 1.0. Versiunea 3.0 a arhitecturii a fost inclusă în Windows Server 2008 și Windows Vista, iar versiunea 3.5 în Windows 7 și Windows Server 2008 R2. Împreună cu Visual Studio 2010 a fost lansat pe piață și .NET 4 Framework.

Arhitectura .NET există și în două versiuni destinate utilizării prin intermediul dispozitivelor mobile și de mici dimensiuni: .NET Compact Framework și .NET Micro Framework.

Criticile aduse mediului de programare .NET sunt legate de disponibilitatea redusă, acesta a fost creat strict pentru Microsoft Windows, întârzierile ce pot apărea în execuție cauzate de garbage collector, precum și de temerile în ceea ce privește securitatea limbajului de programare folosit.

CAPITOLUL 3.
ANALIZA ȘI PROIECTAREA SISTEMULUI INFORMATIC

Specificarea cerințelor sistemului informatic

Cerințele activității unei agenții imobiliare sunt determinate de dimensiunea acesteia, dată de numărul de angajați și de capacitatea acestora de a gestiona ofertele și cererile.

Principalele necesități ale unei agenții imobiliare sunt reprezentate de procesul de înregistrare a cererilor și a ofertelor, gestionarea tranzacțiilor, a clienților, efectuarea rapoartelor în timp real pentru evidența tranzacțiilor efectuate în anumite intervale de timp.

Programul realizat în prezenta lucrare are ca obiectiv soluționare acestor cerințe într-o manieră simplă și accesibilă utilizatorilor.

Putem afirma că aplicația este axată pe două module: gestionarea contactelor (agenți, clienți – cei care fac o solicitare de cumpărare/închiriere, proprietari) și gestionarea procesului (ofere, cereri, tranzacții, vizualizări ale imobilelor).

În majoritatea agențiilor numărul angajaților este de cel puțin trei, motiv pentru care apare necesitatea utilizării mai multor dispozitive pe care să funcționeze aplicația, ceea ce se traduce prin accesarea bazei de date de mai mulți utilizatori simultan, lucru posibil doar prin utilizarea unui server central, localizat pe unul din aceste dispozitive.

Datele din baza de date trebuie să reflecte realitatea, motiv pentru care este necesară o gestiune strictă a fluxului de date între utilizatorii aplicației și server.

Datele de intrare sunt reprezentate de oferte și cereri, care ulterior intră în componența tranzacțiilor. Pentru fiecare ofertă, respectiv cerere, există număr de identificare, clientul care a solicitat, respectiv proprietarul unui imobil care dorește tranzacționarea, agentul care a contactat clientul/proprietarul și a stabilit înaintarea unei oferte sau a unei cereri, precum și condițiile de tranzacționare.

Agentul este responsabil să înregistreze ofertele noi, dar și cererile, iar ulterior să prezinte clientului care solicită închirierea/cumpărarea unei proprietăți, una sau mai multe oferte, din care acesta își poate alege o ofertă care se pliază pe nevoile lui, toate acestea în urma unor vizualizări de imobile/proprietăți.

La introducerea unei oferte în baza de date se introduc informații precum: numărul oferte (id_ofertă), detalii privind localizarea (județ, localitate, cartier, zonă, stradă etc.), apoi se introduc informații despre starea proprietății (suprafață, an construcție, îmbunătățiri etc.), informații referitoare la preț și informații despre client. Acesta din urmă trebuie introdus în prealabil în lista de contacte.

Aceleași informații se introduc și pentru o nouă cerere, iar la introducerea unei noi tranzacții în baza de date se introduc informații legate de oferta ce a răspuns pozitiv cererii unui client, date despre clienți, preț, datele agentului și ale contractului de închiriere/vânzare-cumpărare.

Rapoartele furnizate de sistemul informatic utilizat alcătuiesc datele de ieșire. Se pot obține astfel informații legate de situația ofertelor/cererilor soluționate, a celor nesoluționate, despre tranzacțiile realizate.

Prin intermediul rapoartelor se analizează prețurile tranzacțiilor în funcție de zonă, perioadă, suprafață.

Identificarea entităților și a caracteristicilor acestora

Entitățile folosite pentru proiectarea bazei de date a agenției imobiliare, pe care se bazează aplicația, precum și atributele asociate acestora sunt prezentate în tabelul de mai jos.

Tabel 3.1 – Tabel cu entitățile bazei de date și atributele lor

Proiectarea noului sistem

Proiectarea schemei bazei de date

În cadrul bazei de date se dorește realizarea unui model al lumii reale, însă poate reprezenta doar un număr limitat de caracteristici necesare în cadrul aplicației. Entitățile identificate anterior, împreună cu atributele asociate acestora și relațiile ce se stabilesc între ele stau la baza realizării bazei de date a agenției imobiliare.

Prin intermediul schemei bazei de date se observă structura, asocierile între tabele, cheile primare și secundare, restricțiile de integritate.

Figura 3.1– Schema bazei de date

Proiectarea prelucrărilor

În cadrul aplicației este nevoie de șapte tabele pentru a putea gestiona un flux minim ce are loc între agenți clienți și proprietari, interacțiuni ce se materializează în oferte, cereri, tranzacții și vizualizări.

Figura 3.2 – Tabela Clienti Figura 3.3 – Tabela Agenti

Figura 3.4 – Tabela Cerere Figura 3.5 – Tabela Oferte

Figura 3.6 – Tabela Proprietari Figura 3.7 – Tabela Tranzactii

Figura 3.8 – Tabela Vizualizari

Între tabele există mai multe conexiuni, ce se pot observa și din schema bazei de date, conexiuni ce ajută la realizarea unui flux complet de informații.

Tabela Oferte este conectată cu tabelele: Proprietari, unde sunt înregistrate datele despre persoanele care au un imobil de închiriat sau de vândut, tabela Agenți, astfel încât fiecare agent să își poată controla portofoliul de oferte, tabela Vizualizări, în care sunt trecute vizualizări efectuate de către clienți, asupra fiecărei oferte. O altă tabelă importantă cu care este conectată, este Tranzacții, aceasta oferind informații referitoare la tranzacțiile efectuate asupra unor proprietăți, ofertantul (proprietarul) și cumpărătorul(clientul).

Tabela Cerere este conectată la rândul ei cu tabele precum: Clienți – persoane care își doresc să desfășoare o tranzacție imobiliară, Agenți și Tranzacții, reprezentând un răspuns pozitiv al cererii.

Tabela Tranzacții este una care este conectată cele mai multe tabele, deoarece tranzacția imobiliară reprezintă întâlnirea cererii unui client cu oferta unui proprietar și este gestionată de către un agent imobiliar.

Tabela Vizualizări este utilizată pentru a ține evidența vizualizărilor imobilelor, efectuate de către clienți. Este recomandat a se utiliza o astfel de tabelă pentru a nu-i prezenta de mai multe ori unui client aceeași oportunitate.

Realizarea aplicației informatice

Implementarea aplicației

În continuare va fi descris modelul de implementare al fiecărui modul al aplicației, fiind prezentată modalitatea de realizare a interfețelor, precum și a procedurilor de creare.

După crearea bazei de date pe server, se realizează un proiect de tipul Windows Form Application în Microsoft Visual Studio. Prima componentă a aplicației este formularul de acces (Figura 3.7.), care cuprinde două textbox-uri pentru introducerea id-ului și a parolei și evident butonul de Login.

Figura 3.9– Formular de Login

În codul aferent formularului de login se introduce namespace-ul System.Data.Sql Client și se realizează conexiunea cu baza de date, apoi se verifică dacă parola și userul există în baza de date.

SqlConnection con = new SqlConnection("Data Source=ioana-pc\\disertatie;Initial Catalog=login_form;Integrated Security=True");

con.Open();

SqlCommand cmd = new SqlCommand("select * from Agenti where ID_agent = '" + textBox1.Text + "'and parola = '" + textBox2.Text + "'", con);

SqlDataReader dr;

dr = cmd.ExecuteReader();

int count = 0;

while (dr.Read())

{

count += 1;

}

if (count == 1)

{

this.Hide();

Form2 f2 = new Form2();

f2.Show();

}

else if (count > 0)

{

MessageBox.Show("Duplicate username and password");

}

else

{

MessageBox.Show("Username and/or password is not correct");

}

textBox1.Clear();

textBox2.Clear();

Evenimentul declanșat la încărcarea formularului încearcă stabilirea unei conexiuni cu baza de date.

În situația în care username-ul nu se găsește în baza de date, sau parola nu este corectă, este primit un mesaj de avertizare

Figura 3.10 – Mesaj de avertizare

În situația în care username-ul se găsește în baza de date, iar parola este cea corespunzătoare, se deschide meniul principal al aplicației.

Figura 3.11 – Meniul Administrativ

Modulul de administrare este reprezentat de asemenea de un formular, în al cărui meniu sunt prezentate toate opțiunile pe care le are la dispoziție un utilizator.

Fiecare componentă necesită crearea unui nou formular. De exemplu, meniul Contacte are în coponență trei submeniuri, Proprietari, Clienți și Agenți (Figura 3.13), de unde se pot vizualiza, adăuga sau modifica date despre proprietari, clienți și agenți.

Figura 3.12 – Submeniuri – Contacte

Pentru adăuga un agent nou, se utilizează o comandă de tipul Insert, codul asociat fiind următorul:

cmd = new SqlCommand("Insert into Agenti(ID_agent,parola,CNP,nume,prenume,telefon,email,adresa,data_angajarii) values(@ID_agent,@parola,@CNP,@nume,@prenume,@telefon,@email,@adresa,@data_angajarii)",con);

cmd.Parameters.Add("@ID_agent",textBox1.Text);

cmd.Parameters.Add("@parola", textBox2.Text);

cmd.Parameters.Add("@CNP", textBox3.Text);

cmd.Parameters.Add("@nume", textBox4.Text);

cmd.Parameters.Add("@prenume", textBox5.Text);

cmd.Parameters.Add("@telefon", textBox6.Text);

cmd.Parameters.Add("@email", textBox7.Text);

cmd.Parameters.Add("@adresa", textBox8.Text); cmd.Parameters.Add("@data_angajarii",

monthCalendar1.SelectionStart.ToString());

cmd.ExecuteNonQuery();

Figura 3.13 – Formular Adaugare agent imobiliar

Pentru afișarea agenților într-un tabel de tip datagridview se folosește o comandă de tip SELECT, descrisă mai jos:

adapt=new SqlDataAdapter("SELECT ID_agent, nume, prenume, telefon, email FROM Agenti",con);

ds=new System.Data.DataSet();

adapt.Fill(ds, "Agenti imobiliari");

dataGridView1.DataSource=ds.Tables[0];

Figura 3.14 – Agenti imobiliari

În cadrul noului formular deschis avem posibilitatea de a vedea datele publice ale unui agent imobiliar, cum ar fi id-ul, numele, prenumele, telefonul, adresa de email si data angajarii. Nu sunt vizibile date precum parola și CNP-ul.

Butoanele prezente sunt: Afișează, prin care există posibilitatea afișării tuturor informațiilor despre agenții introduși în baza de date. Codul pentru afișare este următorul:

private void button1_Click(object sender, EventArgs e)

{

try

{

con = new SqlConnection("Data Source=ioana-pc\\disertatie;Initial Catalog=login_form;Integrated Security=True");

con.Open();

adapt = new SqlDataAdapter("select id_agent, nume, prenume, telefon, email, adresa, data_angajarii from Agenti", con);

ds = new System.Data.DataSet();

adapt.Fill(ds, "Agenti");

dataGridView1.DataSource = ds.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Un alt buton de pe acest formular este cel de modificare, prin care se pot aduce modificări asupra datelor din tabel, update-ul realizându-se și în baza de date.

Codul de realizare al operațiunii de modificare este următorul:

private void button2_Click(object sender, EventArgs e)

{

try

{

cmd = new SqlCommandBuilder(adapt);

adapt.Update(ds, "Agenti");

MessageBox.Show("Information updated", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch (Exception ex)

{

MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Cel de-al treilea buton existent este cel de ștergere, prin care se deschide un nou formular, în care este necesară introducerea cheii primare (id_agent) și a CNP-ului agentului. Așadat operațiunea de ștergere poate fi realizată doar dacă id-ul și CNP-ul introdus aparțin aceluiași agent.

Figura 3.15 – Formular de Stergere agent imobiliar

Pentru ștergerea unei înregistrări din baza de date, se folosește un cod similar cu cel de mai jos:

private void button1_Click(object sender, EventArgs e)

{

try

{

con = new SqlConnection("Data Source=ioana-pc\\disertatie;Initial Catalog=login_form;Integrated Security=True");

con.Open();

cmd = new SqlCommand("Delete from Agenti where id_agent=@id_agent and cnp=@cnp", con);

cmd.Parameters.Add("@id_agent", textBox1.Text);

cmd.Parameters.Add("@CNP", textBox2.Text);

cmd.ExecuteNonQuery();

this.Close();

}

catch (Exception ex)

{

MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Figura 3.16 – Tabela Agenti, în urma ștergerii unei înregistrări

Următorul modul al aplicației este cel destinat proprietarilor, unde se poate vedea lista cu toți proprietarii, se pot adăuga, modifica sau șterge informații sau se pot căuta informații conform anumitor câmpuri.

Figura 3.17 – Formular Proprietari

Datele unui proprietar se pot șterge, introducând atât id-ul proprietarului, cât și CNP-ul sau CUI-ul (în cazul persoanelor juridice).

Figura 3.18 – Formular de ștergere proprietar

Un al treilea tip de contact îl reprezintă Clienții, cei care solicită închirierea sau cumpărarea unui imobil. Datele sunt organizate în aceeași manieră ca și în cazul proprietarilor, iar operațuinile de adăugare, modificare, ștergere și căutare sunt similare.

Figura 3.19 – Formular Clienți

În cazul actualizării datelor, codul necesar pentru a putea face legătura cu baza de date și update-ul necesar este:

private void button4_Click(object sender, EventArgs e)

{

try

{

cmd = new SqlCommandBuilder(adapt);

adapt.Update(ds, "Clienti");

MessageBox.Show("Information updated", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch (Exception ex)

{

MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Figura 3.20 – Update baza de date tabelă Clienți

Un alt meniu important este reprezentat de Oferte, de închiriere și de vânzare

Figura 3.21 – Submeniuri Oferte

În cazul ofertelor, fie ele de cumpărare sau de vânzare, se introduc date despre localizare (judet, localitate, cartier etc.), date despre imobil(suprafață, nr camere, dacă este decomdat sau nu), utilități(apă, gaz, geamuri termopan), precum și date financiare (prețul de vânzare sau de închiriere, aferent unei luni).

În primă fază, un proprietar ia legătura cu un agent imobiliar și oferă informații despre proprietatea pe care o deține. Astfel apare oferta, aceasta fiind în primă fază în stare nesoluționată. În momentul în care se găsește un cumpărător, are loc tranzacția imobiliară, iar oferta devine soluționată.

În cadrul tabelei Oferte se pot aplica diverse filtre de căutare, în funcție de agent, localizare, dacă este o ofertă soluționată sau nu.

Figura 3.22 – Oferte de închiriere nesolutionate

De exemplu, pentru a afișa toate ofertele soluționate, se folosc următoarele linii de cod:

private void button2_Click(object sender, EventArgs e)

{

try

{

con = new SqlConnection("Data Source=ioana-pc\\disertatie;Initial Catalog=login_form;Integrated Security=True");

con.Open();

adapt = new SqlDataAdapter("select * from oferte where categ_oferta='inchiriere' and stare='solutionat'", con);

ds = new System.Data.DataSet();

adapt.Fill(ds, "Oferte");

dataGridView1.DataSource = ds.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

Pentru modificări în baza de date sau adăugarea de noi oferte este suficient a se completa câmpurile din datagridview, după care se apasă butonul Update baza de date.

Figura 3.23 – Oferte de închiriere soluționate

Figura 3.24 – Cautare în oferte nesoluționate în funcție de cartier

Un alt meniu important este cel dedicat cererilor, de inchiriere și de cumpărare, ceeri ce se regăsesc toate în tabela Cerere din baza de date

Figura 3.25 – Submeniuri cereri

Ca și în cazul ofertelor, și de data aceasta avem de a face cu date referitoare la localizarea imobilului ce se dorește a fi tranzacționat.

Figura 3.26 – Cereri de inchiriere nesoluționate

Aceleași operațiuni de căutare, modificare, adăugare se pot face și asupra acestor cereri, ca și în cazul ofertelor.

O dată ce o persoană a formulat o cerere, acesteia i se prezintă una sau mai multe oferte, în funcție de datele existenet în bază. În urma vizualizării unui imobil, clientul ia decizia de a accepta sau a refuza oferta propusă și de a motiva alegerea făcută, în situația refuzului

Figura 3.27 – Formular vizualizări

Un modul deosebit de important al aplicației îl reprezintă cel de tranzacții, modul ce poate sta la baza unui depozit de date care să influențeze în mod pozitiv deciziile firmei și ale clienților.

Figura 3.28 – Submeniuri tranzacții

Primul submeniu, cel de Adaugare tranzactie va deschide un nou form in care agentul va putea completa datele necesare contractului de inchiriere sau de vanzare/cumparare.

Figura 3.29 – Formular de adăugare a unei tranzacții

În urma apăsării butonului de Print se va genera următorul contract:

Figura 3.30 – Contract de tranzactionare

Pentru utilizarea butonului de Print se execută următorul cod:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)

{

{

con = new SqlConnection("Data Source=ioana-pc\\disertatie;Initial Catalog=login_form;Integrated Security=True");

con.Open();

SqlDataReader myReader = null;

SqlCommand myCommand = new SqlCommand("select a.*, b.*,c.*,d.*,e.*,f.* from tranzactii a, oferte b, cerere c,clienti d, proprietari e, agenti f where a.id_agent=f.id_agent and a.id_cerere=c.id_cerere and a.id_oferta=b.id_oferta and c.id_client=d.id_client and b.id_proprietar=e.id_proprietar",con);

myReader = myCommand.ExecuteReader();

myReader.Read();

string rez = "IMOBILIARE SRL \n";

rez += "\n Tel: 0741 502 771";

rez += "\n www.imobiliare.net";

rez += "\n Email: [anonimizat] \n";

rez += "\n\n" + "Contract nr " + textBox1.Text.ToString() + "\n" + "'Incheiat astazi,' " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString() + " \n";

rez += "\n\n" + "'Tip contract '" + textBox7.Text.ToString() + "\n\n" + "'Intre cele 2 parti, denumite in continuare Proprietar si Client. \n\n Proprietar: " + textBox8.Text.ToString() + " " + textBox9.Text.ToString() + "CNP" + textBox11.Text.ToString();

rez += "\n\n" + "Client "+textBox12.Text.ToString()+" "+textBox13.Text.ToString()+"CNP"+textBox14.Text.ToString();

rez += "\n" + "Tranzactia a fost efectuata asupra imobilului cu id-ul" + textBox2.Text.ToString() + " avand la baza cererea formulata cu id-ul " + textBox3.Text.ToString();

rez += "\n\n Data intrare in folosinta \n " + dateTimePicker2.Value.ToShortDateString() + "\n\n pana la data de " + dateTimePicker3.Value.ToShortDateString();

rez += "\n\n" + "Pretul de tranzactionare a fost de" + textBox4.Text.ToString() + textBox5.Text.ToString();

rez += "\n\n" + "Tranzactia a fost incheiata de catre agentul " + textBox6.Text.ToString();

myReader.Close();

myReader = null;

e.Graphics.DrawString

(

rez, new Font("Arial",12),

new SolidBrush(Color.Black),

new Point(25,180)

);

}}

private void button1_Click(object sender, EventArgs e)

{

PrintDocument pd = new PrintDocument();

pd.PrintPage += new PrintPageEventHandler(this.printDocument1_PrintPage);

PrintPreviewDialog pdlg = new PrintPreviewDialog();

pdlg.Document = pd;

pdlg.ShowDialog();

}

Celălalt submeniu din tranzacții este cel de vizualizare, având tot odată posibilitatea de a exporta datele într-un formular de tip Excel.

Figura 3.31 – Formular cu tranzacțiile încheiate

Pentru a exporta datele este nevoie de execuția următorului cod sursă:

private void button2_Click(object sender, EventArgs e)

{

Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();

Workbook wb = Excel.Workbooks.Add(XlSheetType.xlWorksheet);

Worksheet ws = (Worksheet)Excel.ActiveSheet;

Excel.Visible=true;

ws.Cells[1, 1] = "ID Tranzactie";

ws.Cells[1, 2] = "ID Agent";

ws.Cells[1, 3] = "ID Oferta";

ws.Cells[1, 4] = "ID Cerere";

ws.Cells[1, 5] = "Tip contract";

ws.Cells[1, 6] = "pret";

ws.Cells[1, 7] = "moneda";

ws.Cells[1, 8] = "Numar contract";

ws.Cells[1, 9] = "Data";

ws.Cells[1, 10] = "Data inceput";

ws.Cells[1, 11] = "Data sfarsit";

ws.Cells[1, 12] = "Alte info";

for (int j = 2; j <=dataGridView1.Rows.Count; j++)

{

for (int i = 1; i <=12; i++)

{

ws.Cells[j, i] = dataGridView1.Rows[j – 2].Cells[i – 1].Value;

}

}

}

Figura 3.32 – Exemplu de fișier excel cu date exportate

Un alt meniul este cel destinat Site-urilor imobiliare, unde agenții pot posta ofertele și cererile, pot atrage proprietari, dar și clienți

Figura 3.33 – Meniu Site-uri imobiliare

În cele din urmă există meniul de Rapoarte și Grafice pentru analiza tranzacțiilor efectuate în cadrul agenției. Aceste rapoarte pot furniza informații referitoare la prețul proprietăților imobiliare în funcție de zonă, număr de camere, dată etc.

Figura 3.34 – Raport privind situatia imobilelor date spre inchiriere in functie de localitate/sector și număr de camere

Figura 3.35 – Raport privind pretul mediu de tranzactionare al imobilelor in functie de localitate/sector si numărul de camere

Figura 3.36 – Grafic privind evolutia preturilor de tranzactie ale imobillor inchiriate, in functie de data semnării contractului

CONCLUZII ȘI CERCETĂRI VIITOARE

Aplicația dezvoltată în cadrul prezentei lucrări a fost realizată pentru a îndeplini cerințele funcționale minime necesare pentru gestionarea activității unei agenții imobiliare, în acest mod agenții reușind să își administreze mai bine clienții, ofertele și cererile, oferind un plus de încredere și profesionalism pe piața imobiliară.

Aspectele uzuale ale unei aplicații de acest fel, gestionarea ofertelor/cererilor sunt completate de posibilitatea de analiză a indicilor activității economice, utilizând modulul de raportare, acestea din urmă reușind să influențeze în mod pozitiv profitabilitatea firmei și totodată oferind un avantaj față de competitori.

Gestionarea eficientă a resurselor, asigurată prin folosirea aplicației, determină creșterea productivității, administrarea facilă a clienților, a ofertelor și cererilor. De asemenea, în cadrul companiei are loc o transparență a proceselor realizate, orice agent reușind să vadă ce clienți există, ce oferte sunt gestionate, care este stadiul acestora, precum și ce tranzacții au fost realizate în diferite perioade de timp și de către ce colegi. Se elimină astfel agendele fizice personale, în care căutarea unor date nu este foarte ușoară și se evită pierderea de informații.

Toate acestea se concretizează în satisfacerea nevoilor clienților, atragerea unora noi și dezvoltarea afacerii.

În cadrul aplicației create se recunoaște și favorizează necesitatea dezvoltării unei afaceri performante pe termen lung, prin orientarea către client și constantă inovare.

Nevoia de noutate este cea care face ca această aplicația să suporte îmbunătățiri, pentru a se adapta noilor nevoi determinate de mediul concurențial.

În funcție de cerințele de afaceri ale unității în care este prezenă aplicația, aceasta poate fi dezvoltată pentru a încorpora module pentru stabilirea de întâlniri cu clienții și păstrarea unui istoric al discuțiilor dintre client și agenție.

Tot odată se poate trece cu lejeritate la crearea unui deposit de date pentru a stoca istoricul tranzacțiilor și a putea realiza într-un mod profesionist analize economice, pe baza datelor regăsite.

BIBLIOGRAFIE

ANEXE

Anexa 1.
Indexul termenilor utilizați

Anexa 2.
Indexul figurilor

Figura 1.1. – Evoluția numărului de locuințe în perioada 1991 – 2011

Figura 1.2. – Modalitatea de calcul a mărimii fondului de locuințe la recensământ

Figura 1.3. – Credite pentru locuințe, acordate populației în ultimii 3 ani

Figura 3.1. – Schema bazei de date

Figura 3.2. – Tabela Clienti

Figura 3.3. – Tabela Agenti

Figura 3.4. – Tabela Cerere

Figura 3.5. – Tabela Oferte

Figura 3.6. – Tabela Proprietari

Figura 3.7. – Tabela Tranzacții

Figura 3.8. – Tabela Vizualizari

Figura 3.9. – Formular de Login

Figura 3.10. – Mesaj de avertizare

Figura 3.11. – Meniul administrative

Figura 3.12. – Submeniuri Contacte

Figura 3.13. – Formular de Adaugare agent imobiliar

Figura 3.14. – Agenti imobiliari

Figura 3.15. – Formular de Stergere agent imobiliar

Figura 3.16. – Tabela Agenti, în urma ștergerii unei înregistrări

Figura 3.17. – Formular Proprietari

Figura 3.18. – Formular de ștergere proprietar

Figura 3.19. – Formular Clienți

Figura 3.21 – Submeniuri Oferte

Figura 3.22 – Oferte de închiriere nesolutionate

Figura 3.23 – Oferte de închiriere soluționate

Figura 3.24. – Cautare în oferte nesoluționate în funcție de cartier

Figura 3.25 – Submeniuri cereri

Figura 3.26 – Cereri de inchiriere nesoluționate

Figura 3.27 – Formular vizualizări

Figura 3.28 – Submeniuri tranzacții

Figura 3.29 – Formular de adăugare a unei tranzacții

Figura 3.30 – Contract de tranzactionare

Figura 3.31 – Formular cu tranzacțiile încheiate

Figura 3.32 – Exemplu de fișier excel cu date exportate

Figura 3.33 – Meniu Site-uri imobiliare

Figura 3.34 – Raport privind situatia imobilelor date spre inchiriere in functie de localitate și număr de camere

Figura 3.35 – Raport privind pretul mediu de tranzactionare al imobilelor in functie de localitate/sector si numărul de camere

Figura 3.36 – Grafic privind evolutia preturilor de tranzactie ale imobillor inchiriate, in functie de data semnării contractului

Anexa 3.
Indexul tabelelor

Tabel 1.1 – Fondul de locuințe

Tabel 1.2 – Credite pentru locuințe acordate în anul 2015

Tabel 2.1 – Sisteme de Gestiune a bazelor de date

Tabel 3.1 – Tabel cu entitățile bazei de date și atributele lor

Anexa 4.
Codul sursă al aplicației informatice (fragmente)

Crearea tabelelor bazei de date

CREATE TABLE [dbo].[Agenti](

[ID_agent] [varchar](10) NOT NULL,

[parola] [varchar](10) NOT NULL,

[CNP] [varchar](13) NOT NULL,

[nume] [varchar](50) NOT NULL,

[prenume] [varchar](20) NOT NULL,

[telefon] [varchar](10) NOT NULL,

[email] [varchar](30) NULL,

[adresa] [varchar](50) NULL,

[data_angajarii] [date] NOT NULL,

CONSTRAINT [PK_Agenti] PRIMARY KEY CLUSTERED

(

[ID_agent] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

CREATE TABLE [dbo].[Tranzactii](

[id_tranzactie] [nchar](10) NOT NULL,

[id_agent] [varchar](10) NOT NULL,

[id_oferta] [nchar](10) NOT NULL,

[id_cerere] [nchar](10) NOT NULL,

[tip_contract] [nchar](30) NULL,

[pret] [int] NULL,

[moneda] [nchar](10) NOT NULL,

[nr_contract] [nchar](10) NOT NULL,

[data] [date] NOT NULL,

[data_inceput] [date] NOT NULL,

[data_sfarsit] [date] NULL,

[alte_info] [nchar](50) NULL,

CONSTRAINT [PK_Tranzactii] PRIMARY KEY CLUSTERED

(

[id_tranzactie] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

ALTER TABLE [dbo].[Tranzactii] WITH CHECK ADD CONSTRAINT [FK_Agenti_Tranzactii] FOREIGN KEY([id_agent])

REFERENCES [dbo].[Agenti] ([ID_agent])

GO

ALTER TABLE [dbo].[Tranzactii] CHECK CONSTRAINT [FK_Agenti_Tranzactii]

GO

ALTER TABLE [dbo].[Tranzactii] WITH CHECK ADD CONSTRAINT [FK_Cerere_Tranzactii] FOREIGN KEY([id_cerere])

REFERENCES [dbo].[Cerere] ([id_cerere])

GO

ALTER TABLE [dbo].[Tranzactii] CHECK CONSTRAINT [FK_Cerere_Tranzactii]

GO

ALTER TABLE [dbo].[Tranzactii] WITH CHECK ADD CONSTRAINT [FK_Oferta_Tranzactii] FOREIGN KEY([id_oferta])

REFERENCES [dbo].[Oferte] ([id_oferta])

GO

ALTER TABLE [dbo].[Tranzactii] CHECK CONSTRAINT [FK_Oferta_Tranzactii]

GO

Metoda C# creată pentru formularul de login

private void button1_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection("Data Source=ioana-pc\\disertatie;Initial Catalog=login_form;Integrated Security=True");

con.Open();

SqlCommand cmd = new SqlCommand("select * from Agenti where ID_agent = '" + textBox1.Text + "'and parola = '" + textBox2.Text + "'", con);

SqlDataReader dr;

dr = cmd.ExecuteReader();

int count = 0;

while (dr.Read())

{

count += 1;

}

if (count == 1)

{

this.Hide();

Form2 f2 = new Form2();

f2.Show();

}

else if (count > 0)

{

MessageBox.Show("Duplicate username and password");

}

else

{

MessageBox.Show("Username and/or password is not correct");

}

textBox1.Clear();

textBox2.Clear();

}

Similar Posts

  • Asigurarea Securitatii Informatiei In Retele de Calculatoare

    IΝΤRODUCΕRΕ……………………………………………………………3 Capitolul 1. Studiul și analiza sistеmului еxistеnt…………………………..4 1.1 Prеzеntarеa unității еconomicе-socialе………………………….5 1.2 Activitățilе dеsfășuratе în unitatеa еconomică………………….5 1.3 Studiul sistеmului dе conducеrе………………………………..5 1.4 Studiul sistеmului condus……………………………………….7 1.5 Schеma fluxului informațional………………………………….10 1.6 Produsе comеrcializatе dе SC Glulam SA……………………..10 Capitolul 2. Proiеctarеa dе ansamblu a soluțiеi informaticе………………14 2.1 Proiеctarеa și monitorizarеa unеi rеțеlе dе calculatoarе………14 2.1.2…

  • Proiectarea Unui Sistem Informatic Privind Incasarea Si Distributia Produselor LA Sc

    CUPRINS 1. TEORIA BAZELOR DE DATE …………………………………………………………………………………. …3 1.1. Noțiuni generale ale bazelor de date……………………………………………………………………….3 1.2. Clasificarea bazelor de date…………………………………………………………………………………..4 1.3. Sisteme de gestiune a bazelor de date…………………………………………………………………….6 1.3.1. Activitățiile asigurate de SGBD………………………………………………….6 1.3.2. Obiectivele unui SGBD…………………………………………………………7 1.3.3. Funcțiile unui SGBD…………………………………………………………….7 1.3.4. Arhitectura unui SGBD…………………………………………………………7 1.4. Securitatea și protecția datelor în bazele de date………………………………………………………8 1.5….

  • Teoria Grafurilor

    Cuprins Cap.I Introducere in teoria grafurilor……………………………………….1 Cap.II Determinarea conectivității unui graf…………………………………5 2.1 Matrice asociată unui graf………………………………………………..5 2.2 Algoritmul lui Roy-Warshall…………………………………………….7 2.3 Parcurgerea grafurilor……………………………………………………10 2.3.1 Parcurgerea grafurilor în adâncime (depth-first search)………10 2.3.2 Parcurgerea grafurilor prin cuprindere (breadth-first search) ..15 2.3.3 Aplicații in conexitate ale parcurgerii grafurilor………………17 Cap.III k-Conexitate și -Conexitate……………………………………………27 3.1 Noțiuni intoductive………………………………………………………27 3.2 Proprietăți……………………………………………………………….28 3.3…

  • Consideratii Privind Securitatea Sistemelor Informatice Economice

    Capitolul 1. Introducere în securitatea sistemelor informatice. sistem informațional și sistem informatic Orice   activitate  realizată  cu  scopul  de  a  satisface   o necesitate se desfășoară conștient și într-un cadru organizatoric bine determinat. Orice  activitate umană organizată într-un astfel de  cadru  este unitate a trei sisteme1: sistem condus; sistem de conducere; sistem informațional. Sistemul  condus  (operațional) – cumulează…

  • Utilizarea Echipamentelor de Retea Studiate Pentru a Observa Asemanarile Si Diferentele Dintre Acestea

    CUPRINS Capitolul 1. Introducere in Packet Tracer 4.1  1.1. Perfectionarea protocoalelor 1.2. Arhitectura extensibila 1.3. Perfectionarea GUI  1.4. Reprezentarea si vizualizarea instumentelor  1.5. Capacități de adnotare si authoring  1.6. Utilitatea lui Packet Tracer 4.1  Capitolul 2. Interfata generala  2.1. Spatiul de lucru si moduri de lucru 2.2. Configurarea preferintelor 2.3. Setarea fundalului  2.4. Primii pasi in Packet Tracer 4.1  2.4.1. Crearea primei retele.  2.4.2. Trimiterea de Mesaje Test Simple in Realtime Mode 2.4.3. Crearea unei Conexiuni pentru un Web Server folosind Browserul Web al PC- ului  2.4.4. Captarea evenimentelor si vizualizarea in Simulation Mode  2.4.5. Interiorul pachetelor in Simulation Mode 2.4.6. Vizualizarea tabelelor de echipamente si resetarea retelei  2.4.7. Recapitularea noilor abilitati  2.5. Tipuri de Conexiuni / Legaturi  Capitolul 3. Cadrul Logic de lucru 3.1. Crearea Dispozitivelor 3.2. Crearea aleatoare a dispozitvelor 3.3. Adaugarea de Module  3.4. Crearea conexiunilor 3.5. Unelte de editare 3.6. Grupareea dispozitivelor Capitolul 4. Spațiul fizic de lucru 4.1. Dispozitive Wireless in cadrul fizic de lucru  4.2. Observatii speciale Capitolul 5. Dispozitive de retea  5.1. Configurarea Fizica si Lista de Comenzi  5.1.1. Configurarea Dispozitivelor  5.1.2. Comenzi de logare IOS  5.1.3. Configurarea Routerelor  5.1.4. Configurari de Rutare 5.1.5. Configurarea Switchurilor  5.1.6. Configurarea PCurilor  5.1.7. Configurarea Serverelor  Capitolul 6. Aplicatie  Primul Caz  Al doilea caz  Capitolul 1. Introducere in Packet Tracer 4.1 Activitatile de laborator sunt o parte importanta a educatiei in domeniul retelelor. Totusi, echipamentul de laborator poate fi o resursa rar intalnita. Packet Tracer furnizeaza simularea vizuala a echipamentelor si a proceselor de retea pentru a compensa provocarile lipsei de echipament. Desi sunt valabile si alte produse de simulare a echipamentelor Cisco, ele nu includ avantajele vizuale din Packet Tracer. Aceasta tehnologie este o cale noua si interesanta pentru a extinde experientele de predare si invatare peste limitele unui laborator traditional. Packet Tracer va ajuta sa rezolvati unele provocari uzuale cu care administratorii de retea se confrunta zilnic, in acelasi timp ajutandu-ne sa exploram noi frontiere in retelistica….