Proiectarea Si Implementarea Unei Baze de Date Pentru Gestiunea Activitatii S.c. Real Invest S.r.l

Lista tabelelor și a figurilor

Figura 1 Modelul Client-Server 4

Figura 2 Arhitectura Model-View-Controller 10

Figura 3 Modelul de dezvoltare de tip Cascadă 15

Figura 4 Diagrama Flow-Chart 17

Figura 5 Diagrama Cazurilor de utilizare 1 23

Figura 6 Diagrama Cazurilor de utilizare 2 24

Figura 7 Diagrama Cazurilor de utilizare 3 25

Figura 8 Schema normalizată a bazei de date 31

Figura 9 Diagrama Gantt 32

Figura 10 Formularul de înregistrare 36

Figura 11 Formularul de adăugare de produse noi 39

Introducere

În ziua de azi, este foarte important de știut faptul că, un rol destul de însemnat în dezvoltarea unei afaceri constă în prezența acesteia pe web. Site-ul web este un instrument al afacerii, o extensie virtuală a unei entități reale, și care păstrează caracteristicile entității pe care o reprezintă în spațiul virtual.

Aplicația pe care am ales să o dezvoltăm, constă în creearea unui magazin în spațiul virtual. Acest magazin virtual va reprezenta interesele S.C. Real-Invest S.R.L. în mediul on-line, fiind o extensie a magazinului fizic, de la care site-ul își moștenește domeniul de activitate și caracteristicile principale.

Capitolul 1 – Noțiuni teoretice

1.1Rolul și importanța unui site web

Un site web este o colecție de fișiere care sunt postate pe un server, și oferă vizitatorilor diferite informații sau facilități, dupa cum a fost programat de către autor.

Explozia tehnologică din ultimi ani, a dus la o creștere masivă în popularitate a World Wide Web, astfel că, de la inventarea lui în anul 1989, a ajuns ca în anul 2013 să se ajungă la un număr de 759 de milioane de site-uri, dintre care 510 milioane sunt active, fiind accesate de peste două miliarde de utilizatori din întreaga lume, conținutul la care utilizatorii au acces nu poate fii descris decât folosind adjectivul, imens. În anul 2013, Romania a depășit numărul de 10 milioane de utilizatori, fiind pe locul cinci în Europa ca număr de utilizatori.

Potențialul mediului virtual a fost rapid sesizat de către antreprenori, astfel ca s-a ajuns la nașterea fenomenului de business on-line. În acest fel, paginile web au fost influențate de conceptele de marketing.

Cele mai importante concepte de marketing care se aplică in cazul site-urilor web, sunt:

– conceptia de vânzare, conform căreia un site reprezintă suportul prin care se execută o tranzacție;

– concepția de marketing, conform căreia un website reprezintă suportul prin care o organizație identifică nevoile, dorințele consumatorilor vizați, și feedback-ul consumatorilor actuali;

În prezent, peste 75% dintre persoanele aflate în mediul de afaceri, folosesc website-urile ca pe un instrument al afacerii acestora. Astfel, un site trebuie să îndeplinească, concomitent mai multe funcții, intre care cele mai reprezentative sunt:

Funcția informativă

Funcția de marketing

Funcția de promovare

Conform funcției informative, site-ul trebuie să prezinte utilizatorilor informații despre companie, de exemplu: domeniul de activitate, informații de contact, detalii despre produse sau serviciile prestate, portofoliu, formular de feedback.

Conform funcției de marketing, site-ul web devine automat un instrument de publicitate, deoarece acesta conține toate informațiile despre activitatea companiei. Site-ul poate sa ia forma unui magazin on-line, site corporativ sau promo site.

Funcția de promovare îi oferă unui site rolul de carte de vizită. În cadrul acestui tip de site se prezintă informatii generale despre companie.

Pentru ca un site să atingă toate scopurile propuse, este necesar ca acesta să indeplinească următoarele condiții:

Să păstreze un caracter dinamic, receptiv și flexibil;

Să aibă un design specific domeniului de activitate;

Să includă datele de contact ale companiei;

Să fie specificate cu exactitate prețurile produselor și serviciilor prestate clienților;

Să se actualizeze în permanență conținutul site-ului pentru a nu furniza date eronate clienților și utilizatorilor site-ului;

1.2 Modelul client-server

Termenul de client-server provine de la metoda tradițională de accesare a unui computer central, denumit server, de către computere aflate la distanță. Serverele utilizează baze de date relaționale în stocarea și întreținerea datelor între care există referințe.

Modelul client-server stă la baza tuturor aplicațiilor electronice și serviciilor Internet. Clientul, în general, rulează calculatorul utilizatorului și este folosit pentru a accesa informații sau alte aplicații din cadrul rețelei Internet.

Arhitectura client-server este o arhitectură de rețea, în care fiecare calculator sau proces din rețea este client sau server. Aceast tip de arhitectură împarte o aplicație în trei componente de bază: clientul, infrastructura rețelei și serverul.

Figura 1 Modelul Client-Server

Componenta client interacționează cu utilizatorul și în acest tip de arhitectură, are două roluri: interfața cu utilizatorul, care mai este numita logica prezentării și logica aplicației. Într-o aplicație client-server, clientul conține partea de prezentare, lucrul efectuat de aplicație și manipularea datelor.

Logica prezentării, se referă la partea unei aplicații care are rolul de a asigura coordonarea interacțiunii dintre utilizator și aplicație și include detalii privind afișarea tuturor informațiilor pe ecranul utilizatorului. De asemenea, logica prezentării mai îndeplinește rolul de preluare a datelor de la utilizatori.

Logica aplicației, face referire la acea parte a programului care decide ce metode trebuie să se execute în situații diferite și, implementează regulile afacerii. Această componentă mai este cunoscută și sub denumirea de logica afacerii, deoarece, ea reprezintă acea parte din program care implementează regulile afacerii. În funcție de tipul arhitecturii client-server, logica aplicației poate fi implementată în totalitate pe calculatorul server, sau ea poate fi distribuită între client și server.

Componenta server are rolul de a furniza servicii și informații utilizatorilor. Funcția principală a serverului este de a administra accesul la baza de date. Calculatorul server sortează și selectează datele cerute de client, și reglementează permisiunile clienților în scopul modificării datelor din baza de date.

Arhitectura client-server a apărut ca o consecință a limitărilor arhitecturii file-sharing. Această arhitectură înlocuiște serverul de fișiere cu un server de baze de date. Datorită implementării unui sistem de gestiune al bazelor de date, cererile utilizatorilor pot fi soluționate direct, reducându-se totodată traficul pe rețea prin furnizarea datelor strict necesare utilizatorului, și nu a întregului fișier. În acest mod, se îmbunătățește actualizarea multi-user direct prin intermediul unei interfețe utilizator grafice front-end către o bază de date partajată. Deoarece arhitectura client-server este o arhitectură stratificată, straturile pot fi proiectate independent unul față de celălalt și realizate de diferiți specialiști, dar care trebuie să se asigure că legăturile dintre aceste straturi, numite interfețe, sunt proiectate corect.

Arhitectura client-server are mai multe tipuri, dar toate prezintă în comun anumite avantaje și dejavantaje ale utilizării acestora.

Dintre avantajele utilizării arhitecturi client-server amintim:

Centralizarea datelor

Ușurința cu care se poate face managementul datelor

Sistemele pot fi foarte ușor updatate și extinse în continuare

Accesibilitatea

Posibilitatea de a face back-up bazei de date

Securitatea

Cele mai însemnate dezavantaje ale acestui tip de arhitectură sunt:

Costuri relativ mari de creeare a sistemului

Necesitatea unor oameni specializați pentru mentenanță

Prea multe cereri de la clienți în același timp poate duce la congestionarea rețelei

Complexitatea

1.3 Sistemul de Gestiune a Bazei de Date

Termenul de baze de date apare în anul 1967 și reprezintă o colecție de informații corelate despre subiectul studiat, relațiile logice dintre aceste informații și tehnicile de prelucrare corespunzătoare.

Sistemul de gestiune a bazelor de date, denumit pe scurt S.G.B.D. reprezintă sistemul de programe care permite construirea bazelor de date, introducerea de înregistrari în bazele de date și dezvoltarea de aplicații privind bazele de date, permițând astfel accesul utilizatorului la date printr-un limbaj de nivel înalt, apropiat modului obișnuit de operare. Sistemul de gestiune a bazelor de date reprezintă o interfață între utilizator și sistemul de operare.

Orice sistem de gestiune a bazelor de date conține:

– un limbaj de descriere al datelor, cu ajutorul căruia, avem posibilitatea de a descrie structura bazei de date, componența, relațiile dintre componente, drepturile de acces al utilizatorilor la baze de date;

– limbajul de cereri este limbajul în care se scriu programele pentru realizarea prelucrării datelor;

– limbajul de prelucrare a datelor, care permite operații asupra bazei de date, cum ar fi încărcarea bazei de date, inserarea, ștergerea, căutarea sau modificarea unui element, realizarea de statistici.

Principalele sarcini ale gestionarului bazei de date sunt:

– reducerea redundanței prin identificarea informațiilor comune și alcătuirea corespunzătoare a aplicațiilor;

– eliminarea inconsistențelor ce rezultă din reducerea redundanței;

– utilizarea simultană a datelor de la mai mulți utilizatori;

– standardizarea informațiilor;

– asigurarea securității bazei de date prin acordarea și urmărirea modului de acces al utilizatorilor la componentele bazei de date;

– asigurarea integrității bazei de date;

– asigurarea sincronizării în cazul utilizării simultane a bazei de date de mai mulți utilizatori sau a distribuirii informației pe mai multe sisteme.

În funcție de modul de exploatare a bazei de date, utilizatorii se împart în următoarele clase:

– utilizatorii obișnuiți sunt utilizatorii care obțin informațiile fără a avea cunoștințe de programare;

– programatorii de aplicații scriu programe în limbajul de cereri, acestea sunt apoi compilate și memorate în fișiere program, putând fi lansate în execuție prin invocarea numelui asociat lor.

Administratorul bazei de date este persoana care stabilește structura inițială a bazei de date și procedura prin care se vor stoca date la nivel fizic, acordă utilizatorilor dreptul de acces la baza de date sau părți ale ei, stabilește condițiile prin care se asigură securitatea și integritatea datelor, modifică structura bazei de date, asigură întreținerea bazei de date prin efectuarea de copii periodice și reconstituind baza de date în cazul în care au apărut erori și răspunde de modul de utilizare a bazei de date.

Cele mai multe Sisteme de Gestiune a Bazelor de Date conțin și o colecție de utilitare folosite în diferitele aplicații, cum sunt:

– procesoare de limbaje de cereri;

– editoare de rapoarte;

– subsisteme de reprezentări grafice;

– posibilități de lucru tabelat;

– procesoare de limbaje naturale;

– programe statistice;

– generatoare de aplicații.

1.3.1 Microsoft SQL Server

Limbajul SQL este un set de comenzi și operatori de gestiune a bazelor de date relaționale. Standardul pentru limbajul SQL a fost elaborat în anul 1992 de către Organizația Internațională de Standardizare ISO și Institutul Național American de Standarde ANSI și poartă denumirea de SQL-92.

SQL este un acronim pentru Structured Query Language, adică, Limbaj Structurat de Interogare. Limbajul SQL este destinat pentru manipularea datelor în baze de date relaționale , determinarea structurii bazei de date și dirijarea cu drepturile de acces la date într-un mediu cu mulți utilizatori.

Microsoft SQL Server, este un sistem de gestiune al bazelor de date relaționale. Acesta folosește o variantă a limbajului SQL, Transact-SQL.

1.4 Modelul arhitectural MVC

Modelul arhitectural Model-View-Controller, în literatura de specialitate cunoscut și sub prescurtarea de MVC, a apărut ca o necesitate de a transpune metodele tradiționale de gestionare a datelor în mediul virtual, mai exact a apărut in scopul de a ușura modul de lucru al utilizatorilor respectând aceleași principii de bază și diferențiindu-se prin instrumentele folosite

Arhitectura Model-View-Controller a fost descrisă pentru prima oara in 1979 de catre Trygve Reenskaug care pe vremea aceea lucra la Smalltalk din cadrul Xerox PARC. Implementarea originala este descrisa in detaliu in lucrarea Applications Programming in Smalltalk-80: How to use Model–View–Controller.

Principiul care stă la baza conceptului Model-View-Controller este împărțirea responsabilităților.

Modelul se ocupă de comportarea și datele aplicației. Acesta răspunde la cereri despre starea sistemului, la cereri de schimbare de stare și notifică utilizatorul atunci când aceste schimbări au avut loc pentru ca acesta să poată reacționa.

Viewul transpune modelul într-o formă care permite o interacționare ușoară, în mod tipic o interfață vizuală. Pot exista mai multe view-uri pentru un singur model ale căror scopuri diferă.

Controllerul primește input de la utilizator și initiază un răspuns în urma cererilor către obiectele model. Controller-ul este cel care controlează celelalte două clase de obiecte, view și model, dându-le instrucțiuni să execute operații pe baza input-ului primit de la utilizator.

O aplicație dezvoltată pe principiile MVC poate fi o colecție de triade model-view-controller, fiecare având responsabilitatea unui element diferit al interfeței cu utilizatorul.

Arhitectura model-view-controller este des întâlnită în aplicații web unde view-ul este codul HTML generat de aplicație. Controllerul primește variabile GET și POST ca și input și decide ce să faca cu acestea, trimițându-le mai departe modelului. Modelul, care conține logica de business și regulile aferente, poate efectua operațiile necesare asupra datelor pentru a putea permite aplicației generarea codului HTML mai sus menționat prin engine-urile de template, pipeline-uri XML, cereri de tip Ajax.

Modelul nu este neapărat doar o bază de date, fiind adesea atât baza de date cât și logica de business necesară pentru a manipula datele în interiorul aplicației. Multe aplicații folosesc un mecanism persistent de stocare a datelor. Arhitectura MVC, nu specifică în mod explicit nivel de acces la date tocmai pentru că este de la sine înțeles faptul că acesta se află încapsulat in model. În unele aplicații simple care au puține reguli de business logic impuse, model-ul se poate limita doar la o bază de date și la funcționalitățile oferite de aceasta. Viewul, nu are sarcina doar de a afișa informațiile, el având un rol important și în interacțiunea cu utilizatorul. Interfata grafică este cea care se ocupă și de preluarea inputului și de măsurile luate pentru ca acesta sa fie corect.

Controllerul este adesea confundat cu aplicația în sine, pe când rolul controllerului este de a dirija datele între celelalte două clase de obiecte. Într-adevăr, se pot executa multe operații asupra datelor de către model, însă, aceste operații țin de formatul în care se prezintă datele la un moment dat. Adesea se întâlnește cazul în care datele afișate de la utilizator diferă semnificativ de cele stocate in baza de date. Aceste diferențe se datorează conversiilor ce pot fi aplicate asupra datelor de către controller pentru a facilita traficul de informație între componente.

Fiecare clasă de obiect are anumite expectative definite în ceea ce priveste formatul datelor, ori aceste transformări de format trebuie realizate automat pentru a menține un flux constant de date, degrevănd celelalte clase de grija conversiilor și asigurând aplicația că fiecare modul primeste ceea ce așteaptă.

Modul de funcționare a unei aplicații dezvoltate dupa arhitectura Model-View-Controller decurge în felul următor:

Userul interacționează cu interfața;

Controllerul primește acțiunea apăsării butonului și o convertește într-o acțiune pe înțelesul modelului;

Controllerul notifică modelul de acțiunea utilizatorului, urmând de obicei o schimbare a stării model-ului;

Un view interogheaza modelul pentru a genera o interfață corespunzătoare;

Interfața așteaptă acțiuni suplimentare din partea utilizatorului, reluându-se astfel ciclul;

Figura 2 Arhitectura Model-View-Controller

Liniile solide reprezintă asocieri directe, iar liniile punctate reprezintă asocieri indirecte

Capitolul 2 – Analiza și Proiectarea aplicației

Acest sistem informatic, este proiectat în exclusivitate pentru S.C. Real-Invest S.R.L., și are dreptul de a folosi marca și logo-ul firmei, din moment ce acest sistem informatic îî reprezintă interesele, fiind adresat clienților frmei, și a potențialilor clienți de asemenea.

Succesul unei aplicații este determinat în mare masură de implicarea ambelor părți în proiectarea ei, atât a beneficiarului cât și a celui care realizează aplicația. Datorită evoluției tehnologice rapide din zilele noastre firmele trebuie să își dezvolte în permanență sistemul informatic pentru a obține un avantaj față de competitorii direcți.

Un sistem informatic reprezintă un ansamblu structurat de elemente intercorelate funcțional pentru armonizarea procesului de obținere a informațiilor și pentru fundamentarea deciziilor.

Sistemul informatic este inclus în cadrul sistemului informațional și are ca obiect deactivitate procesele de culegere, verificare, transmitere, stocare și prelucrare automată a datelor.

Un sistem informatic cuprinde următoarele elemente:

Baza informațională a unui sistem informatic, cuprinde datele asupra prelucrării, fluxurile informationale, sistemele și nomenclatoarele de coduri.

Baza tehnică a sistemului informatic este constituită din totalitatea mijloacelor tehnice de culegere, transmitere, stocare și prelucrare a datelor, în care locul principal revine calculatorului electronic. Un sistem informatic trebuie să dispună, în afară de calculatorul electronic, și de echipamente de culegere, verificare, transmitere și stocare a datelor.

Sistemul de programe cuprinde totalitatea produselor program care asigura funcționarea sistemului informatic, în concordanță cu funcțiunile și obiectivele care i-au fost stabilite. Intră în componența sistemului de programe atât programele de bază, cât și cele aplicative.

Baza științifiico-metodologică, este formată din algoritmi, formule, modele matematice ale proceselor și fenomenelor economice, metode și tehnici de realizare a sistemelor informatice.

Cadrul organizatoric este specificat în regulamentul de organizare și funcționare al unității în care funcționează sistemul informatic.

Ciclul de viață al unui sistem informatic, are mai multe etape:

Analiza de sistem

Proiectarea sistemului

Implementarea

Testarea

Instalarea

Mentenanța

2.1 Analiza de sistem

Analiza de sistem reprezintă prima etapa din viața unui sistem informatic. Este un proces vital în creearea sistemelor informatice din ziua de azi, și presupune identificarea actorilor, delimitarea spațiului problemei, extragerea cerințelor și trasarea obiectivelor.

În această etapă, se examinează posibilitatea realizării unui nou sistem informatic sau modificării sistemului existent. Scopul principal al acestei etape este de a raspunde la urmatoarea intrebare: este noul sistem pe care dorim sa-l introducem in organizatie oportun din punct de vedere tehnic, economic si operational?

Fiind o aplicație dezvoltată pentru un client anume, este necesară analiza activității acestuia, a mediului în care își desfășoară activitatea, a modului în care își desfășoară activitatea. De asemenea, subiecte de analiză vor fi și competitorii direcți și planurile de viitor ale clientului.

2.1.1 Context

S.C. Real-Invest S.R.L. este o societate de dimensiuni mici, care are ca obiect de activitate comercializarea produselor din categoria IT și office, desfășurându-și activitatea în orașul Zalău, unde dispune de un punct de lucru care încorporează un magazin.

Din punct de vedere al strategiilor comerciale, entitatea în cauză se bazează pe clienții fideli pe care și i-a câștigat pe parcursul a celor peste 16 ani de activitate. Principala piață de desfacere este reprezentată de piața produselor și serviciilor IT și office din Zalău, dar și din localitățile din apropiere.

Pentru a realiza activitatea de comerț S.C. Real-Invest S.R.L. folosește doi angajați, fiecare cu atribuții diferite. O persoană este situată la punctul de lucru, având sarcina de a informa clienții potențiali de spre produsele și serviciile lor. A doua persoană, este însărcinat în primul rând cu livrarea produselor și cu preluarea comenzilor direct de la client.

O altă modalitate prin care societatea poate oferi detalii și a primi comenzi, este prin poșta electronică, metodă care este utilă mai ales în cazul clienților aflați la o distanță considerabilă de punctul de lucru al firmei.

Fațeta subiect

Părțile implicate, care au fost identificate pentru acest sistem sunt următoarele: angajații companiei, clienții fideli ai companiei, clienții potențiali ai companiei, furnizorii companiei, partenerii de afaceri ai companiei și directorul companiei.

Fiecare angajat al firmei, indiferent de activitatea pe care o desfășoară, au tangență cu aplicația dezvoltată, deoarece pentru a inregistra vânzări mai mari, angajații trebuie să promoveze produsele, să ofere consultanță clienților, și să țină legătura cu partener de afaceri.

Clienții fideli ai firmei respective, sunt persoanele atât fizice cât și juridice, care au apelat în mod regulat la serviciile firmei. Utilitatea aplicației pentru clienții fideli, este dată de posibilitatea de a se informa într-un timp cât mai scurt despre ofertă, și diverse informații despre firmă.

Clienții potențiali, reprezintă, în acest caz, persoanele interesate în achiziționarea de produse IT și de birotică. Pentru aceștia aplicația are rolul de a îî informa de existența firmei, a datelor de contact, și a ofertei curente.

Partenerii de afaceri, reprezintă persoanele care au o relație de colaborare cu firma, cum ar fi: agenții de advertising, instituții publice;

Pentru furnizori, această aplicație nu are o relevanță prea mare, deoarece, în acest caz, ei sunt cei care trebuie să se promoveze, singura parte cu adevărat importantă pentru furnizori este aflarea datelor de contact.

Fațeta utilizare

Acest sistem informatic este adresat în mare măsură persoanelor aflate în exteriorul companiei, persoane interesate de serviciile companiei. Aceștia sunt utilizatorii aplicației, în timp ce compania este beneficiarul.

Site-ul poate fi privit din două perspective: cea de vizitator, și cea de utilizator.

Vizitatorii, au acces doar la informații de bază, cum ar fi adresa de contact, un showcase al companiei, și o scurtă prezentare a produselor comercializate. Vizitatorii nu au acces la oferta detaliată și nu au posibilitatea de a efectua comenzi on-line.

Utilizatorii, sunt vizitatorii care au completat un formular de inregistrare, obținând astfel drepturi de utilizator. După procesul de autentificare, aceștia au acces la toate funcționalitățile site-ului.

Fațeta IT

Aplicația poate fi accesată de pe orice device conectat la internet, prin intermediul unu browser web. Este de preferat să nu se folosească telefoane mobile, deoarece, site-ul nu este deocamdata optimizat pentru acestea, cel mai bun randament obținându-se prin folosirea PC-urilor.

Pentru dezvoltarea aplicației, s-a folosit Microsoft SQL Server Compact 4 pentru realizarea bazei de date, și setul de instrumente Microsoft Visual Studio 2010 Professional pentru dezvoltarea de aplicații ASP .NET MVC 4.

Fațeta dezvoltare

Pentru proiectarea acestei aplicații, am recurs la modelul de dezvoltare de tip cascadă.

Modelul de tip Cascadă, a fost folosit pentru prima dată de către Winston W. Royce în anul 1970. Modelul de tip Cascadă, este un proces secvențial de creare, utilizat deseori în dezvoltarea sistemelor informatice, în care procesul este considerat ca o cădere continuă – ca o cascadă; de unde îsi ia și numele – prin toate fazele procesului.

Figura 3 Modelul de dezvoltare de tip Cascadă

Acest model se poate aplica în general proiectelor simple, de mică anvergură. Etapele sunt parcurse pe rănd, în ordinea naturală. De abia după ce o etapă este complet încheiată se poate trece la următoarea.

Din elaborarea unui model de dezvoltare de tip cascadă rezultă următorul set de documente:

Document de cerințe

Planul proiectului

Document de design

Plan de test

Cod final

Manuale software, manuale de instalare și de utilizare

Raporturi de evaluare

Folosirea modelul de dezvoltare de tip cascadă prezintă următoarele avantaje:

Ușor de explicat utilizatorilor.

Etapele și activitățile sunt bine definite.

Este utilă planificarea și programarea proiectului.

Verificarea în fiecare etapă asigură detecția timpurie a erorilor/neînțelegerilor.

Ușor de manevrat datorită rigidității modelului.

Etapele sunt procesate și completate pe rând.

Funcționează bine pentru proiectele mai mici unde necesitățile sunt foarte bine înțelese sau pentru automatizarea unor sisteme deja existente.

Pe de altă parte, modelul de tip cascadă are și unele neajunsuri, dintre care amintim:

Ajustarea scopului în timpul ciclului de viață poate omorî un proiect.

Nu se introduce software funcțional până spre finalul ciclului de viață.

Cantități mari de risc și nesiguranță.

Model slab pentru proiectele complexe și obiect-orientate.

Model slab pentru proiectele lungi și continue.

Model slab acolo unde necesitățile au un risc moderat spre ridicat de a se schimba.

2.1.2 Delimitarea sistemului de contextul său

Părțile implicate, care au fost identificate pentru acest sistem sunt următoarele:

Angajații companiei, clienții companiei, clienții potențiali, furnizorii, partenerii de afaceri, directorul companiei, internauții, dezvoltatorul aplicației.

Procesele care se află în strânsă legătură cu aplicația, sunt indispensabile bunei funcționări ale aplicației, sunt întreprinse de utilizatorii aplicației, care vor comanda produse on-line. Aceste procese, vor afecta direct aplicația, formularul de înregistrare va fi validat de către aplicație, contabilizarea stocului de produse existent se va face cu ajutorul sistemului de gestiune a baze de date, integrat în aplicație. Procesul de validare și înregistrare a comenzilor, se împarte în două parți, verificarea disponibilității produselor și înregistrarea propriu-zisă a comenzilor.

Pentru a putea accesa aplicația, utilizatorii vor avea nevoie de un device conectat la internet. Este foarte important, ca această conexiune la internet să fie stabilă, doarece, aplicația folosește un sistem de login, care odată deconectat de la internet, se va întrerupe sesiunea, rezultând într-un logout implicit.

O mențiune foarte importantă. Odată ce un client face o comandă folosind aplicația, va fi contactat, în mod telefonic sau prin e-mail, de către un angajat al companiei pentru a confirma comanda.

2.1.3 Activități și procese

Activitățile principale ale companiei care au legătuă directă cu aplicația, intră în responsabilitatea angajaților firmei, care are asignat taskurile de a actualiza baza de date, astfel încât să reflecte situația reală a stocului de produse, mentenanța sistemului, contactarea clienților în având în vedere confirmarea comenzii.

Pentru o funcționare corectă, aplicația se bazează atât pe activitățile angajaților companiei, cât și pe acțiunile utilzatorilor.

Figura 4 Diagrama Flow-Chart

2.2 Cerințe de sistem

2.2.1 Surse de cerințe

Sursele de cerințe pentru elaborarea aplicației sunt: documentația existentă și stakeholderii. În cadrul documentației existente se includ: corespondența cu clienții, feedbackul clienților și diagrame.

Stakeholderii, reprezintă persoanele interesate de aplicație, și au un rol important în definirea cerințelor. În categoria stakeholderilor, intră și actorii principali cărora se adresează aplicația.

O sursă de cerințe foarte importantă o reprezintă diagramele asociate sistemului, printre care se află diagrama de flux de date și diagrama cazurilor de utilizare.

2.2.2 Elicitația cerințelor

În procesul de elicitație a cerințelor, pentru a avea o avea o viziune mai clara asupra aplicației și pentru a satsiface nevoile beneficiarului, am folosit două metode de elicitație a cerințelor. Am ales metoda cazurilor de utilizare și metoda interviului.

Metoda Interviului

Metoda interviului este o oportunitate foarte bună pentru a intra în contact direct cu beneficiarul aplicației, find o metodă de extragere a cerințelor foarte utilă și, de asemenea foarte folosită.

Pentru a afla situația actuală a beneficiarului, a motivelor pentru care are nevoie de aplicație, așteptările acestuia de la aplicație și a funcționalităților principale pe care aceasta trebuie să le înglobeze, am realizat un set de întrebări adresate beneficiarului.

Aceste întrebări sunt:

De ce aveți nevoie de o aplicație de acest tip?

Deoarece, vânzările au scăzut în ultimul timp, iar sunt de părere că, internetul este un mediu bun de promovare.

Cui îi este adresată aplicația?

Aplicație este adresată tuturor clienților firmei, clienților potențiali, dar și utilizatorilor de internet neinteresați deocamdată de serviciile noastre, astfel, firma noastră își poate crește notorietatea.

Cine sunt stakeholderii sistemului?

Stakeholderii sunt clienții firmei, furnizorii firmei, utilizatorii site-ului, vizitatorii site-ului.

Există mai multe moduri de utilizare a aplicației?

Există două moduri de a folosi aplicația. În calitate de utilizator autentificat, se vor pune la dispoziție toate funcționalitățile site-ului. În calitate de vizitator, va fi restricționat accesul la unele funcționalități, dar există posibilitatea de creeare a unui utilizator.

Ce așteptări există pentru utilizabilitate?

Site-ul trebuie să aibă o interfață prietenoasă, să fie ușor de folosit de către utilizatori și vizitatori deopotrivă.

Ce așteptări există pentru performanță/precizie?

Aplicația trebuie să aibă performanțe ridicate. Trebuie să fie compatibilă cu majoritatea browserelor, și sistemelor de pe care este accesată. Site-ul trebuie să livreze în cel mai scurt timp informațiile cerute de către utilizatori și să fie în continuă comunicare cu baza de date.

Alte mențiuni.

Aplicația trebuie să fie ca o extensie a magazinului real, păstrând astfel toate trăsăturile mărcii, să respecte principiile conseptului de branding.

Metoda cazurilor de utilizare

A doua metodă folosită în procesul de elicitație a cerințelor, este metoda cazurilor de utilizare.

Actorii sistemului sunt:

Administratorul, reprezintă angajatul companiei care se ocupă de verificarea informațiilor introduse de utilizatori, validează formularele de înregistrare de noi utilizatori, verifică și confirmă comenzile utilizatorilor și verifică dacă baza de date reflectă stocul real de produse.

Vizitatorul, este persoana care accesează site-ul, dar nu a trecut prin procesul de autentificare, și poate folosi astfel, doar o parte din facilitățile site-ului. Acesta are posibilitatea de a completa un formular de înregistrare, care, dacă este completat cu date valide duce la obținerea unui cont de utilizator.

Utilizator, este persoana care a obținut un cont de utilizator, și a trecut prin procesul de autentificare. Odată logat, poate explora toate funcționalitățile site-ului.

Cazurile de utilizare

Homepage

Actori: Vizitatorii, Utilizatorii, Administrator;

Descriere: Pagina de pornire a site-ului, accesibilă oricărui tip de actor. Prezintă meniul principal al site-ului, posibilitățile de logare și o galerie cu cele mai văndute cinci produse

Vizualizare produse

Actori: Vizitatorii, Utilizatorii, Administrator;

Descriere: Aplicația permite tuturor persoanelor care o accesează, să vadă produsele aflate în oferta actuală, structurată pe categorii și producători.

Vizualizare informații contact

Actori: Vizitatorii, Utilizatorii, Administrator;

Descriere: Este permisă vizualizarea informațiilor de contact oricărei persoane care navighează această pagina.

Creeare cont utilizator

Actori: Utilizatorii;

Descriere: Sistemul permite creearea de coturi de utilizator. Pentru a obține un cont de utilizator, este necesar să se completeze formularul de înregistrare cu numele de utilizator dorit, adresa de e-mail, parola și confirmarea parolei.

Precondiții: Pentru a putea creea un cont de utilizator, persoana în cauză trebuie să aibă un cont de e-mail.

Autentificare cont utilizator

Actori: Utilizatorii;

Descriere: pentru a beneficia de statutul de utilizator, aceștia trebuie să completeze formularul de autentificare. Acesta conșine două cămpuri: nume utilizator și parola;

Precondiții: Persoana în cauză trebuie să aibă un cont de utilizator.

Adăugare produse în coșul de cumpărături

Actori: Vizitatorii, Utilizatorii;

Descriere: Vizitatorii și utilizatorii au posibilitatea de a efectua comenzi on-line, folosind această aplicație. Astfel, după ce au vizualizat produsele aflate în oferta curentă, la efectuarea unui click pe butonul „Adaugă în coș” aferent produsului dorit.

Precondiții: În condițiile în care persoana respectivă nu este logată, la efectuarea comenzii, va fi redirecționat către pagina creeare cont utilizator.

Ștergere produse din coșul de cumpărături

Actori: Vizitatorii, Utilizatorii;

Descriere: După adăugarea produselor dorite în coșul de cumpărături, persoanele în cauză au posibilitatea de a șterge din coș produsele pe care nu le mai doresc.

Precondiții: Trebuie să existe produse în coșul de cumpărături.

Efectuare comenzi

Actori: Utilizatorii;

Descriere: Utilizatorilor le este oferită posibilitatea de a comanda produse din magazinul virtual. Pentru a finaliza comanda, aceștia vor trebui să completeze formularul informații livrare. După efectuarea comenzii, coșul de cumpărături se va goli automat.

Precondiții: Pentru a efectua o comandă, utilizatorii trebuie să fi adăugat în prealabil produse în coșul de cumpărături.

Autentificare cont administrator

Actori: Administrator;

Descriere: Pentru avea acces la drepturile de administrator, acesta trebuie să completeze formularul de înregistrare aferent administratorului.

Precondiții: Pentru a completa formularul de autentificare, persoana în cauză trebuie să dețină un cont de administrator.

Gestionarea comenzilor

Actori: Administrator;

Descriere: Administratorul are dreptul de a gestiona comenzile făcute de către utilizatori.

Precondiții: Să existe comenzi efectuate de către clienți.

Gestionarea stocurilor

Actori: Administrator;

Descriere: Administratorul are control asupra stocului vitual. Acest caz de utilizare, poate fi împărțit în alte trei cazuri de utilizare

Gestiunea producătorilor

Descriere: Produsele pot fi sortate după producător. Administratorul poate adăuga și șterge producători din baza de date.

Gestiunea categoriilor

Descriere: Produsele pot fi sortate după categoria din care fac parte. Și în acest caz, administratorul este responsabil de actualizarea categoriilor de produse existente.

Gestiunea produselor

Descriere: Administratorul are control asupra stocului de produse. Acesta poate adăuga, edita și șterge produse.

Precondiții: Persoana în cauză trebuie să fie logată cu contul de administrator.

Figura 5 Diagrama Cazurilor de utilizare 1

Figura 6 Diagrama Cazurilor de utilizare 2

Figura 7 Diagrama Cazurilor de utilizare 3

2.3 Formularea cerințelor

În dezvoltarea aplicației, s-a ținut cont de un set de cerințe pe care aplicația trebuie să le îndeplinească. Au fost luate în vedere cerințele funcționale atât la nivel general, cât și detaliate, cerințele caltative importante pentru utilizatori și dezvoltatori, si eventualele constrângeri.

Cerințele funcționale la nivel general, văzute din perspectiva utilizatorului sunt:

Sistemul trebuie să permită înregistrarea de utilizatori noi

Sistemul trebuie să impună autentificarea pentru utilizatori

Sistemul trebuie să permită înregistrarea de comenzi on-line de către utilizatorii autentificați

Sistemul trebuie să afișeze datele de contact ale firmei

Cerințele funcționale detaliate, văzute din perspectiva sistemului sunt:

Sistemul trebuie să permită accesul concurent pe site; mai mulți utilizator pot accesa site-ul în același timp

Sistemul trebuie să colecteze informațiile despre utilizatori prin folosirea formularelor Utilizatorii sunt obligați să introducă la înregistrare și la finalizarea comenzii username, parola, adresă de e-mail validă, nume și prenume, adresa, număr de telefon

Sistemul trebuie să introducă în baza de date informațiile colectate despre utilizatori

Sistemul trebuie să prezinte oferta actualizată a firmei

Utilizatorii au posibilitatea de a realiza un coș virtual de cumpărături

Totodată, utilizatorii au posbilitatea de a comanda produse on-line prin intermediul aplicației

Cerințele calitative importante pentru utilizatori sunt:

Disponibilitatea: Site-ul poate fi accesat 24 de ore pe zi, iar utilizatorii vor putea beneficia de toate funcționalitățile site-ului.

Eficiența: Sistemul folosește tehnologii foarte comune, ajunse la un nivel de testare și dezvoltare foarte ridicat, partea tehnologică a aplicației asigurănd o eficiență sporită.

Flexibilitate: Tehnologiile utilizate în dezvoltarea aplicației, îi dau un carcater flexibil foarte pronunțat. Aplicația poate fi foarte ușor modificată pentru a integra noi funcționalități, sau pentru a fi updatat în contextul în care vor apărea schimbări legislative sau de standarde

Integritate: Aplicația trebuie să fie sigură. Pentru a asigura integritatea datelor, se va face un back-up al bazei de date

Interoperabilitate: Site-ul trebuie să se integreze în sistemul actual al companiei. Aplicației îi va fi atribuit un administrator

Dependabilitate: Site-ul nu poate fi accesat decât de pe un calculator conectat la internet, și care are instalat un internet browser, de preferat Google Chrome sau Mozilla Firefox

Utilizabilitate: Aplicația este foarte ușor de folosit, având o interfață grafică user-friendly, cu meniul și căi de acces către funcționalități amplasate intuitiv

Cerințele calitative importante pentru dezvoltatori sunt:

Mentenabilitatea: Pentru a avea o aplicație funcțională 24 de ore pe zi, se ridică problema mentenanței a cărei costuri sunt ținute la un nivel minim. De asemenea, site-ul a fost proiectat astfel, încât să poată fi dezvoltat ulterior fără necesitatea înlocuirii unui număr mare de funcționalități. Structura site-ului permite adăugarea unor noi funcționalități fără riscul de a le compromite pe cele exostente

Testabilitatea: Testarea este necesară înainte de a pune aplicația în activitate. Este important ca aplicația să fie ușor de testat, să permită testarea pe componente pentru testarea anumitor funcționalități, precum și testarea în totalitate, și în forma finală a acestuia.

Portabilitatea: Site-ul este poate fi accesat de pe orice device conectat la internet. Este foarte importantă testarea de pe mai multe tipuri de device: telefon mobil, PC, smart-TV. Un alt factor de o importanță majoră este browserul folosit pentru accesarea aplicației. Funcționalitățile sunt accesibile de pe toate browserele importante, semnalându-se mici diferențe între acestea la vizualizarea galeriei de imagini

Din analiza interviului au rezultat următoarele constrângeri:

Site-ul să fie în limba română

Perioada în care trebuie finalizată aplicația: 3 săptămâni

Aplicația să fie în concordanță cu legislația în vigoare

2.4 Proiectarea generală a aplicației

2.4.1 Modelul conceptual

În urma analizei contextului în care se va afla aplicația, și a extragerii cerințelor stakeholderilor, se poate trece la următoarea etapă și anume proiectarea efectivă a sistemului informatic.

După analiza cerințelor clientului, se vor lua în considerare condițiile acestuia, astfel, se impune descompunerea aplicației pe componente:

Interfața grafică, care va avea în componență meniuri, linkuri, galerie de imagini, butoane, și care are rolul de a asigura o navigație facilă a site-ului de către utilizatori;

Baza de date, care va conține date despre stocul de produse, comenzile efectuate de utilizatori, informațiile de logare a utilizatorilor;

Un sistem de login care permite autentificarea utilizatorilor și a administratorului;

Un modul de administrare;

Un coș de cumpărături;

Un sistem de comenzi on-line;

Tabelul Products, reprezintă produsele aflate în stoc, și este caracterizat de:

ProductId; fiecarui produs îi este atribuit un ID unic;

CatgoryId; reprezintă ID-ul categoriei din care fiecare produs face parte;

ManufacturerId; corespunzător producătorului produsului respectiv;

Name; reprezintă denumirea produsului;

Price; semnifică prețul produsului;

Description; reprezintă descrierea produsului;

ProductPath;arată imaginea de prezentare a produsului;

Tabelul Manufacturers este corespunzătoare manufacturierilor de produse, fiind caracterizat de:

ManufacturerId; ID-ul producătorului, acesta fiind unic pentru fiecare producător;

Name; denumirea producătorului;

Country; țara de origine a producătorului;

Tabelul Categories, gestionează categoriile de produse, și este definit astfel:

CategoryId; ID-ul aferent categoriei; fiecare categorie va avea un ID unic;

Name; denumirea categoriei;

Description; descrierea categoriei;

Tabelul Carts reprezintă coșul de cumpărături și este caracterizat astfel:

RecordId; ID-ul înregistrării;

ProductId; reprezintă ID-ul produselor adăugate în coșul de cumpărături;

CartId; ID-ul coșului de cumpărături;

DateCreated; data creeării;

Tabelul Orders reprezintă comenzile efectuate fiind caracterizat de:

OrderId; ID-ul comenzii; fiecare comandă are un ID unic;

OrderDate; data comenzii;

Username; numele utilizatorului care a efectuat comanda;

FirstName; prenume;

LastName; nume;

Address; adresa;

City; orașul;

State; județul;

PostalCode; codul poștal;

Country; țara;

Phone; numărul de telefon;

E-mail;

Total; reprezintă valoarea totală a comenzii;

Tabelul OrderDetails, prezintă informații despre comenzile înregistrate, și este definit astfel:

OrderDetailID;

OrderID; ID-ul comenzii;

ProductID; ID-ul produsului;

Quantity; cantitate;

UnitPrice; preț unitar;

2.4.2 Normalizarea Datelor

Normalizarea reprezintă o tratare din jos în sus a proiectării bazelor de date, care începe prin examinarea relațiilor dintre atribute. Normalizarea, este procesul reversibil de transformare a unei relații în relații de structură mai simplă. Procesul de normalizare este reversibil datorită faptului că, nici o informație nu este pierdută în timpul transformării.

De obicei, normalizarea este executată sub forma unei serii de pași. Fiecare pas corespunde unei anumite forme normale, care are proprietăți cunoscute. Pe măsură ce se desfășoară normalizarea, relațiile devin în mod progresiv mai restrictive (mai puternice) ca format și mai puțin vulnerabile la anomaliile de reactualizare.

Normalizarea este procesul care urmărește:

Transformarea tabelelor în relații;

Înlăturarea redundanțelor;

Înlăturarea dependențelor interne între atributele unei relații, transformăndu-le în dependențe între tabelele obținute prin descompunere;

Înlăturarea deferitelor anomalii existente inițial, sau apărute în urma descompunerii tabelelor;

Asigurarea descompunerilor fără pierderi. Recompunând tabelele obținute în urma descompunerilor unui table trebuie să se ajungă la tabelul inițial;

Procesul de normalizare se fundamentează pe conceptele:

Dependență funcțională;

Dependență multivaloare;

Forme normale;

Prima formă normală:

O relație este în prima formă normală, dacă fiecare câmp este atomic și tabelul nu conține grupuri repetitive.

A doua formă normală:

O relație este în a doua dormă normală, dacă se află în prima formă normală și orice atribut care nu face parte din cheia primară, depinde funcțional total de cheia primară, prin urmare nici un atribut care nu face parte din cheia primară nu depinde funcțional de o parte a cheii primare.

A treia formă normală:

O relație este în a treia formă normală, dacă se află în cea de-a doua formă normală și între două atribute care nu sunt cheie nu există o dependență tranzitivă. Un atribut C depinde tranzitiv de atributul B dacă au loc dependențele funcționale între A și B, respectiv între A și C

2.5 Proiectarea interfeței grafice

Proiectarea aplicațiilor multimedia solicită separarea task-urilor repetitive de către executanți, utilizarea unor scripturi pentru accelerarea lor, ceea ce conduce la economie de timp, eficacitate și productivitate. Se recomandă concentrarea asupra unor sarcini bine precizate, ceea ce conduce la creșterea randamentului întregii echipe.

În procesul proiectării interfeței grafice, am încercat să respectăm căt mai îndeaproape cerințele beneficiarului. În urma extragerii cerințelor, am ajuns la o serie de necesități, pe care interfața grafică trebuie să le îndeplinească:

Meniul va fi prezent pe fiecare pagină a aplicației;

Formular de login pentru utilizatori;

Formular de login pentru administrator;

Înregistrarea se va face prin intermediul unui formular;

Cumpărarea produselor să se efectueze cu ajutorul coșului de cumpărături;

O caractersitică foarte importantă pentru interfețele grafice o reprezintă ergonomia și ușurința utilizării aplicației.

2.6 Diagrama Gantt de realizare a proiectului

Figura 9 Diagrama Gantt

Capitolul 3 – Implementarea aplicației

3.1 Baza de date

Pentru implementarea bazei de date, am folosit Microsoft SQL Server Compact 4. Deoarece aplicația în acest moment are menirea de a fi doar o simulare a site-ului care va fi publicat în viitor, baza de date este locală, este inclusă în proiect, având extensia .sdf.

Baza de date conține șase tabele, descrise după cum urmează:

Tabelul Products stochează cu ajutorul atributelor acestuia informații despre produsele aflate în stoc. Este format din următoarele câmpuri cu proprietățile acestora:

ProductId; int; not null; PRIMARY KEY;

CategoryId; int; not null; FOREIGN KEY;

ManufacturerId; int; not null; FOREIGN KEY;

Name; nvarchar(160); not null;

Price; numeric(18,2); not null;

Description; nvarchar(4000); not null;

ProductPath; nvarchar(4000); null;

Tabelul Manufacturers înmagazinează informații despre producători. Are în componența sa următoarele câmpuri:

ManufacturerId; int; not null; PRIMARY KEY;

Name; nvarchar(4000); null;

Country; nvarchar(4000); null;

Tabelul Categories ține evidența categoriilor de produse, și este compus din:

CategoriesId;int; not null; PRIMARY KEY;

Name; nvarchar(4000); null;

Description; nvarchar(4000); null;

Tabelul Carts va gestiona datele referitoare la coșul de cumpărături. În componența se se găsesc:

RecordId; int; not null; PRIMARY KEY;

CartId; nvarchar(4000); null;

ProductId; int; not null; FOREIGN KEY;

Count; int; null;

DateCreated; datetime; not null;

Tabelul Orders are rolul de a stoca date referitoare la comenzile efectuate de către utilizatori. Acesta are în componența sa:

OrderId; int; not null; PRIMARY KEY;

OrderDate; datetime; not null;

Username; nvarchar(4000); null;

FirstName; nvarchar(160); not null;

LastName; nvarchar(160); not null;

Address; nvarchar(70); not null;

City; nvarchar(40); not null;

State; nvarchar(40); not null;

PostalCode; nvarchar(10); not null;

Country; nvarchar(40); not null;

Phone; nvarchar(24); not null;

Email; nvarchar(4000); not null;

Total; numeric(18,2); not null;

Tabelul OrderDetails se folosește la gestionarea comenzilor efectuate. Este compus din:

OrderDetailId; int; not null; PRIMARY KEY;

OrderId; int; not null; FOREIGN KEY;

ProductId; int; not null; FOREIGN KEY;

Quantity; int; not null;

UnitPrice; numeric(18,2); not null;

3.2 Implementarea modulului utilizator al aplicației

După cum am precizat, persoanele care navighează conținutul acestui site sunt împărțiți în două categorii: utilizator și administrator. Utilizatorul este persoana care a trecut prin procesul de înregistrare.

3.2.1 Procesul de înregistrare

Pentru a se obține drepturi de utilizator al aplicației, este necesară completarea formularului de înregistrare cu date valide. Formularul de înregistrare este format din patru câmpuri care sunt obligatoriu de completat pentru a putea creea un cont de utilizator.

Modelul AccountModels, are rolul de a manipula datele în interiorul aplicației. Acesta are în componența sa, două clase: LogOnModel și RegisterModel. În efectuarea procesului de înregistrare, vom folosi RegisterModel, care are următoarele proprietăți:

UserName;

Email;

Password;

ConfirmPassword;

public class RegisterModel

{

[Display(Name = "Utilizator")]

[Required(ErrorMessage = "Completati utilizatorul")]

public string UserName { get; set; }

[DataType(DataType.EmailAddress)]

[Required(ErrorMessage = "Completati adresa de e-mail")]

[Display(Name = "E-mail")]

public string Email { get; set; }

[Required(ErrorMessage = "Completati parola")]

[StringLength(100, ErrorMessage = "Campul {0} trebuie sa aibe cel putin {2} caractere.", MinimumLength = 6)]

[DataType(DataType.Password)]

[Display(Name = "Parola")]

public string Password { get; set; }

[DataType(DataType.Password)]

[Display(Name = "Confirmare parola")]

[Compare("Password", ErrorMessage = "Cele doua parole nu se potrivesc")]

public string ConfirmPassword { get; set; }

}

}

Controllerul AccountControlers, are în componența sa metoda Register, care are rolul de a efectua autentificarea

public ActionResult Register(RegisterModel model)

{

if (ModelState.IsValid)

{

// Se incearca inregistrarea

MembershipCreateStatus createStatus;

Membership.CreateUser(model.UserName, model.Password, model.Email, "question", "answer", true, null, out createStatus);

if (createStatus == MembershipCreateStatus.Success)

{

MigrateShoppingCart(model.UserName);

FormsAuthentication.SetAuthCookie(model.UserName, false /* creeazaPersistentCookie */);

return RedirectToAction("Index", "Home");

}

else

{

ModelState.AddModelError("", ErrorCodeToString(createStatus));

}

}

return View(model);

}

Pentru interfața HTML, se folosește View-ul RegisterView, care conține un formular având rolul de a afișa informații și de a capta inputul utilizatorului.

Figura 10 Formularul de înregistrare

3.2.2 Procesul de autentificare/deautentificare

Asemănător procesului de înregistrare, și un succesor din punct de vedere al acțiunilor utilizatorilor al acestuia, procesul de autentificare folosește metoda LogOn din AccountController, care interacționează aspura LogOnModel din Account models. Informațiile sunt afișate și captate prin intermediul formalurui de autentificare. Deautentificare se face prin meoda LogOff din AccountController

3.2.3 Magazinul

Magazinul virtual, reprezintă o reflexie a stocului real de produse, în mediul virtual. Produsele sunt organizate pe categorii, și se oferă posibilitatea de a adăuga produse în coșul de cumpărături.

Comunicarea cu baza de date se face prin modelul MagStoreEntities, iar de prelucrarea datelor se ocupă controllerul StoreController, prin metodele Browse, CategoryMenu, Details, Index;

3.2.4 Coșul de cumpărături

În timpul navigării magazinului virtual, utilizatorii iși pot adăuga produse în coșul de cumpărături, prin apăsarea butonului „Adauga in cos” aferent fiecărui produs.

Modelul Cart face legătura cu tabelul Carts din baza de date, și are următoarele proprietăți:

CartId

Count

DateCreated

Product

ProductId

RecordId

Controllerul ShoppingCartController, prin metodele sale, arată produsele existente în coș și oferă posibilitatea de a șterge produsele din coș,

namespace RealInvest.Controllers

{

public class ShoppingCartController : Controller

{

MagStoreEntities storeDB = new MagStoreEntities();

public ActionResult Index()

{

var cart = ShoppingCart.GetCart(this.HttpContext);

var viewModel = new ShoppingCartViewModel

{

CartItems = cart.GetCartItems(),

CartTotal = cart.GetTotal()

};

return View(viewModel);

}

public ActionResult AddToCart(int id)

{

// arata produse din bd

var addedProduct = storeDB.Products

.Single(product => product.ProductId == id);

// adauga la cos

var cart = ShoppingCart.GetCart(this.HttpContext);

cart.AddToCart(addedProduct);

return RedirectToAction("Index");

}

[HttpPost]

public ActionResult RemoveFromCart(int id)

{

var cart = ShoppingCart.GetCart(this.HttpContext);

// afiseaza numele prod. disponibile

string productName = storeDB.Carts

.Single(item => item.RecordId == id).Product.Name;

int itemCount = cart.RemoveFromCart(id);

var results = new ShoppingCartRemoveViewModel

{

Message = Server.HtmlEncode(productName) +

" a fost sters din cosul de cumparaturi.",

CartTotal = cart.GetTotal(),

CartCount = cart.GetCount(),

ItemCount = itemCount,

DeleteId = id

};

return Json(results);

}

[ChildActionOnly]

public ActionResult CartSummary()

{

var cart = ShoppingCart.GetCart(this.HttpContext);

ViewData["CartCount"] = cart.GetCount();

return PartialView("CartSummary");

}

}

}

3.2.5 Efectuarea comenzilor

O dată ce au fost introduse produse în coșul de cumpărături, avem posibilitatea de a comanda produsele adăugate în coș, prin apăsarea butonului „Efectueaza comanda”.

Responsabil de evenimentele care se petrec după apăsarea acestui buton, este controllerul CheckOutController. La apăsarea butonului de efectuare comandă, utilizatorul este redirecționat către pagina „Livrare si plata”.

Pagina Livrare și plată, conține formularul Informații livrare. Acesta trebuie completat de către utilizatori, fiind ultima etapă din procesul de cumpărare al unui produs.

3.3 Implementarea modulului administrator al aplicației

Pentru a obține accesul la partea de administrare a aplicației, este necesară autentificarea în acest modul al aplicației, folosind contul de administrator. Procesul de autentificare este similar cu cel al utilizatorilor, proces prezentat în subcapitolul precedent.

Partea de administrator, se împarte în patru subcomponente:

Gestiunea Produselor;

Gestiunea Producătorilor;

Gestiunea Categoriilor de produse;

Gestiunea Comenzilor înregistrate;

3.3.1 Gestiunea produselor

În această componentă a modulului de administrare, gestionarul are posibilitatea de a modifică stocul virtual de produse.

Operațiile care sunt la dispoziția administratorului sunt:

Adăugarea de produse;

Modificarea produselor;

Ștergerea produselor;

Adăugarea unui produs nou, se efectuează prin apăsarea butonului „Produs Nou” din pagina aferentă gestionării produselor. Astfel, se apelează metoda CreateManufacturer din controllerul StoreManagerController. Utilizatorul este redirecționat către pagina de adăugare produs, care conține un formular în care se introduc datele despre produsul nou.

Figura 11 Formularul de adăugare de produse noi

Administratorul are posibilitatea să modifice produsele deja existente în baza de date. La apăsarea butonului „Modifica”, se apelează metoda EditProducts din Controllerul StoreManagerController

public ActionResult EditProducts(int id)

{

Product product = db.Products.Find(id);

ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId", "Name", product.CategoryId);

ViewBag.ManufacturerId = new SelectList(db.Manufacturers, "ManufacturerId", "Name", product.ManufacturerId);

return View(product);

}

[HttpPost]

public ActionResult EditProducts(Product product, HttpPostedFileBase file)

{

if (ModelState.IsValid)

{

if ((string)product.ProductPath.Substring(0, 1) != "/")

{

product.ProductPath = "/" + product.ProductPath;

}

db.Entry(product).State = EntityState.Modified;

db.SaveChanges();

return RedirectToAction("Index");

}

ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId", "Name", product.CategoryId);

ViewBag.ManufacturerId = new SelectList(db.Manufacturers, "ManufacturerId", "Name", product.ManufacturerId);

return View(product);

}

3.3.2 Gestiunea producătorilor

Concluzii

Această aplicație, vine în ajutorul desfășurării activității

Similar Posts