Tema: Dezvoltarea aplicațiilor web Food Delivery Store [303243]

[anonimizat]: „TEHNOLOGII MODERNE ÎN INGINERIA SISTEMELOR INFORMATICE”

LUCRARE DE DISERTAȚIE

Tema: “[anonimizat]”

COORDONATOR ȘTIINȚIFIC:

PROF. UNIV. DR. GRIGORE ALBEANU

MASTERAND: [anonimizat]

2016

CAPITOLE

CAPITOLUL I – INTRODUCERE 3

DE CE UN MAGAZIN ONLINE? 3

[anonimizat] 5

MySQL 5

PLATFORMA .NET 7

.NET FRAMEWORK 8

ARGUMENTE PENTRU .NET 10

LIMBAJUL C# 10

Structura unui program C# 10

Tipuri de date 11

Tipuri predefinite 11

Tipuri valoare 13

PROGRAMAREA ORIENTATA PE OBIECT 13

Noțiuni generale 13

[anonimizat] 16

GENERALITĂȚI 16

STRUCTURA UNEI PAGINI ASP.NET 17

Păstrarea informațiilor în aplicațiile web 19

Păstrarea stării controalelor 19

Păstrarea altor informații 20

Profile 21

Session 21

Application 22

Membrii statici 22

Concluzii 22

MICROSOFT VISUAL STUDIO 22

CREAREA UNEI APLICAȚII DE TIP CONSOLĂ ÎN VISUAL STUDIO 2013 27

MICROSOFT SQL SERVER 29

[anonimizat] 37

TEHNOLOGII FOLOSITE ÎN CADRUL APLICAȚIEI 38

CONCLUZII 58

BIBLIOGRAFIE 61

CAPITOLUL I – INTRODUCERE

DE CE UN MAGAZIN ONLINE?

Mediul online este într-o [anonimizat]. [anonimizat]-un mod cât mai eficient toate produsele comercializate.

Un magazin online personal poate deveni cea mai profitabilă și atractivă idee de afaceri. Luăm în considerare faptul că discutam despre o [anonimizat], [anonimizat]. [anonimizat], [anonimizat]. [anonimizat] o armată întreagă de vânzători. Sediul firmei poate fi chiar la dumeavostră acasă. Aveți nevoie doar de aparatura necesară și de programul care vă permite să vindeți prin Internet.

De multe ori clienții se sperie de bunavoința exagerată a unei vânzătoare. Sunt oameni și oameni. [anonimizat]. [anonimizat]. [anonimizat], dar le este rușine de cei din jur. Magazinul virtual îi oferă o [anonimizat], [anonimizat].[1]

Avantaje

Printre beneficiile de care te poți bucura când gestionezi o astfel de afacere se numară:

[anonimizat], întrucat magazinele online nu se închid niciodată;

[anonimizat], de asemenea;

[anonimizat], întreținere, angajați, sisteme de alarma și pază sunt evitate;

nu e necesar să ai stocurile pline. Când ai o [anonimizat];

[anonimizat] o poți îndrepta numai către cei pe care îi consideri potențiali clienți;

poți pentra mai ușor alte piețe;

realizarea de statistici privind numarul de vizitatori sau alte lucruri legate de vânzari pot fi ușor de accesat, cu ajutorul diferitelor programe precum Google Analytics;

dacă asiguri un flux constant de vizitatori și deci un trafic mare, poți genera un profit extra din publicitate, prin plasarea de reclame pe site.

Și consumatorii au partea lor de avantaje, după cum urmează:

economisesc timp, nu mai este nevoie să facă un drum până la magazin și să colinde printre raioane pentru a găsi ceea ce caută;

un magazin online îi ajută să facă mai ușor comparații între produse, folosindu-se de diverse filtre de sortare, precum prețul sau calitatea;

au posibilitatea de a salva anumite produse în coșul de cumpărături pentru a le cumpara mai târziu.[2]

CAPITOLUL II – ASPECTE TEORETICE

MySQL

Bazele sistemului MySQL au fost puse în 1979, odată cu instrumentul pentru baze de date UNIREG, creat de Michael "Monty" Widenius pentru compania suedeză TcX. În 1994, TcX a început să caute un server SQL pentru a-1 utiliza la dezvoltarea aplicațiilor Web. Compania a testat unele servere comerciale, dar toate s-au dovedit a fi prea lente pentru tabelele de mari dimensiuni ale firmei. De asemenea, compania a examinat mSQL, dar acestuia îi lipseau anumite caracteristici obligatorii pentru TcX. În consecință, Monty a început să programeze un server nou. Interfața de programare era proiectată în mod explicit pentru a fi similară celei folosite de mSQL, deoarece pentru mSQL erau disponibile numeroase instrumente gratuite, iar prin utilizarea unei interfețe similare aceleași instrumente puteau fi folosite pentru MySQL, cu un efort de portare minim.[6]

În 1995, David Axmark de la Detron HB a început să facă presiuni pentru ca TcX să lanseze MySQL pe Internet. MySQL 3.11.1 a fost dat lumii întregi în 1996, sub forma de distribuție binară pentru Linux și Solaris; în prezent, MySQL funcționează pe mult mai multe platforme și este disponibil atât în formă binară, cât și sursă.

MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții. Totuși, MySQL se bucură de o amplă popularitate în comunitatea Open Source, deoarece termenii de licență nu sunt foarte restrictivi, (în esență, MySQL este în general gratuit, dacă nu doriți să obțineți profit prin vânzarea sistemului sau a unor servicii care necesită utilizarea acestuia).

Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source. Da, rulează pe calculatoare personale (într-adevăr, o bună parte din programarea cu MySQL are loc pe sisteme Linux ieftine). Dar MySQL este portabil și rulează pe sisteme de operare comerciale (precum Solaris, Irix și Windows) și pe echipamente care merg până la servere de întreprindere, în plus, performanțele sale rivalizează cu acelea ale oricărui sistem de baze de date cu care doriți să îl comparați și poate manipula baze de date de mari dimensiuni, cu milioane de înregistrări.[7]

MySQL prezintă următoarele avantaje:

• Viteză. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date care se poate găsi.

• Ușurință în utilizare. MySQL este un sistem de baze de date cu performanțe ridicate, dar relativ simplu, a cărui configurare și administrare sunt mult mai simple decât în cazul sistemelor mai mari.

• Cost. MySQL este gratuit pentru majoritatea utilizărilor interne.

• Suport pentru limbaje de interogare. MySQL înțelege SQL (Structured Query Language – limbaj de interogare structurat), limbajul preferat al tuturor sistemelor moderne de baze de date. De asemenea, puteți avea acces la MySQL folosind aplicații care acceptă ODBC (Open Database Connectivity), un protocol de comunicație cu bazele de date creat de Microsoft.

• Caracteristici. La server se pot conecta mai mulți clienți simultan. Clienții pot folosi mai multe baze de date simultan. Puteți obține acces la MySQL în mod interactiv, folosind numeroase interfețe care vă permit să introduceți interogări și să vizualizați rezultate: clienți în linie de comandă, browsere Web sau clienți X Window System. De asemenea, este disponibilă o varietate de interfețe de programare pentru limbaje precum C, Perl, Java, PHP și Python. Astfel, aveți opțiunea de a folosi programe client preambalate sau de a vă scrie propriile programe client pentru aplicații personalizate.

• Conectivitate și securitate. MySQL poate fi folosit integral în rețele, iar bazele de date sunt accesibile de oriunde din Internet, deci vă puteți partaja datele cu oricine, oriunde. Dar MySQL are controlul accesului, astfel încât persoanele care nu au dreptul să vă citească datele nu vor avea această posibilitate.

• Portabilitate. MySQL rulează pe numeroase varietăți de UNIX, precum și pe alte sisteme non-UNIX, ca Windows și OS/2. MySQL rulează pe echipamente de la calculatoare de birou la servere cu performanțe ridicate.[7]

• Distribuție liberă. MySQL este ușor de obținut; pentru aceasta, folosiți-vă browserul de Web. Dacă nu înțelegeți funcționarea unei componente sau sunteți curios cu privire la un algoritm, vă puteți procura codul sursă si îl puteți examina. Dacă nu vă place modul de funcționare a unei componente, îl puteți modifica.

Distribuția MySQL include următoarele instrumente:

• Un server SQL. Acesta este motorul care activează MySQL si care furnizează accesul la bazele dumneavoastră de date.

• Programe client pentru accesul la server. Un program interactiv vă permite să introduceți interogări în mod direct și să vizualizați rezultatele, iar numeroasele programe administrative și utilitare vă ajută să vă rulați situl. Un utilitar vă permite să controlați serverul. Altele vă permit să importați sau să exportați date, să verificați permisiunile de acces si multe altele.

• O bibliotecă client pentru scrierea propriilor dumneavoastră programe. Puteți scrie programe client în C, deoarece biblioteca este scrisă în C, dar biblioteca mai furnizează si baza pentru terțe asocieri pentru alte limbaje.

In afara programelor furnizate cu MySQL, MySQL însuși este folosit de către numeroase persoane talentate și capabile, cărora le place să scrie programe pentru a-și îmbunătăți productivitatea și care doresc să pună la dispoziția publicului aceste programe. Rezultatul este că aveți acces la o diversitate de instrumente produse de terțe părți, care facilitează utilizarea sistemului MySQL sau care extind aria de acțiune a acestuia în domenii precum dezvoltarea site-urilor Web.

In acest proiect, cu ajutorul MySQL-ului am creat o baza de date care contine 5 tabele necesare pentru stocarea informatiilor referitoare la useri, cursuri, intrebari si note.

PLATFORMA .NET

.NET este un cadru (Framework) de dezvoltare software unitară care permite realizarea, distribuirea și rularea atât a aplicațiilor-desktop Windows cat și aplicațiilor WEB. Tehnologia .NET pune laolaltă mai multe tehnologii (ASP, XML, OOP, SOAP, WDSL, UDDI, WPF, LINQ) și limbaje de programare (VB, C++, C#, F#) asigurând totodată atât portabilitatea codului compilat între diferite calculatoare cu sistem Windows, cât și reutilizarea codului în programe, indiferent de limbajul de programare utilizat.[8]

.NET Framework este o componentă livrată împreună cu sistemul de operare Windows. Pentru a dezvolta aplicații pe platforma .NET este bine sa avem 3 componente esențiale:

o un set de limbaje (C#, Visual Basic .NET, J#, Managed C++, Smalltalk, Perl, Fortran, Cobol, Lisp, Pascal etc),

o un set de medii de dezvoltare (Visual Studio .NET, Visio), o și o bibliotecă de clase pentru crearea serviciilor Web, aplicațiilor Web și aplicațiilor desktop Windows.

Când dezvoltăm aplicații .NET, putem utiliza:

o servere specializate – un set de servere Enterprise .NET (din familia SQL Server 2008, Exchange 2000 etc.), care pun la dispoziție funcții de stocare a bazelor de date, email, aplicații B2B (Bussiness to Bussiness – comerț electronic între partenerii unei afaceri).

o servicii Web (în special comerciale), utile în aplicații care necesită identificarea utilizatorilor (de exemplu, .NET Passport – un mod de autentificare folosind un singur nume și o parolă pentru toate site-urile vizitate)

o servicii incluse pentru dispozitive non-PC (Pocket PC Phone Edition, Smartphone, Tablet PC, Smart Display, XBox, set-top boxes, etc.)[9]

.NET FRAMEWORK

Componenta .NET Framework, ajunsa astăzi la versiunea 4.6 stă la baza tehnologiei .NET, este ultima interfață între aplicațiile .NET și sistemul de operare și actualmente conține:

limbajele C#, VB.NET, C++ si, odată cu versiunea 2010, introduce noul limbaj F#. Pentru a fi integrate în platforma .NET toate aceste limbaje respectă niște specificații OOP numite Common Type System (CTS). Ele au ca elemente de bază: clase, interfețe, delegări, tipuri valoare și referință, iar ca mecanisme: moștenire, polimorfism și tratarea excepțiilor.

Platforma comună de executare a programelor numită Common Language Runtime (CLR), utilizată de toate cele 4 limbaje. CTS face parte din CLR. Ansamblul de biblioteci necesare în realizarea aplicațiilor desktop sau Web numit Framework Class Library (FCL)

Componenta .NET Framework este formată din compilatoare, biblioteci și alte executabile utile în rularea aplicațiilor .NET.[5]

Figura 1. Structura .NET Framework [6]

Figura schematizează arhitectura platformei Microsoft .NET. Orice program scris într-unul din limbajele .NET este compilat în Microsoft Intermediate Language (MSIL), în concordanță cu Common Language Specification (CLS). Aceste limbaje sunt sprijinite de o bogată colecție de biblioteci de clase, ce pun la dispoziție facilități pentru dezvoltarea de Web Forms, Windows Forms și Web Services. Comunicarea dintre aplicații și servicii se face pe baza unor clase de manipulare XML și a datelor, ceea ce sprijină dezvoltarea aplicațiilor cu arhitectură n-tier. Base Class Library există pentru a asigura funcționalitate de nivel scăzut, precum operații de I/O, fire de execuție, lucrul cu șiruri de caractere, comunicație prin rețea, etc. Aceste clase sunt reunite sub numele de .NET Framework Class Library, ce permite dezvoltarea rapidă a aplicațiilor. La baza tuturor se află cea mai importantă componentă a lui .NET Framework – Common Language Runtime, care răspunde de execuția fiecărui program. Mediul de dezvoltare Visual Studio .NET nu este absolut necesar pentru a dezvolta aplicații (există și alternative open-source pentru el), dar datorită extensibilității este cel mai bine adaptat pentru crearea aplicațiilor. Evident, nivelul inferior este rezervat sistemului de operare

ARGUMENTE PENTRU .NET

În primul rând pentru că oferă instrumente pe care le putem folosi și în alte programe, oferă acces ușor la baze de date, permite realizarea desenelor sau a altor elemente grafice. Spațiul de nume System.Windows.Forms conține instrumente (controale) ce permit implementarea elementelor interfeței grafice cu utilizatorul.

Folosind aceste controale, se pot proiecta și dezvolta rapid și interactiv, elementele interfeței grafice. Tot .NET oferă clase care efectuează majoritatea sarcinilor uzuale cu care se confruntă programele și care plictisesc și fură timpul programatorilor, reducând astfel timpul necesar dezvoltării aplicațiilor.

Microsoft Visual Studio este un mediu de dezvoltare integrat (IDE) de la Microsoft. Acesta poate fi utilizat pentru a construi aplicații consolă, interfața grafică, aplicații de tip Windows Forms, site-uri web, aplicații web, servicii web ce sunt suportate platformele: Microsoft Windows, Windows Mobile, Windows CE,. NET Framework,. NET Compact Framework și Microsoft Silverlight.[11]

LIMBAJUL C#

Limbajul C# este un limbaj de programare modern, simplu, orientat pe obiect. Fiind foarte asemănător cu Java și C++, învățarea acestuia este destul de facilă. El este un limbaj simplu, cu circa 80 de cuvinte cheie, și 12 tipuri de date predefinite care permite programarea structurată, modulară și orientată pe obiect.[3]

Structura unui program C#

Un program scris într-un limbaj de programare constă din instrucțiuni în limba engleză, denumite cod sursă. O instrucțiune a unui limbaj de programare reprezintă o comandă dată calculatorului. Totalitatea instrucțiunilor care descriu cum se rezolvă o anumită problemă se numește program. Structura unui program scris în limbajul C# este descrisă în figura următoare:

Figura 2. Structura unui program scris în limbajul C#

Tipuri de date

C# prezintă două tipuri de date: tipuri valoare și tipuri referință. Tipurile valoare includ tipurile simple (ex. char, int, float), tipurile enumerare și structură și au ca principale caracteristici faptul că ele conțin direct datele referite și sunt alocate pe stivă sau inline într–un struct. Tipurile referință includ tipurile clasă, interfață, delegat și tablou, toate având proprietatea că variabilele de acest tip stochează referințe către obiecte. Demn de remarcat este că toate tipurile de date sunt derivate (direct sau nu) din tipul System.Object, punând astfel la dispoziție un mod unitar de tratare a lor.[4]

Tipuri predefinite

Limbajul C# conține un set de 15 tipuri predefinite, pentru care nu este necesară includerea vreunui spațiu de nume via directiva using: string, object, tipurile întregi cu semn și fără semn, tipuri numerice în virgulă mobilă, tipurile bool și decimal.

Tipul string este folosit pentru manipularea șirurilor de caractere codificate Unicode; conținutul obiectelor de tip string nu se poate modifica.

Clasa object este rădăcina ierarhiei de clase din .NET, la care orice tip (inclusiv un tip valoare) poate fi convertit.[7]

Tipul bool este folosit pentru a reprezenta valorile logice true și false.

Tipul char este folosit pentru a reprezenta caractere Unicode, reprezentate pe 16 biți.

Tipul decimal este folosit pentru calcule în care erorile determinate de reprezentarea în virgulă mobilă sunt inacceptabile, de exemplu în calcule monetare, el punând la dispoziție 28 de cifre zecimale semnificative. Pentru a semnala că un literal în virgulă mobilă este de tip decimal, se va pune la sfârșitul acestuia litera m sau M.

Exemplu: decimal dcm=123.456m;

Pentru a semnala că un literal în virgulă mobilă este de tip float, se va pune la sfârșitul acestuia litera f sau F, altfel se va subînțelege că este de tip double și ar putea apărea erori.

Exemplu: float flt=345.678F;

Figura 3. Tipuri predefinite în C#

Fiecare tip de date din C# își are corespondentul în tipul .Net (tipurile din spațiul de nume System).

Tipuri valoare

C# pune programatorului la dispoziție tipuri valoare, care sunt fie structuri, fie enumerări. Există un set predefinit de structuri numite tipuri simple, identificate prin cuvinte rezervate. Un tip simplu este fie de tip numeric, fie boolean. Tipurile numerice sunt tipuri întregi, în virgulă mobilă sau decimal. Tipurile întregi sunt sbyte, byte, short, ushort, int, uint, long, ulong, char; cele în virgulă mobilă sunt float și double. Tipurile enumerare se pot defini de către utilizator.

Toate tipurile valoare derivează din clasa System.ValueType, care la rândul ei este derivată din clasa object (alias pentru System.Object). Nu este posibil ca dintr–un tip valoare să se deriveze. O variabilă de tip valoare întotdeauna trebuie să conțină o valoare (nu poate fi null, spre deosebire de tipurile referință). Atribuirea pentru un astfel de tip înseamnă copierea valorii (clonarea) dintr–o parte în alta.

PROGRAMAREA ORIENTATA PE OBIECT

Noțiuni generale

Programarea orientată obiect (programe cu noi tipuri ce integrează atât datele, cât și metodele asociate creării, prelucrării și distrugerii acestor date); se obțin avantaje prin abstractizarea programării (programul nu mai este o succesiune de prelucrări, ci un ansamblu de obiecte care prind viață, au diverse proprietăți, sunt capabile de acțiuni specifice și care interacționează în cadrul programului); intervin tehnici noi privind instanțierea, derivarea și polimorfismul tipurilor obiectuale.[4]

Figura 4. Programarea orientată pe obiect

Programarea orientată pe obiecte (POO) este o forma de programare, în care programatorii definesc clase de obiecte, iar programul conține un ansamblu de clase și obiecte, care comunică între ele prin mesaje.

Clasa este o extensie a conceptului de tip de date și conține o structură de date, împreună cu metodele (funcțiile) care se aplică acestor date.

Obiectul este o instanțiere (o instanță) a clasei. În același program se pot folosi mai multe obiecte apartinând aceliași clase, sau unor clase diferite. Fiecare obiect se caracterizează prin stare și comportament. Starea obiectului depinde de datele pe care acesta le conține, în timp ce comportamentul este dat de metodele clasei respective.

În general, comunicarea prin mesaje constă în invocarea de metode. Dacă obiectul a invocă o metodă a obiectului b, aceasta poate avea ca efect modificarea stării obiectului b (adică modificarea unor date conținute în structura de date a lui b) și/sau poate primi o valoare întoarsă de metoda respectivă. Se consideră că, prin invocarea metodei, obiectul a a transmis un mesaj obiectului b, ceea ce a provocat din partea acestuia un anumit răspuns (deci b a manifestat o anumită comportare). [15]

De exemplu, să considerăm clasa poligoanelor regulate. Structura de date contine două variabile: numărul de laturi (care este o variabilă de tip întreg) și lungimea unei laturi (care este o variabilă de tip real). Metodele pot fi, de exemplu, mici programe (funcții) prin care se calculează aria, perimetrul, apotema, raza cercului circumscris etc. Pot exista și metode prin care se modifică numărul de laturi sau lungimea laturii, deci se modifică starea poligonului. Clasa are un nume (de ex. PoligonRegulat). Pot exista, evident, mai multe instanțe (obiecte) ale acestei clase, care toate sunt poligoane regulate, dar diferă între ele prin numărul de laturi și/sau prin lungimea laturii.

Fie p un PoligonRegulat cu 4 laturi de lungime 3.5. Invocarea metodei p.arie() are ca efect calcularea funcției arie() pentru obiectul p, deci se va obține ca răspuns valoarea 12.25. Prin invocarea acestei metode, s-a transmis obiectului p mesajul că se cere calcularea ariei, iar comportamentul acestui obiect a constat în punerea în executie a metodei invocate și întoarcerea valorii calculate a ariei. Valoarea întoarsă depinde, evident, de starea în care se găsește p în momentul invocării metodei, adică de numarul de laturi și de lungimea laturii.

Atât variabilele, cât și metodele pot fi statice sau nestatice.

Variabilele statice (ale clasei) aparțin clasei, adică au aceeași valoare pentru toate obiectele clasei respective.

Variabilele de instanță (nestatice) aparțin obiectului (instanței), deci au valori diferite de la un obiect la altul.

De exemplu, dacă clasa Pasare conține variabila numarAripi, această variabilă va avea valoarea 2 pentru toate păsările, deci pentru toate instanțele clasei respective, fiind o variabilă statică sau a clasei. În schimb, variabila varsta va avea valori diferite pentru fiecare pasăre, deci este o variabilă a instanței (nestatica).

Metodele statice (ale clasei) pot folosi numai variabilele statice ale clasei respective, în timp ce metodele nestatice pot folosi atât variabilele statice, cât și pe cele ale instanței.

Din punct de vedere al modului de acces, datele și metodele unei clase pot fi publice sau private. Cele publice sunt accesibile din orice altă clasă, în timp ce cele private sunt accesibile numai din clasa căreia îi aparțin. [13]

CAPITOLUL III – ASPECTE TEHNOLOGICE

GENERALITĂȚI

ASP.NET este tehnologia Microsoft care permite dezvoltarea de aplicații web moderne, utilizând platforma Microsoft .NET cu toate beneficiile sale.

Pentru a înțelege procesul de realizare a unui site web cu ASP.NET este important să cunoaștem modul în care funcționează comunicarea între browser și serverul web. Acest proces este format din următoarele etape principale:

1 Browserul Web inițiază o cerere (request) a unei resurse către serverul Web unde este instalată aplicația dorită.

2 Cererea este trimisă serverului Web folosind protocolul HTTP.

3 Serverul Web procesează cererea.

4 Serverul web trimite un răspuns browserului folosind protocolul HTTP.

5 Browserul procesează răspunsul în format HTML, afișând pagina web.

6 Utilizatorul poate introduce date (să spunem într-un formular), apasă butonul Submit și trimite date înapoi către server.

7 Serverul Web procesează datele.

8 Se reia de la pasul 4.

Serverul web primește cererea (request), iar apoi trimite un răspuns (response) înapoi către browser, după care conexiunea este închisă, și sunt eliberate resursele folosite pentru procesarea cererii. Acesta este modul de lucru folosit pentru afișarea paginilor statice (datele dintr-o pagină nu depind de alte date din alte pagini sau de alte acțiuni precedente ale utilizatorului) și nici o informație nu este stocată pe server. În cazul paginilor web dinamice, serverul poate să proceseze cereri de pagini ce conțin cod care se execută pe server, sau datele pot fi salvate pe server între două cereri din partea browserului.

Trimiterea datelor de la browser către server se poate realiza prin metoda GET sau POST.

Prin Get nu se pot trimite date de dimensiuni mari, iar datorită faptului că datele sunt scrise în URL-ul browser-ului, pot apărea probleme de securitate. De aceea, de preferat este să se folosească metoda POST pentru trimiterea de date.

Trimiterea datelor înapoi către server este numită deseori PostBack. Acțiunea de PostBack poate fi folosită atât cu metoda GET cât și cu metoda POST. Pentru a ști dacă se trimit date (POST) sau pagina este doar cerută de browser (GET), cu alte cuvinte pentru a ști dacă pagina curentă se încarcă pentru primă dată sau nu, în ASP.NET se folosește o proprietate a clasei Page numită IsPostBack.[9]

STRUCTURA UNEI PAGINI ASP.NET

La crearea unui proiect nou, în fereastra Solution Explorer apare o nouă pagină web numită Default.aspx.

Orice pagină web .aspx este formată din 3 secțiuni: secțiunea de directive, secțiunea de cod, și secțiunea de layout.

Secțiunea de directive se folosește pentru a seta mediul de lucru, precizând modul în care este procesată pagina.

<%@ Page Language=”C#” AutoEventWireup=”true”

CodeFile=”Default.aspx.cs” Inherits=”_Default” %>

Secțiunea de cod, conține codul C# asociat paginii sau obiectelor din pagină. Codul poate fi plasat direct în pagina sau într-un fișier cu extensia .cs, cu același nume ca al paginii (de ex. Default.aspx.cs). În cazul în care se găsește direct în pagină, codul este cuprins între tag-urile <script> </script>:

<script runat=”server”>

protected void Button1_Click(object sender, EventArgs e)

{

Page.Title = “First Web Application”;

}

</script>

De obicei blocurile <script> conțin cod care se execută pe partea de client, însă dacă se folosește atributul runat = „server”, codul se va executa pe serverul web.

În cazul exemplului de mai sus, la apăsarea butonului se schimbă titlul paginii Web în browser.

În cazul în care în fereastra pentru adăugarea unei pagini noi în proiect, se bifează opțiunea Place code in separate file, codul este plasat într-un fișier separat, iar în secțiunea de directive este precizat numele acestui fișier.

CodeFile=”Default.aspx.cs”

Secțiunea de layout conține codul HTML din secțiunea Body:

<body>

<form id=”form1” runat=”server”>

<div>

<asp:Button ID=”Button1” runat=”server” OnClick=”Button1_Click” Text=”Button” /></div>

</form>

</body>

Atributul runat=”server” pentru un anumit control, specifică faptul că pentru obiectul respectiv, ASP.NET Runtime Engine care rulează pe serverul web (IIS) va face transformarea într-un obiect HTML standard. Această conversie se realizează în funcție de tipul browserului, de varianta de javascript instalată pe browser și de codul C# asociat obiectului respectiv (numit code behind).[10]

De exemplu pagina aspx de mai sus este transformată în următorul fișier html:

<form name=”form1” method=”post” action=”Default.aspx” id=”form1”>

<div>

<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE”

value=”/wEPDwUKMTQ2OTkzNDMyMWRkIftHHP/CS/zQf/D4XczzogN1M1w=” />

</div>

<div>&nbsp;<br />

<input type=”submit” name=”Button1” value=”Button” id=”Button1” style=”zindex:

102;left: 349px; position: absolute; top: 156px” />

</div>

<div>

<input type=”hidden” name=”__EVENTVALIDATION” = “__EVENTVALIDATION” value =

“/wEWAgKlr8nLBAKM54rGBh7DPY7SctG1t7rMEnJSrO+1hHyP” />

</div>

</form>

Păstrarea informațiilor în aplicațiile web

Există o deosebire fundamentală între aplicațiile Windows și cele Web. Anume, în aplicațiile Windows odată creat un obiect acesta rămâne în memorie în principiu până la terminarea aplicației și va putea fi utilizat și din alte ferestre decât cele în care a fost creat, atâta timp cât este public. Pe de altă parte, în aplicațiile web paginile nu se păstrează în memorie pe calculatorul utilizatorului (clientului) iar aici ne vom pune problema păstrării informațiilor.

Când browserul cere o anumită pagină, ea este încărcată de serverul web, se execută codul asociat pe baza datelor trimise de user, rezultând un răspuns în format HTML trimis browserului. După ce este prelucrată pagina de către server, obiectele din pagină sunt șterse din memorie, pierzând astfel valorile. De aceea apare întrebarea: cum se salvează/transmit informațiile între paginile unui site web sau chiar în cadrul aceleiași pagini, între două cereri succesive către server?

Păstrarea stării controalelor

Starea controalelor unei pagini este pastrată automat de către ASP.NET și astfel nu trebuie să ne facem griji cu privire la informațiile care apar în controale pentru ca ele nu vor dispărea la următorul PostBack – adică la următoarea încărcare a paginii curente. De exemplu, dacă scriem un text într-o căsuță de text și apoi apăsăm un buton care generează un PostBack iar pagina se reîncarcă, ea va conține căsuța de text respectivă cu textul introdus de noi înainte de reîncărcare.

În momentul generării codului Html de către server se generează un control html de tip <input type=”hidden”…> , a cărui valoare este un șir de caractere ce codifică starea controalelor din pagină:

<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE”

value=”/wEPDwULLTE1OTg1NDYyNDZkZFCFstl/DwSGv81TuCB397Tk5+CJ” />

Se pot adăuga valori în ViewState și de către programator, folosind obiectul ViewState cu metoda Add (cheie, valoare_obiect): ViewState.Add(“TestVariable”, “Hello”);

protected void Page_Load(object sender, EventArgs e)

{

if (Page.IsPostBack == false)

{

ViewState.Add(“ViewStateTest”, “Hello”);

}

}

Regăsirea datelor se realizează folosind ca indice numele obiectului:

protected void Button1_Click(object sender, EventArgs e)

{

TextBox1.Text = ViewState[“ViewStateTest”].ToString();

}

Păstrarea altor informații

Așa cum am observat în paragraful anterior, starea controalelor de pe o anumită pagină web ASP.NET se pastrează între mai multe cereri către server pentru aceeași pagină, folosind obiectul ViewState în mod automat, transparent pentru programator.

Dacă dorim să păstrăm mai multe informații decât doar conținutul controalelor, cum ar fi valorile unor variabile instanțiate într-o anumită pagină, atunci va trebui să o facem explicit, pentru că acestea se pierd în momentul în care serverul web regenerează pagina curentă, ceea ce se întâmplă la fiecare PostBack , cum se întâmplă de exemplu la apăsarea unui buton ASP.NET.[11]

Profile

O posibilitate de păstrare a informațiilor specifice unui utilizator constă în folosirea obiectului Profile, prin intermediul fișierului de configurare Web.Config. Acesta este un fișier XML în care se rețin opțiuni de configurare. Pentru a adăuga o proprietate obiectului profile, în fișierul Web.Config se adaugă:

<profile enabled=”true”>

<properties>

<add name =”ProfileTest” allowAnonymous =”true”/>

</properties>

</profile>

Atributul name reține numele proprietății. După aceste modificări, proprietatea definită în Web.config poate fi apelată pentru obiectul Profile:

Profile.ProfileTest = “Hello world”;

Sau

Label1.Text = Profile.ProfileTest;

Session

Obiectul Session este creat pe serverul web la prima accesare a sitului de către un utilizator și rămâne în memorie în principiu atât timp cât utilizatorul rămâne conectat la site. Există și excepții, dar ele nu fac obiectul acestui material.

Pentru a adăuga un obiect în sesiune, trebuie doar să scriem un cod de genul următor:

protected void Button1_Click(object sender, EventArgs e)

{

Session[“sir”] = test;

}

Session este de fapt un dicționar (listă de perechi cheie – valoare), în care valorile sunt de tip object. Ceea ce înseamnă că la citirea unor valori din sesiune va trebui să realizăm o conversie de tip.

protected void Button2_Click(object sender, EventArgs e)

{

test = Session[“sir”].ToString();

TextBox1.Text = test;

}

Odată introdus un obiect în Session, el poate fi accesat din toate paginile aplicației, atât timp cât el există acolo. Programatorul poate realiza scoaterea obiectului din sesiune atunci când dorește acest lucru:

Session.Remove(“sir”);

Application

Obiectul Application se comportă în mod identic cu Session, doar că este specific întregii aplicații, adică tuturor utilizatorilor care acceseaza un site web la un moment dat, și nu unei anumite sesiuni. Cu alte cuvinte odată introdus un obiect în Application, va putea fi accesat din orice loc al site-ului și de către toți utilizatorii acestuia.

Membrii statici

Toate variabilele declarate ca fiind statice sunt specifice întregii aplicații și nu unei anumite sesiuni. De exemplu, dacă atunci când un site este accesat de Utilizator1 și o variabilă declarată:

static string test = “init”;

se modifică de către acesta:

test = “modificat”;

atunci toți utilizatorii aplicației vor vedea valoarea modificată din acel moment înainte.

Concluzii

În cazul obiectului ViewState, datele sunt salvate în pagina web sub forma unui șir de caractere, iar în cazul obiectului Session respectiv Application în memoria serverului web. Dacă datele salvate sunt de dimensiuni mari, în primul caz crește dimensiunea paginii web, care va fi transmisă mai încet, iar în al doilea caz rezultă o folosire excesivă a memoriei serverului web, ceea ce duce la scăderea vitezei de lucru. Această folosire excesivă a memoriei poate să apară și în cazul unei dimensiuni a datelor ceva mai redusă, dar a unui număr mare de utilizatori care accesează simultan pagina (pentru fiecare se va creea un obiect sesiune).[12]

MICROSOFT VISUAL STUDIO

Microsoft Visual Studio (fig. 6) reprezintă un mediu de dezvoltare integrat (IDE) oferit de Microsoft. Acesta poate fi utilizat pentru a construi aplicații consolă, interfața grafică, aplicații de tip Windows Forms, site-uri web, aplicații web, servicii web ce sunt suportate de platformele: Microsoft Windows, Windows Mobile, Windows CE,. NET Framework,. NET Compact Framework și Microsoft Silverlight.[15]

Microsoft Visual Studio oferă editor, compilator/debugger și mediu de proiectare (designer) pentru mai multe limbaje de programare. Limbaje de programare incluse: Microsoft Visual C++, Microsoft Visual C#, Microsoft Visual Basic, Microsoft Visual Web Developer, Team Foundation Server.[15]

Figura 5. Microsoft Visual Studio

Procedura de instalare pentru Microsoft Visual Studio este una foarte simplă, nefiind nevoie de interacțiune pe parcursul ei dar, în funcție de configurația sistemului pe care se instalează, durata de instalare poate fi destul de lungă. În figura 7 se pot urmării diverse stadia prin care trece aplicația în timpul instalării.

Figura 6. Instalarea Microsoft Visual Studio

CREAREA UNEI APLICAȚII DE TIP CONSOLĂ ÎN VISUAL STUDIO 2013

Pentru a crea o aplicație de tip consolă în Microsfot Visual Studio este nevoie de parcurgerea următorilori pași elementari(fig.7):

File-> New Project

Figura 7. Crearea unei apilicații de tip consila în Visual Studio

Din fereastra de dialog vom selecta Visual C++, urmând ca mai apoi, din partea centrală a ferestrei să alegem Win32 Console Application. În partea de jos se va scrie numele pentru aplicație și se va selecta locația unde va fi salvată(fig.8).

Figura 8 – Atribuirea numelui și spațiului de memorare al aplicației

O nouă fereastră de dialog se va deschide, unde Console Application este selectat implicit. Se va bifa Empty Project urmat de butonul Finish. Mediul de dezvoltare se va deschide cu noul proiect salvat, dar care este gol.(fig.9)[15]

Figura 9 – Inițierea mediului de dezvoltare cu noul proiect

MICROSOFT SQL SERVER

SQL Server este un DBMS(Data Base Management System) – sistem pentru gestiunea bazelor de date, produs de Microsoft. Suportă versiunea Microsoft de SQL(Structured Query Language) – limbaj structurat de interogări, care se declară a fi cel mai comun limbaj pentru bazele de date. Este un sistem din clasa Enterprise ce se poate aplica bazelor de date de dimensiuni foarte mari.

Codul de bază pentru Microsoft SQL Server iși are originile in Sybase SQL Server și reprezintă intrarea Microsoft pe piața bazelor de date la nivel enterprise, concurând cu Oracle, IBM și Sybase. Microsoft, Sybase si Ashton-Tate s-au unit pentru a crea și a scoate pe piață prima versiune numită SQL Server 4.2 pentru Win OS/2. Sybase și-a schimbat ulterior numele în Adaptive Server Enterprise pentru a se evita confuzia cu Microsoft SQL Server.

Dacă SQL Server 7.0 a fost primul server de baze de date bazat pe GUI, varianta de SQL Server 2000 a fost prima variantă comercială pentru arhitectura Intel, iar versiunea Microsoft SQL Server 2008 este ultima aparută.

Microsoft SQL Sever folosește o variantă de SQL numită T-SQL sau Transact-SQL, care este defapt o implementare de SQL-92(standardul ISO pentru SQL) cu unele extensii.

T-SQL în principal adăugă sintaxa adițională pentru procedurile stocate și pentru tranzacții. Standardele SQL necesită ACID – patru condiții pentru orice tranzacție, sintetizate prin acronimul ACID: Atomicitate, Consistență, Izolare, Durabilitate. MS SQL Server suportă ODBC (Open Database Connectivity).

Odată cu versiunea 2005(nume de cod Yukon) care este succesoarea versiunii SQL Server 2000, Microsoft aduce o serie de îmbunătățiri precum suport pentru gestionarea de date XML, în plus față de date relaționale. Metodele de indexare specializate au fost puse la dispoziția datelor XML, iar interogarea lor se face folosind XQuery. SQL Server 2005 adăugă unele extensii limbajului T-SQL precum funcții de eroare a manipulării și suport pentru interogările recursive. Alături de T-SQL, această versiune introduce și CLR (SQL Common Language Runtime) pentru o mai bună integrare cu .NET Framework.

Versiunea SQL Server 2008 (fig.10) (nume de cod Katmai) vine și ea, așa cum era de așteptat, cu alte îmbunătățiri: oferă suport pentru stocarea datelor multimedia și adaugă noi tipuri de date(geometry, geography, hierarchy și mult asteptatul date fară datetime). Versiunea de SQL Server Management Studio inclusă în SQL Server 2008 acceptă IntelliSense pentru SQL.

Figura 10 – Structura SQL Server 2008 [14]

Cu toate că nu oferă restricții în ceea ce privește numărul bazelor de date sau al utilizatorilor concurenți, este limitată la folosirea unui singur procesor, la 1 Gb de memorie și maxim 4 Gb pentru stocarea fișierelor de date.

Putem spune despre Microsoft SQL Server că este o soluție integrată de management și analiză a datelor, care ajută organizațiile de orice dimensiune să:

dezvolte, implementeze și administreze aplicații la nivel de întreprindere mai sigure, scalabile și fiabile

maximizeze productivitatea IT prin reducerea complexității creării, implementării și administrării aplicațiilor pentru baze de date

partajeze date pe mai multe platforme, aplicații și dispozitive pentru a facilita conectarea sistemelor interne și externe.

controleze costurile fără a sacrifica performanța, disponibilitatea, scalabilitatea sau securitatea.

Pașii ce trebuiesc parcurși pentru a duce la bun sfârșit instalarea Microsoft SQL Server(fig.11)

Figura 11. Procedura de instalare a Microsoft SQL Server

Gestionarea serverului se face prin aplicația SQL Server Management Studio (fig. 12)

Figura 12. SQL Server Management Studio

Elementul central al acestei unelte este panelul Object Explorer, ce permite utilizatorului să răsfoiască, selecteze sau să întreprindă orice altă acțiune asupra obiectelor de pe server.

CAPITOLUL IV – PROIECT TEHNIC

Aplicațiile web moderne sunt sisteme software complexe, iar dezvoltarea acestora necesită o abordare metodologică a proiectării lor. Elementul distinctiv al aplicațiilor web, comparativ cu aplicațiile software tradiționale, este modul în care este utilizat web-ul. Tehnologiile și standardele sale sunt utilizate atât ca o platformă de dezvoltare cât și ca platformă utilizator în același timp.

O aplicație online (sau aplicație web) este accesibilă printr-un browser pe internet sau într-o rețea locală (un intranet). Punctul forte al unei aplicații web este faptul că poate fi folosită de un număr infinit de utilizatori, fără ca aceștia să trebuiască să o instaleze și configureze pe propriul calculator.

FOOD DELIVERY este un serviciu online care pune la dispoziția utilizatorilor săi posibilitatea de a comanda o diversitate mare de mâncăruri tradiționale românești dar și meniuri sofisticate internaționale. Pe site este pusă spre vânzare o gamă variată de produse și preparate din carne de pui, preparate din carne de porc, preparate din carne de vită, diverse sortimente de pizza și paste italiene, preparate din pește și curcan, salate și deserturi delicioase dar și supe și ciorbe gustoase. Un prim punct pozitiv al acestui site este numele, care definește foarte bine scopul său: o mare varietate de preparate culinare și nu în ultimul rând un mod simplu de a comanda o masă gustoasă din comoditatea fotoliului de acasă. Site-ul este curat, aerisit, se găsesc mai multe oferte înca de pe prima pagină iar sistemul de cumpărare este relativ simplu. Din motive de securitate, utilizatorul este nevoit sa iși creeze cont, ceea ce pentru unii ar putea fi puțin incomod.

TEHNOLOGII FOLOSITE ÎN CADRUL APLICAȚIEI

Pentru realizarea aplicației prezentate a fost folosit un set de tehnologii moderne din care amintim: HTML 5, SQL Server, CSS, ASP.NET, jQuerry, Framework.

Aplicația are la bază framework-ul ASP.NET MVC, care conține trei elemente cheie:

Models, Controllers și Views

Modelele sunt definite de către clase cu rolul de a detalia structura unui obiect din aplicația prezentată ca tema de proiect. Tehnologia folosită este Entity Framework 6 Code First cu rol în generarea bazei de date pe baza acestor modele. Fiecărui „model”, Entity Framework îi atribuie o tabelă în baza de date, iar pentru fiecare “proprietate” din cadrul clasei, îi generează o coloană. Definirea bazei de date se face cu ajutorul migrărilor integrate în aplicație.

Exemplu de „Model” din cadrul aplicației:

[Table("Category")]

public partial class Category

{

public Category()

{

Product = new HashSet<Product>();

}

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

[Key]

public int CategoryId { get; set; }

[Display(Name="Denumire categorie")]

[Required]

[StringLength(50)]

public string Name { get; set; }

[StringLength(50)]

[Display(Name = "Imagine categorie")]

public string CategorieArtUrl { get; set; }

[StringLength(50)]

[Display(Name = "Descriere categorie")]

public string Description { get; set; }

public virtual ICollection<Product> Product { get; set; }

}

}

Se poate observa că modelul aparține unui obiect de tip „category”. Acest model are ca element de legătură în baza de date tabela “category”, iar coloanele acestei tabele reprezintă proprietățile modelului.

Figura 13. Baza de date în SQL Server

Clasele din folder-ul „Controllers” definesc întocmai „Controller-ele” cu rol principal de bază în funcționarea aplicației după o logică data.

Aici, apar metode care au rol, fie de a prelucra datele și de a le returna sub forma unor seturi de date, fie pentru a executa acțiuni precum adăugarea produselor în coșul de cumpărături.

Prezentat și în asepctele tehnologice din cadrul proiectului, framework-ul ASP.NET MVC are la bază o convenție prestabilită în legătura cu numele fișierelor, astfel încât pentru fiecare controller din aplicație acesta adaugă automat un folder cu numele controller-ului în „Views”, iar acțiunile vor adăuga în folder-ul cu același nume, fișiere cu extensia .cshtml.

Mai jos este prezentat un scurt exemplu al modului de funcționare al controller-elor.

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Create([Bind(Include = "CategoryId,Name,CategorieArtUrl,Description")] Category category)

{

if (ModelState.IsValid)

{

db.Category.Add(category);

db.SaveChanges();

return RedirectToAction("Index");

}

return View(category);

}

Se poate observa faptul cum metoda Edit din cadrul controller-ului CategoriesController returnează un view cu noile categorii de produse.

Figura 14. Categories Controller

Fiecărui controller din folder-ul Controllers îi este conexat un folder cu același nume în folder-ul Views, iar aici se vor afla fișiere cu extensia .cshtml. Aceste fișiere poartă denumirea de Views, ele constituind cel de-al treilea element din arhitectura MVC.

View-urile sunt construite din cod HTML, CSS, C# și JavaScript, având rolul de a afișa informația către utilizator.

<div class="panel panel-default">

<!– Default panel contents –>

<div class="panel-heading">@Html.ActionLink("Adauga categorie noua", "Create")</div>

<table class="table">

<tr>

<th>

@Html.DisplayNameFor(model => model.Name)

</th>

<th>

@Html.DisplayNameFor(model => model.CategorieArtUrl)

</th>

<th>

@Html.DisplayNameFor(model => model.Description)

</th>

<th></th>

</tr>

@foreach (var item in Model)

{

<tr>

<td>

@Html.DisplayFor(modelItem => item.Name)

</td>

<td>

@Html.DisplayFor(modelItem => item.CategorieArtUrl)

</td>

<td>

@Html.DisplayFor(modelItem => item.Description)

</td>

<td>

@Html.ActionLink("Editeaza", "Edit", new { id = item.CategoryId }) |

@Html.ActionLink("Detalii", "Details", new { id = item.CategoryId }) |

@Html.ActionLink("Sterge", "Delete", new { id = item.CategoryId })

</td>

</tr>

}

</table>

</div>

View-ul de mai sus prezintă utilizatorului o listă cu, categoriile de produse disponibilie în cadrul aplicației.

Interfața generată de acest view va arăta precum în imaginea următoare:

Figura 15. View Categories

Interfața grafică a proiectului va căpăta următoarele forme în funcție de ramura aleasă:

ca și punct de lansare, este bifat HOME ca default (fig.16)

Figura 16. Lansare aplicație FOOD DELIVERY

alegerea produselor din interfața HOME:

Preparate din carne de pui (fig.17)

Figura 17. Interfața grafică pentru produse din carne de pui

Preparate din carne de porc (fig.18)

Figura 18. Interfața grafică pentru produse din carne de porc

Preparate din carne de curcan (fig.19)

Figura 19. Interfața grafică pentru produse din carne de curcan

Preparate din carne de vită (fig.20)

Figura 20. Interfața grafică pentru produse din carne de vită

Preparatele desert (fig.21)

Figura 21. Interfața grafică pentru produsele desert

Preparatele pizza (fig.22)

Figura 22. Interfața grafică pentru produsele pizza

Preparate din pește (fig.23)

Figura 23. Interfața grafică pentru produse din pește

Preparate din paste (fig.24)

Figura 25. Interfața grafică pentru produse din paste

Preparatele salată (fig.26)

Figura 26. Interfața grafică pentru produsele salată

Preparatele supă(fig.27)

Figura 27. Interfața grafică pentru produsele supă

Asemenea categoriilor mai sus prezentate, fiecare categorie de produse, ales din interfața HOME, are rezervată o locație specială unde se pot aduagă feluri de mâncare, ingrediente dar și imagini sugestive care cumulate oferă o simplificare remarcabilă în alegerea mâncării preferate.

lista completă cu categoriile de mâncare (fig.28):

Figura 28. Interfața dedicată categoriilor de mâncare

Pentru a aduce completări, modificări de detalii a fost creat un câmp ce are ca parametrii: adaugă categorie nouă, editare, ștergere. Prin intermediul acestuia este posibilă adăugarea unei imagini sugestive a fiecărei categorii.(fig.29)

Figura 29. Încărcarea unei imagini sugestive în cadrul ramurii CATEGORII

adăugare categorie de mâncare (fig.30)

Figura 30. Adăugarea unei noi categorii

editare categorie(fig.31)

Figura 31. Editarea categoriei de mâncare

detalii despre categoria de mâncare(fig.32)

Figura 32. Detalii privind categoria de mâncare

preparate culinare

lista produselor disponibile pe FOOD DELIVERY(fig.33)

Figura 33. Preparate culinare disponibile pe FOOD DELIVERY

adăugarea de noi preparate (fig.34)

Figura 34. Completarea listei cu preparate culinare

editarea produselor (fig.35)

Figura 35. Editarea produselor

detalii privind produsele existente(fig.36)

Figura 36. Detaliile oferite asupra produselor

Pentru a simula cat mai îndeaproape un magazin online, aplicația, dezvolatată ca și temă pentru proiect, vine în întâmpinare cu doua butoane binecunoscute care oferă un plus de siguranță în achiziția din mediul virtual, în speță înregistrare(fig.37) și autentificare.(fig.38)

Cele două butoane fac posibilă atât crearea unui cont unic de utilizator (valabil pentru „înregistrare”), cât și logarea/accesul la un cont deja creat (valabil pentru „autentificare)”, unde acesta poate urmări cu ușurință istoricul achiziției. Butoanele sus-menționate atrag automat după sine coșul de cumpărături (fig.39), locul unde este memorat istoricul de cumpărături.

Figura 37. Crearea contului de utiliztor

Crearea contului se face relativ simplu și urmărește exemplul oricărui cont pentru un site ales la întâmplare. Nu este nevoie de cunoștiințe în acest sens, aplicația, practic cere de la sine câmpurile ce trebiesc completate. Pentru a crea contul, utilizatorul trebuie să își introducă numele ales sau adresa de email, iar pentru alegerea parolei s-a mers pe respectarea procedurilor de securitate complexe și anume: litera mare (A, B, C), litere mici (a,b,c), cifre(1,2,3) și caractere speciale (!, ?, /, @, #, $, %). Lungimea parolei, obligatoriu trebuie sa depășească valoarea de 6 caractere.

Figura 38. Autentificarea la contul existent

Figura 39. Coșul de cumpărături

Așa cum a fost descris mai sus, istoricul de achiziții a fost memorat în coșul de cumpărături. Procesul a fost făcut automat, iar aplicația sortează în ordinea aleasă, sub formă tabelară, produsele ce urmează a fi achiziționate, iar la finalizarea achiziției totalul de plată este calculat în mod automat.

Figura 40. Detalii livrare

După verificarea coșului și apasarea butonului „cumpără”, utilizatorul este direcționat pe pagina “detalii de livrare” (fig. 40) unde trebuie să completeze toate datele necesare livrării. Apăsând butonul “Trimite comandă”, aceasta îi este confirmată cu un mesaj de mulțumire și este redirecționat pe pagina de pornire (fig. 41).

Figura 41. Finalizare comandă

Doresc ca FOOD DELIVERY să devină, alături de alte astfel de platforme, un pas mic în comandarea în mod rapid a unei mese copioase .

Vă invit să accesați FOOD DELIVERY și vă urez “Poftă bună!”

CONCLUZII

Magazinul virtual este un tip de afacere care oferă facilități atât clienților cât și ofertanților. El asigură accesul la bunuri și servicii indiferent de locația geografică fiind disponibil 24 de ore din 24.

În funcție de modul în care este construit și menținut magazinul virtual, beneficiile aduse companiei care furnizează bunurile sau prestează serviciile sunt semnificative față de efortul prestat pentru actualizarea și întreținerea acestuia

Pentru companii

Extinderea pe piețele internaționale prin asigurarea de servicii și performanță;

Asigurarea unei deschideri totale în privința relațiilor cu clienții: aceștia pot căpăta o imagine aproape completă asupra tuturor angajaților, ofertanților și partenerilor lor.

Scăderea costului de creare, procesare, distribuire, păstrare și regăsire a informației, până acum bazată pe hârtie, prin crearea unui sit web atractiv cu funcția unui magazin virtual. Siturile web personalizate, sugestiile pentru cumpărare și ofertele speciale personalizate pot într-o oarecare măsură substitui interacțiunile de tip față în față, de tip tradițional;

Creează posibilitatea modelării produselor și serviciilor după nevoile cumpărătorilor și simplificarea procedurilor;

Costuri de comunicație mai mici.

Seriozitate și siguranță. Servere paralele, redundanța hardware-ului, tehnologia fail-safe, încriptarea informației și firewall-urile pot îndeplini această cerință;

Creșterea competitivității și raționalizarea proceselor de afaceri, prin restructurări interne și prin tehnologii ale informației.

Construirea unui lanț valoric electronic, în care se pune accentul pe un număr limitat de competențe-cheie – opusul unui magazin "cu o singură oprire". (Magazinele electronice pot fi atât speciale cât și generale, dacă sunt programate corect.)

Pentru consumatori

Posibilitatea consumatorilor să cumpere sau să facă tranzacții la orice oră din zi, în tot timpul anului, din aproape orice locație;

Acordă consumatorilor mai multe posibilități de alegere a produselor și prețurilor;

Consumatorilor li se dă siguranță asupra valorii. Vânzătorii pot realiza acest lucru oferind un produs sau o linie de produse care atrage potențialii clienți prin prețuri competitive, la fel ca și în comerțul ne-electronic;

Permite o livrare rapidă a produselor și/sau serviciilor (în anumite cazuri);

Consumatorii pot să primească informații relevante în decursul câtorva secunde, și nu zile sau săptămâni;

Asigurarea motivației consumatorilor de a cumpăra și, la nevoie, de a și returna. Vânzările promoționale pot implica cupoane, oferte speciale sau reduceri. Linkurile de pe alte situri web și programele afiliate de reclame pot fi de asemenea de ajutor;

Face posibilă participarea în licitații virtuale;

Îndemnarea consumatorilor la consum. Comercianții din Internet pot asigura acest tip de ajutor printr-o amplă informare comparativă și prin facilități bune de căutare;

Permite consumatorilor să interacționeze cu alți cumpărători în comunități electronice și să compare experiențele;

Lăsând clienții să se ajute singuri. Asigurând funcționarea unui site de autoservire, ușor de folosit fără asistență, poate fi de ajutor în acest sens;

Facilitează competiția, ceea ce rezultă în scăderea prețurilor.

Familiarizează consumatorii cu tehnologia și îi ține pe aceștia în pas cu ultimele noutăți.

Pentru societate

Crearea unui "simț comun" al comunității comerciale, de exemplu prin chaturi, foruri ce solicită implicarea clientului, scheme de loialitate și programe de afinitate;

Dă posibilitatea mai multor persoane să lucreze / să cumpere de acasă, ceea ce micșorează traficul rutier și poluarea aerului;

Permite ca anumite mărfuri să fie vândute la prețuri mai scăzute, cu avantajele pentru cei cu venituri mai mici;

Crește eficiența și/sau îmbunătățesc calitatea;

Pune la dispoziție o organizare suficient de atentă și agilă pentru a răspunde rapid la orice schimbări din mediul economic, social și fizic.[17]

BIBLIOGRAFIE

[1] Tony Northrup and Mike Snell, ― Web Applications Development with Microsoft .NET Framework 4, SELF-PACED Training Kit, Microsoft Press, 2010

[2] http://www.businessmagazin.ro/analize/comert/vrei-sa-deschizi-un-magazin-online-care-sunt-regulile-nescrise-ale-comertului-invizibil-10683405

[3] Herbert Schildt – C#, Ed. Teora, 2009

[4] Robin Reynolds Haertle – POO cu Visual Basic.Net si Visual C#.Net, Ed.Teora, 2009

[5] Julia Lerman – Programming Entity Framework: Building Data Centric Apps with the ADO.NET Entity Framework, Ed. O'Reilly Media, aug.2010

[6] DuBois Paul – MySQL, Editura Teora, București, 2000.

[7] Udrică Mioara – Metode de dezvoltare software: Note de curs.

[8] Programarea WEB cu Microsoft .NET

[9] Lucian Sasu, ― Site-uri WEB dinamice in ASP.NET, 5 octombrie 2009

[10] http://www.asp.net/, accesat la data de 10.05.2016

[11] http://msdn.microsoft.com/en-us/library/015103yb%28v=vs.140%29.aspx, accesat la data de 17.05.2016

[12] https://msdn.microsoft.com/en-us/library/aa479002.aspx, accesat la data de 27.05.2016

[13] http://www.math.uaic.ro/~mapetrii/POO/, accesat la data de 27.05.2016

[14] Paul Nilsen – SQL Server 2008 Bible, Ed. Wiley Publishing, Inc., 2009

[15] Mike Snell, Lars Powers – Microsoft Visual Studio 2010 Unleashed, Ed. Sams, 2010.

[16] Steven Sanderson – Pro ASP.NET MVC V2 Framework, Ed. Apress, aprilie 2010

[17] https://ro.wikipedia.org/wiki/Magazin_virtual

Similar Posts