Sunteți pe pagina 1din 36

Ministerul Educaţiei al Republicii Moldova

Centru de Excelenţă în Informatică şi Tehnologii Informaţionale

Raport
privind practica de producţie
la specialitatea Informatica
A elevei grupei I-1345
Florea Cristina
Tema:Evidenţa abonaţilor unei companii
Baza de practică : Moldtelecom S.A

Conducătorul practicii Conducătorul practicii


de la interprindere de la instituţie
Nicolae Slusari Gabură Nadejda

Chişinău 2017
Cuprins
Introducere.................................................................................................................................................2

1.Studiul bazei de practică...........................................................................................................................3

2.Proiectarea bazei de date.........................................................................................................................5

2.1.Crearea modelului Entitate-Relaţie...................................................................................................5

2.2.Crearea modelului relaţional.............................................................................................................6

2.3.Normalizarea bazei de date...............................................................................................................7

2.4.Descrierea fizică a modelului.............................................................................................................8

3.Crearea bazei de date.............................................................................................................................10

4.Protecţia datelor....................................................................................................................................12

5.Administrarea obiectelor din baza de date............................................................................................15

5.1. Tabele.............................................................................................................................................15

5.2.Vederi..............................................................................................................................................15

6.Proiectarea interfeţei grafice..................................................................................................................16

7.Manipularea bazei de date din aplicaţie.................................................................................................19

7.1.Introducerea datelor din aplicaţie...................................................................................................19

7.2.Modificarea datelor din aplicaţie.....................................................................................................20

7.3.Ştergerea datelor.............................................................................................................................21

Concluzii....................................................................................................................................................22

Bibliografie................................................................................................................................................23

Anexe........................................................................................................................................................24

1
Introducere
La finele anului patru de studii din cadrul Centrului de Excelenţă în Informatică şi Tehnologii
Informaţionale am ajuns la cea mai importantă etapă din toţi aceşti ani: practica de producţie .

Practica de producţie reprezintă etapa finală a procesului educaţional din colegiu. Aceasta are ca
scop oferirea elevilor,studenţilor experienţă profesională, testarea deprinderilor ,cunoştinţelor şi
aptitudinilor profesionale. În cadrul acestei etape studenţii au posibilitatea de a se acomoda cu
regimul de lucru. De asemenea practica de producţie oferă elevilor o şansa de angajare la servici
în urma finalizării acesteia.

La începutul practicii de producţie eram în căutarea unei teme potrivite şi actuale pentru
proiectul ce urma să-l realizez. Soluţia pentru acest obstacol a fost găsită în cadrul unităţii
economice la care eu realizam practica : „Moldtelecom S.A „

Datorită cooperării dintre mine şi personalului a acestei companii am găsit o temă destul de
potrivită şi actuală atât pentru mine, cât şi pentru alte companii. Tema acestei baze de date este
„ Evidenţa clienţilor a unei companii”.

În urma aceste baze de date am creat aplicaţia Abonaţi, o aplicaţie potrivită pentru obţinerea
informaţiilor despre clienţi. Accesul la această aplicaţie o are doar administratorul. Astfel, datele
personale despre clienţi nu sunt afişare oricui.

Cu aplicaţia Abonaţi administratorul are acces la date despre clienţi şi are posibilitatea de a
manipula aceste date, precum : excluderea unor date învechite, adăugarea unor noi clienţi în baza
de date , modificarea unor informaţii despre clienţi , şi totodată administratorul are posibilitatea
de a oferi acces la date altor persoane, prin oferirea unui nume şi parole ce vor fi salvate într-un
tabel aparte.

2
1.Studiul bazei de practică
Baza de practică aleasă a fost Moldtelecom S.A.

Moldtelecom este operatorul național de telecomunicații și totodată cea mai mare companie de


telecomunicații din Republica Moldova.

La 1 aprilie 1993, în urma restructurării sectorului de telecomunicații din Republica Moldova, a


fost înființată Întreprinderea de Stat „Moldtelecom”. La 5 ianuarie 1999, întreprinderea a fost
reorganizata în societate pe acțiuni, statul fiind fondator și unic acționar.

De-a lungul activității sale, Moldtelecom a parcurs o perioadă de perfecționare și evoluție


continuă, de la un monopol de stat la o companie deschisă pentru colaborare, de la tradiționala
telefonie fixă, până la cele mai avansate servicii. Astfel, Moldtelecom este unica companie care
oferă populației întreaga gamă de servicii de telecomunicații: telefonie fixă, telefonie mobilă,
Internet, transport de date și televiziune digitală.

În prezent, compania deține poziția de lider pe piața serviciilor de telefonie fixă (96,5%) și pe
cea a serviciilor de acces la Internet în bandă largă (70,3%). De asemenea, după volumul
vânzărilor, primul loc pe acest segment de piață îi revine tot companiei Moldtelecom, cu o cotă
de piață de circa 57% 

Performanțele companiei sunt reflecția investițiilor de circa 700–800 milioane lei alocate anual,
în implementarea de tehnologii și servicii noi, precum și îmbunătățirea continuă a relației cu
abonații săi. Abonații justifică efortul și așteptările companiei, înregistrând, în 2011, cifra record
de 1,124 milioane de abonați. Numărul abonaților este într-o continuă creștere, atingând o
densitate de 33% la 100 de locuitori.

Telefonie Fixă

Serviciul de bază al companiei Moldtelecom este telefonia fixă. Cota de piață a serviciului de
telefonie fixă era de 96,5% în primul trimestru al anului 2011 cu 1.124.000 abonați.

În anul 2007 a fost lansat serviciul de telefonie fixă fără fir (Wireless Local Loop - WLL) cu
denumirea comercială „Amplus”. Serviciul se bazează pe tehnologia CDMA și utilizează
standardul CDMA2000 1X în banda de frecvență 450 MHz. Avantajul acestei tehnologii constă
în faptul că permite utilizarea serviciilor telefonice chiar și în regiunile unde conectarea la
rețeaua de telefonie tradițională este dificilă sau chiar imposibilă. Telefonia Amplus prestează

3
servicii similare telefoniei tradiționale: primirea și efectuarea apelurilor, accesarea rețelei
Internet și multe alte servicii suplimentare.

Serviciul telegraf permite expedierea telegramelor prin intermediul telofonului, iar destinatarul
va primi mesajul sub forma de telegramă. Video Telefonia permite comunicarea prin apel video
între două sau mai multe persoane situate atât pe teritoriul Republicii Moldova (național), cât și
peste hotarele ei (internațional).

Internet

După numărul de abonați, în primul trimestrul din 2011, cota de piață a companiei Moldtelecom
după numărul de abonați era de 70,9%[3]. După cifra de afaceri, cota de piață a Moldtelecom era
de 76,2%. În 2008 a început extinderea rețele de fibră optică FTTx și a fost lansat serviciul de
acces la internet în bandă largă „MaxFiber”. Acest serviciu oferă conexiuni simetrice cu viteze
de până la 100 Mbps descărcare și încărcare, atât pentru resursele locale MD-IX, cât și cele
externe. Inițial serviciul era disponibil în Chișinău, însă treptat a fost extins și în centrele
raioanale și localitățile mari.

„MaxDSL” este serviciul de internet oferit prin intermediul tehnologiei ADSL. Acesta oferă
conexiune la viteze de până la 20 Mbps descărcare și încărcareServiciul MaxDSL este disponibil
în majoritatea localităților din Republica Moldova. În primul trimestru din 2011 au fost
înregistrati 169.900 abonați MaxDSL .

Telefonia mobilă Unité

În luna martie 2007, Moldtelecom a devenit al treilea operator de servicii de telecomunicații


mobile din Republica Moldova, prin lansarea serviciului Unité. Acesta utilizează în exclusivitate
pe piață tehnologia CDMA2000 în banda de frecvențe de 450 MHz și permite transmiterea de
voce și date, folosind inovații tehnologice de ultimă generație. La finele anului 2008, Unité a
asigurat accesul la Internet mobil întregii țări, oferind libertatea de comunicare, dezvoltare a
afacerilor și relațiilor personale, indiferent de timpul și locul aflării. Din 21 mai 2010 Unité trece
la o nouă etapă de dezvoltare a comunicațiilor mobile în întreaga țară și devine operatorul cu cea
mai mare rețea de generația a treia din Republica Moldova care lucrează în standard UMTS
(3G).

4
2.Proiectarea bazei de date

2.1.Crearea modelului Entitate-Relaţie


Diagrama Entitate-Relație (ER) este un model neformalizat pentru reprezentarea unui sistem din
lumea reală. Este un model de date conceptual de nivel înalt dezvoltat de Chen în anul 1976,
pentru a facilita proiectarea bazelor de date.

Clienţi Adrese

1 1

deţine aparţine

M M
Conturi

Users

5
2.2.Crearea modelului relaţional
Modelul relațional al datelor, folosit în acest moment de majoritatea sistemelor de gestiune aflate
pe piață a fost introdus in anul 1970 prin articolul lui Edgar Frank Codd ”A relational model for
large shared databanks”. Acest model are o singură structură de date – relația și tabelul. O bază
de date relațională reprezintă un ansamblu de relații (tabele) grupate în jurul unui subiect bine
definit. O relație este redată printr-un tabel, în care fiecare rând reprezintă o înregistrare distinctă,
iar fiecare coloană – un atribut.

6
2.3.Normalizarea bazei de date

O relaţie de tip M:M poate provoca apariţia anomaliilor,apariţia surplusului de informaţii şi


altele. Pentru reprezentare corectă a informaţiilor şi diminuarea informaţiilor eronate,inclusiv şi
redundanţa,este necesar de a normaliza baza de date creată.

Normalizare reprezintă un proces formal de analiză a relaţiilor bazare pe cheile primare. Aceasta
presupune urmarea unor reguli prin care baza de date se poate normaliza până la un anumit grad.
Dacă o cerinţă nu este satisfăcută ,relaţia trebuie descompusă pentru a satisface condiţia formei
normale.

Normalizarea se execută trecând prin toate formele normale,până se ajunge la forma normală
cerută. La proiectarea bazei de date trebuie să ajungem cel puţin la forma normală unu,dar este
recomandat de a ajunge până la forma normală 3 sau BCFN.

Prima Formă Normală(FN1) exclude posibilitatea existenţei grupurilor repetitive,cerând ca


fiecare câmp într-o bază de date să cuprindă numai o valoare atomică. De asemenea, prima
formă normală cere şi ca fiecare înregistrare să fie definită astfel încât să fie identificată în mod
unic prin intermediul unei chei primare.

A Doua Formă Normală(FN2) cere ca toate elementele unei tabele să fie dependente funcţional
de totalitate cheii primare. Dacă unul sau mai multe elemente sunt dependente funcţional numai
de o parte a cheii primare, atunci ele trebuie să fie separate în tabele diferite. Dacă tabela are o
cheie primară formată din numai un atribut, atunci ea este automat în FN2.

A Treia Formă Normală(FN3) cere ca atributele non-cheie ale unei relaţii să depindă numai de
chei candidate ale acelei relaţii. Toate atributele non-cheie trebuie să fie mutual independente.

7
2.4.Descrierea fizică a modelului
Pentru crearea bazei de date Abonaţi au fost utilizate următoarele tabele:

Clienţi

Denumire câmp Tip de date Constrângerea Descriere


IDClient int primary key Identificatorul clientului
Nume varchar(100) not null Numele clientului
Prenume varchar(100) not null Prenumele clientului
Patrimonimic varchar(50) not null Patrimonimicul clientului
Gen varchar(10) check Genul clientului
Tel_servici varchar(15) null Telefonul de servici
Tel_mobil varchar(20) not null Telefonul personal
Email varchar(50) not null Poşta electronică a clientului
DataNastere date not null Data naşterii ai clientului
LocNastere varchar(100) null Locul naşterii ai clientului

Adrese

Denumire câmp Tip de date Constrângerea Descriere


IDAdresa int primary key Identificatorul adresei
Adr_personala varchar(100) not null Adresa personală
Tara varchar(120) not null Ţara
Den_localitate varchar(100) not null Denumirea localităţii
Den_strada varchar(100) not null Denumirea străzii
Nr_loc int Null Numărul localităţii
Nr_str int Null Numărul străzii
Tip_localit varchar(10) Check Tipul localităţii(oraş,sat,comună)

Cont

Denumire câmp Tip de date Constrângerea Descriere


IDCont int primary key Identificatorul contului
IDClient int foreign key Cheia externă către tabela Clienti
IDAdresa int foreign key Cheia externă către tabela Adrese
Categorie_cont varchar(20) Check Categoria contului
Den_cont varchar(50) Null Denumirea contului
Tip_cont varchar(20) Check Tipul contului
Statut_cont varchar(20) Check Statutul contului
DataIncContract date not null Data în care a fost încheiat contractul
DataExpContract date not null Data expirării contractului

8
Users

Denumire câmp Tip de date Constrângerea Descriere


Nume varchar(100) not null Numele administratorului
Prenume varchar(100) not null Prenumele administratorului
Email varchar(100) not null Poşta electronică
Tel_personal varchar(100) not null Telefonul personal
NumeAdmin varchar(100) not null Numele pentru logare în aplicaţie
Parola varchar(255) not null Parola pentru logare în aplicaţie

9
3.Crearea bazei de date
Scenariu de creare a bazei de date:

create database Abonati

use Abonati

create table Clienti

IDClient int not null primary key,

Nume varchar(100) not null ,

Prenume varchar(100) not null ,

Patrimonimic varchar(50) not null ,

Gen varchar(10) not null check (gen like 'masculin' or gen like 'femenin') ,

Tel_serviciu varchar(15) null ,

Tel_mobil varchar(20) not null ,

Email varchar(50) not null ,

DataNastere date not null ,

LocNastere varchar(100) null

create table Adrese

IDAdresa int not null primary key,

Adr_personala varchar(100) not null ,

Tara varchar(120) not null ,

Den_localitate varchar(100) not null ,

Den_strada varchar(100) not null ,

Nr_localit int null ,

Nr_str int null ,

Tip_localit varchar(10) check (Tip_localit like 'Oras' or Tip_localit like


'Sat' or Tip_localit like 'Comuna') ,

10
create table Cont

IDCont int not null primary key ,

IDClient int not null ,

IDAdresa int not null ,

Categorie_cont varchar(20) check (Categorie_cont like 'persoana fizica' or


Categorie_cont like 'persoana juridica' ) ,

Den_cont varchar(50) null ,

Tip_cont varchar(20) not null check (Tip_cont like 'credit' or Tip_cont like
'credit limitat' or Tip_cont like 'debit') ,

Statut_cont varchar(20) not null check (Statut_cont like 'Activ' or


Statut_cont like 'Suspendat' or Statut_cont like 'Inchis'),

DataIncContract date not null,

DataExpContract date not null

create table Users

Nume varchar(100) not null ,

Prenume varchar(100) not null ,

Email varchar(100) not null ,

Tel_personal varchar(100) not null ,

NumeAdmin varchar(100) not null ,

Parola varchar(255) not null

alter table Cont

add constraint fk_Cont_Client foreign key (IDClient) references


Clienti(IDClient)

alter table Cont

add constraint fk_Cont_Adrese foreign key (IDAdresa) references


Adrese(IDAdresa)

11
4.Protecţia datelor

Prin securitatea bazelor de date se înțelege protejarea datelor împotriva folosirii neautorizate a
lor și în special a modificărilor și distrugerilor nedorite. Pentru realizarea securității datelor din
baza de date se utilizează controale tehnice si administrative.

Securitatea este în general asociată cu următoarele situații:

 acces fraudulos la date


 pierderea confidențialității datelor

 pierderea caracterului privat al datelor

 pierderea integrității datelor

 pierderea disponibilității datelor

Este dificilă protejarea datelor împotriva accesului răuvoitor, intenționat. Se recunoaște că de


fapt nu există protecție absolut sigură ci doar protecții şi măsuri de securitate mai eficiente sau
mai puțin eficiente.

Forme de acces intenţionat şi răuvoitor la datele unei baze de date:

 citire neautorizată
 modificări neautorizate

 distrugeri de date

Pentru protecţia bazei de date se pot lua măsuri de asigurare a securităţii la mai multe nivele:

 La nivel fizic, locurile în care se află calculatoarele trebuie protejate de accesul


persoanelor neautorizate
 La nivel uman, este recomandabil să se acorde autorizaţiile de acces cu multa grijă şi să
se țină evidențe stricte ale persoanelor autorizate

 La nivel sistem de operare, slăbiciunile protecției la nivel de sistem de operare trebuie


eliminate sau compensate de alte măsuri

12
 La nivel SGBD, sistemul oferă anumite facilităţi care sprijină protecția datelor

Tehnici de asigurare a securităţii datelor:

1. Identificarea utilizatorilor.

Fiecărui utilizator în parte i se acordă anumite drepturi de operare pe diferite porțiuni din baza de
date la diferite nivele cum ar fi relația, înregistrarea, pagina, atributul, etc. Drepturile se referă la
posibilitatea citirii, inserării, ștergerii sau modificării datelor respective. Identificarea se face de
obicei prin parole stabilite fie de administratorul bazei de date, fie de utilizator.

2. Protejarea datelor prin codificare (criptare).

Deoarece s-ar putea ajunge la date și prin alte mijloace decât prin intermediul SGBD-ului se
poate face o protecție prin păstrarea codificată a datelor pe suportul magnetic. Decodificarea
datelor se poate face numai după identificarea utilizatorului prin gărzi asociate lui.

3. Utilizarea view-urilor în aplicații.

Abilitatea view-urilor de a „ascunde” o parte din informaţiile din baza de date poate fi utilizată și
pentru stabilirea unui anumit grad de securitate a datelor. În unele sisteme nu sunt acceptate
modificări prin intermediul view-urilor. Astfel de view-uri se numesc read-only și sunt utilizate
mai ales în aplicațiile în care datele pot fi citite de toți utilizatorii (baze de date publice) dar
modificările se fac numai cu aprobarea administratorului/proprietarului bazei de date.

4. Administrarea şi transmiterea drepturilor.

Se ține evidentă strictă a drepturilor de acces ale fiecărui utilizator la porțiuni din baza de date și
se fixează reguli de transmitere de la un utilizator la altul a dreptului de acces.

Forme de autorizare:

 autorizare la citire (consultare)


 autorizare la înserare (adăugare)
13
 autorizare la actualizare (care exclude ștergerile)

 autorizare la ștergeri (la nivel de tuplu)

Conducerea organizaţiei, care este proprietară a bazei de date, trebuie să ia măsuri de securitate
care reduc riscul de a se pierde informații sau de a se distruge informații. Prin pierdere de
informații se poate înţelege că se pierde caracterul privat al informațiilor, ele devin accesibile
unui grup mai mare de persoane decât cel prevăzut. Nu întotdeauna „scurgerile” de informaţii
lasă urme, deci nu se materializează întotdeauna în schimbări detectabile la nivelul bazei de date.

Trebuie de menționat că furturile şi fraudele nu sunt neapărat legate de baza de date, ele sunt un
factor de risc pentru întreaga organizație, gravitatea acestor fapte depinzând şi de profilul
organizației în cauză.

14
5.Administrarea obiectelor din baza de date
În urma procesului de proiectare a bazei de date au fost create următoarele obiecte:

 Tabele

 Vederi

5.1. Tabele
Au fost create următoarele tabele:

 Tabela Clienti – stochează informațiile principale despre clienții companiei.Aici se


include datele precum: id-ul clientului , numele,prenumele , patrimonicul,genul ,telefonul
de servici a clientului(dacă îl deține), telefonul de contact personal ,poșta electronică,data
și locul nașterii

 Tabela Adrese – deoarece clienții pot fi și din străinătate, a fost creat un tabel separat
pentru adrese.Aici se includ : id-ul adresei , adresa personala (deținută de un client) , tara
din care provine un anumit client, denumirea localității , denumirea străzii, numărul
localității(dacă acesta există) , numărul străzii (dacă acesta există) , tipul localității ( oraș,
sat sau comună)

 Tabela Cont – stochează informațiile despre conturile clienților în cadrul companiei.Prin


intermediul acestei tabele se face legătura dintre tabela Clienți și Adrese.Aici se includ
informaţii precum : id-ul contului,id-ul clientului,id-ul adresei,categoria contului(dacă e
vorba de persoana fizică sau juridică),denumirea contului(poate lipsi),tipul contului
(credit,credit limitat,debit),statutul contului, data încheierii şi data expirării contractului

 Tabela Users – tabela users a fost creată strict pentru aplicație (pentru logare). Deoarece
baza de date Abonați este o bază de date ce poate conține date personale despre clienți, o
măsură de protecție ar fi rectricționarea accesului la baza de date. Astfel, tabela Users
este utilizată la crearea autentificării.

Scenariu de crearea a tabeleor și a inserării datelor în aceste tabele se află în Anexa (1)

5.2.Vederi
În cadrul creării bazei de Abonaţi au fost creare următoarele vederi:

 Vederea ClientiChisinau – conţine informaţii despre Clienţii născuţi în Chişinău.

 Vederea DetaliiCont – conţine informaţii despre conturile active,contractele cărora nu au


expirat.

 Vederea DetaliiCont2 – conţine informaţii despre clienţii a căror cont ,dintr-un motiv sau
altul , a fost suspendat.

Scenariu de creare a vederilor se găsesc în Anexa (2)

15
6.Proiectarea interfeţei grafice
Pentru a crea un design atrăgător şi modern am instalat pachetul Material Skin în aplicaţie. Acest
pachet conţine instrumente speciale care ne ajută la crearea unei interfeţe atrăgătoare.

Interfaţa de logare:

Codul sursă a formularului de autentificare se află în Anexa (3)

Interfeţele de manipulare cu datele:

1.Tabela Clienţi

16
2.Tabela Adrese

3.Tabela Cont

17
4. Tabela Users

Pentru crearea interfeţelor de manipulare a datelor am utilizat un tabControl şi un tabSelector.

TabControl-ul conţine patru pagini destinate fiecărei tabele.

Pe fiecare pagină sunt amplasate câte un dataGridView cu datele din tabela corespunzătoare,

textBox-uri pentru inserarea şi modificare datelor şi patru butoane pentru manipularea datelor.

TextBox-urile sunt direct legate cu datele, astfel modificarea lor va fi mult mai uşoară.

Butoanele au destinaţia lor:

 Butonul Salvare – va insera datele din textBox-uri în tabelă.


 Butonul Modificare – va modifica datele conforma modificărilor din textBox-uri
 Butonul Ştergere – va şterge datele după un anumit ID.
 Butonul Refresh – actualizarea formularului. După salvarea sau ştergerea informaţiilor ,
în dataGridView nu se observă modificările. Pentru ca modificările să fie vizibile
utilizatorilor a fost creat butonul Refresh , care ne va actualiza formularul.

Codul sursă a formularului de manipulare a datelor se află în Anexa (4)

18
7.Manipularea bazei de date din aplicaţie

7.1.Introducerea datelor din aplicaţie


Introducerea datelor au loc în felul următor:

1. Se complectează textBox-urile cu datele dorite


2. Se face click pe butonul Salvare
3. Se afişează dacă datele au fost introduse sau nu.
4. Se face click pe butonul Refresh pentru a vizualiza datele în dataGridView

Aceiaşi procedură are loc şi la restul tabelelor.

Codul sursă pentru adăugarea datelor în tabelă se află în Anexa (4)

19
7.2.Modificarea datelor din aplicaţie
Modificarea datelor are loc în felul următor:

1. Se introduce în câmpul ce trebuie modificat o valoare nouă.


2. Se face click pe butonul Modificare
3. Deoarece textBox-urile sunt direct legate cu datele din tabelă nu este necesar să facem
click pe butonul Refresh. Datele automat se vor modifica şi în tabelă.

Aceiaşi procedură are loc şi la restul tabelelor.

Codul sursă pentru modificarea datelor din fiecare tabelă se află în Anexa (4)

20
7.3.Ştergerea datelor
Ştergerea datelor se face în felul următor:

1. Fie specificăm în textBox ClientID id-ul câmpului pe care dorim să-l ştergem , fie
selectăm direct din dataGridView un câmp. Id-ul acestui câmp va apărea automat în
textBox-ul ClientID
2. Facem click pe butonul Şterge.
3. Aşa cum nu se observă în dataGridView că câmpul a fost şters ,facem click pe butonul
Refresh.

Rezultatul se observă după ce facem click pe butonul Refresh.

Aceiaşi procedură are loc şi la restul tabelelor.

Codul sursă pentru ştergerea datelor din tabelă se află în Anexa (4)

21
Concluzii

Periodata stagiului practicii de producţie a fost probabil cea mai importantă şi tensionată
perioadă din anii de studiu de la Centru de Excelenţă în Informatică şi Tehnologii
Informaţionale.

În această perioadă am avut posibilitatea de a mă forma profesional, de a mă pregăti pentru un


viitor job. M-am încadrat într-un colectiv binevoitor care mereu mă ajuta atunci când aveam
nevoie. Datorită cooperării dintre mine, ca student – practicant şi a colectivului de la
Moldtelecom am reuşit să am o practică foarte captivantă şi favorabilă pentru dezvoltarea mea în
continuare.

Ca student absolvent pot spune că această etapă a fost una foarte importantă : am reuşit să înţeleg
cum are loc procesul de lucru , care sunt cerinţele faţă de mine ca lucrător, care sunt avantejele
unui job în domeniu IT .

Totodată , perioada practicii de producţie a demonstrat încă odată calitatea studiilor obţinute în
cadrul Centrului de Excelenţă în Informatică şi Tehnologii Informaţionale: studiile obţinute aici
mi-au fost foarte utile pe toată perioada practicii.

Datorită experienţei obţinute de la Moldtelecom, am reuşit să realizez acest proiect . Cu ajutor


implicării colectivului de la Moldtelecom am reuşit să elaborez o aplicaţie atrăgătoare (din
punctul de vedere a design-ului ) şi utilă(din punct de vedere a funcţionalităţii).

Aceste şase săptămâni de practică m-au ajutat să înţeleg mai multe lucruri.Astfel, am devenit
parte dintr-un colectiv prietenos, şi totodată am reuşit să obţine experienţă şi informaţii necesare
depre condiţiile şi avantajele de muncă în domeniu IT.

Practica de producţie a fost o perioadă foarte frumoasă şi favorabilă pentru formarea mea
profesională.

22
Bibliografie
1. https://github.com/IgnaceMaes/MaterialSkin

2. https://github.com/ButchersBoy/MaterialDesignInXamlToolkit

3. https://stackoverflow.com/questions/10063770/how-to-add-a-new-row-to-datagridview-
programmatically

4. http://csharp.net-informations.com/datagridview/csharp-datagridview-add-column.htm

5. https://msdn.microsoft.com/en-
us/library/system.windows.forms.datagridview.rows(v=vs.110).aspx

6. https://www.codeproject.com

23
Anexe
Anexa (1)
create table Clienti
(
IDClient int not null primary key,
Nume varchar(100) not null ,
Prenume varchar(100) not null ,
Patrimonimic varchar(50) not null ,
Gen varchar(10) not null check (gen like 'masculin' or gen like 'femenin') ,
Tel_serviciu varchar(15) null ,
Tel_mobil varchar(20) not null ,
Email varchar(50) not null ,
DataNastere date not null ,
LocNastere varchar(100) null
)

create table Adrese


(
IDAdresa int not null primary key,
Adr_personala varchar(100) not null ,
Tara varchar(120) not null ,
Den_localitate varchar(100) not null ,
Den_strada varchar(100) not null ,
Nr_localit int null ,
Nr_str int null ,
Tip_localit varchar(10) check (Tip_localit like 'Oras' or Tip_localit like
'Sat' or Tip_localit like 'Comuna') ,
)

create table Cont


(
IDCont int not null primary key ,
IDClient int not null ,
IDAdresa int not null ,
Categorie_cont varchar(20) check (Categorie_cont like 'persoana fizica' or
Categorie_cont like 'persoana juridica' ) ,
Den_cont varchar(50) null ,
Tip_cont varchar(20) not null check (Tip_cont like 'credit' or Tip_cont like
'credit limitat' or Tip_cont like 'debit') ,
Statut_cont varchar(20) not null check (Statut_cont like 'Activ' or
Statut_cont like 'Suspendat' or Statut_cont like 'Inchis'),
DataIncContract date not null,
DataExpContract date not null
)

create table Users


(
Nume varchar(100) not null ,
Prenume varchar(100) not null ,
Email varchar(100) not null ,
Tel_personal varchar(100) not null ,
NumeAdmin varchar(100) not null ,
Parola varchar(255) not null
)

24
alter table Cont
add constraint fk_Cont_Client foreign key (IDClient) references Clienti(IDClient)

alter table Cont


add constraint fk_Cont_Adrese foreign key (IDAdresa) references Adrese(IDAdresa)

insert into users(Nume,Prenume,Email,Tel_personal,NumeAdmin,Parola)


values
('Cristina','Florea','florea.cristi19@gmail.com','069775331','CristinaF','admin1234');

insert into Clienti (IDClient,Nume,Prenume,Patrimonimic,Gen,Tel_serviciu, Tel_mobil,


Email,DataNastere,LocNastere) values
(1,'Rusu','Victoria','Andrei','femenin',null,'069022121','rusu.victoria@gmail.com','03.05
.1980','Chisinau'),
(2,'Sarbu','Tatiana','Vladislav','femenin',null,'078028343','sarbu.tanea20@gmail.com','01
.10.1985','Chisinau'),
(3,'Coceban','Daniela','Tudor','femenin','(022)58-10-10', '069357332',
'daniela.dc@gmail.com','10.01.1987','Cahul'),
(4,'Boltoaca','Tudor','Vadim','masculin','(022)58-00-01', '069574854',
'tudort221@mail.ru','30.04.1977','Balti'),
(5,'Plesca','Ion','Ion','masculin','(022)57-40-04', '067965840', 'ion.plesca58@mail.ru',
'03.10.1975','Cahul');

--##############################################--

insert into Adrese


(IDAdresa,Adr_personala,Tara,Den_localitate,Den_strada,Nr_localit,Nr_str,Tip_localit)
values
(1,'str.Cuza Voda 49/2','R. Moldova','Chisinau,Botanica','Stefan cel Mare',10,20,'Oras'),
(2,'str.Ion Creanga 23','R. Moldova','Chisinau','Stefan cel Mare',10,42,'Oras'),
(3,'str.N.Testimiteanu 48','R. Moldova','Durlesti','Mesagerilor',15,33,'Sat'),
(4,'str.Izvoarelor 43','R. Moldova','Durlesti','Izvoarelor',15,21,'Sat'),
(5,'str.Bucuresti 3','R. Moldova','Chisinau,Centru','Ion Creanga',4,33,'Oras');

--##############################################--

insert into Cont (IDCont,IDClient,IDAdresa,Categorie_cont,Den_cont, Tip_cont,Statut_cont,


DataIncContract,DataExpContract) values
(1,1,1,'persoana fizica','Cont 0443','credit','Activ','01.04.2010','01.01.2020'),
(2,2,2,'persoana fizica','Cont 8930','credit limitat','Activ','03.02.2015','03.02.2019'),
(3,3,3,'persoana fizica','Cont 6621','credit','Suspendat','03.01.2011','05.06.2017'),
(4,4,4,'persoana juridica','Cont 3101','debit','Inchis','01.01.2010','01.01.2017'),
(5,5,5,'persoana juridica','Cont 3031','credit','Inchis','01.04.2011','02.02.2016');

25
Anexa (2)
create view ClientiChisinau as
select Nume,Prenume,Patrimonimic,Gen from Clienti
where LocNastere like 'Chisinau'

--##############################################--

create view DetaliiConturi as


select * from Cont where Statut_cont like 'activ'

--##############################################--

create view DetaliiConturi2 as


select Nume,Prenume,Patrimonimic,Categorie_cont,Tip_cont,Statut_cont
from Clienti inner join Cont
on Clienti.IDClient=Cont.IDClient
where Statut_cont like 'Suspendat'

26
Anexa (3)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using MaterialSkin;

namespace Abonati
{
public partial class Form1 : MaterialSkin.Controls.MaterialForm
{
SqlConnection con = new SqlConnection(@"Data Source=DOX-
ПК\SQLEXPRESS;Initial Catalog=Abonati;Integrated Security=True");

public Form1()
{
InitializeComponent();
MaterialSkinManager skin = MaterialSkinManager.Instance;
skin.Theme = MaterialSkinManager.Themes.LIGHT;
skin.AddFormToManage(this);
skin.ColorScheme = new
ColorScheme(Primary.Blue800,Primary.Blue900,Primary.Blue500,Accent.Cyan700,Te
xtShade.WHITE); }

private void Form1_Load(object sender, EventArgs e)


{}

private void materialRaisedButton1_Click(object sender, EventArgs e)


{
SqlDataAdapter sda = new SqlDataAdapter("Select count(*) From
Users where NumeAdmin = '" + materialSingleLineTextField1.Text + "' and
Parola = '" + materialSingleLineTextField2.Text + "'", con);
DataTable m = new DataTable();
sda.Fill(m);
if (materialSingleLineTextField1.Text == "Cristina" &&
materialSingleLineTextField2.Text == "admin")
{
this.Hide();
MessageBox.Show("Logarea a avut loc cu succes!");
Form2 f = new Form2();
f.Show();
}
if (m.Rows[0][0].ToString() == "1")
{
this.Hide();
MessageBox.Show("Logarea a avut loc cu succes!");
Form2 f = new Form2();
f.Show();
}

} } }

27
Anexa (4)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using MaterialSkin;

namespace Abonati
{
public partial class Form2 : MaterialSkin.Controls.MaterialForm
{

SqlConnection con = new SqlConnection(@"Data Source=DOX-


ПК\SQLEXPRESS;Initial Catalog=Abonati;Integrated Security=True");

public Form2()
{
InitializeComponent();
MaterialSkinManager skin = MaterialSkinManager.Instance;
skin.Theme = MaterialSkinManager.Themes.LIGHT;
skin.AddFormToManage(this);
skin.ColorScheme = new ColorScheme(Primary.Blue800,
Primary.Blue900, Primary.Blue500, Accent.Cyan700, TextShade.WHITE);
}

private void Form2_Load(object sender, EventArgs e)


{
// TODO: данная строка кода позволяет загрузить данные в таблицу
"abonatiDataSet.Users". При необходимости она может быть перемещена или
удалена.
this.usersTableAdapter.Fill(this.abonatiDataSet.Users);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"abonatiDataSet.Cont". При необходимости она может быть перемещена или
удалена.
this.contTableAdapter.Fill(this.abonatiDataSet.Cont);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"abonatiDataSet.Adrese". При необходимости она может быть перемещена или
удалена.
this.adreseTableAdapter.Fill(this.abonatiDataSet.Adrese);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"abonatiDataSet.Clienti". При необходимости она может быть перемещена или
удалена.
this.clientiTableAdapter.Fill(this.abonatiDataSet.Clienti);

private void materialRaisedButton1_Click(object sender, EventArgs e)


{

28
}

private void materialRaisedButton2_Click(object sender, EventArgs e)


{

con.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Clienti
(IDClient,Nume,Prenume,Patrimonimic,Gen,Tel_serviciu,Tel_mobil,Email,DataNast
ere,LocNastere)VALUES
(@ID,@Name,@LastName,@Name2,@Gender,@Work,@Telefon,@Mail,@Date,@Place)",
con);

cmd.Parameters.AddWithValue("@ID",ClientID.Text);
cmd.Parameters.AddWithValue("@Name", Nume.Text);
cmd.Parameters.AddWithValue("@LastName", Prenume.Text);
cmd.Parameters.AddWithValue("@Name2", Patrimonimic.Text);
cmd.Parameters.AddWithValue("@Gender", Gen.Text);
cmd.Parameters.AddWithValue("@Work", TelServici.Text);
cmd.Parameters.AddWithValue("@Telefon", TelMobil.Text);
cmd.Parameters.AddWithValue("@Mail", Email.Text);
cmd.Parameters.AddWithValue("@Date", Data.Text);
cmd.Parameters.AddWithValue("@Place",Loc.Text);
cmd.ExecuteNonQuery();

MessageBox.Show("Inserare reusita!");
con.Close();

private void materialRaisedButton3_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Update Clienti set Nume = '" +
Nume.Text + "',Prenume = '" + Prenume.Text + "',Patrimonimic='" +
Patrimonimic.Text + "',Gen='" + Gen.Text + "',Tel_serviciu='" +
TelServici.Text + "',Tel_mobil='" + TelMobil.Text + "',Email='" + Email.Text
+ "',DataNastere='" + Data.Text + "',LocNastere='" + Loc.Text + "' where
IDClient like '" + ClientID.Text + "'",con);
cmd.ExecuteNonQuery();
con.Close();
dataGridView1.Refresh();
MessageBox.Show("Modificare reusita!");

private void materialRaisedButton4_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Delete from Clienti where
IDClient ='"+ClientID.Text+"'",con);
cmd.ExecuteNonQuery();

MessageBox.Show("Campul a fost sters cu succes !");


con.Close();
}

private void materialTabControl1_SelectedIndexChanged(object sender,


EventArgs e)
{

private void tabPage1_Click(object sender, EventArgs e)

29
{

private void dataGridView1_CellContentClick(object sender,


DataGridViewCellEventArgs e)
{

private void materialRaisedButton17_Click(object sender, EventArgs e)


{

private void materialSingleLineTextField4_Click(object sender,


EventArgs e)
{

private void materialSingleLineTextField6_Click(object sender,


EventArgs e)
{

private void materialRaisedButton8_Click(object sender, EventArgs e)


{
AdresaID.Text = null;
PersonalAdress.Text = null;
Tara.Text = null;
DenLoc.Text = null;
DenStr.Text = null;
NrLoc.Text = null;
NrStr.Text = null;
TipLoc.Text = null;

private void materialRaisedButton5_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Delete from Adrese where
IDAdresa ='" + AdresaID.Text + "'", con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Campul a fost sters cu succes !");
}

private void materialRaisedButton9_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Delete from Cont where IDCont
='" + ContID.Text + "'", con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Campul a fost sters cu succes !");

30
private void materialRaisedButton6_Click(object sender, EventArgs e)
{
con.Open();
SqlCommand cmd = new SqlCommand("Update Adrese set Adr_personala
= '" + PersonalAdress.Text + "',Tara = '" + Tara.Text + "',Den_localitate='"
+ DenLoc.Text + "',Den_strada='" + DenStr.Text + "',Nr_localit='" +
NrLoc.Text + "',Nr_str='" + NrStr.Text + "',Tip_localit='" + TipLoc.Text + "'
where IDAdresa like '" + AdresaID + "'", con);
cmd.ExecuteNonQuery();
con.Close();
dataGridView2.Refresh();
MessageBox.Show("Modificare reusita!");
}

private void materialRaisedButton10_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Update Cont set IDCont =
'"+ContID.Text+"'
,IDAdresa='"+AdresaID2.Text+"',IDClient='"+ClientID2.Text+"',Categorie_cont='
"+CategorieCont.Text+"',Den_cont='"+DenCont.Text+"',Tip_cont='"+TipCont.Text+
"',Statut_cont='"+StatutCont.Text+"',DataIncContract='"+DataIncContract.Text+
"',DataExpContract='"+DataExpContract.Text+"' where IDCont like
'"+ContID.Text+"'", con);
cmd.ExecuteNonQuery();
con.Close();
dataGridView3.Refresh();
MessageBox.Show("Modificare reusita!");
}

private void materialRaisedButton7_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Adrese
(IDAdresa,Adr_personala,Tara,Den_localitate,Den_strada,Nr_localit,Nr_str,Tip_
localit) VALUES
(@IDAdress,@PersonalAdress,@Tara,@DenLocal,@DenStr,@NumarLoc,@NumarStr,@TipLo
cal)", con);

cmd.Parameters.AddWithValue("@IDAdress", AdresaID.Text);
cmd.Parameters.AddWithValue("@PersonalAdress",
PersonalAdress.Text);
cmd.Parameters.AddWithValue("@Tara", Tara.Text);
cmd.Parameters.AddWithValue("@DenLocal", DenLoc.Text);
cmd.Parameters.AddWithValue("@DenStr", DenStr.Text);
cmd.Parameters.AddWithValue("@NumarLoc", NrLoc.Text);
cmd.Parameters.AddWithValue("@NumarStr", NrStr.Text);
cmd.Parameters.AddWithValue("@TipLocal", TipLoc.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Inserare reusita!");
con.Close();
}

private void materialRaisedButton11_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Cont
(IDCont,IDClient,IDAdresa,Categorie_cont,Den_cont,Tip_cont,Statut_cont,DataIn
cContract,DataExpContract)
VALUES(@IDCont,@IDC,@IDA,@Categ,@Dencont,@Tip,@Statut,@Inc,@Exp)",con);
cmd.Parameters.AddWithValue("@IDCont",ContID.Text);
cmd.Parameters.AddWithValue("@IDC",ClientID2.Text);
cmd.Parameters.AddWithValue("@IDA",AdresaID2.Text);
cmd.Parameters.AddWithValue("@Categ",CategorieCont.Text);

31
cmd.Parameters.AddWithValue("@Dencont",DenCont.Text);
cmd.Parameters.AddWithValue("@Tip",TipCont.Text);
cmd.Parameters.AddWithValue("@Statut",StatutCont.Text);
cmd.Parameters.AddWithValue("@Inc",DataIncContract.Text);
cmd.Parameters.AddWithValue("@Exp",DataExpContract.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Inserare reusita!");
con.Close();
}

private void materialRaisedButton1_Click_1(object sender, EventArgs


e)
{

Form2 f = new Form2();


f.Show();
f.CenterToScreen() ;
this.Close();

private void Loc_Click(object sender, EventArgs e)


{

private void Data_Click(object sender, EventArgs e)


{

private void materialRaisedButton8_Click_1(object sender, EventArgs


e)
{
Form2 f = new Form2();
f.Show();
f.CenterToScreen();
this.Close();

private void materialRaisedButton12_Click(object sender, EventArgs e)


{
Form2 f = new Form2();
f.Show();
f.CenterToScreen();
this.Close();
}

private void materialRaisedButton16_Click(object sender, EventArgs e)


{
Form2 f = new Form2();
f.Show();
f.CenterToScreen();
this.Close();
}

private void materialRaisedButton14_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Update Users set Prenume = '" +
PrenumeUser.Text + "',Email = '" + EmailUser.Text + "',Tel_personal='" +

32
TelUser.Text + "',NumeAdmin='" + NumeAdmin.Text + "',Parola='" + Pass.Text+
"' where Nume ='"+NumeUser.Text+"'",con);
cmd.ExecuteNonQuery();
con.Close();
dataGridView4.Refresh();
MessageBox.Show("Modificare reusita!");
}

private void materialRaisedButton13_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("Delete from Users where Nume ='"
+ NumeUser.Text + "'", con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Campul a fost sters cu succes !");
}

private void materialRaisedButton15_Click(object sender, EventArgs e)


{
con.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Users
(Nume,Prenume,Email,Tel_personal,NumeAdmin,Parola)VALUES(@Nm,@Pren,@Email,@Te
l,@AdminN,@Pass)",con);
cmd.Parameters.AddWithValue("@Nm",NumeUser.Text);
cmd.Parameters.AddWithValue("@Pren",PrenumeUser.Text);
cmd.Parameters.AddWithValue("@Email",EmailUser.Text);
cmd.Parameters.AddWithValue("@Tel",TelUser.Text);
cmd.Parameters.AddWithValue("@AdminN",NumeAdmin.Text);
cmd.Parameters.AddWithValue("@Pass",Pass.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Inserare reusita!");
con.Close();

}
}
}

33
34
35

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