Licenta Gombos Irina, Gr 627 (1)

147
1 UNIVERSITATEA ROMÂNO-AMERICANĂ FACULTATEA DE INFORMATICĂ MANAGERIALĂ DEZVOLTAREA APLICAȚIILOR WEB UTILIZÂND CONCEPTELE DOT.NET “RAUGRADEBOOK”, CATALOG VIRTUAL Coordonator științific: Lector univ. drd. ENĂCEANU ALEXANDRU ȘERBAN Absolvent: GOMBOȘ ALEXANDRA IRINA BUCUREȘTI 2012

description

licenta

Transcript of Licenta Gombos Irina, Gr 627 (1)

Page 1: Licenta Gombos Irina, Gr 627 (1)

1

UNIVERSITATEA ROMÂNO-AMERICANĂ

FACULTATEA DE INFORMATICĂ MANAGERIALĂ

DEZVOLTAREA APLICAȚIILOR WEB UTILIZÂND CONCEPTELE

DOT.NET

“RAUGRADEBOOK”, CATALOG VIRTUAL

Coordonator științific:

Lector univ. drd. ENĂCEANU ALEXANDRU ȘERBAN

Absolvent:

GOMBOȘ ALEXANDRA IRINA

BUCUREȘTI 2012

Page 2: Licenta Gombos Irina, Gr 627 (1)

2

CUPRINS

Introducere pagina 4

Cap. 1 STUDIUL ȘI ANALIZA SISTEMULUI EXISTENT

1.1 Prezentarea succintӑ a unitӑții economico-sociale pagina 5

1.2 Activitӑțile desfӑșurate în unitatea economicӑ (caracteristicile generale

ale sistemului economic din unitate) pagina 7

1.3 Studiul sistemului de conducere pagina 9

1.4 Studiul sistemului condus pagina 18

1.5 Studiul sistemului informațional pagina 23

1.6 Analiza criticӑ a sistemului actual și identificarea neajunsurilor

(punctelor critice) existente în funcționarea sistemului existent pagina 26

Cap. 2. PROIECTAREA DE ANSAMBLU A SISTEMULUI INFORMATIC

2.1 Obiectivele și oportunitatea aplicației informatice pagina 27

2.2 Locul aplicației informatice în sistem pagina 28

2.3 Alegerea tehnologiei de prelucrare (stabilirea platformei hardware,

software și de comunicații) pagina 29

2.4 Diagrama Entitate-Asociere pagina 32

2.5 Stabilirea colecțiilor de date pagina 33

2.6 Descrierea aplicației informatice pagina 34

2.7 Estimarea necesarului de resurse și a calendarului de realizare pagina 35

Page 3: Licenta Gombos Irina, Gr 627 (1)

3

Cap. 3 PROIECTAREA DE DETALIU A APLICAȚIEI INFORMATICE

3.1 Definirea obiectivelor aplicației informatice pagina 38

3.2 Proiectarea logicӑ și fizicӑ a ieșirilor pagina 40

3.3 Proiectarea logicӑ și fizicӑ a intrӑrilor pagina 40

3.4 Proiectarea sistemului de codificare a datelor pagina 41

3.5 Proiectarea bazei de date pagina 43

3.6 Proiectarea interfeței aplicației pagina 49

Cap. 4. PREZENTAREA PRODUSULUI SOFTWARE pagina 57

Cap. 5. EFICIENȚA ȘI UTILITATEA APLICAȚIEI INFORMATICE pagina 119

ANEXE pagina 121

BIBLIOGRAFIE pagina 145

Page 4: Licenta Gombos Irina, Gr 627 (1)

4

Introducere

Ingredientele unei educații eficiente pentru studenți depinde de modalitӑțile de

comunicare între toate pӑrțile implicate, atât profesori cât şi studenți. Oricine are nevoie de

o instruire corespunzӑtoare privind evoluția, respectiv provocӑrile cu care trebuie sӑ se

confrunte zilnic.

Întrucât 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 studenții.

Pentru un profesor, cel mai mare avantaj al unui catalog online reprezintӑ administrarea

informațiilor, întrucât atribuțiile lui se vor reduce semnificativ, el centrând întreaga sa

activitate în doar câteva pagini, la care va avea acces oricând și oriunde. Datele pe care el le

va introduce vor fi reținute în baza de date, profesorul, ulterior având posibilitatea sӑ le

modifice. Practic, el are acces imediat la diferite rapoarte, fie cӑ este vorba de progresul mai

multor studenți care sunt înscriși la aceeași facultate, fie cӑ se dorește vizualizarea

progresului academic al unui student, la materiile care îi sunt predate.

Studenții pot transforma aceastӑ experiențӑ într-una pozitivӑ, întrucât au acces la evoluția

lor pe întreaga duratӑ a anului universitar, constituind un portal cӑtre catalogul

profesorilor.

Aceastӑ idee eliminӑ procesul transmiterii informației între student și profesor, alocând

timp valoros în ajutarea studenților în urmӑrirea activitӑților lor.

În momentul în care intervine lipsa de comunicare dintre pӑrțile implicate, confuzia și

neîncrederea pot apӑrea. Profitând de acest sistem online, nici o singurӑ parte nu va fi

ținutӑ departe de întregul progres al fiecӑrei grupe, fiecӑrui student sau al performanței

întregii universitӑți.

Prezenta lucrare de licența își propune sӑ elimine din neajunsurile cataloagelor standard, și

propune sӑ realizeze un sistem informatic ce va cuprinde elemente prezentate anterior și

detaliate în urmӑtoarele capitole.

Page 5: Licenta Gombos Irina, Gr 627 (1)

5

Cap. 1 STUDIUL ȘI ANALIZA SISTEMULUI EXISTENT

1.1 Prezentarea succintӑ a unitӑții economico-sociale

Universitatea Româno-Americanӑ din București a fost înființatӑ în anul 1991, în cadrul

Fundației Româno - Americane pentru Promovarea Educației și Culturii, având drept scop

promovarea valorilor educaționale ale învӑțӑmântului superior american, pe fondul

bogatelor tradiții ale învӑțӑmântului românesc.

La întrunirea în care Prof.univ.dr. Ion Smedescu a anunțat înființarea Universitӑții Româno-

Americane, în prezența mass-media și a doamnei Agata Kooperman, atașat cultural al

Ambasadei SUA din București, doamna Kooperman a fost de acord cu înființarea și

denumirea Universitӑții, recomandând o serie de universitӑți din SUA pentru a fi contactate

și pentru a stabili relații de cooperare.

S-a pornit de la faptul cӑ în Statele Unite ale Americii învӑțӑmântul superior are ca suport

modelul general de comportament al societӑții americane bazat pe organizarea eficientӑ a

activitӑții, simțul perseverent al datoriei, cultivarea sentimentului muncii, respectul de sine

și fațӑ de ceilalți, spiritul onest al competiției întreținut de-a lungul întregii vieți, întrecerea

cu toți ceilalți și, în primul rând cu sine însuși.

Inițiativa înființӑrii Universitӑții aparține profesorului universitar dr. Ion Smedescu, care

este fondatorul și Rectorul Universitӑții, membru activ al Academiei Americane de Științe

din New York, Președintele Fundației Româno-Americane pentru Promovarea Educației și

Culturii, în activitatea cӑreia este integratӑ Universitatea.

Domnia sa este membru al Consiliului Național al Asociației Generale a Economiștilor din

România și director general adjunct al Centrului Internațional de Biografii din Cambridge.

A fost declarat de Institutul American de Biografii din SUA "Omul Anului" în 2001, 2002 și

2003; același institut i-a acordat "Medalia de Onoare Americanӑ". De asemenea, a fost

distins cu "Medalia de aur a Academiei de Științe a Braziliei". În luna ianuarie 2004,

apreciind contribuția deosebitӑ la promovarea și dezvoltarea învӑțӑmântului românesc și

întreaga sa activitate didacticӑ și de cercetare, profesorului univ.dr. Ion Smedescu i s-a

Page 6: Licenta Gombos Irina, Gr 627 (1)

6

conferit, prin Decret Prezidențial, Ordinul Național Serviciul Credincios în gradul de

Cavaler.

Conceputӑ ca formӑ alternativӑ și complementarӑ la învӑțӑmântul superior public,

Universitatea are în structura sa 6 facultӑți, din care 5 cu profil economic și una cu profil

juridic, respectiv: Facultatea de Relații Comerciale și Financiar Bancare Interne și

Internaționale, Facultatea de Management-Marketing, Facultatea de Economia Turismului

Intern și Internațional, Facultatea de Informaticӑ Managerialӑ, Facultatea de Studii ale

Integrӑrii Economice Europene, Facultatea de Drept.

În contextul reformei impuse de Procesul Bologna, Universitatea a urmӑrit creșterea

gradului de compatibilizare a ofertei sale educaționale cu învӑțӑmântul european și a

realizat totodatӑ, prin intermediul acțiunilor întreprinse, trecerea la învӑțӑmântul integrat

(licența - masterat - doctorat).

Pentru realizarea misiunii și obiectivelor sale, Universitatea Româno-Americanӑ din

București se sprijinӑ pe o colaborare fructuoasӑ cu universitӑți americane, din rândul

cӑrora se detașeazӑ 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 universitӑți și instituții din Europa, America de Sud

(Brazilia). Numeroși studenți au beneficiat de burse de studiu în SUA, inclusiv pentru

Masterat, o parte din aceștia rӑmânând în cadrul corpului profesoral al Universitӑții.

Page 7: Licenta Gombos Irina, Gr 627 (1)

7

1.2 Activitӑțile desfӑșurate în unitatea economicӑ (caracteristicile generale ale sistemului

economic din unitate)

Pe baza acordului de cooperare pe termen lung încheiat cu James Madison University,

Universitatea Româno-Americanӑ beneficiazӑ de prezența și contribuția unor cadre

didactice americane de prestigiu, de manuale și materiale de studiu, de burse pentru

studenți; organizeazӑ vizite ale unor studenți americani în zone istorice și turistice ale

României, în scopul cunoașterii de cӑtre aceștia a țӑrii noastre; organizeazӑ în comun

simpozioane științifice educaționale, schimb de experiențӑ între cadrele didactice, etc.

Cancelarul Universitӑții James Madison, din statul Virginia, profesorul Ronald Carrier a dat

curs, în mai multe rânduri, invitației de a vizita Universitatea Româno Americanӑ din

București pentru a cunoaște direct, la fața locului, preocupӑrile studenților și ale

profesorilor noștri. Pentru spirjinul acordat Universitӑții Româno-Americane, domnul

Ronald Carrier, în calitate de Rector al James Madison University a fost ales președinte de

onoare al Fundației Româno-Americane pentru Promovarea Educației și Culturii.

Menționӑm, de asemenea, contribuțiile domnilor prof. dr. Stephen Bowers și prof.univ.dr.

Bijan Saadatmand, care au contribuit fundamental la punerea bazelor și la dezvoltarea

permanenta a cooperӑrii între cele douӑ instituții de invӑțӑmânt superior. Aceasta

fructuasӑ cooperare dintre cele douӑ universitӑți a cӑpӑtat, în timp, noi valențe și datoritӑ

sprijinului primit, în mod constant, de la Dl. Linwood Rose, actualul Președinte al James

Madison University și al D-nei. Lee Sternberger, Directorul pentru Relații Internaționale. În

acest fel s-au putut realiza în permanențӑ schimburi de profesori și studenți, asigurându-se

o mai mare deschidere a Universitӑții Româno-Americane cӑtre mediul academic american.

Acreditarea Universitӑții a permis introducerea unei gândiri noi și a unei abordӑri

strategice menite sӑ consolideze capacitӑțile de cercetare existente și sӑ relanseze aceastӑ

activitate prin implicarea mai activӑ a cadrelor didactice și a studenților în Programe și

Grant-uri interne și Internaționale. În cei 15 ani de activitate, Universitatea Româno-

Americanӑ s-a afirmat ca un furnizor de educație oferind societӑții românești peste 12.000

Page 8: Licenta Gombos Irina, Gr 627 (1)

8

de licențiați pe care îi întâlnim în majoritatea structurilor administrației, în diverse firme,

bӑnci și instituții social-culturale.

În favoarea ideii de reformӑ curricularӑ, derulatӑ în cadrul Universitӑții au pledat

permanent o serie de argumente fundamentale precum:

• performanța,

• egalitatea de șanse,

• compatibilizarea cu sistemele european și american de învӑțӑmânt,

• asigurarea unei succesiuni logice a disciplinelor pe ani de studii,

• consolidarea sistemului de credite transferabile, etc.

Pentru creșterea performanțelor cadrelor didactice, Senatul Universitӑții a stabilit criterii

de evaluare anualӑ, ținându-se seama de calitatea cursurilor, a seminariilor și a lucrӑrilor

aplicative, de activitatea de cercetare științificӑ și fidelitatea fațӑ de Universitate. La

evaluarea cadrelor didactice participӑ și studenții. Promovarea unei atitudini de

parteneriat între cadrele didactice și studenți conduce la realizarea unui învӑțӑmânt

participativ, performant și pragmatic, bazat pe cunoaștere, înțelegere și demnitate, pe

respectarea și încurajarea personalitӑții fiecӑrui student. Astfel, se acordӑ o atenție

deosebitӑ dezvoltӑrii creativitӑții studenților, stimulӑrii exprimӑrii opiniilor, formӑrii

atitudinilor și convingerilor bazate pe promovarea valorilor naționale și internaționale.

Prin tot ceea ce a înfӑptuit pânӑ în prezent Universitatea Româno-Americanӑ și-a

consolidat poziția în sistemul național de învӑțӑmânt, iar activitatea sa a cӑpӑtat valențe

noi, necesare în condițiile unei acerbe competiții și concurențe pe piața forței de munca

înalt calificate din România și din lume. Realizarea obiectivelor și misiunii sale au

contribuit la creșterea prestigiului în rândul universitӑților din România, dovedindu-se

viabilӑ ideea de alternativӑ la învӑțӑmântul universitar public.

Page 9: Licenta Gombos Irina, Gr 627 (1)

9

1.3 Studiul sistemului de conducere

Universitatea Româno-Americanӑ din București are un sistem de conducere care respectӑ

reglementӑrile legale în vigoare, principiile managementului modern și bunele practici

promovate în sistemele educaționale 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 calificӑrii profesionale și

condițiilor cerute pentru ocuparea posturilor respective.

Mai jos voi enumera câteva dintre principalele funcții de conducere din cadrul Universitӑții:

DIRECTOR GENERAL

Atribuții:

o Stabilește obiectivele de dezvoltare ale firmei, în concordanțӑ cu strategia elaboratӑ

de Consiliul de Administrație: comunicӑ obiectivele și urmӑrește ca acestea sӑ fie

comunicate întregului personal; monitorizeazӑ trimestrial/semestrial/anual gradul

de realizare a obiectivelor; stabilește obiective personale și pentru top-management

în strictӑ concordanțӑ cu obiectivele firmei.

o Aprobӑ bugetul și rectificӑrile acestuia: participӑ la elaborarea bugetului, analizeazӑ

propunerile înaintate, opereazӑ corecțiile necesare și aprobӑ bugetul final; aprobӑ

sistemul de raportare folosit pentru urmӑrirea realizӑrii bugetului.

o Identificӑ oportunitӑți de afaceri: monitorizeazӑ piața și identificӑ tendințele de

dezvoltare; analizeazӑ oportunitӑțile/constrângerile de ordin legislativ, financiar,

tehnologic și social; identificӑ modalitӑți de dezvoltare a serviciilor oferite de firma

în concordanțӑ cu tendințele pieței; identificӑ și atrage resursele necesare pentru

implementarea noilor idei de afaceri.

o Reprezintӑ firma în relațiile protocolare cu furnizorii, clienții și alte

organisme/organizații cu impact real/potențial asupra rezultatelor firmei: asigurӑ o

bunӑ imagine a firmei pe piațӑ; participӑ la întâlniri de afaceri cu furnizori, clienți,

Page 10: Licenta Gombos Irina, Gr 627 (1)

10

organisme financiare și instituții guvernamentale din țarӑ și din strӑinӑtate;

dezvoltӑ relații pozitive cu persoane-cheie în vederea întӑririi poziției firmei.

o Asigurӑ managementul firmei: comunicӑ managementului valorile și obiectivele

strategice ale firmei; stabilește obiectivele managerilor din subordine, termenele-

limitӑ și modalitӑțile de mӑsurare a gradului de realizare a obiectivelor; aprobӑ

procedurile de interes general ale firmei (aprovizionare, vânzare, distribuție,

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

inițiativei care sӑ contribuie la atingerea obiectivelor stabilite; identificӑ nevoile de

recrutare și participӑ la selecția, integrarea și dezvoltarea managementului firmei;

participӑ la programele de elaborare și actualizare a fișelor de post ale managerilor

din subordine; evalueazӑ periodic activitatea managerilor din subordine; negociazӑ

și conciliazӑ situațiile conflictuale apӑrute în relațiile interpersonale; aprobӑ

planificarea concediilor de odihnӑ pentru angajații din subordine; asigurӑ

respectarea normelor interne de funcționare de cӑtre personalul din subordine;

stabilește mӑsuri de eficientizare a activitӑții personalului din subordine.

o Asigurӑ rețeaua de relații necesarӑ dezvoltӑrii activitӑții firmei: evalueazӑ potențialul

furnizorilor și al clienților; stabilește posibile cӑi de colaborare și decide asupra

parteneriatelor strategice: elaboreazӑ planuri de afaceri și le implementeazӑ;

dezvoltӑ relații pozitive cu personalul firmei în vederea motivӑrii și a creșterii

gradului de implicare în activitatea firmei.

DIRECTOR ECONOMIC

Atribuții:

o Asigurӑ buna gestionare a patrimoniului: asigurӑ condițiile necesare pentru

întocmirea documentelor justificative privind operațiile patrimoniale; asigurӑ

controlul operațiunilor patrimoniale efectuate la nivelul firmei, procedeele de

Page 11: Licenta Gombos Irina, Gr 627 (1)

11

prelucrare utilizate, precum și exactitatea datelor contabile furnizate; organizeazӑ

inventarierea patrimoniului și valorificarea rezultatelor inventarierii; asigurӑ

analiza periodicӑ a utilizӑrii și stӑrii mijloacelor fixe; asigurӑ disponibilitӑțile

necesare și menținerea în permanențӑ a capacitӑții de platӑ a societӑții; asigurӑ

plata la termen a sumelor ce sunt obligația firmei fațӑ de bugetul de stat, alte

obligații fațӑ de terți; asigurӑ efectuarea corectӑ și la timp a calculului privind

drepturile salariale ale personalului; propune mӑsuri concrete și eficiente pentru

înlӑturarea unor situații nefavorabile în domeniul stocurilor; desfӑșoarӑ activitate

de documentare în probleme economico-financiare.

o Asigurӑ respectarea legislației fiscale la nivel de firmӑ: se documenteazӑ la zi cu

privire la legislația din domeniul financiar-contabil și asigurӑ desfӑșurarea activitӑții

financiar-contabile în conformitate cu legislația de specialitate; asigurӑ respectarea

regulilor de întocmire a bilanțului contabil, depunerea la termen la organele de

drept și publicarea acestuia în Monitorul Oficial; asigurӑ pӑstrarea documentelor

justificative, a registrelor și a bilanțurilor contabile; urmӑrește respectarea

legislației fiscal; urmӑrește constituirea fondurilor și utilizarea acestora cu

respectarea dispozițiilor legale; exercitӑ controlul financiar preventiv privind

legalitatea operațiunilor.

o Întocmește bugetul general al societӑții, informeazӑ și face propuneri de corecție:

realizeazӑ proiectul de buget semestrial și anual, defalcat; analizeazӑ indicatorii de

afaceri și își exprimӑ punctul de vedere în legaturӑ cu aceștia; sprijinӑ

departamentele firmei în analiza indicatorilor proprii.

o Raporteazӑ rezultatele financiare ale firmei: asigurӑ înregistrarea sistematicӑ și

cronologicӑ, prelucrarea, publicarea și pӑstrarea informațiilor cu privire la situația

patrimonialӑ și la rezultatele economice ale firmei; asigurӑ întocmirea tuturor

raportӑrilor solicitate de organele Administrației financiare și de control, bancare,

statistice; prezintӑ Directorului General rapoarte conținând rezultatele financiare

ale firmei.

Page 12: Licenta Gombos Irina, Gr 627 (1)

12

o Elaboreazӑ și implementeazӑ sistemul general de evidențӑ a gestiunii firmei:

stabilește proceduri de lucru generale sau specifice care sӑ asigure evidența de

gestiune; stabilește principiile de organizare a sistemului informațional.

o Conduce și organizeazӑ activitatea departamentului: stabilește sarcinile salariaților

din subordine și prioritӑțile în executarea acestor sarcini; participӑ la programele de

elaborare și actualizare a fișelor de post ale salariaților din subordine; evalueazӑ

periodic activitatea salariaților din subordine; negociazӑ și conciliazӑ situațiile

conflictuale apӑrute în relațiile interpersonale; propune

recompensarea/sancționarea personalului din subordine conform normativelor

interne; aprobӑ planificarea concediilor de odihnӑ pentru angajații din subordine;

asigurӑ respectarea normelor interne de funcționare de cӑtre personalul din

subordine.

DECAN

Atribuții:

o asigurӑ conducerea operativӑ a facultӑții pe durata mandatului;

o urmӑrește îndeplinirea și derularea corespunzӑtoare a programului managerial

propus și validat de cӑtre Consiliul Profesoral;

o promoveazӑ în mod constant mӑsuri care sӑ conducӑ la menținerea și creșterea

prestigiului profesional al facultӑții în raport cu alte unitӑți similare de profil din țarӑ

și strӑinӑtate;

o urmӑrește promovarea de noi specializӑri pe forme de învӑțӑmânt, în acord cu

cerințele pieței economice și ale forței de muncӑ;

o responsabil cu activitatea didacticӑ desfӑșuratӑ și probleme resurse umane;

o urmӑrește și coordoneazӑ activitatea de promovare a cadrelor didactice la nivel

Page 13: Licenta Gombos Irina, Gr 627 (1)

13

de facultate în condițiile respectӑrii prevederilor legale;

o definește și redefinește obiectivele facultӑții;

o organizeazӑ, coordoneazӑ și controleazӑ activitatea didacticӑ din facultate;

o aprobӑ la începutul fiecӑrui an universitar planurile de învӑțӑmânt și bugetul facultӑții;

o coordoneazӑ și organizeazӑ accesarea proiectelor de cercetare științificӑ;

o coordoneazӑ acțiunile de autorizare și acreditare a specializӑrilor facultӑții pe

forme de învӑțӑmânt;

o coordoneazӑ și decide, în conformitate cu prevederile legale și cu respectarea

Cartei Universitӑții, în toate problemele didactice, științifice, financiare, administrative

sau de altӑ naturӑ ale facultӑții în vederea la îndeplinirea planului managerial propus

și validat;

o aprobӑ convențiile de colaborare încheiate în numele facultӑții cu alte insituții de

învӑțӑmânt, cercetare, proiectare, din mediul socio-economic, etc:

o aprobӑ regulamentele de organizare a activitӑții profesionale și științifice la

nivelul facultӑții;

o convoacӑ ori de câte ori este necesar și conduce ședințele de Birou și Consiliu

Profesoral;

Page 14: Licenta Gombos Irina, Gr 627 (1)

14

PRODECAN

Atribuții:

o coordoneazӑ activitatea de asigurare a calitӑții procesului de învӑțӑmânt ;

o urmӑrește îndeplinirea cerințelor referitoare la sistemul de evaluare a studenților ;

o avizeazӑ reactualizarea de câte ori este nevoie a Regulamentului studentului ;

o urmӑrește desfӑșurarea procesului de învӑțӑmânt și propune spre analizӑ

Consiliului Profesoral problemele rezultate din controlul direct sau din analizele

efectuate la nivelul catedrelor și departamentelor ;

o propune din partea facultӑții acordarea titlului de doctor în urma îndeplinirii

procedurilor legale în vigoare ;

o supune aprobӑrii Consiliului Profesoral scoaterea la concurs a posturilor didactice

în funcție de strategia de dezvoltare și de posibilitӑțile financiare ale facultӑții, în

urma analizelor efectuate la nivel de catedrӑ ;

o coordoneazӑ activitatea de întocmire a dosarelor de evaluare a programelor de

studiu acreditare;

o coordoneazӑ activitӑțile didactice de formare continuӑ ;

o asigurӑ buna desfӑșurare a concursurilor în Consiliul Facultӑții (promovare,

angajare, burse, etc.) referitoare la cadrele didactice ;

o coordoneazӑ activitӑțile de întocmire a planurilor de învӑțӑmânt;

o coordoneazӑ activitatea de întocmire a statelor de funcțiuni ale catedrelor ;

Page 15: Licenta Gombos Irina, Gr 627 (1)

15

o coordoneazӑ activitatea didactica susținutӑ în facultate de cӑtre cadre didactice ale

altor facultӑți/catedre ;

o coordoneazӑ susținerea 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ӑ urmӑrirea și implementarea sistemului de credite transferabile;

o urmӑrește editarea de materiale didactice (planul editorial al facultӑții).

o controleazӑ modul de desfӑșurare a activitӑților 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 urmӑrește îndeplinirea cerințelor referitoare la formarea deprinderilor și

aptitudinilor adecvate profesiei pentru care se pregӑtește studentul ;

o organizeazӑ activitӑți consacrate promovӑrii imaginii facultӑții și recrutӑrii de

candidați.

RECTOR

Atribuții:

o coordoneazӑ, supervizeazӑ și controleazӑ întreaga activitate din universitate și este

responsabil de calitatea și eficiența acesteia. Rectorul poate delega din atribuțiile

Page 16: Licenta Gombos Irina, Gr 627 (1)

16

sale prorectorilor și secretarului științific. El poate, de asemenea, retrage aceste

atribuții în cazul în care considerӑ cӑ delegarea lor nu mai este motivatӑ;

o este președintele Senatului, al Biroului Senatului și al Consiliului de Administrație al

Universitӑții. Rectorul supune întreaga sa activitate analizei Senatului Universitӑții;

o coordoneazӑ strategia evoluției Universitӑții pe termen scurt, mediu și lung. El

propune Senatului direcțiile prioritare de acțiune pentru realizarea obiectivelor

strategice;

o coordoneazӑ activitatea Departamentului de Cercetare Științificӑ, Departamentului

de Asigurarea Calitӑții, Biblioteca Centralӑ Universitarӑ, Biroul Audit Intern,

Serviciul Resurse Umane și Baze de Date, Oficiul Juridic, Departamentul de Protocol;

o reprezintӑ universitatea în relațiile cu persoane fizice sau juridice din afara

Universitӑții;

o asigurӑ prin întreaga sa activitate menținerea echilibrului congruent între facultӑți,

departamente și diversele componente administrative din universitate. El este

garantul existenței unui climat universitar caracterizat de echitate și transparențӑ;

o asigurӑ organizarea, în cele mai bune condiții, a controlului financiar preventiv, a

controlului operativ curent, a controlului financiar și a altor forme de control pe

care le considerӑ necesare pentru desfӑșurarea fӑrӑ obturații a întregii activitӑți

universitare.

o coordoneazӑ și supervizeazӑ procesul de reformӑ universitarӑ;

o reprezintӑ universitatea, direct sau prin delegat, în relațiile cu universitӑți sau

instituții non-academice, pe plan național și internațional.

o dispune de toate atribuțiile ce-i sunt conferite de legile și regulamentele în vigoare

(ordonator de credite, încadrӑri și eliberӑri de personal, înmatriculӑri/

exmatriculӑri, numirea comisiilor de concurs, numirea comisiilor de doctorat).

Page 17: Licenta Gombos Irina, Gr 627 (1)

17

SECRETAR ȘTIINȚIFIC

Atribuții:

o avizeazӑ prezentarea în fața Consiliului Profesoral de cӑtre prodecanul de resort a

rezultatelor obținute în activitatea de evaluare a cadrelor didactice;

o se implicӑ în activitatea de promovare a imaginii facultӑții;

o avizeazӑ publicarea de ghiduri, pliante, etc. pentru promovarea imaginii

Universitӑții;

o urmӑrește și avizeazӑ activitatea de colaborare cu Biblioteca Universitӑții;

o pregӑtește reuniunile Consiliului Profesoral al facultӑții;

o stabilește sub conducerea decanului, activitӑțile Consiliului și Biroului Consiliului

Facultӑții și urmӑrește aplicarea hotӑrârilor acestora;

o supune dezbaterii Consiliului Profesoral propunerile catedrelor, departamentelor,

Centrelor de Cercetare, serviciului administrativ;

o verificӑ respectarea reglementӑrilor în hotӑrârile catedrelor, departamentelor,

centrelor de cercetare, înaintate Consiliului Facultӑții;

o organizeazӑ alegerile organismelor de conducere din facultate în conformitate cu

prevederile regulamentului alegerilor, ale Cartei Universitӑții și supune aprobӑrii CP

modul de organizare;

o asigurӑ desfӑșurarea concursurilor pentru ocuparea posturilor didactice;

o înainteazӑ propunerile Consiliului Facultӑții la Senatul Universitӑții și Rectorat;

o transmite hotӑrârile Consiliului Facultӑții catedrelor, departemantelor și Centrelor

de Cercetare;

o asigurӑ funcționarea regulamentarӑ a Consiliului Profesoral;

Page 18: Licenta Gombos Irina, Gr 627 (1)

18

o coordoneazӑ activitatea de creștere a vizibilitӑții facultӑții în plan național și

internațional;

o stabilește sub conducerea decanului activitӑțile Consiliului și Biroului Consiliului

Facultӑții și urmӑrește aplicarea hotӑrârilor acestora;

o asigurӑ buna funcționare a comisiilor Consiliului Facultӑții prin programarea

tematicilor, convocarea membrilor comisiei în ședințe de lucru și prezentarea

rezultatelor în fața Consiliului Facultӑții;

1.4 Studiul sistemului condus

Facultatea reprezintӑ unitatea funcționala de bazӑ a instituției de învӑțӑmânt superior și are

în componențӑ una sau mai multe secții de specialitate. Facultatea este organizatӑ pe

departamente și catedre.

Departamentele Universitӑții Româno-Americane sunt urmӑtoarele: Departament Limbi

Strӑine, Departament Cercetare, Departament Relații Internaționale, Centrul de Studii

Româno-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 atribuțiile câtorva departamente din cadrul Universitӑții :

Departament Limbi Strӑine:

o desfӑșurarea la standarde înalte și de calitate a procesului didactic de predare a

limbilor strӑine;

o elaborarea programelor analitice la limbile strӑine;

o elaborarea și editarea cursurilor necesare predӑrii limbilor strӑine în Universitate;

o participarea la evaluarea activitӑții cadrelor didactice care predau limbi strӑine;

Page 19: Licenta Gombos Irina, Gr 627 (1)

19

o asigurarea perfecționӑrii continue a metodelor de predare a limbilor strӑine,

precum și a pregӑtirii profesionale a cadrelor didactice care predau limbile strӑine;

o sprijinirea realizӑrii activitӑții de cercetare științificӑ înscrisӑ în programele de

cercetare ale catedrelor, facultӑților și ale Universitӑții;

o organizarea de cursuri intensive de predare a limbilor strӑine pentru studenții și

personalul administrativ din Universitate, la solicitarea acestora;

o controlul la cursurile și seminariile de predare a limbilor strӑine;

o analiza rezultatelor obținute la examenele de limbi strӑine;

o efectuarea consultațiilor la disciplinele de limbi strӑine;

o participarea în comisiile de selectare și de concurs ale studenților pentru bursele de

studii în strӑinӑtate;

o participarea la acțiunile organizate de Universitate și de cӑtre facultӑțile de care

aparțin cadrele didactice din componența Departamentului de Limbi Strӑine;

o participarea la asigurarea bazei materiale a Departamentului de Limbi Strӑine (prin

sponsorizӑri, donații, contribuții personale);

o prezentarea de rapoarte, informӑri, programe cu privire la activitatea

Departamentului de Limbi Strӑine cӑtre conducerile facultӑților și Universitӑții;

o asigurarea legaturilor de colaborare cu instituții și organisme specializate în

promovarea excelenței în limbile strӑine, din țarӑ și strӑinӑtate (British Council,

Institutul Cervantes etc.);

o participarea la programe Internaționale și europene de realizare a excelenței în

limbile strӑine și de colaborare în acest scop, cu universitӑți indigene și strӑine.

Page 20: Licenta Gombos Irina, Gr 627 (1)

20

Departament IT:

Membrii acestui serviciu asigurӑ funcționarea unei infrastructuri IT extinse, ce cuprinde în

ansamblul sӑu o multitudine de elemente:

o întreținerea, supravegherea și dezvoltarea conform necesitӑților funcționale ale

unei rețele de calculatoare cu câteva sute de stații interconectate

o conexiune la internet prin fibrӑ opticӑ

o managementul accesului și traficului atât în cadrul rețelei intranet cât și prin

conexiunea la internet

o întreținerea și modernizarea infrastructurii hardware a laboratoarelor de

Informaticӑ din cadrul Universitӑții

o instalarea, configurarea și întreținerea aplicațiilor software utilizate în cadrul

procesului de învӑțӑmânt

o întreținerea și dezvoltarea infrastructurii hardware din cadrul serviciilor

administrative ale Universitӑții

o dezvoltarea și realizarea de materiale promoționale și informative privind

activitatea Universitӑții

o întreținerea și exploatarea mijloacelor multimedia din cadrul spațiilor de

învӑțӑmânt

o asigurarea de suport tehnic permanent în ceea ce privește utilizarea echipamentelor

hardware și a aplicațiilor software pentru toate serviciile funcționale ale

Universitӑții

o întreținerea, managementul și dezvoltarea permanenta a rețelei de comunicații

telefonice

o expertiza și consilierea tehnicӑ în cazurile achizițiilor de echipamente din sfera IT

Page 21: Licenta Gombos Irina, Gr 627 (1)

21

o realizarea, editarea și utilizarea materialelor foto-video privind evenimentele și

activitӑțile din cadrul Universitӑții

o dezvoltarea și utilizarea de aplicații software proprii pentru rezolvarea și

automatizarea punctualӑ a unor sarcini ale diferitelor servicii funcționale ale

Universitӑții

o instalarea, întreținerea și dezvoltarea sistemelor de securitate utilizate în cadrul

campusului universitar.

Centrul de Studii și Documentare Europeanӑ:

o urmӑrirea, evaluarea și achiziționarea de materiale de specialitate din România și

din strӑinӑtate, necesare pentru derularea activitӑții de cercetare sau procesului

didactic în cadrul Universitӑții Româno-Americane;

o realizarea de studii și analize în domeniul integrӑrii economice europene; (proiecte

de cercetare finanțate din programele naționale și internaționale, contracte cu

companii, articole de specialitate etc.)

o organizarea de manifestӑri științifice: simpozioane, conferințe, mese rotunde,

dezbateri;

o realizarea de contacte cu potențiali parteneri din strӑinӑtate: Universitӑți, Centre de

Cercetare, Instituții Europene, Centre de formare etc.

o realizarea de demersuri pentru întӑrirea legaturilor cu instituții de profil din

România în vederea realizӑrii activitӑților de cercetare și organizare de evenimente

dedicate integrӑrii economice europene; (Institutul de Economie Mondiala și cu

Institutul European din România)

o editarea revistei Universitӑții în limba englezӑ (Romanian Economic and Business

Review);

Page 22: Licenta Gombos Irina, Gr 627 (1)

22

o organizarea de activitӑți științifice în cadrul proiectelor cu finanțare Europeanӑ

pentru a facilita buna derulare a acestora dar și un grad de diseminare a rezultatelor

cât mai ridicat.

Organigrama conducerii academice şi administrative a universităţii

Page 23: Licenta Gombos Irina, Gr 627 (1)

23

Organigrama facultӑții

1.5 Studiul sistemului informațional

Sistemul informațional al managementului universitar reprezintӑ ansamblul informațiilor,

fluxurilor informaționale, procedurilor și mijloacelor de tratare a informațiilor, menite sӑ

contribuie la realizarea obiectivelor Universitӑții. Din definiție rezultӑ cӑ sistemul

informațional al managementului universitar este alcӑtuit din mai multe elemente corelate

între ele: date și informații, fluxuri informaționale, proceduri și mijloace de tratare

(prelucrare) a informațiilor.

Tabelul de mai jos ar putea fi considerat un punct de plecare în analiza sistemului actual al

universitӑții, sistem informațional relevant pentru tema acestei lucrӑri.

Page 24: Licenta Gombos Irina, Gr 627 (1)

24

Descrierea funcției - fișa personalӑ a studentului

- situația școlarӑ pe fiecare semestru

- situația la examene

Furnizorii de date - studenții – fișa personalӑ

- licee – foaia matricolӑ

- cadru didactic – situația școlarӑ

- secretariat – rezultat examene

Beneficiarii datelor - cadre didactice

- studenți

- compartiment secretariat, contabilitate

- decanat, facultate

Tipuri de date necesare

realizӑrii funcției

a. Date personale

- nume și prenume

- data înscrierii

- unitatea de învӑțӑmânt de la care provine –

pentru evidența unitӑților care furnizeazӑ

studenți la înscriere, prognoza dinamicii

numӑrului de studenți și posturi didactice

- documente prezentate la înscriere – pentru

evidența actelor de studii și întocmirea fișei

personale

- media de absolvire a liceului

- limbi strӑine studiate

- numӑr matricol

- data și locul nașterii, sex, evidența militarӑ,

situații statistice, examene

- act identitate – evidența militarӑ etc.

- naționalitate

- cetӑțenie

-domiciliu stabil/flotant

- telefon

- pӑrinți –nume și prenume-, profesie, loc de

Page 25: Licenta Gombos Irina, Gr 627 (1)

25

muncӑ

- starea sӑnӑtӑții

- observații

b. Situația școlarӑ

- numӑr matricol/legitimație informatizatӑ

- facultatea

- an de studii

- grupa

- semestrul- disciplina

- media

- media semestrialӑ și anualӑ

- situația școlarӑ: promovat, repetent,

exmatriculat, situație neîncheiata

- numӑr absențe

- bursier (tip bursa, perioada acordatӑ, suma)

- evidențieri și sancțiuni

c. Situația la examene

- tip examen

- sesiune

- tip probӑ

- disciplina

- media/nota obținutӑ

Mod de folosire a datelor

- pentru construirea grupelor și seriilor

- activitatea cadrului didactic

- calcularea bugetului

- adeverințe studenți

- evidența militarӑ

- organizare examene

- evidența burselor

- evidența studenților strӑini

- situații statistice

- evidențӑ acte studii

Page 26: Licenta Gombos Irina, Gr 627 (1)

26

- evidența rezultatelor la examene

- comunicӑri oficiale

- evaluare a instituției de învӑțӑmânt

Mod de colectare a datelor

- foaia matricolӑ

- fișa personalӑ

- catalog

Frecvența efectuӑrii funcției La înscrierea studenților și de câte ori apar

modificӑri

1.6 Analiza criticӑ a sistemului existent

În sistemul actual, Universitatea Româno-Americanӑ ne oferӑ acces la diferite informații ale

acesteia prin site-ul existent (www.rau.ro), deasemenea la datele studenților înscriși la

facultӑțile din cadrul Universitӑții printr-un catalog online. Aceasta idee de vizualizare a

progresului academic al studenților este una inovativa, dar ca orice concept nou existӑ atât

avantaje, cât și dezavantaje.

În momentul în care un student dorește sa fie direcționat cӑtre 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 studenților înscriși la

facultatea respectivӑ. În dreptul fiecӑrui student este afișat anul universitar, grupa,

disciplina și notele. Dacӑ studentul dorește sӑ vizualizeze performanțele 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 atât notele lui cât și ale

celorlalți, lucru ce ar putea fi remediat prin crearea unei securizӑri, astfel încât studentul sӑ

poatӑ accesa numai informațiile sale. Prin aceastӑ lucrare se propun câteva modificӑri ale

sistemului actual.

Page 27: Licenta Gombos Irina, Gr 627 (1)

27

Cap. 2. PROIECTAREA DE ANSAMBLU A SISTEMULUI INFORMATIC

2.1 Obiectivele și oportunitatea aplicației informatice

Proiectarea web ca disciplinӑ științificӑ este influențatӑ de dezvoltarea aplicațiilor web, ele

reprezentând un nou domeniu de aplicații cu propriile sale provocӑri asupra dezvoltӑrii

software-ului.

World Wide Web are o influențӑ enormӑ și permanentӑ asupra vieții noastre. Economia,

industria, educația, sӑnӑtatea, administrația publicӑ și distracția reprezintӑ componente ale

vieții noastre care nu au fost pӑtrunse de World Wide Web. Motivul acestei omniprezențe

constӑ în special în natura web-ului, caracterizatӑ prin disponibilitatea globalӑ și

permanentӑ dar și prin accesul omogen la informațiile distribuite la nivel global produse de

indivizi sub forma paginilor web.

Inițial, web-ul a fost proiectat ca un mediu pur informațional, în prezent evoluând într-un

mediu al aplicației. Aplicațiile web de astӑzi sunt rapide și reprezintӑ sisteme software

complexe care oferӑ servicii interactive și personabilizabile accesibile prin intermediul

diferitelor dispozitive; ele oferӑ posibilitatea realizӑrii tranzacțiilor între utilizatori și de

obicei stocheazӑ datele într-o bazӑ de date. Aplicațiile web sunt soluții specializate, cu

funcționalitӑți ridicate și atractive. Ele asigurӑ o mai bunӑ relație și interactivitate cu

clienții. Marele avantaj al aplicațiilor online este integritatea și posibilitatea de a le ajusta

în funcție de particularitӑțile și nevoile clientului. Totodatӑ ele pot foarte ușor fi combinate,

funcționând simultan, pentru a spori eficiența.

“RAUGradebook” este o aplicație care poate fi dezvoltatӑ în orice organizație, atât într-o

companie de succes cât și într-o întreprindere noua pe piața economicӑ. Crearea acesteia

ajutӑ la dezvoltarea acestei întreprinderi și este relativ ușor de proiectat. Permite

utilizatorilor un acces mai ușor și mai sigur la o bazӑ de date, dar și la anumite informații pe

care serverul le permite, de la orice calculator.

Page 28: Licenta Gombos Irina, Gr 627 (1)

28

2.2 Locul aplicației informatice în sistem

Oricine are nevoie de informații precise privind progresul studenților. Tehnologia

interactivӑ modernӑ este o componentӑ vitalӑ în ajutarea studenților și a profesorilor sӑ fie

informați și ținuți la curent cu toate aceste evoluții. Acest lucru poate fi realizat folosind un

catalog online.

Un catalog online este o metodӑ rapidӑ și eficientӑ atât pentru studenți cât și pentru

profesori în vederea interacționӑrii acestora, pentru obținerea unei experiențe

educaționale pozitive. Profesorii înregistreazӑ note, urmând ca studenții sӑ vizualizeze

rezultatele finale. Toate pӑrțile sunt implicate și informate în legӑturӑ cu starea curentӑ a

mediului de lucru și a întregului progres.

Aplicația pe care am dezvoltat-o aduce o altӑ perspectivӑ în ceea ce privește evaluarea

studenților. Prin aceasta se faciliteazӑ sarcina profesorilor, întrucât li-i se pune la dispoziție

o aplicație ușor de manevrat și care ar putea fi accesatӑ de oriunde, indiferent unde te afli la

momentul respectiv. Catalogul oferӑ studenților un feedback rapid al progresului lor

academic, iar profesorii au, practic, acces la un raport imediat al evoluției fiecӑrui student.

Aplicația dezvoltatӑ are atât avantaje cât și dezavantaje. Printre avantaje s-ar numӑra

urmӑtoarele: securitate, întrucât fiecare student/profesor și administrator beneficiazӑ de

propriul user-name și parolӑ, așadar un student nu ar putea accesa alte pagini decât cele

care îi sunt permise, nu ar avea drept de modificare asupra notelor sale, flexibilitate, pentru

cӑ oricine poate accesa site-ul oriunde și oricând, accesul este permis simultan de pe mai

multe calculatoare, informațiile sunt mereu actualizate, administratorul fiind cel care

întreține aplicația, gestioneazӑ studenții, profesorii, precum și alte date ale acestora, dar și

simplitate, aplicația nu este una complexӑ și poate fi utilizatӑ de orice persoanӑ, indiferent

de gradul de cunoaștere al funcționӑrii calculatorului, internet-ului.

Page 29: Licenta Gombos Irina, Gr 627 (1)

29

Imbunӑtӑțiri în ceea ce privește aplicația pe care am dezvoltat-o ar putea fi aduse, întrucât

ar putea exista o modalitate prin care studenții și profesorii sӑ poatӑ comunica ( chat ), ar

putea fi postate de cӑtre profesori și temele studenților, ei putând sa acceseze o anumitӑ

paginӑ a grupului lor unde s-ar putea observa cerințele temei respective. Deasemenea, o

astfel de aplicație ar putea prezenta un anumit risc, în sensul cӑ un hacker ar avea multiple

posibilitӑți de spargere a codului aplicației dezvoltate, rezultatul acesta ducând la

consecințe, întrucât va putea fi realizatӑ modificarea oricӑrei informații de pe orice paginӑ.

Din cauza faptului cӑ este o aplicație simplӑ, nu are integrate foarte multe elemente, dar ea

se va putea transforma într-o aplicație mult mai complexӑ în viitor.

2.3 Alegerea tehnologiei de prelucrare (stabilirea platformei hardware, software și de

comunicatii)

Pentru aplicație am folosit SQL Server Management Studio 2008, prin intermediul cӑruia am

creat o bazӑ de date numitӑ “RAUDatabase”, în care am definit tabelele de care aveam

nevoie pentru implementarea lor în aplicație, “RAUGradebook”, stabilind cheile primare și

legӑturile aferente. Tabele au fost populate cu informații legate de studenți, profesori,

materii și note. Studenților și profesorilor le-am atribuit coduri de utilizator și roluri,

pentru a stabili diferite privilegii pentru fiecare client, care dorește sӑ se autentifice în

aplicație.

Folosind Microsoft Visual Web Developer 2008 am realizat interfața paginilor web, prin care

user-ul comunicӑ cu server-ul, trimițând instrucțiuni pentru crearea, vizualizarea,

modificarea sau ștergerea datelor din baza de date existentӑ.

Platforma .NET este o platformӑ pe care se vor crea noile generații 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 aplicații, pornind de la cele Consola, la XML

Web services, Web Forms și aplicații bazate pe HTML, Windows Forms , Windows services,

Component library.

Page 30: Licenta Gombos Irina, Gr 627 (1)

30

Microsoft .NET Framework este o colecție cuprinzӑtoare de clase, care furnizeazӑ

programatorilor aproape tot ce le trebuie pentru a scrie aplicații pentru internet, web și

Windows. .NET se adreseazӑ cu predilecție domeniului programӑrii 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 numӑr de editori bogat pentru a oferi acces la SQL

Server pentru dezvoltatorii și administratorii de toate nivelurile de calificare. SQL Server

poate stoca cantitӑți mari de date a unor useri simultani, prin aceasta distingându-se de

Microsoft Access, creat ca o bazӑ de date pentru un user individual.

Visual Basic și C#

Atât Visual Basic cât și C# sunt axate pe componenta de interfațӑ a programului,

programatorul putând realiza cu ușurințӑ interfețe standardizate de tip Windows (ferestre,

butoane, liste etc.) fӑrӑ a fi nevoie de scrierea de cod pentru acest lucru. Dețin o bibliotecӑ

de componente vizuale (liste, calendare, meniuri etc.) a cӑror componente (graficӑ și

funcționalӑ) sunt deja implementate, având posibilitatea ca programatorul sӑ introducӑ și

sa foloseascӑ componente proprii sau realizate de alți programatori.

Visual Basic este un limbaj orientat pe obiecte, având deja implementatӑ o listӑ de clase cu

utilizare generalӑ. Odatӑ cu apariția versiunii 7, adicӑ odatӑ cu apariția tehnologiei .NET,

Page 31: Licenta Gombos Irina, Gr 627 (1)

31

VB poate utiliza și crea și componente .NET cu toate avantajele pe care acestea le aduc. VB

este un limbaj de nivel înalt având implementate mai multe niveluri de abstractizare a

dezvoltӑrii unei aplicații 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 intâi tradus

într-un limbaj de nivel inferior și dupӑ aceea executat. Acest lucru are avantaje (cum ar fi

rularea fӑrӑ 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

aplicații 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 puțin 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 execuție a aplicațiilor distribuite);

- este un limbaj bazat pe metodologia modernӑ orientatӑ obiect și când a fost

proiectatӑ Microsoft a învӑțat învӑțat din experiența tuturor celorlalte limbaje similare care

au fost folosite de când a apӑrut 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ӑ, putând fi folosite la crearea de programe

simple, educaționale dar și la crearea de aplicații complexe. Teoretic oricine (mai mult sau

mai puțin experimentat) poate utiliza VB sau C#, pentru cӑ sunt limbaje de programare

simple.

Page 32: Licenta Gombos Irina, Gr 627 (1)

32

2.4 Modelarea datelor și modelarea prelucrӑrilor

O ramurӑ foarte importantӑ în proiectarea unei aplicații o reprezintӑ modelarea datelor și a

felului în care ele relaționeazӑ între ele. Tehnologia de specialitate a stabilit mai multe

modalitӑți 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 lângӑ activitӑțile legate de formularea problemei,

de analiza acesteia în vederea gӑsirii algoritmului de rezolvare și o altӑ activitate, deosebit

de importantӑ, legatӑ de organizarea datelor, în concordanțӑ atât cu caracteristicile

tehnice ale echipamentelor de calcul, cât și cu cerințele de prelucrare. Acestea trebuie sӑ fie

structurate astfel încât prin codificarea și apoi memorarea lor pe suporți tehnici sӑ permitӑ

prelucrӑrile necesare, stocarea și regӑsirea ulterioarӑ a datelor dupӑ criteriile stabilite.

Legӑturile și relațiile 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 definește reprezentarea modului de organizare a datelor

independent de tehnologiile deprelucrare a acestora și fӑrӑ a acorda o atenție deosebitӑ

calitӑții modelului datelor. Modelul conceptual este prezentat prin intermediul

diagramelor Entitate Asociere și evidențiazӑ reprezentarea logicӑ, detaliatӑ a entitӑților, a

asocierilor și a datelor elementare din cadrul sistemului obiect. Procesul de modelare

logicӑ a datelor se desfӑșoarӑ în paralel cu celelalte activitӑți de proiectare, cum sunt

proiectarea rapoartelor, a machetelor de introducere a datelor, a interfeței.

Page 33: Licenta Gombos Irina, Gr 627 (1)

33

2.5 Diagrama Entitate-Asociere

Baza de date pe care am implementat-o se numește RAUDatabase, pe care am creat-o în

SQL Server 2008 și conține patru tabele: Students, Professors, Subjects și Marks.

Capatele liniilor indicӑ dacӑ relația este one-to-one sau one-to-many. Dacӑ relația are o

cheie într-un capӑt și forma de 8 în celӑlalt capӑt, relația este one-to-many. Dacӑ linia are o

cheie în ambele capete atunci relația este one-to-one.

Page 34: Licenta Gombos Irina, Gr 627 (1)

34

2.6 Stabilirea colecțiilor de date

Cheia primarӑ a tabelului “Students” o reprezintӑ “Student_ID”, numӑrul de înmatriculare al

fiecӑrui student. Câmpul “User_Name” va face legӑtura cu baza de date a user-ilor

(ASPNETDB).

Cheia primarӑ a tabelului “Professors” o constituie “Professor_ID”, reprezentând un cod

unic pentru fiecare profesor. Câmpul “User_Name” va face legӑtura cu baza de date a user-

ilor (ASPNETDB).

Cheia primarӑ a tabelului “Subjects” este “Subject_ID”. “ Professor_ID” este o cheie strӑinӑ și

se referӑ la cheia primarӑ a tabelului “Professors”. Relația pe care am stabilit-o este de One-

to-One, întrucât un profesor nu poate sa predea decât o singurӑ materie, iar materia nu

poate fi predatӑ decât 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 urmӑtoarele chei:

- cheie strӑinӑ, definind o relație One-to-Many între “Student_ID” și cheia primarӑ a

tabelului “Students”;

- cheie strӑinӑ, definind o relație One-to-Many între “Subject_ID” și cheia primarӑ a

tabelului “Subjects”.

Page 35: Licenta Gombos Irina, Gr 627 (1)

35

2.7 Estimarea necesarului de resurse și a calendarului de realizare

Dezvoltarea directӑ de sisteme informatice se dovedește o întreprindere riscantӑ dacӑ nu

este precedatӑ de activitӑți care au menirea de a impune o echipӑ, o tehnologie unitarӑ de

analizӑ, design, dezvoltare, implementare, exploatare și mentenanța, aspecte care trebuie

luate în considerare la efectuarea unui audit de sistem informatic. Sistemele informatice

sunt construcții complexe necesitând:

- fonduri mari, uriașe în anumite cazuri;

- echipe complexe și stabile de analiști, designeri, programatori și personal care se ocupӑ de

testare, implementare și mentenanțӑ;

- stabilirea obiectivelor;

- definirea unei strategii de dezvoltare, exploatare și mentenanțӑ;

- achiziționarea de echipamente, instrumente necesare realizӑrii de prelucrӑri, de

conexiuni și dezvoltӑrii 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ӑ generație, 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 aplicația va fi proiectatӑ pentru platforma Windows), alӑturi de

Microsoft SQL Server 2008 și de Microsoft Visual Web Developer 2008 Express Edition.

(întrucât cele douӑ programe se pot achiziționa gratuit am considerat doar prețul licenței

de Windows - Preț : 2 X 705 RON (200 $) = 1.410 RON)

Page 36: Licenta Gombos Irina, Gr 627 (1)

36

Resurse umane : un inginer proiectant pentru Baza de Date, pentru punerea la punct a

ieșirilor/intrӑrilor, un programator pentru modulele aplicației, realizarea aplicației ; acesta

va administra întregul sistem lunar, atât cât va fi necesar, pentru eventuale noi

îmbunӑtӑțiri 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 soluționate astfel încât, în

final, sӑ se obținӑ rezultatele scontate. Dar în timp ce toate procesele implicate se deruleazӑ

concomitent, obiectivul stabilit inițial, acela de a realiza un sistem informatic pentru

managementul companiei, rӑmâne nemodificat. Sunt situații în care chiar condițiile privind

termenele de predare rӑmân neschimbate. În cazul în care noile cerințe conduc la creșterea

semnificativa a complexitӑții produsului final – sistemul informatic pentru management -

se impune creșterea volumului investiției pentru a suplimenta resursele necesare

Page 37: Licenta Gombos Irina, Gr 627 (1)

37

dezvoltӑrii unui volum mai mare de activitӑți. Creșterea volumului de activitӑți care se

deruleazӑ în paralel impune noi abordӑri la nivelul concepției sistemului informatic.

Realizarea unui sistem informatic are menirea de a sprijini actul decizional la toate

nivelurile. Sporul de informație, calitatea acesteia, promptitudinea cu care se obține sunt

argumente puternice pentru a determina saltul calitativ pe care îl presupune societatea

bazatӑ pe cunoaștere.

Din aceste considerente, implementarea unui sistem informatic trebuie sӑ genereze efecte

pozitive atât pentru utilizatorii sӑi, cât mai ales, pentru beneficiarii direcți ai informației

prelucrate. Pentru a se obține acest deziderat, în procesul de elaborare este necesarӑ

aplicarea tuturor cerințelor privind managementul calitӑții sistemului informatic. De

asemenea, este necesar sӑ se realizeze auditul sistemului informatic pentru a se obține

garanția cӑ acesta realizeazӑ corect și complet prelucrӑrile pentru care a fost proiectat, iar

orice combinație de date, alta decât cea corectӑ și completӑ, este semnalatӑ și nu este

generatoare de efecte colaterale pe termen mediu și lung.

Page 38: Licenta Gombos Irina, Gr 627 (1)

38

Cap. 3. PROIECTAREA DE DETALIU A APLICAȚIEI INFORMATICE

3.1 Definirea obiectivelor aplicației informatice

În acest capitol voi descrie funcționalitatea aplicației din punctul de vedere al user-ului.

Prima pagina a aplicației “RAUGradebook” poate fi vizualizatӑ de oricine acceseazӑ site-ul.

Conține informații menite sӑ ajute user-ul sӑ se logheze: douӑ câmpuri, unul în care se

introduce user-ul persoanei care dorește sӑ se autentifice în aplicație, respectiv parola

acestuia. La început, user-ii au aceeași parolӑ ca user name-ul lor.

În momentul în care un user s-a autentificat cu succes, informația care va fi afișatӑ, va fi în

funcție de rolul pe care l-am atribuit în baza de date (Student, Professor, Administrator). El

va fi direcționat cӑtre o altӑ paginӑ dupӑ cum urmeazӑ:

Pagina Studentului

Dupӑ logarea studentului în aplicație, el este direcționat cӑtre o paginӑ, în care vor fi

explicate modificӑrile pe care le poate efectua, precum și informațiile la care are acces.

Pagina va afișa user name-ul studentului pe toatӑ durata logӑrii lui în aplicație, indiferent

pe ce paginӑ va naviga.

Dacӑ studentul alege sӑ își vizualizeze notele, va fi direcționat cӑtre pagina respectivӑ, unde

va fi afișat un tabel, care va conține numele materiei la care este înscris, profesorul care o

predӑ, respectiv departamentul din care face parte și nota studentului. Ultimul câmp 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.

Page 39: Licenta Gombos Irina, Gr 627 (1)

39

Studentul își poate schimba parola. Pentru ca acest lucru sӑ se poatӑ întâmpla, el va fi

direcționat cӑtre un formular, pe care îl va completa cu parola lui inițialӑ, iar apoi cu noua

sa parolӑ, urmând sӑ o confirme.

Pagina Profesorului

Asemӑnӑtor studentului, în momentul în care un profesor se va loga în aplicație, va fi

direcționat cӑtre o paginӑ în care îi vor fi explicate drepturile sale. User name-ul va rӑmâne

afișat pânӑ în momentul delogӑrii sale.

Profesorul va avea posibilitatea sӑ selecteze un student dintr-o listӑ predefinitӑ, cӑruia îi va

putea modifica sau adӑuga o notӑ la materia predatӑ. Dacӑ se dorește schimbarea parolei,

profesorul va avea și el acces la o nouӑ paginӑ, în care va fi necesar sa completeze cu parola

sa inițialӑ ș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 inițiale.

Administratorul, accesând pagina studenților, are posiblitatea sӑ vizualizeze o listӑ a

studenților care sunt înscriși la Universitatea Româno Americanӑ, precum și grupa din care

fac parte. El are dreptul sӑ adauge sau sӑ șteargӑ un student, dar și sӑ modifice informații

personale.

Spre deosebire de student, administratorul va putea sӑ modifice, pe lângӑ datele sale

precum adresa, numӑr de telefon etc, numele sau anul universitar. În momentul în care va

dori sӑ adauge un student nou, va fi direcționat cӑtre o nouӑ paginӑ. El va fi rugat sӑ

introducӑ informațiile acestuia, câmpurile fiind obligatorii sau opționale. Dupӑ ce va

completa datele respective, un nou student va fi creat, cu toate privilegiile unui student

Page 40: Licenta Gombos Irina, Gr 627 (1)

40

deja existent în baza de date. Aceleași modificӑri le poate aduce și unui profesor, el având la

dispoziție o listӑ actualizatӑ a profesorilor și posibilitatea sӑ adauge sau sӑ șteargӑ

informații personale, precum și sӑ schimbe materia pe care o predӑ la momentul actual,

respectiv departamentul acestuia. El va putea sӑ acceseze și pagina studenților, unde va

avea drept de modificare a notelor acestora.

3.2 Proiectarea logicӑ și fizicӑ a ieșirilor. 3.3 Proiectarea logicӑ și fizicӑ a intrӑrilor

Sistemul informațional al managementului universitar reprezintӑ ansamblul informațiilor,

fluxurilor informaționale, procedurilor și mijloacelor de tratare a informațiilor, menite sӑ

contribuie la realizarea obiectivelor universitӑții. Din definiție rezultӑ cӑ sistemul

informațional al managementului universitar este alcӑtuit din mai multe elemente corelate

între ele: date și informații; fluxuri informaționale; proceduri și mijloace de tratare

(prelucrare) a informațiilor.

Sistemul informațional universitar poate contribui la realizarea obiectivelor

învӑțӑmântului superior numai în condițiile în care sunt îndeplinite funcțiile specifice

spațiului universitar.

Având în vedere importanța acestor funcții specifice sistemului informațional am prezentat

o propunere de modelare care ar putea fi consideratӑ punct de plecare în analiza stadiului

existent al sistemului informațional al universitӑții.

Datele de intrare reprezintӑ documentele primare care circulӑ în cadrul fluxului

informațional al universitӑții. Studenții, furnizorii de date, se înscriu la Universitatea

Româno-Americanӑ prezentându-se cu anumite documente prin care atestӑ competențele

lor în anii anteriori: fișa personalӑ în care sunt afișate datele personale ale fiecӑrui student

în parte, aceasta servindu-i pentru identificare, fișa matricolӑ din care se poate observa

întreaga situație școlarӑ din anii precedenți, rezultatele distribuite pe ani școlari,

rezultatele la examenele susținute pânӑ în momentul actual.

Page 41: Licenta Gombos Irina, Gr 627 (1)

41

În urma unei analize a fișei studentului, datele lui personale sunt salvate într-o bazӑ de

date, el urmând sa fie repartizat într-o serie, respectiv grupӑ în cadrul unei facultӑți 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, situații cu rezultate pe care le

furnizeazӑ sistemul informațional compartimentelor de conducere: organizarea

examenelor, adeverințele pentru studenți, evidența burselor, a rezultatelor examenelor

ș.a.m.d. Aceste date finale, pe care universitatea le folosește, reprezintӑ datele de ieșire, iar

catalogul pe care îl propun în aceastӑ lucrare va reprezenta, asemeni foii matricole,

respectiv fișei personale a studentului, un mod de colectare a datelor pentru eventualele

statistici din cadrul întregii universitӑți.

3.4 Proiectarea sistemului de codificare a datelor

SQL Server 2008 este o soluție completӑ de management pentru analiza datelor și oferӑ o

platformӑ de Business Intelligence care faciliteazӑ utilizarea aplicațiilor 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ӑ

entitӑți:

entitatea server care cuprinde baza de date și utilitarele SQL Server;

entitatea client formatӑ din stațiile de lucru, de unde sunt lansate interogӑri, care se

proceseazӑ pe server, iar de aici se returneazӑ numai informațiile cerute.

Baza de date

SQL Server ajutӑ la stocarea, organizarea și extragerea informațiilor din cadrul unui volum

practic infinit de date.

Page 42: Licenta Gombos Irina, Gr 627 (1)

42

Bazele de date create în SQL Server pot fi integrate ușor cu alte tehnologii, cum ar fi C#,

ASP.Net sau chiar și tehnologii non-Microsoft. Ele reprezintӑ un ansamblu structurat de

date legate funcțional între ele. Sunt structuri omogene în care se pӑstreazӑ datele.

Din punct de vedere fizic, baza de date este o colecție de obiecte: tabele, diagrame, view-uri,

proceduri memorate etc.

SGBD (Sistemul de Gestiune a Bazelor de Date) este un ansamblu de programe

care asigurӑ interfața dintre utilizator și baza de date. Prin aceastӑ interfața se

realizeazӑ operațiile de creare, actualizare și consultare (adӑugare, ștergere,

modificare) a bazei de date.

ASP.NET

Lucrul cu baze de date reprezintӑ o componentӑ fundamentalӑ a oricӑrui 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 același timp

eficientizat bazat pe noi clase și obiecte, o nouӑ strategie de abordare a aplicațiilor web

care au ca nivel back-end o bazӑ de date, etc.

Mediul ASP.NET oferӑ dezvoltatorilor de aplicații web un set complet de controale pentru

afișarea informației. Complexitatea acestora derivӑ atât din numӑrul impresionant de

atribute pe care le posedӑ cât și din modul în care sunt integrate în platforma .NET. Din

punct de vedere al dificultӑții în utilizare, am putea spune cӑ este relativӑ, în sensul cӑ

variazӑ de la un nivel care nu implicӑ un volum mare de cod pânӑ la configurarea totalӑ a

acestora de cӑtre programator, în cazul aplicațiilor complexe.

Aspectul cel mai important al mediului ASP.NET îl reprezintӑ integrarea conceptelor și

tehnicilor folosite într-un model de programare. Astfel realizarea unei aplicații web, bazatӑ

Page 43: Licenta Gombos Irina, Gr 627 (1)

43

pe formulare web implicӑ folosirea acelorași 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

conține 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,

Page 44: Licenta Gombos Irina, Gr 627 (1)

44

[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 conține o cheie primarӑ, “Student_ID”, acest câmp reprezentând numӑrul

de înmatriculare, și de fiecare datӑ când un student va fi adӑugat, valoarea câmpului

Student_ID se va calcula dupӑ formula MAX(Student_ID)+1.

Page 45: Licenta Gombos Irina, Gr 627 (1)

45

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 conține o cheie primarӑ, “Professor_ID”, acest câmp reprezentând un

numӑr unic al fiecӑrui profesor. De fiecare datӑ când un profesor va fi adӑugat, valoarea

Page 46: Licenta Gombos Irina, Gr 627 (1)

46

câmpului Professor_ID nu va lua automat urmӑtoarea 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

Page 47: Licenta Gombos Irina, Gr 627 (1)

47

)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

strӑinӑ denumitӑ “Professor_ID” care face legӑtura cu tabelul Professors, tabel ce are cheie

primarӑ câmpul “Professor_ID”.

Page 48: Licenta Gombos Irina, Gr 627 (1)

48

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])

Page 49: Licenta Gombos Irina, Gr 627 (1)

49

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 înlocuiește cu succes o cheie primarӑ.

Tabelul conține urmӑtoarele chei:

- cheie strӑinӑ, ce definește o relație One-To-Many între “Student_ID” și cheia primarӑ

a tabelului Students, “Student_ID”;

- cheie strӑinӑ, ce definește o relație One-To-Many între “Subject_ID” și cheia primarӑ

a tabelului Subjects, “Subject_ID”;

3.6 Proiectarea interfeței aplicației

Multe aplicații distribuite salveazӑ, prezintӑ și proceseazӑ date și informații utilizând 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 cӑrora aplicațiile .NET se

pot conecta la bazele de date sau surse de date (baze de date aflate pe servere sau fișiere

locale), pot executa comenzi (în regim normal sau tranzacțional) sau gestiona și procesa

date în mod deconectat (local în aplicație).

Page 50: Licenta Gombos Irina, Gr 627 (1)

50

ADO.NET folosește o arhitecturӑ structuratӑ pe mai multe nivele pentru a integra diferitele

tipuri de baze și surse de date. În acest scop se folosește 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, execuția de comenzi SQL și a prelua rezulatele comenzilor. Cu

alte cuvinte, un provider oferӑ o interfațӑ între sursa de date și aplicație.

În .NET Framework sunt oferiți urmӑtorii provideri:

• SQL Server

• OLE DB

• Oracle

• ODBC

Modelul simplificat al arhitecturii ADO.NET poate fi urmӑrit în figura urmӑtoare:

Page 51: Licenta Gombos Irina, Gr 627 (1)

51

În momentul în care vrem sӑ utilizӑm o anumitӑ sursӑ de date pentru o aplicație este

important sa utilizӑm provider-ul potrivit. În primul rând trebuie gӑsit 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ӑ. Funcția 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 aplicația mea “RAU Gradebook” am folosit aspnetdb pentru crearea rolurilor

Student, Professor, Secretary, dar și pentru:

· Crearea și ștergerea user-ilor cu un rol specific;

· Afișarea user name-ului și statusul de logare;

· Schimbarea parolei user-ului.

Conexiunea dintre baza de date și RAUDatabase este realizatӑ prin user name-uri (câmpul

User_Name) cu rolurile de Student și Professor, care vor avea aceeași valoare din câmpul

User-Name din tabelele Students și Professors.

Page 52: Licenta Gombos Irina, Gr 627 (1)

52

Diagrama care reprezintӑ principalele tabele din ASPNETDB folosite în aplicație este:

CREAREA ROLURILOR: Student, Professor, Administrator

Pentru a reduce munca din cauza implementӑrii 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 întrucât

stocheazӑ un cookie în browser-ul user-ului, reținând statusul celui ce s-a logat pe durata

navigӑrii pe alte pagini. Clasa FormsAuthentication oferӑ metode pentru crearea unor astfel

de cookie-uri pentru logarea în aplicație, 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 rӑmâne în

continuare sarcina de a dispune în serie informațiile conturilor, de a crea pagina de logare

și de scriere a codului folosind clasa FormsAuthentication, de a crea pagina de delogare din

Page 53: Licenta Gombos Irina, Gr 627 (1)

53

aplicație, o nouӑ paginӑ pentru crearea unui cont nou, pentru administrarea conturilor

ș.a.m.d.

Pentru crearea de roluri în aplicația 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 opțiunea pentru folosirea internetului, urmӑtoarea linie a fost

adӑugatӑ în pagina web.config:

<authentication mode="Forms" />

Page 54: Licenta Gombos Irina, Gr 627 (1)

54

SQLMembershipProvider stocheazӑ informații ale conturilor în douӑ tabele:

aspnet_Users – conține o înregistrare pentru fiecare user în parte, stocând esențialul;

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

esențiale asociate cu fiecare user: email, parolӑ, o întrebare și un rӑspuns de

securitare etc.

Dupӑ validarea rolurilor (codul <roleManager enabled="true" /> a fost adӑugat în pagina

web.config), am creat rolurile pentru student, profesor și administrator.

Page 55: Licenta Gombos Irina, Gr 627 (1)

55

DESGIN-UL APLICAȚIEI

Pentru crearea interfeței aplicației am împӑrțit paginile web în patru pӑrți: Default,

Student, Professor, Administrator, ele fiind astfel structurate pentru o mai bunӑ organizare.

Pagina principalӑ conține date despre studenți, profesori și user name-urile lor. Pagina are

ca scop autentificarea user-ilor.

Student conține:

· Student’s Page.aspx : informeazӑ studentul cu privire la drepturile sale;

· Student’s Marks.aspx : afișeazӑ notele studentului logat;

· Student’s Info.aspx : afișeazӑ datele personale ale studentului și permite modificarea

anumitor câmpuri;

· Student’s Change Password.aspx : pagina destinatӑ schimbӑrii parolei;

Professor conține :

· Professor’s Page.aspx : informeazӑ profesorul în legӑtura cu drepturile sale;

· Professor’s Marks.aspx: permite adӑugarea sau modificarea notelor studenților care

urmeazӑ un curs predat de el;

· My Marks.aspx: permite vizualizarea studenților, inclusiv a notelor lor, din anul,

respectiv grupele care urmeazӑ un curs predat de el, profesorul putând sӑ exporte

informațiile și într-un Excel;

· Professor’s Change Password.aspx : pagina destinatӑ schimbӑrii parolei;

Adminstrator conține :

· Administrator’s Page.aspx : informeazӑ administratorul despre drepturile sale;

· Administrator Students.aspx : afișeazӑ datele studenților, care fac parte dintr-o grupӑ

anumitӑ și redirecționeazӑ administratorul cӑtre urmӑtoarele pagini:

Page 56: Licenta Gombos Irina, Gr 627 (1)

56

- 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 studenților;

- Delete Student.aspx : permite ștergerea unui student și odatӑ cu acesta și user-ul cu rolul

de student;

- Year II III.aspx : permite transferul studenților într-un an superior.

· Administrator Professors.aspx : afișeazӑ datele profesorilor structurați pe

departamente și redirecționeazӑ administratorul cӑtre urmӑtoarele 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 : afișeazӑ date privind materiile studiate, ele fiind

structurate pe grupe și redirecționeazӑ administratorul cӑtre urmӑtoarele pagini:

- Add Subject.aspx : permite user-ului sӑ adauge o materie în catalog și o atribuie

studenților 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ӑ schimbӑrii parolei;

Page 57: Licenta Gombos Irina, Gr 627 (1)

57

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 informațiile sunt conținute în mai multe “div”-uri (<div></div>)

Am inserat:

- logo-ul facultӑții,

<img alt="" src="sigla.jpg" style="width: 87px; height: 92px; text-align:

center;" />

- o imagine a facultӑții

<img alt="" src="facultatea.jpg" style="width: 478px; height: 230px; float:

left;" />

Page 58: Licenta Gombos Irina, Gr 627 (1)

58

Și câteva 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 Parola este ascunsӑ și user-ul are

introducӑ user name-ul și parola. posibilitatea sa fie reținut la logare.

Câmpurile sunt obligatorii. Dacӑ user name-ul sau parola sunt greșite,

un mesaj de eroare va fi afișat.

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">

Page 59: Licenta Gombos Irina, Gr 627 (1)

59

<TextBoxStyle Font-Size="1em" Height="20px" Width="120px" Font-

Names="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" Font-

Size="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 urmӑtoarea funcție:

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));

}

}

Page 60: Licenta Gombos Irina, Gr 627 (1)

60

Aceastӑ procedurӑ verificӑ rolul atribuit user-ului pentru a îl direcționa cӑtre pagina

respectivӑ.

Pagina conține 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" DatâtextField="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 adӑugat un control de tip “Repeater” cu douӑ coloane, numele complet și user-ul

studentului/profesorului, depinzând 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ӑ câmpuri, Last_Name și First_Name, pentru cӑ

utilizatorul este interesat sӑ vadӑ numele complet decât separat pe douӑ coloane. Tag-ul

<AlternatingItemTemplate> conține aceleași informații ca tag-ul <ItemTemplate> doar

cӑ este caracterizat printr-un stil diferit, stil aplicat din douӑ în douӑ rânduri.

<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>

Page 61: Licenta Gombos Irina, Gr 627 (1)

61

</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 class="syle4">

<%# DataBinder.Eval(Container.DataItem, "User_Name")%>&nbsp;

</td>

</tr>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

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 numӑrul paginii pe care navigheazӑ.

<td align="center" bgcolor="#4B788B" style="font-weight: bold;

color:#000000" class = "syle4">

<asp:button id="cmdPrev" runat="server" text=" << "

Page 62: Licenta Gombos Irina, Gr 627 (1)

62

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>

Funcțiile 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 funcțiile

“protected void Button_DisplayStudents_Click” și “protected void

Button_DisplayProfessors_Click”.

În primul rând am definit o variabilӑ staticӑ t, care are rolul de a reține opțiunea user-ului

de a alege vizualizarea studenților sau a profesorilor. I se va atribui valoarea 1 dacӑ user-ul

alege sӑ afișeze studenții și 2 pentru afișarea 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;

Page 63: Licenta Gombos Irina, Gr 627 (1)

63

CurrentPage = 0;

bindData(t);

}

CurrentPage reprezintӑ indexul paginii care este afișatӑ 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);

Datâtable dtTable = new Datâtable();

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);

Page 64: Licenta Gombos Irina, Gr 627 (1)

64

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();

}

Funcția “protected void bindData(int t)” face urmӑtoarele:

-preia valoarea selectatӑ din “DropDownList1.SelectedValue” și o atribuie variabilei

“val_Group”;

-stabilește conexiunea cu baza de date “RAUDatabase”;

-definește un obiect de tip “Datatable” care va stoca informațiile extrase din baza de date;

-depinzând de variabila “t” se va defini o comanda SQL care va selecta fie studenții dintr-o

grupӑ anume, fie profesorii;

-va popula tabelul definit mai sus cu informațiile rezultate din comanda SQL;

-definește 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”;

Page 65: Licenta Gombos Irina, Gr 627 (1)

65

Paginile studentului

Înainte de a crea paginile, am creat fișierul “web.config” în care am permis accesul

studenților, dar l-am restricționat 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 “Student’s Page” ,

Page 66: Licenta Gombos Irina, Gr 627 (1)

66

care conține 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 afișat numele studentului care s-a logat (funcția de mai jos este apelatӑ în

momentul în care se încarcӑ pagina),

protected void Page_Load(object sender, EventArgs e)

{

if (User.Identity.IsAuthenticâted)

Label1.Text = User.Identity.Name;

else

Label1.Text = "No user identity available.";

}

un “Header”, care conține o imagine și un meniu de navigare, link-uri care vor direcționa

studentul cӑtre 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ӑ.

Page 67: Licenta Gombos Irina, Gr 627 (1)

67

În controlul de tip “Gridview” existӑ patru coloane, fiecare coloanӑ va fi populatӑ cu

informații din baza de date. Legӑtura se face între urmӑtoarele tabele, iar codul generat

este urmӑtorul:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333"

GridLines="None" style="font-family: Verdana; font-size: small"

Page 68: Licenta Gombos Irina, Gr 627 (1)

68

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 %>"

Page 69: Licenta Gombos Irina, Gr 627 (1)

69

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 informațiile și posibilitatea

sӑ modifice datele lui personale, anume adresa, localitatea și numӑrul de telefon.

În momentul în care pagina se încarcӑ, datele studentului logat vor fi afișate într-un tabel

pentru care am creat controale de tip “Label” și “Textbox”, apelându-se funcția urmӑtoare:

Page 70: Licenta Gombos Irina, Gr 627 (1)

70

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

if (User.Identity.IsAuthenticâted)

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);

Page 71: Licenta Gombos Irina, Gr 627 (1)

71

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();

Page 72: Licenta Gombos Irina, Gr 627 (1)

72

dbConn.Close();

}

Funcția de mai jos direcționeazӑ studentul cӑtre pagina inițialӑ, nesalvându-se datele din

câmpurile 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 câmpurile, iar parola trebuie sӑ fie de minim 7

caractere și sӑ conținӑ cel puțin 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">

Page 73: Licenta Gombos Irina, Gr 627 (1)

73

<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" Font-

Size="0.8em"

ForeColor="#284E98" />

<ChangePasswordButtonStyle BackColor="White" BorderColor="#507CD1"

BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-

Size="0.8em"

ForeColor="#284E98" />

<TitleTextStyle BackColor="#507CD1" Font-Bold="True" Font-

Size="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 fișierul “web.config” în care am permis accesul

profesorilor, dar l-am restricționat studenților și administratorului.

<configuration>

<system.web>

<authorization>

<allow roles="Professor" />

<deny roles="Student" />

<deny roles="Secretary" />

</authorization>

</system.web>

</configuration>

Page 74: Licenta Gombos Irina, Gr 627 (1)

74

Pagina “Professor's Page.aspx” conține asemeni paginii studenților un control de tip “Label”

în care îmi va fi afișat 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 conține o imagine și un meniu de

navigare, link-uri care vor direcționa studentul cӑtre 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” conține date legate de materiile predate de profesor logat

precum și grupele la care acesta predӑ, dar și studenții care participӑ la cursurile lui și care

aparțin de o anumitӑ grupӑ.

Page 75: Licenta Gombos Irina, Gr 627 (1)

75

Am creat douӑ controale de tip “DropDownList”, unul care îmi va afișa materiile și altul

grupele.

<asp:DropDownList ID="DropDownList1" runat="server"

DataSourceID="SubjectsDataSource" DatâtextField="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" DatâtextField="Group_Name"

DataValueField="Group_Name" CssClass="style13">

</asp:DropDownList>

Am asociat urmӑtoarele 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)"

Page 76: Licenta Gombos Irina, Gr 627 (1)

76

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>

Page 77: Licenta Gombos Irina, Gr 627 (1)

77

</asp:SqlDataSource>

În tabelul de tip “Gridview” vor fi afișați studenții care au în programӑ materia selectatӑ și

care aparțin de grupa selectatӑ. Altfel nu se va afișa 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>

Page 78: Licenta Gombos Irina, Gr 627 (1)

78

<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 apӑsat 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;

Page 79: Licenta Gombos Irina, Gr 627 (1)

79

String strConnection =

ConfigurationManager.ConnectionStrings["RAUDatabaseConnectionString"].Connect

ionString;

SqlConnection dbConn = new SqlConnection(strConnection);

Datâtable dtTable = new Datâtable();

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();

}

Page 80: Licenta Gombos Irina, Gr 627 (1)

80

Pentru editarea rândurilor tabelului “MarksGridView” vor fi apelate urmӑtoarele funcții în

momentul în care vom apӑsa 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);

Page 81: Licenta Gombos Irina, Gr 627 (1)

81

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 afișa toate notele studenților care participӑ la cursurile lui și

care aparțin de o anumitӑ grupӑ/an. El va putea sӑ exporte apoi aceste date în Excel.

Page 82: Licenta Gombos Irina, Gr 627 (1)

82

Am creat douӑ controale care îmi vor prelua anii și grupele la care profesorul predӑ:

Controlul pentru afișarea anilor:

<asp:DropDownList ID="DropDownList2" runat="server"

DataSourceID="YearsDataSource" DatâtextField="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 afișarea grupelor.

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"

DataSourceID="GroupsDataSource" DatâtextField="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>

Page 83: Licenta Gombos Irina, Gr 627 (1)

83

<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 urmӑtoarea funcție,

protected void BtnExportGrid_Click(object sender, EventArgs args)

{

// pass the grid that for exporting ...

GridViewExportUtil.Export("MyMarks.xls", this.gv);

}

funcție care la rândul ei va folosi urmӑtorul cod:

public class GridViewExportUtil

{

/// <summary>

///

/// </summary>

Page 84: Licenta Gombos Irina, Gr 627 (1)

84

/// <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 = "applicâtion/ms-excel";

using (StringWriter sw = new StringWriter())

{

using (HtmlTextWriter htw = new HtmlTextWriter(sw))

{

// Create a form to contain the grid

Table table = new Table();

// add the header row to the table

if (gv.HeaderRow != null)

{

GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);

table.Rows.Add(gv.HeaderRow);

}

// add each of the data rows to the table

foreach (GridViewRow row în gv.Rows)

{

GridViewExportUtil.PrepareControlForExport(row);

table.Rows.Add(row);

}

// add the footer row to the table

if (gv.FooterRow != null)

{

GridViewExportUtil.PrepareControlForExport(gv.FooterRow);

table.Rows.Add(gv.FooterRow);

}

Page 85: Licenta Gombos Irina, Gr 627 (1)

85

// 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));

}

Page 86: Licenta Gombos Irina, Gr 627 (1)

86

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);

}

}

}

}

Page 87: Licenta Gombos Irina, Gr 627 (1)

87

Pentru schimbarea parolei, profesorul are acceeași opțiune 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 dorește și confirmarea acesteia.

Paginile Administratorului

Am început prin configurarea paginii “web.config” permițând 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 conține 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 conține 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.

Page 88: Licenta Gombos Irina, Gr 627 (1)

88

Pagina dedicatӑ studenților, “Administrator Students.aspx”, îi permite administratorului sӑ

vizualizeze studenții 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"

Page 89: Licenta Gombos Irina, Gr 627 (1)

89

DataSourceID="SqlDataSource2" DatâtextField="Group_Name"

DataValueField="Group_Name" style="font-size: medium">

</asp:DropDownList>

și un control de tip “Repeater” numit “Repeater1” care conține patru coloane definite în tag-

ul <HeaderTemplate> : Student’s 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;

Page 90: Licenta Gombos Irina, Gr 627 (1)

90

<%# 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" >

Page 91: Licenta Gombos Irina, Gr 627 (1)

91

<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ӑ “Student’s Name” am concatenat primele coloanele ale tabelului

“Students”, Last_Name, Fathers_Initial și First_Name.

Pentru a doua coloanӑ am adӑugat urmӑtoarele în tag-ul <ItemTemplate>:

<a href='Delete Student.aspx?id=<%# Eval("Student_ID")%>&user=<%#

Eval("User_Name") %>'>Delete</a>

care va adӑuga textul “Delete” în coloanӑ, mӑ va direcționa cӑtre pagina “Delete

Student.aspx” și va transmite urmӑtorii parametrii:

- id : Student_ID al studentului afișat pe rândul respectiv (id=<%# Eval("Student_ID")%>);

- user : User_Name-ul al studentului afișat pe rândul respectiv (user=<%#

Eval("User_Name") %> ) ;

Pentru a treia coloanӑ am adӑugat în tag-ul <ItemTemplate>:

<a href='Edit Student.aspx?id=<%# Eval("Student_ID")

%>&group=<%#Eval("Group_Name") %>'>Edit</a>

Page 92: Licenta Gombos Irina, Gr 627 (1)

92

care va adӑuga textul “Edit” în coloanӑ, mӑ va direcționa cӑtre pagina “Edit Student.aspx” și

va transmite urmӑtorii parametrii:

- id : Student_ID al studentului afișat pe rândul respectiv (id=<%# Eval("Student_ID")%>);

- user : Group_Name al studentului afișat pe rândul respectiv (user=<%#

Eval("Group_Name") %> ) ;

Pentru a patra coloanӑ am adӑugat î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 adӑuga textul “Transfer to Year II/III” în coloanӑ și mӑ va direcționa cӑtre pagina

“Year II III.aspx” și va transmite urmӑtorii parametrii:

- id : Student_ID al studentului afișat pe rândul respectiv (id=<%# Eval("Student_ID")%>);

- user : Group_Name al studentului afișat pe rândul respectiv (user=<%#

Eval("Group_Name") %> ) ;

Controlul de tip “Repeater” va fi populat în momentul în care butonul “Display Students” va

fi apӑsat.

Prin apӑsarea butonului “Edit” vom fi direcționați cӑtre 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"]);

Page 93: Licenta Gombos Irina, Gr 627 (1)

93

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();

Page 94: Licenta Gombos Irina, Gr 627 (1)

94

}

}

}

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;

Page 95: Licenta Gombos Irina, Gr 627 (1)

95

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 inițialӑ trebuie sӑ apӑsӑm butonul “Cancel”.

Butonul “Delete” încarcӑ pagina “Delete Student” și urmӑtorul 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");

}

Page 96: Licenta Gombos Irina, Gr 627 (1)

96

Butonul “Add Student” ne permite sӑ adӑugӑm un nou student în baza de date. Astfel,

vom fi direcționați cӑtre pagina “Add Student.aspx”, se vor completa toate datele

noului student și pentru a se finaliza procesul va trebui apӑsat butonul “Add

Student”. Codul din spatele acțiunii este urmӑtorul:

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)";

Page 97: Licenta Gombos Irina, Gr 627 (1)

97

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));

Page 98: Licenta Gombos Irina, Gr 627 (1)

98

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 = "";

Page 99: Licenta Gombos Irina, Gr 627 (1)

99

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 studenților într-un an

superior. Astfel, vom fi direcționați cӑtre pagina “Year II III.aspx”, se vor completa

câmpurile necesare transferului și pentru a se finaliza procesul, va trebui apӑsat

butonul “Transfer”. Codul din spatele acțiunii este urmӑtorul:

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);

Page 100: Licenta Gombos Irina, Gr 627 (1)

100

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;

Page 101: Licenta Gombos Irina, Gr 627 (1)

101

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 apӑsarea butonului “Cancel” vom fi direcționați cӑtre pagina inițialӑ.

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 toți profesorii dintr-un departament anume, sӑ le modifice datele personale, sӑ

adauge și sӑ șteargӑ un profesor din baza de date.

Page 102: Licenta Gombos Irina, Gr 627 (1)

102

Am folosit un control de tip “Repeater” numit “Repeater1” care conține trei coloane definite

în tag-ul <HeaderTemplate> : Professor’s 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">

Page 103: Licenta Gombos Irina, Gr 627 (1)

103

<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>

Page 104: Licenta Gombos Irina, Gr 627 (1)

104

</td>

</tr>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

Pentru prima coloanӑ “Professor’s Name” am concatenat primele coloanele ale tabelului

“Professors”, Last_Name și First_Name.

Pentru a doua coloanӑ am adӑugat urmӑtoarele în tag-ul <ItemTemplate>:

<a href='Delete Professor.aspx?id=<%# Eval("Professor_ID")%>&user=<%#

Eval("User_Name") %>'>Delete</a>

care va adӑuga textul “Delete” în coloanӑ, mӑ va direcționa cӑtre pagina “Delete

Professor.aspx” și va transmite urmӑtorii parametrii:

- id : Professor_ID al profesorului afișat pe rândul respectiv (id=<%#

Eval("Professor_ID")%> );

- user : User_Name al profesorului afișat pe rândul respectiv (user=<%# Eval("User_Name")

%>) ;

Pentru a treia coloanӑ am adӑugat în tag-ul <ItemTemplate>:

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

care va adӑuga textul “Edit” în coloanӑ, mӑ va direcționa cӑtre pagina “Edit Professor.aspx”

și va transmite urmӑtorii parametrii:

Page 105: Licenta Gombos Irina, Gr 627 (1)

105

- id : Student Professor_ID al profesorului afișat pe rândul respectiv (id=<%#

Eval("Professor_ID")%> );

Prin apӑsarea butonului “Edit” vom fi direcționați cӑtre 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);

}

}

Page 106: Licenta Gombos Irina, Gr 627 (1)

106

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;

Page 107: Licenta Gombos Irina, Gr 627 (1)

107

command.ExecuteNonQuery();

dbConn.Close();

}

protected void CancelButton_Click(object sender, EventArgs e)

{

Response.Redirect("~/Administrator/Administrator Professors.aspx");

}

Pentru a ne întoarce pe pagina inițialӑ trebuie sa apӑsӑm butonul “Cancel”.

Butonul “Delete” încarcӑ pagina “Delete Professor” și urmӑtorul 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();

Page 108: Licenta Gombos Irina, Gr 627 (1)

108

dbConn.Close();

Membership.DeleteUser(profUser);

Response.Redirect("~/Administrator/Administrator Professors.aspx");

}

Butonul “Add Professor” ne permite sa adӑugӑm un nou profesor în baza de date.

Astfel, vom fi direcționați cӑtre pagina “Add Professor.aspx”, se vor completa toate

datele noului profesor și pentru a se finaliza procesul, va trebui apӑsat butonul “Add

Professor”. Codul din spatele acțiunii este urmӑtorul:

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.DuplicâteUserName:

LabelCreateAccountResults.Text = "The username is not available.";

break;

case MembershipCreateStatus.DuplicâteEmail:

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;

Page 109: Licenta Gombos Irina, Gr 627 (1)

109

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 = "";

Page 110: Licenta Gombos Irina, Gr 627 (1)

110

DTextbox.Text = "";

UNTextbox.Text = "";

PTextbox.Text = "";

EMTextbox.Text = "";

SQTextbox.Text = "";

SATextbox.Text = "";

Response.Redirect("~/Administrator/Administrator Professors.aspx");

}

Prin apӑsarea butonului “Cancel” vom fi direcționați cӑtre pagina inițialӑ.

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 conține cinci coloane: Subject’s Name,

Professor, Department, Delete Subject și Edit Subject.

<asp:Repeater ID="Repeater1" runat="server">

<HeaderTemplate>

Page 111: Licenta Gombos Irina, Gr 627 (1)

111

<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" style="background-color:#EFF3FB" class =

"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;

Page 112: Licenta Gombos Irina, Gr 627 (1)

112

</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>

Page 113: Licenta Gombos Irina, Gr 627 (1)

113

</asp:Repeater>

Pentru a patra coloanӑ “Delete Subject” am adӑugat urmӑtorul cod în tag-ul

<ItemTemplate>:

<a href='DeleteSubject.aspx?id=<%# Eval("Subject_ID")%>' class =

"style10">Delete</a>

care va adӑuga textul Delete pe fiecare rând și va direcționa user-ul cӑtre pagina “Delete

Subject.aspx” cӑreia îi va transmite urmӑtorii parametrii:

- id : Subject_ID al materiei afișate pe rândul respectiv (id=<%# Eval("Subject_ID")%>);

Pentru a cincea coloanӑ “Edit Subject” am adӑugat urmӑtorul cod în tag-ul

<ItemTemplate>:

<a href='EditSubject.aspx?id=<%# Eval("Subject_ID") %>' class =

"style10">Edit</a>

care va adӑuga textul Edit pe fiecare rând și va direcționa user-ul cӑtre pagina “Edit

Subject.aspx” cӑreia îi va transmite urmӑtorii parametrii:

- id : Subject_ID al materiei afișate pe rândul 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);

Page 114: Licenta Gombos Irina, Gr 627 (1)

114

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;

Page 115: Licenta Gombos Irina, Gr 627 (1)

115

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));

Page 116: Licenta Gombos Irina, Gr 627 (1)

116

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ӑ adӑugӑm o nouӑ materie în baza de date. Astfel,

vom fi direcționați cӑtre pagina “Add Subject.aspx”, se vor completa toate datele și

pentru a se finaliza procesul, va trebui apӑsat butonul “Add Subject”. Codul din

spatele acțiunii este urmӑtorul:

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));

Page 117: Licenta Gombos Irina, Gr 627 (1)

117

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 apӑsarea butonului “Cancel” vom fi direcționați cӑtre pagina inițialӑ.

protected void CancelButton_Click(object sender, EventArgs e)

{

Response.Redirect("~/Admnistrator/Administrator Subjects.aspx");

}

Page 118: Licenta Gombos Irina, Gr 627 (1)

118

Pentru schimbarea parolei, profesorul are acceeași opțiune ca a studentului. El trebuie doar

sӑ acceseze pagina “Change Password.aspx”. Va fi rugat sӑ introducӑ parola actualӑ, noua

parolӑ pe care o dorește și confirmarea acesteia.

Page 119: Licenta Gombos Irina, Gr 627 (1)

119

Cap. 5. EFICIENȚA ȘI UTILITATEA APLICAȚIEI INFORMATICE

Un prim criteriu în vederea eficienței, utilitӑții aplicației informatice este cel al atingerii

obiectivelor stabilite, adicӑ a obținerii ieșirilor avute în plan. Din acest punct de vedere,

sistemul informatic pe care l-am realizat a îndeplinit aceste condiții, cu ajutorul acestui

sistem, prin crearea unei baze de date, obținându-se diferite rapoarte utile atât studenților,

cât și profesorilor sau administratorului, având posibilitatea vizualizӑrii tuturor

informațiilor necesare. Totodatӑ, prelucrӑrile care se pot efectua cu acest sistem,

modificӑri, actualizӑri, ștergeri, adӑugӑri, se înscriu și ele în aceste condiții.

Un alt criteriu este ușurința în utilizare, întrucât sistemul realizat crește flexibilitatea și

ușurința în utilizarea datelor, dar și pentru utilizator, aceastӑ aplicație având un design

simplu, o structurӑ deloc complicatӑ, fiind la îndemâna oricui.

Utilitatea acestei aplicații constӑ în faptul cӑ poate fi întrebuințatӑ atât de studenți, ei având

acces exact la datele care le sunt necesare, notele din cadrul anilor universitari, dar și a

datelor personale, cât și de profesori, având acces rapid la actualizarea notelor studenților,

dar și la rapoarte pentru o mai bunӑ evidențӑ a acestora. Acest lucru nu poate decât sӑ

sporeascӑ calitatea și precizia activitӑții universitӑții.

Viteza de lucru este un alt aspect care trebuie luat în considerare. Majoritatea situațiilor și

prelucrӑrilor pe care sistemul informatic realizat le efectueazӑ se bazeazӑ pe tehnica SQL,

fiind constituite pe baza interogӑrilor asupra bazei de date. Întrucât î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 ușor, rezultatele obținându-se rapid.

În ceea ce privește securitatea sistemului informatic, au fost luate mӑsuri prin intermediul

programului ca sӑ se evite încercӑrile de fraudare. Un element de protecție este

restricționarea accesului la program, prin existența unui user-name și a unei parole care, în

cazul în care nu este introdusӑ corect, nu permite accesul în program. Protecția poate

consta și în faptul cӑ utilizatorii pot fi diferențiați, astfel încât un student nu poate fi

Page 120: Licenta Gombos Irina, Gr 627 (1)

120

direcționat decât cӑtre anumite pagini; același lucru este valabil și pentru profesori și

pentru administrator, administratorul având access la întreaga bazӑ de date.

În concluzie, se poate spune cӑ sistemul informatic realizat este unul eficient, dar și

util, atât din punct de vedere al necesitӑților informaționale, cât și din punctul de vedere al

securitӑții și ușurinței în exploatare.

Page 121: Licenta Gombos Irina, Gr 627 (1)

121

ANEXE

Anexa 1

Mediul de lucru Visual Web Developer Express 2008

De ce Visual Web Developer?

este simplu de înteles și de utilizat

conține un editor vizual

conține un editor performant de cod C#/HTML

conține suport pentru depanarea aplicațiilor Web

conține ultima versiune a colecției de clase necesare pentru a putea crea pagini

web folosind funcții implementate

conține un Web Server propriu ce poate rula paginile Web create

are integrat SQL Server Express, un mediu vizual pentru editarea bazelor de date

conține facilitӑți 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ӑ

învețe sӑ foloseascӑ Visual Web Developer și tehnologii asemӑnӑtoare, fӑrӑ sӑ aibӑ

îndemânӑri în utilizarea instrumentelor folosite de programatorii profesioniști; ea conține

instrumente de dezvoltare moderne, ușor de înteles și ușor de folosit, de dimensiuni mici,

cu interfețe de lucru simplificate dar în același timp beneficiare ale trӑsӑturilor clasice ale

Visual Studio și ale noilor funcționalitӑți implementate în .NET Framework .

Visual Web Developer se lanseazӑ printr-un simplu click pe butonul Start și alegerea

opțiunii Visual Web Developer 2008 Express Edition din All Programs.

Page 122: Licenta Gombos Irina, Gr 627 (1)

122

În figurӑ pot fi vizualizate urmӑtoarele panouri:

Toolbox: când se deschide o paginӑ sau alt item pentru editare, Toolbox oferӑ

instrumentele ce permit adӑugarea 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

aplicație apare în Database Explorer. Pentru comutarea între cele douӑ programe

Explorer se folosește tabul din josul panoului.

Properties: afișeazӑ proprietӑțile asociate obiectului sau paginii cu care se lucreazӑ.

Page 123: Licenta Gombos Irina, Gr 627 (1)

123

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 când pagina respectivӑ este cerutӑ de utilizator.

Cealaltӑ opțiune ar fi de a avea un assembly (un .dll). Pagina compilatӑ ține cont de un

timestamp asociat fișierului sursӑ, astfel încât dupӑ fiecare modificare a acestuia, pagina se

recompileazӑ la prima cerere. Avantajele acestei opțiuni de instalare a site-urilor ASP.NET

sunt:

Nu este nevoie sa recompilӑm întreaga aplicație atunci când se modificӑ doar o

pagina a acesteia.

Paginile care conțin erori de compilare nu opresc execuția întregului site cum s-ar

întâmpla dacӑ în loc de pagini compilate dinamic am avea un assembly.

1.3. Servere Web (Un calculator conectat la Internet care furnizeazӑ clienților, la cerere,

diverse resurse web) în Visual Web Developer.

Pentru a testa și a rula o aplicație 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 facilitӑți.

Î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 opțiunea Add/Remove Windows Components→Add 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, incluzând

Windows XP Home Edition. ASP.NET Development Server pune la dispoziție o metodӑ

simplӑ de a testa paginile local înainte de a le publica și a le pune pe un server IIS.

Page 124: Licenta Gombos Irina, Gr 627 (1)

124

ASP.NET Development Server funcționeazӑ numai cu pagini individuale și nu include toate

facilitӑțile IIS. De exemplu, ASP.NET Development Server nu suportӑ un server de mail

SMTP. Dacӑ o aplicație 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 când o pagina este rulatӑ folosind ASP.NET Development Server, pagina ruleazӑ în

contextul de securitate a contului de utilizator folosit. De exemplu, când 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 restrânge accesul la resursele de pe alt

calculator.

Dacӑ este rulat un cod dintr-o paginӑ simplӑ ASP.NET, diferența nu este foarte importantӑ.

Diferențele apar atunci când:

sunt accesate resurse cum ar fi: fișiere care nu sunt pagini Web, registri Windows

etc.,

este accesatӑ o bazӑ de date,

sunt accesate resurse protejate.

Page 125: Licenta Gombos Irina, Gr 627 (1)

125

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 cӑtre utilizator) și codul .NET care va fi executat pe server atunci când

se face o cerere cӑtre pagina respectivӑ. Codul poate fi scris folosind limbajul C# sau Visual

Basic .NET.

Script-urile ASP.NET sunt fișiere text cu extensia .aspx, care conțin controale HTML sau

ASP. Codul C# sau VB.NET asociat paginii sau obiectelor din paginӑ poate fi plasat direct în

fișierul cu extensia .aspx, sau într-un fișier separat <nume_pagina>.aspx.cs (pentru C#) sau

<nume_pagina>.aspx.vb (pentru VB.NET).

Orice paginӑ web .aspx conține o secțiune de directive, care descrie modul în care pagina

este procesatӑ de cӑtre server. Aceastӑ secțiune este cuprinsӑ între tag-urile <%@ și %> și

precizeazӑ limbajul utilizat pentru scrierea codului și numele fișierului în care este reținut

codul (atunci când 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 dispoziția 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ӑ rӑspundӑ la anumite evenimente din paginӑ. Pentru a

putea fi accesate prin intermediul codului, aceste controale trebuie sӑ conținӑ 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 adӑugarea atributului runat=”server” unui

Page 126: Licenta Gombos Irina, Gr 627 (1)

126

tag HTML. Pentru a putea identifica un control Html în codul server-side, trebuie sa-i

atașӑm atributul „id”: <p id = "output" runat="server"/>.

Controalele server Web oferӑ mai multe funcționalitӑți programabile decât 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 cӑtre 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 prelucrӑrii pe server,

rezultӑ o paginӑ web Html, care este trimisӑ cӑtre browser.

Ciclul de viațӑ al unei pagini web are urmӑtorii pași:

1. User-ul scrie adresa unei pagini web. Acest lucru înseamnӑ o cerere a browser-ului web

cӑtre server, prin intermediul metodei HTTP GET. Pe server, pagina ruleazӑ pentru prima

data, executându-se și codul C# existent.

2. Rezultatul este o paginӑ Html care este trimisӑ browser-ului.

3. User-ul poate introduce date sau apӑsa un buton, și pagina este trimisӑ înapoi server-

ului.

Dacӑ utilizatorul acceseazӑ un link, se încarcӑ o altӑ paginӑ, și nici o prelucrare nu este

efectuatӑ de pagina inițialӑ.

4. Pagina este trimisӑ cӑtre browser prin intermediul metodei HTTP POST. În ASP.NET

aceastӑ acțiune se numește PostBack.

5. Pe server-ul web, pagina ruleazӑ din nou, și sunt prelucrate informațiile introduse de

cӑtre utilizator în browser.

6. Rezultatul este trimis browser-ului, și astfel se reia ciclul.

Page 127: Licenta Gombos Irina, Gr 627 (1)

127

Procesul de prelucrare a paginii web de cӑtre server este împӑrțit în mai multe etape.

Fiecare etapӑ corespunde unui eveniment asociat paginii. Printre cele mai importante

evenimente asociate paginii sunt:

Init – se inițializeazӑ 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, apӑrut odatӑ cu platforma .NET.

Ideea centralӑ a limbajului C# este programarea orientatӑ pe obiecte (OOP). O aplicație C#

este formatӑ din una sau mai multe clase, grupate în spații de nume (namespaces).

O clasӑ reprezintӑ un șablon care definește forma unui obiect. Este un tip de date

abstract, care definește atât datele cât și codul care va prelucra acele date. Obiectele sunt

instante, particularizӑri ale claselor. Datele din cadrul clasei se mai numesc proprietӑți, iar

funcțiile mai poartӑ numele de metode.

Simplificând mult lucrurile, puteți sa vӑ imaginați 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 lângӑ aceste date existӑ și funcțiile care le prelucreazӑ. La fel cum se pot

defini variabile de tip structurӑ, se pot defini variabile de tip clasӑ (numite obiecte). Accesul

la câmpurile unei structuri se realizeazӑ prin nume_variabila_structura . nume_câmp.

Page 128: Licenta Gombos Irina, Gr 627 (1)

128

Analog, accesul la datele și funcțiile membre ale unei clase se realizeazӑ prin obiect .

proprietate sau obiect . metodӑ.

Un spațiu de nume reprezintӑ o schemӑ logicӑ pentru denumirea tipurilor de date

înrudite. Spațiile de nume pot fi asemӑnӑtoare cu structura de directoare

și fișiere din Windows. La fel cum într-un folder sunt salvate fișiere înrudite, într-un spațiu

de nume se gӑsesc obiecte de tipuri asemӑnӑtoare.

Rӑdӑcina acestei ierarhii de spații de nume este System. Spațiile de nume pot

conține la rândul lor alte spații de nume. De exemplu, System conține spațiile de nume

System.Data (unde se gӑsesc clase pentru conectarea la diverse surse de date) și

System.Web (unde se gӑsesc toate clasele pentru dezvoltarea unei aplicații web).

Controalele server Html sunt incluse în spațiul de nume System.Web.UI.HtmlControls, iar

controalele server Web în spațiul System.Web.UI.WebControls. Pentru a avea acces la

clasele dintr-un anumit spațiu de nume, acesta trebuie inclus în aplicație folosind

instrucțiunea using:

Page 129: Licenta Gombos Irina, Gr 627 (1)

129

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 reține informații despre un user, la vizitarea unei pagini web. Când user-ul

revine pe un site, informațiile din cookie sunt citite, ajutând la identificarea rapidӑ a

utilizatorului. Pe lângӑ valori, pentru un cookie se poate stabili durata de viațӑ în

calculatorul clientului.

Pentru a adӑuga un cookie, se folosește 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 stabilește prin intermediul proprietӑții Expires.

Avantajul folosirii cookie-urilor este acela cӑ informația este disponibilӑ în orice paginӑ la

revenirea userului în site, dupӑ o anumitӑ perioadӑ. Printre dezavantaje amintim:

nu sunt potrivite pentru a reține date importante

cookie-urile pot fi dezactivate din browser

sunt încӑrcate pentru fiecare cerere, ducând la creșterea traficului

Anexa 4

INTERACȚIUNEA 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

Page 130: Licenta Gombos Irina, Gr 627 (1)

130

actualizarea datelor. De obicei, sursa de date este o bazӑ de date, dar ar putea de asemenea

sa fie un fișier text, o foaie Excel, un fișier Access sau un fișier XML.

1. ROLUL BAZELOR DE DATE

Astӑzi, cele mai multe dintre activitӑțile zilnice necesitӑ accesarea și actualizarea

informației dintr-o bazӑ de date: consultarea unui catalog de produse, lansarea unei

comenzi, cumpӑrarea unui bilet de avion sau verificarea evidenței plӑților.

De cele mai multe ori, informațiile sunt obținute prin prelucrarea unor seturi de date

relaționate. De exemplu, o bazӑ de date tipicӑ pentru un magazin on-line conține o listӑ de

clienți, o listӑ de produse și o listӑ de vânzӑri bazatӑ pe informațiile din primele douӑ liste.

Aceste informații sunt descrise cel mai bine utilizând un model relațional, model ce

presupune divizarea informațiilor în seturi consistente și definirea relațiilor dintre aceste

seturi. Modelul relațional stӑ la baza tuturor produselor moderne axate pe baze de date,

incluzând aici SQL Server, Oracle,MySQL și chiar Microsoft Access.

Din punct de vedere tehnic este posibilӑ organizarea datelor în tabele și pӑstrarea acestei

tabele pe hard disc în unul sau mai multe fișiere (eventual folosind un standard XML).

Aceastӑ abordare nu este însӑ foarte flexibilӑ.

O aplicație 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 mulți

utilizatori simultan, elimina datele incorecte și poate executa la un moment dat un

grup de comenzi care sunt vӑzute ca o singurӑ unitate.

Page 131: Licenta Gombos Irina, Gr 627 (1)

131

2. ACCESAREA BAZELOR DE DATE WEB

Accesarea unei baze de date într-o aplicație web are un scenariu complet diferit fațӑ de

accesarea unei baze de date prin intermediul unei aplicații desktop client-server.

În aplicațiile tradiționale cu baze de date, clienții stabilesc o conexiune cu baza de date și

mențin aceastӑ conexiune deschisӑ pânӑ la încheierea executӑrii aplicației. Conexiunile

deschise necesitӑ alocarea de resurse sistem. Atunci când menținem mai multe conexiuni

deschise server-ul de baze de date va rӑspunde mai lent la comenzile clienților întrucât cele

mai multe baze de date permit un numӑr foarte mic de conexiuni concurente.

O aplicație Web trebuie sӑ asigure în principal furnizarea rezultatelor cӑtre mai mulți

utilizatori simultan, operație influențatӑ de resursele de memorie și de conexiunile la baza

de date. Dacӑ aplicația este proiectatӑ astfel încât sӑ menținӑ conexiunea deschisӑ chiar și

pentru câteva secunde în plus pentru un utilizator, atunci ceilalți utilizatori vor observa cu

siguranțӑ întârzierea. Concurența este una dintre problemele pe care aplicația trebuie sӑ le

gestioneze pentru cӑ modificӑrile fӑcute de utilizatorii conectați simultan pot conduce la

inconsistența datelor.

O altӑ problemӑ care trebuie rezolvatӑ de o aplicație Web care lucreazӑ cu baze de date

este cea a modului de deconectare de la Internet. HTTP este un protocol static. Atunci când

un utilizator emite o cerere printr-o aplicație ASP.NET, serverul Web proceseazӑ codul,

returneazӑ paginile HTML și închide conexiunea, astfel încât utilizatorul are senzația cӑ

lucreazӑ cu o aplicație care ruleazӑ continuu deși el beneficiazӑ doar de pagini statice.

Aplicația ASP.NET trebuie sӑ efectueze operația solicitatӑ de utilizator printr-o singurӑ

cerere.

ADO.NET permite și lucrul în stil conectat dar și lucrul în stil deconectat, aplicațiile

conectându-se la server-ul de baze de date numai pentru extragerea și actualizarea datelor.

Acest lucru permite reducerea numӑrului de conexiuni deschise simultan la sursele de

date.

Page 132: Licenta Gombos Irina, Gr 627 (1)

132

ADO.NET oferӑ instrumentele de utilizare și reprezentare XML pentru transferul datelor

între aplicații și surse de date, furnizând o reprezentare comunӑ a datelor, ceea ce permite

accesarea datelor din diferite surse de diferite tipuri și prelucrarea lor ca entitӑți, fӑrӑ 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 interacționa ușor cu orice componentӑ care

suportӑ XML.

Durabilitate. ADO.NET permite dezvoltarea arhitecturii unei aplicații 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 creștere a productivitӑții și la o scӑdere a

numӑrului de erori.

Performanțӑ. Nu mai este necesarӑ conversia explicitӑ a datelor la transferul între

aplicații, fapt care duce la creșterea performanțelor acestora.

Accesibilitate. Utilizarea arhitecturii deconectate permite accesul simultan la același

set de date. Reducerea numӑrului 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.

Page 133: Licenta Gombos Irina, Gr 627 (1)

133

Furnizori de date (Data Providers)

Din cauza existenței 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 interacțiune 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 decât 7.0)

Furnizorul de date permite unei aplicații sӑ se conecteze la sursa de date, executӑ comenzi

și salveazӑ rezultate. Fiecare furnizor de date cuprinde componentele Connection,

Command, DataReader și DataAdapter :

Page 134: Licenta Gombos Irina, Gr 627 (1)

134

Accesul direct la date prin intermediul ADO.NET

Accesul direct la date presupune construcția unei comenzi SQL, conectarea la baza de date,

executarea comenzii și deconectarea de la baza de date fӑrӑ memorarea directӑ a

rezultatelor.

Dacӑ se lucreazӑ în mod deconectat atunci se pӑstreazӑ 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 încӑrcatӑ la cerere și

accesul se încheie atunci când rezultatul cererii este furnizat user-ului, ceea ce înseamnӑ o

paginӑ care are de obicei o viațӑ de numai câteva secunde.

Rezultӑ așadar cӑ o interogare directӑ a datelor presupune executarea pașilor urmӑtori:

a) crearea obiectelor de tip Connection, Command și DataReader ;

b) obținerea informațiilor din baza de date cu ajutorul obiectelor de tip DataReader și

afișarea acestora într-un controler de pe un formular web;

c) închiderea conexiunii;

d) trimiterea paginii cӑtre utilizator; în acest moment nu mai avem o legӑturӑ directӑ

între ceea ce vede utilizatorul și datele din baza de date, obiectele de tip ADO.NET

fiind distruse.

Adӑugarea, ștergerea sau modificarea datelor se realizeazӑ în doi pași:

a) crearea obiectelor de tip Connection, Command;

b) executarea comenzii directe.

În figura de mai jos sunt reprezentați pașii menționați anterior.

Page 135: Licenta Gombos Irina, Gr 627 (1)

135

Anexa 6

Securitatea aplicațiilor ASP.NET

Pentru o aplicație securizatӑ, existӑ mai multe posibilitӑți de autentificare, cele mai des

întâlnite fiind sintetizate în tabelul urmӑtor. Implementarea politicii de securitate se poate

face atât din IIS cât și din aplicația ASP.NET.

Page 136: Licenta Gombos Irina, Gr 627 (1)

136

Windows Authentication

În acest mod de autentificare, aplicația 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 aplicația Web.

2. Cererea ajunge la Serverul Web IIS care comparӑ datele de autentificare ale

utilizatorului cu cele ale aplicației (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 cӑtre IIS

6. IIS verificӑ datele de autentificare, și în cazul în care sunt corecte, direcționeazӑ

cererea cӑtre aplicația Web.

Page 137: Licenta Gombos Irina, Gr 627 (1)

137

7. Pagina securizatӑ este returnatӑ utilizatorului.

Forms-Based Authentication

Atunci când se utilizeazӑ autentificarea bazatӑ pe formulare, IIS nu realizeazӑ

autentificarea, deci este necesar ca în setӑrile 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 cӑtre ASP.NET.

2. Acesta verificӑ pe calculatorul clientului prezența 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ӑ informațiile cerute în pagina de autentificare și apoi trimite

informațiile.

5. Din nou, IIS autentificӑ clientul ca fiind un utilizator anonim și trimite cererea cӑtre ASP

.NET

6. ASP.NET autentificӑ clientul pe baza informațiilor furnizate. De asemenea genereazӑ și

un cookie. Cookie reprezintӑ un mic fișier text ce pӑstreazӑ diverse informații despre

utilizatorul respectiv, informații folosite la urmӑtoarea vizitӑ a sa pe site-ul respectiv, la

autentificare, sau în diverse alte scopuri.

7. Pagina securizatӑ cerutӑ și noul cookie sunt returnate clientului. Atâta timp cât acest

cookie rӑmâne valid, clientul poate solicita și vizualiza orice paginӑ securizatӑ ce utilizeazӑ

aceleași informații de autentificare.

Page 138: Licenta Gombos Irina, Gr 627 (1)

138

Securizarea din aplicația web

Securizarea unei aplicații web presupune realizarea a douӑ obiective: (1) autentificarea

și (2) autorizarea.

1. Autentificarea presupune introducerea de cӑtre utilizator a unor credențiale, de

exemplu nume de utilizator și parolӑ, iar apoi verificarea în sistem cӑ acestea

Page 139: Licenta Gombos Irina, Gr 627 (1)

139

existӑ și sunt valide.

2. Autorizarea este procesul prin care un utilizator autentificat primește acces pe

anumite resurse, numai pe resursele pe care are dreptul sӑ le acceseze.

Aceste obiective pot fi atinse ușor utilizând funcționalitӑțile ș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 când se dorește modificarea dinamicӑ, a

conținutului paginilor Web. Paginile Web realizate în HTML au dezavantajul ca sunt statice,

conținutul lor neputând fi modificat odatӑ ce au fost încӑrcate pe un server decât

aducându-le înapoi pentru a fi editate. Acest lucru este o problemӑ serioasӑ având în

vedere cӑ operația 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

afișeazӑ notele și mediile studenților pe serii și pe grupe, dacӑ se dorește adӑugarea unui

student va trebui sӑ se modifice atât pagina grupei cât și pagina seriei precum și pe cele de

medii. Acest fapt este neplӑcut și îngreuneazӑ foarte mult munca. Soluția care se adoptӑ în

astfel de situații este plasarea informațiilor într-o bazӑ de date și accesarea lor ori de câte

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 câte ori intervine o schimbare, se va crea o bazӑ de date și câteva

scripturi pe partea de server prin care vor construi dinamic, paginile HTML care vor fi

afișate. Schimbӑrile se vor face doar la nivelul bazei de date ceea ce e mult mai simplu.

Paginile Web se clasificӑ în funcție de natura conținutului în pagini statice și pagini

dinamice.

Page 140: Licenta Gombos Irina, Gr 627 (1)

140

Principalele caracteristici ale paginilor Web statice sunt:

• conțin doar elemente HTML;

• codul sursӑ vizualizat în navigator este identic cu cel al fișierului stocat pe disc;

• nu oferӑ interactivitate.

Paginile Web dinamice se caracterizeazӑ prin urmӑtoarele:

• conținutul lor este creat dinamic și poate diferi la accesӑri diferite; de exemplu la același

URL conținutul paginii poate varia în funcție de anumiți parametri cum ar fi locația

geograficӑ a utilizatorului, ora, paginile vizitate anterior, profilul utilizatorului;

• oferӑ interactivitate;

• posibilitӑți de interacțiune.

În funcție de locul în care este evidențiat 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 secvențe de program incluse în

pagina HTML care se executӑ de cӑtre navigator. Secvențele de program sunt incluse prin

Page 141: Licenta Gombos Irina, Gr 627 (1)

141

marcatorul <SCRIPT> sau în proprietӑțile anumitor componente HTML ca rӑspuns la

diferite evenimente.

Limbajele utilizate pentru a realiza scripturi pe partea de client sunt JavaScript, Jscript și

VBScript. Secvențele de program scrise folosind aceste scripturi nu oferӑ acces la resursele

sistemului local (fișiere, rețea).

Scripturile pe partea de client sunt utilizate pentru asigurarea interactivitӑții (meniuri),

pentru validarea formularelor, pentru a crea diferite efecte, pentru efectuarea de calcule,

diverse elemente de animație 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ӑ interacționeze cu pagina fӑrӑ a retrimite o cerere la serverul Web.

Applet-uri Java reprezintӑ aplicații de dimensiuni reduse, scrise în limbajul Java. Codul

binar al aplicației este descӑrcat pe mașina client de pe server și executat local, în mașina

virtualӑ Java (JVM). Aproape toate calculatoarele permit execuția applet-urilor, însӑ pentru

funcționarea acestora este necesarӑ instalarea unei mașini 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 fișiere și la rețea, astfel

riscul ca aceste aplicații sa conținӑ cod malițios sunt reduse.

Controalele ActiveX sunt componente binare incluse în paginile Web pentru a oferi

interactivitate. Sunt asemӑnӑtoare 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 restricții în ceea ce privește accesul la

disc, ceea ce face ca anumite componente de acest tip sa fie susceptibile de cod rӑuvoitor,

asemӑnӑtor virușilor. De aceea, în cazul în care o paginӑ conține controale ActiveX,

navigatorul printr-o fereastrӑ de dialog cere confirmarea utilizatorului pentru instalarea și

rularea acestora.

Page 142: Licenta Gombos Irina, Gr 627 (1)

142

Elemente multimedia sunt dezvoltate în general folosind produsul Macromedia Flash.

Acestea se prezintӑ sub formӑ de fișiere SWF multimedia și sunt incluse în pagina Web prin

intermediul marcatorului <OBJECT>. Pentru a putea rula pe partea de client aceste fișiere

este necesarӑ instalarea unui plug - in denumit Macromedia Shockwave Player. Fișierele

multimedia Flash se realizeazӑ sub forma unor filme, care sunt proiectate cadru cu cadru.

Acestea oferӑ diverse efecte multimedia (animație, sunet) și permit interactivitatea cu

utilizatorul. Sunt utilizate pentru meniuri, jocuri, filme de animație 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 interogӑri la nivelul

bazelor de date și de a trimite spre serverul Web rezultatul execuției scripturilor sub formӑ

de conținut HTML pentru a putea fi afișat de cӑtre navigator. În momentul în care

serverului Web i se solicitӑ rularea unui script, acesta identificӑ în funcție de extensia

fișierului care din compilatoare trebuie sӑ ruleze scriptul respectiv.

Page 143: Licenta Gombos Irina, Gr 627 (1)

143

Fiecӑrui 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 restrâns. 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 execuție;

• într-o paginӑ de script (ASP, JSP, PHP) pot fi îmbinate limbajul HTML și secvențe de cod;

secvențele 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 interacțiune cu baze de date diferite;

• au acces la toate resursele serverului Web (fișiere, rețea).

În mod uzual prin intermediul scripturilor sunt prelucrate informațiile din câmpurile

formularelor (<FORM>) din cadrul paginilor Web.

Page 144: Licenta Gombos Irina, Gr 627 (1)

144

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

aplicațiilor Web server interactive. Cu ASP se pot combina pagini HTML, comenzi de script

și controale ActiveX pentru crearea de pagini Web interactive sau aplicații Web complexe.

Când serverul primește o cerere pentru un fișier ASP, prelucreazӑ scriptul conținut în fișier

pentru a construi pagina de Web care este trimisӑ apoi la navigator. ASP oferӑ totodatӑ

posibilitatea de a stoca informația dintr-un formular HTML într-o bazӑ de date, de a

personaliza site-uri Web, oferind diverse opțiuni 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 convențional. Cu

ASP se poate prelua informația 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 aplicații Web într-un

limbaj de programare ca Visual Basic, C++ sau Java. Se poate include și o siglӑ a aplicației în

module care vor fi apelate și executate de cӑtre alte componente sau programe.

Page 145: Licenta Gombos Irina, Gr 627 (1)

145

BIBLIOGRAFIE

Cӑrți:

Daniela Crișan, Alexandru Tӑbușcӑ

Programare Web / HTML / Javascript

Cornelia Botezatu

Proiectarea sistemelor informatice. Metode sistemice. , Editura ProUniversitaria, Buc,

2007

Ionel Iacob

ORACLE 10g – Proiectarea şi realizarea aplicaţiilor cu baze de date utilizând 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

Page 146: Licenta Gombos Irina, Gr 627 (1)

146

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 Beginner’s 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

Page 147: Licenta Gombos Irina, Gr 627 (1)

147

http://sql-databases.blurtit.com/ http://www.blurtit.com/q499290.html

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

us/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/en-

us/library/cc731252%28WS.10%29.aspx

http://www.biblioteca-

digitala.ase.ro/biblioteca/model/index2.asp

http://www.biblioteca-

digitala.ase.ro/biblioteca/carte2.asp?id=458

&idb=11

http://www.biblioteca-

digitala.ase.ro/biblioteca/model/index2.asp

http://www.biblioteca-

digitala.ase.ro/biblioteca/carte2.asp?id=432

http://www.teqcircle.com