Sunteți pe pagina 1din 5

Fi de lucru

Pb 1.
S se realizeze o interfa pentru gestionarea persoanelor din evidena unei asociaii de locatari. Se utilizeaz o baz
de date cu o tabela avnd urmtoarea structur: ID(N,6), NUME(C,20),NR_BLOC (C,5), NR_AP(N,4), ANGAJAT(L). S
se creeze baza de date i tabela, introducnd 10 nregistrri. Interfaa trebuie s ofere posibilitatea efecturii
urmtoarelor aciuni:
a) Introducerea de noi persoane n eviden,
b) Stergerea unei persoane dupa ID
c) Afiarea tuturor persoanelor care sunt angajate.
d) Afisarea locatarilor unui bloc dat
e) Afisarea tuturor persoanelor ordonate dupa numarul blocului, apoi dupa nume alfabetic

Rezolvare n C#:
1. Se creaz o aplicaie de tip WindowsFormsApplication numit AsociatieLocatari.
2. Pentru a crea baza de date, click dreapta pe numele proiectului, Add New Item i alegei Service-based
Database, dai numele asociaie.mdf i apsai butonul Add. Ateptai puin pn apare fereastra Data
Source Configuration Wizard, se va crea DataSet-ul cu numele implicit asociatieDataSet. Apsai butonul
Finish.
3. n tab-ul Database Explorer (apare de obicei unde este i Toolbox-ul. Dac nu apare, alegei din meniul View,
opiunea Other Windows i apoi alegei Database Explorer), expandai nodul asociaie.mdf, dai click
dreapta pe Tables i alegei Add New Table pentru a aduga o nou tabel n baza de date. Completai
structura tabelei dup cerinele problemei. Vei alege tipurile cmpurilor astfel:
pentru ID alegei tipul numeric(6,0) i din fereastra Column Properties alegei pentru proprietatea
Identity Specification valoarea Yes, cu Identity Increment avnd valoarea 1 i Identity Seed tot valoarea
1 (astfel calculatorul va completa automat valorile din cmpul ID ncepnd de la 1, valori consecutive,
nepermind ca n acest cmp s fie dou valori identice)
pentru NUME alegei tipul nvarchar, iar din fereastra Column Properties alegei pentru proprietatea
Length valoarea 20
pentru NR_BLOC alegei tipul nvarchar, de lungime 5.
pentru NR_AP alegei tipul int.
pentru ANGAJAT alegei tipul bit, care permite ca valori doar: true i false.
Toate campurile trebuie completate obligatoriu, nu se permite valoarea Null.
4. Salvai tabela cu numele locatari.
5. n fereastra Database Explorer, dai click dreapta pe tabela locatari i alegei opiunea Show Table Data.
Adugai 10 nregistrri.
6. Pe forma Form1, adugai din Toolbox un control de tip MenuStrip i completai cu opiunile: Operatii ( care
are in submeniu optiunile Adauga persoana si Sterge persoana), Afisari ( care are in submeniu optiunile
Doar cei angajati, Locatarii unui bloc si Toti ordonati dupa bloc, apoi dupa nume alfabetic) i Ieire.
7. Din meniul Data, selectai opiunea Show Data Sources. n fereastra Data Sources, dai click dreapta pe
elementul asociaieDataSet, apoi selectai Configure DataSet with Wizard n dialogul Data Source
Configuration Wizard, selectai tabela locatari, apoi apsai butonul Finish.
8. n fereastra Data Source, selectai tabela locatari i tragei-o pur i simplu pe Form1. Va aprea automat un
control de tip GridView n care vor putea fi afiate informaiile din tabel. Stergeti de pe forma
locatariBindingNavigator.
9. Pentru verificare apsai tasta F5 sau butonul Start Debugging.
10. Pentru a introduce n eviden o nou persoan, se va afia o nou form n a crei controale vom introduce
informaiile. Aceste controale vor fi legate la tabela locatari. Forma va aprea pe ecran n momentul n care
vom da click n meniu pe opiunea Adauga persoana. Pentru aceasta parcurgei paii urmtori:
1

Pentru a aduga priectului o nou form, n fereastra Solution Explorer, dai click dreapta pe numele
proiectului, selectai Add i apoi Windows Form. Lsai n acest exemplu numele implicit, Form2.
n fereastra Data Source, selectai tabela locatari, deschidei lista ascuns din dreptul ei i selectai
opiunea Details. Selectai apoi tabela i tragei-o pur i simplu pe Form2. Vor aprea automat controale
de tip textBox i checkBox (legate la tabela locatari) n care vor putea fi introduse informaii noi. Pentru
controlul checkBox1 setai proprietatea Text la irul vid, iar textBox-ul pentru ID si label-ul corespunzator
stergeti-le deoarece aceasta informatie se completeaza automat de program..
Revenii n Form1 i pentru a trata evenimentul Click al opiunii Adauga persoana, vei scrie codul
urmtor:
Form2 f = new Form2();
f.ShowDialog(); // afiseaza Form2, ca dialog modal acest tip de
// fereastra dialog nu permite posibilitatea accesarii
altor //ferestre ale aplicatiei pana cand acest dialog nu este
inchis
locatariTableAdapter.Fill(asociatieDataSet.locatari);
// se vor reactualiza datele in tabela si implicit si in GridView
// care e legat de aceasta
11. Pentru a afla toate persoanele angajate a cror informaii sunt reinute n tabela locatari, se va realiza o
interogare. Pentru aceasta procedai n felul urmtor:
n fereastra Data Sources, dai click dreapta pe tabela locatari i alegei opiunea Edit DataSet with
Designer.
Dai click dreapta pe locatariTableAdapter i alegei opiunea Add Query. Va aprea fereastra
TableAdapter Query Configuration Wizard, n care este selectat implicit opiunea Use SQL
statements. Apsai butonul Next.
Va trebui s alegei ce comand SQL vrei s folosii. Va fi selectat implicit comanda care ne trebuie:
SELECT wich returns rows. Apsai butonul Next.
Se va afia implicit o comand SELECT care ntoarce toate nregistrrile din tabela locatari. Aceasta
va trebui modificat. Pentru aceasta, apsai butonul Query Builder i modificai comanda ca mai
jos:
SELECT
ID, NUME, NR_BLOC, NR_AP, ANGAJAT
FROM
locatari
WHERE
(ANGAJAT = 'true')

apoi apsai butonul Execute Query pentru a verifica corectitudinea comenzii. Dac comanda e bun,
apsai butonul OK, apsai butonul Next. Observai c automat vi s-au generat metodele FillBy i
GetDataBy cu ajutorul crora vei face legtura dintre interogarea voastr i controalele n care afiai
rezultatul interogrii. Redenumiti-le numele FillByAngajati, respectiv GetDataByAngajati .
Apsai butonul Next i apoi Finish pentru a termina interogarea.
Pe Form1, dai dublu click n MenuStrip pe opiunea Afisari apoi pe Doar cei angajati pentru a trata
evenimentul Click i scriei codul urmtor pentru a afia n controlul de tip GridView doar persoanele
angajate. Vei afia de fapt rezultatul interogrii realizate anterior.
locatariTableAdapter.FillByAngajati(asociatieDataSet.locatari);

Pentru a afisa locatarii unui bloc vom proceda astfel:


Adugai n proiect o nou form denumit Form3. Pe aceasta adugai din ToolBox trei controale ca n figur:

1. n fereastra Data Source, selectai tabela locatari, deschidei lista ascuns din dreptul ei i selectai opiunea
DataGridView. Selectai apoi tabela i tragei-o pur i simplu pe Form3. Va aprea automat un control de tip
GridView n care vor putea fi afiate informaiile filtrate. . Stergeti de pe forma locatariBindingNavigator.
n clasa Form3 adugai o dat membr public de tip string numit bloc astfel:
public string bloc;
n continuare realizai pe rnd urmtorii pai (aceeai ca la crearea interogrii anterioare doar c se va
schimba comanda i numele metodelor generate la final):
n fereastra Data Sources, dai click dreapta pe tabela locatari i alegei opiunea Edit DataSet with
Designer.
Dai click dreapta pe locatariTableAdapter i alegei opiunea Add Query. Va aprea fereastra
TableAdapter Query Configuration Wizard, n care este selectat implicit opiunea Use SQL
statements. Apsai butonul Next.
Va trebui s alegei ce comand SQL vrei s folosii. Va fi selectat implicit comanda care ne trebuie:
SELECT wich returns rows. Apsai butonul Next.
Se va afia implicit o comand SELECT care ntoarce toate nregistrrile din tabela locatari. Aceasta
va trebui modificat. Pentru aceasta, apsai butonul Query Builder i modificai comanda ca mai
jos:
SELECT
ID, NUME, , NR_AP, ANGAJAT
FROM
locatari
WHERE
( NR_BLOC = @bloc )
apoi apsai butonul Execute Query pentru a verifica corectitudinea comenzii.

Observai c pentru a folosi valoarea unei date membre a unei forme se scrie n faa ei @ (, iar
data membr folosit, trebuie s fie public) .
Dac comanda a fost verificat i este bun, apsai butonul OK, apsai butonul Next. Observai c
automat vi s-au generat metodele FillBy i GetDataBy. Redenumii-le cu numele sugestive:
FillByBloc, respectiv GetDataByBloc .
Apsai butonul Next i apoi Finish pentru a termina interogarea.
Pe Form1, dai dublu click n MenuStrip pe opiunea Afisari, apoi Locatarii unui bloc si pentru
evenimentul Click i scriei codul urmtor pentru a afia Form3 (n care vei introduce numrul blocului
i vei a afia ntr-un control de tip GridView doar persoanele din blocul dat. Vei afia de fapt rezultatul
interogrii realizate anterior)
Form3 f3 = new Form3();
f3.ShowDialog();

n Form3, n handler-ul de tratare a evenimentului Click pentru button1 scriei urmtorul cod care salveaz
valoarea introdus n textBox1 n data membr bloc i care afieaz rezultatul interogrii realizate anterior:
bloc = textBox1.Text;
locatariTableAdapter.FillByBloc(asociatieDataSet.locatari,bloc);
3

n continuare realizai pe rnd urmtorii pai (aceeai ca la crearea interogrii anterioare doar c se va schimba
comanda i numele metodelor generate la final) pentru a afisa toti locatarii ordonati dupa bloc si apoi dupa nume
alfabetic:
Creati un Query ca mai jos:
SELECT
ID, NUME, NR_BLOC, NR_AP, ANGAJAT
FROM
locatari
ORDER BY NR_BLOC, NUME
Numele metodelor generate vor fi FillByOrdonati si GetDataByOrdonati.

Pe Form1, dai dublu click n MenuStrip pe opiunea Afisari, apoi Toti ordonati dupa bloc, apoi dupa nume
alfabetic si pentru evenimentul Click i scriei codul urmtor:
locatariTableAdapter.FillByOrdonati(asociatieDataSet.locatari);

Pentru a sterge o persoana dupa ID, vom proceda astfel:

Pe Form1, sub controlul de tip DataGridView vom adauga din ToolBox un mic Panel, pe care vom plasa un
coltrol de tip label care va avea implicit numele Label1 si vom seta textul la ID, un textBox care va avea numele
implicit textBox1 si un buton cu numele buton1 si care va avea textul Sterge persoana.
n fereastra Data Sources, dai click dreapta pe tabela locatari i alegei opiunea Edit DataSet with
Designer.
Dai click dreapta pe locatariTableAdapter i alegei opiunea Add Query. Va aprea fereastra
TableAdapter Query Configuration Wizard, n care este selectat implicit opiunea Use SQL statements.
Apsai butonul Next.
Va trebui s alegei ce comand SQL vrei s folosii. Selectati DELETE. Apsai butonul Next.
Modificai comanda DELETE ca mai jos:
DELETE FROM locatari
WHERE
(ID = @id)

apsai butonul Next. Observai c automat s-a generat metoda DeleteQuery. Redenumiti-o cu
numele DeleteQueryID .Apsai butonul Next i apoi Finish pentru a termina interogarea.
Pe Form1, in panel dati dublu click pe butonul Sterge persoana si scrieti codul:

locatariTableAdapter.DeleteQueryID(int.Parse(textBox1.Text));
locatariTableAdapter.Fill(asociatieDataSet.locatari);

Scrieti cod care va face panelul initial invizibil si va deveni vizibil doar la alegerea optiunii Sterge persoana din
meniul Operatii.
Rulai i testai aplicaia.

Pb. 2.
S se realizeze o interfa pentru gestionarea crilor dintr-o bibliotec. Se utilizeaz o baz de date cu o tabel avnd
urmtoarea structur: ISBN(C,14), AUTORUL(C,20), TITLUL(C,25), ANUL_AP(N,4), NR_VOL(N,4). S se creeze baza
de date i tabela, introducnd 10 nregistrri. Interfaa trebuie s ofere posibilitatea efecturii urmtoarelor aciuni:
a) Introducerea de noi cri n eviden,
b) Afiarea crilor care sunt ntr-un numr de n volume, n fiind specificat.
4

Pb. 3.
S se realizeze o interfa pentru gestionarea produselor dintr-o magazie. Se utilizeaz o baz de date cu o tabel
avnd urmtoarea structur: COD(N,6), DENUMIREA(C,30), PRET(N,8.2), DATA_IN(D). S se creeze baza de date i
tabela, introducnd 10 nregistrri. Interfaa trebuie s ofere posibilitatea efecturii urmtoarelor aciuni:
a) Introducerea de noi produse,
b) Afiarea produselor care au preurile cuprinse ntre dou limite specificate.

Pb. 4.
S se realizeze o interfa pentru gestionarea zborurilor dintr-un aeroport. Se utilizeaz o baz de date cu o tabel
avnd urmtoarea structur: ID(N,4), DESTINATIA(C,25), DURATA(N,3), LOC_LIB(N,3), DATA_PLE(D). S se creeze
baza de date i tabela, introducnd 10 nregistrri. Interfaa trebuie s ofere posibilitatea efecturii urmtoarelor aciuni:
a) Introducerea de noi zboruri,
b) Anularea unui zbor,
c) Listarea locurilor libere, spre orice destinaie, pentru o data specificat.