Aplicatie Web Pentru O Evaluare Asistata de Calculator
Cuprins
1. Introducere
2. Microsoft Visual Studio
3.1 Istoricul versiunilor
3.2 NET Framework
2.2.1 Common Intermediate Language
2.2.2 Common Language Specification
2.2.3 Common Language Runtime
2.2.4 Common Type System
2.2.5 Metadate(date despre date)
2.2.6 Assemblies
2.2.7 Assembly cache
2.2.8 Garbage collection
3.3 ASP.NET
2.3.1 ASP.NET Web Forms(.aspx pages)
2.3.2 ASP.NET MVC
2.3.3 ASP.NET Web Pages
2.4 Visual Web Developer
2.4.1 Crearea și editarea paginilor Web cu HTML
2.4.2 Stiluri CSS
2.4.3 Visual Basic
2.4.4 C#
2.4.5 Web Sites Projects și Web Application Projects
2.5 Baze de date
2.5.1 Microsoft Access
2.5.2 Microsoft SQL Server
3. Proiectarea aplicației
3.1 Diagrame UML
3.2 Proiectarea bazei de date
3.2.1 Proiectarea bazei de date în Access
3.2.1 Proiectarea bazei de date în SQL
3.3 Implementarea aplicației
3.4 Descrierea aplicației din punct de vedere manual
Introducere
De la începutul facultății știam ca va venii acest moment în care va trebuii să arăt tot ceea ce am acumulat in acesti ani de facultate. Acesta reprezintă examenul final, mai exact examenul de licență.
Alegerea temei de licență a reprezentat pentru mine o adevărată provocare pentru că acum chiar aveam nevoie de toate cunoștințele pe care le-am adunat în facultate.
Am optat pentru tema „O aplicație web pentru o evaluare asistată de calculator” deoarece din start în momentul în care am vazut titlul mi-a zburat gândul la ceea ce aș putea să fac. Prima oară m-am gândit la o aplicație gen drpciv(examenul auto).
Încă din titlu mi-am dat seama de ceea ce am nevoie pentru a realiza această aplicație,mai exact: în momentul în care am observat cuvântul “evaluare”, am înțeles că pot realiza o aplicație ajutătoare și interesantă. De ce ajutătoare? Deoarece prin intermediul ei oricine își poate verifica un nivel de cunoștințe dintr-un anumit domeniu. Un alt lucru de unde am înțeles ce mai am nevoie pentru a rezolva aplicația a fost formularea „asistată de calculator”. De aici m-am gândit direct că în spatele acestei evaluări trebuie să stea o mașinărie care să verifice ceea ce face utilizatorul și că pentru acest lucru am nevoie și de o bază de date.
Prin urmare m-am hotărât să dezvolt o aplicație care să permite rezolvarea unui test dintr-un anumit domeniu.
Sunt de părere ca asemenea tipuri de teste sunt foarte bune și utile și totodată încurajez și susțin realizarea de cât mai multe astfel de aplicații. Prin intermediul lor utilizatorii își pot verifica cunoștințele pe care le dețin intr-un anumit domeniu dar bineînțeles prin intermediul aplicației pot acumula lucruri noi,interesante. De asemenea un lucru bun la acest gen de aplicații este că în momentul în care trebuie să susții un examen și dorești să te pregătești în acest sens, aceasta te poate ajuta.
Aplicația m-am decis să o fac cu ajutorul programului Microsoft Visual Web Developer, cu limbajul de programare C#. Mai multe lucruri voi detalia în capitolele ce urmează.
Microsoft Visual Studio
Microsoft Visual Studio reprezintă un mediu de dezvoltare integrat, oferit de Microsoft. Scopul utilizarii acestuia este acela de a dezvolta aplicații consolă si diferite aplicații care au o interfață grafică pentru platformele suportate de Microsoft Windows (.NET, Framework, Windows Mobile etc.).
Istoricul versiunilor
Înainte de versiunea Visual Studio 4.0 au existat Visual Basic 3, Visual C++, Visual FoxPro si Source Safe ca produse independente. Microsoft Visual Studio oferă compilator, editor si un mediu de proiectare pentru mai multe limbaje de programare cum ar fi Microsoft Visual C++, Microsoft Visual C#, Microsoft Visual Basic, Microsoft Visual Web Developer, Team Foundation Server. Alte limbaje pentru care Microsoft Visual Studio oferă suport M, Phyton, Ruby. De asemenea, oferă sprijin si pentru XML/XSLT, HTML/XHTML, JavaScript si CSS. Visual Studio apare in mai multe forme cum ar fi : Express, Professional, Premium, Ultimate, Test Professional.
NET Framework
.NET Framework este o tehnologie care sprijină construirea si functionarea urmatoarelor generații de aplicații si servicii web XML. Acesta a fost conceput pentru a indeplinii următoarele obiective :
Oferă un mediu consistent de programare orientată obiect dacă codul este stocat si executat la nivel local, daca este executat la nivel local dar ditribuit prin internet sau executate de la distanță;
Oferă un mediu de execuție a codului care minimizează conflictele de implementare software;
Oferă un mediu de execuție in condiții de siguranță a codului;
Oferă un mediu de executie a codului care elimină problemele avansate ale mediilor scriptate sau interpretate;
Construiește comunicațiile intre organizațiile cu standarde înalte pentru a se asigura ca acel cod bazat pe .NET Framework poate fi integrat cu orice alt cod.
Tehnologia .NET Framework cuprinde laolaltă mai multe tehnologii : ASP, XML, WDSL, OOP, UDDI, SOAP) dar și limbaje de programare cum ar fi C++, C# sau Visual Basic. Pentru a putea fi integrate in platforma .NET, limbajele de programare trebuie sa respecte un set de caracteristici de baza Common Language Specification, in acest fel asigurandu-se interoperabilitatea intre diferite aplicații indiferent de limbajul in care acestea au fost create.
Ca elemente principale limbajele de programare au clase, interfețe, delegări, tipuri valoare si referință, iar ca mecanisme moștenire, polimorfism si tratarea exceptiilor.De asemenea platforma comună de executare a limbajelor este Common Language Runtime. Biblioteca de clasă este o colecție cuprinzătoare de tipuri reutilizabile orientate obiect, care pot fi folosite pentru a dezvolta aplicații, de la tradiționala linie de comandă sau interfață grafică, aplicații bazate pe cele mai recente inovații oferite de ASP.NET cum ar fi formulare web si servicii web XML.
Referitor la portabilitate, .NET Framework are la bază standardul Common Language Infrastructure, ceea ce face ca aplicațiile .NET sa ruleze in afara de Windows si pe unele tipuri de Unix, Linux, Solaris, Mac OS X si alte sisteme de operare.
Sunt și anumite avantaje ale utilizarii platformei .NET Framework:
Oferă instrumente pe care le putem utiliza și în alte programe ;
Accesarea bazelor de date se face foarte ușor ;
Permite realizarea de elemente grafice ;
Spațiul de nume System.Windows.Forms conține instrumente care permit implementarea elementelor interfeței grafice cu utilizatorul .
Componente ale lui .NET Framework:
Common Intermediate Language
Microsoft a realizat propria sa abstractizare de limbaj, aceasta numindu-se Common Intermediate Language. Deșii exista mai multe limbaje de programare, la compilare toate vor produce cod in același limbaj intermediar si anume CIL. Asemănător cu bytecod-ul Java, CIL are trasaturi orientate obiect, precum abstractizarea datelor, moștenirea, polimorfismul sau diferite concepte necesare. Această asbtractizare de limbaj permite rularea aplicațiilor independent de platformă ( cu conditia ca pentru acea platformă să existe o masină virtuală).
Common Language Specification
Unul din scopurile .NET este acela de a permite integrarea limbajelor, astfel încât programele să poată interopera chiar dacă au fost scrise in limbaje diferite. Pentru a se asigura interoperabilitatea diferitelor limbaje, Microsoft a creat Common Language Specification conținând specificații importante despre cum se poate realiza interoperabilitatea limbajelor.
CLS definește câte un set de reguli pentru compilatoarele .NET, astfel încât fiecare compilator generează cod care interferează cu platforma intr-un mod independent de limbajul sursă.
Common Language Runtime
CLR este de departe cea mai importantă componentă a lui .NET Framework. Responsabilitatea acestuia este aceea de a avea grija cu execuția codului scris in limbaje .NET, aflat in format CIL. CLR instanțiază obiecte, verifica setarile de securitate, depune obiectele in memorie.
CLR folosește tehnologia compilarii JIT. Există trei tipuri de compilatoare JIT :
Normal JIT – o implementare de mașină virtuală, unde o metodă/funcție, atunci cand este apelată este tradusă in cod masină;
Pre-JIT – compilează intregul cod in cod nativ o singură dată.
Econo-JIT – se folosește pe dispozitive cu resurse limitate. Compilează codul CIL bit cu bit, eliberând resursele folosite de codul nativ ce este stocat in cache.
Common Type System
Pentru realizarea interoperabilitații limbajelor din .NET Framework, o clasă scrisă in C# trebuie sa fie echivalentă cu o clasă scrisă in Visual Basic, o interfată scrisă in Managed C++ trebuie sa fie perfect utilizabilă in Managed Cobol. Toate limbajele care fac parte din .NET trebuie sa aibe un set comun de concepte pentru a putea fi integrate. Acest lucru se realizează cu ajutorul CTS. Orice limbaj trebuie sa manipuleze si sa poată recunoască anumite limbaje comune.
Metadate(date despre date)
În .NET ele reprezintă detalii destinate a fi citite si folosite de catre platformă. Pe baza acestor metadate, CLR stie cum să inițializeze datele, cum să le apeleze metodele si cum sa le acceseze proprietațile. Prin urmare, metadata conține o declarație a fiecărui tip și câte o declarație pentru fiecare metodă, câmp, proprietate, eveniment al tipului respectiv. Astfel metadata conține informație pentru fiecare metodă implementată , astfel permitandu-i incărcătorului datei respective sa localizeze corpul metodei.
Assemblies
Un assembly reprezintă un bloc funcțional al unei aplicații .NET și conține metadate ce sunt utilizate de CLR. Scopul acestor assemblies este acela de a asigura dezvoltarea softului in mod plug-and-play.
Metadatele despre assembly-ul care gazduiește tipuri de date se numește manifest. Acesta conține denumirea assembly-ului, referir către alte assemblies, numarul de versiunea etc.
Instalarea unui assembly poate fi facută printr-o simplă copierea a acestuia in directorul destinație dorit. Acest lucru poate fi posibil, deoarece un assembly conține date care il descriu.
Versionarea este un aspect foarte important pentru a se evita așa numitul DLL HELL. Instalarea unei aplicații aducea cu ea totodata fisiere dll care erau necesare pentru funcționarea aplicației. În momentul în care este instalată o nouă aplicație, aceasta suprascrie aceste versiuni ale fișierelor dll cu o versiune mai nouă, însă cu această versiune nouă vechea aplicație nu mai funcționează corespunzător. Astfel fișierele dll conțin informație in funcție de versiunea pe care o au, acestă informație nefiind utilizată la nivelul sistemului de operare, acest lucru duce la probleme.
Assembly cache
În momentul în care un assembly este instalat pe o mașină, atunci acesta va fi adăugat intr-un assembly cache. De asemenea, in assembly cache insă intr-o zona tranzientă va fi stocat un assembly descărcat de pe internet. Aplicațiile instalate vor avea assemblies intr-un assembly cache global.
Garbage collection
Una dintre sarcinile cele mai consumatoare de timp in programare este managementul memoriei. În momentul în care alocatorul de memorie răspunde negativ la o cerere de alocare a memoriei, se declanșează mecanismul Garbage Collection. Implementarea este de tip mark and sweep, mai exact toată memoria alocatăa se poate disponibiliza urmând sa se determine ce obiecte sunt referite de variabilele aplicației, cele care nu mai sunt referite sunt dealocate iar celelalte zone de memorie sunt compactate. Chiar dacă CLR este cel care se ocupă de declanșarea mecanismului Garbage Collection, utilizatorul poate sugera rularea lui.
Iată câteva din trăsăturile platformei .NET Framework:
Independența de procesor si de platformă : O aplicație .NET scrisă si compilată, al cărei management este făcut de către CLR poate fi rulată pe orice platformă. Acest lucru este posibil datorită faptului că aplicația este izolată de particularitațile software sau ale sistemului de operare, toate acestea datorită CLR.
Securitatea : Aplicațiile bazate pe comÎn momentul în care alocatorul de memorie răspunde negativ la o cerere de alocare a memoriei, se declanșează mecanismul Garbage Collection. Implementarea este de tip mark and sweep, mai exact toată memoria alocatăa se poate disponibiliza urmând sa se determine ce obiecte sunt referite de variabilele aplicației, cele care nu mai sunt referite sunt dealocate iar celelalte zone de memorie sunt compactate. Chiar dacă CLR este cel care se ocupă de declanșarea mecanismului Garbage Collection, utilizatorul poate sugera rularea lui.
Iată câteva din trăsăturile platformei .NET Framework:
Independența de procesor si de platformă : O aplicație .NET scrisă si compilată, al cărei management este făcut de către CLR poate fi rulată pe orice platformă. Acest lucru este posibil datorită faptului că aplicația este izolată de particularitațile software sau ale sistemului de operare, toate acestea datorită CLR.
Securitatea : Aplicațiile bazate pe componente distribuite cer automat securitate. Pentru aplicațiile .NET, securitatea este realizată de un control fin bazat pe metadatele din assembly (zona din care provine cum ar fi internet, intranet etc), precum și a politicilor de securitate ce se pot seta.
Arhitectură distribuită : Un lucru important este acela de a asigura accesul la serviciile Web distribuie care conlucrează la obținerea informației dorite. În acest sens, platforma asigură suport pentru realizarea acestui tip de aplicații.
Suportul pentru versionare : În cazul în care o aplicație a fost dezvoltatâă folosind anumite componente, atunci instalarea unei componente de versiune mai nouă nu va afecta buna funcționare a aplicației respective.
Dezvoltarea multilimbajului : Pentru această platformă există multe limbaje astfel că este mai ușor de implementat părți specifice cu un limbaj potrivit. Dezvoltarea multilimbajului are în vedere și debugging-ul aplicațiilor realizate in mai multe limbaje.
ASP.NET
ASP.NET este o platformă web care oferă toate serviciile de care aveți nevoie pentru a construii diferite aplicații web. ASP.NET este construit pe platforma .NET Framework astfel că toate caracteristicile .NET Framework sunt disponibile pentru aplicații ASP.NET. Aplicațiile pot fi scrise in orice limbaj care este compatibil cu CLR, inclusiv Visual Basic si C#.
ASP.NET oferă trei cadre pentru crearea de aplicatii web : ASP.NET Web Forms, ASP.NET MVC, ASP.NET Web Pages. Toate cele trei cadre sunt stabile si performante si puteți crea aplicații web mari sau mici cu oricare dintre ele. Fiecare cadru vizează un public sau un tip de aplicație diferită. Depinde de experiența fiecăruia, de ceea ce ii place mai mult si bineințeles care este mai potrivit pentru tipul de aplicație creată. Iată o prezentare generală pentru fiecare dintre cadre și unele idei pentru modul de a alege intre ele. ASP.NET Funcționează pe partea de sus a protocolului HTTP și utilizează comenzile și politicile HTTP pentru a seta o comunicare le nivelul browser-server.
Componenta de modele ASP.NET este un model de obiect care descrie elemente HTML sau diferite tag-uri cum ar fii <form> sau <input>, și controale server care ajută la realizarea conexiunii intre interfață și utilizator cum ar fi de exemplu GridView, ListView etc.
HTML reprezintă scheletul oricărei pagini web. Acesta nu este un limbaj de programare prin urmare nu avem nevoie de variabile, expresii, tipuri de date sau structuri de control. Acesta este un limbaj descriptiv cu ajutorul căruia realizăm structura și modul în care vrem să arate o pagină web.
Aplicațiile ASP.NETsunt compilate de două ori: prima fază în care codul fie că este C# sau Visual Basic, este compilat într-un assembly care are cod intermediar IL. Adoua fază de compilare se realizează înainte de execușia propriu-zisă a paginii și constă în modificarea codului IL în codul sistemului pe care se află serverul Web, toate acestea realizându-se de către JIT. O aplicație Web nu este compilată de fiecare dată cînd există o cerere către o pagină web, dar se cere o păstrare a codului deja compilat. Orice schimbare a resurselor, trage dupa sine și o recompilare a codului IL.ASP.NET reprezintă un multi-limbaj, iar datorită acestei proprietăți, se poate scrie orice limbaj CLI pentru a dezvolta o aplicație. Rezultatul este un cod IL, mai exact un cod scris special pentru .NET, care paote rula intr-un mediu CLR.
ASP.NET este orientat-obiect, iar aplicațiile ASP.NET sunt ușor de instlat și de configurat. Instalarea presupune copierea fișierelor aplicației intr-o cale precizată în IIS ca folder virtual. Atunci când spunem configurare, ne referim la că fiecare aplicație conține un fișier în format XML (web.config) în care sunt precizate setările.
ASP.NET Web Forms(.aspx pages)
Cadrul Web forms vizează pe cei care preferă in general programarea declarativă si pe bază de control cum ar fi Microsoft Windows Forms si WPF / XAML / Silverlight. Acesta oferă posibilitatea drag-and-drop si este perfectă pentru dezvoltarea unor aplicații rapide fara a utiliza foarte mult limbaj de programare.
Modelul Web Forms oferă următoarele caracteristici:
Afișează evenimentele pe care le puteți programa, pentru a dezvolta o aplicație client ca WinForms sau WPF;
Controalele de server fac partea de HTML pentru programator, astfel el le poate personaliza prin stabilirea proprietăților si stilurilor;
Oferă un sortiment bogat de controale pentru a avea acces la date si pentru a le afișa ;
Formularele Web funcționeaza foarte bine pentru organizațiile mici de programatori web si designeri care doresc sa profite de numărul mare de componente pe care il au la dispoziție pentru dezvoltarea rapidă a aplicațiilor. În general, crearea de aplicații cu Web Forms necesită mai puțin efort decăt crearea aceleiași aplicații cu ASP.NET MVC. Componentele sunt bine integrate si necesită mai puțin cod decat cererile ASP.NET MVC. Cu toate acestea Web Forms nu sunt utilizate doar pentru a dezvolta rapid o aplicație. Sunt multe aplicații comerciale compleze si cadre de aplicații construie cu Web Forms, care sunt in top.
ASP.NET MVC
ASP.NET MVC reprezintă implementarea Microsoft a unui model arhitectural, incercat si testat. Cu MVC putem lucra mai direct cu HTML și HTTP decat in Web Forms. Modelul MVC permite programatorului sa ia controlul total asupra a ceea ce dorește sa facă in aplicație. MVC a fost proiectat pentru a fi extensibil, oferind programatorilor puterea si posibilitatea de a personaliza cadrul aplicația respectivă.
MVC separă o aplicație in trei componente principale:
M – Model . Conține clase ce reprezintă domeniul aplicației. Aceste obiecte stochează diferite date memorate intr-o bază de date, precum si codul folosit asupra datelor respective dar si pentru a rula aplicația respectivă ;
V – Vizualizare . View este un template care ne prezintă codul HTML in mod dinamic ;
C – Controler . Este o clasă specială care gestionează relațiile dintre View si Model. Acesta raspunde la comenzile utilizatorului, interacționează cu modelul iar in cazul in care are ceva de afișat, atunci el va decide ce anume să afișeze. In ASP.NET MVC această clasă o găsim cu sufixul Controller.
MVC folosește o convenție care se bazează pe denumirea structurii de directoare cand rezolvă template pentru View, iar acest lucru ne permite să omitem calea cand referim un anumit View din clasa derivată din Controller. Acest lucru este numit „Convenție peste configurare”.
Există un singur director View pentru toate vizualizările din aplicație. Fiecare clasă Controller are un nume ce se termină cu Controller iar această clasă se găsește in directorul /Controllers.
Structura unei aplicații ASP.NET MVC:
ASP.NET Web Pages
Acest model de pagini web este foarte bun pentru cei care doresc o programare cat mai simplă. In modelul Web Pages putem crea pagini utilizând HTML urmând ca apoi să adăugăm codul necesar aplicației pentru a o putea controla in mod dinamic. Web Pages a fost special conceput pentru a oferii un mediu de programare cât mai ușoară și este cea mai simplă parte de lucru in ASP.NET, mai ales pentru persoanele care se pricep la HTML dar care nu au o experiență foarte mare in programare.
Ca și în cazul cadrelor Web Forms, Web Pages sunt folosite pentru o dezvoltare cât mai rapidă a aplicațiilor. De asemenea, Web Pages oferă programatorului diferite componente numite “ ajutoare ” care pot fi adăugate în diferite pagini, folosind astfel o parte cat mai mică de cod.
Toate cele trei cadre ASP.NET se bazează pe funcționalitatea .NET Framework. De exemplu, toate cele trei cadre oferă un model de logare ca fiind un membru API. De asemenea, toate cele trei oferă aceleași facilitați cum ar fi gestionarea cererilor, manipulare a sesiunii și tot ce reprezintă o parte de bază in funcționalitatea ASP.NET.
În plus, cele trei cadre nu sunt in totalitate independete, iar alegerea uneia nu exclude si folosirea alteia. De exemplu, opiniile MVC sunt adesea scrise ca fișiere .cshtml sau .vbhtml, insemnând că pot profita de una dintre caracteristicile Web Pages și anume ajutoarele. Un alt exemplu care arată că toate cele trei cadre pot coexista este faptul că cea mai mare parte a unui site poate fi scris in MVC dar porțiunea de acces la date ale site-ului poate fi scrisă cu Web Forms, deoarece reprezintă calea cea mai usoara de acces a datelor.
Haideți să vorbim puțin și despre Master Page. Ce este o pagină master?Aceasta este un template de pagină care poate conține orice combinație de HTML,controale web sau cod. Alături de acest tip specializat de pagină, ASP.NET definește încă un tip de pagină și anume pagină de conținut(Content page).
Fiecare pagină de conținut referențiază o singură pagină master și poate adăuga un conținut in regiunile predefinite de acestea. Mai exact acest conținut poate fi adăugat intr-o pagină master in secțiunea ContentPlaceHolder. Acesta poate fi definit atât in secțiunea <head> cât și în <body>.
Visual Web Developer
Visual Web Developer este un program de dezvoltare a aplicațiilor web ASP.NET. Acest program oferă următoarele facilitați :
Designul paginilor web – Acest lucru se poate face utilizând HTML;
Editarea codului – Codul poate fi scris pentru editarea paginilor web dinamice in Visual Basic sau C#;
Testare si depanare – Cu ajutorul unui server web local puteți gasii eventualele erori ale codului;
Instrumente de implementare – Pentru a automatiza sarcinile specifice pentru implementarea unei aplicații web pe un server host.
Ediția Express este proiectată special pentru cei care doresc să invețe Visual Web Developer fără să aibă o vastă experiență în programare. Aceasta conține intrumente de dezvoltare moderne,ușor de înțeles și de folosit.
Opțiunea View din bara de meniu oferă acces la toate panourile adiționale. În cazul în care nu vă apare vreun panou sau l-ați inchis din greseală acesta paote fi facut din nou vizibil din acest meniu. De fiecare dată când Visual Web Developer va fi deschis, va apărea o pagină de start. În această pagină vom găsii proiecte create iar dacă vrem să deschidem unul din ele acest lucru se face printr-un singur click asupra proiectului respectiv.
Ca orice alt editor de programare, Visual Web Developer este un program foarte personalizabil permițând programatorilor sa configureze editorul astfel incât munca lor să devină mult mai ușoară. Acest program nu numai că oferă un bun control asupra setărilor dar oferă și o modalitate foarte ușoară de a exporta setari unice intr-un singur fișier. Acest lucru face foarte ușoară mutarea setărilor dumneavoastră de pe desktopul calculatorului pe laptop de exemplu.
Majoritatea setărilor pot fi accesate prin caseta de dialog Options pe care o puteți accesa din meniul Tools.
În momentul în care deschidem Web Developer observăm mai multe ferestre. Solution Explorer este o fereastră în care întâlnim toate fișierele si folderele din aplicația respectivă. Fereastra Properties care prezintă proprietațile elementelor HTML sau a controalelor web. Bineînțelese să nu uităm de fereastra Toolbox unde găsim elementele HTML si diferite controale web care pot fi pur și simplu trase intr-o pagină ASP.NET. Acestea sunt 3 dintre multele ferestre care ni le oferă Web Developer, însă acestea sunt cele mai importante, restul le putem gasii in meniul View.
Cele trei ferestre prezentate mai sus au o anumită poziție și marime in Web Developer. Bineînțeles acesta este un lucru personalizabil deoarece putem muta si stabilii marimea fișierelor dupa bunul nostru plac. De asemenea putem elimina o fereastră printr-o simplă apăsare a butonului X. Dacă dorim să realizăm un site web cu Visual Web Developer, trebuie să alegem Web Site. Din punctul de vedere al Visual Web Developer un web site este un director care conține mai multe subdirectoare și fișiere. Spre deosebire de site-urile web existente,normale, acesta va fi stocat pe hard-disk-ul calculatorului utilizatorului.
Dacă dorim ca pentru site-ul web să folosim limbajul de programare C#, alegem din lista Language C#, același lucru îl putem face și în cazul Visual Basic.
Crearea și editarea paginilor Web cu HTML
În momentul în care deschidem un Web Form acesta are două părți : design si source.
În Design View puteți tasta textele ca și cum ați face-o intr-un document word.Puteți formata textul direct cu ajutorul comenzilor de formatare sau prin crarea de stiluri in linie. Partea de Design View va afișa pagina intr-un mod aproape similar cum ea va apărea in browser, cu unele diferențe. O primă diferență este ca in partea de Design View textul si elementele sunt editabile. A doua diferență este ca in Design View vor apărea anumite controale pentru a vă ajuta sa editați paginile dumneavoastră, controale care nu vor apărea și in browser.
Tot aici avem posiblitatea de a trage diferite controale de care avem nevoie din Toolbox. Putem opta pentru diferite elemente cum ar fi tabele HTML, Butoane, Link-uri etc. De asemenea, putem vedea rezultatele obținute prin rularea paginii , aceasta putând fi facută ori prin click dreapta pe pagina si View in browser, ori printr-o simplă apăsare a butonului Run.
Source View vă permite sa editați diferite marcaje ale paginii in mod direct. Editorul Source View pune la dispoziția programatorului multe caracteristici care ajută la crearea de comenzi HTML si ASP.NET. De asemenea, ca și în cazul Design View si aici poate fi folosită proprietatea „drag and drop” si putem adăuga diferite controale direct in Source.
Pentru a adăuga elemente in Source View: Controalele pe care le adăugăm sunt create ca <asp:> elemente.De exemplu, dacă vom adăuga un buton, atunci acest element va apărea <asp:Button>. De asemenea editorul ne ajută atunci cand facem editare HTML, dacă deschidem o proprietate HTML atunci el o va inchide automat. De exemplu dacă dorim sa scriem un nou paragraf si deschidem <p> , atunci el va inchide automat paragraful <p>. Încă un lucru ajutatorul este faptul ca in momentul in care scriem ceva greșit sau avem o eroare, editorul va sublinia problema respectivă.
Bineînțelese exisă și o modalitate de a utiliza ambele cazuri in același timp. Putem utiliza atăt Design View cât si Source Code in același timp folosind Split View. Acest lucru se face apăsând butonul Split din stânga paginii, urmând ca pe ecran partea de sursă apare in partea superioară a paginii, iar partea de design in cea inferioară. De asemenea în momentul in care apasăm pe un element din partea de sursă acesta este evidențiat si in partea de design.
Stiluri CSS
Stilurile CSS conțin reguli de stil care sunt aplicate elementelor intr-o aplicație. Aceste stiluri definesc modul in care sunt afișate si poziționate elementele în pagină. Visual Studio vă oferă instrumente, pentru a crea, a aplica și a gestiona stiluri CSS:
Fereastra de aplicații a stilurilor permite crearea, modificarea și aplicarea stilurilor. De asemenea, puteți lega sau elimina un stil CSS extern. Această fereastră identifică tipurile de stil si arată dacă stilul este utilizat in pagina web curentă si dacă selecția respectivă îl folosește.
Fereastra de gestionare a stilurilor oferă multe din caracteristicile pe care le oferă si fereastra de aplicații. Puteți utiliza această fereastră pentru a muta stiluri dintr-o secțiune <style> intr-o alta pagina externă.
Fereastra de proprietați CSS arată stilurile care sunt utilizate de selecția curentă intr-o pagină web. De asemenea, arată ordinea de prioritate pentru stiluri și oferă o listă completă a tuturor proprietaților CSS. Putem adăuga proprietați la un stil deja existent sau modifica proprietați pe care le stabilisem unui stil.
Dacă lucrăm cu ASP.NET Web Forms, selectorul de tag permite selectarea tag-urilor HTML in timp ce lucrează intr-o pagina web. Când așezăm cursorul oriunde în pagină, selectorul de tag afișează etichetele care arată eticheta de baza HTML pentru domeniul respectiv.
Visual Basic
Visual Basic este un limbaj de programare care face parte din Visual Studio lansat de Microsoft. Cu ajutorul acestui limbaj, programatorul poate realiza diferite interfețe de tip Windows, fără să fie nevoie de scrierea unui cod. Visual Basic este un limbaj orientat obiect Odata cu apariția tehnologie .NET, acest limbaj poate crea si utiliza componente .NET. Înainte de a fi executat, orice cod scris in Visual Basic trebuie să fie tradus intr-un limbaj inferior. Acest lucru face ca limbajul VB sa fie un limbaj interpretat.
Ca un scurt istoric, primul limbaj VB a fost VB 0.1. Acesta a fost introdus in 1991. Cel care a realizat conectarea limbajului de programare la o interfață grafică pentru utilizator a fost Alan Cooper. Acest lucru nu a fost realizat direct ci printr-un prototip numit Tripod.
Proprietațile Visual Basic
C#
C# reprezintă un limbaj de programare orientat obiect, foarte asemănător limbajului Java si C++.A fost dezvoltat de o echipă restrânsă de ingineri de la Microsoft. Din această echipă s-a evidențiat autorul limbajului Turbo Pascal și membru al echipei care a proiectat Borland Delphi,Anders Hejlsberg.Cadrul oferit permite componentelor C# să devină servicii Web disponibile pe internet oricărei aplicații, aparținînd oricărei platforme de operare. Limbajul mărește productivitatea dezvoltatorului, preocupându-se în același timp de eliminarea erorilor de programare care pot duce la creșterea costurilor de dezvoltare.
C# este un limbaj simplu cu circa 80 de cuvinte cheie si 12 tipuri de date predefinite. Acest limbaj permite programatorilor sa dezvolte multe aplicații pe platforma .NET Framework.C# prezintă două tipuri de date și anume tipuri valoare și tipuri referință. Tipurile valoare cuprind tipurile simple(char,int,float), tipurile enumerare si structură. Principala caracteristică a acestor tipuri este aceea că ele conțin direct datele referite. Tipurile referință cuprind tipurile clasă, interfață, delegat si tablou. Principala lor caracteristică este aceea că variabilele de acest tip stochează referințe către obiectele conținute.
În prezent, C și C++ sunt limbajele cele mai folosite pentru dezoltarea aplicațiilot de afaceri și al celor comerciale. Această flexibilitatea reduce productivitatea, deși ambele limbaje furnizează programatorului o cantitate uriașă de control fin. De ce C și C++? Deoarece datorită complexității și ciclicității temporare relativ mari asociate acestor două limbaje, majoritatea au ales C și C++ au căutat un limbaj care să le ofere un echilibru mai bun între putere și productivitate.
C# este o alegere reușită pentru dezvoltarea unei game variate de componente de la obiecte de afaceri de nivel ănalt până la aplicații la nivel de sistem. Datorită construcșiei simple a limbajului, componentele pot fi convertite în servicii Web, permițându-le să fie invocate pe internet, din orice limbaj și folosind orice tip de sistem de operare. De asemenea, C# oferă programatorului o dezvoltare rapidă fără a fi nevoie de a sacrifica puterea și controlul prin tradiție asociate cu C și C++.
C# mărește puterea programatorului tradițional în C și C++ oferindu-i următoarele lucruri:
Colectarea automatizată a spațiului disponibil;
Inițializarea automată a variabilelor;
Variabile type-safe.
Totodată, acesta este un limbaj care face mult mai ușoară crearea și întreținerea aplicațiilor ce rezolvă problemele complexe de afaceri. Acest lucru este valabil bineînțeles pentru dezvoltatori.
Simplitatea limbajului: se ințelege din lipsa pointerilor, moștenirea facilitaților de garbage collection si managementul automat al memoriei datorită integrării pe platforma .NET.
Ca un limbaj orientat obiect, C# sprijină conceptele de încapsulare, moștenire și polimorfism. Toate variabilele si metodele, inclusiv metoda principala, punctul de intrare al aplicației sunt încapsulate în definiții de clasă.
De asemenea, C# conține și un set de tipuri predefinite: string, object, tipurile intregi cu semn și fără semn, tipuri numerice cu virgulă mobilă, bool și decimal.
Tipul bool este utilizat pentru valorile logice true și false. Tipul char este folosit pentru a reprezenta caractere unicode, reprezentate pe 16 biți. Tipul decimal este utilizat pentru calculele în care erorile determinate de reprezentarea in virgulă mobilă sunt inacceptabile, el oferind 28 de cifre zecimale semnificative.
Pentru manipularea șirurilor de caractere codificate Unicode se utilizează tipul String.
Iată câteva avantaje față de C++ si Java:
Avantajele față de C++ :
Sistemul garbage collection este nativ;
Biblioteca standard conține lucruri bine implementate care fac folosirea lor mult mai ușoară;
Se pot folosii blocurile de cod, atât cele native cât și cele gestionate;
Permite setarea internă a claselor si metodelor în ansamblul în care sunt declarate.
Avantajele față de Java :
Limbajul C# suportă expresia using, spre deosebire de Java care o va implementa in Java 7;
Este integrat in Windows;
Variabilele sunt dinamice;
Acest limbaj permite definirea de tipuri noi.
De asemenea, C# oferă tipuri valoare care sunt ori structuri, ori enumerări. Există un set predefiniti de structuri care se numesc tipuri simple și care pot fi de tip numeric sau boolean. La rândul lor, tipurile numerice pot fi tipuri intregi(sbyte, byte, ushort, short, int, long, char), în virgulă mobilă(float si double) si tipuri enumerare care se pot definii de către utilizator.
Web Sites Projects și Web Application Projects
Utilizând Visual Studio putem crea numeroase proiecte ASP.NET care includ site-uri web, aplicații web, servicii web și controale de server AJAX. Există diferențe intre site-uri web si aplicații web. Unele caracteristici funcționează numai pentru aplicatiile web, cum ar fi MVC sau anumite controale care ajută la implementarea automată a unei aplicații web. Alte caracteristici, cum ar fi datele dinamice(Dynamic Data) funcționează atât pentru aplicațiile web cât și pentru site-urile web. În momentul în care vrem sa optăm pentru o aplicație web sau un site web, este indicat să alegem tipul înainte de a crea proiectul web deoarece acest lucru poate duce la apariția unor erori daca se va dorii convertirea de la un tip la altu.
Iată câteva dintre principalele diferențe dintre cele doua tipuri de proiecte:
Structura unui proiect
Pentru aplicațiile web, fișierul unui proiect Visual Studio (cs.proj / vb.proj) stochează informații despre proiectul respectiv, cum ar fi lista cu fișierele care sunt incluse in proiect precum și orice referiri către proiect. În cazul site-urilor web nu există niciun fișier al vreunui proiect (cs.proj / vb.proj) . Toate fișierele sunt incluse automat intr-un folder al site-ului.
Web site-ul generează dinamic fișierele care conțin cod generat automat de Visual Studio, iar aplicațiile web creează fișierul respectiv pe disc. Un beneficiu adus aplicațiilor web în acest caz este timpul mai mic necesar unui build.
Un alt lucru important este că în momentul în care lucrăm la un site web, clasa respectivă va fi mutată implicit intr-un folder numit App_code, spre deosebire de aplicațiile web pentru care acest folder îl putem crea noi. În general aplicațiile web sunt utilizate în momentul în care avem de utilizat mai mult cod, iar site-urile web pentru un cod mai mic.
Compilarea
O aplicație web poate fi costruită in Visual Studio sau cu ajutorul ASP.NET pe un calculatoru care nu este o producție a serverului IIS. Toate fișierele de cod si fișierele de clasă sunt compilate intr-un singur ansamblu urmând apoi a fi puse în folderul Bin al aplicației. Pentru realizarea site-urilor web compilarea nu trebuie facută manual. Acestea sunt deobicei compilate dinamic de ASP.NET.
Câteva avantaje privind compilarea aplicațiilor web:
Se poate folosii MSBuild pentru a crea un proces de compilare personalizat;
Se pot preciza cu ușurință atributele de asamblare cum ar fi numele sau versiunea;
Oferă control complet asupra locului unde au fost puse fișierele cu cod ale aplicației.
Câteva avantaje privind compilarea site-urilor web:
Putem testa o anumită pagină, indiferent de starea în care se află o altă pagină;
De asemenea se pot actualiza doar anumite fișiere chiar dacă altele au anumite erori.
Spații de nume
În cazul aplicațiilor web spațiile de nume sunt adăugate la pagini, controale și clase, spre deosebire de site-urile web unde spațiile de nume nu sunt adăugate la pagini, controale sau clase, dar pot fi adăugate manual.
Desfășurare
Pentru aplicațiile web, codul sursă este compilat itntr-un ansamblu(fișier .dll). Un avantaj al aplicațiilor web este ca se poate evita implementarea codului sursă pe un server IIS. Deoarece codul unei aplicații web este compilat intr-un singur fișier de ansamblare, trebuie implementat tot site-ul chiar și pentru cele mai mici schimbari. Excepția este facută în cazul în care modificarea se face la nivelul unui fisier .aspx sau .ascx .
Baze de date
Pentru realizarea unui site web avem nevoie si de o bază de date. Baza de date reprezintă o serie de inregistrări, fiecare dintre ele fiind o entitate specifică, toate construite in același mod(cu atribute comune) și interconectate. Baza de date o putem crea cu Microsoft Access sau Microsoft SQL Server.
Microsoft Access
Microsoft Access este un program de creare si administrare a unei baze de date relaționale, o producție a Microsoft. Access stocheaza toate tabelele de baze de date, interogări, formulare, rapoarte intr-un singur fișier. Microsoft Access utilizeaza atât formatul ACCDB cât și MDB. Tipurile de date dintr-un tabel din Access sunt următoarele: TEXT(poate conține cifre,litere sau simboluri, lungimea maximă este de 250 de caractere), MEMO(un text simplu, însă nu are vreo limită de caractere poti tasta pana la 64000 de caractere), NUMBER(valori întregi), DATE/TIME(o dată sau o oră), CURRENCY(un numar reprezentănd o valoare monetară), AUTONUMBER(este completat automat cu numere), YES/NO(pentru valori logice true/false sau on/off), HYPERLINK(o legătură către o locație web).
Fiecare tabel, ar trebuii sa aiba un câmp care să fie cheie principală. Aceasta se rezlvă ușor, dând click pe campul respectiv si selectând Primary Key. De asemenea, in Access se pot face și relații intre tabele, relații care sunt necesare pentru realizarea interogărilor pentru tabelele respective. Acestea sunt : Unu la mai mulți ( One-to-many), Unu la unu (One-to-one) și Mulți la mai mulți (Many-to-many).
Iată câteva caracteristici pentru fiecare legătura:
Pentru relația One-to-many, aceasta este cel mai frecvent tip de relație, în care tabela unu este tabelă primară iar tabela doi este secundară. Tabela unu trebuie sa aiba o cheie primară, iar in tabela doi trebuie sa fie un cămp cu aceeasi denumire acesta reprezentând elementul de legatura. Acest tip de lagătură presupune ca un element din prima tabelă poate avea unul sau mai multe elemente din tabela doi, iar un element din a doua tabelă poate avea un singur element din prima tabelă.
În cazul relației One-to-one ambele tabele au cate o cheie primară iar fiecărui element dintr-un tabel ți poate corespunde strict un singur element din celălalt tabel. Bineînțelse și în acest caz o tabelă este primară iar cealaltă secundară.
În final, pentru relatia Many-to-many fiecărui element dintr-o tabelă îi poate corespunde unul sau mai multe element din cealaltă și invers.
Microsoft SQL Server
Microsoft SQL Server este un sistem de gestiune a bazelor de date relaționale dezvoltat de Microsoft, a cărui funcție principală este aceea de a prelua și de a stoca datele solicitate de către alte aplicații software. Există multe versiune de SQL Server, pentru diferite tipuri de persoane, aplicații mai mari, mai mici in funcție de necesitațile fiecăruia.
Toate sistemele de management de baze de date relaționale cum ar fi MySQL, MS Access, Oracle, Sybax, Informix, Postgres sau SQL Server folosesc ca limbaj SQL.De asemenea, fiecare folosește dialectul său, cum ar fi : MS SQL Server folosește T-SQL, Oracle folosește PL / SQL, MS Access versiunea pentru SQL este numită SQL JET și tot așa.Comenzile SQL folosite pentru bazele de date relaționale sunt create, select, insert, update, delete și drop. Create creează un tabel nou sau un alt obiect în baza de date. Alter modifică un obiect din baza de date, sau un tabel, drop șterge un tabel sau orice alt obiect din baza de date, insert introduce înregistrări, delete șterge înregistrări, update modifică înregistrări și select preia anumite înregistrări dintr-unul sau mai multe tabele.
Bineînțeles, acest limbaj are și anumite constrângeri care trebuie respectate. Respectarea acestor constrângeri, asigură acuratețea și fiabilitatea datelor din baza de date. Constrângerile pot apărea la nivelul unei coloane, prin urmare vor apărea anumite interdicții pentru o inregistrare sau la nivelul întregului tabel pentru mai multe inregistrări. Acestea sunt :
Not null : Trebuie să ne asigurrăm că o coloană nu are valoare nulă;
Default : Oferă o valoare pentru o coloană, atunci când nu este specificată;
Unique : Toate valorile din coloane trebuie sa fie unice;
Primary key : Identitatea unei înregistrări sau a unui câmp trebuie să fie unică, cheie primara;
Foreign key : Identitatea unei înregistrări sau a unui câmp dintr-un alt tabel al bazei de date să fie unică, cheie străină;
Check : Asigură faptul că toate inregistrările respectă condițiile impuse;
Index : Utilizat pentru a prelua datele sau înregistrările din baza de date foarte repede.
Introducerea unei baze de date intr-un web site sau o aplicație web se face astfel:
1-Creăm un site nou prin click pe New Web Site – alegem limbajul de programare C# sau Visual Basic, apoi alegem ASP.NET Empty Web Site.
2-Pasul următor adăugăm un Web Form.
3-Click dreapta pe rădăcina site-ului , Add ASP.NET Folder – App_Data.
4-Click dreapta pe folderul App_data, alegem baza de date pe care vrem să o introducem ( că este in Access sau SQL),
5-Din Toolbox alegem un Grid View, Form View, List View sau Details View depinde de ceea ce dorim pur si simplu folosind “drag and drop” îl punem pe partea de Design in Web Form.
6-Choose data source alegem New data source, aici adăugăm in funcție de tipul bazei de date si anume Access Data Source sau Sql Data Source, baza de date o găsim in folderul App_data. Nu uităm sa bifăm Advanced pentru a face ca optiunile Delete,Insert,Update să poată fi accesate.
Visual Web Developer mai oferă ceva în plus și anume faptul că se poate realiza o parte de login foarte ușor, nefiind nevoie de a realiza o bază de date. Toate elementele necesare le găsim in Toolbox pe care pur și simplu cu „drag and drop” le punem in partea de design. Atunci ne va fi creată automat o bază de date sql cu tot ceea ce avem nevoie. Nu trebuie însă să uităm să umblăm la partea de securitate din ASP.NET Configuration, să selectăm tipul aplicației ( From Internet) și să creăm un cont nou.
Proiectarea aplicației
Pentru tema de licență mi-am dorit să creez o aplicație care sa conțină teste din diferite domenii. Principalul scop al acestei aplicații este acela de a ajuta utilizatorul sa iși verifice cunoștințele,mai exact să observe nivelul lui de cunoștințe intr-un domeniu anume. Aplicația oferă posibilitatea utilizatorului sa efectueze trei teste din domenii cum ar fi geografie,informatică sau medicină. Aplicația va monitoriza răspunsurile utilizatorilor, respectțnd câteva reguli simple și anume în momentul în care acesta depășește numarul maxim permis de erori să oprească testul, același lucru fiind valabil și pentru trecerea cu brio a testului respectiv.
Totodată, realizând testul pentru informatică am putut la rândul meu,să imi verific cunoștințele acumulate în toți acești ani de facultate.
În opinia mea, existența unor astfel de aplicații este foarte benefică deoarece astfel fiecare persoană că deține cunoștințe dintr-un domeniu sau nu, poate să observe care este nivelul său de știință.
Pentru realizarea acestei aplicații am folosit Microsoft Visual Web Developer 2010 Express iar ca limbaj de programare C#. De ce am ales Visual Web Developer? Pentru ca acest program conține un editor vizual, este ușor de ințeles și de lucrat cu el, conține un server web propriu ce poate rula aplicațiile web construite, are integrat SQL Server express, un mediu vizual pentru editarea bazelor de date și oferă unele facilitați cum ar fi Master Page.
De asemenea, utilizatorul prin tot ceea ce face în cadrul acestei aplicații furnizează diferite date de intrare cum ar fi : în momentul în care acesta dorește sa își creeze un cont acesta va introduce anumite date iar sistemul de logare va verifica dacă datele introduse sunt în regulă. Altfel sistemul îi va transmite persoanei respective diferite mesaje de atenționare iar acesta trebuie să observe unde a greșit. Alte date de intrare sunt reprezentate de apăsarea unui buton al aplicației. Mai exact în momentul în care utilizatorul alege o variantă atunci el va primii răspunsul, dacă varianta este bună sau nu.
Pe lângă date de intrare, această aplicație furnizează și câteva date de ieșire. Mai exact acestea se regăsesc sub forma diferitelor mesaje ale sistemului. În momentul în care sistemul verifică un răspuns și trimite utilizatorului valoarea acestuia, acest mesaj va fi transmis simplu în dreptul răspunsurilor greșite sau corecte. Alt tip de mesaj transmis de sistem este pentru partea de logare, dacă ceva nu este corect în datele introduse de utilizator, acesta va primii diferite mesaje. Nu în ultimult rând, utilizatorul va primii și câteva mesaje în funcție de cum evoluează testul său, mai exact daca acesta depașește numarul maxim permis de erori va primii un mesaj de incheiere (Fig.1.), dacă reușește să ducă testul la bun sfârșit va primii un mesaj de felicitare (Fig.2.).
Fig.1.
Fig.2.
Pentru început mi-am pus în gând câteva cerințe pe baza aplicației. Mai exact m-am gândit ce anume să conțină aceasta și cum să introduc toate elementele necesare funcționării aplicației. Am înțeles că trebuie să realizez o interfață, să am o parte de logare pentru ca doar cei care își creează un cont să poată susține testul respectiv. De asemenea mi-am pus întrebarea cum să am toate întrebările și variantele de răspuns aferente fiecărei întrebări. Mi-am dat seama că pentru acest lucru am nevoie de o bază de date. Pentru realizarea acesteia am avut de ales intre SQL sau Access, cea din urmă fiind alegerea mea. De ce Access? Deoarece ințelegerea ei și utilizarea acesteia mi s-a părut mult mai ușoară. Am optat însă și pentru folosira SQL însă pentru partea de logare.
De asemenea am înțeles că am nevoie și de o pagină de gardă, care să poată fi vizibilă de către toți vizitatorii fără să fie nevoie să te înregitrezi, o pagină în care sa fie prezentate câteva date despre test dar și căteva mesaje de realizare sau de incheiere al testului.
Diagrame UML
Pe baza aplicației am realizat câteva diagrame cum ar fi diagrama cazurilor de utilizare, de activități, de secvențe, de componente sau de clase.
Diagrama cazurilor de utilizare este alcătuită din trei elemente:
Use case-uri care reprezintă o legătură intre un actor și un sistem, dar și activitățile care s-au produs și pe care sistemul le face;
Actorii reprezintă indetitatea unei persoane,obiect exterior sau proces care interacționează cu un sistem;
Relațiile ce se stabilesc intre use case-uri și actori și care sunt relații de asociere (între un actor și un use-case), relații de dependență (între două cazuri de utilizare) și relații de generalizare care se stabilesc intre elementele de același tip de clase.
Fig.1.
În Fig.1. este prezentată interacțiunea dintre cei trei tipuri de utilizatori :
Studentul care se poate loga, își poate creea un cont nou, răspunnde la întrebări,așteaptă valoarea răspunsului;
Sistemul confirm dacă logarea/inregistrarea este corectă, verifică dacă răspunsul este correct, trimite mesajul către student;
Răspunsul studentului este comparat cu cel din baza de date.
Diagrama de activități reprezintă o metodă de modelare vizuală a fluxurilor.
Acțiunea reprezină un singur pas intr-o activitate cum ar fi un calcul, găsirea unor date, verificarea unor date iar forma prin care se reprezintă este un dreptunghi rotunjit în interiorul căruia este scris textul acțiunii respective.
Intr-o diagramă de activitate, acțiunile reprezentate pot fi executat de mai multe obiecte în același timp. Mai exact, o diagramă de activitate, poate reda mai in detaliu interacțiunea dintre obiecte redată printr-o diagramă de secvențe. De asemenea, o diagramă de activitate poate fi distribuită în coloane distincte pentru fiecare activitate a fiecărui obiect în parte.
Fig.2.
În Fig.2. este reprezentată activitatea studentului, respectiv a sistemului in momentul logării de către student.
Rolul sistemului este acela de a verifica dacă înregistrarea a fost facută corect și să îi trimită un mesaj studentului cu privire la acest lucru. Dacă acesta a introdus ceva gresit trebuie să modifice conform avertismentului pe care îl primește pentru a putea să își creeze contul dorit. Procesul de înregistrare se va încheia în momentul în care sistemul îi transmite acest lucru utilizatorul, iar înregistrarile introduse de utilizator vor fi în regulă numai atunci când nu va mai primii niciun mesaj de avertizare
Exact cum am precizat și mai sus, sistemul, respectiv studentul execută activitățile în coloane separate, dar în același timp.
Fig.3.
În Fig.3. avem tot o diagramă de activități, însă de această dată este reprezentată o altă activitate din cadrul aplicației.
Mai exact este o reprezentare pe scurt a ceea ce se întamplă în momentul în care studentul a reușit sa își creeze un cont și să se logheze.
Aici sistemul își intră în rol. Mai exact acesta trebuie să verifice în baza de date răspunsul de la întrebarea respectivă iar în funcție de valoarea răspunsului studentului, să îi transmită acestuia un mesaj.
Studentul poate vedea mesajele transmise de sistem cu privire la valoarea de adevăr a fiecărui răspuns în parte prin intermediul unor simple valori trecute în dreptul răspunsurilor greșite sau al celor corecte. Acest lucru este reprezentat în diagrama de romb care împarte ambele variante, în cazul în care răspunsul este corect va fi bifat la răspunsuri corecte, în caz contrat va fi trecut la răspunsuri greșite.
O alta modalitate prin care sistemul îi poate trimite un mesaj studentului se va face în momentul încheierii testului, fie că a fost trecut fie că nu.
Diagrama de secvențe
Rolul acestor diagrame este acela de a reprezenta interacțiunile dintre obiecte sau dintre actori și obiecte din punct de vedere temporal. Aceste diagrame se construiesc pornind de la cazurile de utilizare și ele se folosesc in două scopuri : ca mijloc de coumentare a cazurilor de utilizare și ca mijloc de reprezentare exactă a mesajelor schimbate intre obiecte.
Mesajele sunt transmise prin intermediul unor săgeți orizontale pornind de la emițătorul acestora către destinatar. Timpul de parcurgere al evenimentelor se scurge de sus în jos. În momentul în care un obiect trimite un mesaj sincron el rămane în așteptare până când destinatarul studiază mesajul respectiv. Revenirea dupa studierea mesajului respectiv nu este necesar neapărat să fie reprezentată.
Fig.4.
Secvența reprezentată în Fig.4. se petrece dupa logarea studentului. Mesajele sunt stabilite prin intermediul săgeților, vărful săgeții fiind către destinatar. Mai exact, după ce logarea a avut loc cu succes, sistemul îi transmite acestuia o scurtă descriere a testului respectiv, studentul înțelegând regulile și începând testul. În momentul în care studentul începe testul sistemul îi transmite prima întrebare, studentul răspunzând la aceasta. În momentul în care sistemul recepționează răspunsul dat de către student, verifică răspunsul respectiv cu cel din baza de date. După ce primește varianta corectă de răspuns a întrebării, prin comparație cu răspunsul studentului îi transmite acestuia daca răspunsul este corect sau nu. Studentul va vedea acest lucru în dreptul răspunsurilor corecte sau greșite.
Diagrama de componente
Are rolul de a prezenta fiecare componenta a aplicației respective. Aceasta poate fi cod binar, document sau fișier care să conțină codul sursă sau diferite date. Diagramele de componente redau și relațiile care au loc între componentele aplicației/sistemului respectiv.
Aceste diagrame modelează sistemul software real în mediul de implementare, prin relațiile de dependență evidențiază diferite probleme de configurare și totdata reprezintă și o imagine a sistemului existent înainte de a fi modifcat.
Fig.5.
În Fig.5. sunt reprezentate componentele principale ale aplicației studentul, sistemul și baza de date dar și anumite relații între aceste componente.
Studentul este persoana care dorește să realizeze testul pentru asta trebuind să rezolve anumite lucruri cum ar fi : înregistrarea în cazul în care nu deține un cont, logarea ,citirea regulilor testului dar bineînțeles răspunderea la diferite întrebări.
Sistemul este cel care supervizează toata activitatea studentului. Îi transmite acestuia dacă logarea/înregistrarea a fost facută cu bine, îi punctează acestuia câte răspunsuri corecte și căte greșite are dar și dacă testul a fost dus la bun sfărșit sau a fost eliminat pe parcurs.
Baza de date reprezintă locul unde sunt stocate întrebările și răspunsurile. Totodata reprezintă și un element important pentru sistem deoarece prin intermediul bazei de date acesta poate compara răspunsurile studentului cu cele care sunt adevărate.
Proiectarea bazei de date
În ceea ce privește utilizarea bazei de date, am ales să utilizez atat SQL cât și Access. Mai exact Access am folosit pentru a realiza baza de date pentru întrebări și răspunsuri iar SQL pentru a realiza partea de logare.
Proiectarea bazei de date în Access
Am preferat Access pentru partea principală a testului și anume adăugarea răspunsurilor și întrebărilor deoarece mi-a fost mult mai ușor să o înțeleg cât și să lucrez cu aceasta.
Aceasta bază de date este alcătuita din trei tabele. Fiecare tabel este destinat ficărui test în parte. Inițial am încercat mai multe variante cum ar fi să realizez un tabel cu răspunsuri iar unul cu întrebări și să realizez o legătură intre acestea, însă mi-am dat seama ca realizarea unui singur tabel cu diferite cămpuri este mult mai eficient.
Fig.1.
Tabelele sunt asemănătoare, având aceleași câmpuri. Tabelul conține opt câmpuri fiecare avănd un rol important( Fig.1.). Iată o scurtă prezentare a fiecărui câmp în parte:
Câmpul ID. Acest câmp este cheia primară a tabelului, acest lucru facându-l să aibă câte o înregistrare unică pentru fiecare rând. Tipul de date entru acest câmp l-am declarat number. Ca subtip de date numerice am selectat Long Integer, de asemenea am selectat să nu permită duplicarea. Mai exact două înregistrări nu pot avea același id. Prin intermediul acestui câmp voi introduce numărul fiecărei întrebări, fiecre întrebare având numarul său și reprezentând totodata un identificator pentru aceasta.(Fig.2.)
Fig.2.
Câmpul Întrebare. Acest câmp l-am declarat de tip text lungimea caracterelor fiind de 255. Aceste câmpuri de tip text din access sunt cele mai des folosite. Prin intermediul acestui câmp voi introduce toate întrebările, mai exact textul acestora. Spre deosebire de câmpul ID, aici nu mai există nicio regulă privind introducerea aceleiași înregistrări. Mai exact poate fi introdusă aceeași întrebare pentru trei id-uri diferite.(Fig.3.)
Fig.3.
Câmpurile Răspuns1, Răspuns2 și Răspuns3 le-am declarat tot de tip text cu aceeași lungime a caracterelor 255. Practic ideea adăugării acestor câmpuri mi-a venit în ultimul moment deoarece m-am decis ca prin intermediul lor să fac legătura cu o variantă corectă a unei intrebări. Mai exact aceste răspunsuri au 2 întregistrări : nu sau da. În dreptul fiecărei variante de răspuns am trecut câte una din cele doua valori. Daca Varianta respecivă este asociata cu nu atunci ea va fi considerată gresită, dacă este da atunci va fi considerată corectă.(Fig.4.)
Fig.4.
Ultimele câmpuri despre care vom vorbii din cadrul acestei baze de date sunt Varianta1, Varianta2 și Varianta3. Bineînțeles că și aceste câmpuri le-am declarat tot tip text, prin intermediul lor introducând posibilele variante de răspuns aferente fiecărei întrebări.
După cum am spus și mai sus acestor variante le sunt asociate o valoare de răspuns. Conform valoarei fiecărei variante, aceasta va fi declarată corectă. Am ales să fac acest lucru (Răspuns1=Varianta1), deoarece folosind instrucțiunea condițională if să reușesc să afișez răspunsul corect sau cel greșit.(Fig.5.)
Fig.5.
Proiectarea bazei de date în SQL
Cea de a doua bază de date am realizat-o in SQL Server. Este vorba de baza de date pentru pagina de logare. Acest lucru l-am realizat direct in Visual Web Developer folosindu-mă de proprietatea „drag and drop” astfe : am deschis un formular nou in web developer, iar pe partea de design a acestuia pur și simplu am luat din toolbox elementele necesare paginii de login mai exact un „login”, un „create new user wizard” dar și un „loginname”, fiecare având un rol diferit.
Elementul „login” este destinat celor care au deja un cont creat și doresc doar sa se logheze. Acesta este necesar pentru ca utilizatorul respectiv să poată merge mai departe și să vadă restul aplicației, dacă dorește chiar să rezolve un test și să îți verifice cunoștințele deținute în domeniul respectiv.
„Create new user wizard” l-am folosit pentru persoanele care nu au un cont și doresc să își creeze unul. Pentru acest lucru, utilizatorul trebuie să respecte anumite reguli iar în cazul în care ceva este itnrodus greșit el va fi avertizat in privința acestui lucru. Contul va fi creat cu succes în momentul în care individul va primii un mesaj în acest sens.
„LoginName” l-am utilizat pentru a apărea automat numele persoanei care s-a logat. Mai exact acest lucru este vizibil numai în momentul în care persoana respectivă s-a logat cu succes. El va fi întâmpinat cu un mesaj de bun venit, după acest mesaj apărând în mod automat numele de utilizator.
În momentul în care am adăugat elementele pe partea de design a formularului și am respectat anumite lucru care trebuiau făcute, baza de date a fost automat creată în SQL server. Aceasta conține 11 tabele, fiecare având rolul său.
Prima tabelă formată se numește aspnet_Application și este destinată strict diferitelor aplicații. Cămpurile acesteia sunt : numele aplicației de tip nvarchar(256), mai exact un tip de date unicode, lungimea maximă a caracterelor fiind de 256, o denumire prescurtată a aplicației având același tip de dată, id-ul aplicației, care de altfel este și cheia primară a acestei tabele, tipul de dată este uniqueidentifier, mai exact fiecare înregistrare va primii o denumire unică, nu pot avea același id doua aplicații iar ultimul câmp este descripția aplicației, declarată tot nvarchar lungimea maxima 256, acesta va conține date suplimentare despre aplicație mai exact o scurtă descriere(Fig.1.).
Fig.1.
A doua tabelă se numește aspnet_Membership și este o tabelă destinată tuturor membrilor care utilizează o aplicație. Spre deosebire de tabela precedentă aceasta are mai multe câmpuri. Vom face o scurtă prezentare a fiecăruia: Un prim câmp este id-ul aplicației, declarat ca tip uniqueidentifier acest lucru facând exact ca și mai sus ca id-ul aplicației să fie unic, id-ul utilizatorului care are aceeași declarație nefiind posibil ca doi utlizatori să aibă același id, totdata acest câmp reprezintă și cheia primară a tabelei, parola care este de tip nvarchar lungimea maximă a caracterelor fiind de 128, formatul parolei respective declarat de tip integer, codul pin al mobilului de tip nvarchar lungimea maximă a caracterelor fiind de 15, adresa de e-mail a utilizatorului,e-mail-ul prescurtat, întrebarea de la parolă și răspunsul acesteia sunt alte patru câmpuri din cadrul acestei tabele, tipul de dată al acestor câmpuri fiind nvarchar cu aceeași lungime a caracterelor 256, exceptând ultimul câmp a carui lungime este 128. Câmpurile aprobat și blocat sunt declarate de tip bit, un tip de date binar care permite alocarea unor valori 1,0 sau NULL. Urmează patru câmpuri referitoare la data, mai exact data cand a fost creat contul respectiv,ultima dată când utilizatorul s-a logat,ultima oară când parola a fost schimbată și ultima delogare a utilizatorului(), toate aceste câmpuri sunt declarate datetime, un tip de dată folosit pentru dată sau oră. În final urmează alte patru câmpuri referitoare la parolă, mai exact încercarea de a introduce parola eșuează și încercarea de a introduce răspunsul parolei respective la fel eșuează sunt declarate de tip integer, iar fereastra de a deschide parola,sau cea privind răspunsul parolei eșuează,ambele fiind declarate ca tip de dată datetime(Fig.2.).
Fig.2.
Trecem la următorul tabel și anume aspnet_Path care descrie diferite căi ale aplicației. Primul câmp al acestei tabele este id-ul aplicației , tip uniqueidentifier, id-ul căii care are aceeași declarație ca tip de dată și este și cheia primară a acestei tabele, un al cămp îl reprezintă calea declarat nvarchar lungimea caracterelor fiind de maxim 256 prin intermediul acestui câmp va fi trecută pur și simplu denumirea căii respective iar ultimul câmp al acestei tabele este denumirea prescurtată a căii tot nvarchar lungimea maximă de 256 de caractere(Fig.3.).
Fig.3.
Tabela aspnet_PersonalizationAllUsers reprezintă personalizările tuturor utilizatorilor, mai exact acest lucru a fi făcut prin trei câmpuri : id-ul căii care va fi de tip uniqueidentifier,totodată fiind și cheia primară a acestei tabele, setările paginii de tip image, o dată binară de lungime variabilă și ultimul câmp de tip datetime reprezentând ultima dată cănd a avut loc o actualizare(Fig.4.).
Fig.4.
Dacă tot am prezentat personalizările pentru toți utilizatorii, următoarea tabelă reprezintă personalizările pentru fiecare utilizator în parte aspnet_PersonalizationPerUser. Câmpul id reprezintă cheia primară a acestei tabele și totdata valoarea unică a fiecărei personalizări în parte. Pe lângă idul căii mai avem și id-ul fiecărui utilizator în parte, tip de dată fiind uniqueidentifier, fiecare utilizator alocat câte un număr. La fel ca și în tabela precedentă și aici avem câmpurile pentru ultima actualizare și pentru setările paginii cu aceleași specificații(Fig.5.).
Fig.5.
Tabela aspnet_Profile este destinată pentru prezentarea profilului fiecărui utilizator în parte. Această prezentare este făcută prin prezenșa următoarelor câmpuri : Bineînțeles cheia primară a acestei tabele, mai exact id-ul utilizatorului, fiecare utilizator va avea un id numai și numai al său, numele proprietații și valoarea proprietății string declarate ntext care este un tip de dată unicode de lungime variabilă, iar valoarea proprietașii binară declarată ca image(Fig.6.).
Fig.6.
A șaptea tabelă,aspnet_Role prezintă diferite roluri pe care le poate avea un utilizator în cadrul aplicației. Câmpurile acesteia sunt id-ul aplicației având ca tip de dată uniqueidentifier, id-ul rolului reprezntând cheia primară a acestei tabele iar prin intermediul acestui câmp facând posibilă indentificarea fiecărui rol în parte. Ambele câmpuri prezentate au câte o valoarea unică mai exact fiecare înregistrare are valoarea sa, nu pot fi două înregistrări având aceeași valoare. Al treilea câmp al acestei tabele este numele rolului, aici practic va fi trecută denumirea fiecărui rol în parte, tipul acestui cămp este nvarchar lungimea caracterelor fiind de 256. Următorul câmp are legătură tot cu denumirea rolului, mai exact acest câmp permite scrierea prescurtată a denumirii respective, tipul de dată alocat acestui câmp fiind la fel ca cel al denumirii. Ultimul câmp este descrierea fiecărui rol, această descriere putând fi facută în maxim 256 caractere(Fig.7.).
Fig.7.
ASPnet_SchemaVersions reprezintă o tabelă în care pot fi trecute diferite versiuni ale schemelor aplicației. Aceasta are trei câmpuri, unul pentru trăsături , unul pentru posibile veriuni compatibile, ambele câmpuri sunt de tip nvarchar lungimea maximă 128 iar ultimul câmp versiunea curentă de tip bit , un tip de dată binar permițând valorile 0,1 sau NULL. Observăm ceva că spre deosebire de celelalte tabele prezentate până acum, aceasta are două chei primare(Fig.8.).
Fig.8.
Tabela aspnet_User este folosită pentru a înregistra toți utilizatorii aplicației. În această înregistrare vor fi trecute următoarele date : id-ul aplicației, pentru fiecare utilizator va apărea ce aplicația a folosit, bineînțeles id-ul va fi unic, următorul câmp este și cheia primară a tabelei , mai exact id-ul utilizatorului care și acesta la rândul său va fi unic, numele de utilizator de tip nvarchar folosind maxim 256 de caractere, alături de acest nume va apărea și varianta prescurtată a acestuia, tipul de date fiind același.Un alt câmp va spune despre acesta dacă este anonim sau nu prin simplele valori 0 sau1 iar ultimul câmp va arăta când a fost ultima oară inregistrar utilizatorul respectiv(Fig.9.).
Fig.9.
Aspnet_UsersInRole, prezintă rolul și activitatea fiecărui utilizator. Această tabelă este alcătuită din două câmpuri, mai exact id-ul utilizatorului și id-ul rolului său, ambele câmpuri fiind chei principale. De asemenea, ambele sunt declarate ca același tip uniqueidentifier(Fig.10.).
Fig.10.
Ultima tabelă este alcătuită din mai multe câmpuri și prezintă evenimente web. Aceasta se numește aspnet_WebEvent_Events. Primul câmp este și cheia primară a tabelei și reprezintă id-ul eventului respectiv. Următoarele câmpuri fac revenire la eventul petrecut și anume : timpul eventului declarat ca datetime, tipul acestuia declarat ca nvarchar lungimea maxima 256 de caractere, apariția și secvența evenimentului ambele sunt declarate ca decimal , acesta este un tip de dată numerice cu precizie și magnitudine fixă. Alte câmpuri sunt codul evenimentului și detalii despre acesta, ambele fiind declarate ca tip întreg, un câmp pentru mesaje, declarat nvarchar lungimea maximă de 1024 de caractere, numele mașinăriei, calea aplicației dar și calea virtuală a aplicației sunt declarate toate nvarchar cu lungimea maximă de 256 de caractere. Un alt câmp cu același tip de data este cerere url numai că acesta are lungimea de 1024 de caractere(Fig.11.).
Fig.11
Bineînțeles că între aceste tabele există și anumite relații pe baza cărora se poate construii diagrama entitate relație.
De exemplu, între tabele aspnet_Role și aspnet_User observăm un alt tabel aspnet_UserInRole. Acest tabel este un tabel pivot iar prin intermediul său vedem o legătura de tip many-to-many , mai exact un utilizator poate avea mai multe roluri cum ar fi administrator, operator etc sau un rol poate fi asociat mai multor utilizatori. Legăturile sunt făcute prin intermediul cheilor primare, mai exact tabela UsersInRole cu User prin câmpul userid, iar UsersInRole cu Role prin câmpul roleid.
Cele mai multe legături le putem observa plecând de la tabela aspnet_Application. Aceasta are legături cu : aspnet_Membership prin cheia primară ApplicationId, mai exact este o legătură de tipul one-to-many adică aceeași aplicație poate avea mai mulți membrii. O altă legătura este cu tabela aspnet_Path tot prin cheia primară ApplicationId și tot de tipul one-to-many, mai exact într-o aplicație pot fi distribuite mai multe căi. Același tip de legătură observăm și cu tabelele aspnet_Role și aspnet_User, legătura făcându-se tot prin intermediul aceleiași chei primare ApplicationId, acest lucru arătând ca aplicația poate fi utilizată de mai multți utilizatori avand roluri diferite. O relație de tipul one-to-one este intre tabela aspnet_User și aspnet_Membership, această legătură este făcută prin aceeași cheie primară userid, mai exact un singur utilizator va avea o singură înregistrare din tabela Membership.Alte relații de one-to-many sunt între tabele aspnet_User cu aspnet_PersonalizationPerUser, mai exact un utilizator poate avea mai multe personalizări iar această legătură este făcuta prin cheia primară a tabelei User, userid și elementul de legătură din cealaltă tabelă cu același nume. Iar cealalta legătură one-to-many este intre aspnet_Path și aspnet_PersonalizationPerUser prin cheia principală a tabelei Path, pathid și elementul de legătură cu același nume(Fig.12.).
Fig.12.
O ultimă legătura din cadrul acestei baze de date este între tabele aspnet_User și aspnet_Profile. Tipul legăturii este one-to-one, realizată prin cheia primară a celor două tabele userid. Mai exact un utilizator poate avea doar un singur profil(Fig.13.).
Fig.13.
Implementarea aplicației
După cum am spus și mai sus pentru realizarea aplicației m-am decis să folosesc Visual Web Developer. Am ales acest program deoarece eu l-am văzut ca fiind mult mai ușor de înțeles și de utilizat.
Următorul pas a fost să aleg ce tip de proiect să fac web site project sau web application project. Am decis să aleg web site project deoarece pot compila orice pagină, fără să fie nevoie să rulez toată aplicația. Limbajul de programare pe care l-am ales a fost C# deoarece este un limbaj cu care am mai lucrat în anii de facultate, spre deosebire de Visual Basic.
Pentru realizarea aplicației am folosit șase formulare, un folder cu imagini si unul App_Data in care se află baza de date, dar și diferite butoane,label-uri,textbox-uri etc.
Formularele le-am folosit pentru următoarele lucruri :
Un prim formular l-am utilizat pentru a face o pagină de gardă, pagină care poate fi vazută de către oricine nefiind nevoie de a avea un cont;
Trei dintre ele pentru fiecare test în parte. Construcția acestora ca design este asemănătoare, singurul lucru care diferă sunt bineînțeles întrebările si răspunsurile pentru fiecare test în parte;
Unul pentru pagina de logare;
În cazul în care utilizatorul nu este înregistrat am folosit un formular strict pentru acest lucru.
Mi-am făcut o idee despre cum aș vrea să arate aplicația mea și m-am găndit să o fac cât mai simplă. Am ales să nu folosesc culori stridente sau să o încarc aiurea cu imagini. Partea de logare și cea de prezentare a testului am realizat-o simplu doar cu o dungă albastră și adăugând o singură imagine in stănga sus. Am împărțit partea de design a formularului respectiv în mai multe linii de tabel, iar astfel mi-a fost mult mai ușor să poziționez diferitele elemente pe pagină.
Pentru această pagină de logare, după cum am precizat și mai sus, folosindu-mă de proprietatea „drag and drop” pur și simplu pe partea de design a formularului am adăugat elemente cum ar fi Login, CreateNewUserWizard sau LoginName. Pentru ca această parte de logare să fie completă au trebuit respectați anumiți pași : în meniul website din partea de sus a programului am selectat Asp.net Configuration. Mai departe am selectat „security”, „select authentication type” iar aici am bifat „from the internet”, astfel tuilizatorii pot accesa site-ul dupa internetul public. Dacă acesta era accesat doar după o rețea locală atunci selectam „from a local network”.
Pentru această pagină a fost nevoie ca pe partea de design a formularului să creez un tabel cu o singură coloană dar cu mai multe linii, astfel putând să așez mai bine toate elementele în pagină. Am decis să adaug o imagine cât mai discretă într-un colț alături de o dungă albastră. De asemenea am adăugat un link „înregistrați” pentru persoanele care nu au un cont și doresc să se înregistreze, acest link face legătura cu pagina de înregistrare prin PostBackUrl iar acolo am pus denumirea formularului respectiv.(Fig.1.)
Fig.1.
În Fig.1. Default5.aspx reprezintă formularu unde se află pagina de înregistrare.
Această parte de logare are AnonymousTemplate si LoggedInTemplate. În AnonymousTemplate apar cele doua părți și anume pagina de login si cea de înregistrare. Partea de LoggedInTemplate este destinată persoanelor care sunt logate, nu să ai un cont ci strict să fi logat. Numai aceste persoane pot vedea conținutul acestei pagini. Conținutul este o scurtă descriere a aplicației dar și a testelor care pot fi facute. Aici am construit trei butoane, căte unul pentru fiecare test, sunt specificate ce test aparține cărui buton iar utilizatorul în momentul în care este pregătit și apasă butonul pentru testul dorit, testul va apărea direct cu prima întrebare. Acest lucru l-am realizat cu PostBackUrl punănd adresa paginii respective, dar și printr-o comanda a butonului prin click „Response.Redirect(„numele paginii respective”)”.(Fig.2.)
Fig.2.
Ca și în cazul paginii de logare și pentru această pagină am adăugat un link „loga” tot cu PostBackUrl de această dată însă către pagina de logare. În cazul în care inregistrarea a avut loc cu succes, utilizatorul se poate loga.
Iată cum am realizat și celelalte pagini:Pagina de gardă.
Iată cum am realizat și celelalte pagini:
Pagina de gardă.
Aceasta am realizat-o cât mai simplu cu putință. Imaginea care am adăugat-o am realizat-o in paint iar apoi am pus-o in partea de design a formularului. Am colorat-o simplu cu o culoare deschisă scriind un mesaj direct prin care orice vizitator să ințeleagă defapt scopul acestei aplicații și să decidă dacă dorește să meargă mai departe. În cazul în care acesta vrea să afle mai multe detalii atunci va fi nevoie sa își creeze un cont. Aici am plasat și un buton pentru persoanele care doresc să meargă mai departe.(Fig.3.)
Fig.3.
Pagina pentru test.
Pentru interfața testelor lucrul a stat puțin mai diferit deoarece am adăugat un background simplu, o imagine in dreapta și la fel o dungă albastră ca și cea de la partea de logare. Bineînțeles a trebuit să găsesc o modalitate de face legătura dintre baza de date și aplicație. Am ales ca baza de date să o introduc printr-un details view, deoarece așa am putut realiza mai ușor aspectul de chestionar. Chestionarul este unul simplu alcătuit dint-o intrebare, un număr al întrebării și trei variante de răspuns.
Pentru această pagină am ales la fel ceva simplu. Iată pașii pe care i-am urmat pentru a realiza testu:
În primul rând, am realizat interfața testului pe care am prezentat-o mai sus;
A trebuit să găsesc o cale de a introduce baza de date în formularul respective. Trebuie să recunosc că aici am încercat mai multe variante cum ar fi printr-un form view, list view chiar si grid view. La început am optat pentru list view deoarece mi se părea ca din punct de vedere al aspectului arată foarte mult cu un chestionar. Totuși tot nu am reușit să ajung la ceva concret, astfel că am incercat și cu un details view, iar prin intermediul acestuia am ajuns cel mai aproape de adevăr. Folderul pentru baza de date fiind deja creat datorită bazei de date pentru pagina de logare, a trebuit să o itnroduc și pe cea pentru test. Acest lucru l-am realizat prin click dreapta pe folderul App_data, Add an existing item iar de acolo am selectat baza respectivă. Desigur nu am uitat in Advanced să bifez opțiunile pentru edit, delete și update.
În partea de sus am introdus două texbox-uri pentru a ține evidența răspunsurilor, unul pentru răspunsuri greșite altul pentru cele corecte. De asemenea, am introdus și un timp, format din trei label-uri (câte unul pentru minute, secunde și cele doua puncte dintre ele).(Fig.4.)
Fig.4.
În partea de jos am introdus mai multe butoane. Trei dintre ele pentru cele variantele testului, unul pentru șterge răspunsul iar altul pentru trimite răspunsul.Utilizatorul are astfel opțiunea de a șterge o variantă deja selectată în cazul în care se răzgândește sa își schimbe răspunsul dar și de a trimite răspunsul pentru a afla valoarea de adevăr a acestuia.(Fig.5.)
Fig.5.
Următorul pas a fost acela de a realiza partea de cod. Acest lucru l-am realizat prin introducerea unor elemente cum ar fi textbox-uri sau label-uri. Mai multe despre conținutul bazei de date voi vorbii mai târziu, acum voi prezenta la ce m-au ajutat elementele respective. Am folosit textbox-uri pentru a putea face legătura cu baza de date. Mai exact, acestor texbox-uri le-am dat valoarea inițiala “nu” putând astfel să mă folosesc de instrucțiunea condițională “if.” Aceste trei texbox-uri reprezintă totodată și echivalentul celor trei variante 1,2 și 3. (Fig.6. Fig.7.)
Fig.6
.
Fig.7.
Tot pentru partea de cod m-am gândit să găsesc un echivalent și pentru posibilele variante corecte aplicația reușind astfel să poată să compare răspunsurile date cu valoarea răspunsurilor din baza de date. În details view-ul prin intermediul căruia am introdus baza de date, am introdus câte un template între fiecare răspuns și variantă. În acest template am declarat căte un textbox cu denumirile pe rând first,second și third. Fiecare textbox reprezintă un echivalent pentru Răspuns1(first), Răspuns2(second) ,Răspuns3(third). Acestea sunt câmpurile din baza de date reprezentând valoarea fiecărei variante de răspuns.(Fig.8. Fig.9.)
Fig.8.
Fig.9.
Cu ajutorul instrucțiunii if am scris codul pentru ca atunci când răspunsul dat de utilizator este trimis, acesta să fie verificat cu cel din baza de date și în funcție de valoarea acestuia sa apară răspunsul în dreptul celor corecte sau a celor greșite.(Fig.10.)
Fig.10.
Regulile sunt simple : în momentul în care utlizatorul a depășit numărul permis de erori va fi declarat respins dacă va răspunde corect va fi admis.
Dupa cum am spus și mai sus, baza de date am introdus-o printr-un Details View. Prin intermediul acestor valori de raspuns ale fiecărei variante, am realizat legătura intre aplicație si baza de date. Mai exact fiecare variantă are o valoare „da” sau „nu”, în momentul în care utilizatorul alege o variantă de răspuns, aplicația verifică in baza de date valoarea acestei variante. Daca este „nu” o marcheaza ca răspuns greșit iar daca este „da” va fi răspuns corect.
De asemenea, această legătură am realizat-o cu ajutorul celor trei textbox-uri prezentate mai sus a căror valoare inițială este „nu”.
Aplicația, în momentul în care primește varianta de răspuns verifică cu ceea ce este in baza de date si astfel decide dacă răspunsul este corect sau nu.
Descrierea aplicației din punct de vedere manual
Pentru a rula aplicația trebuie urmăriți anumiți pași :
După ce am deschis Visual Web Developer, selectăm din partea de jos numele aplicației respective. Trebuie să așteptăm puțin iar în câteva secunde aplicația se va deschide cu toate elementele sale componente. Acestea le putem observa în partea din dreapta în fereastra Solution Explorer, putem observa toate formuralele și folderele aplicației.
Următorul pas este să apăsăm săgeata verde Run. În acel moment prima pagină care se va deschide va fi cea pe care am selectat-o ca fiind pagină de start. Acest lucru îl putem face dând click dreapta pe formularul care dorim să fie pagină de start și selectăm „Set as start page” . Pentru aplicația mea ca pagină de start am ales să fie pagină de gardă, pentru ca astfel să o poată vizualiza orice persoană care nu este înregistrat.
În momentul în care pagina de gardă se va deschide, putem observa un scurt mesaj alături de un buton. Prin apăsarea acestui buton utilizatorul va merge mai departe, pe pagina următoare a aplicației.
Următoarea pagină care va apărea va fi cea de logare. Utilizatorul va trebuii sa se logheze în cazul în care are deja un cont, dacă nu atunci va trebuii să se înregistreze. Acest lucru se face simplu printr-o apăsare a linkului cu denumirea „înregistrați”, urmând ca utilizatorul să fie trimis pe pagina de înregistrare. După ce înregistrarea a avut loc cu succes, utilizatorul se poate loga.
După ce s-a logat, va apărea o pagină în care va fi prezentată o scurtă descriere a testului. Pe această pagină se vor găsii și trei butoane, necesare pentru fiecare test în parte. Descrierea trebuie citită cu atenție, deoarece acolo va fi foarte clar precizat cărui test îi revine fiecare buton, utilizatorul știind în acest caz ce test va dorii sa susțină.
În momentul în care un buton va fi apăsat testul va începe în mod automat. Utilizatorul va putea să aleagă ce variantă crede el că este corectă, dar are și posiblitatea ca în cazul în care se răzgândește și dorește să aleagă o altă variantă, să șteargă varianta bifată anteriorul și să o aleagă pe cea nouă. Dacă, însă a fost apăsat butonul de trimitere al răspunsului, atunci nu se mai poate face nimic. În momentul în care utilizatorul trimite un răspuns , atunci în bara de sus a paginii îi va fi trecut o bifă în dreptul răspunsului corect sau greșit în funcție de cum a fost valoarea răspunsului său. O altă posibilitate pe care are utilizatorul, este ca în cazul în care nu este sigur de un răspuns sau pur și simplu nu știe răspunsul, să sară peste întrebarea respectivă și să treacă la următoarea întrebare. Acest lucru se poate face prin alegerea paginilor care se află numerotate cu albastru sub cele trei variante ale testului. Dacă utilizatorul face mai mult de cinci erori, atunci îi va fi afișat un mesaj că testul s-a incheiat. Dacă acesta reușește să depășească pragul de 21 de întrebări corecte, atunci acesta va primii un mesaj de felicitări și că a reușit să treacă testul.
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: Aplicatie Web Pentru O Evaluare Asistata de Calculator (ID: 149495)
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.
