Sunteți pe pagina 1din 147

UNIVERSITATEA ROMNO-AMERICAN FACULTATEA DE INFORMATIC MANAGERIAL

DEZVOLTAREA APLICAIILOR WEB UTILIZND CONCEPTELE DOT.NET RAUGRADEBOOK, CATALOG VIRTUAL

Coordonator tiinific: Lector univ. drd. ENCEANU ALEXANDRU ERBAN

Absolvent: GOMBO ALEXANDRA IRINA

BUCURETI 2012 1

CUPRINS

Introducere Cap. 1 STUDIUL I ANALIZA SISTEMULUI EXISTENT 1.1 Prezentarea succint a unitii economico-sociale 1.2 Activitile desfurate n unitatea economic (caracteristicile generale ale sistemului economic din unitate) 1.3 Studiul sistemului de conducere 1.4 Studiul sistemului condus 1.5 Studiul sistemului informaional 1.6 Analiza critic a sistemului actual i identificarea neajunsurilor (punctelor critice) existente n funcionarea sistemului existent Cap. 2. PROIECTAREA DE ANSAMBLU A SISTEMULUI INFORMATIC 2.1 Obiectivele i oportunitatea aplicaiei informatice 2.2 Locul aplicaiei informatice n sistem 2.3 Alegerea tehnologiei de prelucrare (stabilirea platformei hardware, software i de comunicaii) 2.4 Diagrama Entitate-Asociere 2.5 Stabilirea coleciilor de date 2.6 Descrierea aplicaiei informatice 2.7 Estimarea necesarului de resurse i a calendarului de realizare

pagina 4

pagina 5 pagina 7 pagina 9 pagina 18 pagina 23 pagina 26

pagina 27 pagina 28 pagina 29 pagina 32 pagina 33 pagina 34 pagina 35

Cap. 3 PROIECTAREA DE DETALIU A APLICAIEI INFORMATICE 3.1 Definirea obiectivelor aplicaiei informatice 3.2 Proiectarea logic i fizic a ieirilor 3.3 Proiectarea logic i fizic a intrrilor 3.4 Proiectarea sistemului de codificare a datelor 3.5 Proiectarea bazei de date 3.6 Proiectarea interfeei aplicaiei Cap. 4. PREZENTAREA PRODUSULUI SOFTWARE pagina 38 pagina 40 pagina 40 pagina 41 pagina 43 pagina 49 pagina 57

Cap. 5. EFICIENA I UTILITATEA APLICAIEI INFORMATICE

pagina 119

ANEXE

pagina 121

BIBLIOGRAFIE

pagina 145

Introducere Ingredientele unei educaii eficiente pentru studeni depinde de modalitile de comunicare ntre toate prile implicate, att profesori ct i studeni. Oricine are nevoie de o instruire corespunztoare privind evoluia, respectiv provocrile cu care trebuie s se confrunte zilnic. ntruct tehnologia se dezvolt din ce n ce mai mult ca un instrument util pentru profesori, administratori, este normal s devin electronice i cataloagele. World Wide Web ofer mediul potrivit, pe care profesorii l pot folosi i de care s beneficieze i studenii. Pentru un profesor, cel mai mare avantaj al unui catalog online reprezint administrarea informaiilor, ntruct atribuiile lui se vor reduce semnificativ, el centrnd ntreaga sa activitate n doar cteva pagini, la care va avea acces oricnd i oriunde. Datele pe care el le va introduce vor fi reinute n baza de date, profesorul, ulterior avnd posibilitatea s le modifice. Practic, el are acces imediat la diferite rapoarte, fie c este vorba de progresul mai multor studeni care sunt nscrii la aceeai facultate, fie c se dorete vizualizarea progresului academic al unui student, la materiile care i sunt predate. Studenii pot transforma aceast experien ntr-una pozitiv, ntruct au acces la evoluia lor pe ntreaga durat a anului universitar, constituind un portal ctre catalogul profesorilor. Aceast idee elimin procesul transmiterii informaiei ntre student i profesor, alocnd timp valoros n ajutarea studenilor n urmrirea activitilor lor. n momentul n care intervine lipsa de comunicare dintre prile implicate, confuzia i nencrederea pot aprea. Profitnd de acest sistem online, nici o singur parte nu va fi inut departe de ntregul progres al fiecrei grupe, fiecrui student sau al performanei ntregii universiti. Prezenta lucrare de licena i propune s elimine din neajunsurile cataloagelor standard, i propune s realizeze un sistem informatic ce va cuprinde elemente prezentate anterior i detaliate n urmtoarele capitole.
4

Cap. 1 STUDIUL I ANALIZA SISTEMULUI EXISTENT 1.1 Prezentarea succint a unitii economico-sociale Universitatea Romno-American din Bucureti a fost nfiinat n anul 1991, n cadrul Fundaiei Romno - Americane pentru Promovarea Educaiei i Culturii, avnd drept scop promovarea valorilor educaionale ale nvmntului superior american, pe fondul bogatelor tradiii ale nvmntului romnesc. La ntrunirea n care Prof.univ.dr. Ion Smedescu a anunat nfiinarea Universitii RomnoAmericane, n prezena mass-media i a doamnei Agata Kooperman, ataat cultural al Ambasadei SUA din Bucureti, doamna Kooperman a fost de acord cu nfiinarea i denumirea Universitii, recomandnd o serie de universiti din SUA pentru a fi contactate i pentru a stabili relaii de cooperare. S-a pornit de la faptul c n Statele Unite ale Americii nvmntul superior are ca suport modelul general de comportament al societii americane bazat pe organizarea eficient a activitii, simul perseverent al datoriei, cultivarea sentimentului muncii, respectul de sine i fa de ceilali, spiritul onest al competiiei ntreinut de-a lungul ntregii viei, ntrecerea cu toi ceilali i, n primul rnd cu sine nsui. Iniiativa nfiinrii Universitii aparine profesorului universitar dr. Ion Smedescu, care este fondatorul i Rectorul Universitii, membru activ al Academiei Americane de tiine din New York, Preedintele Fundaiei Romno-Americane pentru Promovarea Educaiei i Culturii, n activitatea creia este integrat Universitatea. Domnia sa este membru al Consiliului Naional al Asociaiei Generale a Economitilor din Romnia i director general adjunct al Centrului Internaional de Biografii din Cambridge. A fost declarat de Institutul American de Biografii din SUA "Omul Anului" n 2001, 2002 i 2003; acelai institut i-a acordat "Medalia de Onoare American". De asemenea, a fost distins cu "Medalia de aur a Academiei de tiine a Braziliei". n luna ianuarie 2004, apreciind contribuia deosebit la promovarea i dezvoltarea nvmntului romnesc i ntreaga sa activitate didactic i de cercetare, profesorului univ.dr. Ion Smedescu i s-a
5

conferit, prin Decret Prezidenial, Ordinul Naional Serviciul Credincios n gradul de Cavaler. Conceput ca form alternativ i complementar la nvmntul superior public, Universitatea are n structura sa 6 faculti, din care 5 cu profil economic i una cu profil juridic, respectiv: Facultatea de Relaii Comerciale i Financiar Bancare Interne i Internaionale, Facultatea de Management-Marketing, Facultatea de Economia Turismului Intern i Internaional, Facultatea de Informatic Managerial, Facultatea de Studii ale Integrrii Economice Europene, Facultatea de Drept. n contextul reformei impuse de Procesul Bologna, Universitatea a urmrit creterea gradului de compatibilizare a ofertei sale educaionale cu nvmntul european i a realizat totodat, prin intermediul aciunilor ntreprinse, trecerea la nvmntul integrat (licena - masterat - doctorat). Pentru realizarea misiunii i obiectivelor sale, Universitatea Romno-American din Bucureti se sprijin pe o colaborare fructuoas cu universiti americane, din rndul crora se detaeaz JAMES MADISON UNIVERSITY, din statul Virginia, AMERICAN UNIVERSITY din Washington D.C., UNIVERSITATEA de NORD - TEXAS, UNIVERSITATEA BARRY - Florida, UNIVERSITATEA DE SALLES - Pennsylvania, cu acestea fiind ncheiate acorduri de lung durat, precum i universiti i instituii din Europa, America de Sud (Brazilia). Numeroi studeni au beneficiat de burse de studiu n SUA, inclusiv pentru Masterat, o parte din acetia rmnnd n cadrul corpului profesoral al Universitii.

1.2 Activitile desfurate n unitatea economic (caracteristicile generale ale sistemului economic din unitate) Pe baza acordului de cooperare pe termen lung ncheiat cu James Madison University, Universitatea Romno-American beneficiaz de prezena i contribuia unor cadre didactice americane de prestigiu, de manuale i materiale de studiu, de burse pentru studeni; organizeaz vizite ale unor studeni americani n zone istorice i turistice ale Romniei, n scopul cunoaterii de ctre acetia a rii noastre; organizeaz n comun simpozioane tiinifice educaionale, schimb de experien ntre cadrele didactice, etc. Cancelarul Universitii James Madison, din statul Virginia, profesorul Ronald Carrier a dat curs, n mai multe rnduri, invitaiei de a vizita Universitatea Romno American din Bucureti pentru a cunoate direct, la faa locului, preocuprile studenilor i ale profesorilor notri. Pentru spirjinul acordat Universitii Romno-Americane, domnul Ronald Carrier, n calitate de Rector al James Madison University a fost ales preedinte de onoare al Fundaiei Romno-Americane pentru Promovarea Educaiei i Culturii. Menionm, de asemenea, contribuiile domnilor prof. dr. Stephen Bowers i prof.univ.dr. Bijan Saadatmand, care au contribuit fundamental la punerea bazelor i la dezvoltarea permanenta a cooperrii ntre cele dou instituii de invmnt superior. Aceasta fructuas cooperare dintre cele dou universiti a cptat, n timp, noi valene i datorit sprijinului primit, n mod constant, de la Dl. Linwood Rose, actualul Preedinte al James Madison University i al D-nei. Lee Sternberger, Directorul pentru Relaii Internaionale. n acest fel s-au putut realiza n permanen schimburi de profesori i studeni, asigurndu-se o mai mare deschidere a Universitii Romno-Americane ctre mediul academic american. Acreditarea Universitii a permis introducerea unei gndiri noi i a unei abordri strategice menite s consolideze capacitile de cercetare existente i s relanseze aceast activitate prin implicarea mai activ a cadrelor didactice i a studenilor n Programe i Grant-uri interne i Internaionale. n cei 15 ani de activitate, Universitatea RomnoAmerican s-a afirmat ca un furnizor de educaie oferind societii romneti peste 12.000

de liceniai pe care i ntlnim n majoritatea structurilor administraiei, n diverse firme, bnci i instituii social-culturale. n favoarea ideii de reform curricular, derulat n cadrul Universitii au pledat permanent o serie de argumente fundamentale precum: performana, egalitatea de anse, compatibilizarea cu sistemele european i american de nvmnt, asigurarea unei succesiuni logice a disciplinelor pe ani de studii, consolidarea sistemului de credite transferabile, etc.

Pentru creterea performanelor cadrelor didactice, Senatul Universitii a stabilit criterii de evaluare anual, inndu-se seama de calitatea cursurilor, a seminariilor i a lucrrilor aplicative, de activitatea de cercetare tiinific i fidelitatea fa de Universitate. La evaluarea cadrelor didactice particip i studenii. Promovarea unei atitudini de parteneriat ntre cadrele didactice i studeni conduce la realizarea unui nvmnt participativ, performant i pragmatic, bazat pe cunoatere, nelegere i demnitate, pe respectarea i ncurajarea personalitii fiecrui student. Astfel, se acord o atenie deosebit dezvoltrii creativitii studenilor, stimulrii exprimrii opiniilor, formrii atitudinilor i convingerilor bazate pe promovarea valorilor naionale i internaionale. Prin tot ceea ce a nfptuit pn n prezent Universitatea Romno-American i-a consolidat poziia n sistemul naional de nvmnt, iar activitatea sa a cptat valene noi, necesare n condiiile unei acerbe competiii i concurene pe piaa forei de munca nalt calificate din Romnia i din lume. Realizarea obiectivelor i misiunii sale au contribuit la creterea prestigiului n rndul universitilor din Romnia, dovedindu-se viabil ideea de alternativ la nvmntul universitar public.

1.3 Studiul sistemului de conducere Universitatea Romno-American din Bucureti are un sistem de conducere care respect reglementrile legale n vigoare, principiile managementului modern i bunele practici promovate n sistemele educaionale ale rilor din Uniunea European. Toate compartimentele de suport academic i serviciile administrative din cadrul URA sunt ncadrate cu personal corespunzator din punct de vedere al calificrii profesionale i condiiilor cerute pentru ocuparea posturilor respective. Mai jos voi enumera cteva dintre principalele funcii de conducere din cadrul Universitii: DIRECTOR GENERAL Atribuii: o Stabilete obiectivele de dezvoltare ale firmei, n concordan cu strategia elaborat de Consiliul de Administraie: comunic obiectivele i urmrete ca acestea s fie comunicate ntregului personal; monitorizeaz trimestrial/semestrial/anual gradul de realizare a obiectivelor; stabilete obiective personale i pentru top-management n strict concordan cu obiectivele firmei. o Aprob bugetul i rectificrile acestuia: particip la elaborarea bugetului, analizeaz propunerile naintate, opereaz coreciile necesare i aprob bugetul final; aprob sistemul de raportare folosit pentru urmrirea realizrii bugetului. o Identific oportuniti de afaceri: monitorizeaz piaa i identific tendinele de dezvoltare; analizeaz oportunitile/constrngerile de ordin legislativ, financiar, tehnologic i social; identific modaliti de dezvoltare a serviciilor oferite de firma n concordan cu tendinele pieei; identific i atrage resursele necesare pentru implementarea noilor idei de afaceri. o Reprezint firma n relaiile protocolare cu furnizorii, clienii i alte organisme/organizaii cu impact real/potenial asupra rezultatelor firmei: asigur o bun imagine a firmei pe pia; particip la ntlniri de afaceri cu furnizori, clieni,
9

organisme financiare i instituii guvernamentale din ar i din strintate; dezvolt relaii pozitive cu persoane-cheie n vederea ntririi poziiei firmei. o Asigur managementul firmei: comunic managementului valorile i obiectivele strategice ale firmei; stabilete obiectivele managerilor din subordine, termenelelimit i modalitile de msurare a gradului de realizare a obiectivelor; aprob procedurile de interes general ale firmei (aprovizionare, vnzare, distribuie, financiare, service, resurse umane); particip la elaborarea i implementarea sistemelor de raportare i a sistemului de calitate; dezvolt mijloace de motivare a personalului din subordine; asigur un climat de comunicare i ncurajare a iniiativei care s contribuie la atingerea obiectivelor stabilite; identific nevoile de recrutare i particip la selecia, integrarea i dezvoltarea managementului firmei; particip la programele de elaborare i actualizare a fielor de post ale managerilor din subordine; evalueaz periodic activitatea managerilor din subordine; negociaz i conciliaz situaiile conflictuale aprute n relaiile interpersonale; aprob planificarea concediilor de odihn pentru angajaii din subordine; asigur respectarea normelor interne de funcionare de ctre personalul din subordine; stabilete msuri de eficientizare a activitii personalului din subordine. o Asigur reeaua de relaii necesar dezvoltrii activitii firmei: evalueaz potenialul furnizorilor i al clienilor; stabilete posibile ci de colaborare i decide asupra parteneriatelor strategice: elaboreaz planuri de afaceri i le implementeaz; dezvolt relaii pozitive cu personalul firmei n vederea motivrii i a creterii gradului de implicare n activitatea firmei. DIRECTOR ECONOMIC Atribuii: o Asigur buna gestionare a patrimoniului: asigur condiiile necesare pentru ntocmirea documentelor justificative privind operaiile patrimoniale; asigur controlul operaiunilor patrimoniale efectuate la nivelul firmei, procedeele de
10

prelucrare utilizate, precum i exactitatea datelor contabile furnizate; organizeaz inventarierea patrimoniului i valorificarea rezultatelor inventarierii; asigur analiza periodic a utilizrii i strii mijloacelor fixe; asigur disponibilitile necesare i meninerea n permanen a capacitii de plat a societii; asigur plata la termen a sumelor ce sunt obligaia firmei fa de bugetul de stat, alte obligaii fa de teri; asigur efectuarea corect i la timp a calculului privind drepturile salariale ale personalului; propune msuri concrete i eficiente pentru nlturarea unor situaii nefavorabile n domeniul stocurilor; desfoar activitate de documentare n probleme economico-financiare. o Asigur respectarea legislaiei fiscale la nivel de firm: se documenteaz la zi cu privire la legislaia din domeniul financiar-contabil i asigur desfurarea activitii financiar-contabile n conformitate cu legislaia de specialitate; asigur respectarea regulilor de ntocmire a bilanului contabil, depunerea la termen la organele de drept i publicarea acestuia n Monitorul Oficial; asigur pstrarea documentelor justificative, a registrelor i a bilanurilor contabile; urmrete respectarea legislaiei fiscal; urmrete constituirea fondurilor i utilizarea acestora cu respectarea dispoziiilor legale; exercit controlul financiar preventiv privind legalitatea operaiunilor. o ntocmete bugetul general al societii, informeaz i face propuneri de corecie: realizeaz proiectul de buget semestrial i anual, defalcat; analizeaz indicatorii de afaceri i i exprim punctul de vedere n legatur cu acetia; sprijin departamentele firmei n analiza indicatorilor proprii. o Raporteaz rezultatele financiare ale firmei: asigur nregistrarea sistematic i cronologic, prelucrarea, publicarea i pstrarea informaiilor cu privire la situaia patrimonial i la rezultatele economice ale firmei; asigur ntocmirea tuturor raportrilor solicitate de organele Administraiei financiare i de control, bancare, statistice; prezint Directorului General rapoarte coninnd rezultatele financiare ale firmei.
11

o Elaboreaz i implementeaz sistemul general de eviden a gestiunii firmei: stabilete proceduri de lucru generale sau specifice care s asigure evidena de gestiune; stabilete principiile de organizare a sistemului informaional. o Conduce i organizeaz activitatea departamentului: stabilete sarcinile salariailor din subordine i prioritile n executarea acestor sarcini; particip la programele de elaborare i actualizare a fielor de post ale salariailor din subordine; evalueaz periodic activitatea salariailor din subordine; negociaz i conciliaz situaiile conflictuale aprute n relaiile interpersonale; propune recompensarea/sancionarea personalului din subordine conform normativelor interne; aprob planificarea concediilor de odihn pentru angajaii din subordine; asigur respectarea normelor interne de funcionare de ctre personalul din subordine. DECAN Atribuii: o o asigur conducerea operativ a facultii pe durata mandatului; urmrete ndeplinirea i derularea corespunztoare a programului managerial propus i validat de ctre Consiliul Profesoral; o promoveaz n mod constant msuri care s conduc la meninerea i creterea prestigiului profesional al facultii n raport cu alte uniti similare de profil din ar i strintate; o urmrete promovarea de noi specializri pe forme de nvmnt, n acord cu cerinele pieei economice i ale forei de munc; o responsabil cu activitatea didactic desfurat i probleme resurse umane; o urmrete i coordoneaz activitatea de promovare a cadrelor didactice la nivel
12

de facultate n condiiile respectrii prevederilor legale; o definete i redefinete obiectivele facultii; o organizeaz, coordoneaz i controleaz activitatea didactic din facultate; o aprob la nceputul fiecrui an universitar planurile de nvmnt i bugetul facultii; o coordoneaz i organizeaz accesarea proiectelor de cercetare tiinific; o coordoneaz aciunile de autorizare i acreditare a specializrilor facultii pe forme de nvmnt; o coordoneaz i decide, n conformitate cu prevederile legale i cu respectarea Cartei Universitii, n toate problemele didactice, tiinifice, financiare, administrative sau de alt natur ale facultii n vederea la ndeplinirea planului managerial propus i validat; o aprob conveniile de colaborare ncheiate n numele facultii cu alte insituii de nvmnt, cercetare, proiectare, din mediul socio-economic, etc: o aprob regulamentele de organizare a activitii profesionale i tiinifice la nivelul facultii; o convoac ori de cte ori este necesar i conduce edinele de Birou i Consiliu Profesoral;

13

PRODECAN Atribuii: o coordoneaz activitatea de asigurare a calitii procesului de nvmnt ; o urmrete ndeplinirea cerinelor referitoare la sistemul de evaluare a studenilor ; o avizeaz reactualizarea de cte ori este nevoie a Regulamentului studentului ;

o urmrete desfurarea procesului de nvmnt i propune spre analiz Consiliului Profesoral problemele rezultate din controlul direct sau din analizele efectuate la nivelul catedrelor i departamentelor ; o propune din partea facultii acordarea titlului de doctor n urma ndeplinirii procedurilor legale n vigoare ; o supune aprobrii Consiliului Profesoral scoaterea la concurs a posturilor didactice n funcie de strategia de dezvoltare i de posibilitile financiare ale facultii, n urma analizelor efectuate la nivel de catedr ; o coordoneaz activitatea de ntocmire a dosarelor de evaluare a programelor de studiu acreditare; o coordoneaz activitile didactice de formare continu ; o asigur buna desfurare a concursurilor n Consiliul Facultii (promovare, angajare, burse, etc.) referitoare la cadrele didactice ; o coordoneaz activitile de ntocmire a planurilor de nvmnt; o coordoneaz activitatea de ntocmire a statelor de funciuni ale catedrelor ;

14

o coordoneaz activitatea didactica susinut n facultate de ctre cadre didactice ale altor faculti/catedre ; o coordoneaz susinerea examenelor de licen i absolvire (elaborarea i repartizarea temelor) ; o coordoneaz planificarea examenelor de an; o coordoneaz stabilirea i planificarea examenelor de diferen; o asigur urmrirea i implementarea sistemului de credite transferabile; o urmrete editarea de materiale didactice (planul editorial al facultii). o controleaz modul de desfurare a activitilor didactice; o organizeaz concursurile de admitere; o avizeaz stabilirea decanilor de ani i a tutorilor ; o coordoneaz activitatea de ntocmire a orarului pe facultate ; o urmrete ndeplinirea cerinelor referitoare la formarea deprinderilor i aptitudinilor adecvate profesiei pentru care se pregtete studentul ; o organizeaz activiti consacrate promovrii imaginii facultii i recrutrii de candidai.

RECTOR Atribuii: o coordoneaz, supervizeaz i controleaz ntreaga activitate din universitate i este responsabil de calitatea i eficiena acesteia. Rectorul poate delega din atribuiile
15

sale prorectorilor i secretarului tiinific. El poate, de asemenea, retrage aceste atribuii n cazul n care consider c delegarea lor nu mai este motivat; o este preedintele Senatului, al Biroului Senatului i al Consiliului de Administraie al Universitii. Rectorul supune ntreaga sa activitate analizei Senatului Universitii; o coordoneaz strategia evoluiei Universitii pe termen scurt, mediu i lung. El propune Senatului direciile prioritare de aciune pentru realizarea obiectivelor strategice; o coordoneaz activitatea Departamentului de Cercetare tiinific, Departamentului de Asigurarea Calitii, Biblioteca Central Universitar, Biroul Audit Intern, Serviciul Resurse Umane i Baze de Date, Oficiul Juridic, Departamentul de Protocol; o reprezint universitatea n relaiile cu persoane fizice sau juridice din afara Universitii; o asigur prin ntreaga sa activitate meninerea echilibrului congruent ntre faculti, departamente i diversele componente administrative din universitate. El este garantul existenei unui climat universitar caracterizat de echitate i transparen; o asigur organizarea, n cele mai bune condiii, a controlului financiar preventiv, a controlului operativ curent, a controlului financiar i a altor forme de control pe care le consider necesare pentru desfurarea fr obturaii a ntregii activiti universitare. o coordoneaz i supervizeaz procesul de reform universitar; o reprezint universitatea, direct sau prin delegat, n relaiile cu universiti sau instituii non-academice, pe plan naional i internaional. o dispune de toate atribuiile ce-i sunt conferite de legile i regulamentele n vigoare (ordonator de credite, ncadrri i eliberri de personal, nmatriculri/ exmatriculri, numirea comisiilor de concurs, numirea comisiilor de doctorat).
16

SECRETAR TIINIFIC Atribuii: o avizeaz prezentarea n faa Consiliului Profesoral de ctre prodecanul de resort a rezultatelor obinute n activitatea de evaluare a cadrelor didactice; o se implic n activitatea de promovare a imaginii facultii; o avizeaz publicarea de ghiduri, pliante, etc. pentru promovarea imaginii Universitii; o urmrete i avizeaz activitatea de colaborare cu Biblioteca Universitii; o pregtete reuniunile Consiliului Profesoral al facultii; o stabilete sub conducerea decanului, activitile Consiliului i Biroului Consiliului Facultii i urmrete aplicarea hotrrilor acestora; o supune dezbaterii Consiliului Profesoral propunerile catedrelor, departamentelor, Centrelor de Cercetare, serviciului administrativ; o verific respectarea reglementrilor n hotrrile catedrelor, departamentelor, centrelor de cercetare, naintate Consiliului Facultii; o organizeaz alegerile organismelor de conducere din facultate n conformitate cu prevederile regulamentului alegerilor, ale Cartei Universitii i supune aprobrii CP modul de organizare; o asigur desfurarea concursurilor pentru ocuparea posturilor didactice; o nainteaz propunerile Consiliului Facultii la Senatul Universitii i Rectorat; o transmite hotrrile Consiliului Facultii catedrelor, departemantelor i Centrelor de Cercetare; o asigur funcionarea regulamentar a Consiliului Profesoral;
17

o coordoneaz activitatea de cretere a vizibilitii facultii n plan naional i internaional; o stabilete sub conducerea decanului activitile Consiliului i Biroului Consiliului Facultii i urmrete aplicarea hotrrilor acestora; o asigur buna funcionare a comisiilor Consiliului Facultii prin programarea tematicilor, convocarea membrilor comisiei n edine de lucru i prezentarea rezultatelor n faa Consiliului Facultii;

1.4 Studiul sistemului condus Facultatea reprezint unitatea funcionala de baz a instituiei de nvmnt superior i are n componen una sau mai multe secii de specialitate. Facultatea este organizat pe departamente i catedre. Departamentele Universitii Romno-Americane sunt urmtoarele: Departament Limbi Strine, Departament Cercetare, Departament Relaii Internaionale, Centrul de Studii Romno-Japoneze, Centrul de Consiliere i Orientare n Carier, Biroul de Programe Comunitare, Departament IT, Centrul de Studii i Documentare European, Biroul Acte de Studii, Centrul de Economie Politic i Afaceri Murray Rothbard. Mai jos voi enumera atribuiile ctorva departamente din cadrul Universitii : Departament Limbi Strine: o desfurarea la standarde nalte i de calitate a procesului didactic de predare a limbilor strine; o elaborarea programelor analitice la limbile strine; o elaborarea i editarea cursurilor necesare predrii limbilor strine n Universitate; o participarea la evaluarea activitii cadrelor didactice care predau limbi strine;
18

o asigurarea perfecionrii continue a metodelor de predare a limbilor strine, precum i a pregtirii profesionale a cadrelor didactice care predau limbile strine; o sprijinirea realizrii activitii de cercetare tiinific nscris n programele de cercetare ale catedrelor, facultilor i ale Universitii; o organizarea de cursuri intensive de predare a limbilor strine pentru studenii i personalul administrativ din Universitate, la solicitarea acestora; o controlul la cursurile i seminariile de predare a limbilor strine; o analiza rezultatelor obinute la examenele de limbi strine; o efectuarea consultaiilor la disciplinele de limbi strine; o participarea n comisiile de selectare i de concurs ale studenilor pentru bursele de studii n strintate; o participarea la aciunile organizate de Universitate i de ctre facultile de care aparin cadrele didactice din componena Departamentului de Limbi Strine; o participarea la asigurarea bazei materiale a Departamentului de Limbi Strine (prin sponsorizri, donaii, contribuii personale); o prezentarea de rapoarte, informri, programe cu privire la activitatea Departamentului de Limbi Strine ctre conducerile facultilor i Universitii; o asigurarea legaturilor de colaborare cu instituii i organisme specializate n promovarea excelenei n limbile strine, din ar i strintate (British Council, Institutul Cervantes etc.); o participarea la programe Internaionale i europene de realizare a excelenei n limbile strine i de colaborare n acest scop, cu universiti indigene i strine.

19

Departament IT: Membrii acestui serviciu asigur funcionarea unei infrastructuri IT extinse, ce cuprinde n ansamblul su o multitudine de elemente: o ntreinerea, supravegherea i dezvoltarea conform necesitilor funcionale ale unei reele de calculatoare cu cteva sute de staii interconectate o conexiune la internet prin fibr optic o managementul accesului i traficului att n cadrul reelei intranet ct i prin conexiunea la internet o ntreinerea i modernizarea infrastructurii hardware a laboratoarelor de Informatic din cadrul Universitii o instalarea, configurarea i ntreinerea aplicaiilor software utilizate n cadrul procesului de nvmnt o ntreinerea i dezvoltarea infrastructurii hardware din cadrul serviciilor administrative ale Universitii o dezvoltarea i realizarea de materiale promoionale i informative privind activitatea Universitii o ntreinerea i exploatarea mijloacelor multimedia din cadrul spaiilor de nvmnt o asigurarea de suport tehnic permanent n ceea ce privete utilizarea echipamentelor hardware i a aplicaiilor software pentru toate serviciile funcionale ale Universitii o ntreinerea, managementul i dezvoltarea permanenta a reelei de comunicaii telefonice o expertiza i consilierea tehnic n cazurile achiziiilor de echipamente din sfera IT
20

o realizarea, editarea i utilizarea materialelor foto-video privind evenimentele i activitile din cadrul Universitii o dezvoltarea i utilizarea de aplicaii software proprii pentru rezolvarea i automatizarea punctual a unor sarcini ale diferitelor servicii funcionale ale Universitii o instalarea, ntreinerea i dezvoltarea sistemelor de securitate utilizate n cadrul campusului universitar. Centrul de Studii i Documentare European: o urmrirea, evaluarea i achiziionarea de materiale de specialitate din Romnia i din strintate, necesare pentru derularea activitii de cercetare sau procesului didactic n cadrul Universitii Romno-Americane; o realizarea de studii i analize n domeniul integrrii economice europene; (proiecte de cercetare finanate din programele naionale i internaionale, contracte cu companii, articole de specialitate etc.) o organizarea de manifestri tiinifice: simpozioane, conferine, mese rotunde, dezbateri; o realizarea de contacte cu poteniali parteneri din strintate: Universiti, Centre de Cercetare, Instituii Europene, Centre de formare etc. o realizarea de demersuri pentru ntrirea legaturilor cu instituii de profil din Romnia n vederea realizrii activitilor de cercetare i organizare de evenimente dedicate integrrii economice europene; (Institutul de Economie Mondiala i cu Institutul European din Romnia) o editarea revistei Universitii n limba englez (Romanian Economic and Business Review);

21

o organizarea de activiti tiinifice n cadrul proiectelor cu finanare European pentru a facilita buna derulare a acestora dar i un grad de diseminare a rezultatelor ct mai ridicat.

Organigrama conducerii academice i administrative a universitii

22

Organigrama facultii

1.5 Studiul sistemului informaional Sistemul informaional al managementului universitar reprezint ansamblul informaiilor, fluxurilor informaionale, procedurilor i mijloacelor de tratare a informaiilor, menite s contribuie la realizarea obiectivelor Universitii. Din definiie rezult c sistemul informaional al managementului universitar este alctuit din mai multe elemente corelate ntre ele: date i informaii, fluxuri informaionale, proceduri i mijloace de tratare (prelucrare) a informaiilor. Tabelul de mai jos ar putea fi considerat un punct de plecare n analiza sistemului actual al universitii, sistem informaional relevant pentru tema acestei lucrri.
23

Descrierea funciei

- fia personal a studentului - situaia colar pe fiecare semestru - situaia la examene

Furnizorii de date

- studenii fia personal - licee foaia matricol - cadru didactic situaia colar - secretariat rezultat examene

Beneficiarii datelor

- cadre didactice - studeni - compartiment secretariat, contabilitate - decanat, facultate

Tipuri de date necesare realizrii funciei

a. Date personale - nume i prenume - data nscrierii - unitatea de nvmnt de la care provine pentru evidena unitilor care furnizeaz studeni la nscriere, prognoza dinamicii numrului de studeni i posturi didactice - documente prezentate la nscriere pentru evidena actelor de studii i ntocmirea fiei personale - media de absolvire a liceului - limbi strine studiate - numr matricol - data i locul naterii, sex, evidena militar, situaii statistice, examene - act identitate evidena militar etc. - naionalitate - cetenie -domiciliu stabil/flotant - telefon - prini nume i prenume-, profesie, loc de 24

munc - starea sntii - observaii b. Situaia colar - numr matricol/legitimaie informatizat - facultatea - an de studii - grupa - semestrul- disciplina - media - media semestrial i anual - situaia colar: promovat, repetent, exmatriculat, situaie nencheiata - numr absene - bursier (tip bursa, perioada acordat, suma) - evidenieri i sanciuni c. Situaia la examene - tip examen - sesiune - tip prob - disciplina - media/nota obinut Mod de folosire a datelor - pentru construirea grupelor i seriilor - activitatea cadrului didactic - calcularea bugetului - adeverine studeni - evidena militar - organizare examene - evidena burselor - evidena studenilor strini - situaii statistice - eviden acte studii 25

- evidena rezultatelor la examene - comunicri oficiale - evaluare a instituiei de nvmnt Mod de colectare a datelor - foaia matricol - fia personal - catalog Frecvena efecturii funciei La nscrierea studenilor i de cte ori apar modificri

1.6 Analiza critic a sistemului existent n sistemul actual, Universitatea Romno-American ne ofer acces la diferite informaii ale acesteia prin site-ul existent (www.rau.ro), deasemenea la datele studenilor nscrii la facultile din cadrul Universitii printr-un catalog online. Aceasta idee de vizualizare a progresului academic al studenilor este una inovativa, dar ca orice concept nou exist att avantaje, ct i dezavantaje. n momentul n care un student dorete sa fie direcionat ctre pagina respectiv, este rugat s s aleag departamentul din care face parte si s introduc un cod numeric personal ; ulterior se va deschide o pagin cu ntreaga baz de date a studenilor nscrii la facultatea respectiv. n dreptul fiecrui student este afiat anul universitar, grupa, disciplina i notele. Dac studentul dorete s vizualizeze performanele sale, este obligat s navigheze pe ntreaga pagin, acest proces fiind unul destul de anevoios. Un alt aspect care nu ar trebui neglijat este i faptul c studentul poate observa att notele lui ct i ale celorlali, lucru ce ar putea fi remediat prin crearea unei securizri, astfel nct studentul s poat accesa numai informaiile sale. Prin aceast lucrare se propun cteva modificri ale sistemului actual.

26

Cap. 2. PROIECTAREA DE ANSAMBLU A SISTEMULUI INFORMATIC 2.1 Obiectivele i oportunitatea aplicaiei informatice Proiectarea web ca disciplin tiinific este influenat de dezvoltarea aplicaiilor web, ele reprezentnd un nou domeniu de aplicaii cu propriile sale provocri asupra dezvoltrii software-ului. World Wide Web are o influen enorm i permanent asupra vieii noastre. Economia, industria, educaia, sntatea, administraia public i distracia reprezint componente ale vieii noastre care nu au fost ptrunse de World Wide Web. Motivul acestei omniprezene const n special n natura web-ului, caracterizat prin disponibilitatea global i permanent dar i prin accesul omogen la informaiile distribuite la nivel global produse de indivizi sub forma paginilor web. Iniial, web-ul a fost proiectat ca un mediu pur informaional, n prezent evolund ntr-un mediu al aplicaiei. Aplicaiile web de astzi sunt rapide i reprezint sisteme software complexe care ofer servicii interactive i personabilizabile accesibile prin intermediul diferitelor dispozitive; ele ofer posibilitatea realizrii tranzaciilor ntre utilizatori i de obicei stocheaz datele ntr-o baz de date. Aplicaiile web sunt soluii specializate, cu funcionaliti ridicate i atractive. Ele asigur o mai bun relaie i interactivitate cu clienii. Marele avantaj al aplicaiilor online este integritatea i posibilitatea de a le ajusta n funcie de particularitile i nevoile clientului. Totodat ele pot foarte uor fi combinate, funcionnd simultan, pentru a spori eficiena. RAUGradebook este o aplicaie care poate fi dezvoltat n orice organizaie, att ntr-o companie de succes ct i ntr-o ntreprindere noua pe piaa economic. Crearea acesteia ajut la dezvoltarea acestei ntreprinderi i este relativ uor de proiectat. Permite utilizatorilor un acces mai uor i mai sigur la o baz de date, dar i la anumite informaii pe care serverul le permite, de la orice calculator.

27

2.2 Locul aplicaiei informatice n sistem Oricine are nevoie de informaii precise privind progresul studenilor. Tehnologia interactiv modern este o component vital n ajutarea studenilor i a profesorilor s fie informai i inui la curent cu toate aceste evoluii. Acest lucru poate fi realizat folosind un catalog online. Un catalog online este o metod rapid i eficient att pentru studeni ct i pentru profesori n vederea interacionrii acestora, pentru obinerea unei experiene educaionale pozitive. Profesorii nregistreaz note, urmnd ca studenii s vizualizeze rezultatele finale. Toate prile sunt implicate i informate n legtur cu starea curent a mediului de lucru i a ntregului progres. Aplicaia pe care am dezvoltat-o aduce o alt perspectiv n ceea ce privete evaluarea studenilor. Prin aceasta se faciliteaz sarcina profesorilor, ntruct li-i se pune la dispoziie o aplicaie uor de manevrat i care ar putea fi accesat de oriunde, indiferent unde te afli la momentul respectiv. Catalogul ofer studenilor un feedback rapid al progresului lor academic, iar profesorii au, practic, acces la un raport imediat al evoluiei fiecrui student. Aplicaia dezvoltat are att avantaje ct i dezavantaje. Printre avantaje s-ar numra urmtoarele: securitate, ntruct fiecare student/profesor i administrator beneficiaz de propriul user-name i parol, aadar un student nu ar putea accesa alte pagini dect cele care i sunt permise, nu ar avea drept de modificare asupra notelor sale, flexibilitate, pentru c oricine poate accesa site-ul oriunde i oricnd, accesul este permis simultan de pe mai multe calculatoare, informaiile sunt mereu actualizate, administratorul fiind cel care ntreine aplicaia, gestioneaz studenii, profesorii, precum i alte date ale acestora, dar i simplitate, aplicaia nu este una complex i poate fi utilizat de orice persoan, indiferent de gradul de cunoatere al funcionrii calculatorului, internet-ului.

28

Imbuntiri n ceea ce privete aplicaia pe care am dezvoltat-o ar putea fi aduse, ntruct ar putea exista o modalitate prin care studenii i profesorii s poat comunica ( chat ), ar putea fi postate de ctre profesori i temele studenilor, ei putnd sa acceseze o anumit pagin a grupului lor unde s-ar putea observa cerinele temei respective. Deasemenea, o astfel de aplicaie ar putea prezenta un anumit risc, n sensul c un hacker ar avea multiple posibiliti de spargere a codului aplicaiei dezvoltate, rezultatul acesta ducnd la consecine, ntruct va putea fi realizat modificarea oricrei informaii de pe orice pagin. Din cauza faptului c este o aplicaie simpl, nu are integrate foarte multe elemente, dar ea se va putea transforma ntr-o aplicaie mult mai complex n viitor.

2.3 Alegerea tehnologiei de prelucrare (stabilirea platformei hardware, software i de comunicatii) Pentru aplicaie am folosit SQL Server Management Studio 2008, prin intermediul cruia am creat o baz de date numit RAUDatabase, n care am definit tabelele de care aveam nevoie pentru implementarea lor n aplicaie, RAUGradebook, stabilind cheile primare i legturile aferente. Tabele au fost populate cu informaii legate de studeni, profesori, materii i note. Studenilor i profesorilor le-am atribuit coduri de utilizator i roluri, pentru a stabili diferite privilegii pentru fiecare client, care dorete s se autentifice n aplicaie. Folosind Microsoft Visual Web Developer 2008 am realizat interfaa paginilor web, prin care user-ul comunic cu server-ul, trimind instruciuni pentru crearea, vizualizarea, modificarea sau tergerea datelor din baza de date existent. Platforma .NET este o platform pe care se vor crea noile generaii de soft. Microsoftul a investit foarte mult capital n dezvoltarea lui i n adoptarea unui nou standard. n aceast platform se pot dezvolta numeroase tipuri de aplicaii, pornind de la cele Consola, la XML Web services, Web Forms i aplicaii bazate pe HTML, Windows Forms , Windows services, Component library.
29

Microsoft .NET Framework este o colecie cuprinztoare de clase, care furnizeaz programatorilor aproape tot ce le trebuie pentru a scrie aplicaii pentru internet, web i Windows. .NET se adreseaz cu predilecie domeniului programrii pentru web. Clasele definite n .NET Framework sunt neutre fa de limbaj. Microsoft a lansat noi versiuni de C++ i Visual Basic, care pot utiliza aceste clase, precum i noul limbaj de programare C#. SQL Server Management Studio 2008 Microsoft SQL Server 2008 Management Studio Express (SSMSE) este un mediu integrat pentru accesarea, configurarea, gestionarea, administrarea i dezvoltarea tuturor componentelor SQL Server. SQL Server 2008 Management Studio Express combin un grup larg de instrumente grafice, cu un numr de editori bogat pentru a oferi acces la SQL Server pentru dezvoltatorii i administratorii de toate nivelurile de calificare. SQL Server poate stoca cantiti mari de date a unor useri simultani, prin aceasta distingndu-se de Microsoft Access, creat ca o baz de date pentru un user individual.

Visual Basic i C# Att Visual Basic ct i C# sunt axate pe componenta de interfa a programului, programatorul putnd realiza cu uurin interfee standardizate de tip Windows (ferestre, butoane, liste etc.) fr a fi nevoie de scrierea de cod pentru acest lucru. Dein o bibliotec de componente vizuale (liste, calendare, meniuri etc.) a cror componente (grafic i funcional) sunt deja implementate, avnd posibilitatea ca programatorul s introduc i sa foloseasc componente proprii sau realizate de ali programatori. Visual Basic este un limbaj orientat pe obiecte, avnd deja implementat o list de clase cu utilizare general. Odat cu apariia versiunii 7, adic odat cu apariia tehnologiei .NET,
30

VB poate utiliza i crea i componente .NET cu toate avantajele pe care acestea le aduc. VB este un limbaj de nivel nalt avnd implementate mai multe niveluri de abstractizare a dezvoltrii unei aplicaii dar i posibilitatea de compilare n formatul Windows EXE sau DLL de 16 i 32 biti. VB este un limbaj interpretat, adic orice cod scris n limbajul VB trebuie mai inti tradus ntr-un limbaj de nivel inferior i dup aceea executat. Acest lucru are avantaje (cum ar fi rularea fr compilare sau portabilitatea ntre platforme) dar i dezavantaje. Unul dintre punctele forte ale limbajului VB este acela c se pot realiza ntr-un timp relativ scurt aplicaii complexe i se pot utiliza relativ simplu sisteme informatice dedicate (cum ar fi bazele de date- VB poate utiliza toate sistemele de gestiune a bazelor de date cunoscute, direct sau prin intermediul ODBC). C # este un limbaj de programare relativ nou i este important cel puin sub dou aspecte : - este n mod deosebit proiectat i orientat pentru a fi folosit mpreuna cu Microsoft . Net Framework ( o viitoare platform de dezvoltare i execuie a aplicaiilor distribuite); - este un limbaj bazat pe metodologia modern orientat obiect i cnd a fost proiectat Microsoft a nvat nvat din experiena tuturor celorlalte limbaje similare care au fost folosite de cnd a aprut programarea orientat pe obiecte. C# a fost proiectat pentru a genera cod pentru mediu .Net i nu este parte component a acestuia . Utilizarea acestor limbaje este una general, putnd fi folosite la crearea de programe simple, educaionale dar i la crearea de aplicaii complexe. Teoretic oricine (mai mult sau mai puin experimentat) poate utiliza VB sau C#, pentru c sunt limbaje de programare simple.

31

2.4 Modelarea datelor i modelarea prelucrrilor

O ramur foarte important n proiectarea unei aplicaii o reprezint modelarea datelor i a felului n care ele relaioneaz ntre ele. Tehnologia de specialitate a stabilit mai multe modaliti prin care se pot determina structura tipurilor de date cu care se va lucra. Proiectarea i realizarea unui sistem informatic care presupune prelucrarea automata a datelor necesit, pe lng activitile legate de formularea problemei, de analiza acesteia n vederea gsirii algoritmului de rezolvare i o alt activitate, deosebit de important, legat de organizarea datelor, n concordan att cu caracteristicile tehnice ale echipamentelor de calcul, ct i cu cerinele de prelucrare. Acestea trebuie s fie structurate astfel nct prin codificarea i apoi memorarea lor pe supori tehnici s permit prelucrrile necesare, stocarea i regsirea ulterioar a datelor dup criteriile stabilite. Legturile i relaiile dintre date pot fi stabilite prin Modelarea Conceptual a Datelor, aceast modalitate fiind reprezentat prin modelul Entitate Asociere (Diagrama Entitate Asociere). Modelarea conceptual a datelor definete reprezentarea modului de organizare a datelor independent de tehnologiile deprelucrare a acestora i fr a acorda o atenie deosebit calitii modelului datelor. Modelul conceptual este prezentat prin intermediul diagramelor Entitate Asociere i evideniaz reprezentarea logic, detaliat a entitilor, a asocierilor i a datelor elementare din cadrul sistemului obiect. Procesul de modelare logic a datelor se desfoar n paralel cu celelalte activiti de proiectare, cum sunt proiectarea rapoartelor, a machetelor de introducere a datelor, a interfeei.

32

2.5 Diagrama Entitate-Asociere Baza de date pe care am implementat-o se numete RAUDatabase, pe care am creat-o n SQL Server 2008 i conine patru tabele: Students, Professors, Subjects i Marks.

Capatele liniilor indic dac relaia este one-to-one sau one-to-many. Dac relaia are o cheie ntr-un capt i forma de 8 n cellalt capt, relaia este one-to-many. Dac linia are o cheie n ambele capete atunci relaia este one-to-one.

33

2.6 Stabilirea coleciilor de date Cheia primar a tabelului Students o reprezint Student_ID, numrul de nmatriculare al fiecrui student. Cmpul User_Name va face legtura cu baza de date a user-ilor (ASPNETDB). Cheia primar a tabelului Professors o constituie Professor_ID, reprezentnd un cod unic pentru fiecare profesor. Cmpul User_Name va face legtura cu baza de date a userilor (ASPNETDB). Cheia primar a tabelului Subjects este Subject_ID. Professor_ID este o cheie strin i se refer la cheia primar a tabelului Professors. Relaia pe care am stabilit-o este de Oneto-One, ntruct un profesor nu poate sa predea dect o singur materie, iar materia nu poate fi predat dect de un singur profesor. n tabelul Marks nu exist o cheie primar, dar perechea (Student_ID, Subject_ID) este considerat un index primar, care are proprietatea de a nu ignora duplicarea perechilor n momentul n care se modific datele. Din cauza aceasta pot s inlocuiasc cu succes o cheie primar. Tabelul are urmtoarele chei: cheie strin, definind o relaie One-to-Many ntre Student_ID i cheia primar a tabelului Students; cheie strin, definind o relaie One-to-Many ntre Subject_ID i cheia primar a tabelului Subjects.

34

2.7 Estimarea necesarului de resurse i a calendarului de realizare Dezvoltarea direct de sisteme informatice se dovedete o ntreprindere riscant dac nu este precedat de activiti care au menirea de a impune o echip, o tehnologie unitar de analiz, design, dezvoltare, implementare, exploatare i mentenana, aspecte care trebuie luate n considerare la efectuarea unui audit de sistem informatic. Sistemele informatice sunt construcii complexe necesitnd: - fonduri mari, uriae n anumite cazuri; - echipe complexe i stabile de analiti, designeri, programatori i personal care se ocup de testare, implementare i mentenan; - stabilirea obiectivelor; - definirea unei strategii de dezvoltare, exploatare i mentenan; - achiziionarea de echipamente, instrumente necesare realizrii de prelucrri, de conexiuni i dezvoltrii fluxurilor cu exteriorul; - calificarea personalului pentru utilizarea corect i eficient a sistemului. Pentru implementarea produsului program prezentat anterior, am considerat resursele enumerate mai jos : Resurse Hardware : pentru a accelera procesul de proiectare va fi nevoie de dou calculatoare dotate cu procesor de ultim generaie, Intel Core 2 Duo sau echivalent, 1GB Ram i 100 GB HDD. n acest fel procesul va fi unul mai rapid. (Pre : 2 X 1.500 RON = 3.000 RON) Resurse software : ca i resurs software este necesar ca sistem de operare Microsoft Windows XP/7 (deoarece aplicaia va fi proiectat pentru platforma Windows), alturi de Microsoft SQL Server 2008 i de Microsoft Visual Web Developer 2008 Express Edition. (ntruct cele dou programe se pot achiziiona gratuit am considerat doar preul licenei de Windows - Pre : 2 X 705 RON (200 $) = 1.410 RON)
35

Resurse umane : un inginer proiectant pentru Baza de Date, pentru punerea la punct a ieirilor/intrrilor, un programator pentru modulele aplicaiei, realizarea aplicaiei ; acesta va administra ntregul sistem lunar, att ct va fi necesar, pentru eventuale noi mbuntiri etc. (Pre : 1780 RON (400 euro) + 2670 RON (600 euro) + ntre 130 900 RON (30 200 euro) pentru administrare lunara, trimestrial sau punctual) Resurse financiare : se estimeaz o sum de proiectare / programare / implementare de aproximativ 10.000 RON Calendarul de realizare al sistemului informatic :

Se estimeaz un total de aproximativ 64 de zile.

Complexitatea sistemelor informatice i durata, relativ mare, de realizare a acestora pot genera o serie de probleme care trebuie luate n considerare i soluionate astfel nct, n final, s se obin rezultatele scontate. Dar n timp ce toate procesele implicate se deruleaz concomitent, obiectivul stabilit iniial, acela de a realiza un sistem informatic pentru managementul companiei, rmne nemodificat. Sunt situaii n care chiar condiiile privind termenele de predare rmn neschimbate. n cazul n care noile cerine conduc la creterea semnificativa a complexitii produsului final sistemul informatic pentru management se impune creterea volumului investiiei pentru a suplimenta resursele necesare

36

dezvoltrii unui volum mai mare de activiti. Creterea volumului de activiti care se deruleaz n paralel impune noi abordri la nivelul concepiei sistemului informatic. Realizarea unui sistem informatic are menirea de a sprijini actul decizional la toate nivelurile. Sporul de informaie, calitatea acesteia, promptitudinea cu care se obine sunt argumente puternice pentru a determina saltul calitativ pe care l presupune societatea bazat pe cunoatere. Din aceste considerente, implementarea unui sistem informatic trebuie s genereze efecte pozitive att pentru utilizatorii si, ct mai ales, pentru beneficiarii direci ai informaiei prelucrate. Pentru a se obine acest deziderat, n procesul de elaborare este necesar aplicarea tuturor cerinelor privind managementul calitii sistemului informatic. De asemenea, este necesar s se realizeze auditul sistemului informatic pentru a se obine garania c acesta realizeaz corect i complet prelucrrile pentru care a fost proiectat, iar orice combinaie de date, alta dect cea corect i complet, este semnalat i nu este generatoare de efecte colaterale pe termen mediu i lung.

37

Cap. 3. PROIECTAREA DE DETALIU A APLICAIEI INFORMATICE 3.1 Definirea obiectivelor aplicaiei informatice n acest capitol voi descrie funcionalitatea aplicaiei din punctul de vedere al user-ului. Prima pagina a aplicaiei RAUGradebook poate fi vizualizat de oricine acceseaz site-ul. Conine informaii menite s ajute user-ul s se logheze: dou cmpuri, unul n care se introduce user-ul persoanei care dorete s se autentifice n aplicaie, respectiv parola acestuia. La nceput, user-ii au aceeai parol ca user name-ul lor. n momentul n care un user s-a autentificat cu succes, informaia care va fi afiat, va fi n funcie de rolul pe care l-am atribuit n baza de date (Student, Professor, Administrator). El va fi direcionat ctre o alt pagin dup cum urmeaz: Pagina Studentului Dup logarea studentului n aplicaie, el este direcionat ctre o pagin, n care vor fi explicate modificrile pe care le poate efectua, precum i informaiile la care are acces. Pagina va afia user name-ul studentului pe toat durata logrii lui n aplicaie, indiferent pe ce pagin va naviga. Dac studentul alege s i vizualizeze notele, va fi direcionat ctre pagina respectiv, unde va fi afiat un tabel, care va conine numele materiei la care este nscris, profesorul care o pred, respectiv departamentul din care face parte i nota studentului. Ultimul cmp poate sa fie gol, dac profesorul nu a dorit sa completeze. Exista o alt pagin, pe care studentul o poate accesa, i anume pagina cu datele sale personale, date pe care le poate modifica ulterior.

38

Studentul i poate schimba parola. Pentru ca acest lucru s se poat ntmpla, el va fi direcionat ctre un formular, pe care l va completa cu parola lui iniial, iar apoi cu noua sa parol, urmnd s o confirme. Pagina Profesorului Asemntor studentului, n momentul n care un profesor se va loga n aplicaie, va fi direcionat ctre o pagin n care i vor fi explicate drepturile sale. User name-ul va rmne afiat pn n momentul delogrii sale. Profesorul va avea posibilitatea s selecteze un student dintr-o list predefinit, cruia i va putea modifica sau aduga o not la materia predat. Dac se dorete schimbarea parolei, profesorul va avea i el acces la o nou pagin, n care va fi necesar sa completeze cu parola sa iniial i, ulterior, cu noua sa parol. Pagina Administratorului Administratorul va avea mai multe drepturi, spre deosebire de un student sau un profesor, singurul lucru comun fiind modificarea parolei iniiale. Administratorul, accesnd pagina studenilor, are posiblitatea s vizualizeze o list a studenilor care sunt nscrii la Universitatea Romno American, precum i grupa din care fac parte. El are dreptul s adauge sau s tearg un student, dar i s modifice informaii personale. Spre deosebire de student, administratorul va putea s modifice, pe lng datele sale precum adresa, numr de telefon etc, numele sau anul universitar. n momentul n care va dori s adauge un student nou, va fi direcionat ctre o nou pagin. El va fi rugat s introduc informaiile acestuia, cmpurile fiind obligatorii sau opionale. Dup ce va completa datele respective, un nou student va fi creat, cu toate privilegiile unui student
39

deja existent n baza de date. Aceleai modificri le poate aduce i unui profesor, el avnd la dispoziie o list actualizat a profesorilor i posibilitatea s adauge sau s tearg informaii personale, precum i s schimbe materia pe care o pred la momentul actual, respectiv departamentul acestuia. El va putea s acceseze i pagina studenilor, unde va avea drept de modificare a notelor acestora. 3.2 Proiectarea logic i fizic a ieirilor. 3.3 Proiectarea logic i fizic a intrrilor Sistemul informaional al managementului universitar reprezint ansamblul informaiilor, fluxurilor informaionale, procedurilor i mijloacelor de tratare a informaiilor, menite s contribuie la realizarea obiectivelor universitii. Din definiie rezult c sistemul informaional al managementului universitar este alctuit din mai multe elemente corelate ntre ele: date i informaii; fluxuri informaionale; proceduri i mijloace de tratare (prelucrare) a informaiilor. Sistemul informaional universitar poate contribui la realizarea obiectivelor nvmntului superior numai n condiiile n care sunt ndeplinite funciile specifice spaiului universitar. Avnd n vedere importana acestor funcii specifice sistemului informaional am prezentat o propunere de modelare care ar putea fi considerat punct de plecare n analiza stadiului existent al sistemului informaional al universitii. Datele de intrare reprezint documentele primare care circul n cadrul fluxului informaional al universitii. Studenii, furnizorii de date, se nscriu la Universitatea Romno-American prezentndu-se cu anumite documente prin care atest competenele lor n anii anteriori: fia personal n care sunt afiate datele personale ale fiecrui student n parte, aceasta servindu-i pentru identificare, fia matricol din care se poate observa ntreaga situaie colar din anii precedeni, rezultatele distribuite pe ani colari, rezultatele la examenele susinute pn n momentul actual.

40

n urma unei analize a fiei studentului, datele lui personale sunt salvate ntr-o baz de date, el urmnd sa fie repartizat ntr-o serie, respectiv grup n cadrul unei faculti alese de el. Datele stocate n acea baz de date vor putea fi utilizate pe parcursul anilor astfel: ele vor putea fi integrate n ansamblul de rapoarte, liste, situaii cu rezultate pe care le furnizeaz sistemul informaional compartimentelor de conducere: organizarea examenelor, adeverinele pentru studeni, evidena burselor, a rezultatelor examenelor .a.m.d. Aceste date finale, pe care universitatea le folosete, reprezint datele de ieire, iar catalogul pe care l propun n aceast lucrare va reprezenta, asemeni foii matricole, respectiv fiei personale a studentului, un mod de colectare a datelor pentru eventualele statistici din cadrul ntregii universiti.

3.4 Proiectarea sistemului de codificare a datelor

SQL Server 2008 este o soluie complet de management pentru analiza datelor i ofer o platform de Business Intelligence care faciliteaz utilizarea aplicaiilor departamentale. SQL Server este un produs software cunoscut sub denumirea generic de SGBD(sistem de gestiune a bazelor de date), conceput dup modelul client server, format din dou entiti: entitatea server care cuprinde baza de date i utilitarele SQL Server; entitatea client format din staiile de lucru, de unde sunt lansate interogri, care se proceseaz pe server, iar de aici se returneaz numai informaiile cerute. Baza de date SQL Server ajut la stocarea, organizarea i extragerea informaiilor din cadrul unui volum practic infinit de date.
41

Bazele de date create n SQL Server pot fi integrate uor cu alte tehnologii, cum ar fi C#, ASP.Net sau chiar i tehnologii non-Microsoft. Ele reprezint un ansamblu structurat de date legate funcional ntre ele. Sunt structuri omogene n care se pstreaz datele. Din punct de vedere fizic, baza de date este o colecie de obiecte: tabele, diagrame, view-uri, proceduri memorate etc. SGBD (Sistemul de Gestiune a Bazelor de Date) este un ansamblu de programe care asigur interfaa dintre utilizator i baza de date. Prin aceast interfaa se realizeaz operaiile de creare, actualizare i consultare (adugare, tergere, modificare) a bazei de date.

ASP.NET Lucrul cu baze de date reprezint o component fundamental a oricrui astfel de mediu de programare. n acest sens noua tehnologie ASP se bazeaz integral pe noua platform .NET, beneficiind astfel de toate avantajele care deriv din aceasta: un set nou de limbaje de programare care pot fi folosite, un model arhitectural simplificat i n acelai timp eficientizat bazat pe noi clase i obiecte, o nou strategie de abordare a aplicaiilor web care au ca nivel back-end o baz de date, etc. Mediul ASP.NET ofer dezvoltatorilor de aplicaii web un set complet de controale pentru afiarea informaiei. Complexitatea acestora deriv att din numrul impresionant de atribute pe care le posed ct i din modul n care sunt integrate n platforma .NET. Din punct de vedere al dificultii n utilizare, am putea spune c este relativ, n sensul c variaz de la un nivel care nu implic un volum mare de cod pn la configurarea total a acestora de ctre programator, n cazul aplicaiilor complexe. Aspectul cel mai important al mediului ASP.NET l reprezint integrarea conceptelor i tehnicilor folosite ntr-un model de programare. Astfel realizarea unei aplicaii web, bazat
42

pe formulare web implic folosirea acelorai concepte valabile i n cazul programelor windows standard.

3.5 Proiectarea bazei de date

Prima baz de date implementat a fost RAUDatabase, creat cu ajutorul SQL Server. Ea conine patru tabele: Students, Professors, Subjects i Marks. Crearea tabelei Students
USE [RAUDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Students]( [Student_ID] [numeric](4, 0) IDENTITY(1,1) NOT NULL, [Last_Name] [varchar](20) NOT NULL, [Fathers_Initial] [varchar](4) NOT NULL, [First_Name] [varchar](20) NOT NULL, [Academic_Year] [numeric](1, 0) NOT NULL, [Group_Name] [varchar](5) NOT NULL, [Address] [varchar](max) NULL, [City] [varchar](20) NULL,

43

[Phone_Number] [varchar](10) NULL, [User_Name] [varchar](50) NOT NULL, CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED ( [Student_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Tabelul Students conine o cheie primar, Student_ID, acest cmp reprezentnd numrul de nmatriculare, i de fiecare dat cnd un student va fi adugat, valoarea cmpului Student_ID se va calcula dup formula MAX(Student_ID)+1.

44

Crearea tabelei Professors


USE [RAUDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Professors]( [Professor_ID] [numeric](4, 0) NOT NULL, [Last_Name] [varchar](20) NOT NULL, [First_Name] [varchar](20) NOT NULL, [Department] [varchar](30) NOT NULL, [User_Name] [varchar](50) NOT NULL, CONSTRAINT [PK_Professors] PRIMARY KEY CLUSTERED ( [Professor_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Tabelul Professors conine o cheie primar, Professor_ID, acest cmp reprezentnd un numr unic al fiecrui profesor. De fiecare dat cnd un profesor va fi adugat, valoarea
45

cmpului Professor_ID nu va lua automat urmtoarea valoare, ci va trebui introdus manual.

Crearea tabelei Subjects


USE [RAUDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Subjects]( [Subject_ID] [varchar](10) NOT NULL, [Name] [varchar](50) NOT NULL, [Department] [varchar](30) NOT NULL, [Group_Name] [varchar](5) NOT NULL, [Professor_ID] [numeric](4, 0) NOT NULL, CONSTRAINT [PK_Subjects] PRIMARY KEY CLUSTERED ( [Subject_ID] ASC

46

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[Subjects] WITH CHECK ADD CONSTRAINT [FK_Subjects_Professors_ID] FOREIGN KEY([Professor_ID]) REFERENCES [dbo].[Professors] ([Professor_ID]) GO ALTER TABLE [dbo].[Subjects] CHECK CONSTRAINT [FK_Subjects_Professors_ID] GO

Tabelul Subjects are o cheie primar, Subject_ID, i asemeni cheii primare a tabelului Professors valoarea acesteia va trebui introdus manual de la tastatur. Exist i o cheie strin denumit Professor_ID care face legtura cu tabelul Professors, tabel ce are cheie primar cmpul Professor_ID.

47

Crearea tabelei Marks


USE [RAUDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Marks]( [Student_ID] [numeric](4, 0) NOT NULL, [Subject_ID] [varchar](10) NOT NULL, [Mark] [numeric](2, 0) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[Marks] WITH CHECK ADD CONSTRAINT [FK_Marks_Students_ID] FOREIGN KEY([Student_ID]) REFERENCES [dbo].[Students] ([Student_ID]) GO ALTER TABLE [dbo].[Marks] CHECK CONSTRAINT [FK_Marks_Students_ID] GO ALTER TABLE [dbo].[Marks] WITH CHECK ADD CONSTRAINT [FK_Marks_Subjects_ID] FOREIGN KEY([Subject_ID])

48

REFERENCES [dbo].[Subjects] ([Subject_ID]) GO ALTER TABLE [dbo].[Marks] CHECK CONSTRAINT [FK_Marks_Subjects_ID] GO

n acest tabel nu exist o cheie primar, dar perechea (Student_ID; Subject_ID) poate fi considerat un index unic i nlocuiete cu succes o cheie primar. Tabelul conine urmtoarele chei: cheie strin, ce definete o relaie One-To-Many ntre Student_ID i cheia primar a tabelului Students, Student_ID; cheie strin, ce definete o relaie One-To-Many ntre Subject_ID i cheia primar a tabelului Subjects, Subject_ID;

3.6 Proiectarea interfeei aplicaiei

Multe aplicaii distribuite salveaz, prezint i proceseaz date i informaii utiliznd baze de date. n acest sens .NET Framework are propria tehnologie de acces la date, numit ADO.NET, ce const ntr-un set de clase managed prin intermediul crora aplicaiile .NET se pot conecta la bazele de date sau surse de date (baze de date aflate pe servere sau fiiere locale), pot executa comenzi (n regim normal sau tranzacional) sau gestiona i procesa date n mod deconectat (local n aplicaie).

49

ADO.NET folosete o arhitectur structurat pe mai multe nivele pentru a integra diferitele tipuri de baze i surse de date. n acest scop se folosete modelul furnizorului de date (sau data provider). Un data provider reprezint un set clase ADO.NET ce permit accesul la tip de baza de date, conectarea la baza de date, execuia de comenzi SQL i a prelua rezulatele comenzilor. Cu alte cuvinte, un provider ofer o interfa ntre sursa de date i aplicaie. n .NET Framework sunt oferii urmtorii provideri: SQL Server OLE DB Oracle ODBC Modelul simplificat al arhitecturii ADO.NET poate fi urmrit n figura urmtoare:

50

n momentul n care vrem s utilizm o anumit surs de date pentru o aplicaie este important sa utilizm provider-ul potrivit. n primul rnd trebuie gsit un provider nativ .NET care s suporte baza de date; Oracle i SQL Server sunt deja suportate de .NET Framework. Provider-ii SQL includ SqlMembershipProvider, SqlRoleProvider, SqlProfileProvider, SqlSessionStateStore, SqlWebEventProvider i SqlPersonalizationProvider. Fiecare din ei stocheaz o schem predefinit. Funcia Aspnet_regsql.exe care vine odat cu ASP.NET creaz o baz de date cu o schem compatibil. Aceast baz de date numit la nceput aspnetdb, face referire la baza de date provider. Pentru aplicaia mea RAU Gradebook am folosit aspnetdb pentru crearea rolurilor Student, Professor, Secretary, dar i pentru: Crearea i tergerea user-ilor cu un rol specific; Afiarea user name-ului i statusul de logare; Schimbarea parolei user-ului. Conexiunea dintre baza de date i RAUDatabase este realizat prin user name-uri (cmpul User_Name) cu rolurile de Student i Professor, care vor avea aceeai valoare din cmpul User-Name din tabelele Students i Professors.

51

Diagrama care reprezint principalele tabele din ASPNETDB folosite n aplicaie este:

CREAREA ROLURILOR: Student, Professor, Administrator Pentru a reduce munca din cauza implementrii conturilor, versiunea ASP.NET 1.0 include suport pentru ablonurile de tip autentificare, precum i capacitatea de a specifica reguli de autorizare din pagina web.config. Formularele de tip logare sunt eficiente ntruct stocheaz un cookie n browser-ul user-ului, reinnd statusul celui ce s-a logat pe durata navigrii pe alte pagini. Clasa FormsAuthentication ofer metode pentru crearea unor astfel de cookie-uri pentru logarea n aplicaie, dar i tergerea acestora, pentru delogare.

abloanele pentru autentificare intesc spre o abordare standardizat n realizarea celor dou misiuni pentru implementarea conturilor. Programatorului, ns, i rmne n continuare sarcina de a dispune n serie informaiile conturilor, de a crea pagina de logare i de scriere a codului folosind clasa FormsAuthentication, de a crea pagina de delogare din
52

aplicaie, o nou pagin pentru crearea unui cont nou, pentru administrarea conturilor .a.m.d. Pentru crearea de roluri n aplicaia mea RAU Gradebook, am utilizat i Web Administration Tool : Menu : Website -> ASP.NET Configuration sau http://localhost:52865/asp.netwebadminfiles/security/security.aspx

Am selectat tipul de autentificare:

Dup ce am selectat opiunea pentru folosirea internetului, urmtoarea linie a fost adugat n pagina web.config:
<authentication mode="Forms" />

53

SQLMembershipProvider stocheaz informaii ale conturilor n dou tabele: aspnet_Users conine o nregistrare pentru fiecare user n parte, stocnd esenialul;

coloana UserId identific n mod unic fiecare user din sistem i este nregistrat ca un identificator unic (GUID). aspnet_Membership are o coloan numit UserId care leag fiecare nregistrare cu o nregistrare anume din aspnet_Users . Tabela aspnet_Membership cuprinde datele eseniale asociate cu fiecare user: email, parol, o ntrebare i un rspuns de securitare etc. Dup validarea rolurilor (codul <roleManager enabled="true" /> a fost adugat n pagina web.config), am creat rolurile pentru student, profesor i administrator.

54

DESGIN-UL APLICAIEI Pentru crearea interfeei aplicaiei am mprit paginile web n patru pri: Default, Student, Professor, Administrator, ele fiind astfel structurate pentru o mai bun organizare. Pagina principal conine date despre studeni, profesori i user name-urile lor. Pagina are ca scop autentificarea user-ilor. Student conine: Students Page.aspx : informeaz studentul cu privire la drepturile sale; Students Marks.aspx : afieaz notele studentului logat; Students Info.aspx : afieaz datele personale ale studentului i permite modificarea anumitor cmpuri; Students Change Password.aspx : pagina destinat schimbrii parolei;

Professor conine : Professors Page.aspx : informeaz profesorul n legtura cu drepturile sale; Professors Marks.aspx: permite adugarea sau modificarea notelor studenilor care urmeaz un curs predat de el; My Marks.aspx: permite vizualizarea studenilor, inclusiv a notelor lor, din anul, respectiv grupele care urmeaz un curs predat de el, profesorul putnd s exporte informaiile i ntr-un Excel; Professors Change Password.aspx : pagina destinat schimbrii parolei;

Adminstrator conine : Administrators Page.aspx : informeaz administratorul despre drepturile sale; Administrator Students.aspx : afieaz datele studenilor, care fac parte dintr-o grup anumit i redirecioneaz administratorul ctre urmtoarele pagini:
55

- Add Student.aspx : permite user-ului s adauge un nou student n catalog i se creeaz un user cu rolul de student; - Edit Student.aspx : permite modificarea datelor personale ale studenilor; - Delete Student.aspx : permite tergerea unui student i odat cu acesta i user-ul cu rolul de student; - Year II III.aspx : permite transferul studenilor ntr-un an superior. Administrator Professors.aspx : afieaz datele profesorilor structurai pe departamente i redirecioneaz administratorul ctre urmtoarele pagini: - Add Professor.aspx : permite user-ului s adauge un nou profesor n catalog cu rolul de profesor; - Edit Professor.aspx : permite modificarea datelor personale ale profesorilor; - Delete Professor.aspx : permite tergerea unui profesor i odat cu acesta i user-ul cu rolul de profesor; Administrator Subjects.aspx : afieaz date privind materiile studiate, ele fiind structurate pe grupe i redirecioneaz administratorul ctre urmtoarele pagini: - Add Subject.aspx : permite user-ului s adauge o materie n catalog i o atribuie studenilor care fac parte dintr-un anumit grup; - Edit Subject.aspx : permite user-ului s editeze materia selectat; - Delete Subject.aspx : permite user-ului s tearg o materie din catalog ;

Administrator Change Password.aspx : pagina destinat schimbrii parolei;

56

Cap. 4. PREZENTAREA PRODUSULUI SOFTWARE The Home Page Default.aspx

O s ncep prin a descrie cum am denumit pagina i ce am folosit pentru a o crea.


<title>Home Page</title>

Toate informaiile sunt coninute n mai multe div-uri (<div></div>) Am inserat: - logo-ul facultii,
<img alt="" src="sigla.jpg" style="width: 87px; height: 92px; text-align: center;" />

- o imagine a facultii
<img alt="" src="facultatea.jpg" style="width: 478px; height: 230px; float: left;" />

57

i cteva stiluri pentru fiecare titlu i linii orizontale pentru un efect mai bun.
<hr style="background-color: #4B788B; border: thin solid #4B788B" />

Am creat un control pentru logare pentru care am definit i un stil:

User-ul este rugat sa i introduc user name-ul i parola.

Parola este ascuns i user-ul are posibilitatea sa fie reinut la logare.

Cmpurile sunt obligatorii.

Dac user name-ul sau parola sunt greite, un mesaj de eroare va fi afiat.

Codul din spatele controlului este:


<asp:Login ID="Login1" runat="server" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#000000" style="text-align: left; margin-left: 0px; font-family: Cambria; font-size: medium;" Width="242px" Height="131px" onloggedin="Login1_LoggedIn">

58

<TextBoxStyle Font-Size="1em" Height="20px" Width="120px" FontNames="Verdana"/> <LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="1em" ForeColor="#284775" /> <InstructionTextStyle Font-Italic="True" ForeColor="Black" /> <TitleTextStyle BackColor="#4B788B" Font-Bold="True" FontSize="0.9em" ForeColor="White" /> </asp:Login>

Dac datele introduse sunt corecte, nseamn c user-ul s-a autentificat cu succes i proprietatea onloggedin="Login1_LoggedIn" va apela urmtoarea funcie:
protected void Login1_LoggedIn(object sender, EventArgs e) { If (System.Web.Security.Roles.IsUserInRole(Login1.UserName, "Student")) { Response.Redirect(string.Format("~/Student/Student's Page.aspx?STUD={0}", Login1.UserName)); } if (System.Web.Security.Roles.IsUserInRole(Login1.UserName, "Professor")) { Response.Redirect(string.Format("~/Professor/Professor's Page.aspx?PROF={0}", Login1.UserName)); } if (System.Web.Security.Roles.IsUserInRole(Login1.UserName, "Secretary")) { Response.Redirect(string.Format("~/Administrator/Administrator's Page.aspx?SECR={0}", Login1.UserName)); } }

59

Aceast procedur verific rolul atribuit user-ului pentru a l direciona ctre pagina respectiv. Pagina conine un SQLDataSource care este asociat cu o list, din care user-ul are posibilitatea s aleag dintr-o list de grupe una anume:
<asp:DropDownList ID="DropDownList1" runat="server" Width="52px" DataSourceID="GroupDataSource" DattextField="Group_Name" DataValueField="Group_Name" style="font-family: Verdana; font-size: small"> </asp:DropDownList> <asp:SqlDataSource ID="GroupDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RAUdatabaseConnectionString %>" SelectCommand="SELECT DISTINCT [Group_Name] FROM [Students]"> </asp:SqlDataSource>

Am adugat un control de tip Repeater cu dou coloane, numele complet i user-ul studentului/profesorului, depinznd de alegerea utilizatorului. n cadrul tag-ului
<HeaderTemplate>

am definit numele celor dou coloane (Name i User Name). n cadrul

tag-ului <ItemTemplate> am concatenat dou cmpuri, Last_Name i First_Name, pentru c utilizatorul este interesat s vad numele complet dect separat pe dou coloane. Tag-ul
<AlternatingItemTemplate>

conine aceleai informaii ca tag-ul <ItemTemplate> doar

c este caracterizat printr-un stil diferit, stil aplicat din dou n dou rnduri.
<asp:Repeater ID="StudentsRepeater" runat="server"> <HeaderTemplate> <table class="style1" width = "450px"> <tr> <th style="background-color:#4B788B"> <asp:Label ID="Label1" Text="Name" runat="server"></asp:Label> </th> <th style="background-color:#4B788B"> <asp:Label ID="Label2" Text="User Name" runat="server"></asp:Label> </th> </tr>

60

</HeaderTemplate> <AlternatingItemTemplate> <tr> <td style="background-color:#EFF3FB" class="syle4" > <%# DataBinder.Eval(Container.DataItem,"Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"First_Name") %>&nbsp </td> <td style="background-color:#EFF3FB" class="syle4" > <%# DataBinder.Eval(Container.DataItem,"User_Name") %>&nbsp; </td> </tr> </AlternatingItemTemplate> <ItemTemplate> <tr> <td class="syle4"> <%# DataBinder.Eval(Container.DataItem,"Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"First_Name") %>&nbsp </td> <td </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> class="syle4"> <%# DataBinder.Eval(Container.DataItem, "User_Name")%>&nbsp;

Din moment ce tabelul pe care l-am creat mi permite paginarea, am inclus i dou butoane pentru navigare, nainte i napoi, i un control de tip Label pentru a permite user-ului s vizualizeze numrul paginii pe care navigheaz.
<td align="center" bgcolor="#4B788B" style="font-weight: bold; color:#000000" class = "syle4"> <asp:button id="cmdPrev" runat="server" text=" << "

61

onclick="cmdPrev_Click"></asp:button> &nbsp;&nbsp;&nbsp;&nbsp; <asp:label id="lblCurrentPage" runat="server" ForeColor="White"></asp:label>&nbsp;&nbsp;&nbsp;&nbsp; <asp:button id="cmdNext" runat="server" text=" >> " onclick="cmdNext_Click"></asp:button> </td>

Funciile apelate sunt:


public void cmdPrev_Click(object sender, System.EventArgs e) { CurrentPage -= 1; bindData(t); } public void cmdNext_Click(object sender, System.EventArgs e) { CurrentPage += 1; bindData(t); }

Cele dou butoane, Display Students i Display Professors vor apela funciile protected void Button_DisplayStudents_Click i protected void
Button_DisplayProfessors_Click.

n primul rnd am definit o variabil static t, care are rolul de a reine opiunea user-ului de a alege vizualizarea studenilor sau a profesorilor. I se va atribui valoarea 1 dac user-ul alege s afieze studenii i 2 pentru afiarea profesorilor.
protected void Button_DisplayStudents_Click(object sender, EventArgs e) { t = 1; CurrentPage = 0; bindData(t); } protected void Button_DisplayProfessors_Click(object sender, EventArgs e) { t = 2;

62

CurrentPage = 0; bindData(t); }

CurrentPage reprezint indexul paginii care este afiat de fiecare dat, iar bindData(t) va popula i actualiza controlul de tip Repeater.
public int CurrentPage { get { // look for current page n ViewState object o = this.ViewState["_CurrentPage"]; if (o == null) return 0; // default to showing the first page else return (int)o; } set { this.ViewState["_CurrentPage"] = value; } } protected void bindData(int t) { string val_Group = DropDownList1.SelectedValue; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); Dattable dtTable = new Dattable(); dbConn.Open(); string strSQL; if(t==1) strSQL = "SELECT * FROM Students WHERE Group_Name=@Group"; else strSQL = "SELECT * FROM Professors"; SqlCommand command = new SqlCommand(strSQL, dbConn);

63

command.Parameters.Add("@Group", SqlDbType.VarChar).Value = val_Group; SqlDataAdapter da = new SqlDataAdapter(command); da.Fill(dtTable); PagedDataSource pds = new PagedDataSource(); pds.DataSource = dtTable.DefaultView; pds.AllowPaging = true; pds.PageSize = 5; StudentsRepeater.DataSource = pds; pds.CurrentPageIndex = CurrentPage; lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + pds.PageCount.ToString(); // Disable Prev or Next buttons if necessary cmdPrev.Enabled = !pds.IsFirstPage; cmdNext.Enabled = !pds.IsLastPage; StudentsRepeater.DataBind(); dbConn.Close(); }

Funcia protected void bindData(int t) face urmtoarele: -preia valoarea selectat din DropDownList1.SelectedValue i o atribuie variabilei val_Group; -stabilete conexiunea cu baza de date RAUDatabase; -definete un obiect de tip Datatable care va stoca informaiile extrase din baza de date; -depinznd de variabila t se va defini o comanda SQL care va selecta fie studenii dintr-o grup anume, fie profesorii; -va popula tabelul definit mai sus cu informaiile rezultate din comanda SQL; -definete un obiect de tip PagedDataSource i l populeaz cu date din tabel; -populeaz controlul de tip Repeater cu date din obiectul de tip PagedDataSource; -nchide conexiunea stabilit cu RAUDatabase;
64

Paginile studentului nainte de a crea paginile, am creat fiierul web.config n care am permis accesul studenilor, dar l-am restricionat profesorilor i administratorului.
<configuration> <system.web> <authorization> <allow roles="Student" /> <deny roles="Professor" /> <deny roles="Secretary" /> </authorization> </system.web> </configuration>

n momentul n care studentul se logheaz pagina Students Page ,

65

care conine un control de tip Label,


<asp:Label ID="Label1" runat="server" style="font-family: 'Engravers MT'; color: #003366; font-weight: 700; font-size: small;" Text="Label" Width="242px"></asp:Label>

n care va fi afiat numele studentului care s-a logat (funcia de mai jos este apelat n momentul n care se ncarc pagina),
protected void Page_Load(object sender, EventArgs e) { if (User.Identity.IsAuthenticted) Label1.Text = User.Identity.Name; else Label1.Text = "No user identity available."; }

un Header, care conine o imagine i un meniu de navigare, link-uri care vor direciona studentul ctre restul paginilor (acest control numit Student's_Header.ascx va fi folosit pe toate paginile studentului) i o prezentare a ceea ce i-i se permite studentului. Pe pagina Student's Marks.aspx studentul poate sa i vizualizeze notele la fiecare materie predat n anul n care a studiat/studiaz, inclusiv numele profesorului care pred materia respectiv.

66

n controlul de tip Gridview exist patru coloane, fiecare coloan va fi populat cu informaii din baza de date. Legtura se face ntre urmtoarele tabele, iar codul generat este urmtorul:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" style="font-family: Verdana; font-size: small"

67

Width="744px" AllowSorting="True"> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <Columns> <asp:BoundField DataField="Student's Name'" HeaderText="Student's Name" SortExpression="Student's Name'" ReadOnly="True" Visible="False" > </asp:BoundField> <asp:BoundField DataField="Academic_Year" HeaderText="Year" SortExpression="Academic_Year" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" > </asp:BoundField> <asp:BoundField DataField="Mark" HeaderText="Mark" SortExpression="Mark" /> <asp:BoundField DataField="Professor" HeaderText="Professor" ReadOnly="True" SortExpression="Professor" > </asp:BoundField> <asp:BoundField DataField="User_Name" HeaderText="User_Name" SortExpression="User_Name" Visible="False" /> </Columns> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#4B788B" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#999999" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:RAUdatabaseConnectionString %>"

68

SelectCommand="SELECT Marks.Mark, Students.Last_Name + ' ' + Students.Fathers_Initial + ' ' + Students.First_Name AS [Student's Name'], Subjects.Name, Professors.Last_Name + ' ' + Professors.First_Name AS Professor, Students.User_Name, Subjects.Academic_Year FROM Marks INNER JOIN Students ON Marks.Student_ID = Students.Student_ID INNER JOIN Subjects ON Marks.Subject_ID = Subjects.Subject_ID INNER JOIN Professors ON Subjects.Professor_ID = Professors.Professor_ID WHERE (Students.User_Name = @User_Name)"> <SelectParameters> <asp:ControlParameter ControlID="UserLabel" Name="User_Name" PropertyName="Text" /> </SelectParameters> </asp:SqlDataSource>

Pe pagina Student's Info.aspx studentul poate sa i vizualizeze informaiile i posibilitatea s modifice datele lui personale, anume adresa, localitatea i numrul de telefon.

n momentul n care pagina se ncarc, datele studentului logat vor fi afiate ntr-un tabel pentru care am creat controale de tip Label i Textbox, apelndu-se funcia urmtoare:
69

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (User.Identity.IsAuthenticted) UserLabel2.Text = User.Identity.Name; else UserLabel2.Text = "No user identity available."; string user_name = UserLabel2.Text.ToString(); string strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "SELECT * FROM Students WHERE User_Name = @user"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; command.Parameters.Add(new SqlParameter("@user", user_name)); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { LastName.Text = reader.GetString(1); FathersInitial.Text = reader.GetString(2); FirstName.Text = reader.GetString(3); AcademicYear.Text = reader.GetDecimal(4).ToString(); Group.Text = reader.GetDecimal(5).ToString(); if (reader.IsDBNull(6)) Address.Text = ""; else Address.Text = reader.GetString(6); if (reader.IsDBNull(7)) Locality.Text = ""; else Locality.Text = reader.GetString(7);

70

if (reader.IsDBNull(8)) PhoneNumber.Text = ""; else PhoneNumber.Text = reader.GetString(8); } } reader.Close(); } protected void UpdateButton_Click(object sender, EventArgs e) { insertNewData(); Response.Redirect("~/Student/Student's Page.aspx"); } public void insertNewData() { string user_name = UserLabel2.Text.ToString(); string newAddress = Address.Text.ToString(); string newLocality = Locality.Text.ToString(); string newPhoneNumber = PhoneNumber.Text.ToString(); string strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); SqlCommand command = new SqlCommand(); string strSQL = "UPDATE Students set Address=@address, Locality=@locality, Phone_Number = @phoneno WHERE User_Name = @user"; command.CommandText = strSQL; command.Parameters.Add(new SqlParameter("@address", newAddress)); command.Parameters.Add(new SqlParameter("@locality", newLocality)); command.Parameters.Add(new SqlParameter("@phoneno", newPhoneNumber)); command.Parameters.Add(new SqlParameter("@user", user_name)); command.Connection = dbConn; command.ExecuteNonQuery();

71

dbConn.Close(); }

Funcia de mai jos direcioneaz studentul ctre pagina iniial, nesalvndu-se datele din cmpurile modificate.
protected void CancelButton_Click(object sender, EventArgs e) { Response.Redirect("~/Student/Student's Info.aspx"); }

Pe pagina Student's Change Password.aspx studentul are dreptul s i schimbe parola.

User-ul este obligat s completeze toate cmpurile, iar parola trebuie s fie de minim 7 caractere i s conin cel puin un caracter alpha numeric.
<asp:ChangePassword ID="ChangePassword1" runat="server" BackColor="#EFF3FB" BorderColor="#B5C7DE" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" style="font-size: large; font-family: Calibri" ContinueDestinationPageUrl="~/Default.aspx" DisplayUserName="False" Height="156px" Width="600px">

72

<CancelButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284E98" /> <PasswordHintStyle Font-Italic="True" ForeColor="#507CD1" /> <ContinueButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" FontSize="0.8em" ForeColor="#284E98" /> <ChangePasswordButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" FontSize="0.8em" ForeColor="#284E98" /> <TitleTextStyle BackColor="#507CD1" Font-Bold="True" FontSize="0.9em" ForeColor="White" /> <TextBoxStyle Font-Size="0.8em" /> <InstructionTextStyle Font-Italic="True" ForeColor="Black" /> </asp:ChangePassword>

Paginile profesorului nainte de a crea paginile, am creat fiierul web.config n care am permis accesul profesorilor, dar l-am restricionat studenilor i administratorului.
<configuration> <system.web> <authorization> <allow roles="Professor" /> <deny roles="Student" /> <deny roles="Secretary" /> </authorization> </system.web> </configuration>

73

Pagina Professor's Page.aspx conine asemeni paginii studenilor un control de tip Label n care mi va fi afiat numele profesorului logat,
<asp:Label ID="Label1" runat="server" style="font-family: 'Engravers MT'; font-size: small; font-weight: 700; color: #003366" Text="Label"></asp:Label>

un Header numit Professor's_Header.ascx, care conine o imagine i un meniu de navigare, link-uri care vor direciona studentul ctre restul paginilor (acest header va fi folosit pe toate paginile profesorului) i o prezentare a ceea ce i-i se permite profesorului. Pagina Professor's Marks.aspx conine date legate de materiile predate de profesor logat precum i grupele la care acesta pred, dar i studenii care particip la cursurile lui i care aparin de o anumit grup.

74

Am creat dou controale de tip DropDownList, unul care mi va afia materiile i altul grupele.
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SubjectsDataSource" DattextField="Name" DataValueField="Name" Height="22px" style="margin-left: 0px; " Width="300px" CssClass="style13" AutoPostBack="True"> </asp:DropDownList> <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="GroupsDataSource" DattextField="Group_Name" DataValueField="Group_Name" CssClass="style13"> </asp:DropDownList>

Am asociat urmtoarele surse cu controalele de mai sus:


<asp:SqlDataSource ID="SubjectsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RAUdatabaseConnectionString %>" DeleteCommand="DELETE FROM [Subjects] WHERE [Subject_ID] = @Subject_ID" InsertCommand="INSERT INTO [Subjects] ([Subject_ID], [Name], [Department], [Academic_Year], [Professor_ID]) VALUES (@Subject_ID, @Name, @Department, @Academic_Year, @Professor_ID)" ProviderName="<%$ ConnectionStrings:RAUdatabaseConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT Name FROM Subjects WHERE Professor_ID = (SELECT Professor_ID FROM Professors WHERE User_Name = @user_name)"

75

UpdateCommand="UPDATE [Subjects] SET [Name] = @Name, [Department] = @Department, [Academic_Year] = @Academic_Year, [Professor_ID] = @Professor_ID WHERE [Subject_ID] = @Subject_ID"> <SelectParameters> <asp:ControlParameter ControlID="UserLabel" Name="User_Name" PropertyName="Text" /> </SelectParameters> <DeleteParameters> <asp:Parameter Name="Subject_ID" Type="String" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="Subject_ID" Type="String" /> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="Department" Type="String" /> <asp:Parameter Name="Academic_Year" Type="Decimal" /> <asp:Parameter Name="Professor_ID" Type="Decimal" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="Department" Type="String" /> <asp:Parameter Name="Academic_Year" Type="Decimal" /> <asp:Parameter Name="Professor_ID" Type="Decimal" /> <asp:Parameter Name="Subject_ID" Type="String" /> </UpdateParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="GroupsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RAUdatabaseConnectionString %>" SelectCommand="SELECT DISTINCT Students.Group_Name FROM Subjects INNER JOIN Professors ON Subjects.Professor_ID = Professors.Professor_ID INNER JOIN Students ON Subjects.Academic_Year = Students.Academic_Year AND Subjects.Academic_Year = Students.Academic_Year WHERE (Subjects.Name = @Name)"> <SelectParameters> <asp:ControlParameter ControlID="DropDownList1" Name="Name" PropertyName="SelectedValue" /> </SelectParameters>

76

</asp:SqlDataSource>

n tabelul de tip Gridview vor fi afiai studenii care au n program materia selectat i care aparin de grupa selectat. Altfel nu se va afia nimic.
<asp:GridView ID="MarksGridView" runat="server" AutoGenerateColumns="False" Width="680px" OnRowCancelingEdit="MarksGridView_RowCancelingEdit" OnRowEditing="MarksGridView_RowEditing" OnRowUpdating="MarksGridView_RowUpdating" CellPadding="4" ForeColor="#333333" GridLines="None" HorizontalAlign="Center" AllowPaging="True" OnPageIndexChanging="MarksGridView_SelectedIndexChanging" AllowSorting="True" OnSorting="MarksGridView_Sorting" style="font-family: Verdana; font-size: small"> <RowStyle BackColor="#EFF3FB" /> <Columns> <asp:BoundField DataField="Student_ID" HeaderText="ID" ReadOnly="True" /> <asp:TemplateField HeaderText="Student's Name"> <EditItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Last_Name")%>'></asp:Label> <asp:Label ID="Label2" runat="server" Text='<%# Bind("First_Name")%>'></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Last_Name")%>'></asp:Label> <asp:Label ID="Label2" runat="server" Text='<%# Bind("First_Name")%>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Group_Name" HeaderText="Group" ReadOnly="True"/> <asp:TemplateField HeaderText="Mark"> <EditItemTemplate> <asp:TextBox ID="TextBox_newMark" runat="server" Width="50px"></asp:TextBox>

77

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox_newMark" ErrorMessage="Invalid Mark" MaximumValue="10" MinimumValue="1" Type="Integer"> </asp:RangeValidator> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label3" runat="server" Text='<%#Bind("Mark")%>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:CommandField ShowEditButton="True" /> </Columns> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#4B788B" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#4B788B" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#4B788B" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> </asp:GridView>

Controlul de tip Gridview va fi populat n momentul n care va fi apsat butonul Display Data .
protected void Button2_Click(object sender, EventArgs e) { bindData(); } public void bindData() { string user_name = Membership.GetUser().UserName.ToString(); string value_Subject = DropDownList1.SelectedValue; string value_Group = DropDownList2.SelectedValue;

78

String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); Dattable dtTable = new Dattable(); dbConn.Open(); string strSQL = @"SELECT Students.Student_ID, Students.Last_Name, Students.Fathers_Initial, Students.First_Name, Students.Academic_Year, Students.Group_Name, Marks.Mark, Subjects.Subject_ID FROM Subjects INNER JOIN Marks ON Subjects.Subject_ID = Marks.Subject_ID INNER JOIN Professors ON Subjects.Professor_ID = Professors.Professor_ID INNER JOIN Students ON Marks.Student_ID = Students.Student_ID WHERE (Subjects.Professor_ID = (SELECT Professor_ID FROM Professors AS Professors_1 WHERE (User_Name = @User_Name))) AND (Subjects.Name = @Name) AND (Students.Group_Name = @Group) ORDER BY Students.Last_Name"; SqlCommand command = new SqlCommand(strSQL, dbConn); command.Parameters.Add("@Name", SqlDbType.VarChar).Value = value_Subject; command.Parameters.Add("@User_Name", SqlDbType.VarChar).Value = user_name; command.Parameters.Add("@Group", SqlDbType.VarChar).Value = value_Group; SqlDataAdapter da = new SqlDataAdapter(command); da.Fill(dtTable); MarksGridView.DataSource = dtTable; MarksGridView.DataBind(); dbConn.Close(); }

79

Pentru editarea rndurilor tabelului MarksGridView vor fi apelate urmtoarele funcii n momentul n care vom apsa butonul Edit.
protected void MarksGridView_RowEditing(object sender, GridViewEditEventArgs e) { // establish the row to be eddited MarksGridView.EditIndex = e.NewEditIndex; bindData(); } protected void MarksGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { //return to the displaying of data MarksGridView.EditIndex = -1; bindData(); } protected void MarksGridView_RowUpdating(object sender, GridViewUpdateEventArgs e) { int ID = Convert.ToInt32(MarksGridView.Rows[e.RowIndex].Cells[0].Text); string subject = DropDownList1.SelectedValue; int val_mark = Convert.ToInt32(((TextBox)MarksGridView.Rows[e.RowIndex].Cells[3].FindControl ("TextBox_newMark")).Text);

80

string user_name = Membership.GetUser().UserName.ToString(); String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = @"UPDATE Marks SET Mark=@mark WHERE Subject_ID=(SELECT Subject_ID FROM Subjects WHERE Name=@subject AND Professor_ID=(SELECT Professor_ID FROM Professors WHERE User_Name=@user))AND Student_ID=@id"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Parameters.Add("@id", SqlDbType.Int).Value = ID; command.Parameters.Add("@subject", SqlDbType.Char).Value = subject; command.Parameters.Add("@mark", SqlDbType.Int).Value = val_mark; command.Parameters.Add("@user", SqlDbType.Char).Value = user_name; command.Connection = dbConn; command.ExecuteNonQuery(); dbConn.Close(); //we return to the displaying of data MarksGridView.EditIndex = -1; bindData(); }

Pagina My Marks.aspx va afia toate notele studenilor care particip la cursurile lui i care aparin de o anumit grup/an. El va putea s exporte apoi aceste date n Excel.
81

Am creat dou controale care mi vor prelua anii i grupele la care profesorul pred: Controlul pentru afiarea anilor:
<asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="YearsDataSource" DattextField="Academic_Year" DataValueField="Academic_Year" style="font-family: Verdana" AutoPostBack="True" AppendDataBoundItems="True"> <asp:ListItem></asp:ListItem> </asp:DropDownList> <asp:SqlDataSource ID="YearsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RAUdatabaseConnectionString %>" SelectCommand="SELECT DISTINCT Subjects.Academic_Year FROM Professors INNER JOIN Subjects ON Professors.Professor_ID = Subjects.Professor_ID INNER JOIN Students ON Subjects.Academic_Year = Students.Academic_Year WHERE (Professors.User_Name = @User_Name)"> <SelectParameters> <asp:ControlParameter ControlID="Label1" Name="User_Name" PropertyName="Text" /> </SelectParameters> </asp:SqlDataSource>

i controlul pentru afiarea grupelor.


<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="GroupsDataSource" DattextField="Group_Name" DataValueField="Group_Name" style="font-family: Verdana"> </asp:DropDownList> <asp:SqlDataSource ID="GroupsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RAUdatabaseConnectionString %>" SelectCommand="SELECT DISTINCT Students.Group_Name, Students.Academic_Year FROM Subjects INNER JOIN Professors ON Subjects.Professor_ID = Professors.Professor_ID INNER JOIN Students ON Subjects.Academic_Year = Students.Academic_Year WHERE (Professors.User_Name = @User_Name) AND (Students.Academic_Year = @Academic_Year) ORDER BY Students.Group_Name"> <SelectParameters>

82

<asp:ControlParameter ControlID="Label1" Name="User_Name" PropertyName="Text" /> <asp:ControlParameter ControlID="DropDownList2" Name="Academic_Year" PropertyName="SelectedValue" /> </SelectParameters> </asp:SqlDataSource>

Pentru exportarea n Excel se va apela urmtoarea funcie,


protected void BtnExportGrid_Click(object sender, EventArgs args) { // } pass the grid that for exporting ... GridViewExportUtil.Export("MyMarks.xls", this.gv);

funcie care la rndul ei va folosi urmtorul cod:


public class GridViewExportUtil { /// <summary> /// /// </summary>

83

/// <param name="fileName"></param> /// <param name="gv"></param> public static void Export(string fileName, GridView gv) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName)); HttpContext.Current.Response.ContentType = "appliction/ms-excel"; using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { // Create a form to contain the grid Table table = new Table(); // { GridViewExportUtil.PrepareControlForExport(gv.HeaderRow); table.Rows.Add(gv.HeaderRow); } // { GridViewExportUtil.PrepareControlForExport(row); table.Rows.Add(row); } // { GridViewExportUtil.PrepareControlForExport(gv.FooterRow); table.Rows.Add(gv.FooterRow); } add the footer row to the table add each of the data rows to the table add the header row to the table

if (gv.HeaderRow != null)

foreach (GridViewRow row n gv.Rows)

if (gv.FooterRow != null)

84

//

render the table into the htmlwriter

table.RenderControl(htw); // render the htmlwriter into the response

HttpContext.Current.Response.Write(sw.ToString()); HttpContext.Current.Response.End(); } } } /// <summary> /// Replace any of the contained controls with literals /// </summary> /// <param name="control"></param> private static void PrepareControlForExport(Control control) { for (int i = 0; i < control.Controls.Count; i++) { Control current = control.Controls[i]; if (current is LinkButton) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); } else if (current is ImageButton) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); } else if (current is HyperLink) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); }

85

else if (current is DropDownList) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); } else if (current is CheckBox) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False")); } if (current.HasControls()) { GridViewExportUtil.PrepareControlForExport(current); } } } }

86

Pentru schimbarea parolei, profesorul are acceeai opiune ca a studentului. El trebuie doar s acceseze pagina Professor's Change Password.aspx. Va fi rugat sa introduc parola actual, noua parol pe care o dorete i confirmarea acesteia.

Paginile Administratorului Am nceput prin configurarea paginii web.config permind accesul numai administratorului.
<configuration> <system.web> <authorization> <allow roles="Secretary" /> <deny roles="Professor" /> <deny roles="Student" /> </authorization> </system.web> </configuration>

Prima pagina care se ncarc este Administrator's Page.aspx, pagin care conine un control de tip Label,
<asp:Label ID="Label1" runat="server" Text="Label" style="font-family: 'Engravers MT'; font-size: small; font-weight: 700; color: #003366"></asp:Label>

un Header , care conine o imagine i un meniu de navigare (header-ul numit Administrator's_Header.ascx va fi folosit pe toate paginile pe care are voie s le acceseze administratorul) i o descriere a drepturilor lui.

87

Pagina dedicat studenilor, Administrator Students.aspx, i permite administratorului s vizualizeze studenii dintr-o grup selectat, s le modifice datele personale, s adauge i s tearg un student din baza de date.

Am folosit un DropdownList pentru a putea selecta grupa


<asp:DropDownList ID="DropDownList1" runat="server" Font-Names="Cambria"

88

DataSourceID="SqlDataSource2" DattextField="Group_Name" DataValueField="Group_Name" style="font-size: medium"> </asp:DropDownList>

i un control de tip Repeater numit Repeater1 care conine patru coloane definite n tagul <HeaderTemplate> : Students Name, Delete Student, Edit Student i Transfer to Year II/III.
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"> <HeaderTemplate> <table width = "700px"> <tr> <th style="background-color:#4B788B; color:White" > <asp:Label ID="Label4" Text="Student's Name" runat="server"></asp:Label> </th> <th style="background-color:#4B788B; color:White" > <asp:Label ID="Label5" Text="Delete Student" runat="server"></asp:Label> </th> <th style="background-color:#4B788B; color:White" > <asp:Label ID="Label3" Text="Edit Student" runat="server"></asp:Label> </th> <th style="background-color:#4B788B; color:White" > <asp:Label ID="Label6" Text="Transfer to Year II/III" runat="server"></asp:Label> </th> </tr> </HeaderTemplate> <AlternatingItemTemplate> <tr align = "left"> <td style="background-color:#EFF3FB"> <%# DataBinder.Eval(Container.DataItem,"Last_Name") %>&nbsp;

89

<%# DataBinder.Eval(Container.DataItem,"Fathers_Initial") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"First_Name") %>&nbsp </td> <td style="background-color:#EFF3FB" align ="center" > <a href='Delete Student.aspx?id=<%# Eval("Student_ID")%>&user=<%# Eval("User_Name") %>' class = "style9">Delete</a> </td> <td style="background-color:#EFF3FB" align ="center" > <a href='Edit Student.aspx?id=<%# Eval("Student_ID") %>&group=<%#Eval("Group_Name") %>' class = "style9">Edit</a> </td> <td style="background-color:#EFF3FB" align ="center" > <a href='Year II III.aspx?id=<%# Eval("Student_ID") %>&group=<%#Eval("Group_Name") %>' class = "style9">Transfer to Year II/III</a> </td> </tr> </AlternatingItemTemplate> <ItemTemplate> <tr align = "left"> <td> <%# DataBinder.Eval(Container.DataItem,"Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"Fathers_Initial") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"First_Name") %>&nbsp </td> <td align ="center" > <a href='Delete Student.aspx?id=<%# Eval("Student_ID")%>&user=<%# Eval("User_Name") %>' class = "style9">Delete</a> </td> <td align ="center" > <a href='Edit Student.aspx?id=<%# Eval("Student_ID") %>&group=<%#Eval("Group_Name") %>' class = "style9">Edit</a> </td> <td align ="center" >

90

<a href='Year II III.aspx?id=<%# Eval("Student_ID") %>&group=<%#Eval("Group_Name") %>' class = "style9">Transfer to Year II/III</a> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater>

Pentru prima coloan Students Name am concatenat primele coloanele ale tabelului Students, Last_Name, Fathers_Initial i First_Name. Pentru a doua coloan am adugat urmtoarele n tag-ul <ItemTemplate>:
<a href='Delete Student.aspx?id=<%# Eval("Student_ID")%>&user=<%# Eval("User_Name") %>'>Delete</a>

care va aduga textul Delete n coloan, m va direciona ctre pagina Delete Student.aspx i va transmite urmtorii parametrii: - id : Student_ID al studentului afiat pe rndul respectiv (id=<%# Eval("Student_ID")%>); - user : User_Name-ul al studentului afiat pe rndul respectiv (user=<%#
Eval("User_Name") %> ) ;

Pentru a treia coloan am adugat n tag-ul <ItemTemplate>:


<a href='Edit Student.aspx?id=<%# Eval("Student_ID") %>&group=<%#Eval("Group_Name") %>'>Edit</a>

91

care va aduga textul Edit n coloan, m va direciona ctre pagina Edit Student.aspx i va transmite urmtorii parametrii: - id : Student_ID al studentului afiat pe rndul respectiv (id=<%# Eval("Student_ID")%>); - user : Group_Name al studentului afiat pe rndul respectiv (user=<%#
Eval("Group_Name") %> ) ;

Pentru a patra coloan am adugat n tag-ul <ItemTemplate>:


<a href='Year II III.aspx?id=<%# Eval("Student_ID") %>&group=<%#Eval("Group_Name") %>' class = "style9">Transfer to Year II/III</a>

care va aduga textul Transfer to Year II/III n coloan i m va direciona ctre pagina Year II III.aspx i va transmite urmtorii parametrii: - id : Student_ID al studentului afiat pe rndul respectiv (id=<%# Eval("Student_ID")%>); - user : Group_Name al studentului afiat pe rndul respectiv (user=<%#
Eval("Group_Name") %> ) ;

Controlul de tip Repeater va fi populat n momentul n care butonul Display Students va fi apsat. Prin apsarea butonului Edit vom fi direcionai ctre pagina Edit Student.aspx populat cu datele studentului. Butonul Edit, acum pe pagina de editare, modific datele personale ale studentului:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int idStudent = Convert.ToInt32(Request.QueryString["id"]);

92

if (idStudent != 0) { String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "SELECT * FROM Students WHERE Student_ID=" + idStudent; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { LastNameTextbox.Text = reader.GetString(1); FathersInitialTextbox.Text = reader.GetString(2); FirstNameTextbox.Text = reader.GetString(3); AcademicYearTextbox.Text = reader.GetDecimal(4).ToString(); if (reader.IsDBNull(6)) AddressTextbox.Text = ""; else AddressTextbox.Text = reader.GetString(6); if (reader.IsDBNull(7)) LocalityTextbox.Text = ""; else LocalityTextbox.Text = reader.GetString(7); if (reader.IsDBNull(8)) PhoneNumberTextbox.Text = ""; else PhoneNumberTextbox.Text = reader.GetString(8); } } reader.Close();

93

} } } protected void editStudent_Click(object sender, EventArgs e) { int idStudent = Convert.ToInt32(Request.QueryString["id"]); string new_LastName = LastNameTextbox.Text; string new_FathersInitial = FathersInitialTextbox.Text; string new_FirstName = FirstNameTextbox.Text; int new_AcademicYear = Convert.ToInt32(AcademicYearTextbox.Text); string new_Address = AddressTextbox.Text; string new_Locality = LocalityTextbox.Text; string new_PhoneNumber = PhoneNumberTextbox.Text; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); SqlCommand command = new SqlCommand(); string strSQL = @"UPDATE Students SET Last_Name=@last_name, Fathers_Initial=@Fathers_Initial, First_Name=@first_name, Academic_Year=@academic_year, Address=@address, Locality=@locality, Phone_Number=@phone_number WHERE Student_ID=@idStudent"; command.CommandText = strSQL; command.Parameters.Add(new SqlParameter("@last_name",new_LastName)); command.Parameters.Add(new SqlParameter("@Fathers_Initial",new_FathersInitial)); command.Parameters.Add(new SqlParameter("@first_name",new_FirstName)); command.Parameters.Add(new SqlParameter("@academic_year",new_AcademicYear)); command.Parameters.Add(new SqlParameter("@address",new_Address)); command.Parameters.Add(new SqlParameter("@locality",new_Locality)); command.Parameters.Add(new SqlParameter("@phone_number",new_PhoneNumber)); command.Parameters.Add(new SqlParameter("@idStudent",idStudent)); command.Connection = dbConn;

94

command.ExecuteNonQuery(); dbConn.Close(); Response.Redirect("~/Administrator/Administrator Students.aspx"); } protected void Cancel_Click(object sender, EventArgs e) { Response.Redirect("~/Administrator/Administrator Students.aspx"); }

Pentru a ne ntoarce pe pagina iniial trebuie s apsm butonul Cancel. Butonul Delete ncarc pagina Delete Student i urmtorul cod face posibil tergerea unui student:
protected void Page_Load(object sender, EventArgs e) { int studentID = Convert.ToInt32(Request.QueryString["id"]); string studentUser = Request.QueryString["user"]; SqlConnection dbConn; String strConnection; strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; dbConn = new SqlConnection(strConnection); dbConn.Open(); String strSQL1 = "DELETE FROM Students WHERE Student_ID=" + studentID; SqlCommand command1 = new SqlCommand(strSQL1, dbConn); String strSQL2 = "DELETE FROM Marks WHERE Student_ID=" + studentID; SqlCommand command2 = new SqlCommand(strSQL2, dbConn); command2.ExecuteNonQuery(); command1.ExecuteNonQuery(); dbConn.Close(); Membership.DeleteUser(studentUser); Response.Redirect("~/Administrator/Administrator Students.aspx"); }

95

Butonul Add Student ne permite s adugm un nou student n baza de date. Astfel, vom fi direcionai ctre pagina Add Student.aspx, se vor completa toate datele noului student i pentru a se finaliza procesul va trebui apsat butonul Add Student. Codul din spatele aciunii este urmtorul:

protected void AddStudent_Click(object sender, EventArgs e) { MembershipCreateStatus createStatus; MembershipUser newUser = Membership.CreateUser( UserNameTextbox.Text, PasswordTextbox.Text, EmailTextbox.Text, SecurityQTextbox.Text, SecurityATextbox.Text, true, out createStatus); switch (createStatus) { case MembershipCreateStatus.Success: Roles.AddUserToRole(UserNameTextbox.Text, "Student"); LabelCreateAccountResults.Text = "Account successfuly created !"; InsertStudent(); break; case MembershipCreateStatus.DuplicateUserName: LabelCreateAccountResults.Text = "The username n not available."; break; case MembershipCreateStatus.DuplicateEmail: LabelCreateAccountResults.Text = "E-mail already exists."; break; case MembershipCreateStatus.InvalidEmail: LabelCreateAccountResults.Text = "Invalid e-mail address."; break; case MembershipCreateStatus.InvalidAnswer: LabelCreateAccountResults.Text = "Invalid Security Question answer."; break; case MembershipCreateStatus.InvalidPassword: LabelCreateAccountResults.Text = "Invalid Password. (Password must have at least 7 characters and at least one nonalphanumeric)";

96

break; default: LabelCreateAccountResults.Text = "Unknown Error. The account has NOT been created"; break; } } public void InsertStudent() { string new_LastName = LastNameTextbox.Text; string new_FathersInitial = FathersInitialTextbox.Text; string new_FirstName = FirstNameTextbox.Text; int new_AcademicYear = Convert.ToInt32(AcademicYearTextbox.Text); int new_GroupName = Convert.ToInt32(GroupTextbox.Text); string new_Address = AddressTextbox.Text; string new_Locality = LocalityTextbox.Text; string new_PhoneNumber = PhoneNumberTextbox.Text; string new_UserName = UserNameTextbox.Text; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = @"INSERT INTO Students(Last_Name, Fathers_Initial, First_Name, Academic_Year, Group_Name, Address, Locality, Phone_Number, User_Name) VALUES (@Last_Name, @Fathers_Initial, @First_Name, @Academic_Year, @Group_Name, @Address, @Locality, @Phone_Number, @User_Name)"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; command.Parameters.Add(new SqlParameter("@Last_Name", new_LastName)); command.Parameters.Add(new SqlParameter("@Fathers_Initial", new_FathersInitial)); command.Parameters.Add(new SqlParameter("@First_Name", new_FirstName));

97

command.Parameters.Add(new SqlParameter("@Academic_Year", new_AcademicYear)); command.Parameters.Add(new SqlParameter("@Group_Name", new_GroupName)); command.Parameters.Add(new SqlParameter("@Address", new_Address)); command.Parameters.Add(new SqlParameter("@Locality", new_Locality)); command.Parameters.Add(new SqlParameter("@Phone_Number", new_PhoneNumber)); command.Parameters.Add(new SqlParameter("@User_Name", new_UserName)); command.ExecuteNonQuery(); string strSQL2 = @"INSERT INTO Marks (Subject_ID, Student_ID) SELECT Subject_ID,Student_ID FROM Subjects,Students WHERE Student_ID=(SELECT Student_ID FROM Students WHERE User_Name=@user) AND Subjects.Academic_Year=Students.Academic_Year"; SqlCommand command2 = new SqlCommand(); command2.CommandText = strSQL2; command2.Connection = dbConn; command2.Parameters.Add("@user", SqlDbType.VarChar).Value = new_UserName; command2.ExecuteNonQuery(); dbConn.Close(); LastNameTextbox.Text = ""; FathersInitialTextbox.Text = ""; FirstNameTextbox.Text = ""; AcademicYearTextbox.Text = ""; GroupTextbox.Text = ""; AddressTextbox.Text = ""; LocalityTextbox.Text = ""; PhoneNumberTextbox.Text = ""; UserNameTextbox.Text = ""; PasswordTextbox.Text = ""; EmailTextbox.Text = ""; SecurityQTextbox.Text = ""; SecurityATextbox.Text = "";

98

Response.Redirect("~/Administrator/Administrator Students.aspx"); ; } protected void Cancel_Click(object sender, EventArgs e) { Response.Redirect("~/Administrator/Administrator Students.aspx"); }

Butonul Transfer to Year II/III ne permite transferarea studenilor ntr-un an superior. Astfel, vom fi direcionai ctre pagina Year II III.aspx, se vor completa cmpurile necesare transferului i pentru a se finaliza procesul, va trebui apsat butonul Transfer. Codul din spatele aciunii este urmtorul:

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int idStudent = Convert.ToInt32(Request.QueryString["id"]); if (idStudent != 0) { String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "SELECT * FROM Students WHERE Student_ID=" + idStudent; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { LastNameTextbox.Text = reader.GetString(1); FathersInitialTextbox.Text = reader.GetString(2);

99

FirstNameTextbox.Text = reader.GetString(3); AcademicYearTextbox.Text = reader.GetDecimal(4).ToString(); GroupTextbox.Text = reader.GetDecimal(5).ToString(); IDTextbox.Text = reader.GetDecimal(0).ToString(); } } reader.Close(); } } }

protected void TransferButton_Click(object sender, EventArgs e) { string idStudent = IDTextbox.Text; string LastName = LastNameTextbox.Text; string FathersInitial = FathersInitialTextbox.Text; string FirstName = FirstNameTextbox.Text; int new_AcademicYear = Convert.ToInt32(AcademicYearTextbox.Text); int new_Group = Convert.ToInt32(GroupTextbox.Text);

String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); SqlCommand command = new SqlCommand(); string strSQL = @"UPDATE Students SET Academic_Year=@academic_year, Group_Name=@group_name WHERE Student_ID=@idStudent"; command.CommandText = strSQL; command.Parameters.Add(new SqlParameter("@academic_year", new_AcademicYear)); command.Parameters.Add(new SqlParameter("@group_name", new_Group)); command.Parameters.Add(new SqlParameter("@idStudent", idStudent)); command.Connection = dbConn;

100

command.ExecuteNonQuery(); string strSQL2 = @"INSERT INTO Marks (Subject_ID, Student_ID) SELECT Subject_ID,Student_ID FROM Subjects,Students WHERE Student_ID= @idStudent AND Subjects.Academic_Year=Students.Academic_Year"; SqlCommand command2 = new SqlCommand(); command2.CommandText = strSQL2; command2.Connection = dbConn; command2.Parameters.Add("@idStudent", SqlDbType.VarChar).Value = idStudent; command2.ExecuteNonQuery(); dbConn.Close(); LastNameTextbox.Text = ""; FathersInitialTextbox.Text = ""; FirstNameTextbox.Text = ""; AcademicYearTextbox.Text = ""; GroupTextbox.Text = ""; IDTextbox.Text = ""; Response.Redirect("~/Administrator/Administrator Students.aspx"); }

Prin apsarea butonului Cancel vom fi direcionai ctre pagina iniial.


protected void Cancel_Click(object sender, EventArgs e) { Response.Redirect("~/Administrator/Administrator Students.aspx"); }

Pagina dedicat profesorilor Administrator Professors.aspx i permite administratorului s vizualizeze toi profesorii dintr-un departament anume, s le modifice datele personale, s adauge i s tearg un profesor din baza de date.
101

Am folosit un control de tip Repeater numit Repeater1 care conine trei coloane definite n tag-ul <HeaderTemplate> : Professors Name, Delete Professor i Edit Professor.
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource2"> <HeaderTemplate> <table width = 600px> <tr> <th style="background-color:#4B788B" > <asp:Label ID="Label1" Text="Professor's Name" runat="server"></asp:Label> </th> <th style="background-color:#4B788B">

102

<asp:Label ID="Label2" Text="Delete Professor" runat="server"></asp:Label> </th> <th style="background-color:#4B788B" > <asp:Label ID="Label3" Text="Edit Professor" runat="server"></asp:Label> </th> </tr> </HeaderTemplate> <AlternatingItemTemplate> <tr> <td style="background-color:#EFF3FB"> <%# DataBinder.Eval(Container.DataItem,"Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"First_Name") %>&nbsp </td> <td style="background-color:#EFF3FB"> <a href='Delete Professor.aspx?id=<%# Eval("Professor_ID")%>&user=<%# Eval("User_Name") %>'>Delete</a> </td> <td style="background-color:#EFF3FB"> <a href='Edit Professor.aspx?id=<%# Eval("Professor_ID")%>'>Edit</a> </td> </tr> </AlternatingItemTemplate> <ItemTemplate> <tr> <td> <%# DataBinder.Eval(Container.DataItem,"Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"First_Name") %>&nbsp </td> <td> <a href='Delete Professor.aspx?id=<%# Eval("Professor_ID")%>&user=<%# Eval("User_Name") %>'>Delete</a> </td> <td> <a href='Edit Professor.aspx?id=<%# Eval("Professor_ID")%>'>Edit</a>

103

</td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater>

Pentru prima coloan Professors Name am concatenat primele coloanele ale tabelului Professors, Last_Name i First_Name. Pentru a doua coloan am adugat urmtoarele n tag-ul <ItemTemplate>:
<a href='Delete Professor.aspx?id=<%# Eval("Professor_ID")%>&user=<%# Eval("User_Name") %>'>Delete</a>

care va aduga textul Delete n coloan, m va direciona ctre pagina Delete Professor.aspx i va transmite urmtorii parametrii: - id : Professor_ID al profesorului afiat pe rndul respectiv (id=<%#
Eval("Professor_ID")%> );

- user : User_Name al profesorului afiat pe rndul respectiv (user=<%# Eval("User_Name")


%>) ;

Pentru a treia coloan am adugat n tag-ul <ItemTemplate>:


<a href='Edit Professor.aspx?id=<%# Eval("Professor_ID")%>'>Edit</a>

care va aduga textul Edit n coloan, m va direciona ctre pagina Edit Professor.aspx i va transmite urmtorii parametrii:

104

- id : Student Professor_ID al profesorului afiat pe rndul respectiv (id=<%#


Eval("Professor_ID")%> );

Prin apsarea butonului Edit vom fi direcionai ctre pagina Edit Professor.aspx populat cu datele profesorului. Butonul Edit, acum pe pagina de editare, modific datele personale ale acestuia:

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int idProf = Convert.ToInt32(Request.QueryString["id"]); if (idProf != 0) { String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "SELECT * FROM Professors WHERE Professor_ID=" + idProf; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { LastNameTextbox.Text = reader.GetString(1); FirstNameTextbox.Text = reader.GetString(2); DepartmentTextbox.Text = reader.GetString(3); } }

105

reader.Close(); } } } protected void EditButton_Click(object sender, EventArgs e) { { insertNewData(); Response.Redirect("~/Administrator/Administrator Professors.aspx"); } } public void insertNewData() { int idProf = Convert.ToInt32(Request.QueryString["id"]); string new_LastName = LastNameTextbox.Text; string new_FirstName = FirstNameTextbox.Text; string new_Department = DepartmentTextbox.Text; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "UPDATE Professors SET Last_Name=@last_name,First_Name=@first_name, Department=@department WHERE Professor_ID=@idProf"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Parameters.Add(new SqlParameter("@last_name", new_LastName)); command.Parameters.Add(new SqlParameter("@first_name", new_FirstName)); command.Parameters.Add(new SqlParameter("@department", new_Department)); command.Parameters.Add(new SqlParameter("@idProf", idProf)); command.Connection = dbConn;

106

command.ExecuteNonQuery(); dbConn.Close(); } protected void CancelButton_Click(object sender, EventArgs e) { Response.Redirect("~/Administrator/Administrator Professors.aspx"); }

Pentru a ne ntoarce pe pagina iniial trebuie sa apsm butonul Cancel. Butonul Delete ncarc pagina Delete Professor i urmtorul cod face posibil tergerea unui profesor:
protected void Page_Load(object sender, EventArgs e) { int profID = Convert.ToInt32(Request.QueryString["id"]); string profUser = Request.QueryString["user"]; SqlConnection dbConn; String strConnection; strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; dbConn = new SqlConnection(strConnection); dbConn.Open(); String strSQL1 = "DELETE FROM Professors WHERE Professor_ID=" + profID; SqlCommand command1 = new SqlCommand(strSQL1, dbConn); String strSQL2 = "DELETE FROM Subjects WHERE Professor_ID=" + profID; SqlCommand command2 = new SqlCommand(strSQL2, dbConn); String strSQL3 = "DELETE FROM Marks WHERE Subject_ID=(SELECT Subject_ID FROM Subjects WHERE Professor_ID=" + profID + ")"; SqlCommand command3 = new SqlCommand(strSQL3, dbConn); command3.ExecuteNonQuery(); command2.ExecuteNonQuery(); command1.ExecuteNonQuery();

107

dbConn.Close(); Membership.DeleteUser(profUser); Response.Redirect("~/Administrator/Administrator Professors.aspx"); }

Butonul Add Professor ne permite sa adugm un nou profesor n baza de date. Astfel, vom fi direcionai ctre pagina Add Professor.aspx, se vor completa toate datele noului profesor i pentru a se finaliza procesul, va trebui apsat butonul Add Professor. Codul din spatele aciunii este urmtorul:

protected void AddButton_Click(object sender, EventArgs e) { MembershipCreateStatus createStatus; MembershipUser newUser = Membership.CreateUser(UNTextbox.Text, PTextbox.Text, EMTextbox.Text, SQTextbox.Text, SATextbox.Text, true, out createStatus); switch (createStatus) { case MembershipCreateStatus.Success: Roles.AddUserToRole(UNTextbox.Text, "Professor"); LabelCreateAccountResults.Text = "Account successfuly created !"; InsertProfessor(); break; case MembershipCreateStatus.DuplicteUserName: LabelCreateAccountResults.Text = "The username is not available."; break; case MembershipCreateStatus.DuplicteEmail: LabelCreateAccountResults.Text = "E-mail already exists."; break; case MembershipCreateStatus.InvalidEmail: LabelCreateAccountResults.Text = "Invalid e-mail address."; break; case MembershipCreateStatus.InvalidAnswer: LabelCreateAccountResults.Text = "Invalid Security Question answer."; break;

108

case MembershipCreateStatus.InvalidPassword: LabelCreateAccountResults.Text = "Invalid Password.(Password must have at least 7 characters and at least one nonalphanumeric)"; break; default: LabelCreateAccountResults.Text = "Unknown Error. The account has NOT been created"; break; } } public void InsertProfessor() { string new_LastName = LNTextbox.Text; string new_FirstName = FNTextbox.Text; string new_Department = DTextbox.Text; string new_UserName = UNTextbox.Text; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = @"INSERT INTO Professors(Last_Name, First_Name, Department, User_Name) VALUES (@Last_Name, @First_Name, @Department, @User_Name)"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; command.Parameters.Add(new SqlParameter("@Last_Name", new_LastName)); command.Parameters.Add(new SqlParameter("@First_Name", new_FirstName)); command.Parameters.Add(new SqlParameter("@Department", new_Department)); command.Parameters.Add(new SqlParameter("@User_Name", new_UserName)); command.ExecuteNonQuery(); dbConn.Close(); LNTextbox.Text = ""; FNTextbox.Text = "";

109

DTextbox.Text = ""; UNTextbox.Text = ""; PTextbox.Text = ""; EMTextbox.Text = ""; SQTextbox.Text = ""; SATextbox.Text = ""; Response.Redirect("~/Administrator/Administrator Professors.aspx"); }

Prin apsarea butonului Cancel vom fi direcionai ctre pagina iniial.


protected void CancelButton_Click(object sender, EventArgs e) { Response.Redirect("~/Administrator/Administrator Professors.aspx"); }

Pagina dedicat profesorilor Administrator Subjects.aspx i permite administratorului s vizualizeze toate materiile predate dintr-un an, s adauge i s tearg o materie din baza de date.

Am folosit un control de tip Repeater care conine cinci coloane: Subjects Name, Professor, Department, Delete Subject i Edit Subject.
<asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate>

110

<table width = "900px"> <tr> <th style="background-color:#4B788B" class="style9"> <asp:Label ID="Label1" Text="Subject's Name" runat="server"></asp:Label> </th> <th style="background-color:#4B788B" class="style9"> <asp:Label ID="Label2" Text="Professor" runat="server"></asp:Label> </th> <th style="background-color:#4B788B" class="style9"> <asp:Label ID="Label4" Text="Department" runat="server"></asp:Label> </th> <th style="background-color:#4B788B" class="style9"> <asp:Label ID="Label5" Text="Delete Subject" runat="server"></asp:Label> </th> <th style="background-color:#4B788B" class="style9"> <asp:Label ID="Label3" Text="Edit Subject" runat="server"></asp:Label> </th> </tr> </HeaderTemplate> <AlternatingItemTemplate> <tr> <td align = "left" "style10"> <%# DataBinder.Eval(Container.DataItem,"Name") %>&nbsp; </td> <td align = "left" style="background-color:#EFF3FB" class = "style10"> <%# DataBinder.Eval(Container.DataItem,"Prof_Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"Prof_First_Name") %>&nbsp; </td> <td align = "left" style="background-color:#EFF3FB" class = "style10"> <%# DataBinder.Eval(Container.DataItem,"Department") %>&nbsp; style="background-color:#EFF3FB" class =

111

</td> <td style="background-color:#EFF3FB"> <a href='DeleteSubject.aspx?id=<%# Eval("Subject_ID")%>' class = "style10">Delete</a> </td> <td style="background-color:#EFF3FB"> <a href='EditSubject.aspx?id=<%# Eval("Subject_ID") %>' class = "style10">Edit</a> </td> </tr> </AlternatingItemTemplate> <ItemTemplate> <tr> <td align = "left" class = "style10"> <%# DataBinder.Eval(Container.DataItem,"Name") %>&nbsp; </td> <td align = "left" class = "style10"> <%# DataBinder.Eval(Container.DataItem,"Prof_Last_Name") %>&nbsp; <%# DataBinder.Eval(Container.DataItem,"Prof_First_Name") %>&nbsp; </td> <td align = "left" class = "style10"> <%# DataBinder.Eval(Container.DataItem,"Department") %>&nbsp; </td> <td> <a href='DeleteSubject.aspx?id=<%# Eval("Subject_ID")%>' class = "style10">Delete</a> </td> <td> <a href='EditSubject.aspx?id=<%# Eval("Subject_ID") %>' class = "style10">Edit</a> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate>

112

</asp:Repeater>

Pentru a patra coloan Delete Subject am adugat urmtorul cod n tag-ul


<ItemTemplate>: <a href='DeleteSubject.aspx?id=<%# Eval("Subject_ID")%>' class = "style10">Delete</a>

care va aduga textul Delete pe fiecare rnd i va direciona user-ul ctre pagina Delete Subject.aspx creia i va transmite urmtorii parametrii: - id : Subject_ID al materiei afiate pe rndul respectiv (id=<%# Eval("Subject_ID")%>); Pentru a cincea coloan Edit Subject am adugat urmtorul cod n tag-ul
<ItemTemplate>: <a href='EditSubject.aspx?id=<%# Eval("Subject_ID") %>' class = "style10">Edit</a>

care va aduga textul Edit pe fiecare rnd i va direciona user-ul ctre pagina Edit Subject.aspx creia i va transmite urmtorii parametrii: - id : Subject_ID al materiei afiate pe rndul respectiv (id=<%# Eval("Subject_ID")%>); Pentru tergerea unei materii, administratorul trebuie s apese butonul Delete.
protected void Page_Load(object sender, EventArgs e) { string subjectID = Request.QueryString["id"]; SqlConnection dbConn; String strConnection; strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; dbConn = new SqlConnection(strConnection);

113

dbConn.Open(); String strSQL1 = "DELETE FROM Subjects WHERE Subject_ID=@subjectID"; SqlCommand command1 = new SqlCommand(strSQL1, dbConn); command1.Parameters.Add("@subjectID", SqlDbType.Char).Value=subjectID; String strSQL2 = "DELETE FROM Marks WHERE Subject_ID=@subjectID"; SqlCommand command2 = new SqlCommand(strSQL2, dbConn); command2.Parameters.Add("@subjectID", SqlDbType.Char).Value=subjectID; command2.ExecuteNonQuery(); command1.ExecuteNonQuery(); dbConn.Close(); Response.Redirect("~/Administrator/Administrator Subjects.aspx"); }

Pentru editarea unei materii, administratorul trebuie s apese butonul Edit.

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string idSubject = Request.QueryString["id"]; if (idSubject != "") { String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "SELECT * FROM Subjects WHERE Subject_ID=@idSubject"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; command.Parameters.Add("@idSubject", SqlDbType.Char).Value = idSubject;

114

SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { SubjectNameTextBox.Text = reader.GetString(1); DepartmentTextBox.Text = reader.GetString(2); YearTextBox.Text = reader.GetDecimal(3).ToString(); ProfessorIDTextBox.Text = reader.GetDecimal(4).ToString(); } } reader.Close(); } } } protected void editsubject_Click(object sender, EventArgs e) { string idSubject = Request.QueryString["id"]; string new_subjectName = SubjectNameTextBox.Text; int new_professorID = Convert.ToInt32(ProfessorIDTextBox.Text); string new_Department = DepartmentTextBox.Text; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = "UPDATE Subjects SET Name=@name,Department=@department, Professor_ID=@profID WHERE Subject_ID=@idSubject"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Parameters.Add(new SqlParameter("@name", new_subjectName)); command.Parameters.Add(new SqlParameter("@profID", new_professorID)); command.Parameters.Add(new SqlParameter("@department", new_Department));

115

command.Parameters.Add(new SqlParameter("@idSubject", idSubject)); command.Connection = dbConn; command.ExecuteNonQuery(); dbConn.Close(); Response.Redirect("~/Administrator/Administrator Subjects.aspx"); }

Butonul Add Subject ne permite s adugm o nou materie n baza de date. Astfel, vom fi direcionai ctre pagina Add Subject.aspx, se vor completa toate datele i pentru a se finaliza procesul, va trebui apsat butonul Add Subject. Codul din spatele aciunii este urmtorul:

protected void AddButton_Click(object sender, EventArgs e) { string new_subjectID = SubjectIDTextBox.Text; string new_subjectName = SubjectNameTextBox.Text; string new_Department = DepartmentTextBox.Text; int new_Professor = Convert.ToInt32(DropDownList1.SelectedValue.ToString()); string new_Year = YearTextBox.Text; String strConnection = ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect ionString; SqlConnection dbConn = new SqlConnection(strConnection); dbConn.Open(); string strSQL = @"INSERT INTO Subjects(Subject_ID, Name, Department, Academic_Year, Professor_ID) VALUES(@Subject_ID, @Name, @Department, @Academic_Year, @Professor_ID)"; SqlCommand command = new SqlCommand(); command.CommandText = strSQL; command.Connection = dbConn; command.Parameters.Add(new SqlParameter("@Subject_ID", new_subjectID)); command.Parameters.Add(new SqlParameter("@Name", new_subjectName));

116

command.Parameters.Add(new SqlParameter("@Department", new_Department)); command.Parameters.Add(new SqlParameter("@Academic_Year", new_Year)); command.Parameters.Add(new SqlParameter("@Professor_ID", new_Professor)); command.ExecuteNonQuery(); string strSQL2 = @"INSERT INTO Marks (Subject_ID, Student_ID) SELECT a.Subject_ID, b.Student_ID FROM Subjects a, Students b WHERE a.Academic_Year=@Academic_Year AND a.Academic_Year=b.Academic_Year AND a.Subject_ID=@Subject_ID AND b.Student_ID NOT N (SELECT Student_ID FROM Marks WHERE Subject_ID=@Subject_ID)"; SqlCommand command2 = new SqlCommand(); command2.CommandText = strSQL2; command2.Connection = dbConn; command2.Parameters.Add("@Academic_Year", SqlDbType.Char).Value = new_Year; command2.Parameters.Add("@Subject_ID", SqlDbType.Char).Value = new_subjectID; command2.ExecuteNonQuery(); dbConn.Close(); SubjectIDTextBox.Text = ""; SubjectNameTextBox.Text = ""; DepartmentTextBox.Text = ""; YearTextBox.Text = ""; Response.Redirect("~/Admnistrator/Administrator Subjects.aspx"); }

Prin apsarea butonului Cancel vom fi direcionai ctre pagina iniial.


protected void CancelButton_Click(object sender, EventArgs e) { Response.Redirect("~/Admnistrator/Administrator Subjects.aspx"); }

117

Pentru schimbarea parolei, profesorul are acceeai opiune ca a studentului. El trebuie doar s acceseze pagina Change Password.aspx. Va fi rugat s introduc parola actual, noua parol pe care o dorete i confirmarea acesteia.

118

Cap. 5. EFICIENA I UTILITATEA APLICAIEI INFORMATICE Un prim criteriu n vederea eficienei, utilitii aplicaiei informatice este cel al atingerii obiectivelor stabilite, adic a obinerii ieirilor avute n plan. Din acest punct de vedere, sistemul informatic pe care l-am realizat a ndeplinit aceste condiii, cu ajutorul acestui sistem, prin crearea unei baze de date, obinndu-se diferite rapoarte utile att studenilor, ct i profesorilor sau administratorului, avnd posibilitatea vizualizrii tuturor informaiilor necesare. Totodat, prelucrrile care se pot efectua cu acest sistem, modificri, actualizri, tergeri, adugri, se nscriu i ele n aceste condiii. Un alt criteriu este uurina n utilizare, ntruct sistemul realizat crete flexibilitatea i uurina n utilizarea datelor, dar i pentru utilizator, aceast aplicaie avnd un design simplu, o structur deloc complicat, fiind la ndemna oricui. Utilitatea acestei aplicaii const n faptul c poate fi ntrebuinat att de studeni, ei avnd acces exact la datele care le sunt necesare, notele din cadrul anilor universitari, dar i a datelor personale, ct i de profesori, avnd acces rapid la actualizarea notelor studenilor, dar i la rapoarte pentru o mai bun eviden a acestora. Acest lucru nu poate dect s sporeasc calitatea i precizia activitii universitii. Viteza de lucru este un alt aspect care trebuie luat n considerare. Majoritatea situaiilor i prelucrrilor pe care sistemul informatic realizat le efectueaz se bazeaz pe tehnica SQL, fiind constituite pe baza interogrilor asupra bazei de date. ntruct ntre mediul de programare n care a fost realizat sistemul (Microsoft Visual Web Developer) i sistemul de operare sub care a fost proiectat s ruleze (Windows) exist o compatibilitate maxim, interogarea bazei de date se face foarte uor, rezultatele obinndu-se rapid. n ceea ce privete securitatea sistemului informatic, au fost luate msuri prin intermediul programului ca s se evite ncercrile de fraudare. Un element de protecie este restricionarea accesului la program, prin existena unui user-name i a unei parole care, n cazul n care nu este introdus corect, nu permite accesul n program. Protecia poate consta i n faptul c utilizatorii pot fi difereniai, astfel nct un student nu poate fi
119

direcionat dect ctre anumite pagini; acelai lucru este valabil i pentru profesori i pentru administrator, administratorul avnd access la ntreaga baz de date. n concluzie, se poate spune c sistemul informatic realizat este unul eficient, dar i util, att din punct de vedere al necesitilor informaionale, ct i din punctul de vedere al securitii i uurinei n exploatare.

120

ANEXE
Anexa 1
Mediul de lucru Visual Web Developer Express 2008 De ce Visual Web Developer? este simplu de nteles i de utilizat conine un editor vizual conine un editor performant de cod C#/HTML conine suport pentru depanarea aplicaiilor Web conine ultima versiune a coleciei de clase necesare pentru a putea crea pagini web folosind funcii implementate conine un Web Server propriu ce poate rula paginile Web create are integrat SQL Server Express, un mediu vizual pentru editarea bazelor de date conine faciliti ca Master Page

1.1. Mediul de lucru Visual Web Developer este un mediu de lucru dezvoltat de Microsoft, specializat pe realizarea site-urilor. Editia Express este proiectat special pentru amatorii care vor s nvee s foloseasc Visual Web Developer i tehnologii asemntoare, fr s aib ndemnri n utilizarea instrumentelor folosite de programatorii profesioniti; ea conine instrumente de dezvoltare moderne, uor de nteles i uor de folosit, de dimensiuni mici, cu interfee de lucru simplificate dar n acelai timp beneficiare ale trsturilor clasice ale Visual Studio i ale noilor funcionaliti implementate n .NET Framework . Visual Web Developer se lanseaz printr-un simplu click pe butonul Start i alegerea opiunii Visual Web Developer 2008 Express Edition din All Programs.

121

n figur pot fi vizualizate urmtoarele panouri: Toolbox: cnd se deschide o pagin sau alt item pentru editare, Toolbox ofer instrumentele ce permit adugarea de noi componente paginii. Design Surface: este panoul de editare a paginilor . Solution Explorer/Database Explorer: fiecare site Web creat este organizat ca un grup de foldere care apare n Solution Explorer. Orice baz de date creat pentru aplicaie apare n Database Explorer. Pentru comutarea ntre cele dou programe Explorer se folosete tabul din josul panoului. Properties: afieaz proprietile asociate obiectului sau paginii cu care se lucreaz.

122

1.2. Compilarea dinamic a site-ului ncepand cu ASP.NET 2.0, exist posibilitatea de a crea site-uri web n care compilarea se face dinamic pentru o pagin, atunci cnd pagina respectiv este cerut de utilizator. Cealalt opiune ar fi de a avea un assembly (un .dll). Pagina compilat ine cont de un timestamp asociat fiierului surs, astfel nct dup fiecare modificare a acestuia, pagina se recompileaz la prima cerere. Avantajele acestei opiuni de instalare a site-urilor ASP.NET sunt: Nu este nevoie sa recompilm ntreaga aplicaie atunci cnd se modific doar o pagina a acesteia. Paginile care conin erori de compilare nu opresc execuia ntregului site cum s-ar ntmpla dac n loc de pagini compilate dinamic am avea un assembly. 1.3. Servere Web (Un calculator conectat la Internet care furnizeaz clienilor, la cerere, diverse resurse web) n Visual Web Developer. Pentru a testa i a rula o aplicaie Web ASP.NET, este nevoie de un server Web. Serverul Web pentru sistemele de operare Windows este IIS, care include serverul FTP, serverul de e-mail SMTP i alte faciliti. n Windows 2000 Server i n versiuni anterioare, IIS este instalat ca o parte a sistemului de operare. n Windows XP i Windows Server 2003, IIS trebuie instalat separat; acest lucru se poate face folosind opiunea Add/Remove Windows ComponentsAdd or Remove Programs din Control Panel. 1.4. ASP.NET Development Server Dac nu se poate folosi IIS ca server web, paginile ASP.NET pot fi testate folosind ASP.NET Development Server. ASP.NET Development Server este integrat n Visual Web Developer i este un server Web care ruleaz local pe sistemele de operare Windows, incluznd Windows XP Home Edition. ASP.NET Development Server pune la dispoziie o metod simpl de a testa paginile local nainte de a le publica i a le pune pe un server IIS.
123

ASP.NET Development Server funcioneaz numai cu pagini individuale i nu include toate facilitile IIS. De exemplu, ASP.NET Development Server nu suport un server de mail SMTP. Dac o aplicaie Web include trimiterea de mesaje e-mail, trebuie s existe acces la serverul virtual IIS SMTP pentru a testa e-mail, deoarece ASP.NET Development Server nu poate trimite mesaje e-mail. 1.5. Securitate n ASP.NET Development Server O diferen important ntre ASP.NET Development Server i IIS o reprezint securitatea n fiecare dintre cele dou servere. Atunci cnd o pagina este rulat folosind ASP.NET Development Server, pagina ruleaz n contextul de securitate a contului de utilizator folosit. De exemplu, cnd o pagina este rulat cu ajutorul ASP.NET Development Server folosind un cont de utilizator cu nivel de administrator i pagina va avea privilegii de administrator. n IIS, ASP.NET ruleaz implicit n contextul userului special (ASPNET sau NETWORK SERVICES) care are privilegii limitate, ceea ce restrnge accesul la resursele de pe alt calculator. Dac este rulat un cod dintr-o pagin simpl ASP.NET, diferena nu este foarte important. Diferenele apar atunci cnd: sunt accesate resurse cum ar fi: fiiere care nu sunt pagini Web, registri Windows etc., este accesat o baz de date, sunt accesate resurse protejate.

124

Anexa 2
Limbajul de scripting server-side ASP.NET 1. Structura unei pagini ASP.NET Orice pagin ASP.NET presupune dou componente: partea de interfa (controalele care vor fi vizualizate de ctre utilizator) i codul .NET care va fi executat pe server atunci cnd se face o cerere ctre pagina respectiv. Codul poate fi scris folosind limbajul C# sau Visual Basic .NET. Script-urile ASP.NET sunt fiiere text cu extensia .aspx, care conin controale HTML sau ASP. Codul C# sau VB.NET asociat paginii sau obiectelor din pagin poate fi plasat direct n fiierul cu extensia .aspx, sau ntr-un fiier separat <nume_pagina>.aspx.cs (pentru C#) sau <nume_pagina>.aspx.vb (pentru VB.NET). Orice pagin web .aspx conine o seciune de directive, care descrie modul n care pagina este procesat de ctre server. Aceast seciune este cuprins ntre tag-urile <%@ i %> i precizeaz limbajul utilizat pentru scrierea codului i numele fiierului n care este reinut codul (atunci cnd este cazul): <%@ Page Language="C#" CodeFile="first.aspx.cs" Inherits="_first"%> 1.1. Controale ASP.NET Pentru a realiza layout-ul unei pagini web, ASP.NET pune la dispoziia programatorului o serie de controale predefinite, precum i posibilitatea definirii unor controale proprii. Controalele ASP.NET se mai numesc i controale server deoarece pot fi programate, prin intermediul unui cod server-side, s rspund la anumite evenimente din pagin. Pentru a putea fi accesate prin intermediul codului, aceste controale trebuie s conin atributele id i runat=server. Exista dou tipuri de controale server: Web i Html. Controalele server HTML corespund controalelor standard HTML, i pot fi create prin adugarea atributului runat=server unui
125

tag HTML. Pentru a putea identifica un control Html n codul server-side, trebuie sa-i atam atributul id: <p id = "output" runat="server"/>. Controalele server Web ofer mai multe funcionaliti programabile dect cele HTML. Aceste controale pot corespunde mai multor tag-uri HTML, i pot include cod javascript. Sunt cuprinse ntre tag-urile <asp> </asp>. De exemplu, un control Web pentru introducerea datelor de ctre utilizator este textbox: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>. 1.2. Ciclul de via al unei pagini web. Paginile ASP.NET ruleaz pe server-ul web Microsoft IIS. n urma prelucrrii pe server, rezult o pagin web Html, care este trimis ctre browser. Ciclul de via al unei pagini web are urmtorii pai: 1. User-ul scrie adresa unei pagini web. Acest lucru nseamn o cerere a browser-ului web ctre server, prin intermediul metodei HTTP GET. Pe server, pagina ruleaz pentru prima data, executndu-se i codul C# existent. 2. Rezultatul este o pagin Html care este trimis browser-ului. 3. User-ul poate introduce date sau apsa un buton, i pagina este trimis napoi serverului. Dac utilizatorul acceseaz un link, se ncarc o alt pagin, i nici o prelucrare nu este efectuat de pagina iniial. 4. Pagina este trimis ctre browser prin intermediul metodei HTTP POST. n ASP.NET aceast aciune se numete PostBack. 5. Pe server-ul web, pagina ruleaz din nou, i sunt prelucrate informaiile introduse de ctre utilizator n browser. 6. Rezultatul este trimis browser-ului, i astfel se reia ciclul.
126

Procesul de prelucrare a paginii web de ctre server este mprit n mai multe etape. Fiecare etap corespunde unui eveniment asociat paginii. Printre cele mai importante evenimente asociate paginii sunt: Init se iniializeaz fiecare control server Load se execut la fiecare cerere a paginii Render se genereaz codul html ce va fi trimis browser-ului UnLoad sunt eliberate resursele folosite.

2. Limbajul C# Limbajul C# este un limbaj nou de programare, aprut odat cu platforma .NET. Ideea central a limbajului C# este programarea orientat pe obiecte (OOP). O aplicaie C# este format din una sau mai multe clase, grupate n spaii de nume (namespaces). O clas reprezint un ablon care definete forma unui obiect. Este un tip de date abstract, care definete att datele ct i codul care va prelucra acele date. Obiectele sunt instante, particularizri ale claselor. Datele din cadrul clasei se mai numesc proprieti, iar funciile mai poart numele de metode. Simplificnd mult lucrurile, putei sa v imaginai o clas ca o extindere a tipului structur din C sau nregistrare din Pascal. ntr-o structur se pot defini date de tipuri diferite. ntr-o clas, pe lng aceste date exist i funciile care le prelucreaz. La fel cum se pot defini variabile de tip structur, se pot defini variabile de tip clas (numite obiecte). Accesul la cmpurile unei structuri se realizeaz prin nume_variabila_structura . nume_cmp.
127

Analog, accesul la datele i funciile membre ale unei clase se realizeaz prin obiect . proprietate sau obiect . metod. Un spaiu de nume reprezint o schem logic pentru denumirea tipurilor de date nrudite. Spaiile de nume pot fi asemntoare cu structura de directoare i fiiere din Windows. La fel cum ntr-un folder sunt salvate fiiere nrudite, ntr-un spaiu de nume se gsesc obiecte de tipuri asemntoare. Rdcina acestei ierarhii de spaii de nume este System. Spaiile de nume pot conine la rndul lor alte spaii de nume. De exemplu, System conine spaiile de nume System.Data (unde se gsesc clase pentru conectarea la diverse surse de date) i System.Web (unde se gsesc toate clasele pentru dezvoltarea unei aplicaii web). Controalele server Html sunt incluse n spaiul de nume System.Web.UI.HtmlControls, iar controalele server Web n spaiul System.Web.UI.WebControls. Pentru a avea acces la clasele dintr-un anumit spaiu de nume, acesta trebuie inclus n aplicaie folosind instruciunea using:

128

Anexa 3
Cookies Un cookies este o secven de text care este salvat pe calculatorul user-ului. Valorile din cookie sunt perechi de form cheie/valoare. De obicei, cookie-urile sunt folosite pentru a reine informaii despre un user, la vizitarea unei pagini web. Cnd user-ul revine pe un site, informaiile din cookie sunt citite, ajutnd la identificarea rapid a utilizatorului. Pe lng valori, pentru un cookie se poate stabili durata de via n calculatorul clientului. Pentru a aduga un cookie, se folosete proprietatea Cookies a obiectului Response. Aceast proprietate este un vector asociativ, de tip cheie/valoare: Response.Cookies["cheie"].Value = valoare Timpul de via al cookie-ului se stabilete prin intermediul proprietii Expires. Avantajul folosirii cookie-urilor este acela c informaia este disponibil n orice pagin la revenirea userului n site, dup o anumit perioad. Printre dezavantaje amintim: nu sunt potrivite pentru a reine date importante cookie-urile pot fi dezactivate din browser sunt ncrcate pentru fiecare cerere, ducnd la creterea traficului

Anexa 4
INTERACIUNEA CU BAZE DE DATE WEB ADO.NET (ActiveX Data Objects) reprezint o parte component a nucleului .NET Framework ce permite conectarea la surse de date diverse, extragerea, manipularea i

129

actualizarea datelor. De obicei, sursa de date este o baz de date, dar ar putea de asemenea sa fie un fiier text, o foaie Excel, un fiier Access sau un fiier XML.

1. ROLUL BAZELOR DE DATE Astzi, cele mai multe dintre activitile zilnice necesit accesarea i actualizarea informaiei dintr-o baz de date: consultarea unui catalog de produse, lansarea unei comenzi, cumprarea unui bilet de avion sau verificarea evidenei plilor. De cele mai multe ori, informaiile sunt obinute prin prelucrarea unor seturi de date relaionate. De exemplu, o baz de date tipic pentru un magazin on-line conine o list de clieni, o list de produse i o list de vnzri bazat pe informaiile din primele dou liste. Aceste informaii sunt descrise cel mai bine utiliznd un model relaional, model ce presupune divizarea informaiilor n seturi consistente i definirea relaiilor dintre aceste seturi. Modelul relaional st la baza tuturor produselor moderne axate pe baze de date, incluznd aici SQL Server, Oracle,MySQL i chiar Microsoft Access. Din punct de vedere tehnic este posibil organizarea datelor n tabele i pstrarea acestei tabele pe hard disc n unul sau mai multe fiiere (eventual folosind un standard XML). Aceast abordare nu este ns foarte flexibil. O aplicaie web are nevoie de un sistem complet de gestionare a bazelor de date (RDBMS) cum ar fi SQL Server, care s asigure gestionarea infrastructurii, performan i fiabilitate. De exemplu, un astfel de sistem poate furniza date pentru mai muli utilizatori simultan, elimina datele incorecte i poate executa la un moment dat un grup de comenzi care sunt vzute ca o singur unitate.

130

2. ACCESAREA BAZELOR DE DATE WEB Accesarea unei baze de date ntr-o aplicaie web are un scenariu complet diferit fa de accesarea unei baze de date prin intermediul unei aplicaii desktop client-server. n aplicaiile tradiionale cu baze de date, clienii stabilesc o conexiune cu baza de date i menin aceast conexiune deschis pn la ncheierea executrii aplicaiei. Conexiunile deschise necesit alocarea de resurse sistem. Atunci cnd meninem mai multe conexiuni deschise server-ul de baze de date va rspunde mai lent la comenzile clienilor ntruct cele mai multe baze de date permit un numr foarte mic de conexiuni concurente. O aplicaie Web trebuie s asigure n principal furnizarea rezultatelor ctre mai muli utilizatori simultan, operaie influenat de resursele de memorie i de conexiunile la baza de date. Dac aplicaia este proiectat astfel nct s menin conexiunea deschis chiar i pentru cteva secunde n plus pentru un utilizator, atunci ceilali utilizatori vor observa cu siguran ntrzierea. Concurena este una dintre problemele pe care aplicaia trebuie s le gestioneze pentru c modificrile fcute de utilizatorii conectai simultan pot conduce la inconsistena datelor. O alt problem care trebuie rezolvat de o aplicaie Web care lucreaz cu baze de date este cea a modului de deconectare de la Internet. HTTP este un protocol static. Atunci cnd un utilizator emite o cerere printr-o aplicaie ASP.NET, serverul Web proceseaz codul, returneaz paginile HTML i nchide conexiunea, astfel nct utilizatorul are senzaia c lucreaz cu o aplicaie care ruleaz continuu dei el beneficiaz doar de pagini statice. Aplicaia ASP.NET trebuie s efectueze operaia solicitat de utilizator printr-o singur cerere. ADO.NET permite i lucrul n stil conectat dar i lucrul n stil deconectat, aplicaiile conectndu-se la server-ul de baze de date numai pentru extragerea i actualizarea datelor. Acest lucru permite reducerea numrului de conexiuni deschise simultan la sursele de date.
131

ADO.NET ofer instrumentele de utilizare i reprezentare XML pentru transferul datelor ntre aplicaii i surse de date, furniznd o reprezentare comun a datelor, ceea ce permite accesarea datelor din diferite surse de diferite tipuri i prelucrarea lor ca entiti, fr s fie necesar convertirea explicit a datelor n format XML sau invers. Aceste caracteristici sunt determinante n stabilirea beneficiilor furnizate de ADO.NET: Interoperabilitate. ADO.NET poate interaciona uor cu orice component care

suport XML. Durabilitate. ADO.NET permite dezvoltarea arhitecturii unei aplicaii datorit modului de transfer a datelor ntre nivelele arhitecturale. Programabilitate. ADO.NET simplific programarea pentru diferite task-uri cum ar fi comenzile SQL, ceea ce duce la o cretere a productivitii i la o scdere a numrului de erori. Performan. Nu mai este necesar conversia explicit a datelor la transferul ntre aplicaii, fapt care duce la creterea performanelor acestora. Accesibilitate. Utilizarea arhitecturii deconectate permite accesul simultan la acelai set de date. Reducerea numrului de conexiuni deschise simultan determin utilizarea optim a resurselor.

Anexa 5
Arhitectura ADO.NET Componentele principale ale ADO.NET sunt DataSet i Data Provider. Ele au fost proiectate pentru accesarea i manipularea datelor.

132

Furnizori de date (Data Providers) Din cauza existenei mai multor tipuri de surse de date este necesar ca pentru fiecare tip de protocol de comunicare s se foloseasc o bibliotec specializat de clase. .NET Framework include SQL Server.NET Data Provider pentru interaciune cu Microsoft SQL Server, Oracle Data Provider pentru bazele de date Oracle i OLE DB Data Provider pentru accesarea bazelor de date ce utiliteaz tehnologia OLE DB pentru expunerea datelor (de exemplu Access, Excel sau SQL Server versiune mai veche dect 7.0) Furnizorul de date permite unei aplicaii s se conecteze la sursa de date, execut comenzi i salveaz rezultate. Fiecare furnizor de date cuprinde componentele Connection, Command, DataReader i DataAdapter :

133

Accesul direct la date prin intermediul ADO.NET Accesul direct la date presupune construcia unei comenzi SQL, conectarea la baza de date, executarea comenzii i deconectarea de la baza de date fr memorarea direct a rezultatelor. Dac se lucreaz n mod deconectat atunci se pstreaz o copie a datelor ntr-un obiect de tip DataSet i acestea pot fi prelucrate i dup deconectarea de la baza de date. Modelul accesului direct la date corespunde paginilor ASP.NET unde nu este necesar memorarea datelor pentru perioade mai lungi de timp. O pagin ASP.NET este ncrcat la cerere i accesul se ncheie atunci cnd rezultatul cererii este furnizat user-ului, ceea ce nseamn o pagin care are de obicei o via de numai cteva secunde. Rezult aadar c o interogare direct a datelor presupune executarea pailor urmtori: a) crearea obiectelor de tip Connection, Command i DataReader ; b) obinerea informaiilor din baza de date cu ajutorul obiectelor de tip DataReader i afiarea acestora ntr-un controler de pe un formular web; c) nchiderea conexiunii; d) trimiterea paginii ctre utilizator; n acest moment nu mai avem o legtur direct ntre ceea ce vede utilizatorul i datele din baza de date, obiectele de tip ADO.NET fiind distruse. Adugarea, tergerea sau modificarea datelor se realizeaz n doi pai: a) crearea obiectelor de tip Connection, Command; b) executarea comenzii directe. n figura de mai jos sunt reprezentai paii menionai anterior.

134

Anexa 6
Securitatea aplicaiilor ASP.NET Pentru o aplicaie securizat, exist mai multe posibiliti de autentificare, cele mai des ntlnite fiind sintetizate n tabelul urmtor. Implementarea politicii de securitate se poate face att din IIS ct i din aplicaia ASP.NET.

135

Windows Authentication n acest mod de autentificare, aplicaia ASP .NET are ncorporate procedurile de autentificare, dar se bazeaz pe sistemul de operare Windows pentru autentificarea utilizatorului. 1. Utilizatorul solicit o pagin securizat de la aplicaia Web. 2. Cererea ajunge la Serverul Web IIS care compar datele de autentificare ale utilizatorului cu cele ale aplicaiei (sau ale domeniului) 3. Dac acestea dou nu corespund, IIS refuz cererea utilizatorului. 4. Calculatorul clientului genereaz o fereastr de autentificare, 5. Clientul introduce datele de autentificare, dup care retrimite cererea ctre IIS 6. IIS verific datele de autentificare, i n cazul n care sunt corecte, direcioneaz cererea ctre aplicaia Web.
136

7. Pagina securizat este returnat utilizatorului.

Forms-Based Authentication Atunci cnd se utilizeaz autentificarea bazat pe formulare, IIS nu realizeaz autentificarea, deci este necesar ca n setrile acestuia s fie permis accesul anonim. 1. n momentul n care un utilizator solicit o pagin securizat, IIS autentific clientul ca fiind un utilizator anonim, dup care trimite cererea ctre ASP.NET. 2. Acesta verific pe calculatorul clientului prezena unui anumit cookie. 3. Dac cookie-ul nu este prezent sau este invalid, ASP.NET refuz cererea clientului i returneaz o pagin de autentificare. 4. Clientul completeaz informaiile cerute n pagina de autentificare i apoi trimite informaiile. 5. Din nou, IIS autentific clientul ca fiind un utilizator anonim i trimite cererea ctre ASP .NET 6. ASP.NET autentific clientul pe baza informaiilor furnizate. De asemenea genereaz i un cookie. Cookie reprezint un mic fiier text ce pstreaz diverse informaii despre utilizatorul respectiv, informaii folosite la urmtoarea vizit a sa pe site-ul respectiv, la autentificare, sau n diverse alte scopuri. 7. Pagina securizat cerut i noul cookie sunt returnate clientului. Atta timp ct acest cookie rmne valid, clientul poate solicita i vizualiza orice pagin securizat ce utilizeaz aceleai informaii de autentificare.

137

Securizarea din aplicaia web Securizarea unei aplicaii web presupune realizarea a dou obiective: (1) autentificarea i (2) autorizarea. 1. Autentificarea presupune introducerea de ctre utilizator a unor credeniale, de exemplu nume de utilizator i parol, iar apoi verificarea n sistem c acestea
138

exist i sunt valide. 2. Autorizarea este procesul prin care un utilizator autentificat primete acces pe anumite resurse, numai pe resursele pe care are dreptul s le acceseze. Aceste obiective pot fi atinse uor utiliznd funcionalitile i uneltele din ASP.NET respectiv Visual Studio, anume clasa Membership i unealta ASP.NET Configuration (din meniul Website al Visual Studio Web Developer Express).

Anexa 7
Pagini dinamice vs Pagini statice Paginile Web dinamice sunt folosite atunci cnd se dorete modificarea dinamic, a coninutului paginilor Web. Paginile Web realizate n HTML au dezavantajul ca sunt statice, coninutul lor neputnd fi modificat odat ce au fost ncrcate pe un server dect aducndu-le napoi pentru a fi editate. Acest lucru este o problem serioas avnd n vedere c operaia este mare consumatoare de timp. n plus, lucrul cu baze de date nu este posibil n cazul paginilor statice. Pentru un site de Web format doar din pagini HTML care afieaz notele i mediile studenilor pe serii i pe grupe, dac se dorete adugarea unui student va trebui s se modifice att pagina grupei ct i pagina seriei precum i pe cele de medii. Acest fapt este neplcut i ngreuneaz foarte mult munca. Soluia care se adopt n astfel de situaii este plasarea informaiilor ntr-o baz de date i accesarea lor ori de cte ori se cere acest lucru de cineva. Mai exact, n loc s se creeze 3-4 pagini Web n HTML care s fie modificate ori de cte ori intervine o schimbare, se va crea o baz de date i cteva scripturi pe partea de server prin care vor construi dinamic, paginile HTML care vor fi afiate. Schimbrile se vor face doar la nivelul bazei de date ceea ce e mult mai simplu. Paginile Web se clasific n funcie de natura coninutului n pagini statice i pagini dinamice.
139

Principalele caracteristici ale paginilor Web statice sunt: conin doar elemente HTML; codul surs vizualizat n navigator este identic cu cel al fiierului stocat pe disc; nu ofer interactivitate. Paginile Web dinamice se caracterizeaz prin urmtoarele: coninutul lor este creat dinamic i poate diferi la accesri diferite; de exemplu la acelai URL coninutul paginii poate varia n funcie de anumii parametri cum ar fi locaia geografic a utilizatorului, ora, paginile vizitate anterior, profilul utilizatorului; ofer interactivitate; posibiliti de interaciune. n funcie de locul n care este evideniat caracterul dinamic al paginilor exist pagini dinamice pe parte de client i pagini dinamice pe partea de server. Pagini dinamice pe partea client Exist mai multe tehnologii care permit realizarea de pagini dinamice pe partea de client. Dintre acestea se enumer: scripturi pe partea de client (client side scripts) DHTML (Dynamic HTML) Applet-uri Java Controale ActiveX Elemente multimedia Scripturile pe partea de client (client side scripts) sunt secvene de program incluse n pagina HTML care se execut de ctre navigator. Secvenele de program sunt incluse prin
140

marcatorul <SCRIPT> sau n proprietile anumitor componente HTML ca rspuns la diferite evenimente. Limbajele utilizate pentru a realiza scripturi pe partea de client sunt JavaScript, Jscript i VBScript. Secvenele de program scrise folosind aceste scripturi nu ofer acces la resursele sistemului local (fiiere, reea). Scripturile pe partea de client sunt utilizate pentru asigurarea interactivitii (meniuri), pentru validarea formularelor, pentru a crea diferite efecte, pentru efectuarea de calcule, diverse elemente de animaie etc. DHTML (Dynamic HTML) este o tehnologie dezvoltat de Microsoft care combin HTML, foi de stiluri (CSS) i script-uri pentru a realiza pagini Web dinamice sau interactive. Permite utilizatorilor s interacioneze cu pagina fr a retrimite o cerere la serverul Web. Applet-uri Java reprezint aplicaii de dimensiuni reduse, scrise n limbajul Java. Codul binar al aplicaiei este descrcat pe maina client de pe server i executat local, n maina virtual Java (JVM). Aproape toate calculatoarele permit execuia applet-urilor, ns pentru funcionarea acestora este necesar instalarea unei maini virtuale Java. n cadrul paginii HTML applet-urile sunt incluse prin intermediul marcatorilor <APPLET> sau <OBJECT>. Din applet-urile Java nu este permis accesul la sistemul local de fiiere i la reea, astfel riscul ca aceste aplicaii sa conin cod maliios sunt reduse. Controalele ActiveX sunt componente binare incluse n paginile Web pentru a oferi interactivitate. Sunt asemntoare applet-urilor, ns spre deosebire de acestea, ruleaz pe platforma Windows i au fost dezvoltate n special pentru Internet Explorer. Controalele ActiveX sunt incluse n cadrul paginii Web prin intermediul marcatorului <OBJECT>. Spre deosebire de scripturile pe partea de client, nu au restricii n ceea ce privete accesul la disc, ceea ce face ca anumite componente de acest tip sa fie susceptibile de cod ruvoitor, asemntor viruilor. De aceea, n cazul n care o pagin conine controale ActiveX, navigatorul printr-o fereastr de dialog cere confirmarea utilizatorului pentru instalarea i rularea acestora.
141

Elemente multimedia sunt dezvoltate n general folosind produsul Macromedia Flash. Acestea se prezint sub form de fiiere SWF multimedia i sunt incluse n pagina Web prin intermediul marcatorului <OBJECT>. Pentru a putea rula pe partea de client aceste fiiere este necesar instalarea unui plug - in denumit Macromedia Shockwave Player. Fiierele multimedia Flash se realizeaz sub forma unor filme, care sunt proiectate cadru cu cadru. Acestea ofer diverse efecte multimedia (animaie, sunet) i permit interactivitatea cu utilizatorul. Sunt utilizate pentru meniuri, jocuri, filme de animaie etc. Pagini dinamice generate pe partea server Interpretorul de scripturi tip server-side are rolul de a executa scripturi la cererea serverului de Web, de cele mai multe ori de a prelua rezultatul unor interogri la nivelul bazelor de date i de a trimite spre serverul Web rezultatul execuiei scripturilor sub form de coninut HTML pentru a putea fi afiat de ctre navigator. n momentul n care serverului Web i se solicit rularea unui script, acesta identific n funcie de extensia fiierului care din compilatoare trebuie s ruleze scriptul respectiv.

142

Fiecrui interpretor de scripturi se asociaz unui limbaj de server- side scripting. Limbajele populare ale momentului sunt: PHP (Personal Home Pages), ASP (Active Server Pages), ASP.NETsi JSP (Java Server Pages). La acestea se mai adaug i o serie de alte tehnologii de interes mai restrns. Caracteristicile generale ale paginilor Web dinamice generate pe partea de server, indiferent de limbajul de scripting folosit sunt: necesit un procesor pentru paginile dinamice sau un mediu de execuie; ntr-o pagin de script (ASP, JSP, PHP) pot fi mbinate limbajul HTML i secvene de cod; secvenele de cod care sunt executate pe partea de server, nainte de a trimite pagina la client; exist astfel posibilitatea de a particulariza paginile n mod dinamic; ofer posibilitatea de interaciune cu baze de date diferite; au acces la toate resursele serverului Web (fiiere, reea). n mod uzual prin intermediul scripturilor sunt prelucrate informaiile din cmpurile formularelor (<FORM>) din cadrul paginilor Web.

143

MODELUL ASP Tehnologia Active Server Pages (ASP) dezvoltat de Microsoft permite realizarea de scripturi pentru server i este folosit pentru crearea i rularea n mod dinamic a aplicaiilor Web server interactive. Cu ASP se pot combina pagini HTML, comenzi de script i controale ActiveX pentru crearea de pagini Web interactive sau aplicaii Web complexe. Cnd serverul primete o cerere pentru un fiier ASP, prelucreaz scriptul coninut n fiier pentru a construi pagina de Web care este trimis apoi la navigator. ASP ofer totodat posibilitatea de a stoca informaia dintr-un formular HTML ntr-o baz de date, de a personaliza site-uri Web, oferind diverse opiuni pentru vizitatorii site-ului sau de a folosi diferite caracteristici HTML bazate pe navigator. Pentru a prelucra un formular HTML pe server, ar trebui utilizat limbajul Perl sau C pentru construirea unui CGI convenional. Cu ASP se poate prelua informaia dintr-un formular HTML care va fi stocat ntr-o baz de date, folosind numai scripturi simple nglobate n documente HTML. ASP este proiectat independent de limbaj, deci se poate utiliza orice limbaj pentru care exist instalat un compilator compatibil COM. ASP are nglobate limbajele VBSscript i JScript., dar se pot instala i compilatoare pentru limbajele Perl, Rexx sau Python. Totodat, ASP ofer o cale flexibil pentru a crea pagini Web i de a dezvolta aplicaii Web ntr-un limbaj de programare ca Visual Basic, C++ sau Java. Se poate include i o sigl a aplicaiei n module care vor fi apelate i executate de ctre alte componente sau programe.

144

BIBLIOGRAFIE
Cri: Daniela Crian, Alexandru Tbuc Programare Web / HTML / Javascript Cornelia Botezatu Proiectarea sistemelor informatice. Metode sistemice. , Editura ProUniversitaria, Buc, 2007 Ionel Iacob ORACLE 10g Proiectarea i realizarea aplicaiilor cu baze de date utiliznd limbajul SQL*PLUS, Ed. ProUniversitaria 2009 Matthew MacDonald, Mario Szpuszta Pro ASP.NET 3.5 n C# 2008, Second Edition, Apress, 2007 Matthew MacDonald Beginning ASP.NET 3.5 n C# 2008: From Novice to Professional, Second Edition, Apress, 2007 Marco Bellinaso, Kevin Hoffman ASP.NET Website Programming, C# Edition: Problem, Design, Solution, Wrox Press Ltd., 2002 Mridula Parihar ASP.NET Bible, Hungry Minds, 2002

145

Bill Evjen, Scott Hanselman, Devin Rader Professional ASP.NET 3.5 SP1 Edition In C# and VB, Wiley Publishing, Inc. William B. Sanders ASP.NET 3.5, A Beginners Guide, The McGraw-Hill Companies, 2009 Cristian Darie & Wyatt Barnett Build Your Own ASP.NET 3.5 Web Site Using C# & VB, 3rd Edition Vince Varallo ASP.NET 3.5 Enterprise Application Development with Visual Studio 2008 Problem Design Solution, Wiley Publishing, Inc. Paul Nielsen, with Mike White, Uttam Parui Microsoft SQL Server 2008 Bible, Wiley Publishing, Inc., 2009 Jeff Ferguson, Brian Patterson, Jason Beres, Pierre Boutquin, and Meeta Gupta C# Bible, Wiley Publishing (2002) URL : www.rau.ro http://www.ezzylearning.com/ http://www.ezzylearning.com/tutorial.aspx? tid=9637167 http://forums.asp.net/ http://forums.asp.net/p/956540/1177923.a spx#1177923 http://www.codeproject.com/ http://www.codeproject.com/KB/applicatio ns/SearchDotnet.aspx
146

http://sql-databases.blurtit.com/ http://msdn.microsoft.com/en-us/

http://www.blurtit.com/q499290.html http://msdn.microsoft.com/enus/library/wtxbf3hh.aspx

http://www.w3schools.com/

http://www.w3schools.com/aspnet/prop_w ebcontrol_textbox_autopostback.asp

http://www.w3schools.com/

http://www.w3schools.com/ASPNET/prop_ webcontrol_listcontrol_datavaluefield.asp

http://www.w3schools.com/

http://www.w3schools.com/ASPNET/prop_ webcontrol_listcontrol_datatextfield.asp

http://www.codeproject.com/

http://www.codeproject.com/KB/aspnet/IIS 7ASPNet.aspx

http://technet.microsoft.com/en-us

http://technet.microsoft.com/enus/library/cc731252%28WS.10%29.aspx

http://www.bibliotecadigitala.ase.ro/biblioteca/model/index2.asp

http://www.bibliotecadigitala.ase.ro/biblioteca/carte2.asp?id=458 &idb=11

http://www.bibliotecadigitala.ase.ro/biblioteca/model/index2.asp http://www.teqcircle.com

http://www.bibliotecadigitala.ase.ro/biblioteca/carte2.asp?id=432

147

S-ar putea să vă placă și