Program Software Pentru Gestionarea Situației Studenților
Cuprins
Introducere……………………………………………..
Capitolul 1. Stabilirea specificațiilor proiectului……………………………………………………….
Capitolul 2. Limbajul SQL…………………………………………………………….
2.1 Caracteristici generale ale SQL……………………………………………
2.2 Fundamente ale limbajului SQL…………………………………
2.3 Definirea datelor……………………………………………………
2.4 Crearea schemei unei baze de date……………………………
2.5 Adaugarea relațiilor în baza de date………………………………
2.6 Ștergerea relațiilor dintr-o bază de date……………………
2.7 Optimizarea unei baze de date…………………………
2.8 Indexare…………………………………………
2.9 Restricții cu privire la utilizarea unei baze de date……………………………
2.10 Accesul on-line la baze de date aflate la distanță…………………
Capitolul 3. Limbajul C#………………………………………………………………………………………..
3.1 Structura unui program C#……………………………………………..
3.2 Tipuri de date in limbajul C#……………………………………………..
3.3 Relația dintre C# si arhitectura NET……………………………………………..
Capitolul 4. Limbajul HTML (HyperText Markup Language) …………………
4.1 Secțiunile unui document HTML……………………………………………..
4.2 Legãturi în documente HTML……………………………………………..
4.3 Liste în HTML……………………………………………..
Capitolul 5. Standardul CSS……………………………………………..
5.1 Sintaxa normelor CSS……………………………………………..
Capitolul 6. Microsoft Visual Studio……………………………………………..
Capitolul 7. Prezentarea bazei de date
7.1 Introducere………………………………..
7.2 Implementarea bazei de date………………………………..
7.3 Implementarea aplicatiei in ASP………………………………..
7.4 Concluzii
7.5 Anexă
Bibliografie……………………………………………..
Introducere
În ultimii ani, dezvoltarea sistemelor de baze de date reprezintă unul dintre cele mai importante aspect în domeniul tehnologiei informției, având un impact decisive asupra modului de organizare și funcționare a numeroaselor instituții și servicii.
Acum, bazele de date fac parte din viața noastră de zi cu zi în așa măsură, întrucât adeseori nu suntem conștienți că le utilizăm. Ca exemple pot fi companiile de comunicație, inteprinderile de comerț, serviciile bancare, serviciile de transport, asigurările, universitățile, etc.
Toate sunt dependente de funcționarea correctă și neîntreruptă a sistemelor de baze de date.
Exemplu: Atunci cˆand cump˘ar˘am ceva de la un supermarket, va fi accesat˘a o baz˘a de date. Vˆanzatorul va trece un cititor de coduri de bare peste fiecare produs cump˘arat.
Aceasta este legat˘a la un program aplic¸tie pentru baze de date, care utilizeaz˘a codul de bare pentru a afla pre¸tul produsului respectiv, dintr-o baz˘a de date de produse.
Apoi, programul va reduce numarul articolelor respective ˆın stoc ¸si va afi¸sa pre¸tul la cas˘a.
Alte exemple des ˆıntˆalnite mai pot fi: depunerea sau extragerea unei sume de bani din banc˘a, rezervarea biletelor de tren, de avion sau de cinema, gestiunea angaja¸tilor unei firme, c˘autarea unei c˘ar¸ti ˆıntr-o bibliotec˘a etc.
Bazele de date pot avea m˘arimi (numar de ˆınregistr˘ari) ¸si complexit˘a¸ti extrem de variate, de la cˆateva zeci de ˆınregistrari (de exemplu, baza de date pentru o agend˘a de telefon a unei persoane) sau poate ajunge la milioane de ˆınregistrari (de exemplu, baza de date cu stocarea angaja¸tilor unei firme).
Capitolul 1. Stabilirea specificațiilor proiectului
Se va realiza un program software cu ajutorul căruia se poate gestiona situația studenților la Facultatea de Electronică, Comunicații și Calculatoare.
Atât profesorii cât și Secretariatul au acces pentru a introduce datele în programul respectiv pe baza de User si Parolă.
În cadrul acestui capitol este prezentat modul de implementare al aplicației de gestionare a situației studenților.
O aplicație web este un program care rulează într-o arhitectură client-server folosind un protocol de comunicare.
O aplicație web destinată folosirii intr-o universitate trebuie să ofere utilizatorilor o interfață prietenoasă și intuitivă.
Printre tipurile utilizatorului se numără studenții, profesorii, secretarele precum și casierii.
Accesul în cadrul aplicației este securizat ceea ce înseamnă că se realizează pe baza de utilizator si parola. Logarea se face dintr-o pagină comună pentru toate tipurile de utilizatori, urmând ca după logare aplicația să ofere acces doar la funcțiile unui tip de utilizator.
Utilizatorul de tip student iși poate vedea situația școlară din cadrul facultăților la care este înscris. Acesta iși poate modifica o parte din informațiile personale de profil. Acesta poate fi inscris la mai multe facultăți din cadrul universității.
Notele pot fi văzute doar pentru anul specificat sau pentru toți anii. Pe lângă situația scoalară, studentul are acces și la situația financiară care este afișată pentru un an specificat sub forma a trei tranșe.
Utilizatorul de tip profesor poate să dea note studenților care sunt inscriși la materiile pe care acesta le predă, notele putând fi doar afișate, nu modificate.
Utilizatorul de tip secretară are printre cele mai multe funcții disponibile, toate funcțiile se rezumă la facultatea pentru care este angajat. Acesta poate vedea studenții pentru o anumită specializare, poate modifica toate informațiile unui student inclusiv notele. Utilizatorul de tip secretară nu poate modifica situația financiară a studenților.
Utilizatorul de tip casier are acces doar la situația financiară a unui student. El poate crea depuneri noi și nu poate modifica tranșele depuse.
Deoarece aplicația este implementată in limbajul de programe C#, aceasta va fi o aplicație dezvoltată în mediul pentru servere ASP (active server pages). Stocarea si organizarea datelor este realiazată folosind o bază de date SQL.
Capitolul 2. Limbajul SQL
SQL (Structured Query Language) este unul dintre cele mai puternice și larg răspândite limbaje folosite pentru definirea și accesarea bazelor de date relaționale.
SQL nu se încadrează în categoria limbajelor de programare, fiind un limbaj de aplicații, destinat bazelor de date relaționale.
SQL permite consultarea unei bazei de date, sau executarea anumitor instrucțiuni asupra acesteia, prin simpla specificare a informațiilor dorite sau a comenzilor de executat, fără a fi necesară indicarea modalității concrete sau a algoritmilor de obținere a rezultatului. Cu alte cuvinte, SQL poate fi considerat un limbaj declarative (neprocedural).
Deși este perceput drept facil și poate fi însușit cu ușurință de utilizatorii bazelor de date, SQL permite totodată soluționarea rapidă a unor solicitări complexe, ceea ce explică interesul considerabil pe care limbajul l-a suscitat în rândul producătorilor de software.
SQL este suportat de diferite sisteme de gestiune a bazelor de date (Access și SQL Server (Microsoft), DB2 și Informix (IBM), Oracle, Sybase etc.), limbajul dispunând de mai multe dialecte, determinate de specificul fiecărui S.G.B.D.
În același timp, există și versiuni standard, care se bucură de o recunoaștere universală în domeniul bazelor de date.
În viitorul nu prea îndepărtat, multe firme iși vor asigura profitul nu doar prin utilizarea eficientă a resurselor tradiționale: energie electrică, cărbune, oțel etc., ci mai ales a acelei resurse umane numită INFORMAȚIE.
Datele și informațiile acumulate într-o firmă, reprezintă în fapt un valoros bun ce trebuie valorificat corespunzător. Pentru a-și maximiza profitul, aceste date trebuie astfel organizate încât să poată fi utilizate în cel mai eficient mod posibil, lucru care constă de obicei în crearea, întreținerea și utilizarea unor baze de date pe sisteme de calcul moderne.
2.1 Caracteristici generale ale SQL
O bază de date este formată dintr-o colecție de date diverse și un software care să controleze accesul la acestea, cunoscut sub numele de sistem de gestiune al bazelor de date(SGBD).
În fapt, un SGBD este un program ce furnizează o interfață între sistemul de operare de pe sistemul de calcul respectiv și utilizator, cu scopul de a simplifica pe cât posibil accesul la date.
Un SGBD îndeplinește următoarele funcții importante:
– stocarea, regăsirea și actualizarea datelor, astfel un SGBD permite utilizatorilor să creeze și să manipuleze date într-un mod facil, fără a fi nevesar să cunoască structura internă a datelor;
– crearea și întreținerea dicțioanrului de date (catalogul de sistem);
– gestionarea facilităților legate de accesarea simultană a unor înregistrări ale bazei de date de către mai mulți utilizatori;
– păstrarea unei copii de siguranță (“back-up”) și posibilitatea de a recupera datele in cazul “caderii” sistemului;
– probleme de securitate a datelor (parole de aces ale utilizatorilor, verificări, vizualizări ale datelor etc.)
Gestionarea informației sub forma unor baze de date prezintă o serie de avantaje ce sunt prezentate in cele ce urmeaza:
Independența datelor.
Într-o bază de date, datele sunt păstrate astfel încât schimbarea structurii acesteia să nu afecteze niciunul din programele de aplicație ce utilizează datele din baza de date respectivă, spre deosebire de o abordare orientată spre fișiere, unde o modificare chiar nesemnificativă în structura fișierului poate necesita un efort considerabil din partea programatoruli.
Consistența datelor.
Modificarea articolelor din baza de date este percepută de fiecare dintre utilizatorii sistemului de baze de date.
Controlul redundanței.
În sistemele de gestiune neorientate spre baze de date, aceeași informație poate fi păstrată în mai multe fișiere diferite și în consecință crește nejustificativ spațiul fizic ocupat pe disc, dar și timpul consumat cu actualizarea datelor redundante.
Integritatea datelor.
Un SGBD furnizează utilizatorilor posibilitatea specificării anumitor restricții. Spre exemplu când se face înregistrarea unui nou produs în baza de date, impunem să fie adăugat și prețul acestuia, astfel ca elementul “preț” nu va putea fi niciodată omis.
O securitate mai mare a datelor.
Astfel, un SGBD va asigura faptul că doar utilizatorii autorizați vor avea acces la date.
Un control centralizat al datelor, prin intermediul unui administrator al bazelor de date.
O mai mare cantitate de informative disponibilă utilizatorilor.
Cu un sistem de baze de date, utilizatorii accesează informația ce a fost anterior păstrată în fișiere aflate pe sisteme de calcul diferite, chiar incompatibile între ele.
8. Orice SGBD modern furnizează un limbaj de interogare a datelor, de obicei tip SQL (“Structured Data Language”) sau cel puțin câteva instrucțiuni SQL, ce permit utilizatorilor să obțină mult mai rapid și mai simplu informațiile dorite, decât dacă ar utiliza un program scris într-un limbaj procedural pentru care efortul de programare nu ar fi fost deloc neglijabil.
Limbajele de interogare pot fi clasificate in două categorii:
a). limbaje algebrice, în care interogarile asupra relațiilor sunt exprimate prin intermediul unor operatori aplicați asupra lor. În aceasta categorie se încadrează limbajul SQL.
b). limbaje bazate pe calcul relațional, în care interogările asupra relațiilor sunt exprimate prin intermediul unor condiții (predicate) pe care tuplele relațiilor trebuie să le satisfacă. Această categorie de limbaje se clasifică la rândul ei in două categorii, in funcție de obiectul asupra căruia se aplică operația și anume:
b1). Limbaje bazate pe calculul relațional orientat pe tuple, în care predicatele se aplică asupra tuplelor relațiilor, reprezentativ fiind aici QUEL, limbajul de interogare Ingres;
b2). Limbaje bazate pe calcul relațional orientat pe domenii, în care predicatele domeniului din care ia valori atributul relației. Reprezentativ pentru această categorie este QBE, limbajul de interogare dezvoltat de IBM.
Pentru reprezentarea structurii logice a datelor dintr-o bază de date s-au impus de-a lungul ultimilor decenii trei modele și anume: modelul ierarhizat, care presupune crearea unei structure arborescente de reprezentare a datelor, modelul rețea, în care elementele ce reprezintă datele sunt legate intre ele prin pointeri, formându-se astfel o rețea, și modelul relațional, acesta din urmă impunându-se net în fața celorlalte două, fiind la ora actuală la baza realizării majorității produselor software din lumea bazelor de date.
În esență, o bază de date relațională poate fi gândită ca o colecție de tabele bidimensionale ce se numesc relații, coloanele (atributele relației) au anumite distincte, iar rândurile (tuple) conțin elemente ale datelor ce poartă numele de entități.
Făcând analogia dintre o relație și un fișier, fiecărei tuple îi corespunde o înregistrare, iar unui atribut un câmp al înregistrării.
Pentru a păstra o mulțime variată de informații pe un support magnetic al unui sistem de calcul, sunt mai multe posibilități de organizare a datelor sub forme de tabele si relații. Organizarea datelor intr-o bază de date sub forma mai multor tabele poartă numele de schema reprezentării datelor.
O schemă nu specifică doar care sunt coloanele ce intră în componența fiecărui tabel, ci va stabili de asemenea legătura logică între entitățile stocate în baza de date.
2.2 Fundamente ale limbajului SQL
Baze de date relaționale
Termenul de bază de date relațională se referă la o colecție de date, structurate sub forma mai multor tabele ce poartă numele de relații. Desigur, pe un calculator pot fi păstrate mai multe baze de date ale aceluiași utilizator, în particular să presupunem ale unei firme. Informațiile din bazele de date vor reflecta activitățile curente ale firmei respective.
Proiectantul bazelor de date este acela care va stabili care vor fi entitățile (obiecte din lumea reală) ce vor face parte din înregistrările bazei de date, precum și legăturile dintre ele. Unele aplicații pot necesita informații dintr-o singură bază de date, iar altele din mai multe baze de date.
Relații și tabele
O relație este asemenea unui tabel alcătuit din rânduri și coloane, dar care nu se află aranjate într-o anumită ordine și care respectă condiția că două sau mai multe rânduri, respectiv coloane, să nu conțină informație identică.
Păstrând termenii specifici modelului relațional, coloanele tabelelor poartă numele de atribute, cu precizarea că, capetele de coloană se vor intitula numele atributelor, iar valorile datelor din coloane, valorile atributelor. În mod asemănător, rândurile vor purta numele de tuple.
Prin urmare, diferențele între o relație și un tabel sunt următoarele:
– atributele și tuplele unei relații nu sunt ordonate, în timp ce într-un tabel există o ordonare atât a coloanelor, cât și a rândurilor;
– două tuple ale unei relații nu pot avea valori identice, în timp ce într-un tabel două sau mai multe rânduri ce ocupâ poziții diferite în tabel pot conține valori identice.
Respectând conceptele tradiționale pentru o bază de date, bazele de date relaționale pot fi percepute ca o mulțime de fișiere convenționale, fiecare având un singur tip de înregistrare. Prin urmare, fiecărui fișier îi corespunde în mod echivalent o relație, câmpurilor înregistrărilor le corespund atributele relației, iar inregistrărilor fișierului, tuplele.
Fiecare atribut dintr-o bază de date relațională este definit pe un anumit domeniu, de unde acesta va lua valori. La randul său, mulțimea domeniilor pe care este definită o bază de date formează vocabularul acelei baze de date.
Chei primare, chei secundare
O cheie este formată din numărul minim de atribute, astfel alese încât valorile acestor atribute sunt unice. În consecință, fiecare tuple al relației este identificată în mod unic de valorile cheii respective. De remarcat că într-o relație pot fi mai multe grupuri de atribute care verifică în mod unic tuplele relației, deci acestea reprezintă chei ale relației respective.
Cheie primară.
Pentru fiecare relație se alege o cheie candidat care va fi desemnată ca fiind cheia primară a relației. Celelalte chei candidat, dacă există, poartă denumirea de chei alternante.
Cheie străină
Un ansamblu de atribute (eventual un singur atribut) al unei relații R care în același timp este cheie primară sau alternantă în altă relație S, nu neapărat distinctă de R și care respectă regula integrității referențiale (RIR) adică valorile cheii străine, dacă nu sunt nule, se regăsesc printre valorile cheii primare (candidat) a relației S.
2.3 Definirea datelor
Partea de definire a datelor dintr-un limbaj de interogare de tip SQL, mai precis sublimbajul de definire a datelor DDL (“Data Definition Language”), include instrucțiuni ce permit realizarea următoarelor acțiuni:
crearea schemei bazei de date;
adăugarea relațiilor la schema bazei de date;
ștergerea relațiilor existente din schema bazei de date;
adăugarea de atribute la o relație care deja există;
optimizarea bazei de date (indexare);
restricții cu privire la utilizarea structurilor de mai sus;
definirea structurii logice și fizice a unei baze de date;
restricții privind integritatea unei baze de date.
O schemă de baze de date descrie relațiile, atributele relațiilor, domeniile din care aceste atribute iau valori, restricțiile de integritate, drepturile de utilizare a relațiilor, vizualizărilor și detalii relative la implementarea fizică a relațiilor.
O bază de date relațională de tipul SQL, conține următoarele obiecte:
– relatii;
– vizualizări, care reprezină așa-numitele relații virtuale ce constau din anumite atribute și tuple selectate din una sau mai multe relații;
– sinonime, care reprezintă nume alternative (așa-numitele “alias”-uri), acestea fiind asociate relațiilor și respective vizualizărilor;
– indecși, utilizați pentru optimizarea accesului la date, optimizarea interogărilor și păstrarea integrității bazei de date;
– cataloage, care reprezintă mulțimea relațiilor din fiecare baza de date. Aceste cataloage descriu bazele de date și conținutul lor.
Specificarea bazelor de date nu a fost descrisă de catre standardul ANSI și prin urmare conceptul de bază de date este implementat diferit sub diversele versiuni ale limbajului de interogare SQL. Cu toate acestea, standardul ANSI conține o instrucțiune pentru definirea unei scheme a bazi de date (CREATE SCHEMA). Standardele ISO specifică faptul că aceasta instrucțiune poate descrie facilitățile oferite utilizatorilor schemei de baze de date, detaliile despre specificarea privilegiilor de acces fiind necesar să fie acordate de cel ce realizează baza de date.
Majoritatea implementărilor limbajului SQL conțin instrucțiuni pentru crearea unei baze de date, fie că acestea fac parte din setul de comenzi al versiunii SQL, fie sub forma de programe utilitare care pot fi rulate din sistemul de operare.
2.4 Crearea schemei unei baze de date
In DBASE IV SQL comanda de creare a unei baze de date este următoarea:
CREATE DATABASE [calea]<numele bazei de date>;
Această instrucțiune determină crearea unei baze de date SQL și definirea cataloagelor SQL în directorul specificat pentru noua bază de date. Cataloagele vor fi folosite pentru stocarea informațiilor despre relații, vizualizări, sinonime și indecși.
Denumirea bazei de date, calea (unitate disct:\director\subdirector\…), numele de utilizator și data sunt stocate în catalogul SYSDBS, care conține lista tuturor bazelor de date din sistem; la crearea unei noi baze de date se va mai adăuga o tuplă în aceasta relație. Facem precizarea că denumirea bazei de date trebuie să fie unică, iar calea este formată din maxim 64 de caractere.
2.5 Adăugarea relațiilor în baza de date
Pentru a adăuga o nouă relație într-o bază de date, trebuie specificate:
– numele relației;
– numele atributelor relației;
– tipul de date al valorilor atributelor relației.
Tipuri de date
Standardul ISO 1987, definește 8 tipuri de date:
CHARACTER
DECIMAL
SMALLINT
REAL
NUMERIC
INTEGER
FLOAT
DOUBLE PRECISION
În funcție de versiune, diferitele implementări ale SQL permit diverse variante atât în ce privește definirea tipurilor de date, cât și în ce privește notația folosită pentru ele. Merită remarcat faptul că standardul ISO97, nu permite definirea tipului de date DATE.
Dialectul ORACLE permite utilizarea a 4 tipuri de date, după cum urmează:
CHAR
NUMBER
DATE(formatul standard “dd-mm-yy”)
LONG, din care cel mai mult utilizate sunt primele trei.
Formatul de afișare a datelor
In DBASE IV, comenzile specifice sunt SET CENTURI ON, pentru afișare cu 4 cifre și SET CENTURI OFF pentru afișare cu 2 cifre, cu precizarea că se pot introduce doar date din secolul XX.
Comanda ce descrie formatul de afișare a datei este:
SET DATE <nume format> , cu precizarea cș implicit este formatul American.
2.6 Ștergerea relațiilor dintr-o bază de date
Pentru ștergerea unei relații, se utilizează comanda DROP TABLE. Această comandă trebuie utilizată cu precauție, deoarece determină ștergerea datelor cât și a indecșilor, vizualizărilor și sinonimelor definite pentru relație, fără nici o posibilitate de recuperare ulterioară a informației șterse.
Sintaxa comenzii este: DROP TABLE <nume relatie>;
În dialectal ORACLE, comanda DROP TABLE determină ștergerea indecșilor și a privilegiilor de utilizare a relației, cât și invalidarea vizualizărilor și sinonimelor definite de relația respectiva. Acestea din urmă vor trebui șterse prin comenzi separate (DROP VIEW, DROP SYNONIM). Validarea vizualizărilor și sinonimelor se poate face prin redefinirea relației. Nu se pot șterge relațiile protejate prin parolă, create de alți utilizatori, numai de către cel care a creat relația respectiva sau de administratorul bazei de date.
2.7 Optimizarea unei baze de date
De la început trebuie precizat faptul că exista multe căi de îmbunătățire a performanțelor bazelor de date SQL, unele din ele fiind specific unei anumite implementări de SQL.
2.8 Indexare
Un index reprezintă o cale rapidă de localizare a tuplelor dintr-o relație, prin gruparea tuturor tuplelor pentru un anumit atribut sau un grup de atribute.
Indexarea este utilizată în două scopuri principale:
– accelerarea căutărilor în baza de date;
– asigurarea unicității tuplelor.
Indexarea se referă mai degrabă la structura fizică a bazei de date decât la structura logică, adică la modul de accesare a datelor.
Un index poate fi gândit ca o relație cu două atribute: primul atribut conține valorile atributelor relației bazei de date pentru care se creează indexul, iar al doilea conține un pointer la locația tuplelor corespunzătoare. Valorile sunt aranjate fie în ordine descendentă cheii de indexare, fie în ordine ascendentă.
2.9 Restricții cu privire la utilizarea unei baze de date
În contextual bazei de date, asigurarea securității sistemului înseamnă asigurarea protecției datelor față de accesul neautorizat, modificarea sau distrugerea sa.
Asigurarea securității se realizează pe mai multe niveluri:
– nivelul 1 : autorizarea utilizatorilor pentru conectarea in sistemul SQL
– nivelul 2 : asigurarea dreptului de utilizare a bazei de date, relative la relații.
La nivelul cel mai înalt de securitate, utilizatorului îi este acordat un nivel de acces la sistem, prin comanda GRANT prin asigurarea:
– numelui de utilizator
– parolei
– nivelului de autorizare pentru efectuarea operației asupra bazelor de date SQL.
Majoritatea versiunilor de SQL necesită pentru conectarea utilizatorului în sistem, un nume de utilizator și o parolă. SQL va scana dicționarul de sistem și permite conectarea în sistem, cu anumite drepturi de acces la relații sau vizualizări.
Drepturile de acces variază în funcție de operațiile ce se efectuează asupra relațiilor (SELECT, UPDATE etc.), cât și de modul de aplicare: asupra întregii relații sau numai asupra unor atribute.
Drepturile de acces acordate utilizatorului pentru o anumită relație au prioritate față de drepturile generale. Un utilizator care are drept de acces pentru actualizarea oricărei relații din baza de date (UPDATE), poate să aibă pentru o anumită relație doar drept față de interogare (SELECT).
Controlul asupra bazei de date rezultă din combinația dintre autorizare pentru accesul în sistem și drepturile de acces asupra bazei de date și este indeplinită de către administratorul bazei de date.
2.10 Accesul on-line la baze de date aflate la distanță
Dezvoltarea fără precedent în ultimii ani a telecomunicațiilor a determinat extinderea unor servicii specific cum este cel al accesării bazelor de date aflate la distanță prin intermediul unei rețele de telecomunicații, prin care se realizează transmiterea electronică a informațiilor, cu economisirea timpului și a costurilor aferente.
Accesul on-line la baze de date aflate la distanță și care conțin informații cu o tematică foarte diversă. Accesul la aceste baze de date, presupune folosirea unui limbaj de interogare a datelor care să permită regăsirea informațiilor stocate pe un calculator puternic, de obicei un “mainframe”, într-o formă foarte bine structurată. Se poate observa că acest tip de serviciu este orientat spre o comunicație de la persoană la calculator.
Economisirea timpului de obținere a informațiilor căutate, volumul mare de date ce pot fi transferate și viteza comunicației, sunt toate argumente ce vor determina cu siguranță extinderea în continuare a acestui serviciu în anii ce vin, transformându-l într-o practică curentă.
De astfel este un lucru deja foarte uzual pentru multe firme comerciale sau organizații publice din țările avansate să stocheze pe un calculator cantitatea imensă de informații relative la instituțiile respective, sub forma unor baze de date. Aceste informații pot prezenta interes și pentru alți utilizatori din afară, devenind astfel baze de date publice și un bun mijloc de promovare a activităților organizațiilor respective și de dezvoltare a colaborărilor între ele.
Deci practic, orice utilizator poate accesa aceste baze de date de pe un alt calculator aflat la distanță, cu condiția ca acesta să fie autorizat printr-o parolă acordată de organizația gazdă a bazelor de date. Desigur, în funcție de calitatea și consistența informațiilor conținute în bazele de date respective, accesul la unele dintre acestea se face contra cost la un tarif perceput pe minut.
Spre exemplu, în S.U.A. tarifele anuale percepute de diferite organizații gazdă pentru acest tip de serviciu depășesc cifra de 2 miliarde $ , la un număr de peste 2.000 de baze de date publice.
Cea mai simplă modalitate de a accesa o bază de date la distanță se poate face utilizând un calculator și un modem conectat la linia telefonică. După realizarea conexiunii, utilizatorul aflat la distanță va trebui să introducă de la tastatură un cod de acces, un număr de indentificare și parolă proprie. Dupa ce s-a trecut cu success de acest pas, pe ecranul terminalului aflat la distanță va apărea un meniu ce ii permite acestuia alegerea unor opțiuni de lucru și îl va ajua să “navigheze” în bazele de date pentru a ajunge la informațiile dorite.
Să mai remarcăm faptul că tariful orar perceput de diferite organizații gazdă, depinde de obicei de valoarea comercială a informației dar și viteza de comunicație utilizată. De exemplu, tariful este dublu pentru un transfer al datelor la viteza de 1200 biți/sec față de cazul în care se utilizează viteza de 300 biți/sec.
Capitolul 3. Limbajul C#
Lansat publicului în iunie 2000 și oficial în primăvara anului 2002, C# este un limbaj de Programare care combină facilități testate de-a lungul timpului cu inovații de ultim moment.
Creatorii acestui limbaj au fost o echipă de la firma Microsoft condusă de Anders Hejlsberg.Deși limbajul este creat de Microsoft, acesta nu este destinat doar platformelor Microsoft.
Compilatoare C# există și pentru alte sisteme precum Linux sau Macintosh. Creat ca Instrument de dezvoltare pentru arhitectură.NET, limbajul oferă o modalitate facilă și
Eficiența de a scrie programe pentru sistemul Windows, Internet, componente software etc.
C# derivă din două dintre cele mai de succes limbaje de programare: C și C++. De Asemenea, limbajul este o “rudă” apropiată a limbajului Java.
3.1 Structura unui program C#
using System;
namespace HelloWorld
{
class Program
{
static void Main ()
{
Console. WriteLine (“Universitatea din Pitești!”);
}
}
}
O aplicație C# este formatã din una sau mai multe clase, grupate în spații de nume (namespaces). Un spațiu de nume cuprinde mai multe clase cu nume diferite având funcționalitãți înrudite.
Douã clase pot avea același nume cu condiția ca ele sã fie definite în spații de nume diferite. În cadrul aceluiași spațiu de nume poate apãrea definiția unui alt spatiu de nume, caz în care avem de-a face cu spații de nume imbricate. O clasã poate fi identificatã prin numele complet (nume precedat de numele spațiului sau spațiilor de nume din care face parte clasa respectivã, cu separatorul punct).
În exemplul nostru, Universitatea din Pitești.
Program este numele cu specificație completã al clasei Program.
3.2 Tipuri de date in limbajul C#
În C# existã douã categorii de tipuri de date:
• tipuri valoare
tipul simple: byte, char, int, float etc;
tipul enumerare – enum;
tipul structurã – struct.
• tipuri referințã
tipul clasã – class;
tipul interfaþã – interface;
tipul delegat – delegate;
tipul tablou – array.
3.3 Relația dintre C# și arhitectura.NET
C# are o legătură deosebită cu mediul său de rulare, arhitectura.NET. Pe de o
Parte, C# a fost dezvoltat pentru crearea codului pentru arhitectură.NET, iar pe de altă parte bibliotecile utilizate de C# sunt cele ale arhitecturii.NET.
Arhitectura.NET definește un mediu de programare care permite dezvoltarea și
Execuția aplicațiilor indiferent de platformă. Aceasta permite programarea în limbaj mixt și
Oferă facilități de securitate și portabilitate a programelor. Este disponibilă deocamdată
Pentru platformele Windows.
ADO.NET
ADO.NET (ActiveX Data Objects) reprezintã o parte componentã a nucleului.NET Framework ce permite conectarea la surse de date diverse, extragerea, manipularea și actualizarea datelor.
De obicei, sursa de date este o bazã de date, dar ar putea, de asemenea, sã fie un fișier text, o foaie Excel, un fișier Access sau un fișier XML.
Arhitectura ADO.NET
Componentele principale ale ADO.NET sunt DataSet si Data Provider. Ele au fost proiectate pentru accesarea si manipularea datelor.
Furnizorul de date permite unei aplicații sã se conecteze la sursa de date, executã comenzi si salveazã rezultate. Fiecare furnizor de date cuprinde componentele Connection, Command, DataReader si DataAdapter.
Connection
Înainte de orice operație cu o sursã de date externã, trebuie realizatã o conexiune (legãturã) cu acea sursã. Pentru deschiderea unei conexiuni prin program se poate instanția un obiect de tip conexiune, precizându-i ca parametru un șir de caractere conținând date despre conexiune.
Proprietăți:
A) ConnectionString (String, cu accesorii de tip get și set) definește un șir care permite
Identificarea tipului și sursei de date la care se face conectarea și eventual contul și parola de acces. Conține lista de parametri necesarii conectãrii sub forma parametru=valoare, separați prin;.
B) ConnectionTimeout (int, cu accesor de tip get): specificã numãrul de secunde pentru care un obiect de conexiune poate sã aștepte pentru realizarea conectãrii la server înainte de a se genera o excepþie. (implicit 15). Se poate specifica o valoare diferitã de 15 în ConnectionString folosind parametrul Connect Timeout, Valoarea Timeout=0 specificã așteptare nelimitatã.
C) Database (de tip string, read-only): returneazã numele bazei de date la care s–a fãcut conectarea. Este necesarã pentru a arãta unui utilizator care este baza de date pe care se face operarea
D) Provider (de tip string, read-only): returneazã furnizorul de date.
E) ServerVersion (de tip string, read-only): returneazã versiunea de server la care s-a fãcut conectarea.
F) State (enumerare de componente ConnectionState, read-only): returneazã starea curentã a conexiunii. Valorile posibile: Broken, Closed, Connecting, Executing, Fetching, Open.
Metode:
A) Open (): deschide o conexiune la baza de date;
B) Close () și Dispose (): închid conexiunea și elibereazã toate resursele alocate pentru ea;
C) BeginTransaction (): pentru executarea unei tranzacþii pe bază de date; la sfârºit se apeleazã Commit () sau Rollback ();
D) ChangeDatabase (): se modificã baza de date la care se vor face conexiunile. Noua bazã de date trebuie sã existe pe acelaºi server ca ºi precedent;
E) CreateCommand (): creeazã o comandã (un obiect de tip Command) validã asociatã conexiunii curente.
Evenimente:
A) StateChange: apare atunci când se schimbã starea conexiunii. Handlerul corespunzãtor (de tipul delegat StateChangeEventHandler) spune între ce stãri s-a fãcut tranziþia.
B) InfoMessage: apare când furnizorul trimite un avertisment sau un mesaj cãtre client.
Command
Clasele din categoria Command (SQLCommand, OleDbCommand etc.) conțin date referitoare la o comandã SQL (SELECT, INSERT, DELETE, UPDATE) și metode pentru executarea unei comenzi sau a unor proceduri stocate.
Proprietăți:
A) CommandText (String): conține comanda SQL sau numele procedurii stocate care se executã pe sursa de date.
B) CommandTimeout (int): reprezintã numãrul de secunde care trebuie sã fie așteptat pentru executarea comenzii. Dacã se depășește acest timp, atunci se genereazã o excepție.
C) CommandType (enumerare de componente de tip CommandType): reprezintã tipul de comandã care se executã pe sursa de date. Valorile pot fi: StoredProcedure (apel de procedurã stocatã), Text (comandã SQL obișnuită), TableDirect (numai pentru OleDb)
D) Connection (System. Dată. [Provider]. PrefixConnection): conþine obiectul de tip conexiune folosit pentru legarea la sursa de date.
E) Parameters (System. Dată. [Provider]. PrefixParameterCollection): returneazã o colecție de parametri care s-au transmis comenzii.
F) Transaction (System. Dată. [Provider]. PrefixTransaction): permite accesul la obiectul de tip tranzacție care se cere a fi executat pe sursa de date.
Metode:
A) Constructori:
SqlCommand ()
SqlCommand (string CommandText)
SqlCommand (string CommandText, SqlConnection con)
SqlCommand (string CommandText, SqlConnection con, SqlTransaction trans)
B) Cancel () oprește o comandã aflatã în executare.
C) Dispose () distruge obiectul comandã.
D) ExecuteNonQuery () executã o comandã care nu returneazã un set de date din baza de date; dacã comandă a fost de tip INSERT, UPDATE, DELETE, se returneazã numãrul de înregistrãri afectate.
E) ExecuteReader () executã comandă și returneazã un obiect de tip DataReader.
F) ExecuteScalar () executã comandă și returneazã valoarea primei coloane de pe primul rând a setului de date rezultat; folosit pentru obținerea unor rezultate statistice.
G) ExecuteXmlReader () returneazã un obiect de tipul XmlReader obținut prin interogare.
Capitolul 4. Limbajul HTML (HyperText Markup Language)
HTML a fost proiectat sã poatã opera cu funcționalitățile multimedia ale WWW.
Limbajul de marcare permite transformarea oricãrui text într-un hipertext prin introducerea unor marcaje, care vor indica modul cum se efectuează legãturile documentului, cum vor apãrea paginile documentului etc.
Un document HTML este un fișier text obișnuit (cunoscut și sub denumirea de fișier ASCII) care conține, pe lângă informațiile textuale propriu-zise, marcaje pentru utilizarea opțiunilor de formatare și de conectare. Numim tag un asemenea marcaj. Un tag se introduce în text sub forma <nume_tag>, unde parantezele unghiulare sunt elementele care indicã prezența unui tag. Numele marcajelor poate fi scris oricum, limbajul nefiind senzitiv la litere mări/litere mici. Existã douã tipuri de marcaje:
individuale;
perechi (containere).
Un tag individual are o acțiune bivalentă, de genul începutul unei noi linii (care terminã deci linia anterioarã) sau introducerea unui nou termen într-o listã (ceea ce terminã termenul anterior).
Un container este alcãtuit din tag-ul de început, conținutul și tag-ul de sfârșit. Forma generalã este
<nume_tag> conținut </nume_tag>
Unde se remarcã faptul cã sfârșitul unui tag este indicat prin utilizarea caracterului "/" în fata numelui de tag.
Anumite tag-uri admit precizarea unor atribute/opțiuni. Acestea se scriu în tag-ul de început, între parantezele unghiulare ale acestuia, domeniul lor de existentã fiind, în general, cel al tag-ului. Forma generalã este deci:
<nume_tag optiune1=valoare1 optiune2=valoare2 …>
continut
</nume_tag>
de unde se va reține faptul cã opțiunile sunt separate prin spații și cã sunt scrise în tag-ul de început.
În ceea ce privește ordinea marcajelor, în cazul în care sunt mai multe deschise, primul tag deschis va fi ultimul închis (mai exact, ordinea va fi inversă față de cum au fost deschise).
Exemplu:
<p><b>Ordine corectǎ a marcajelor</b></p>
<p><b>Ordine incorectǎ a marcajelor</p></b>
4.1 Secțiunile unui document HTML
Un document HTML este încadrat de containerul HTML cu sintaxa:
[<HTML>
Documentul HTML]
[</HTML>]
unde documentul HTML reprezintã un întreg document. Tag-ul <HTML> trebuie sã fie primul tag din document, iar tag-ul de sfârșit </HTML> trebuie sã fie ultimul tag din document.
Un document HTML conține douã secțiuni:
secțiunea HEAD este întotdeauna prima;
secțiunea a doua diferă în funcție de forma pe care o are pagină web construită:
BODY caracteristica documentelor afișate într-o singură fereastră);
FRAMESET caracteristica documentelor afișate într-o structură complexă de ferestre.
Un document HTML are structura minimalã:
<HTML>
<HEAD>
<TITLE>
Document minimal
</TITLE>
</HEAD>
<BODY>
Acesta este cel mai simplu document HTML.
</BODY>
</HTML>
În modul aceasta va fi transformat codul de mai sus (cod scris într-un editor simplu, cum ar fi Notele) atunci când va fi vizualizat într-un browser:
Linia de comentariu este introdusă în HTML astfel:
<! textul comentariului>
Rolul principal al comentariilor este cel usual in orice limbaj de programare, însă apare și o funcție nouă, și anume aceea de a “ascunde” anumite porțiuni ale textului, porțiuni ce vor fi interpretate doar de unele browsere.
În același sens se poate remarca faptul cã editorul Netscape (și nu numai) introduce în fața documentului o linie de comentariu care conține anumite informații (posibil a fi interpretate de browsere), cum ar fi versiunea HTML utilizatã, editorul utilizat.
De exemplu, pentru HTML 3.2, aceastã linie aratã:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
și unii autori recomandã prezența unei astfel de linii.
Aranjarea textului
Unitatea principalã de text este paragraful, care se remarcã prin lãsarea unui spațiu vertical suplimentar dupã el. Textul este aliniat, implicit, la stânga și este zdrențuit în partea dreaptã.
Paragrafele (și în general elementele care introduc informațiile vizibile celor care vizitează paginile Web) vor fi scrise în secțiunea BODY a documentului HTML.
Pentru a insera paragrafe în HTML, se folosesc următoarele tag-uri:
<p></p> pentru paragraf obișnuit;
<h1></h1>, <h2></h2>…<h6></h6> utilizate pentru titlu, subtitlu, subsubtitlu s.a.m.d.
Exemple:
<p align="center">Paragraf aliniat centrat</p>
<h1 align="left">Titlu aliniat la stanga</h1>
4.2 Legãturi în documente HTML
Printr-o legãturã într-un document HTML înțelegem marcajul locului de unde se poate efectua trecerea (cuplarea, conectarea) la un alt document sau la o nouã locație din documentul curent. Un loc marcat mai este denumit ancorare.
Marcajele pot fi de douã tipuri:
Legãturi cãtre alte locații: acestea se vor caracteriza prin textul legãturii (vizibil în documentul afișat pe ecran) și prin adresa la care se poate efectua un salt; textul legãturii va apãrea pe ecran subliniat, într-o culoare diferitã de cea a textului adiacent; adresa tintã a legãturii apare (dacã nu s-a indicat alt text) pe linia de stare a ferestrei browser-ului atunci când pointerul mouse-ului este pe textul legãturii;
Definiri de nume care au doar rolul de a introduce ținte pentru legãturi; nu sunt diferențiate în documentul afișat pe ecran.
Exemplu:
<A HREF="link-url" [ REL="tip-rel"] [ REV="tip-rev"] [ TITLE="title-name"] [ TARGET=window|_blank|_parent|_self|_top]>
text_legaturã
</A>
unde link-url este adresa documentului (relativă sau absolută) cãtre care se poate efectua saltul.
TARGET este utilizat pentru a preciza unde va fi afișat documentul referit (dacã se va activa legãtura, bineînțeles). Valorile posibile sunt:
"nume fereastrã" – indicând exact fereastra de afișare, dacã nu existã este creatã;
_blank – o fereastrã nouã;
_parent – fereastra pãrinte (cea anterioarã);
_self – în aceeași fereastrã ca și documentul curent (valoarea implicitã);
_top – în fereastra inițială.
4.3 Liste în HTML
Enumerãrile, de orice fel, constituie o parte importantã a comunicãrii prin faptul cã ajutã la sistematizarea și evidențierea unor intrãri.
Există următoarele tipuri de liste:
neordonate, cu buline sau fără;
ordonate;
de definiție.
Listele pot fi imbricate, o întreagã listã poate fi element în altã listã.
Primele douã tipuri de liste au ca punct comun noțiunea de element al listei (item), definit prin tag-ul LI.
Pentru listele de definiții un element are structura ceva mai complexã (elementul definit și definiția în sine).
Forma generală a unei liste:
<LI[ VALUE=nnnn] [ TYPE=1|a|A|i|I|disk|square|circle]>
element-de-lista
[</LI>]
TYPE permite (nu în toate browser-ele) sã se fixeze stilul pentru buline sau pentru numerotãri:
1 – numãr arabic (implicit);
a – litere mici;
A – litere mari;
i – numãr roman mic (i, iv etc.);
I – numãr roman mare (I, IV etc.);
disk – cerc plin (implicit pentru liste neordonate);
square – pãtrat plin;
circle – cerc gol.
VALUE indicã valoarea numericã de început pentru o listã ordonatã. Implicit este 1 și nu trebuie specificatã la orice intrare LI ci numai dacã o listã este întreruptã printr-un alt text, necesitând un alt început de numerotare.
Liste ordonate
O listã ordonatã este caracterizatã prin aceea cã intrãrile ei sunt numerotate. Tag-ul de definire este OL. Exemplu:
<ol type="a" start="3">
<li>Anglia</li>
<li>Franța</li>
<li>Italia</li>
<li>Romȃnia</li>
<li>Spania</li>
</ol>
Liste neordonate
O listǎ neordonatã poate fi realizatã prin tag-urile UL, DIR, MENU. Primul are, în general, acelasi efect în toate browser-ele, iar celelalte pot prezenta diferențe de implementare. Exemplu:
<ul type="circle">
<li>mere</li>
<li>pere</li>
<li>gutui</li>
<li>prune</li>
</ul>
Multimedia – Imagini
Imaginile care pot fi încãrcate în documentul curent trebuie sã fie sub format JPG sau GÂF. Încãrcarea lor se face fãrã a pãrãsi documentul și utilizarea lor este justificatã atât de motive de prezentare atractivã a materialului, cât și de motive de completare/înlocuire a informației textuale. Tag-ul dedicat imaginilor in-line este IMG, el neposedând un tag de sfârșit.
Forma generală cea mai scurtă este următoarea:
<IMG SRC="URL-imagine” > [text]
unde SRC specificã adresa fișierului care conține imaginea.
Marcatorul <img> poate fi însoțit și de unele atribute, cum ar fi: src, align, width, height, alt s.a.
De regulă, sunt specificate dimensiunile reale a imaginilor. Mărirea acestora nu este recomandată deoarece se pierde din calitatea acesteia, iar micșorarea se poate realiza într-un editor grafic, astfel micșorându-se dimensiunea fișierului (ceea ce duce la o încărcare mai rapidă a întregii pagini Web).
Exemple:
<!– specificarea adresei absolute –>
<img src="http://petinsurance.com/CaneCorso_23.jpg" alt="Ochi">
<!– specificarea adresei relative si a dimensiunilor reale a imaginilor –>
<img src="caine.jpg" alt="Cane-Corso" height="180" width="350">
Tabelarea datelor
Marcarea unui tabel se efectueazã printr-un tag de introducere a tabelului și definire a atributelor globale, tag-ul TABLE, containerul respectiv conținând, apoi, definițiile pentru liniile și coloanele tabelului.
Forma generală a marcãrii unui tabel este:
<TABLE>
<CAPTION>…</CAPTION> – titlul tabelului
<TR><TH><TH>… </TR> – linie antet
<TR><TD><TD>… </TR> – linie curentã
…
<TR><TD><TD>… </TR> – linie curentã
</TABLE>
Tag-ul <TABLE> poate fi însoțit de atribute, precum: align (left|right|center), border (valoare numerică), width (valoare numerică|procente), cellspacing (valoare numerică), cellpadding (valoare numerică), s.a.
Exemplul urmãtor va afișă un tabel cu douã coloane și douã linii plus o linie de antet:
<TABLE>
<TR><TH>Coloana 1</TH><TH>Coloana 2</TH></TR>
<TR><TD>Celula 1.1</TD><TD>Celula 1.2</TD></TR>
<TR><TD>Celula 2.1</TD><TD>Celula 2.2</TD></TR>
</TABLE>
Rǎspunsul returnat ȋn browser va fi urmatorul:
La rândul lor, marcatorii TR și TD pot avea următoarele atribute:
align (left|right|center) specifică alinierea textului în cadrul celulei. Pentru TD este implicita valoarea “left”, iar pentru TH valoarea “center”;
valign (top|middle|bottom) specifică alinierea textului din celulă pe verticală. Valoarea implicită este “middle”;
colspan (valoare numerică) Stabilește numărul de coloane pe care se întinde celula respectivă;
rowspan (valoare numerică) Stabilește numărul de rânduri din table pe care se întinde celula respective;
width (valoare numerică|procente) Indica lățimea celulei. De regulă, se specifică doar lățimile celulelor din prima linie, acestea fiind și lățimile coloanelor.
Capitolul 5. Standardul CSS
Un fișier Cascading Style Sheet (CSS-foi în stil cascada) descrie modul de reprezentare al unei pagini HTML, într-un fișier separat.
CSS-ul are următoarele avantaje:
– Separă conținutul de prezentare;
– Permite definirea modului de afișare și layout-ul tuturor paginilor de pe un server web într-un singur loc;
– Poate fi utilizat atât pentru păgâni HTML cât și pentru documente XML.
Unul din dezavantajele CSS-ului este acela că nu toate browser-ele suporta CSS-uri.
5.1 Sintaxa normelor CSS
selector
{ propietate_1:valoare 1;
propietate_2:valoare 2;
………………..;
proprietate_n:valoare n;
}
O normă CSS se compune din:
selector – aceasta componenta, identifica elementul (sau elementele, cum vom vedea mai târziu) HTML, căreia i se aplică norma;
acoladele – definesc, mai bine zis delimitează, care proprietăți și cu ce valori se aplică elementului HTML;
proprietăți – sunt elementele de aspect care vrem să le modificăm; ele sunt de o mare diversitate, pornind de la culoare, dimensiuni, caractere;
valori ale proprietăților – sunt noile valori pe care vrem să le atribuim proprietății respective.
Există trei metode de a conecta CSS cu HTML, și anume:
stilizare în linie;
stilizare încorporate (internă);
stilizare externă.
Stilizarea în linie
Aceasta stilizare este asemănătoare și chiar mai greoaie decât cea folosind HTML.
Exemplu:
<p style="background:#179;
color:white;
padding:10px;">
Aici ar trebui sa avem un paragraf…..<br />
care are caracterele albe pe fond albastru.
</p>
Aici ar trebui sa avem un paragraf…..
care are caracterele albe pe fond albastru.
Stilizarea interna (embedded style)
Aceastǎ metodǎ se referǎ la plasarea codului CSS în interiorul fiecǎrei pagini html pe care doriți să folosiți stilurile respective, între tag-urile <head> </head>. Acest lucru se face ca în exemplul ce urmează:
<head>
<style type="text/css" media="screen">
p {background:black;
color:white;
padding:10px;}
</style>
</head>
Avantajul stilizării interne este acela că nu trebuie să inserați atributul style în fiecare element paragraph, adică puteți să stilizați toate paragrafele cu o singură definiție. Asta înseamnă că, dacă trebuie să modifici aspectul paragrafelor, poți face acest lucru dintr-o singură locație. Cu toate acestea, avantajul este limitat doar la o singură pagină, fiecare pagină necesitând o foaie de stil separată.
Stilizarea externă
Foile de stil externe dau posibilitatea de a pune toate definițiile CSS într-un singur fișier, ce va fi salvat cu extensia.css, după care va fi aplicat în documentul HTML, folosind un element link în marcajul HEAD al documentului.
Exemplu:
<head>
<link rel="stylesheet" href="styles.css" type="text/css" media="screen" />
</head>
Aceasta este metoda recomandată de a aloca stil unei pagini deoarece această foaie de stil se poate aplica întregului site, fiind identică pentru fiecare pagină.
Capitolul 6. Microsoft Visual Studio
Microsoft Visual Studio include un set complet de instrumente de dezvoltare pentru generarea de aplicații ASP.NET, Servicii Web XML, aplicații desktop și aplicații mobile. Visual Basic, Visual C++, Visual C# și Visual J# toate folosesc același mediu de dezvoltare integrat (IDE) care le permite partajarea instrumentelor și facilitează crearea de soluții folosind mai multe limbaje de programare
Microsoft Visual Studio oferă editor, compilator/debugger și mediu de proiectare (designer) pentru mai multe limbaje de programare.
Limbajele de programare incluse sunt:
-Microsoft Visual C++
-Microsoft Visual C#
-Microsoft Visual Basic
– Microsoft Visual Web Developer
-Team Foundation Server
Visual Studio permite :
-implementarea de aplicații software utilizând limbajele Visual Basic, C#, C++ și/sau J#.
-crearea de aplicații client/server utilizând servicii Web și instrumente integrate de design pentru accesarea datelor de la distanță
-dezvoltarea de aplicații Web, aplicații Windows și aplicații pentru dispozitive mobile din același mediu de dezvoltare.
Pentru a realizarea acestei aplicații cu ajutorul Visual Studio s-a produs parcurgerea următoarelor etape:
– proiectarea interfeței utilizator
– crearea unui proiect nou
– crearea de formulare
– adăugarea de controale formularelor, folosind caseta de instrumente
– crearea unei bare de meniu pentru funcțiile principale ale aplicației
– setarea proprietăților formularelor și controalelor
– scrierea codului
– testarea aplicației
– crearea fișierului executabil.
Capitolul 7. Prezentarea bazei de date
7.1 Introducere
Pe baza no¸tiunilor de mai sus, sub ˆındrumarea coordonatorului, am realizat aceast˘a aplica¸tie din dorin¸ta de a gestiona situația studenților din cadrul Universității.
Implementarea bazei de date
Am creat o baz˘a de date numit˘a Facultate iar ˆın interiorul acestei baze de date au fost create urmatoarele tabele populate:
Scheletul tabelului Studenți:
Scheletul tabelului Secretare:
Scheletul tabelului Specializare:
Scheletul tabelului Ani:
Scheletul tabelului Facultăți:
Scheletul tabelului Legături:
Scheletul tabelului Balanțe:
Scheletul tabelului Materii:
Scheletul tabelului Note:
Scheletul tabelului Profesori:
Diagrama rela¸tional˘a a bazei de date:
7.3 Implementarea aplica¸tiei ˆın ASP
Pagina Login
La ap˘asarea butonului de ”Login” se executț metoda verificare, această metodă este concepută pentru verificarea datelor utilizatorului care au fost introduce in căsuțele ‘’Nume” și “Parola”.
În continuare vom prezenta codul metodei verificare:
protected void Verificare()
{
string nume = textNume.Value;
string prenume="";
string parola = textParola.Value;
if(!nume.Contains('@'))
{
string[] words = nume.Split(' ');
nume = words[0];
if(words.Length==1)
{
Label1.Visible = true;
Label1.Text = "Nume incomplet!";
Label1.ForeColor = System.Drawing.Color.Red;
return;
}
prenume = words[1];
if(words.Length==3)
{
prenume += words[2];
}
}
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
SqlCommand Comanda;
cn.Open();
string id_user = "";
string verificareID = "";
string verificare1 = "select COUNT(*) from Studenti where (( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail='" + nume + "' )AND (parola = '" + parola + "' OR CNP = '" + parola + "')";
Comanda = new SqlCommand(verificare1, cn);
if(Convert.ToInt32(Comanda.ExecuteScalar().ToString()) == 1)
{
verificareID = "select id_student from Studenti where ( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail ='" + nume + "'";
Comanda = new SqlCommand(verificareID, cn);
id_user = Comanda.ExecuteScalar().ToString();
if (nume.Contains('@'))
{
string mail = nume;
string comanda_nume = "select nume from studenti where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_nume, cn);
nume = Comanda.ExecuteScalar().ToString();
string comanda_prenume = "select prenume from studenti where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_prenume, cn);
nume += " " + Comanda.ExecuteScalar().ToString();
}
else
{
nume += " " + prenume;
}
Session["NumeUtilizator"] = nume;
Session["IDUtilizator"] = id_user;
Session["TipUtilizator"] = "1";
}
cn.Close();
}
În cadrul primelor trei instrucțiuni declarăm stringurile: „Nume”, „Prenume”, „Parola”.
În acestea sunt stocate valorile care sunt preluate din interfața web. Deoarece Logarea se poate face și cu adresa de e-mail, nu doar cu numele, folosim o instrucțiune decizională „if”, pentru a verifica dacă există caracterul „@” in cadrul căsuței „Nume”.
În cazul în care Logarea se face cu Nume, pentru evitarea neclarităților, programul testează dacă numele a fost introdus complet, iar în caz contrar se afișează mesajul „Nume Incomplet”.
Dacă numele este introdus complet se poate trece la verificarea existenței acestuia în baza de date. Pentru efectuarea verificării userului în baza de date, este nevoie mai întâi de deschiderea unei conexiuni cu baza de date.
Pentru a stabili dacă Userul și Parola au fost introduse corect, se folosește o comandă „Select count”. Această comandă ne returnează cifra „1” în cazul în care acestea au fost introduse corect, iar în caz contrar ne returnează cifra „0”.
În cazul în care logarea se face folosind adresa de e-mail, verificarea se face tot cu o comandă „Select count” numai că de această dată se verifică mail-ul împreună cu parola.
După ce avem un rezultat pozitiv al verificării, în cadrul unor variabile de sesiune se reține ID-ul utilizaorului, numele utilizatorului și tipul utilizatorului.
Este nevoie de reținerea tipului utilizatorului deoarece în cadrul aplicației web se pot loga mai multe tipuri de utilizatori. În funcție de categoria utilizatorului, acesta este redirecționat către pagina „Home” categoriei corespunzătoare.
Pagina Master
Pentru o implementare mai simplă a diferitelor categorii de utilizatori, s-au folosit Form-uri web (pagini web) cu pagina Master.
Aceste pagini sunt necesare atunci când dorim să modificăm un element comun al mai multor pagini dintr-un singur punct de lucru. Avem câte o pagină Master pentru fiecare categorie de utilizator, respectiv Casier, Profesor, Secretară și Student.
Pagina Acasă pentru utilizatorul de tip [anonimizat] continuare vom prezenta și explica funcțiile care sunt disponibile categoriei de utilizatori de tip Student.
Pagina pentru vizualizare situației materiilor de către utilizatorul de tip [anonimizat] disponibile pentru utilizatorul de tip Student sunt vizualizarea notelor, vizualizarea situației financiare și modificarea profilului împreună cu datele personale.
În cadrul acestei pagini în care putem vizualiza notele, avem 3 Dropbox-uri și 2 butoane. Ca măsură de securitate, un student poate să vadă notele, de la facultățile la care este înscris.
Pentru ca această măsură să fie aplicată, cele 3 Dropbox-uri ce aparțin facultății, specialiarii respectiv anului vor fi populate cu ajutorul interogării bazei de date. Mai jos vom studia codul pentru popularea Dropbox-ului „Facultate”.
public void Populate1()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati As A inner join Legatura as B on A.id_facultate = B.id_facultate inner join Studenti as C on B.id_student = C.id_student where C.id_student =" + IDUtilizator;
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
Deoarece în momentul Login-ului s-a reținut în cadrul unei variabile de sesiune, ne folosim de această pentru a determina facultățile la care un student este înscris, lucru care se poate realiza printr-o interogare a bazei de date.
După ce interogarea a fost efectuată, datele sunt introduse in Dropbox-ul corespunzător facultăților.
În cadrul acestuia este salvat atât numele facultății cât și id-ul facultății.Popularea celorlalte dropboxuri se face înlănțuit, adică popularea dropboxului „Specializări” se face în funcție de facultatea care a fost selectată în primul Dropbox, iar dropboxul pentru ani se face în funcție de specializarea care a fost selectată (Dropbox 2).
Cele două butoane prezente în cadrul acestei pagini servesc la interogările bazei de date ale căror rezultate sunt notele studentului.
Avem 2 butoane pentru a ușura opțiunile studentului, având de ales între vizualizarea notelor doar pentru anul selectat cu ajutorul dropboxului sau pentru toți anii facultății.
În continuare vom prezenta codul rulat la evenimentul click al butoanelor:
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from note as A inner join MateriiAni as B on A.id_materie = B.id_materie inner join Materii as C on A.id_materie = C.id_materie
where id_student ='" + IDUtilizator + "' AND id_an = '" + ID_An + "' order by Nume ASC";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from note as A inner join MateriiAni as B on A.id_materie = B.id_materie inner join Materii as C on A.id_materie = C.id_materie where id_student ='" + IDUtilizator + "' order by Nume ASC";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
Pentru a afișa datele rezultate interogării bazei de date s-a folosit o structură de date de tip GridView.
Această structură de date este folosită pentru afișarea datelor sub forma unui tabel în care câmpurile bazei de date devin antetul tabelului.
Pagina pentru vizualizarea stării financiare de către utilizatorul [anonimizat] cadrul acestei pagini a aplicației web utilizatorul de tip student are posibilitatea de a-și vizualiza starea financiară pentru anii și facultățile la care este înscris.
Pagina este formată din trei dropboxuri și un buton.
Cele trei dropboxuri sunt populate la fel ca în pagina prezentată precedent, adică doar cu datele la care studentul are acces.
La apăsarea butonului se execută urmatorul cod:
protected void Button1_Click(object sender, EventArgs e)
{
Tabel = "";
string Total = "";
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select transa1,FORMAT(Transa1_data,'dd/MM/yyyy') AS Transa1_data,Transa2,FORMAT(Transa2_data,'dd/MM/yyyy') AS Transa2_data,Transa3,FORMAT(Transa3_data,'dd/MM/yyyy') AS Transa3_data,total from balante where id_Student = '"+IDUtilizator+"' and id_an = '"+ID_An+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
while (DataReader.Read())
{
Transa1 = DataReader.GetValue(0).ToString();
Data1 = DataReader.GetValue(1).ToString();
Transa2 = DataReader.GetValue(2).ToString();
Data2 = DataReader.GetValue(3).ToString();
Transa3 = DataReader.GetValue(4).ToString();
Data3 = DataReader.GetValue(5).ToString();
Total = DataReader.GetValue(6).ToString();
}
Datele care sunt necesare pentru a fi afișate la apăsarea butonului sunt stocate în cadrul unor variabile de tipul String.
S-a folosit o astfel de abordare deoarece afișarea acestora în pagina web se face folosind un tabel din limbajul html ( <table>).
Obținerea datelor din cadrul bazei de date se face printr-o interogare.
Stocarea în cadrul variabilelor declarate precedent se face folosind instrucțiunea:
while (DataReader.Read())
Pagina Profil student
În cadrul acestei pagini web utilizatorul are posibilitatea de a-și vizualiza și schimba datele personale.
Printre datele personale acesta regăsește: Nume, Prenume, CNP, Adresa, E-mail.
Utilizatorul are posibilitatea de a-și schimba E-mailul, Numărul de telefon și Adresa, întrucat pentru a-și schimba Numele, Prenumele sau CNP este nevoie de un utilizator cu drepturi mai mari precum Secretara.
Tot în cadrul acestui profil, utilizatorul are posibilitatea de a-și modifica parola doar dacă își cunoaște parola veche, în sens contrar parola nu poate fi schimbată.
La accesarea paginii se execută următorul cod:
protected void Button1_Click(object sender, EventArgs e)
{
string telefon = TextBox4.Text.Trim();
string adresa = TextBox5.Text.Trim();
string mail = TextBox6.Text.Trim();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "update studenti SET telefon = @telefon, adresa = @adresa, mail =@mail where id_student = @id_student";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@telefon", telefon);
Comanda.Parameters.AddWithValue("@adresa", adresa);
Comanda.Parameters.AddWithValue("@mail", mail);
Comanda.Parameters.AddWithValue("@id_student", IDUtilizator);
Comanda.ExecuteNonQuery();
cn.Close();
Populate();
}
protected void AreParola()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string select = "SELECT ISNULL(parola, 0) FROM studenti where id_student = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
string parola = Comanda.ExecuteScalar().ToString();
cn.Close();
if (parola.Trim().Equals("0"))
{
Label1.Visible = true;
Session["Parola"] = "0";
}
else
{
Session["Parola"] = parola;
}
}
protected void SchimbareParola()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string parola = TextBox8.Text.Trim();
Session["Parola"] = parola;
string select = "update studenti set parola ='"+parola+"' where id_student = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
Comanda.ExecuteNonQuery();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
string parola = Session["Parola"].ToString();
if (parola.Equals("0"))
if (TextBox8.Text.Trim().Equals(TextBox9.Text.Trim()))
SchimbareParola();
else
Label2.Visible = true;
else
if (TextBox7.Text.Trim().Equals(parola))
SchimbareParola();
else
{
Label1.Text = "Parola incorecta!";
Label1.Visible = true;
}
}
Codul ce stă în spatele acestei pagini web este structurat în diverse metod.
Spre exemplu pentru adaptarea datelor personale se execută instrucțiunile ce rulează pentru evenimentul click al butonului „Salvare Modificări”.
Modificările efectuate profilului sunt modificate în baza de date folosind comanda Sql „Update”.
Această comandă primește drept parametru datele culese din căsuțele pentru datele personale ale studentului.
Acești parametri sunt folosiți pentru formarea string-ului instrucțiunii.
După rularea comenzii datele sunt modificate în baza de date. Modificarea parolei se face prin apelarea metodei „Salvare Parolă”.
Metoda verifică mai întâi corectitudinea parolei vechi. În cazul în care aceasta nu este corectă se afișează un mesaj utilizatorului pentru a ințelege că parola veche nu a fost introdusă corect.
Această verificare se face prin interogarea bazei de date. În cazul în care parola nu a fost setată, câmpul este NULL, dar pentru a evita o excepție de incompatibilitate a tipurilor de date s-a folosit o comandă SQL prin care obiectele NULL sunt returnate ca un număr întreg 0.
Pagina Acasă pentru cadrele administrative după logare
Din cadrul acestei pagini utilizatorul de tipul Secretară iși poate accesa funcțiile administrative disponibile.
Pagina pentru vizualizarea situației studenților de către utilizatorul de tip secretară
În cadrul acestei pagini utilizatorul de tip secretară are posibilitatea de a vedea situația tuturor studenților dintr-o facultate sau situația școlară a unui student.
La accesarea paginii se execută următorul cod:
protected void Button1_Click(object sender, EventArgs e)
{
GridView2.Visible = false;
GridView1.Visible = true;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string ID_student = DropDownList4.SelectedValue;
string select = "select *,e.nume as NumeMaterie from studenti as a inner join legatura as b on a.id_student = b.id_student inner join secretare as c on b.id_Facultate = c.id_facultate inner join note as d on a.id_student = d.id_student inner join materii as e on d.id_materie = e.id_materie where c.id_secretara ='" + IDUtilizator + "' and b.id_an = '" + ID_An + "' and d.id_student = '" + ID_student + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
{
GridView2.Visible = true;
GridView1.Visible = false;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from studenti as a inner join legatura as b on a.id_student = b.id_student where b.id_an ='"+ID_An+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView2.DataSource = DataReader;
GridView2.DataBind();
cn.Close();
}
}
Pagina pentru creare studenti
În cadrul acestei pagini utilizatorul de tip secretară are posibilitatea de a adăuga studenți noi în baza de date.
La accesarea paginii se execută urmatorul cod:
private bool CNPValidator(string cnp)
{
try
{
if (cnp.Length < 13) return false;
int suma = Int32.Parse(cnp[0].ToString()) * 2 +
Int32.Parse(cnp[1].ToString()) * 7 +
Int32.Parse(cnp[2].ToString()) * 9 +
Int32.Parse(cnp[3].ToString()) * 1 +
Int32.Parse(cnp[4].ToString()) * 4 +
Int32.Parse(cnp[5].ToString()) * 6 +
Int32.Parse(cnp[6].ToString()) * 3 +
Int32.Parse(cnp[7].ToString()) * 5 +
Int32.Parse(cnp[8].ToString()) * 8 +
Int32.Parse(cnp[9].ToString()) * 2 +
Int32.Parse(cnp[10].ToString()) * 7 +
Int32.Parse(cnp[11].ToString()) * 9;
int rest = suma % 11;
bool valid = false;
if (
(rest < 10) && (rest.ToString() == cnp[12].ToString())
||
(rest == 10) && (cnp[12] == '1')
)
{
valid = true;
}
return valid;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string nume = TextBox1.Text.Trim();
string prenume = TextBox2.Text.Trim();
string cnp = TextBox3.Text.Trim();
string telefon = TextBox4.Text.Trim();
string adresa = TextBox5.Text.Trim();
string mail = TextBox6.Text.Trim();
if(!CNPValidator(cnp))
{
TextBox3.Text = "CNP-UL NU ESTE CORECT!";
TextBox3.BackColor = System.Drawing.Color.Red;
return;
}
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "insert into Studenti (nume, prenume, cnp,telefon,adresa,mail) VALUES (@nume,@prenume,@cnp,@telefon,@adresa,@mail)";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume);
Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@telefon", telefon);
Comanda.Parameters.AddWithValue("@adresa", adresa);
Comanda.Parameters.AddWithValue("@mail", mail);
Comanda.ExecuteNonQuery();
Comanda.CommandText = "select id_student from studenti where nume=@nume AND prenume=@prenume";
string id_student = Comanda.ExecuteScalar().ToString();
string id_facultate = DropDownList1.SelectedValue.Trim();
string id_specializare = DropDownList2.SelectedValue.Trim();
string id_an = DropDownList3.SelectedValue.Trim();
Comanda.CommandText = "insert into Legatura VALUES (@id_student,@id_facultate,@id_specializare,@id_an)";
Comanda.Parameters.AddWithValue("@id_student", id_student);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_an", id_an);
Comanda.ExecuteNonQuery();
cn.Close();
}
Adăugarea de studenți noi în baza de date implică0 conectarea la baza de date și executarea unei comenzi SQL de tipul insert into.
Pentru a executa această comandă este nevoie de citirea datelor din pagina web. Aceste date sunt transmise string-ului de comandă prin intermediul parametrului.
Câmpul CNP este verificat suplimentar de către metoda CNPValidator.
CNPValidator este o metodă folosită pentru a determina corectitudinea CNP-ului userului respectiv.
Acest lucru îl face prin verificarea cifră cu cifră.
Dacă CNP este corect, studentul este creat, în caz contrar se afișează un mesaj de eroare.
Pagina pentru Update [anonimizat] următoarea pagină prezentată, utilizatorul de tip secretară are acces la datele personale ale tuturor studenților din cadrul facultății în care este angajată.
La accesarea paginii se execută urmatorul cod:
protected void Button1_Click(object sender, EventArgs e)
{
string nume = TextBox1.Text.Trim();
string prenume = TextBox2.Text.Trim();
string cnp = TextBox3.Text.Trim();
string telefon = TextBox4.Text.Trim();
string adresa = TextBox5.Text.Trim();
string mail = TextBox6.Text.Trim();
if(!CNPValidator(cnp))
{
TextBox3.Text = "CNP-UL NU ESTE CORECT!";
TextBox3.BackColor = System.Drawing.Color.Red;
return;
}
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "insert into Studenti (nume, prenume, cnp,telefon,adresa,mail) VALUES (@nume,@prenume,@cnp,@telefon,@adresa,@mail)";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume);
Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@telefon", telefon);
Comanda.Parameters.AddWithValue("@adresa", adresa);
Comanda.Parameters.AddWithValue("@mail", mail);
Comanda.ExecuteNonQuery();
Comanda.CommandText = "select id_student from studenti where nume=@nume AND prenume=@prenume";
string id_student = Comanda.ExecuteScalar().ToString();
string id_facultate = DropDownList1.SelectedValue.Trim();
string id_specializare = DropDownList2.SelectedValue.Trim();
string id_an = DropDownList3.SelectedValue.Trim();
Comanda.CommandText = "insert into Legatura VALUES (@id_student,@id_facultate,@id_specializare,@id_an)";
Comanda.Parameters.AddWithValue("@id_student", id_student);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_an", id_an);
Comanda.ExecuteNonQuery();
cn.Close();
}
Pagina pentru căutare Student de către utilizatorul de tip secretară
Pentru a modifica datele unui student, este nevoie mai întâi de selectarea studentului printr-o căutare a acestuia.
În cazul în care criteriile de căutare sunt prea puține sau se produce o ambiguitate, aplicația va afișa un mesaj de eroare și indicațiile necesare pentru corectarea acestora.
În cazul în care căutarea a avut un rezultat pozitiv, câmpurile pentru datele personale sunt populate cu datele studentului.
Secretara are dreptul să modifice toate datele studentțlor.
La accesarea paginii se execută următorul cod:
protected void Button1_Click(object sender, EventArgs e)
{
bool cr1, cr2, cr3, cr4, cr5, cr6;
int cautare = 0;
if (TextBox1.Text != "") cr1 = true;
else cr1 = false;
if (TextBox2.Text != "") cr2 = true;
else cr2 = false;
if (TextBox3.Text != "") cr3 = true;
else cr3 = false;
if (DropDownList1.SelectedValue == "0") cr4 = false;
else cr4 = true;
if (DropDownList2.SelectedValue == "0") cr5 = false;
else cr5 = true;
if (DropDownList3.SelectedValue == "0") cr6 = false;
else cr6 = true;
if (cr1 && cr2 && cr3 && cr4 && cr5 && cr6) cautare = 1;
else if (cr1 && cr2 && cr3 && cr4 && cr5) cautare = 2;
else if (cr1 && cr2 && cr3 && cr4) cautare = 3;
else if (cr1 && cr2 && cr3) cautare = 4;
else if (cr1 && cr2) cautare = 5;
else
{
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Red;
Label1.Text = "Prea putine criterii de cautare!";
return;
}
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Blue;
Label1.Text = "Student gasit!";
Label1.ForeColor = System.Drawing.Color.Red;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string id_facultate_secretara = Session["id_facultate_secretara"].ToString();
SqlCommand Comanda = new SqlCommand();
Comanda.Connection = cn;
switch (cautare)
{
case 1:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND id_specializare = @id_specializare AND id_an = @id_an AND C.id_facultate =@id_secretara";
break;
}
case 2:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND id_specializare = @id_specializare AND C.id_facultate =@id_secretara";
break;
}
case 3:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND C.id_facultate =@id_secretara";
break;
}
case 4:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND C.id_facultate =@id_secretara";
break;
}
case 5:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND C.id_facultate =@id_secretara";
break;
}
default: { break; }
}
string nume = TextBox1.Text.Trim();
string prenume = TextBox2.Text.Trim();
string cnp = TextBox3.Text.Trim();
string id_facultate = DropDownList1.SelectedValue;
string id_specializare = DropDownList2.SelectedValue;
string id_an = DropDownList3.SelectedValue;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume);
Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_an", id_an);
Comanda.Parameters.AddWithValue("@id_secretara", id_facultate_secretara);
object obiect = Comanda.ExecuteScalar();
if (obiect != null)
Session["id_student"] = obiect.ToString();
else
{
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Red;
Label1.Text = "Studentul nu a fost gasit!";
return;
}
DropDownList4.Items.Clear();
DropDownList5.Items.Clear();
DropDownList6.Items.Clear();
DropDownList7.Items.Clear();
Populate4();
Populate5();
Populate6();
Populate7();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
string a1_nota = TextBox4.Text.Trim();
string a1_procent = TextBox5.Text.Trim();
string a1_semnificatie = TextBox6.Text.Trim();
string a2_nota = TextBox7.Text.Trim();
string a2_procent = TextBox8.Text.Trim();
string a2_semnificatie = TextBox9.Text.Trim();
string a3_nota = TextBox10.Text.Trim();
string a3_procent = TextBox11.Text.Trim();
string a3_semnificatie = TextBox12.Text.Trim();
string total = TextBox13.Text.Trim();
string examen_nota = TextBox14.Text.Trim();
string examen_procent = TextBox15.Text.Trim();
string final = TextBox16.Text.Trim();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
string id_student = (string)Session["id_student"];
string id_secretara = Session["id_facultate_secretara"].ToString();
string id_materie = DropDownList7.SelectedValue;
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "INSERT INTO note VALUES (@id_student,@id_materie,@a1_nota,@a1_procent,@a1_semnificatie,@a2_nota,@a2_procent,@a2_semnificatie,@a3_nota,@a3_procent,@a3_semnificatie,@examen_nota,@examen_procent,@total,@final)";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@a1_nota", a1_nota);
Comanda.Parameters.AddWithValue("@a1_procent", a1_procent);
Comanda.Parameters.AddWithValue("@a1_semnificatie", a1_semnificatie);
Comanda.Parameters.AddWithValue("@a2_nota", a2_nota);
Comanda.Parameters.AddWithValue("@a2_procent", a2_procent);
Comanda.Parameters.AddWithValue("@a2_semnificatie", a2_semnificatie);
Comanda.Parameters.AddWithValue("@a3_nota", a3_nota);
Comanda.Parameters.AddWithValue("@a3_procent", a3_procent);
Comanda.Parameters.AddWithValue("@a3_semnificatie", a3_semnificatie);
Comanda.Parameters.AddWithValue("@total", total);
Comanda.Parameters.AddWithValue("@examen_nota", examen_nota);
Comanda.Parameters.AddWithValue("@examen_procent", examen_procent);
Comanda.Parameters.AddWithValue("@final", final);
Comanda.Parameters.AddWithValue("@id_secretara", id_secretara);
Comanda.Parameters.AddWithValue("@id_student", id_student);
Comanda.Parameters.AddWithValue("@id_materie", id_materie);
cn.Open();
Comanda.ExecuteNonQuery();
cn.Close();
}
Concluzii
Sub îndrumarea profesorului coordonator, am realizat aplicația “Program software pentru gestionarea situației studenților” folsind Microsoft SQL Server, în dezvoltarea căreia am avut nevoie de următoarele cunoștințe:
Limbajul SQL
Limbajul C#
Limbajul HTML
Standardul CSS
Microsoft Visual Studio
Aplicația este ușor de utilizat și are posibilitatea de extindere și de accesare de la distanță.
Anexa
//acasa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate
{
public partial class Acasa1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Label1.Visible = false;
Label2.Visible = false;
HyperLink1.Visible = false;
AreParola();
}
}
protected void AreParola()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string select = "SELECT ISNULL(parola, 0) FROM studenti where id_student = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
string parola = Comanda.ExecuteScalar().ToString();
cn.Close();
if (parola.Trim().Equals("0"))
{
Label1.Visible = true;
Label2.Visible = true;
HyperLink1.Visible = true;
}
}
}
}
//balanta
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate
{
public partial class Balanta : System.Web.UI.Page
{
public string Transa1, Transa2 ,Transa3;
public string Data1, Data2, Data3;
public string Rest1, Rest2, Rest3;
public string Tabel = "hidden";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Populate1();
Populate2();
Populate3();
}
}
public void Populate1()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati As A inner join Legatura as B on A.id_facultate = B.id_facultate inner join Studenti as C on B.id_student = C.id_student where C.id_student =" + IDUtilizator;
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
string IDFacultate = DropDownList1.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume,A.id_specializare from Specializari As A inner join Legatura as B on A.id_specializare = B.id_specializare inner join Studenti as C on B.id_student = C.id_student inner join Facultati as D on D.id_facultate = B.id_facultate where C.id_student =" + IDUtilizator + "and D.id_facultate='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList2.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
cn.Close();
}
public void Populate3()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea = DropDownList2.SelectedValue;
string select = "SELECT A.an,A.id_an FROM Ani as A INNER JOIN Specializari AS B ON A.id_specializare = B.id_specializare WHERE (B.id_specializare = '" + Specializarea + "')";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList3.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList1.SelectedIndex = aux;
}
protected void Button1_Click(object sender, EventArgs e)
{
Tabel = "";
string Total = "";
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select transa1,FORMAT(Transa1_data,'dd/MM/yyyy') AS Transa1_data,Transa2,FORMAT(Transa2_data,'dd/MM/yyyy') AS Transa2_data,Transa3,FORMAT(Transa3_data,'dd/MM/yyyy') AS Transa3_data,total from balante where id_Student = '"+IDUtilizator+"' and id_an = '"+ID_An+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
(DataReader.Read())
{
Transa1 = DataReader.GetValue(0).ToString();
Data1 = DataReader.GetValue(1).ToString();
Transa2 = DataReader.GetValue(2).ToString();
Data2 = DataReader.GetValue(3).ToString();
Transa3 = DataReader.GetValue(4).ToString();
Data3 = DataReader.GetValue(5).ToString();
Total = DataReader.GetValue(6).ToString();
}
if (Transa1 != null && Transa2 != null && Transa3 != null)
{
Rest1 = (Convert.ToInt32(Total) – Convert.ToInt32(Transa1)).ToString();
Rest2 = (Convert.ToInt32(Total) – Convert.ToInt32(Transa1) – Convert.ToInt32(Transa2)).ToString();
Rest3 = (Convert.ToInt32(Total) – Convert.ToInt32(Transa1) – Convert.ToInt32(Transa2) – Convert.ToInt32(Transa3)).ToString();
}
cn.Close();
}
}
}
// login
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate
{
public partial class Login : System.Web.UI.Page
{
// public string MesajNume;<%#MesajNume %>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) { Label1.Visible = false; }
}
protected void Verificare2(string nume,string prenume,string parola)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string verificare = "select COUNT(*) from Studenti where (( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail='" + nume + "' )AND parola = '" + parola + "'";
SqlCommand Comanda = new SqlCommand(verificare, cn);
int rezultat = Convert.ToInt32(Comanda.ExecuteScalar().ToString());
if (rezultat == 1)
{
verificare = "select id_secretara from Secretare where ( nume = '" + nume + "' AND prenume = '" + prenume + "')";
Comanda = new SqlCommand(verificare, cn);
rezultat = Convert.ToInt32(Comanda.ExecuteScalar().ToString());
Session["NumeUtilizator"] = nume;
Session["IDUtilizator"] = rezultat;
Session["TipUtilizator"] = "2";
Response.Redirect("/Secretare/Acasa.aspx");
}
else Response.Redirect("/Loghin.aspx");
}
protected void Verificare()
{
string nume = textNume.Value;
string prenume="";
string parola = textParola.Value;
if(!nume.Contains('@'))
{
string[] words = nume.Split(' ');
nume = words[0];
if(words.Length==1)
{
Label1.Visible = true;
Label1.Text = "Nume incomplet!";
Label1.ForeColor = System.Drawing.Color.Red;
return;
}
prenume = words[1];
if(words.Length==3)
{
prenume += words[2];
}
}
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
SqlCommand Comanda;
cn.Open();
string id_user = "";
string verificareID = "";
string verificare1 = "select COUNT(*) from Studenti where (( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail='" + nume + "' )AND (parola = '" + parola + "' OR CNP = '" + parola + "')";
string verificare2 = "select COUNT(*) from Secretare where (( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail='" + nume + "' )AND parola = '" + parola + "'";
string verificare3 = "select COUNT(*) from profesori where (( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail='" + nume + "' )AND parola = '" + parola + "'";
Comanda = new SqlCommand(verificare1, cn);
if(Convert.ToInt32(Comanda.ExecuteScalar().ToString()) == 1)
{
verificareID = "select id_student from Studenti where ( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail ='" + nume + "'";
Comanda = new SqlCommand(verificareID, cn);
id_user = Comanda.ExecuteScalar().ToString();
if (nume.Contains('@'))
{
string mail = nume;
string comanda_nume = "select nume from studenti where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_nume, cn);
nume = Comanda.ExecuteScalar().ToString();
string comanda_prenume = "select prenume from studenti where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_prenume, cn);
nume += " " + Comanda.ExecuteScalar().ToString();
}
else
{
nume += " " + prenume;
}
Session["NumeUtilizator"] = nume;
Session["IDUtilizator"] = id_user;
Session["TipUtilizator"] = "1";
Response.Redirect("/Acasa.aspx");
}
Comanda = new SqlCommand(verificare2, cn);
if (Convert.ToInt32(Comanda.ExecuteScalar().ToString()) == 1)
{
verificareID = "select id_secretara from Secretare where ( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail ='" + nume + "'";
Comanda = new SqlCommand(verificareID, cn);
id_user = Comanda.ExecuteScalar().ToString();
if (nume.Contains('@')) // se logheaza cu mail
{
string mail = nume;
string comanda_nume = "select nume from secretare where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_nume, cn);
nume = Comanda.ExecuteScalar().ToString();
string comanda_prenume = "select prenume from secretare where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_prenume, cn);
nume += " " + Comanda.ExecuteScalar().ToString();
}
else
{
nume += " " + prenume;
}
Session["NumeUtilizator"] = nume;
Session["IDUtilizator"] = id_user;
Session["TipUtilizator"] = "2";
Response.Redirect("~/Secretara/Acasa.aspx");
}
Comanda = new SqlCommand(verificare3, cn);
if (Convert.ToInt32(Comanda.ExecuteScalar().ToString()) == 1)
{
verificareID = "select id_profesor from Profesori where ( nume = '" + nume + "' AND prenume = '" + prenume + "') OR mail ='" + nume + "'";
Comanda = new SqlCommand(verificareID, cn);
id_user = Comanda.ExecuteScalar().ToString();
if (nume.Contains('@')) // se logheaza cu mail
{
string mail = nume;
string comanda_nume = "select nume from profesori where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_nume, cn);
nume = Comanda.ExecuteScalar().ToString();
string comanda_prenume = "select prenume from profesori where mail='" + mail + "'";
Comanda = new SqlCommand(comanda_prenume, cn);
nume += " " + Comanda.ExecuteScalar().ToString();
}
else
{
nume += " " + prenume;
}
Session["NumeUtilizator"] = nume;
Session["IDUtilizator"] = id_user;
Session["TipUtilizator"] = "3";
Response.Redirect("~/Profesori/Acasa.aspx");
}
cn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
Verificare();
}
}
}
//note
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate
{
public partial class Acasa : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Populate1();
Populate2();
Populate3();
}
}
public void Populate1()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati As A inner join Legatura as B on A.id_facultate = B.id_facultate inner join Studenti as C on B.id_student = C.id_student where C.id_student =" + IDUtilizator;
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
string IDFacultate = DropDownList1.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume,A.id_specializare from Specializari As A inner join Legatura as B on A.id_specializare = B.id_specializare inner join Studenti as C on B.id_student = C.id_student inner join Facultati as D on D.id_facultate = B.id_facultate where C.id_student =" + IDUtilizator + "and D.id_facultate='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList2.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
}
cn.Close();
}
public void Populate3()
{
// int IDUtilizator = (int)Session["IDUtilizator"];
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea = DropDownList2.SelectedItem.Text;
string select = "SELECT Ani.an,Ani.id_an FROM Ani INNER JOIN Specializari ON Ani.id_specializare = Specializari.id_specializare WHERE (Specializari.nume = '" + Specializarea + "')";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList3.DataSource = ddlValues;
while (ddlValues.Read())
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList1.SelectedIndex = aux;
}
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from note as A inner join MateriiAni as B on A.id_materie = B.id_materie inner join Materii as C on A.id_materie = C.id_materie where id_student ='" + IDUtilizator + "' AND id_an = '" + ID_An + "' order by Nume ASC";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from note as A inner join MateriiAni as B on A.id_materie = B.id_materie inner join Materii as C on A.id_materie = C.id_materie where id_student ='" + IDUtilizator + "' order by Nume ASC";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
}
}
// profil
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate
{
public partial class Profil : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Populate();
AreParola();
}
TextBox1.ReadOnly = true;
TextBox2.ReadOnly = true;
TextBox3.ReadOnly = true;
}
protected string Parola;
protected void Populate()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string select = "select * from studenti where id_student = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
while (DataReader.Read())
{
TextBox1.Text = " " + DataReader.GetValue(1).ToString();
TextBox2.Text = " " + DataReader.GetValue(2).ToString();
TextBox3.Text = " " + DataReader.GetValue(3).ToString();
TextBox4.Text = " " + DataReader.GetValue(4).ToString();
TextBox5.Text = " " + DataReader.GetValue(5).ToString();
TextBox6.Text = " " + DataReader.GetValue(6).ToString();
Parola = DataReader.GetValue(7).ToString();
}
cn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
string telefon = TextBox4.Text.Trim();
string adresa = TextBox5.Text.Trim();
string mail = TextBox6.Text.Trim();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
// string select = "update studenti SET telefon ='" + TextBox4.Text.Trim() + "',adresa ='" + TextBox5.Text.Trim() + "',mail ='" + TextBox6.Text.Trim() + "' where id_student = '" + IDUtilizator.Trim() + "'";
// SqlCommand Comanda = new SqlCommand(select, cn);
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "update studenti SET telefon = @telefon, adresa = @adresa, mail =@mail where id_student = @id_student";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@telefon", telefon);
Comanda.Parameters.AddWithValue("@adresa", adresa);
Comanda.Parameters.AddWithValue("@mail", mail);
Comanda.Parameters.AddWithValue("@id_student", IDUtilizator);
Comanda.ExecuteNonQuery();
cn.Close();
Populate();
}
protected void AreParola()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string select = "SELECT ISNULL(parola, 0) FROM studenti where id_student = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
string parola = Comanda.ExecuteScalar().ToString();
cn.Close();
if (parola.Trim().Equals("0"))
{
Label1.Visible = true;
Session["Parola"] = "0";
}
else
{
Session["Parola"] = parola;
}
}
protected void SchimbareParola()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string parola = TextBox8.Text.Trim();
Session["Parola"] = parola;
string select = "update studenti set parola ='"+parola+"' where id_student = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
Comanda.ExecuteNonQuery();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
string parola = Session["Parola"].ToString();
if (parola.Equals("0"))
if (TextBox8.Text.Trim().Equals(TextBox9.Text.Trim()))
SchimbareParola();
else
Label2.Visible = true;
else
if (TextBox7.Text.Trim().Equals(parola))
SchimbareParola();
else
{
Label1.Text = "Parola incorecta!";
Label1.Visible = true;
}
}
}
}
//string conexiune
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Facultate
{
public static class Global
{
static string Data= "Data Source=NITA;Initial Catalog=Facultate;Integrated Security=True";
public static string StringConexiune
{
get
{
return Data;
}
set
{
Data = value;
}
}
}
}
//note secretare
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Secretara
{
public partial class Studenti : System.Web.UI.Page
{
protected string aux, aux2;
protected void Page_Load(object sender, EventArgs e)
{
string TipUtilizator = (string)Session["TipUtilizator"];
if (!TipUtilizator.Contains("2")) Response.Redirect("~/Login.aspx");
else
{
if (!Page.IsPostBack)
{
Label1.Visible = false;
Populate1();
Populate2();
Populate3();
}
}
}
public void Populate1()
{
string id_secretara = Session["id_facultate_secretara"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati as A inner join secretare as B on A.id_facultate = B.id_facultate where b.id_facultate = '" + id_secretara + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList1.Items.Add(listItem2);
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
if (DropDownList1.SelectedValue != "0")
{
string IDFacultate = DropDownList1.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume,id_specializare from Specializari where id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
// DropDownList2.DataSource = ddlValues;
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList2.Items.Add(listItem2);
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
}
cn.Close();
}
else
{
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList2.Items.Add(listItem2);
}
}
public void Populate3()
{
if (DropDownList2.SelectedValue != "0")
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea;
Specializarea = DropDownList2.SelectedValue;
string select = "select an, id_an from ani where id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
// DropDownList3.DataSource = ddlValues;
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList3.Items.Add(listItem2);
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
else
{
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList3.Items.Add(listItem2);
}
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList3.Items.Clear();
Populate3();
DropDownList1.SelectedIndex = aux;
}
protected void Button1_Click(object sender, EventArgs e)
{
bool cr1, cr2, cr3, cr4, cr5, cr6;
int cautare = 0;
if (TextBox1.Text != "") cr1 = true;
if (TextBox2.Text != "") cr2 = true;
else cr2 = false;
if (TextBox3.Text != "") cr3 = true;
else cr3 = false;
if (DropDownList1.SelectedValue == "0") cr4 = false;
else cr4 = true;
if (DropDownList2.SelectedValue == "0") cr5 = false;
else cr5 = true;
if (DropDownList3.SelectedValue == "0") cr6 = false;
else cr6 = true;
if (cr1 && cr2 && cr3 && cr4 && cr5 && cr6) cautare = 1;
else if (cr1 && cr2 && cr3 && cr4 && cr5) cautare = 2;
else if (cr1 && cr2 && cr3 && cr4) cautare = 3;
else if (cr1 && cr2 && cr3) cautare = 4;
else if (cr1 && cr2) cautare = 5;
else
{
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Red;
Label1.Text = "Prea putine criterii de cautare!";
return;
}
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Blue;
Label1.Text = "Student gasit!";
Label1.ForeColor = System.Drawing.Color.Red;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string id_facultate_secretara = Session["id_facultate_secretara"].ToString();
SqlCommand Comanda = new SqlCommand();
Comanda.Connection = cn;
switch (cautare)
{
case 1:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND id_specializare = @id_specializare AND id_an = @id_an AND C.id_facultate =@id_secretara";
break;
}
case 2:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND id_specializare = @id_specializare AND C.id_facultate =@id_secretara";
break;
}
case 3:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND C.id_facultate =@id_secretara";
break;
}
case 4:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND C.id_facultate =@id_secretara";
break;
}
case 5:
{
Comanda.CommandText = "select A.id_student from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND C.id_facultate =@id_secretara";
break;
}
default: { break; }
}
string nume = TextBox1.Text.Trim();
string prenume = TextBox2.Text.Trim();
string cnp = TextBox3.Text.Trim();
string id_facultate = DropDownList1.SelectedValue;
string id_specializare = DropDownList2.SelectedValue;
string id_an = DropDownList3.SelectedValue;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume);
Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_an", id_an); Comanda.Parameters.AddWithValue("@id_secretara", id_facultate_secretara);
object obiect = Comanda.ExecuteScalar();
if (obiect != null)
Session["id_student"] = obiect.ToString();
else
{
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Red;
Label1.Text = "Studentul nu a fost gasit!";
return;
}
DropDownList4.Items.Clear();
DropDownList5.Items.Clear();
DropDownList6.Items.Clear();
DropDownList7.Items.Clear();
Populate4();
Populate5();
Populate6();
Populate7();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
string a1_nota = TextBox4.Text.Trim();
string a1_procent = TextBox5.Text.Trim();
string a1_semnificatie = TextBox6.Text.Trim();
string a2_nota = TextBox7.Text.Trim();
string a2_procent = TextBox8.Text.Trim();
string a2_semnificatie = TextBox9.Text.Trim();
string a3_nota = TextBox10.Text.Trim();
string a3_procent = TextBox11.Text.Trim();
string a3_semnificatie = TextBox12.Text.Trim();
string total = TextBox13.Text.Trim();
string examen_nota = TextBox14.Text.Trim();
string examen_procent = TextBox15.Text.Trim();
string final = TextBox16.Text.Trim();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
string id_student = (string)Session["id_student"];
string id_secretara = Session["id_facultate_secretara"].ToString();
string id_materie = DropDownList7.SelectedValue;
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "INSERT INTO note VALUES (@id_student,@id_materie,@a1_nota,@a1_procent,@a1_semnificatie,@a2_nota,@a2_procent,@a2_semnificatie,@a3_nota,@a3_procent,@a3_semnificatie,@examen_nota,@examen_procent,@total,@final)";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@a1_nota", a1_nota);
Comanda.Parameters.AddWithValue("@a1_procent", a1_procent);
Comanda.Parameters.AddWithValue("@a1_semnificatie", a1_semnificatie);
Comanda.Parameters.AddWithValue("@a2_nota", a2_nota);
Comanda.Parameters.AddWithValue("@a2_procent", a2_procent);
Comanda.Parameters.AddWithValue("@a2_semnificatie", a2_semnificatie);
Comanda.Parameters.AddWithValue("@a3_nota", a3_nota);
Comanda.Parameters.AddWithValue("@a3_procent", a3_procent);
Comanda.Parameters.AddWithValue("@a3_semnificatie", a3_semnificatie);
Comanda.Parameters.AddWithValue("@total", total);
Comanda.Parameters.AddWithValue("@examen_nota", examen_nota);
Comanda.Parameters.AddWithValue("@examen_procent", examen_procent);
Comanda.Parameters.AddWithValue("@final", final);
Comanda.Parameters.AddWithValue("@id_secretara", id_secretara);
Comanda.Parameters.AddWithValue("@id_student", id_student);
Comanda.Parameters.AddWithValue("@id_materie", id_materie);
cn.Open();
Comanda.ExecuteNonQuery();
cn.Close();
}
public void Populate4()
{
string id_secretara = Session["id_facultate_secretara"].ToString();
string id_student = Session["id_student"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati as A inner join legatura as B on A.id_facultate = B.id_Facultate where b.id_student ='" + id_student + "' and b.id_facultate ='" + id_secretara + "' ";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList4.Items.Add(listItem);
}
cn.Close();
}
public void Populate5()
{
string IDFacultate = DropDownList4.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume,id_specializare from Specializari where id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList5.Items.Add(listItem);
}
cn.Close();
}
public void Populate6()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea = DropDownList5.SelectedValue;
string select = "select an, id_an from ani where id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList6.Items.Add(listItem);
}
cn.Close();
}
public void Populate7()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String id_an = DropDownList6.SelectedValue;
string select = "select A.id_materie, A.nume from materii as A inner join materiiani as B on A.id_materie = B.id_materie where B.id_an ='" + id_an + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_materie"].ToString();
DropDownList7.Items.Add(listItem);
}
cn.Close();
}
public void DropDownList6_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList6.SelectedIndex;
DropDownList7.Items.Clear();
Populate7();
DropDownList6.SelectedIndex = aux;
}
public void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList5.SelectedIndex;
DropDownList6.Items.Clear();
Populate6();
DropDownList7.Items.Clear();
Populate7();
DropDownList5.SelectedIndex = aux;
}
public void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList4.SelectedIndex;
DropDownList5.Items.Clear();
Populate5();
DropDownList6.Items.Clear();
Populate6();
DropDownList7.Items.Clear();
Populate7();
DropDownList4.SelectedIndex = aux;
}
}
}
//studenti secretare
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Secretara
{
public partial class NoteStudenti : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string TipUtilizator = (string)Session["TipUtilizator"];
if (!TipUtilizator.Contains("2")) Response.Redirect("~/Login.aspx");
else
{
if (!Page.IsPostBack)
{
Populate1();
Populate2();
Populate3();
Populate4();
}
}
}
public void Populate1()
{
string id_facultate_secretara = Session["id_facultate_secretara"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati as A inner join secretare as B on A.id_facultate = B.id_facultate where b.id_facultate = '" + id_facultate_secretara + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
string IDFacultate = DropDownList1.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume,id_specializare from Specializari where id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList2.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
}
cn.Close();
}
public void Populate3()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea;
if (DropDownList2.SelectedItem != null)
Specializarea = DropDownList2.SelectedValue;
else
Specializarea = "0";
string select = "select an, id_an from ani where id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList3.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
public void Populate4()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Anul;
if (DropDownList3.SelectedItem != null)
Anul = DropDownList3.SelectedValue;
else
Anul = "0";
string select = "select a.nume, a.id_student from studenti as a inner join legatura as b on a.id_student = b.id_student where id_an = '"+Anul+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList4.Items.Add(listItem2);
while (ddlValues.Read())
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_student"].ToString();
DropDownList4.Items.Add(listItem);
}
cn.Close();
}
public void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList3.SelectedIndex;
DropDownList4.Items.Clear();
Populate4();
DropDownList3.SelectedIndex = aux;
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList4.Items.Clear();
Populate4();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList3.Items.Clear();
Populate3();
DropDownList4.Items.Clear();
Populate4();
DropDownList1.SelectedIndex = aux;
}
protected void Button1_Click(object sender, EventArgs e)
{
GridView2.Visible = false;
GridView1.Visible = true;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string ID_student = DropDownList4.SelectedValue;
string select = "select *,e.nume as NumeMaterie from studenti as a inner join legatura as b on a.id_student = b.id_student inner join secretare as c on b.id_Facultate = c.id_facultate inner join note as d on a.id_student = d.id_student inner join materii as e on d.id_materie = e.id_materie where c.id_secretara ='" + IDUtilizator + "' and b.id_an = '" + ID_An + "' and d.id_student = '" + ID_student + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
{
GridView2.Visible = true;
GridView1.Visible = false;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from studenti as a inner join legatura as b on a.id_student = b.id_student where b.id_an ='"+ID_An+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView2.DataSource = DataReader;
GridView2.DataBind();
cn.Close();
}
}
}
}
//studenti creare
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Secretara
{
public partial class StudentiCreare : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string TipUtilizator = (string)Session["TipUtilizator"];
if (!TipUtilizator.Contains("2")) Response.Redirect("~/Login.aspx");
else
{
if (!Page.IsPostBack)
{
Populate1();
Populate2();
Populate3();
}
}
}
public void Populate1()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati as A inner join secretare as B on A.id_facultate = B.id_facultate where b.id_facultate = '" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
string IDFacultate = DropDownList1.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume,id_specializare from Specializari where id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList2.DataSource = ddlValues;
while (ddlValues.Read())
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
}
cn.Close();
}
public void Populate3()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea;
if (DropDownList2.SelectedItem != null)
Specializarea = DropDownList2.SelectedValue;
else
Specializarea = "0";
string select = "select an, id_an from ani where id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList3.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
private bool CNPValidator(string cnp)
{
try
{
if (cnp.Length < 13) return false;
int suma = Int32.Parse(cnp[0].ToString()) * 2 +
Int32.Parse(cnp[1].ToString()) * 7 +
Int32.Parse(cnp[2].ToString()) * 9 +
Int32.Parse(cnp[3].ToString()) * 1 +
Int32.Parse(cnp[4].ToString()) * 4 +
Int32.Parse(cnp[5].ToString()) * 6 +
Int32.Parse(cnp[6].ToString()) * 3 +
Int32.Parse(cnp[7].ToString()) * 5 +
Int32.Parse(cnp[8].ToString()) * 8 +
Int32.Parse(cnp[9].ToString()) * 2 +
Int32.Parse(cnp[10].ToString()) * 7 +
Int32.Parse(cnp[11].ToString()) * 9;
int rest = suma % 11;
bool valid = false;
if (
(rest < 10) && (rest.ToString() == cnp[12].ToString())
||
(rest == 10) && (cnp[12] == '1')
)
{
valid = true;
}
return valid;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return false;
}
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList3.Items.Clear();
Populate3();
DropDownList1.SelectedIndex = aux;
}
protected void Button1_Click(object sender, EventArgs e)
{
string nume = TextBox1.Text.Trim();
string prenume = TextBox2.Text.Trim();
string cnp = TextBox3.Text.Trim();
string telefon = TextBox4.Text.Trim();
string adresa = TextBox5.Text.Trim();
string mail = TextBox6.Text.Trim();
if(!CNPValidator(cnp))
{
TextBox3.Text = "CNP-UL NU ESTE CORECT!";
TextBox3.BackColor = System.Drawing.Color.Red;
return;
}
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "insert into Studenti (nume, prenume, cnp,telefon,adresa,mail) VALUES (@nume,@prenume,@cnp,@telefon,@adresa,@mail)";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume);
Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@telefon", telefon);
Comanda.Parameters.AddWithValue("@adresa", adresa);
Comanda.Parameters.AddWithValue("@mail", mail);
Comanda.ExecuteNonQuery();
Comanda.CommandText = "select id_student from studenti where nume=@nume AND prenume=@prenume";
string id_student = Comanda.ExecuteScalar().ToString();
string id_facultate = DropDownList1.SelectedValue.Trim();
string id_specializare = DropDownList2.SelectedValue.Trim();
string id_an = DropDownList3.SelectedValue.Trim();
Comanda.CommandText = "insert into Legatura VALUES (@id_student,@id_facultate,@id_specializare,@id_an)";
Comanda.Parameters.AddWithValue("@id_student", id_student);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_an", id_an);
Comanda.ExecuteNonQuery();
cn.Close();
}
}
}
//stundeti update
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Secretara
{
public partial class StudentiUpdate : System.Web.UI.Page
{
protected string aux, aux2;
protected void Page_Load(object sender, EventArgs e)
{
string TipUtilizator = (string)Session["TipUtilizator"];
if (!TipUtilizator.Contains("2")) Response.Redirect("~/Login.aspx");
else
{
if (!Page.IsPostBack)
{
Label1.Visible = false;
Populate1();
Populate2();
Populate3();
}
}
}
public void Populate1()
{
string id_secretara = Session["id_facultate_secretara"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select A.nume, A.id_facultate from Facultati as A inner join secretare as B on A.id_facultate = B.id_facultate where b.id_facultate = '" + id_secretara + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
// DropDownList1.DataSource = ddlValues;
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList1.Items.Add(listItem2);
while (ddlValues.Read())
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
if (DropDownList1.SelectedValue !="0")
{
string IDFacultate = DropDownList1.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume,id_specializare from Specializari where id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
// DropDownList2.DataSource = ddlValues;
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList2.Items.Add(listItem2);
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
}
cn.Close();
}
else
{
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList2.Items.Add(listItem2);
}
}
public void Populate3()
{
if (DropDownList2.SelectedValue !="0")
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea;
Specializarea = DropDownList2.SelectedValue;
string select = "select an, id_an from ani where id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
// DropDownList3.DataSource = ddlValues;
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList3.Items.Add(listItem2);
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
else
{
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList3.Items.Add(listItem2);
}
}
private bool CNPValidator(string cnp)
{
try
{
if (cnp.Length < 13) return false;
int suma = Int32.Parse(cnp[0].ToString()) * 2 +
Int32.Parse(cnp[1].ToString()) * 7 +
Int32.Parse(cnp[2].ToString()) * 9 +
Int32.Parse(cnp[3].ToString()) * 1 +
Int32.Parse(cnp[4].ToString()) * 4 +
Int32.Parse(cnp[5].ToString()) * 6 +
Int32.Parse(cnp[6].ToString()) * 3 +
Int32.Parse(cnp[7].ToString()) * 5 +
Int32.Parse(cnp[8].ToString()) * 8 +
Int32.Parse(cnp[9].ToString()) * 2 +
Int32.Parse(cnp[10].ToString()) * 7 +
Int32.Parse(cnp[11].ToString()) * 9;
int rest = suma % 11;
bool valid = false;
if (
(rest < 10) && (rest.ToString() == cnp[12].ToString())
||
(rest == 10) && (cnp[12] == '1')
)
{
valid = true;
}
return valid;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return false;
}
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList3.Items.Clear();
Populate3();
DropDownList1.SelectedIndex = aux;
}
protected void Button1_Click(object sender, EventArgs e)
{
bool cr1, cr2, cr3, cr4, cr5, cr6;
int cautare = 0;
if (TextBox1.Text != "") cr1 = true;
else cr1 = false;
if (TextBox2.Text != "") cr2 = true;
else cr2 = false;
if (TextBox3.Text != "") cr3 = true;
else cr3 = false;
if (DropDownList1.SelectedValue == "0") cr4 = false;
else cr4 = true;
if (DropDownList2.SelectedValue == "0") cr5 = false;
else cr5 = true;
if (DropDownList3.SelectedValue == "0") cr6= false;
else cr6 = true;
if (cr1 && cr2 && cr3 && cr4 && cr5 && cr6) cautare = 1;
else if (cr1 && cr2 && cr3 && cr4 && cr5) cautare = 2;
else if (cr1 && cr2 && cr3 && cr4) cautare = 3;
else if (cr1 && cr2 && cr3) cautare = 4;
else if (cr1 && cr2) cautare = 5;
else
{
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Red;
Label1.Text = "Prea putine criterii de cautare!";
return;
}
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Blue;
Label1.Text = "Student gasit!";
Label1.ForeColor = System.Drawing.Color.Red;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string id_facultate_secretara = Session["id_facultate_secretara"].ToString();
SqlCommand Comanda = new SqlCommand();
Comanda.Connection = cn;
switch (cautare)
{
case 1:
{
Comanda.CommandText = "select * from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND id_specializare = @id_specializare AND id_an = @id_an AND C.id_facultate =@id_secretara";
break;
}
case 2:
{
Comanda.CommandText = "select * from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND id_specializare = @id_specializare AND C.id_facultate =@id_secretara";
break;
}
case 3:
{
Comanda.CommandText = "select * from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND A.id_facultate =@id_facultate AND C.id_facultate =@id_secretara";
break;
}
case 4:
{
Comanda.CommandText = "select * from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND A.cnp = @cnp AND C.id_facultate =@id_secretara";
break;
}
case 5:
{
Comanda.CommandText = "select * from studenti as A inner join legatura as B on A.id_student = B.id_student inner join secretare as C on B.id_facultate = C.id_Facultate where A.nume = @nume AND A.prenume = @prenume AND C.id_facultate =@id_secretara";
break;
}
default: { break; }
string nume = TextBox1.Text.Trim();
string prenume = TextBox2.Text.Trim();
string cnp = TextBox3.Text.Trim();
string id_facultate = DropDownList1.SelectedValue;
string id_specializare = DropDownList2.SelectedValue;
string id_an = DropDownList3.SelectedValue;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume); Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_an", id_an);
Comanda.Parameters.AddWithValue("@id_secretara", id_facultate_secretara);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
while (DataReader.Read())
TextBox4.Text = DataReader.GetValue(1).ToString();
TextBox5.Text = DataReader.GetValue(2).ToString();
TextBox6.Text = DataReader.GetValue(3).ToString();
TextBox7.Text = DataReader.GetValue(4).ToString();
TextBox8.Text = DataReader.GetValue(5).ToString();
TextBox9.Text = DataReader.GetValue(6).ToString();
}
DataReader.Close();
if (cr1 && cr2 && cr3) Comanda.CommandText = "select id_student from studenti where nume = @nume AND prenume = @prenume AND cnp = @cnp";
else if (cr1 && cr2) Comanda.CommandText = "select id_student from studenti where nume = @nume AND prenume = @prenume";
else if (cr1) Comanda.CommandText = "select id_student from studenti where nume = @nume";
object obiect = Comanda.ExecuteScalar();
if (obiect != null)
Session["id_student"] = obiect.ToString();
else
{
Label1.Visible = true;
Label1.BackColor = System.Drawing.Color.Red;
Label1.Text = "Studentul nu a fost gasit!";
return;
}
DropDownList4.Items.Clear();
DropDownList5.Items.Clear();
DropDownList6.Items.Clear();
Populate4();
Populate5();
Populate6();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
string nume = TextBox4.Text.Trim();
string prenume = TextBox5.Text.Trim();
string cnp = TextBox6.Text.Trim();
string telefon = TextBox7.Text.Trim();
string adresa = TextBox8.Text.Trim();
string mail = TextBox9.Text.Trim();
string id_facultate = DropDownList4.SelectedValue;
string id_specializare = DropDownList5.SelectedValue;
string id_an = DropDownList6.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
string id_student = (string)Session["id_student"];
string id_secretara = Session["id_facultate_secretara"].ToString();
SqlCommand Comanda = new SqlCommand();
Comanda.CommandText = "update studenti SET telefon = @telefon, adresa = @adresa, mail =@mail, nume = @nume, prenume = @prenume, cnp = @cnp where id_student = @id_student";
Comanda.Connection = cn;
Comanda.Parameters.AddWithValue("@nume", nume);
Comanda.Parameters.AddWithValue("@prenume", prenume);
Comanda.Parameters.AddWithValue("@cnp", cnp);
Comanda.Parameters.AddWithValue("@telefon", telefon);
Comanda.Parameters.AddWithValue("@adresa", adresa);
Comanda.Parameters.AddWithValue("@mail", mail);
Comanda.Parameters.AddWithValue("@id_student", id_student);
Comanda.Parameters.AddWithValue("@id_specializare", id_specializare);
Comanda.Parameters.AddWithValue("@id_facultate", id_facultate);
Comanda.Parameters.AddWithValue("@id_an", id_an);
Comanda.Parameters.AddWithValue("@id_secretara", id_secretara);
cn.Open();
Comanda.ExecuteNonQuery();
Comanda.CommandText = "select id_an from legatura where id_student = @id_student AND id_facultate = @id_secretara";
if( Comanda.ExecuteScalar().ToString() != id_an)
Comanda.CommandText = "update legatura SET id_facultate = @id_facultate, id_specializare = @id_specializare, id_an = @id_An where id_student = @id_student";
Comanda.ExecuteNonQuery();
cn.Close();
}
public void Populate4()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume, id_facultate from Facultati ";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList4.Items.Add(listItem);
}
cn.Close();
}
public void Populate5()
{
string IDFacultate = DropDownList4.SelectedValue;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select nume,id_specializare from Specializari where id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList5.Items.Add(listItem);
}
cn.Close();
}
public void Populate6()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea = DropDownList5.SelectedValue;
string select = "select an, id_an from ani where id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList6.Items.Add(listItem);
}
cn.Close();
}
public void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList6.SelectedIndex;
DropDownList6.Items.Clear();
Populate6();
DropDownList5.SelectedIndex = aux;
}
public void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList5.SelectedIndex;
DropDownList5.Items.Clear();
Populate5();
DropDownList6.Items.Clear();
Populate6();
DropDownList5.SelectedIndex = aux;
}
}
}
// profesori studenti
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Profesori
{
public partial class Studenti : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string TipUtilizator = (string)Session["TipUtilizator"];
if (!TipUtilizator.Contains("3")) Response.Redirect("~/Login.aspx");
else
{
if (!Page.IsPostBack)
{
Populate1();
Populate2();
Populate3();
Populate4();
}
}
}
public void Populate1()
{
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select distinct a.nume,a.id_facultate from Facultati as a inner join Specializari as b on a.id_facultate = b.id_facultate inner join Ani as c on b.id_specializare = c.id_specializare inner join MateriiAni as d on d.id_an = c.id_an inner join ProfesoriMaterii as e on e.id_materie = d.id_materie where e.id_profesor = '"+IDUtilizator+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_facultate"].ToString();
DropDownList1.Items.Add(listItem);
}
cn.Close();
}
public void Populate2()
{
string IDFacultate = DropDownList1.SelectedValue;
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string select = "select distinct b.nume,b.id_specializare from Facultati as a inner join Specializari as b on a.id_facultate = b.id_facultate inner join Ani as c on b.id_specializare = c.id_specializare inner join MateriiAni as d on d.id_an = c.id_an inner join ProfesoriMaterii as e on e.id_materie = d.id_materie where e.id_profesor = '" + IDUtilizator + "' AND a.id_facultate ='" + IDFacultate + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList2.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Value = ddlValues["id_specializare"].ToString();
DropDownList2.Items.Add(listItem);
}
cn.Close();
}
public void Populate3()
{
string IDFacultate = DropDownList1.SelectedValue;
string IDUtilizator = Session["IDUtilizator"].ToString();
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Specializarea;
if (DropDownList2.SelectedItem != null)
Specializarea = DropDownList2.SelectedValue;
else
Specializarea = "0";
string select = "select distinct c.an,c.id_an from Facultati as a inner join Specializari as b on a.id_facultate = b.id_facultate inner join Ani as c on b.id_specializare = c.id_specializare inner join MateriiAni as d on d.id_an = c.id_an inner join ProfesoriMaterii as e on e.id_materie = d.id_materie where e.id_profesor = '" + IDUtilizator + "' AND a.id_facultate ='"+IDFacultate+"' and b.id_specializare ='" + Specializarea + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
DropDownList3.DataSource = ddlValues;
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["an"].ToString();
listItem.Value = ddlValues["id_an"].ToString();
DropDownList3.Items.Add(listItem);
}
cn.Close();
}
public void Populate4()
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
String Anul;
string IDFacultate = DropDownList1.SelectedValue;
string IDUtilizator = Session["IDUtilizator"].ToString();
string Specializarea = DropDownList2.SelectedValue;
if (DropDownList3.SelectedItem != null)
Anul = DropDownList3.SelectedValue;
else
Anul = "0";
string select = "select distinct g.nume,g.prenume,g.id_student from Facultati as a inner join Specializari as b on a.id_facultate = b.id_facultate inner join Ani as c on b.id_specializare = c.id_specializare inner join MateriiAni as d on d.id_an = c.id_an inner join ProfesoriMaterii as e on e.id_materie = d.id_materie inner join legatura as f on f.id_an = c.id_an inner join Studenti as g on f.id_student = g.id_student where e.id_profesor = '" + IDUtilizator + "' AND a.id_facultate ='" + IDFacultate + "' and b.id_specializare ='" + Specializarea + "' AND c.id_an = '"+Anul+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader ddlValues;
ddlValues = Comanda.ExecuteReader();
ListItem listItem2 = new ListItem();
listItem2.Text = "*";
listItem2.Value = "0";
DropDownList4.Items.Add(listItem2);
while (ddlValues.Read())
{
ListItem listItem = new ListItem();
listItem.Text = ddlValues["nume"].ToString();
listItem.Text += " " + ddlValues["prenume"].ToString();
listItem.Value = ddlValues["id_student"].ToString();
DropDownList4.Items.Add(listItem);
}
cn.Close();
}
public void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList3.SelectedIndex;
DropDownList4.Items.Clear();
Populate4();
DropDownList3.SelectedIndex = aux;
}
public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList2.SelectedIndex;
DropDownList3.Items.Clear();
Populate3();
DropDownList4.Items.Clear();
Populate4();
DropDownList2.SelectedIndex = aux;
}
public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int aux = DropDownList1.SelectedIndex;
DropDownList2.Items.Clear();
Populate2();
DropDownList3.Items.Clear();
Populate3();
DropDownList4.Items.Clear();
Populate4();
DropDownList1.SelectedIndex = aux;
}
protected void Button1_Click(object sender, EventArgs e)
{
GridView2.Visible = false;
GridView1.Visible = true;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string ID_student = DropDownList4.SelectedValue;
string select = "select * from note as a inner join ProfesoriMaterii as b on a.id_materie = b.id_materie inner join materii as c on b.id_materie = c.id_materie where a.id_student = '"+ID_student+"' and b.id_profesor = '"+IDUtilizator+"'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView1.DataSource = DataReader;
GridView1.DataBind();
cn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
{
GridView2.Visible = true;
GridView1.Visible = false;
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string IDUtilizator = Session["IDUtilizator"].ToString();
string ID_An = DropDownList3.SelectedValue;
string select = "select * from studenti as a inner join legatura as b on a.id_student = b.id_student where b.id_an ='" + ID_An + "'";
SqlCommand Comanda = new SqlCommand(select, cn);
SqlDataReader DataReader;
DataReader = Comanda.ExecuteReader();
GridView2.DataSource = DataReader;
GridView2.DataBind();
cn.Close();
}
}
}
}
/// master profesor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Master
{
public partial class Profesor : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
string numeUtilizator = (string)Session["NumeUtilizator"];
string IDUtilizator = (string)Session["IDUtilizator"];
string TipUtilizator = (string)Session["TipUtilizator"];
etichetaNume.Text = numeUtilizator;
if (!TipUtilizator.Contains("3")) Response.Redirect("~/Login.aspx");
if ((numeUtilizator == null || IDUtilizator == null || IDUtilizator == "0") && TipUtilizator != "3") Response.Redirect("~/Login.aspx");
if (!Page.IsPostBack)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string verificare = "select id_facultate from secretare where id_secretara ='" + IDUtilizator + "'";
SqlCommand Comanda = new SqlCommand(verificare, cn);
Session["id_facultate_secretara"] = (Comanda.ExecuteScalar().ToString());
cn.Close();
}
}
}
}
// master secretare
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Master
{
public partial class Secretara : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
string numeUtilizator = (string)Session["NumeUtilizator"];
string IDUtilizator = (string)Session["IDUtilizator"];
string TipUtilizator = (string)Session["TipUtilizator"];
etichetaNume.Text = numeUtilizator;
if (!TipUtilizator.Contains("2")) Response.Redirect("~/Login.aspx");
if ( ( numeUtilizator == null || IDUtilizator == null || IDUtilizator == "0") && TipUtilizator != "2" ) Response.Redirect("~/Login.aspx");
if (!Page.IsPostBack)
{
SqlConnection cn = new SqlConnection(@Global.StringConexiune);
cn.Open();
string verificare = "select id_facultate from secretare where id_secretara ='"+IDUtilizator+"'";
SqlCommand Comanda = new SqlCommand(verificare, cn);
Session["id_facultate_secretara"] = (Comanda.ExecuteScalar().ToString());
cn.Close();
}
}
}
}
//master stundenti
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Facultate.Master
{
public partial class Student : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
string numeUtilizator = (string)Session["NumeUtilizator"];
string IDUtilizator = (string)Session["IDUtilizator"];
string TipUtilizator = (string)Session["TipUtilizator"];
etichetaNume.Text = numeUtilizator;
if ((numeUtilizator == null || IDUtilizator == null || IDUtilizator == "0") && TipUtilizator != "1") Response.Redirect("~/Login.aspx");
}
}
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Program Software Pentru Gestionarea Situației Studenților (ID: 150168)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
