Arborii Decizionali
Introducere
Scopul acestui proiect este de a realiza o aplicație online care să vină în ajutorul unui manager aflat în procesul de decizie managerială. Din postura de manager al unei companii, timpul în care o decizie este luată poate fi esențial în buna dezvolare a companiei. Mai mult decât atât, este foarte important ca decizia luată să fie una corectă din punct de vedere al profitului generat.
Aplicația pe care o creez se bazează pe o metodă de decizie managerială denumită modelul arborelui decizional. Arborii decizionali sunt diagrame care centralizează datele și probabilitațile de apariție a diferitelor evenimente (care pot genera fie caștig fie pierdere pentru companie), iar în urma calculării lor determină alegerea unei variante optime de decizie.
Faptul că aceasta va rula online prezintă,după parerea mea, o serie de avantaje. Unul dintre aceste avantaje îl constituie faptul că rularea ei nu va necesita o mare putere de calcul din partea calculatorului, deoarece are nevoie doar de un browser web și o conexiune la internet. Browserele web consuma o cantinate mica de memorie RAM, iar procesoarele nu trebuie sa lucreze la o frecvența ridicată pentru a le putea rula. Mai mult decât atât, aplicația web poate fi accesată și din mers de pe dispozitive precum smartphone-uri, tablete sau laptop-uri.
Managerul va trebui să introducă în aplicație prețul de vânzare al unei unitați din produsul pe care compania îl produce, trei variante de producție pe care acesta le consideră realizabile din punct de vedere al capacitații de producție pe care compania îl are, trei cazuri de apariție al unor evenimente (favorabile sau nefavorabile companiei), în urma cărora prețul de vânzare al produsului respectiv se modifică, precum și costul de producție pentru o unitate din produsul pe care compania îl produce.
Aplicația va genera varianta optimă de producție astfel încat profitul firmei să fie maxim. De asemenea, va afișa valoarea profitului sau a pierderii pentru toate cazurile, astfel încât managerul să înțeleagă de ce a fost generată alegerea respectivă.
Prin acest lucru se dorește optimizarea timpului petrecut de manager în luarea unei astfel de decizii si eliminarea posibilelor erori de calcul în cazul în care managerul ar fi calculat manual aceste valori.
„Managemenul este cea mai nouă dintre științe și cea mai veche dintre arte.” [ J. J. Serven Screiber]
Prin management ca știință se înțelege:
„Studierea procesului de management în vederea sistematizării și generalizării unor concept, legi,principii, reguli, a conceperii de noi sisteme, metode și tehnici care să contribuie la creșterea eficienței activitaților desfașurate pentru realizarea unor obiective.”
„Studierea proceselor și relațiilor de management din cadrul organizațiilor, în vederea descoperirii legităților și principiilor care le guvernează și a conceperii de noi sisteme, metode, tehnici, și modalitați de conducere, de natură să asigure obținerea și creșterea competitivitații”.
Managementul este procesul de atingere a obiectivelor organizaționale prin angajarea și implicarea celor patru funcții principale: planificarea, organizarea, leadingul (antrenarea și motivarea) și controlul. Această definiție recunoaște că managementul este o activitate continuă, impune atingerea obiectivelor esențiale (vitale) și implică cunoașterea și înțelegerea modului cum trebuie executate și implementate cele patru funcții majore ale sale. În consecință, cele patru funcții vitale, pentru un management real, eficace și eficient, constituie practic cadrul optim al abordării lucrarii noastre.
Planificarea este funcția managementului care implică stabilirea obiectivelor și a celor mai bune modalități de atingere și îndeplinire a lor.
Această funcție, de asemenea, include considerarea a ceea ce trebuie întreprins pentru a încuraja nivelele necesare de schimbare și inovare. De exemplu, o firmă și-a stabilit un obiectiv anual de creștere a vânzărilor cu cel puțin 15%. În plus, compania urmărește să ajungă ca 70% din vânzări să fie realizate din produse care nu sunt mai vechi de 5 ani – ceea ce ne arată, în mod clar, prețul pus pe valoarea inovației. Consecința acestei orientări este faptul că firma lansează anual peste o sută de noi modele. Rata succesului acestor noi produse este una impresionantă și de invidiat, respectiv de 90%, aceasta datorită planificării cu grijă, a dezvoltării și lansării noilor produse.
Organizarea este funcția managementului care se concentrează pe alocarea și aranjarea, ajustarea resurselor umane și nonumane astfel ca planurile să fie realizate în condiții optime și de succes deplin. Organizarea este funcția prin care managerii determină ce sarcini sunt de îndeplinit, care din sarcini pot fi cel mai bine combinate, aranjate în cadrul unei anumite slujbe – loc de muncă – și, mai departe, cum aceste locuri de muncă pot fi grupate în unități, compartimente sau departamente, care alcătuiesc structura organizației. Angajarea pe locurile de muncă sau posturile organizației a indivizilor care pot executa și îndeplini obiectivele și sarcinile planurilor, constituie, de asemenea, o parte a funcției de organizare.
Leading (Antrenare și motivare). Leading-ul este o funcție a managementului care implică influențarea celorlalți membri ai organizației să se angajeze în comportări și atitudini de muncă necesare pentru a se atinge obiectivele organizaționale. De aici, leading-ul include comunicarea cu ceilalți membri ai organizației, sprijinul în schițarea și proiectarea unei viziuni generale asupra a ceea ce se poate îndeplini, prevederea direcționării și motivarea membrilor organizației pentru a depune efortul necesar îndeplinirii sarcinilor locului de muncă și obiectivelor organizaționale.
Controlul este funcția managementului care urmărește reglarea activităților organizaționale astfel ca performanța reală să fie conformă cu standardele și obiectivele organizaționale scontate. Pentru a face reglarea necesară, managerii au nevoie de a supraveghea atent mersul activităților, să compare rezultatele, performanțele cu standardele scontate sau progresele în realizarea obiectivelor și să întreprindă acțiunile corective necesare.
Modelul arborelui decizional
Arborele decizional reprezintă o metodă de calcul în vederea asistarii în luarea unei decizii manageriale. Acesta constă într-o diagramă care centralizează datele și probabilitațile de apariție a diferitelor evenimente (care pot genera fie caștig fie pierdere pentru companie), iar în urma calculării lor determină alegerea unei variante optime de decizie.
Elementele arborelui de decizie sunt:
Ramurile – evenimente care au loc din punct de vedere al decidentului și sunt simbolizate în cadrul diagramei cu o linie.
Nodurile – puncte în care se iau decizii. Se simbolizează cu cerc, dacă decizia aparține în totalitate decidentului sau cu patrat, atunci când decizia este influențată de factori externi.
Arborele se construiește de la stânga la dreapta și se calculează în sens invers. Nodurile se numerotează în ordinea apariției lor, iar pe ramuri se notează prescurtat atât denumirea evenimentului care are loc cât și probabilitatea ca acesta să apară.
Calculul se face începând din nodul cel mai din dreapta, calculând în fiecare nod o mărime numeric denuimtă valoare așteptată pe care o notăm cu VA astfel:
în nodul de tip cerc : VA = min/max {r1, r2, r3,….rn}
în nodul de tip pătrat : VA = ∑ r × p
Exemplu de caz în care se poate aplica această metodă:
O firmă produce microprocesoare la costul de producție de 300 u.m./bucată. În present, prețul de vănzare în magazine este de 325 u.m./bucată.
Conducerea firmei estimează că atunci cănd produsul va fi văndut se pot înregistra fluctuații ale prețului astfel :
cu o probabilitate de 30%, prețul de vânzare să scadă cu 75 u.m./bucată.
cu o probalilitate de 20%, prețul de vânzare să rămână neschimbat.
cu o probabilitate de 50%, prețul de vânzare sa crească cu 125 u.m./bucată.
Din motive tehnice, producția poate fi stabilită la 1000, 2000 sau 3000 de bucați.
Să se decidă ce cantitate de produse ar trebui să realizeze firma astfel încât să obțină profit maxim.
0,3 P.V. scade
1000 bucăți 0,2 P.V. rămâne constant
0,5 P.V. crește
0,3 P.V. scade
2000 bucăți 0,2 P.V. rămâne constant
0,5 P.V. crește
0,3 P.V. scade
3000 bucăți 0,2 P.V. rămâne constant
0,5 P.V. crește
P.V. scade (250 – 300) x 1.000 = -50.000
1000 bucăți P.V. rămâne constant (325 – 300) x 1.000 = 25.000
P.V. crește (450 – 300) x 1.000 = 150.000
P.V. scade (250 – 300) x 2.000 = -100.000
2000 bucăți P.V. rămâne constant (325 – 300) x 2.000 = 50.000
P.V. crește (450 – 300) x 2.000 = 300.000
P.V. scade (250 – 300) x 3.000 = -150.000
3000 bucăți P.V. rămâne constant (325 – 300) x 3.000 = 75.000
P.V. crește (450 – 300) x 3.000 = 450.000
Profit = Investiții – Cheltuieli = Preț Vânzare (P.V.) – Cost Producție (C.P.)
VA2 = ( -50.000) x 0,3 + 25.000 x 0,2 + 150.000 x 0,5 = 65.000
VA3 = ( -100.000) x 0,3 + 50.000 x 0,2 + 300.000 x 0,5 = 130.000
VA4 = ( -150.000) x 0,3 + 75.000 x 0,2 + 450.000 x 0,5 = 195.000
VA1 = max {VA2, VA3, VA4} = 195.000
Decizia :
Se decide realizarea a 3000 de bucăți, în acest caz profitul fiind maxim.
Tehnologii folosite
Aplicația web pentru asistarea deciziei manageriale a fost creată in Microsoft Visual Web Developer 2012, program ce este parte componentă a platformei .NET care aparține companiei Microsoft. Limbajul folosit pentru scrierea aplicației este Visual Basic C#.
ASP reprezintă tehnologia dezvoltată de Microsoft pentru crearea de pagini web dinamice, ce se bazează pe stocarea și execuția scripturilor pe serverul Web.
Serverele Web care suporta tehnologia ASP urmatoarele:
PWS – Personal Web Server
IIS – Internet Information Server
Caracteristicicile tehnologiei ASP sunt:
Permite crearea, accesarea și actualizarea usoară a bazelor de date
Viteză bună de execuție
Securitate este una ridicată, datorită faptului că scriptul nu poate fi vizualizat în browser
Generarează dinamic răspunsurile către clienții web
Microsoft .NET este o platforma de dezvoltare software, care are scopul de a oferi programatorilor un mediu de lucru în care sunt puse la dispoziție diverse servicii precum : managementul firelor de execuție, managementul duratei de viata a obiectelor, tratarea exceptiilor și care determină o viteza mult mai mare a dezvoltării aplicațiilor.
Inovația pe care Microsoft a încercat să o aducă, constă în dezvoltarea unei platforme comune pentru mai multe limbaje de programare, platformă ce permite dezvoltarea unei aplicații în orice limbaj dorit de programator. Acest lucru este posibil prin implementarea unui interpretor – Comon Language Runtime – care transformă un limbaj oarecare în cod de program, compatibil cu platforma .NET. Codul rezultat în limbajul Microsoft Intermediate Language, poate fi apoi compilat pentru orice sistem de operare ce are instalat .NET Framework. Paginile web dinamice create prin intermediul ASP pot îngloba mai multe tipuri de tehnologii Web existente. Scripturile din fisierele ASP pot fi și ele de mai multe feluri :vbscript, javascript, active server).
Caracteristicile de bază ale platformei .NET sunt următoarele :
Faciliteză integrarea usoară a aplicațiilor Windows cu cele de web
Permite interoperabilitatea între aplicații
Oferă un mediu stabil de programare orientată pe obiect;
Instalarea este simplificată, fără conflicte între versiuni;
Codurile sunt executate securizat;
Utilizează standardele existente pentru comunicare;
Înlocuiește mediului script cu cel compilat
Codul unei aplicații, scris într-un anumit limbaj de programare, poate fi integrat în altă aplicație, creată în alt limbaj de programare
Limbajele care suportă .NET, sunt în primul rând cele dezvoltate de Microsoft – VB .NET, C# .NET, Visual C++ .NET, dar și limbaje dezvoltate de alte firme precum
Borland C#, Cobol, Eiffel, Perl, Phython, Smalltalk, Pascal, Fortran.
Limbajele de programare dezvoltate de Microsoft, desi toate au la bază aceeasi platformă, se pot clasifica în funcție de gradul de complexitate:
VB .NET, este cel mai accesibil, reprezentând o evoluție a mediului Visual Basic 6.0;
C# .NET, este un limbaj „hibrid”, încadrându-se între complexitatea limbajului C++ si accesibilitatea limbajului VB .NET;
VC ++ .NET – este cel mai complex, reprezentând o evoluție a mediului VC++ 6.0.
Tehnologia ASP .NET, aduce îmbunătățiri simțitoare față de ASP, cele mai importante fiind următoarele:
Execuția este mai rapidă;
Este independent de programul de navigare pe Internet;
Codul aplicației este compilat si executat de server; acesta, în cazul ASP, este interpretat pe măsura parcurgerii scripturilor;
Utilizează noțiunea de code behind, adică separă partea de prezentare de partea de execuție a unei aplicații WEB;
Favorizează reutilizarea codului, ceea ce în cazul ASP simplu, era o problemă, singura „reutilizare” care se făcea în ASP, fiind aceea de copiere a codului;
Serializarea/deserializarea cu usurință a obiectelor;
Asigură interoperabilitatea între aplicații WEB, între aplicații WEB si alte categorii de aplicații;
Securitate crescută;
Datorită platformei .NET, pot fi înglobate cu usurință în aplicațiile WEB toate componentele care erau până acum caracteristice doar mediului Windows.
Microsoft ASP .NET este următoarea generație a tehnologiei de dezvoltare a aplicațiilor Web. Ea preia tot ce este mai bun de la Active Server Pages (ASP) la fel ca si serviciile bogate si facilitățile oferite de Common Language Runtime (CLR) si multe alte facilități noi. Rezultatul este o nouă modalitate de dezvoltare web rapidă, scalabilă si robustă care permite o mare flexibilitate cu foarte puține linii de cod scrise. Web Forms reprezintă partea centrală pe care se bazează ASP .NET. Acestea reprezintă elementele de interfață cu utilizatorul care dau aplicațiilor web aspectul si comportamentul dorit. Formularele Web sunt similare formularelor Windows prin faptul că oferă proprietăți, metode si evenimente controalelor plasate pe ele. Totusi, aceste elemente de interfață sunt afisate prin intermediul limbajului HTML, iar în cazul utilizării Microsoft Visual Studio .NET poate fi folosită interfața familiară de tip drag-and-drop pentru crearea aspectului formularelor Web. Formularele Web sunt constituite din două componente: partea vizuală (fisierul .ASPX) si codul din spatele formularului, care este stocat în fisiere separate.
Crearea unei aplicatii web folosind .NET
Un proiect ASP.NET poate fi creat cu ajutorul Visual WebDeveloper 2005 Express Edition: File -> New Web Site -> ASP.NET Web Site. Se alege la opțiunea Language limbajul C#. Se creaza automat de catre IDE urmatoarele fisiere:
Un Form care este de fapt un fisier Default.aspx, care poate fi vizualizat in doua moduri: Design si HTML. Acesta contine cod HTML si aici pot fi asezate prin design contoalele care ruleaza la nivel de server.
Fiecare fisier .aspx are asociat unul de tip .cs, unde este codul din spatele Form-ului, adica codul care este executat la nivel de server. Se poate ajunge la acel fisier cu click dreapta pe Form si View Code. Acest fisier are atasate automat cateva namespaces (folosind cuvantul cheie din limbajul C# using), printre care se pot observa si cele din familia System.Web.
Web.config – acesta este un fisier XML in care se pot seta mai multe informatii de configurare a aplicatiei web. In general, el este folosit pentru securitate (autentificare), dar si pentru stocarea unor informatii gen constante care să poata fi regasite din codul executabil.
Avantajele stocarii unor astfel de constante in web.config sunt: modificarile in acest fiser nu atrag dupa sine necesitatea de recompilare a aplicatiei, respectiv informatiile sunt într-un singur loc si pot fi modificate cu usurinta. (În fereastra soluțion explorer, click dreapta pe website1, add existing item și apoi web.config).
In general, se recomanda ca designul aplicatiilor (din punct de vedere al ingineriei software si nu vizual) să respecte anumite criterii. Astfel, daca ne gandim la modelul arhitectural pe mai multe nivele:
User Interface Layer – Form-uri web, in care se fac afisari si de unde se preiau informatii de la utilizator.
Business Layer – clase in care se efectueaza operatiile specifice aplicatiei.
Data Access Layer – clase care se ocupa cu accesul la baza de date si trimiterea informatiilor in nivelele superioare.
ASP.NET vine cu cateva controale predefinite, in plus fata de cele HTML, numite si controale server, numite asa deoarece tratarea evenimentelor la care acestea raspund se executa pe server. Visual Studio .NET 2005 are o interfată care permite manipularea facila a acestora din Toolbox.
ASP.NET 2.0 vine cu peste 50 de noi astfel de controale. Toolbox-ul este alcatuit din tab-urile Standard, Data, Validation, Navigation, Login, WebParts, HTML si General. Fiecare tab contine controale specifice.
In ASP.NET 2.0, majoritatea controalelor dispun de Smart Tasks (sau Common Tasks). Acestea, in functie de controlul in cauza, permit formatarea controalelor cu stiluri predefinite, atasarea de date, setarea modului de vizualizare etc.
Observati ca atunci cand introduceti controale într-un Form web, in codul "din spatele acestuia", adica in fisierul .cs asociat, se produc niste modificari: se creaza un nou obiect, in functie de ce anume ati adaugat, ca instanta al uneia dintre clasele din spatiul de nume System.Web.UI.WebControls.
Exista controale folosite la afisare de date: Labels, TextBoxes; dar in mod curent se folosesc si unele pentru afisarea unor colectii de informatii, cum ar fi: ListBoxes, DropDownLists si GridViews. Acestea din urma se folosesc foarte mult in aplicatii de management al informatiilor, cum ar fi de exemplu una de biblioteca, unde se poate dori afisarea tuturor cartilor dintr-un anumit domeniu, etc.
Controalele sunt caracterizate prin:
Proprietati (ID-ul controlului, Text, Font, Activare etc.)
Evenimente predefinite la care stiu să raspunda (de exemplu, butoanele au Click, textbox-urile au TextChanged, etc.)
In momentul in care doriti să tratati un eveniment, să spunem apasarea unui buton de catre utilizator, trebuie să asociati un handler evenimentului predefinit Click al butonului respectiv. Un handler nu este altceva decât o functie, iar asocierea respectiva se poate face foarte usor din Visual Studio.
Pentru cazul anterior, este suficient dublu-click pe buton, pentru ca să se creeze automat o metoda de tipul
protected void ButtonX_Click(object sender, EventArgs e){}
Formulare în ASP.NET
Pentru a prezenta informatii in navigatorul clientului folosim formularele Web ASP.NET care ofera o abstractizare in modelul de programare, un model orientat obiect si bazat pe evenimente. Acest mediu de lucru beneficiaza de toate facilitatile oferite de platforma .NET (siguranta tipurilor, mediu de executie controlat, mostenire) si reprezinta o inlocuire a clasicelor formulare HTML
Componenta vizuala este reprezentata de un fisier cu extensia .aspx-actionand ca un container pentru HTML, text static si controale server care pot fi afisate in browser, iar logica aplicatiei este reprezentata de un fisier cu extensia .cs (pentru limbajul Visual C#) sau
.vb (pentru Visual Basic.NET). Fisierele .aspx mai sunt referite ca pagini ASP.NET. Aceasta tehnica de separare a codului de partea de prezentare este numita"code-behind programming"
Formularele Web si ASP .NET au fost create pentru a depăsi câteva dintre limitările ASP.
Principalele facilități noi sunt redate în continuare:
Separarea interfeței HTML de logica aplicației
Un set bogat de controale pentru server ce detectează tipul browserului si generează limbaj HTML corespunzător acestuia
Mai puțin cod de scris din cauza modului în care sunt construite noile controale server
Model de programare bazat pe evenimente
Cod compilat si suport pentru mai multe limbaje de programare, fată de ASP care era interpretat ori ca VBScript ori ca Jscript
Permite crearea de controale de către terți care să aducă noi funcționalități.
O pagina WebForms, la procesarea pe serverul Web, poate fi privita ca un program executabil pentru care iesirea standard o reprezinta browserul sau dispozitivul client. In acest model, pagina trece prîntr-o serie de stagii de procesare: initializare, procesare si eliberare. In ordinea aparitiei, acestea sunt:
Init, eveniment care initializeaza pagina si in care proprietatile controalelor sunt actualizate. Aici este corect să initializam controale care se adauga dinamic la pagina sau variabile necesare inainte de initializarea paginii;
Load poate fi numit locul in care utilizatorul isi initializeaza codul. Evenimentul este generat de fiecare data cand pagina este incarcata dupa ce controalele au fost initializate la pasul anterior;
Tratarea evenimentelor utilizator, reprezinta stagiul in care sunt tratate evenimentele generate de client cum ar fi: schimbarea unui text într-un control, apasarea unui buton etc. Trebuie retinut ca aceste evenimente nu sunt tratate într-o anumita ordine pe server, iar tratarea lor are loc dupa aparitia unui eveniment Click care trimite formularul la server (a unui submit);
PreRender, eveniment care poate fi folosit pentru a face ultimile actualizari asupra paginii Web inainte ca aceasta să fie generata la client;
Render, eveniment care genereaza la client reprezentarea HTML a paginii Web ASP.NET incarcata la server;
Unload este ultimul eveniment care se executa inainte ca pagina să fie eliberata. Evenimentul este util de folosit atunci cand dorim să efectuam ultimele operatii de eliberare a resurselor: inchiderea fisierelor, a conexiunilor la baza de date si eliberarea obiectelor din memorie.
Controale în ASP.NET
Exista doua tipuri de baza in care pot fi impartite controalele:
HTML Controls, reprezinta elemente HTML care pot fi programate la nivelul serverului si expun un model obiectual restrictionat la capabilitatile elementelor HTML pe care le afiseaza;
Web Controls, aduc facilitati superioare controalelor HTML incluzand controale mult mai complexe, cum ar fi controlul calendar, iar modelul obiect nu reflecta neaparat sintaxa HTML.
Controalele HTML sunt asemenea elementelor HTML folosite cu ajutorul Frontpage sau al oricărui alt editor HTML. Pot fi folosite si elementele standard HTML într-un Formular Web, de exemplu pentru a crea o casetă de text: <input type="text" id=txtFirstName size=25>
Orice element poate fi însă marcat să ruleze ca si un control HTML atunci când formularul este procesat de server prin adăugarea textului "runat=server" în interiorul tagului.
<input type="text" id=txtFirstName size=25 runat=server>
În cazul folosirii Visual Studio .NET, adăugarea acestui text ce permite procesarea controlului de către server se poate face foarte simplu dând clic dreapta pe elemental HTML în Design View si selectând Run as Server Control din meniul contextual.
Controalele HTML permit de asemenea tratarea evenimentelor asociate cu tagul HTML (clic pe un buton, de exemplu) si manipularea în mod programatic a tagului prin codul din Formularul Web. In momentul în care controlul este afisat în browser, tagul este afisat exact asa cum a fost salvat ca si cum a fost salvat pe Formularul Web, mai puŃin textul „runat=server”, ceea ce oferă un control foarte precis a ceea ce va fi trimis către browser.
ASP.NET defineste un al doilea tip de controale – Web Controls. Numite si controale inteligente, ele pot fi caracterizate prin:
ofera un bogat si consistent model obiectual de programare;
detecteaza automat tipul navigatorului, iar afisarea la client va fi optimizata in functie de capabilitatile acestuia;
pentru unele controale se pot defini sabloane (template-uri) de afisare;
posibilitatea de a controla generarea evenimentelor pe server;
posibilitatea de a trimite evenimente unui container din interiorul acestuia (de exemplu, un control de tip buton in interiorul unui tabel);
legarea la surse de date a tuturor proprietatilor controalelor pentru a influenta afisarea la executie.
Sunt definite in spatiul de nume System.Web.UI.WebControls si mostenesc, direct sau indirect, clasa de baza WebControl.
CSS – Cascading Style Sheets (foi de stil in cascada)
Stilurile pun la dispozitia creatorilor de site-uri noi posibilitati de personalizare a paginilor Web. Un stil reprezinta un mod de a scrie un bloc de text ( adica anumite valori pentru font, marime culoare, aliniere, distante fata de margini etc). Exista doua modalitati de a defini un stil:
sintaxa CSS (Cascading Style Sheets);
sintaxa Javascript.
O foaie este construită din reguli de stil care spun unui browser cum să arate un document. Regulile de stil sunt formate după cum urmează: selector { property: value }
Declarațiile de stil multiple pentru un singur selector pot fi despărțite de punct și virgulă:
selector { property1: value1; property2: value2 }
Ca exemplu, următorul segment de cod definește proprietățile culoare (color)
și mărime-font (font-size) pentru elementele H1 și H2: <head>
<title>exemplu css</title> <style>
h1 { font-size: x-large; color: red } h2 { font-size: large; color: blue }
</style>
</head>
Orice element HTML este un posibil selector CSS1. Selectorul este elementul care este legatla un stil particular. De exemplu, selectorul în declarația CSS: P { text-indent: 3em }, este P.
Declarațiile CSS pot fi introduse într-o pagina HTML în 3 moduri: inline, intern și extern.
1) Declarația inline se realizeză cu ajutorul tag-ului style. De exemplu:
<p style="background: blue; color: white;">A new background and font color with inline CSS</p>
La modul general declarația este de forma:
<htmltag style="cssproperty1: value; cssproperty2: value;"> </htmltag> O eroare des întâlnită este folosirea „” în interiorul declarației de mai sus:
<p style="background: url("yellow_rock.gif");">Greșit</p> <p style="background: url(yellow_rock.gif);">Corect</p>
2) Declarația internă se realizează cu ajutorul tag-ului <style> … </style> <html>
<head>
<style type="text/css"> p {color: white; }
body {background-color: black; } </style>
</head>
<body>
<p>White text on a black background!</p> </body>
</html>
3) Declarația externă. Atunci când se folosește CSS este de preferat să se separe codul HTML de cosdul CSS. De aceea, declarațiile CSS se pun de obicei într-un fișier separat, cu extensia .css . Avantajele unei asemenea abordari sunt:
separarea conținutului paginii de design, crescând lizibilitatea codului html
modificarea ușoară a design-ului unui site prin modificarea într-un singur fișier css decât in mai multe pagini html
reutilizarea ușoară a codului css
Declarația externă se realizează prin intermediul tag-ului <link></link>:
<html>
<head>
<link rel="stylesheet" type="text/css" href="test.css" /> </head>
<body>
<h3> A White Header </h3>
<p> This paragraph has a blue font. The background color of this page is gray because we changed it with CSS! </p>
</body>
</html>
Fișierul test.css trebuie să se afle în același director cu pagina html.
În CSS se pot defini așa numitele clase. Un simplu selector poate avea diferite clase, astfel permițându-i aceluiași element să aibă diferite stiluri. Toate tagurile din pagina HTML cu aceeași clasă vor fi formatate identic.
p.html { color: #191970 } p.css { color: #4b0082 }
Exemplul de mai sus a creat două clase, css și html pentru folosirea cu tag-ul
P al HTML. Caracteristica CLASS (clasă) este folosită în HTML pentru a indica clasa unui element, ca de exemplu,
<P CLASS = html>Doar o clasă este permisă pentru un selector. </P> <P CLASS = css> De exemplu, p.html.css este invalid.</P>
<P CLASS = html>Acest rând are aceeași culoare cu primul. </P>
Clasele pot fi declarate fără un element asociat:
.note { font-size: small }
În acest caz, clasa note poate fi folosită cu orice element.
Selectorii ID sunt sunt desemnați cu scopul de a defini elemente în mod individual și nu mai multe elemente o dată ca în cazul claselor. Un selector ID este desemnat folosind indicatorul "#" care precede un nume. De exemplu, un selector ID ar putea fi desemnat astfel:
#text3M { text-indent: 3em }
La acest selector se va face referință în HTML folosind caracteristica ID:
<P ID=text3M>Textul are în față un spațiu de mărimea a trei litere `m`</P>
O proprietate este desemnată unui selector pentru a-i manipula stilul. Exemplele de proprietăți includ color, margin, și font.
Pentru a descrie formatările repetate într-o foaie de stil, gruparea selectorilor și a declarațiilor este permisă. De exemplu, toate titlurile dintr-un document ar putea primi declarații identice prîntr-o grupare:
H1, H2, H3, H4, H5, H6 {color: red; font-family: sans-serif }
Toți selectorii care sunt interpuși în cadrul altor selectori vor moșteni valorile proprietăților selectorilor în cadrul cărora sunt interpuși, dacă nu se specifică altfel. De exemplu, o culoare definită pentru BODY va fi aplicată și textului dintr-un paragraf.
Există și cazuri în care selectorul conținut nu moștenește valorile selectorului care îl conține, dar acestea ar trebui să se evidențieze în mod logic. De exemplu, proprietatea margin-top nu este moștenită; în mod intuitiv, un paragraf nu va avea aceeași margine de sus cum o va avea tot documentul (prin selectorul body).
Baza de date folosită pentru stocarea istoricului a fost proiectată în SQL Server 2008 folosind limbajul de programare SQL.
SQL (Structured Query Language – Limbaj Structurat de Interogare) este un limbaj de programare specific pentru manipularea datelor în sistemele de manipulare a bazelor de date relaționale (RDBMS), iar la origine este un limbaj bazat pe algebra relațională. Acesta are ca scop inserarea datelor, interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date. A devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru creearea, modificarea, regăsirea și manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaționale. Pe lângă versiunile standardizate ale limbajului, există o mulțime de dialecte și variante, unele proprietare, fiind specifice anumitor SGBD-uri și de asemenea conținând extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaționale).
SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora.
SQL a fost inițial dezvoltat la IBM de către Donald D. Chamberlin și Raymond F. Boyce în anul 1974. Inițial, numele era SEQUEL (Structured Query Language), avea ca scop manipularea și regăsirea datelor stocate în bazele de date relaționale IBM.
La sfârșitul anilor '70, Relational Software, Inc. (în prezentOracle Corporation) a văzut potențialul acestor concepte descrise de Codd, Chamberlin și Boyce, și a dezvoltat propriul SQL RDBMS cu aplicații la U.S. Navy, Central Intelligence Agency și U.S. government. În iunie 1979, Relational Software, Inc. a introdus prima implementare comercială disponibilă de SQL, Oracle. După testarea SQL, au apărut implementări ale acestui limbaj și din partea firmei IBM: SQL/DS și DB2.
Limbajul SQL este divizat în următoarele elemente:
Clauze, care sunt componente ale instrucțiunilor și interogărilor.
Expresii, al căror efect este producerea de valori scalare sau tabele.
Predicates, pot specifica condiții care sunt evaluate de SQL conform logici ternare sau logicii booleene, în scopul limitării efectelor instrucțiunilor, sau pentru a influența cursul programului.
Interogările, au ca scop regăsirea datelor după criterii specifice.
Instrucțiunile, pot avea un efect persistent asupra datelor sau structurii datelor, sau pot controla tranzacțiile, conexiunile sau cursul programului. În general, instrucțiunile SQL se termină cu caracterul punct-virgulă (";"), deși acest lucru nu este obligatoriu în toate platformele SQL. Spațiile albe suplimentare sunt ignorate, dar ele pot fi folosite pentru lizibilitatea codului SQL
Oricărei coloane (sau câmp) dintr-un tabel SQL îi este asignat un tip de dată, la fel ca în toate celelalte limbaje de programare. Tipurile de date sunt următoarele:
CHARACTER (sau CHAR) – șir de caractere
INTEGER (sau SMALLINT) – număr întreg
FLOAT, REAL sau DOUBLE PRECISION – număr real
NUMERIC(precision, scale) sau DECIMAL(precision, scale) – număr zecimal , unde “precision” înseamnă numărul de cifre din partea întreagă, “scale” înseamnă numărul de zecimale.
DATE – data zilei.
TIME – ora.
Pentru scrierea codului sursă necesar dezvoltării aplicației în Visual Studio a fost folosit limbajul C#.
Limbajul C# fost dezvoltat de o echipă restrânsă de ingineri de la Microsoft, echipă din care s -a evidențiat Anders Hejlsberg (autorul limbajului Turbo Pascal și membru al echipei care a proiectat Borland Delphi).
C# este un limbaj simplu, cu circa 80 de cuvinte cheie, și 12 tipuri de date predefinite. El permite programarea structurată, modulară și orientată obiectual, conform perceptelor moderne ale programării profesioniste.
Principiile de bază ale programării pe obiecte (INCAPSULARE, MOSTENIRE, POLIMORFISM) sunt elemente fundamentale ale programării C#. În mare, limbajul moștenește sintaxa și principiile de programare din C++. Sunt o serie de tipuri noi de date sau funcțiuni diferite ale datelor din C++, iar în spiritul realizării unor secvențe de cod sigure (safe), unele funcțiuni au fost adăugate (de exemplu, interfețe și delegări), diversificate (tipul struct), modificate (tipul string ) sau chiar eliminate (moștenirea multiplă și pointerii către funcții). Unele funcțiuni (cum ar fi accesul direct la memorie folosind pointeri) au fost păstrate, dar secvențele de cod corespunzătoare se consideră ”nesigure”.
O aplicatie C# este formată din una sau mai multe clase, grupate în spații de nume (namespaces). Un spațiu de nume cuprinde mai multe clase cu nume diferite având funcționalități înrudite. Două clase pot avea același nume cu condiția ca ele să fie definite în spații de nume diferite. În cadrul aceluiași spațiu de nume poate apărea definiția unui alt spațiu de nume, caz în care avem de-a face cu spații de nume imbricate. O clasă poate fi identificată prin numele complet (nume precedat de numele spațiului sau spațiilor de nume din care face parte clasa respectivă, cu separatorul punct). În exemplul nostru, HelloWorld.Program este numele cu specificație completă al clasei Program.
O clasă este formată din date și metode (funcții). Apelarea unei metode în cadrul clasei în care a fost definită aceasta presupune specificarea numelui metodei. Apelul unei metode definite în interiorul unei clase poate fi invocată și din interiorul altei clase, caz în care este necesară specificarea clasei și apoi a metodei separate prin punct. Dacă în plus, clasa aparține unui spațiu de nume neinclus în fișierul curent, atunci este necesară precizarea tuturor componentelor numelui: spațiu.clasă.metodă sau spațiu.spațiu.clasă.metodă etc.
În fișierul nostru se află două spații de nume: unul definit (HelloWorld) și unul extern inclus prin directiva using (System). Console.Writeln reprezintă apelul metodei Writeln definită în clasa Console. Cum în spațiul de nume curent este definită doar clasa Program, deducem că definiția clasei Console trebuie să se găsească în spațiul System.
Pentru a facilita cooperarea mai multor programatori la realizarea unei aplicații complexe, există posibilitatea de a segmenta aplicația în mai multe fișiere numite assemblies. Într-un assembly se pot implementa mai multe spații de nume, iar parți ale unui aceeași spațiu de nume se pot regăsi în mai multe assembly-uri. Pentru o aplicație consolă, ca și pentru o aplicație Windows de altfel, este obligatoriu ca una (și numai una) dintre clasele aplicației să conțină un „punct de intrare” (entry point), și anume metoda (funcția) Main.
Tipuri de date
În C# există două categorii de tipuri de date:
tipuri valoare
tipul simple: byte , char, int, float etc. tipul enumerare – enum
tipul structură – struct
Analiza SWOT a aplicației de decizie managerială
Analiza SWOT este o metodă folosită în mediul de afaceri, pentru a ajuta la proiectarea unei viziuni de ansamblu asupra firmei. Ea funcționează ca o radiografie a firmei sau a ideii de afaceri și evaluează în același timp factorii de influență interni și externi ai unei organizații, precum și poziția acesteia pe piață sau în raport cu ceilalți competitori[1] cu scopul de a pune în lumină punctele tari și slabe ale unei companii, în relație cu oportunitățile și amenințările existente la un moment dat pe piață.
Conceptul analizei strategice SWOT provine dintr-o cercetare efectuată între anii 1960 și 1970 la Stanford Research Institute din SUA. Acronimul SWOT provine din engleză Strengths, Weaknesses, Opportunities, Threats, însemnând „Puncte tari, Puncte slabe, Oportunități, Amenințări”.
Puncte tari
Puncte slabe
Oportunitati
Amenințări
Proiectarea Aplicației
.1.Diagrama de activitate
Aplicația are ca scop asistarea managerului în procesul de decizie. Aplicația rulează pe un website, pentru a putea fi ușor accesibilă utilizatorilor, indiferent unde aceștia se află și indiferent de dispozitivul pe care îl au la îndemâna pentru a accesa aplicația.
Pentru început, utilizarea aplicației ca fi gratuită, pentru a atrage cat mai mulți manageri spre a o folosi. Ulterior, cei ce doresc să o folosească în continuare vor fi nevoiți să plătească un abonament lunar sau anual.
Totuși există de la bun început necesitatea creeri unui cont de utilizator în vederea accesarii site-ului. Acest lucru este facut pentru ca administratorul să poata avea control asupra vizitatorilor dar și pentru a proteja site-ul împotriva furtului de informație.
Pentru o mai buna intelegere a operatiilor, in special a celor complexe, se realizeaza diagrama de activitate. Aceasta se prezinta sub forma unei scheme logice, care arata fluxurile de control dintre activitati, si este folosita pentru a modela aspectele dinamice ale sistemului, modelarea unui proces efectuandu-se pas cu pas.
.2.Diagrama cazurilor de utilizare
In urma analizarii cerintelor aplicatiei se contureaza urmatoarele cazuri de utilizare:
administrare sistem – administreaza site-ul, se ocupa cu mentenatnta si upgrade-ul aplicatiei si gestioneaza utilizatorii sistemului;
autentificare utilizator – permite introducerea contului si a parolei in vederea logarii;
vizionare servicii – permite navigare in lista serviciilor.
Actorii care interactioneaza cu sistemul sunt urmatorii:
administrator sistem – administreaza site-ul, se ocupa cu mentenatnta si upgrade-ul aplicatiei si gestioneaza utilizatorii sistemului;
utilizator – vizioneaza serviciile oferite, se autentifica si foloseste aplicatia online in scopul obtinerii unei decizii optime;
vizitator – vizioneaza serviciile oferite, fara a avea insa acces la aplicatie.
Detalierea cazurilor de utilizare :
Autentificare utilizator: Realizeaza operatia de autentificare pentru un utilizator al programului.
Actori: utilizator, administrator .
Flux principal de evenimente: actiunile efectuate de utilizator sunt urmatoarele:
Introducere identificator utilizator si parola.
Programul verifica corectitudinea informatiilor introduse.
Daca informatiile sunt corecte, atunci se permite accesul utilizatorului in sistem, iar cazul de utilizare se incheie.
Flux alternativ de evenimente: daca informatiile nu sunt corecte:
Se afiseaza un mesaj de eroare si se solicita reintroducerea informatiilor pentru autentificare.
Utilizatorul poate reincerca autentificarea, deci se reia cazul de utilizare cu fluxul principal de evenimente.
Utilizatorul renunta, cazul de utilizare luand sfarsit.
Administrare: Totalul activitatlor realizate de administrator si anume: gestionarea conturilor inregistrate pe site (supravegherea conturilor, stergerea conturilor) si gestionarea site-ului si a aplicatiei ce ruleaza pe acesta (mentenanta si upgrade).
Actori: administrator
.3.Diagrama de secvență
Diagramele de secvență descriu cronologic interacțiunea obiectelor, identificând mesajele schimbate între obiecte ca raspuns la un eveniment, împreună cu secvența mesajelor. Cu ajutorul diagramelor de secvență se realizeaza o prima vizualizare a intercomunicarii claselor. Scopul este întelegerea ordinii evenimentelor. Pe măsură ce ordonarea devine stabilă, un eveniment devine o operație specifică pe care o inițializează obiectul receptor.
Pasii parcursi de utilizator pentru folosirea aplicatiei:
Utilizatorul se logheaza folosind Id-ul si parola alese atunci cand si-a creat contul.
Sistemul valideaza datele introduse si transmite utilizatorului confirmarea de logare daca datele au fost corecte.
In acest moment utilizatorul are acces la aplicatie si o poate folosii.
La incheierea lucrului utilizatorul se delogheaza.
Sistemul incheie sesiunea de lucru pe contul respectiv, trimitand utilizatorul pe pagina Acasa
Implementarea aplicației
Pentru crearea aplicației online am folosit programul Visual Studio 2012.
Pentru început, am creat un nou proiect web (File/ New Project/ Visual C#/ ASP.NET Empty Web Form Application) și l-am salvat sub denumirea “Licenta”, într-un folder aflat pe Desktop. Astfel, proiectul nu conținea nimic, permițându-mi sa creez treptat fiecare element component al website-ului.
Primul element pe care l-am creat a fost master page-ul (Project/ Add New Item/ Master Page). Master page-ul reprezintă o componentă ASP.NET care are extensia .master (spre exemplu, Licenta.master), cu un layout predefinit ce poate conține text static, elemente HTML și elemente de server. Acesta îmbină practic toate paginile website-ului, grupându-le în spații denumite Content Holdere. Avantajele master page-urilor sunt:
Permit centralizarea funcțiilor comune ale paginilor, astfel încat să putem face modificari într-un singur loc
Simplifică munca programatorului, permițând crearea unui set de controale și scrierea unui cod ale căror rezultate pot fi aplicate mai multor pagini. Spre exemplu putem crea in master page menuiul site-ului iar acesta va fi vizibil pe toate paginile.
Fiind structurat pe layere, cand dorim sa modificăm codul sursă al unei pagini, vom face asta doar în layerul paginii respective, fără sa le afectăm pe celelalte.
Astfel, master page-ul ne oferă un mod foarte organizat de a lucra cu paginile website-ului.
În master page am creat un content holder ce conține meniul orizontal al website-ului și banner-ul. Acestea este vizibile și răman neschimbate indiferent de pagina pe care suntem. Acesta are denumirea ContentPlaceHolder2.
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
</asp:ContentPlaceHolder>
Meniul l-am conceput prin crearea unei liste folosind limbajul HTML,al cărui stil l-am formatat ulterior folosind un fișier CSS extern. Lista conține atât adrese de tip hyperlink către toate peginile website-ului cât și un control ASP.NET denumit LoginView.
Controlul LoginView este folosit pentru a afișa diferențiat un anumit element al unei pagini web. Prin afișare diferențiată mă refer la faptul că un anumit element sau o anumită porțiune este vizibilă doar anumitor utilizatori. Putem alege ca elementul respectiv să fie vizibil doar utilizatorilor logați sau să fie vizibil atât utilizatorilor logați cât și vizitatorilor nelogați.
În cazul nostru, accesul la website fiind oricum imposibil fără autentificare, controlul LoginView ne va servi drept buton de log-out. Acesta are proprietatea de a autentifica un utilizator cand detectează că nu este logat sau de a deconecta un utilizator cănd detectează că este logat. Pe websiteul nostru logarea se face înainte de permiterea accesului, prin urmare controlul LoginView va avea funcție de logout.
<li><a href=""><span>Despre Noi<asp:LoginStatus ID="LoginStatus1" runat="server" OnLoggingOut="LoginStatus1_LoggingOut" />
Fișierul CSS utilizat pentru formatarea stilurilor websiteului se afla în folderul aplicației având denumirea style.css, iar declararea lui se face în head-ul paginii în care este folosit.
<link href="css/style.css" rel="stylesheet" type="text/css" />
PRINTSCREEN MENIU
Tot în master page am mai creat un content holder, denumit ContentPlaceHolder1, în care se va încarca pagina pe care noi o alegem din meniu. Acest lucru ajută și la eficientizarea utilizării resurselor calculatorului deoarece browserul va schimba doar acea zonă din website, reducând din timpul de încărcare.
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
După ce am creat meniul vertical, am trecut la crearea paginilor. Pentru adăugarea unei noi pagini în proiect am selectat (Project / Add New Item / Content Page), iar în fereastra ce apare am ales Licenta.Master ca pagina master cu care aceasta se va lega.
Prima pagină pe care am creat-o a fost cea care conține aplicația. Am denumit-o Aplicatie.aspx, iar aceasta, la fel ca toate celelalte pagini ce le vom crea, se va încarca în ContentPlaceHolder1.
Conținutul paginii Aplicatie.aspx a fost creat în modul Design View. Am introdus din meniul Toolbox al aplicației Visual Studio elementele care ma interesau pentru aceasta pagină și anume Textbox și Button.
Controlul Textbox reprezintă o casetă în care se poate introduce text. Acesta mai departe este stocat într-o variabilă și poate fi folosit. În cazul nostru in Textbox-uri vor fi introduse valori numerice ce vor fi folosite pentru calculul deciziei optime, bazată pe metoda arborelui decizional. De asemenea, Textbox-ul este capabil și să afișeze informații de tip numeric sau de tip text, așa cum va face și ultiimul textbox introdus de noi pe pagină.
Controlul Button reprezintă un buton care atunci cand este apăsat, declansează un eveniment. În cazul nostru, evenimentul declanșat de apăsarea butonului îl reprezintă rularea algoritmului de calcul decizional, urmat de afișarea rezultatului.
După ce am terminat de poziționat textbox-urile, butonul și conținutul static de tip text al paginii, programul generează automat codul sursă pentru tot ceea ce noi am introdus. Imediat ce apasăm dublu-click pe buton (denumit „Calculeaza”, valoare setată din proprietațile elementului), Visual Studio ne deschide automat fereastra cu codul sursă al butonului, poziționându-ne cursorul în zona de cod care determină ce se întamplă în cazul apariției evenimentului click.
protected void Button1_Click(object sender, EventArgs e)
{
}
Aici am scris algoritmul de calcul al deciziei, algoritm dezvoltat pe baza metodei de decizie denumită metoda arborelui decizional.
double cp, pv, p1, p2, p3, a, b, sit1, sit2, sit3, x1, x2, x3, y1, y2, y3, z1, z2, z3, va1, va2, va3;
cp = Convert.ToDouble(TextBox1.Text);
pv = Convert.ToDouble(TextBox2.Text);
p1 = Convert.ToDouble(TextBox3.Text) / 100;
p2 = Convert.ToDouble(TextBox5.Text) / 100;
p3 = Convert.ToDouble(TextBox6.Text);
a = Convert.ToDouble(TextBox4.Text);
b = Convert.ToDouble(TextBox7.Text);
sit1 = Convert.ToDouble(TextBox8.Text);
sit2 = Convert.ToDouble(TextBox9.Text);
sit3 = Convert.ToDouble(TextBox10.Text);
x1 = (pv – a – cp) * sit1;
x2 = (pv – cp) * sit1;
x3 = (pv + b – cp) * sit1;
y1 = (pv – a – cp) * sit2;
y2 = (pv – cp) * sit2;
y3 = (pv + b – cp) * sit2;
z1 = (pv – a – cp) * sit3;
z2 = (pv – cp) * sit3;
z3 = (pv + b – cp) * sit3;
va1 = (x1 * p1) + (x2 * p2) + (x3 * p3);
va2 = (y1 * p1) + (y2 * p2) + (y3 * p3);
va3 = (z1 * p1) + (z2 * p2) + (z3 * p3);
if (va1 > va2)
{
if (va1 > va3)
{ TextBox11.Text = Convert.ToString(sit1); }
else
{ TextBox11.Text = Convert.ToString(sit3); }
}
else
{
if (va2 > va3)
{ TextBox11.Text = Convert.ToString(sit2); }
else
{
TextBox11.Text = Convert.ToString(sit3);
}
}
}
}
Acum că avem meniul și pagina ce conține aplicația, vom trece la crarea unei pagini de gardă ce va fi vizibilă toturor celor ce accesează website-ul. Pe langă conținut, această pagină va avea și un buton de login care va face redirecționarea userului catre pagina de login. Facem acest lucru deoarece nu dorim să oferim accesul pe website decât persoanelor înregistrate. Astfel administratorul site-ului poate tine evidența și controlul utilizatorilor.
Am creat o nouă pagină legată de masterpage (Project / Add New Item / Content Page), pe care o denumim Acasa1.aspx. Aceasta va fi pagina de gardă.
Pagina conține un hyperlink care face trimiterea către pagina de login. Pe aceasta vom adăuga conținut folosind limbajul HTML. Pagina va conține o imagine și un mesaj de tip text prin care, persoanei ce accesează website-ul, i se va aduce la cunoștiință faptul că trebuie să se autentifice. Langă acest mesaj va fi plasat un control ASP.NET de tip hyperlink, cu denumirea Login, care va face redirecționarea către pagina de autentificare.
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Login/Login.aspx">Login</asp:HyperLink>
Pentru crearea paginii de login, în primul rând am creat un folder nou în aplicație (click dreapta pe proiect / Add / New Folder). L-am denumit Login, iar în acesta am adăugat două ContentPages cu legătură la masterpage-ul Licenta.Master pe care le-am denumit Login.aspx respectiv Inregistrare.aspx.
Avem deja legătura dintre pagina de gardă și pagina Login.aspx făcută, imi rămâne doar să creez conținutul paginii de login.
Am accesat pagina Login.aspx în modul Design View și am plasat controlul Login din Toolbox / Login. Acesta va genera automat codul sursa pentru component respectivă.
<asp:Login ID="Login1" runat="server">
</asp:Login>
Template-ul clasic al controlului Login nu este îndeajuns pentru a satisface nevoia utilizatorului de a naviga pe un site modern, frumos stilizat. Din acest motiv a trebuit să îl formatez. După efectuarea comenzii : click dreapta pe controlul login / Convert to template, codul sursă mai sus menționat s-a modifica automat, permițănd editarea fiecarei componente. Am pastrat doar controalele TextBox și FieldValidator, pe care le-am formatat folosind fișierul CSS extern ( style.css ).
Form-ul de login conține urmatoarele câmpuri :
Nume utilizator
Parola
Controalele FieldValidator, plasate câte unul pentru fiecare camp verifică dacă s-au introdus date în câmpurile respective și atenționează utilizatorul în caz contrar.
Sub aceste câmpuri regăsim două butoane, unul ce efectuează comanda de login ( LOG IN ) și unul care face redirecționarea către pagina de înregistrare, în cazul în care utilizatorul nu are un cont creat.
Pe pagina Inregistrare.aspx am plasat un control ASP.NET de înregistrare denumit CreateUserWizard. Îl găsim în Toolbox / Login / CreateUserWizard. Acesta reprezintă un formular de înregistrare care ajută la crearea unui nou cont. Toate informațiile introduse, dacă întrunesc condițiile (de exemplu parola trebuie să conțină minimum 7 caractere alpha-numerice și minimum un character non-alphanumeric), sunt stocate într-o bază de date pe care Visual Studio o creează automat și astfel contul noului utilizator este creat. Imediat după terminarea înregistrarii, utilizatorul este automat redirecționat căre pagina de login unde se poate autentifica cu noul cont creat.
Ca și în cazul controlului de login, am selectat opțiunea “Convert To Template” pentru ca programul să-mi genereze codul sursa al tutoror componentelor controlului. Tot la fel ca și în cazul form-ului de login, am păstrat doar componentele care îmi erau necesare, pe care ulterior le-am formatat cu ajutorul fișierului CSS extern ( style.css ).
Form-ul de înregistrare are două componente :
O pagină ce conține câmpurile pe care utilizatorul le va complete în vederea creeri unui cont nou.
O pagină de confirmare, în care utilizatorul va fi anunțat că a fost creat cu success contul său, din care este redirecționat pe pagina de login pentru a se putea autentifica.
Câmpurile form-ului de înregistrare sunt :
Nume utilizator
Parola
Confirmă parola
Întrebare secretă
Răspuns la întrebare
Sub câmpurile form-ului de înregistrare am plasat butonul ce trimite comanda de finalizare a înregistrării.
Dacâ toate câmpurile au fost completate corespunzător, contul va fi creat, datele contului vor fi salvate automat de într-o bază de date, iar utilizatorul va fi redirecționat către pagina de confirmare a înregistrarii.
PRINTSCREEN PAGINA CONF. INREG.
Programul Visual Studio trebuie configurat pentru a permite login-ul. Pentru a active acest lucru am navigat în meniul Project și am ales opțiunea ASP.NET Configuration. Odată făcut acest lucru, s-a deschis automat o pagină web ce conține setarile locale ale programului în care avem urmatoarele opțiuni :
Security
Application Configuration
Provider Configuration
Am navigat în meniul Security, după care am ales opțiunea „From the internet”. Acest lucru a activat practice posiblitatea de a utiliza conturile create de form-ul login al site-ului meu, pentru a autoriza accesul utilizatorilor. De asemenea, în meniul Security gasim opțiunile “Create user” și “Manage users” care permit administratorului website-ului să creeze conturi sau să le editeze pe cele existente, inclusiv să le steargă sau să le restricționeze accesul la anumite secțiuni din website.
Concluzii
Bibliografie
http://tminfo.ro/upload/files/410682583Manual_final.pdf
http://www.biblioteca-digitala.ase.ro/biblioteca/pagina2.asp?id=cap1
https://msdn.microsoft.com/en-us/library/wtxbf3hh%28v=vs.80%29.aspx
https://ro.wikipedia.org/wiki/SQL
https://ro.wikipedia.org/wiki/Analiza_SWOT
http://www.sei.cmu.edu/str/descriptions/clientserver_body.html
http://en.wikipedia.org/wiki/Multitier_architecture
http://en.wikipedia.org/wiki/Service-oriented_architecture
http://en.wikipedia.org/wiki/Model-view-controller
http://en.wikipedia.org/wiki/OSI_Model
http://en.wikipedia.org/wiki/Internet_protocol_suite
http://www.w3schools.com/web/web_scripting.asp
http://en.wikipedia.org/wiki/HTTP
http://www.w3.org/TR/html401/
http://www.w3schools.com/html/default.asp
http://www.w3.org/Style/CSS/
http://www.w3schools.com/css/default.asp
http://en.wikipedia.org/wiki/.NET_Framework
http://www.charlespetzold.com/dotnet/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Arborii Decizionali (ID: 149547)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
