CENTRUL UNIVERSITAR NORD DIN BAIA MARE FACULTATEA DE ȘTIINȚE SPECIALIZAREA INFORMATICĂ ECONOMICĂ LUCRARE DE LICEN ȚĂ APLICAȚIE INFORMATICĂ PRIVIND… [619627]

UNIVERSITATEA TEHNIC Ă DIN CLUJ NAPOCA
CENTRUL UNIVERSITAR NORD DIN BAIA MARE
FACULTATEA DE ȘTIINȚE
SPECIALIZAREA INFORMATICĂ ECONOMICĂ

LUCRARE DE LICEN ȚĂ
APLICAȚIE INFORMATICĂ PRIVIND
APROVIZIO NAREA ÎN CADRUL
COMPANIEI S.C. MARAVET S.A.

COORDONATOR ȘTIINȚIFIC :Prof. Lect. Univ. D r. VASILE LUP ȘE

ABSOLVENT: [anonimizat]

2018

CUPRINS
1.1 S.C. MARAVET S.A. ………………………….. ………………………….. ………………………….. ….. 1
1.1.1. STOP & SHOP LA MARAVET ………………………….. ………………………….. …………. 2
1.2. INTRODUCERE ÎN MANAGEMENTUL APROVIZIONĂRII ………………………….. … 3
1.2.1. DEFINIREA ȘI ELEMENTELE APROVIZIONĂRII ………………………….. ……….. 3
1.2.2. SARCINILE MANAGEMENTULUI APROVIZIONĂRII ………………………….. ….. 4
1.2.3. FORMELE DE APROVIZIONARE ………………………….. ………………………….. ……. 5
2. OBIECTIVELE ȘI NECESITATEA APLICAȚIEI ………………………….. ………………………….. . 8
3. LIMBAJE DE PROGRAMARE ȘI TEHNOLOGII FOLOSITE ………………………….. ……….. 9
3.1 S QL SERVER MANAGEMENT STUDIO ………………………….. ………………………….. …… 9
3.1.1. INSTRUMENTE SSMS ………………………….. ………………………….. ………………………. 9
3.1.2. COMPONENTE SSMS ………………………….. ………………………….. ………………………. 9
3.1.3. VERSIUNI SSMS ȘI ACTUALIZĂRIi ………………………….. ………………………….. .. 9
3.1.4. SISTEME DE OPERARE SSMS ACCEPTATE ………………………….. …………….. 10
3.1.5. CREAREA BAZELOR DE DATE SQL SERVER ………………………….. …………… 10
3.1.6. TIPURI DE DATE ………………………….. ………………………….. ………………………….. …. 10
3.1.7.CREAREA TABELELOR ………………………….. ………………………….. …………………… 13
3.1.8. LINQ TO SQL ………………………….. ………………………….. ………………………….. ………. 16
3.2. .NET FRAMEWORK ………………………….. ………………………….. ………………………….. …… 16
3.2.1. CUM FUNCȚIONEAZĂ .NET ÎN SISTEMUL MEU? ………………………….. ……… 17
3.3. VISUAL STUDIO IDE ………………………….. ………………………….. ………………………….. …. 18
3.3.1. ARHITECTURA ………………………….. ………………………….. ………………………….. ……. 19
3.4. LIMBAJUL DE PROGRAMARE C# ………………………….. ………………………….. …………. 21
4. ARHITECTURA APLICAȚIEI ………………………….. ………………………….. …………………………. 23
4.1. REALIZAREA BAZEI DE DATE ………………………….. ………………………….. ………………. 23
4.2. REALIZAREA APLICAȚIEI ÎN CADRUL VISUAL STUDIO 2017 ……………………… 25
5. CONCLUZII ………………………….. ………………………….. ………………………….. ……………………….. 41
6. REFERINȚE BIBLIOGRAFICE ………………………….. ………………………….. ………………………. 42
7. ANEXE ………………………….. ………………………….. ………………………….. ………………………….. ….. 43 INTRODUCERE ……………………………………………………………………………………………………………
1. STUDIU DE CAZ ……………………………………………………………………………………………………… 1

7.1. ANEXA 1 ………………………….. ………………………….. ………………………….. …………………….. 43
7.2. ANEXA 2 ………………………….. ………………………….. ………………………….. …………………….. 44
7.3. ANEXA 3 ………………………….. ………………………….. ………………………….. …………………….. 47
7.4. ANEXA 4 ………………………….. ………………………….. ………………………….. …………………….. 48
7.5. ANEXA 5 ………………………….. ………………………….. ………………………….. …………………….. 49

INTRODUCERE

În ziua de azi, tehnologia face ca toate lucrurile care până la un moment dat păreau greu de
accesat într -o întreprindere oarecare, s ă fie posibile “la un click distan ță “, datorită evoluției
programelor informatice, care cuprind o varietate tot mai mare de date, un flux tot mai complex
de informații și un mod tot ma i ușor de utilizare, astfel încât să poată fi utilizate în orice
organizație, întreprindere, primărie, etc.
Cu toate acestea, fără o bază de date bine concepută de la care să pornească construirea unei
aplicații informatice, este foarte greu ca aceasta s ă se ridice la nivelul cererilor de pe piață din
zilele noastre.
Procesul de administrare și implicit de aprovizionare a unei companii, indiferent de obiectul său
de activitate este unul foarte complex. Pentru a putea supraviețui acestor timpuri, orice
întreprindere are nevoie de informații, sau mai exact, programe informatice. În lipsa lor,
procesul prin care se conduce întreprinderea ar fi unul greu, anevoios si plin de dificultăți. De
aceste informații beneficiază nu doar întreprinderea (ca factor intern ), ci și furnizorii sau
potențialii clienți. Din acest motiv, o aprovizionare corespunzătoare din care poate rezulta profit,
depinde nu doar de produsele care intră în stocuri, ci și de sistemul instrumentelor utilizate,
respectiv a urmăririi pe piață a ce rerilor clienților și a aproviziona întocmai cerințelor lor, dar
totodată depinde și de modul de promovare al produselor.
Pentru a particulariza procesul de aprovizionare apelând la un caz real și concret, vă invit să
studia ți în continuare următoarele pa gini ale lucrării mele de licență.
În prima parte a lucrării, voi reda câteva informații despre compania S.C. MARAVET S.A , pe
care am ales -o ca și exemplu în realizarea aplicației mele. Scopul alegerii acestei teme a fost
faptul că această companie este totodată și locul meu de muncă de aproximativ un an, ceea ce
face ca tema să fie mai ușor de abordat.
În a doua parte a lu crării, voi face o scurtă prezentare, care va cuprinde obiectivele și scopul
realizării aplicației mele, urmând ca în partea a treia să regăsiți noțiunile de bază ale limbajelor
folosite în cadrul realizării aplicației, iar în capitolul următor structura a plicației, modul de
realizare al ei și interfața pregătită pentru a fi folosită de orice tip de utilizator, care dorește să
obțină anumite rapoarte pe baza datelor existente .
La final, lucrarea va cuprinde concluzii, propuneri, dar și idei de îmbunătățire și dezvoltare ale
aplicației.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

1
1. STUDIU DE CAZ
1.1 S.C. MARAVET S.A.

MARAVET S.A. , cu sediul și depozite în Baia Mare, str. Maravet nr. 1, are în domeniul de
activitate importul și distribuț ia medicament elor de uz veterinar, a hranei ș i a altor articole pentru
anim alele de companie, a furajelor ș i a aditivilor furajeri pentru fermele d e creș tere a animalelo r,
a produselor necesare asigurării igienei și biosecurității în unitațile pentru creșterea animalelor și
în industria alimentară .
MARAVET S. A. are o istorie de 20 de ani, începându -și activitatea în 1998, câ nd s-au facut
demersurile pentru înregistrarea î n Romania a primelor medicamente de uz veterinar din
portofoliu. Astfel, am ajuns sa deț inem exclus ivitate pentru comercializarea în Romania a peste
800 de produse de uz veterinar.
Fig.1. Profitul incepand cu anul 2005

Partenerii noștri sunt la nivelul întregii țări, respectiv din străină tate. P rodusele noastre ajung la
clienți prin intermediul partenerilor noștri logistici î n 24-48 de ore de la lansarea comenzilor.
Planul societatii este reprezentat de dezvoltarea continu ă a sortimentației cu produse inovative de
înaltă calitate și siguranță .
Știm că partenerii nostri au nev oie de 3 lucruri:
-produse de calitate,

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

2
-prețuri competitive,
-timp liber,
iar pentru acestea am dezvoltat pagina webshop www.maravet.com , 24/7, unde vă prezentă m
produsele veterina re de calitate din Romania, facem t ot posibilul pentru a oferi preț uri foarte
avantajoase, iar partenerii pot econ omisi timp pentru alte activităț i.
Ne-am propus să demonstrăm continua preocupare a societății pentru performanță , ca expresie a
misiunii pe care ne -am asumat -o și a căii pe care o urmăm pentru a o îndeplini. Considerăm că,
alături de cr eșterile constante în termeni de cifră de afaceri, certificarea si stemului de
management al calității ISO 9001:2001 vine să susțină nivelul ridicat de î ncredere de care
compania se bucură în râ ndul partenerilor.
Dorim s ă menționă m că toate realizarile soci etății se datorează î n cea mai mare parte colegilor
din echipa MARAVET S.A., oameni care s-au dedicat cu profesionalism și pasiune menținerii
acestei societăți în topul furnizorilor de produse de uz veterinar din țară .

1.1.1. STOP & SHOP LA MARAVET

Conceptul “Stop & Shop la Maravet” const ă în simplitatea prin care dumneavoastră vă puteți
aproviziona în cel mai scurt timp și în condiții financiare foarte avantajoase cu toate produsele de
top din țară. Dată fiind gama extrem de diversificată și prețurile avantajoase, dvs. vă puteți “opri”
să vă aprovizionați de la un singur furnizor, economisind timp prețios și bani. O să observați
rapid cum economiile dumneavoastră se a dună.
Căutarea caracteristicilor și listele personalizate de produse vă ajută să identificați produsele
necesare printre miile de produse disponibile, pe baza producătorului, denumirii produselor,
speciilor la care sunt indicate, modului de administrare, s ubstanței active, indicațiilor și respectiv
sortării în ordine alfabetică, în funcție de disponibilitatea în stoc, în promoție, preț crescător,
descrescător, etc. Un alt avantaj este că vă puteți urmări istoricul comenzilor și astfel vă ușurați
activitatea . Puteți posta sau să ne transmiteți prețul pe care ați fi dispuși să îl plătiți urmând să fiți
informați în mod automat dacă prețurile produselor respective vor scădea sub nivelul pe care l -ați
indicat.
În ceea ce privește livrarea, produsele sunt livrat e și facturate de la o singură firmă către
dumneavoastră, astfel ușurând activitatea contabilitații dumneavoastră și putând reduce costurile
pe care le aveți cu acel departament. De asemenea, aveți posibilitatea de a verifica integritatea
coletului și a pr oduselor, după preluare, în prezența curierului. În cazul în care observați
deteriorări în exterior sau la produse, vă rugăm să refuzați coletul sau acele produse deteriorate.
Putem accepta reclamații privind conținutul coletului doar în cazul în care cons tatarea unor
lipsuri sau a unor avarii se înregistrează în documentul legat de livrare, în prezența curierului.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

3
Pe lângă prețurile avantajoase, MARAVET garantează că nu transferă asupra dumneavoastră
cheltuielile suplimentare care ar putea să apară ca urma re a unor eventuale creșteri ale prețurilor
în perioada cuprinsă între comandarea produsului și emiterea facturii. Dacă prețul produsului
scade în momentul emiterii facturii dumneavoastră, veți putea să vă bucurați în totalitate de
aceste prețuri reduse, obținând produsele la un preț mai mic. Dacă în momentul emiterii facturii
prețul produsului este mai mare decât pre țul la care a fost inregistrată comanda dumneavoastră,
factura va fi emisă la prețul cu care a fost înregistrată comanda.
Serviciul de garanție a prețurilor mici se adresează tuturor partenerilor clienți practicieni. De
menționat că dumneavoastră nu aveți nimic de făcut, deoarece acest serviciu este setat în mod
automat în sistemul nostru de facturare.

1.2. INTRODUCERE ÎN MANAGEMENTUL APROVIZIONĂRII

1.2.1. DEFINIREA ȘI ELEMENTELE APROVIZIONĂRII

Activitatea de aprovizionare a unităților economice este una din princip alele în cadrul ei
cu care se începe procesul de producție și asupra căreia se concentrează atenția întreprinderii și
care necesită alocarea unor resurse financiare considerabile.
Managementul aprovizionării reprezintă activitatea prin care se asigură elem entele
materiale și tehnice necesare producției, în volumul și structura care să permită realizarea
obiectivelor generale ale întreprinderii, în condițiile unor costuri minime și ale unui profit cât
mai mare
Etapele procesului de aprovizionare (lanțul apro vizionării) sunt următoarele:
1. Analiza ofertelor.
2. Alegerea furnizorilor.
3. Acceptarea ofertelor.
4. Negocierile.
5. Încheierea contractelor
6. Procurare (achiziționare).
7. Organizarea transportului.
8. Recepția și stocarea mărfii.
9. Testarea mărfii.
10. Lansarea în producție ( alimentarea).
Schematic lanțul de aprovizionare este prezentat în figura 2.

Furnizori
Oferte

Unitatea
economică

Analiza
ofertelor

Alegerea
furnizorilor

Acceptarea
ofertelor
Negocieri
Încheierea
contractelor

Organizarea
transportului
Recepția și
stocarea mărfii

Testarea mărfii

Lansarea în
producție

Achiziționare
(procurare)

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

4

Figura 2 .Lanțul de aprovizionare a întreprinderii
La rândul său, Aprovizionarea reprezintă procesul de asigurare a întreprinderii cu
resurse necesare la un preț optim, în volumul necesar și calitate corespunzătoare, la momentul
potrivit și cu servicii convenabile în scopul desfășurării optime a procesului de producție.
În practica economică se întâlnesc termeni apropiați după conținut cu aprovizionarea,
cum ar fi, achiziționarea (cumpărarea) sau alimentarea.
Achiziționarea , trebuie de menționat, că are un conținut mai restrâns, reprezentând doar
o etapă a procesului de aprovizionare și se caracterizează prin identificarea nevoilor, stabilirea
mărimii acestora și a momentelor de satisfacere și este urmată de negocierea condițiilor de
livrare.
La rândul său alimentarea reprezintă doar faza finală a procesului de aprovizionare, care
se desfășoară în cadrul întreprinderii și include deplasarea resurselor m ateriale din depozite la
subdiviziunile de prelucrare sau consum.

1.2.2. SARCINILE MANAGEMENTULUI APROVIZIONĂRII

Sarcinile managementului aprovizionării pot fi împărțite în următoarele grupe:
1. În domeniul planificării aprovizionării , care includ activitățile:
 Determinarea și stabilirea volumului și structurii resurselor necesare întreprinderii pentru
desfășurarea normală a procesului de producție. Această sarcină se poate îndeplini prin
studierea și culegerea informațiilor cu privire la necesitățile de consum a unității economice
în cantitățile și calitatea corespunzătoare.
 Fundamentarea programelor de aprovizionare a întreprinderii pe baza programelor de
producție, normelor de consum, structura și nivelul stocurilor existente în cadrul acesteia.
 Dimensionarea consumurilor specifice de resurse în baza documentației tehnico –
economice. Îndeplinind această sarcină întreprinderea își asigură un consum rațional de
resurse de toate tipurile și deci cu costuri de producție mai reduse.
 Elaborarea balanțelor de materiale și energetice în baza programelor de fabricație.
 Evaluarea stocurilor existenta la întreprindere și determinarea loturilor de resurse necesare
de comandat.
2. În domeniul organizării și conlucrării cu furnizorii , includ activitățile
 Identificarea surselor reale și potențiale de furnizare a materiilor prime, resurselor
materiale, energetice, combustibil, echipament tehnic, semifabricate, etc. necesare
procesului de producție. Aceasta se poate obține prin emiterea de cereri de ofertă,
cercetarea informațiilo r din cataloage comerciale, de la bursele de mărfuri, publicitate și
alte surse de informare.
 Alegerea materiilor prime, semifabricatelor, resurselor materiale și echipamentelor tehnice
necesare procesului de producție care au cele mai bune caracteristici și la un preț
convenabil.
 Alegerea furnizorilor care oferă cele mai avantajoase condiții de livrare, calitate înaltă a
resurselor de toate tipurile, transportate, preț, canale de distribuție, ș. a.
 Elaborarea strategiilor de procurare a resurselor și echip amentelor necesare întreprinderii.
Aceasta se realizează prin studiul furnizorilor de pe piața internă și externă.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

5
 Testarea credibilității furnizorilor selectați în scopul evidențierii garanțiilor de care se
bucură, seriozității în afaceri, responsabilităț ii în respectarea obligațiilor asumate și a
solvabilității.
 Negocierea și concretizarea relațiilor cu furnizorii în ceea ce privește condițiile de livrare,
relațiile de vânzarea -cumpărare, încheierea contractelor comerciale.
 Urmărirea și controlul îndeplinirii contractelor de aprovizionare pe tipuri de resurse și pe
furnizori.
 Analiza periodică a stadiului asigurării bazei materiale și tehnice, a realizării programelor
operative și a planurilor de aprovizionare, a contractelor economice pe total și distinct pe
furnizorii principali la resursele vitale, de importanță strategică, etc.
3. În domeniul livrării, depozitării și gestiunii stocurilor materiale:
 Asigurarea condițiilor normale de recepție a materiilor prime, materialelor,
semifabricatelor, pie selor de schimb, echipamentului tehnic, combustibil, etc. Pentru
aceasta întreprinderea trebuie să dispună de spații speciale de recepție; să formeze comisii
de specialiști pentru recepția resurselor și să asigure controlul calității a acestor mărfuri.
 Organizarea eficientă a depozitării resurselor recepționate. Această sarcină se realizează
prin efectuarea evidenței intrărilor de resurse, asigurarea cu spații pentru depozite,
efectuarea operațiilor de dezasamblare (când este necesar), aranjarea resurselor în depozite
sau magazii, etc.
 Organizarea circulației raționale a resurselor materiale în cadrul unității economice (secții,
sectoare, ateliere) în baza programului de producție planificat.
4. Consumul de resurse:
 Asigurarea controlului evoluției stocurilo r efective din cadrul întreprinderii. Această
sarcină se poate realiza prin evitarea suprastocărilor sau lipsa resurselor în stocuri.
 Supravegherea folosirii materiilor prime, materialelor, pieselor, subansamblelor, utilajului,
energiei, combustibilului co nform destinațiilor de consum. Obiectivul în acest caz este de a
preveni supraconsumurile sau risipa de resurse, nerespectarea procesului tehnologic sau
folosirea irațională a resurselor disponibile.
5. Activități auxiliare:
 Implementarea unui sistem infor matic și crearea bazelor de date pentru gestionarea
informației referitor la evidența resurselor materiale din cadrul întreprinderii.
 Selectarea și angajarea specialiștilor calificați în domeniul aprovizionării; perfecționarea
sau recalificarea lor conform cerințelor și după anumite programe de instruire.
 Conlucrarea cu organizațiile naționale și internaționale în domeniul aprovizionării. În
Republica Moldova astfel de organizație este Asociația Moldovenească de Aprovizionare
(A.M.A.).

1.2.3. FORMELE DE APROVIZIONARE
În activitatea practică a agenților economici se întâlnesc două forme de aprovizionare: directă și
indirectă.
Aprovizionarea directă de la furnizor (producător) presupune că în mod direct se negociază
și se formalizează relațiile de parteneri at, se efectuează plățile, respectiv are loc transferul
resurselor materiale de la producător la consumator (Figura 3)

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

6

Figura 3. Aprovizionarea direct de la furnizor
Avantajele pe care le oferă această formă de aprovizionare sunt:
 cunoașterea de către furnizor a nevoilor întreprinderii (consumator), și respectiv a
posibilităților de producere a furnizorului (producător);
 posibilitatea unei adaptări mai bune a ofertei la cerințele consumatorului, mai ales în ceea ce
privește caracteristicile produselor;
 posibilitatea de a valorifica anumite oportunități, oferite de către furnizor în cazul când
consumatorul îndeplinește cerințele impuse de către acesta;
 posibilit atea îmbunătățirii relațiilor furnizor -consumator prin contractele directe care au loc;
 posibilitatea evitării unor riscuri și sporirea încrederii în furnizori din partea consumatorilor.
Forma de aprovizionare indirectă presupune conlucrarea cu intermediar ii de pe piața
resurselor materiale necesare consumatorului. Având în vedere, că prin cantitățile mari
comandate de către intermediari se pot obține anumite oportunități din partea producătorilor, de
multe ori se obțin resursele la un cost de aprovizionare mai redus decât în cazul aprovizionării
directe. Astfel pot fi obținute reduceri (rabaturi) de preț, reduceri de plată (escompt), reducerea
cheltuielilor de transport -asigurarea pe unitate de produs, etc.
Aprovizionarea indirectă în funcție de implicarea intermediarului poate să fie prin:
 tranzit organizat , când intermediarul participă numai la concretizarea relațiilor de
aprovizionare în formule juridice: contracte, convenții etc., celelalte activități (de plată și
transfer a resurselor), realizându -se direct producător consumator;
 tranzit achitat , care presupune ca și plata și facturilor să se facă prin intermediar;
 depozitele intermediarului , care practic înseamnă aprovizionarea prin angrosist și
presupune ca pentru consumator intermediarul să devină fur nizor. În acest caz toate
activitățile: de concretizare juridică, de transfer a resurselor și de plată se fac prin
intermediar, de cele mai multe ori relația producător -consumator, din punct de vedere
formal, neexistând;
 garantată , atunci când intermediaru l preia integral sau parțial procesul de aprovizionare a
structurii de resurse necesare unuia sau mai multor consumatori din raza proprie de
acțiune, pentru o anumită perioadă de gestiune.
În mod general schema procesului de aprovizionare indirectă este pr ezentată în figura 4.

Furnizor
(producător )

Unitatea
economică
(consumator)
Contractare
Livrare
Plată

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

7
Figura 4. Aprovizionarea indirectă

Principalele avantaje pe care le oferă forma de aprovizionare indirectă sunt:
 creșterea gradului de disponibilitate a resurselor, prin posibilitatea de amplasare a
intermediarului în apropierea consumatorului;
 preluarea efectuării unor operații de pregătire a resurselor în vederea utilizării de către
intermediar și care în general necesită tehnologii mai puțin performante, mai ales, în co ndițiile
unor serii de fabricație reduse, și pe această bază obținerea unor costuri la nivelul produsului finit
– la consumator – mai reduse;
 minimizarea stocurilor de producție prin creșterea gradului de siguranță a
aprovizionărilor, prin reducerea timpur ilor economici de stocare sau prin preluarea unor funcții
ale stocului de către intermediar);
 prin nivelul cantităților cumpărate de la producător de către intermediar se asigură
pentru aceasta anumite oportunități: creșterea loturilor de fabricație și, de ci, reducerea costurilor,
reducerea riscului desfacerii producției, posibilitatea folosirii tehnologiilor avansate prin care să
se asigure o calitate ridicată și randamente superioare etc., și, deci, producătorul va fi dispus să
ofere, la rândul lui, anumi te avantaje cum ar fi reducerile de preț, priorități în aprovizionare, etc.
– avantaje care pot fi transferate și consumatorului chiar în condițiile perceperii comisionului de
către intermediar.
Identificarea oportunităților fiecărei forme de aprovizionare , directă sau indirectă, trebuie
să se bazeze și pe conținutul activităților care se desfășoară și care vor fi diferite de la o formă de
aprovizionare la alte, sau chiar în cazul aceleași forme, dacă se au în vedere variantele de
organizare.
Stabilirea for mei de organizare a aprovizionării este specifică pentru fiecare
întreprindere, și poate fi făcută în funcție de:
 modul de concretizare a relațiilor din punct de vedere juridic: contract, convenție,
comandă etc.;
 modul de transport și de transfer a resurselor de la producător la consumator;
 modul de achitare a contravalorii resurselor.

Producător
Producător
Intermediar
Consumator

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

8

2. OBIECTIVELE ȘI NECESITATEA APLICAȚIEI

Oricine cunoaște semnificația cuvantului IT. Este un întreg univers, foarte dinamic, într -o
dezv oltare permanentă. Este regula de bază să ne punem permanent la curent cu tot ce e nou în
domeniu. Așa rămânem performanți, capabili să gestionăm rapid informații, cunoștințe și să fim
eficienți în costuri și timp. În acest sens, voi realiza o aplicație câ t mai prietenoasă și cu
funcționalitățile necesare descoperirii mai în amănunt, a procesului de aprovizionare din cadrul
companiei MARAVET SA, acesta fiind totodată și obiectivul principal al aplicației mele. Având
în spate o bază de date bine concepută și structurată pe anumite rapoarte, necesitatea aplicației
constă în faptul ca la orice moment poți să afli informații utile din cadrul procesului de
aprovizionare, informații precum:
– Afișarea adăugarea și ștergerea produselor ;
– Afișarea adăugarea și șterger ea furnizorilor ;
– Afișarea adăugarea și ștergerea stocurilor ;
– Afișarea adăugarea și ștergerea intrărilor ;
– Afișarea adăugarea și ștergerea comenzilor ;
– Vizualizarea furnizorilor activi ;
– Vizualizarea comenzilor peste 300 RON, respectiv sub 100 RON ;
– Vizualizare a furnizorilor din afara țării ;
– Vizualizarea comenzilor în funcție de cantitatea produselor comandate ;
Toate aceste lucruri, odată realizate, duc la o înțelegere mai amănunțită a modului de desfășurare
al procesului de aprovizionare.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

9

3. LIMBAJE DE PROGRAMARE ȘI TEHNOLOGII FOLOSITE

3.1 SQL S ERVER MANAGEMENT STUDIO

Microsoft SQL Server Management Studio (SSMS) este un mediu integrat pentru a gestiona o
infrastructură SQL Server. Acesta oferă o interfață de utilizator și un grup de instrumente cu
editoare de script bogate care interacționează cu SQL Server.
3.1.1. INSTRUMENTE SSMS
SSMS oferă instrumente pentru configurarea, gestionarea și administrarea instanțelor Microsoft
SQL Server și reunește o gamă largă de instrumente de proiectare grafică ș i vizuală și editoare de
script -uri bogate pentru a simplifica lucrul cu SQL Server. Funcțiile SSMS combinate provin de
la Enterprise Manager, Analizor de interogări și Manager de analiză, împreună cu funcțiile
incluse în versiunile anterioare ale SQL Serv er. Acesta suportă majoritatea sarcinilor
administrative ale SQL Server și menține un singur mediu integrat pentru administrarea și
autorizarea SQL Server Database Engine.
3.1.2. COMPONENTE SSMS
Caracteristicile Microsoft SQL Server Management Studio inclu d Object Explorer, care poate
vizualiza și gestiona toate obiectele dintr -o instanță SQL Server; Template Explorer, care
construiește și gestionează fișiere de text care pot fi refolosite pentru a accelera interogarea și
dezvoltarea scenariilor; Solution E xplorer, care construiește proiectele utilizate pentru
gestionarea elementelor de administrare, cum ar fi interogări și scripturi. (Microsoft
intenționează să elimine soluția Explorer în versiuni dincolo de Microsoft SQL Server 2016).
Componentele SSMS per sonalizează comenzile rapide de la tastatură și vizualizează paginile de
proprietăți; conectați la instanțele serviciului de baze de date și servicii de analiză; instrumente
de design vizual; și să construiască interactiv și să depaneze interogări și scrip turi.

3.1.3. VERSIUNI SSMS ȘI ACTUALIZĂRI i
Prima versiune SSMS a fost lansată alături de SQL Server 2005 și a continuat să facă parte din
managementul Microsoft SQL Server 2008, SQL Server 2012 și SQL Server 2016. De
asemenea, oferă suport pentru Azure SQL Database și Azure SQL Data Warehouse. Este, de
asemenea, posibil să administrați baze de date Azure SQL și servere utilizând SSMS. Pe Azure,
SSMS poate crea și gestiona conectări și monitoriza bazele de date SQL prin vizualizări
dinamice de gestionare. În 2016, Microsoft a trecut de la versiunile SSMS lansate lunar –

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

10
versiunea august 2016 – la versiunile SSMS cu marcă numerică – versiunea 16.3. Cea mai recentă
versiune a SSMS va determina un utilizator atunci când există o nouă versiune de descărcat.

3.1.4. SISTEME DE OPERARE SSMS ACCEPTATE
SQL Server Management Studio suportă următoarele sisteme de operare:
Windows 10
Windows 8
Windows 8.1
Windows 7 (SP1)
Windows Server 2012
Windows Server 2008 R2
Începând cu noiembrie 2016, în timp ce SSMS rulează numai pe Windows, acesta poate fi de
asemenea utilizat pentru a se conecta de la distanță la instanțele serverului Linux. După
conectare, un utilizator trebuie să ruleze o interogare Transact -SQL pentru a verifica
comunicarea cu baza de date.

3.1.5. CREAR EA BAZELOR DE DATE SQL SERVER
O baz ă de date SQL Server este compusă din trei tipuri de fiș iere: un fiș ier cu extensia .mdf zero
sau mai multe fiș iere cu extensia .ndf și unul cu extensia .ldf
În fisierul cu extensia .mdf sunt stocate obiectele bazei de date precum ta belele, indexii, vederile
etc. împreună cu definițiile lor, fiș ierele cu exten sia .ndf sunt fișiere secundare ce conț in numai
date, iar fișierul cu extensia .ldf conține jurnalul de tranzacții. Orice bază de date a re asociat un
jurnal de tran zacții. Actualizarea unei înregistră ri a baz ei de date presupune memorarea î n
jurnalul de tr anzactii a conținutului înregistrării dinainte și după actualizare. Jurnalul de
tranzacți i este folosit pe ntru restaurarea bazei de date în situatia î n care apare o eroare ce necesită
anularea sau reluarea unor operații î nregistrate.
3.1.6. TIPURI DE DATE
Tipuri de date pentru numere î ntregi
bit – numere întregi care pot lua una din două valori: 0 sau 1 sau NULL.
tinyint – număr întreg fără semn pe 1 octet, valori posibile de la 0 la 255.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

11
smallint – număr întreg cu semn pe 2 octeț i, valori posibile de la 2^15 ( -32,768) până la 2^15 –
1 (32,767).
int sau integer – număr întreg cu semn pe 4 octeț i, valori admisibile de la
-2^31 (-2,147,483, 648) până la 2^31 – 1 (2,147,483,647).
Bigint – număr întreg cu semn pe 8 octeț i, valori admisibile de la -2^63 până 2^63 – 1.
Observ ații:
– SQL Server întoarce un mesaj de eroare dacă se încearcă inserarea unei valori care nu se
încadrează în domeniul de valori corespunză tor tipului de date.
-Tipul b it are o reprezentare optimizată, astfel dacă într -o tabelă există mai multe atribu te de tip
bit, acestea vor fi î mpachetate la nivel de octet: 1 octet – până la 8 atribute, 2 octeț i 9-16 atribute
etc.
Tipuri de date p entru numere zecimale cu virgulă fixă
Decimal[(p[,s])] – numere zecimale cu virgulă fixată, valori posibile î ntre -10^38 -1 si 10^38 -1.
numeric[(p[,s])] – echivalent cu tipul decimal.
p (precizia) – numă rul total de cifre care pot fi sto cate, inclusiv partea intreaga și partea
zecimală . Precizia poate lua valori de la 1 la 38. Valoarea implicit a a lui p este 18.
s (scale) – numarul de cifre zecimale. Poate lua valori de la 0 la p. Valoare implicita 0.
Numarul de octeti alocati tipului de cimal /numeric depinde de precizie dupa cum urmeaza:
Precizia Nr octe ti
1 – 9 5
10-19 9
20-28 13
29-38 17
Tipuri de date pentru unit ati monetare
money – numerice zecimal e cu 4 cifre după virgulă , poate lua valori in intervalul de la -2^63 (-
922,337,203,685,477.5808) până la 2^63 – 1 (+922,337,203,685,477.5807).
smallmoney – numere zecimal e cu 4 cifre după virgulă, ia valori î n intervalul de la

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

12
-214,748.3648 până la +214,748.3647.
Tipuri de date pe ntru numere zecimale cu virgulă mobil ă
real – Poate să rețină numere zecimale numere pozitive și negative în virgulă flotantă din
intervalul de la 3.4E -38 până la 3.4E + 38 cu o precizie de 7 cifre. Este repre zentat pe 4 octeț i.
float[(n)] – Dacă se specifică o valoare între 1 ș i 7 pentru n, tipul definit este similar cu tipul
real, iar dacă nu se specifică nicio v aloare pentru n sau se specifică o valoare între 8 ș i
15, numerele stocate se pot afla î n intervalul de la -1.79E -308 până 1a.79E + 308(pozitive ș i
negative).
Tipuri de date pentru date calendaristice ș i timp
datetime – Este reprezentat pe 8 octeti si pastreaza data si ora. Data poate fi o valoarea in
intervalul de la 1 ianuarie anul 1753 pana la 31 decembrie anul 9999. Timpul se defineste cu
exactitate de sutimi de secunde.
smalldatetime – Este reprezentat pe 4 octeti si pastreaza data si ora. Data poate lua o valoare din
intervalul de la 1 ianuarie anul 1900 pana la 6 iunie anul 2097. Timpul se past reaza cu o
acuratete de1 minut.
Tipuri de date pentru siruri de caractere
char [(n)] – siruri de caractere ASCII de lungime fixata de n caractere, daca n lipseste lungimea
este de 1 caracter. Parametrul n poate lua valori intre 1 si 8000. Sirul de caracte re se va completa
cu caractere spatiu daca marimea curenta a sirului este mai mica decat n.
varchar(n) – siruri de caractere ASCII de lungime variabila (maximum 8000 caractere), se
foloseste cand datele au lungimi ce variaza in plaje largi. Spatiul de stoc are folosit se adapteaza
la numarul curent de caractere al sirului.
text – siruri de caractere ASCII de lungime variabila, (lungimea maximala 2^31 -1 caractere,
2,147,483,647 caractere). Sirul de caractere este memorat in pagini de 8ko fiecare
nchar – siruri de caractere UNICODE de lungime fixata (maxium 4000 caractere)
nvarchar – siruri de caractere UNICODE de lungime variabila (maxium 4000 caractere)
Tipuri de date pentru siruri binare
binary – sir binar de lungime fixata (maximum 8,000 octeti). Se foloseste pentru stocarea unor
secvente de biti. Valorile de tip binar sunt reprezentate in sistem hexazecimal si se introduc
uzual tot in hexazecimal(precedate de 0x ).
varbinary – sir binar de lungime variabila (maximum 8,000 octeti).

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

13
image – sir bina r de lungime fixata (maximum 2^31 – 1 sau 2,147,483,647 octeti).
timestamp –O valoare de tip timestamp este o valoare speciala de tip binary(8). Tipul timestamp
garanteaza unicitatea valorilor coloanei asociate. O tabela poate avea o singura coloana de tip
timestamp. Valoarea coloanei de tip timestamp este modificata automat dupa ficare modificare a
tuplei. Ea ne arata ordinea operatiilor efectuate de SQL Server. Marcile de timp(timestamp) se
pot folosi pentru a impiedica doi utilizatori sa modifice acee asi tupla. Tipul timestamp nu
reprezinta data si ora. Valoarea timestamp ce va fi inscrisa ca marca la urmatoarea modificare
sau inserare de linie poate fi accesata prin intermediul variabilei globale @@DBTS.
uniqueidentifier –reprezinta un identificator u nic global(GUID) pe 16 octeti si asigura
unicitatea valorilor la nivelul bazei de date. Generarea in Transact SQL a unui nou
uniqueidentifier se face cu NEWID()
3.1.7. CREAREA TABELELOR
Comanda CREATE TABLE permite crearea unei noi tabele. Sintaxa sa este urmatoarea:
CREATE TABLE denumire_tabel
( denumire_coloan a1 tip_de_ data [ constrangere _la_nivel_de_coloan a]
[, denumire_coloan a2 tip_de_ data [ constrangere _la_nivel_de_coloan a] … ]
[, constrangere1 _la_nivel_de_rand]
[, constrangere2 _la_nivel_de_rand …]
)
O constrangere este un mecanism care ne asigura ca valorile unei coloane sau ale unei multimi
de coloane satisfac o conditie dat a. Daca nu se specifica un nume explicit pentru
constrangere atunci sistemul ii atribuie unul nume.
Constrangeri la nivel de coloan a
Sintaxa
[Constraint denumire_constrangere ] constr angere1 [constrangere2 …]
Constrangerea NULL
Specifica faptul ca sunt permise valori Null pentru coloana respectiva.
Constrangerea NULL este implicita.
Exemplu :

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

14
Telefon char(10) NULL
Constrangerea NOT NULL
Specifica faptul ca sunt interzise valorile Null pentru coloana respectiva
Exemplu :
Nume char(30) NOT NULL
Constrangerea DEFAULT
Specifica o valoare implicita care este atribuita cand nu se specifica o valoare explici ta pentru
coloana respectiva
Sintaxa:
DEFAULT expresie_constanta
Exemple :
Data SmallDateTime default getdate(),
CodJudet char(2) default 'AG',
Cantitate numeric(8,3) default 0
Constrangerea IDENTITY
Indica o coloana pentru care SQL Server genereaza in mod automat valori incremental, unice la
nivel de tabela
Exemplu
id_detaliu int identity(101,1)
id bigint identity
Primul parametru reprezinta valoarea atribuita primei tuple, iar al doilea parametru reprezinta
valoarea de incrementare. Parametrii pot l ipsi, ei au valoarea implicita 1.
Constrangerea PRIMARY KEY
Impune valori unice si nenule pentru coloana in cauza, coloana reprezinta cheia primara a tabelei
Exemplu:
CodFurnizor char(10) primary key

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

15
Constrangerea UNIQUE
Impune valori unice pentru coloana in cauza, coloana reprezinta o cheie candidat a tabelei
Exemple :
marca int unique
CNP char(13) constraint ix_cnp unique
Constrangerile PRIMARY KEY si UNIQUE genereaza implicit chei de indexare. Un index
poate fi de tip CLUSTERED, caz in care ordinea fizica a randurilor tabelei coincide cu ordinea
logica(tabela este sortata dupa cheia indexului clustered), sau NONCLUSTERED. Evident ca o
singura cheie poate fi de tip clustered. Optiunea implicita pentru PRIMARY KEY est
CLUSTERED, iar pentru UNIQUE este NONCL USTERED, dar pot fi schimbate ca in exemplul
urmator:
marca int primary key nonclustered,
CNP char(13)constraint ix_cnp unique clustered
Constrangerea FOREIGN KEY
Constrangerea Foreign key se foloseste uzual impreuna cu Primary key pentru a rezolva
proble ma integritatii referentiale.
Sintaxa:
[FOREIGN KEY] REFERENCES tabela_referita(coloana_referita)
[ON DELETE ]
[ON UPDATE ]
Coloana_referit a trebuie sa fie definita ca Primary key sau Unique.
ON DELETE CASCADE – mentine integritatea referentia la in cazul stergerii unui rand
din tabela_referita (care contine cheia primara sau unica), prin stergerea tuturor randurilor ce
contin cheii straine dependente.
Valoarea implicita este ON DELETE NO ACTION.
ON UPDATE CASCADE -mentine integritatea referentiala in cazul modificarii valorii coloanei
referite din tabela asociata (care contine cheia primara sau unica), prin propagarea modificarii
tuturor randurilor ce contin cheia straina dependenta.
Valoarea implicita este ON UPDAT E NO ACTION.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

16
Constrangerea CHECK
Defineste o restrictie de domeniu pecare trebuie sa o satisfaca datele din coloana
respectiva .
Sintaxa:
CHECK (expresie_logica)
Salariu int CHECK (Salariu >= 600 AND Salariu <= 8000)
Nota INT CHECK (Nota BETWEEN 1 AND 10)
DenumireZi char(10) check(DenumireZi in (‘luni’, ’marti’, ’miercuri’))
Observatie: Coloanele supuse unor reguli check pot primi valoarea null daca nu se impune
constringerea not null .
3.1.8. LINQ TO SQL

Ce este Linq to SQL?

LINQ to SQL este o interfață puternic tipizată către o bază de date relațională, aflată pe
serverul SQL. Aplicațiile sunt scrise în limbaje de programare de nivel înalt (POO) ce folosesc
modelul obiectual pentru a reprezenta entități din lumea reală (persoane, produse, comenzi etc.).
Dar datele trebuie salvate după modelul relațional. LINQ to SQL este o infrastructură pentru:
Maparea datelor organizate după modelul relațional ca și date organizate după modelul obiectual
(O/R Mapping); Gestionarea datelor rela ționale ca obiecte în limbajul de programare folosit.
Când se execută aplicația, nivelul LINQ to SQL transpune interogările LINQ în limbaj SQL și le
trimite bazei de date. Când baza de date returnează rezultatele, nivelul LINQ to SQL le transpune
datele re laționale în modelul obiectual cu care se poate lucra într -un limbaj de programare
orientată pe obiecte.

3.2. .NET FRAMEWORK

.NET Framework conține zeci de mii de bucăți de cod partajat. Acest cod partajat face viața
dezvoltatorilor mult mai ușoară, pentru că nu trebuie să reinventeze roata de fiecare dată când
aplicațiile lor trebuie să îndeplinească anumite funcții comune. În schimb, ei se pot concentra pe
codul care este unic pentru ap licațiile lor și interfața cu utilizatorul care leagă toate împreună.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

17
Folosind un cadru de cod partajat, de asemenea, ajută la furnizarea unor standarde între aplicații.
Alți dezvoltatori pot înțelege ce face un program mai ușor și utilizatorii aplicațiilo r pot conta pe
lucruri precum casete de dialog Open și Save As care lucrează la fel în diferite aplicații.

3.2.1. CUM FUNCȚIONEAZĂ .NET ÎN SISTEMUL MEU?

.NET Framework are o istorie lungă și a văzut o serie de versiuni de -a lungul anilor. De obicei,
cea mai nouă versiune de .NET disponibilă ar fi inclusă în lansarea fiecărei versiuni de
Windows. Versiunile au fost concepute pentru a fi compatibile înapoi (deci o aplicație scrisă
pentru versiunea 2 ar putea rula dacă versiunea 3 a fost instalată), dar ace asta nu a funcționat atât
de bine. Nu toate aplicațiile au funcționat cu versiunile mai noi. Pe sistemele care rulează
Windows XP și Vista, în special, ați vedea adesea mai multe versiuni de .NET instalate pe un
PC. În mod esențial, au existat trei moduri prin care s -ar instala o versiune specială a .NET
Framework: Versiunea dvs. de Windows ar putea fi inclusă în instalarea implicită. O aplicație
care necesită o versiune specială ar putea să o instaleze în timpul instalării proprii. Unele aplicații
vă vor t rimite chiar la un site separat de descărcare pentru a apuca și a instala o versiune specială
a .NET Framework. Din fericire, lucrurile sunt mai liniste în versiunile moderne de Windows.
Uneori, în timpul zilelor Windows Vista, s -au întâmplat două lucruri importante. În primul rând,
a fost lansat .NET Framework 3.5. Versiunea respectivă a fost reluată pentru a include
componente din versiunile 2 și 3. Aplicațiile care necesită versiuni anterioare ar funcționa acum
dacă ați instalat versiunea 3.5. În al doil ea rând, upgrade -urile la .NET Framework au început să
fie livrate prin Windows Update. Împreună, aceste două lucruri însemnau că dezvoltatorii ar
putea acum să se bazeze destul de mult pe utilizatorii care au instalat deja componentele
corespunzătoare și nu mai trebuiau să ceară utilizatorilor să realizeze instalații suplimentare.
Când Windows 8 a apărut, odată cu el a venit și versiunea 4 .NET FRAMEWORK. Versiunea 4
nu prezintă compatibilitate cu versiunile mai vechi. Este proiectat astfel încât să poată fi rulat
alături de versiunea 3.5 pe același PC. Aplicațiile scrise la versiunile 3.5 și mai mici vor necesita
instalarea versiunii 3.5, iar aplicațiile scrise la versiunea 4 sau mai mare vor avea nevoie de
versiunea 4 instalată. Vestea bună este că, în ca litate de utilizator, nu mai trebuie să vă faceți griji
cu privire la aceste instalați i. Windows -ul se ocupă de tot pentru tine.

Windows 8 și Windows 10 includ versiunile 3.5 și 4 (versiunea curentă fiind chiar 4.6.1).
Acestea sunt instalate pe o bază de timp necesară, astfel încât prima dată când instalați o aplicație
care are nevoie de una dintre aceste versiuni, Windows va adăuga automat. De fapt, puteți să le
adăugați la Windows înainte de timp, dacă doriți, accesând funcțiile opționale ale Windows.
Aveți opțiuni pentru adăugarea versiunii 3.5 și a versiunii 4.6 separat.

Componenta .NET Framework stă la baza tehnologiei .NET, este ultima interfață între aplicațiile
.NET și sistemul de operare și actualmente conține:

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

18
• Limbajele C#, VB.NET, C++ și J#. Pentru a fi integrate în platforma .NET toate aceste limbaje
respectă niște specificații OOP numite Common Type System (CTS). Ele au ca elemente de
bază: clase, interfețe, delegări, tipuri valoare și referință, iar ca mec anisme: moștenire,
polimorfism și tratarea excepțiilor.
• Platforma comună de executare a programelor numită Common Language Runtime (CLR),
utilizată de toate cele 4 limbaje.
• Ansamblul de biblioteci necesare în realizarea aplicațiilor desktop sau Web n umit Framework
Class Library (FCL). (Figura 1.)

Figura 1. Arhitectura .NET

3.3. VISUAL STUDIO IDE

Microsoft Visual Studio este un mediu de dezvoltare integrat (integrated development
environment – IDE) de la Microsoft. Acesta poate fi folosit pentru a dezvolta aplicații consolă și
aplicații cu interfață grafică, aplicații de tip Windows Forms, site -uri web, aplicații web, servicii
web ce sunt suportate platformele: Microsoft Windows, Windows Mobile, Windows CE,. NET
Framework,. NET Compact Framework și Microsoft Silverlight. Microsoft Visual Studio oferă
editor, compilator/debugger și mediu de proiectar e (designer) pentru mai multe limbaje de
programare.
Visual Studio foloseste platforme de dezvoltare de software Microsoft, cum ar fi
Windows API, Windows Store și Microsoft Silverlight.
Limbaje de programare incluse: Microsoft Visual C++, Microsoft Visua l C#, Microsoft
Visual Basic, Microsoft Visual Web Developer, Team Foundation Server. Visual FoxPro
(eliminat în 2007), Visual SourceSafe (întrerupt începând cu Visual Studio 2008), Microsoft

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

19
Visual J++/ Microsoft Visual J # (întrerupt începând cu Visual S tudio 2008), Visual InterDev
(înlocuit cu Microsoft Visual Web Developer).
Pe lângă aceste limbaje, Microsoft Visual Studio oferă suport și pentru alte limbaje, cum
ar fi M, Python, Ruby. De asemenea, sprijină XML/XSLT, HTML/XHTML, JavaScript și CSS.
Visu al studio este oferit în mai multe variante: Express, Professional, Premium, Ultimate, Test
Professional.
Visual Studio vizează în mod specific dezvoltatorii de aplicații Web, distribuite client –
server. Acesta oferă toate instrumentele de care este nevoie pentru a crea și menține fiecare nivel
al arhitecturii aplicatiei.
Multe dintre îmbunătățirile aduse produselor developer Microsoft existente au ca
principalul scop simplificarea, crearea sau utilizarea componentelor ActiveX. Un set complet de
instrumente este furnizat pentru a crea straturi de prezentare pe bază de HTML, un plus față de
tradiționale instrumente de programare a aplicațiilor bazate pe Windows. Un set complet de
instrumente de gestionare a datelor ajută la crearea de rutină și întreținerea b azelor de date care
stau la bază.
Un al doilea obiectiv al Visual Studio este aplicația client -server. Aceeasi arhitectura de
bază se aplică ambelor tipuri de aplicații. Aplicațile Corporate tind să se concentreze mai mult pe
partea de bază de date a lucrurilor, însă, și Visual Studio Enterprise Edition contine chiar mai
multe instrumente pentru crearea de baze de date pe scară largă și de procesare a tranzacțiilor
aplicații.
3.3.1. ARHITECTURA

Visual Studio nu are suport pentru orice limbaj de programare. IDE oferă trei servicii:
 SVsSolution, care oferă posibilitatea de a enumera proiecte și soluții;
 SVsUIShell, care oferă ferestre și funcționalitatea UI (inclusiv file, barele de instrumente
și ferestrele de unelte);
 SVsShell, care se ocupă cu înregistrarea VSPackages.
În plus, IDE este de asemenea responsabil pentru coordonarea și comunicarea între
servicii. Toate editoarele, designeri, tipurile de proiecte dar și alte instrumente sunt puse în
aplicare ca VSPackages.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

20

Figura 2 Integrated Development Environment (IDE) în Visual Studio

Visual Studio folosește COM pentru a accesa VSPackages.Visual Studio SDK include, de
asemenea, Managed Package Framework (MPF ), care este un set de ambalaje gestionate în jurul
interfețelor COM care permit pachetelor să fie scrise în orice limbaj compatibil CLI. Cu toate
acestea, MFP nu furnizează toate funcționalitățile expuse de Visual Studio în interfețele COM.
Serviciile pot fi apoi folosite pentru crearea de alte pachete, care aduc functionalitate în cadrul
IDE Visual Studio.
Ca și suport pentru limbaje de programare, se adaugă un VSPackage, specific numit un
serviciu limbă. Un serviciu de limbaj definește diferite interfețe care sunt puse în aplicare de
VSPackage pentru a adăuga suport pentru diferite funcționalități. Functionalitățile care pot fi
adăugate în acest fel includ o anumită sintaxă,
În cazul în care interfața este implementată, funcționalitatea va fi disponibilă pentru limbaj.
Servicii de limb aj vor fi puse în aplicare pe o bază per limbaj. Implementările pot reutiliza codul
de la analizorul sau compilator de limbaj. Servicile de limbaj pot fi puse în aplicare în cod nativ
sau cod gestionat. Pentru codul nativ, pot fi folosite fie interfețelor COM native sau a cadrului
Babel (parte din Visual Studio SDK), iar pentru codul gestionat, MFP include ambalaje pentru
scrierea de servicii lingvistice gestionate.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

21

Visual Studio nu include nici un sprijin de comandă a sursei, dar definește două modalită ți
alternative de sisteme de control sursă pentru integrarea IDE. Un control sursa VSPackage poate
oferi propria interfata personalizată a utilizatorului. În schimb, un plug -in de control sursă
folosind MSSCCI (Microsoft Source Code Control Interface) oferă un set de funcții care sunt
utilizate pentru a pune în aplicare diferite funcționalități a sursei, cu o interfață standard a
utilizatorului Visual Studio. MSSCCI a fost folosit prima să integreze Visual SourceSafe cu
Visual Studio 6.0, dar mai târziu a f ost deschis prin intermediul Studio SDK Visual.
Visual Studio sprijină funcționarea în mai multe instanțe ale mediului (fiecare cu propriul
set de VSPackages). Instanțele utilizează diferite registry hives pentru a stoca starea lor de
configurare și sunt diferențiate prin APPID (ID Application) lor. Cazurile sunt lansate de un .exe
APPID specifice, care selectează APPID, stabilește rădăcină și lansează IDE.
Diferitele ediții de produse ale Visual Studio sunt create folosind diferite AppIds.
Produsele Visu al Studio Express Editon sunt instalate cu propriile lor AppIds, dar produsele
standard, profesionale și Team Suite împărtășesc același APPID.

3.4. LIMBAJUL DE PROGRAMARE C#

C# este un limbaj de programare conceput de Microsoft la sfarsitul anilor 90. A fost conceput ca
un concurent pentru limbajul Java. Ca si acesta, C# este un derivat al limbajului de
programare C++.
Totodata, este un limbaj de programare nou conceput pentru .NET si este semnificativ in doua
privinte:
 Este proiectat si directionat in mod specific pentru utilizarea cu Microsoft .NET
Framework (o bogata platforma pentru dezvoltarea ,implementarea si executarea
aplicatiilor distribuite).
 Este un limbaj bazat pe metodol ogia moderna de proiectare orientata spre obiect si atunci
cand a fost proiectata, Microsoft a invatat din experienta tuturor celorlalte limbaje
similare care au fost in jur, de vreme ce principiile orientate spre obiecte au ajuns la
proeminenta acum 20 de ani.
C# este o limba in sine. Desi este proiectat sa genereze coduri care vizeaza .NET , nu face parte
din acesta. Unele caracteristici sunt acceptate de .NET , dar nu de C#, si s -ar putea sa fi surprins
sa afli ca unele caracteristici ale limbajului C# nu sunt acceptate de .NET sau de MSIL (spre
exemplu , unele cazuri de supraincarcare a operatorilor). Cu toate acestea, deoarece
limbajul C# este destinat utilizarii cu .NET , trebuie sa intelegeti acest Framework, daca doriti sa

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

22
dezvoltati in mod eficient apl icatiile C#. Prin urmare, acest capitol are nevoie de ceva timp
pentru a vedea intreaga suprafata a limbajului.
În acest moment, ar trebui să fiți familiarizați cu limbajul C# și aproape gata să treceți la
aplicarea limajului care acoperă modul de utilizare a C# pentru a programa o varietate de
aplicații. Înainte de a face acest lucru, cu toate acestea, este important să înțelegeți modul în care
puteți utiliza Visual Studio și unele dintre caracteristicile oferite de mediul .NET pentru a obține
cele mai bune rezultate din programele dvs. Acest capitol explică ceea ce înseamnă programarea
în mediul .NET în practică. Acesta acoperă Visual Studio , mediul de dezvoltare principal în
care veți scrie, compila, depana și optimiza programele C# și oferă îndru mări pentru scrierea de
aplicații bune. Visual Studio este IDE -ul principal utilizat în numeroase scopuri, inclusiv scrierea
aplicațiilor ASP.NET , Windows Forms, aplicații Windows Presentation Foundation ( WPF ),
aplicații Windows Store care accesează servici i WCF sau API Web și multe altele. Acest
capitol explorează, de asemenea, ceea ce este nevoie pentru a construi aplicații care vizează
platformele .NET Framework 4.5 și 4.5.1 . Lucrul cu Visual Studio 2015 vă permite să lucrați
direct cu cele mai recente ti puri de aplicații, cum ar fi WPF , Windows Communication
Foundation ( WCF ) și Windows Workfl ow Foundation ( WF).

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

23
4. ARHITECTURA APLICAȚIEI

4.1. R EALIZAREA BAZEI DE DATE

Baza de date a fost realizată în SQL Management Studio. Primul pas pentru realizarea a cesteia,
este conectarea la SQL, ca în figura 1.

Figura 1. Conectarea la serverul SQL
Am ales conectarea de tipul Windows Authentification deoarece este ușor de utilizat și este ce a
mai uzuală formă de conectare.
Apoi, trebuie sa creem o bază de date nouă, făcând click dreapta pe Database, apoi New
Database, după cum ilustrează figura 2.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

24

Figura 2. Crearea unei baze de date
Se alege un nume pentru baza de date, în cazul meu va fi MARAVET_APR, după care se
creează tabelele cu diferite tipuri de date. (int, varchar, etc.) . Pentru aplicația mea, voi folosi 6
tabele, respectiv : COMENZI, FURNIZORI, PRODUSE, INTRARI, STOCURI, LOGIN.

Figura 3. Baza de date și tabelele create

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

25
Urmă torul pas este de a completa tabelele cu date. După ce acestea au fost completate, se
continuă cu crearea diagramei (click dreapta pe Database Diagrams ->New Database Diagram).

Figura 5. Diagrama bazei de date MARAVET_APR

4.2. R EALIZAREA APLICAȚIEI ÎN CADRUL VISUAL STUDIO 2017

Am ales aces t mediu de programare deoarece dispune de numeroase facilități și permite o
abordare mai ușoară a temei, fiind un mediu bazat pe programarea vizuală.
Pagina de Start Visual Studio 2017 arată ca în figura de mai jos, și permite accesarea unui proiect
deja existent, precum și crearea de noi proiecte.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

26

Figura 1. Pagina de start Visual Studio
Pentru crearea unui nou proiect, dăm click pe File -> New Project, dup ă care alegem tipul de
proiect care să respecte cerințele noastre. În cazul aplicației mele, am ales tipul Windows Forms
Applications, căruia i -am dat un nume sugestiv.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

27

Figura 2. Crearea unui proiect nou

Apoi, primul, și din punctul meu de vedere, cel mai important pas(deoarece fără acesta, aplicația
nu poate fi construită respectând cerințele mele), este conectarea la baza de date creată anterior in
Microsoft SQL Server Management Studio 17.
Aceasta se face dând click pe Tools ( din ba ra de instrumente Visual Studio) -> Connect to
Database.

Figura 3. Conectarea din VS la SQL
După ce conectarea s -a făcut, în panoul Server Explorer ( Ctrl+Alt+S) putem să vedem baza de
date la care ne -am conectat, ca și în Figura 4. Continuăm aplica ția prin crearea unei clase LINQ
TO SQL( Click dreapta pe proiectul nostru din Solution Explorer (CTRL+Alt+L) , Add ->New
Item->Data ->Linq to SQL Classes) . Această clasă va avea numele Maravet.dbml, așa cum se
poate vedea mai jos, în Figura 5. În această cla să vom pune tabelele din baza noastră de date,
prin drag & drop, din Server Explorer. Diagrama rezultată se poate vedea în Figura 6.

Figura 4. Conectarea corectă la SQL

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

28

Figura 5. Crearea unei clase Linq to SQL

Figura 6 . Clasa Linq to SQL creat ă

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

29
După ce toate aceste lucruri au fost făcute corect, putem să trecem la realizarea concretă a
aplicației. Întrucât pentru primul proiect am ales tipul Windows Forms Applications, aplicația
mea va fi bazată pe mai multe Forme Windows, adaptate corespunzător în funcție de caz, dar și
pe câteva Clase necesare pentru a finaliza anumite cerințe care intervin pe parcursul realizării
aplicației.
Aplicația va conține așadar două proiecte, primul este cel creat anterior, iar al doilea este de tip
Class Library, în care vor fi clasele necesare afișării datelor și în format XML, precum și
salvarea lor, în același format.
Înainte de a începe prezentarea în detaliu a proiectelor, doresc să precizez faptul că am folosit
pentru un design mai modern al formelor Windows, p achetul Metro Framework, pe care l -am
descărcat în felul următor : Click dreapta pe Solution Explorer -> Manage NuGet Packages for
Solution (Figura 7.).

Figura 7. Desc ărcare pachet Metro Framework
După ce pachetul a fost descărcat, pentru actualizare, am compilat (Ctrl+Shift+B), iar apoi în
Tools, am adăugat un nou tab cu pachetul descărcat, numit Metro Framework, unde am adăugat
fișierele executabile ale pachetului. Astfel, am obținut o nouă modalitate de a crea forme
Windows care din punctul meu de veder e sunt mai moderne și actuale. Accesarea acestor forme
se face adăugând în antetul proiectului using MetroFramework.Forms; și public partial class
Login : MetroForm .

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

30

Proiectul licenta_app, de tip Windows Forms conține următoarele clase : Program.cs (clasa
implicit ă), Dialog.cs (necesară pentru datele din XML), următoarele forme Windows : Login.cs,
Comenzi.cs, Produse.cs, Furnizori.cs, Intrari.cs, Stocuri.cs, ComenziPeCantitate.cs,
ComenziPeste300.cs, ComenziSub100.cs, FurnizoriActivi.cs, FurnizoriNURo mania.cs,
FurnizoriXML.cs și clasa Linq to SQL Maravet.dbml.
Proiectul DataLayer, de tip Class Library, conține următoarele clase : DataContext.cs,
Furnizor.cs, FurnizorConverter.cs.
În continuare o să prezint fiecare formă și clasă în parte .
Aplicația se va deschide cu o primă formă de Login (Figura 8.), în care, pe baza unui tabel
existent în baza de date, se va putea face autentificarea, dacă numele de utilizator și parola vor fi
cele existente în tabel. În caz contrar, se va primi un mesaj cu “Ați intro dus greșit numele de
utilizator sau parola. ”(Figura 9.)

Figura 8. Login

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

31

Figura 9. Mesaj de eroare Login
Codul folosit pentru realizarea acestei forme îl regăsiți în ANEXA 1.
După ce autentificarea a fost făcută corect, aplicația va deschide Pagina Principală, unde regăsim
mai multe butoane cu diferite cerințe, un ceas digital și data.(Figura 10.) Codul folosit la
realizarea paginii principale este regăsit în ANEXA 2.

Figura 10. Pagina principal ă
Cum spuneam, fiecare buton din Pagina princip ală respectă o cerință. Butonul Furnizori afișează
sub formă de Grid toți Furnizorii existenți în baza de date. (Figura 11)

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

32

Figura 11 . Furnizori
Aici ave m posibilitatea de a adăuga, a șterge sau a salva un Furnizor. Codul f olosit se poate
vedea în ANEXA 3.
Butonul Intrari, afișează sub formă de Grid toate intrările produselor. (Figura 12)

Figura 12. Intrari

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

33
Butonul Produse, afișează sub formă de Grid, toate produsele existente, unde, pe lângă
posibilitatea adăugării, ștergerii sau salvării unui produs , având posibilitatea căutării unui produs,
după denumirea lui. (Figura 13.) Codul folosit pentru aceast ă formă se regăsește în ANEXA 4 .

Figura 13. Produse
Butonul Furnizori XML, încarcă Furnizorii sub formă de Grid, dintr -un document Furnizori.xml,
aflat lângă fișierul executabil (Figura 14) . De asemenea, datele se pot modi fica și ulterior, se pot
adăuga date, șterge și salva, în același format, primind un mesaj de confirmare.(Figura 15).
Pentru a realiza acest lucru, am folosit clasele Dialog, Data Context, FurnizoriConverter și
Furnizor. O parte din codul f olosit se poate vedea în ANEXA 5 .

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

34

Figura 14. Încărcare date din XML

Figura 15. Salvare date în format XML
Forma Comenzi.cs, afi șează toate comenzile făcute către Furnizori, atât în format Grid , cât și
Details. Avem și aic i posibilitatea de a adăuga, a șterge și a salva o comandă. În Figura 16 se
poate observa fereastra Comenzi.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

35

Figura 16. Comenzi
În forma Stocuri, vedem sub formă de Grid situația actuală a stocurilor. (Figura 17.)

Figura 17 . Stocuri

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

36
Butonul central, cel cu Rapoarte, prezintă câteva din situațiile care se pot extrage din baza de
date creată în SQL.(Figura 18.)

Figura 18. Situații
Butonul prezintă situația furnizorilor care au comenzi, dar și un top al
furnizorilor sub formă de chart, în funcție de numărul comenzilor al fiecăruia. (Figura 19.)

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

37

Figura 19. Situația furnizorilor activi, în funcție de comenzi

Butonul prezintă comenzile peste 300 RON și topul celor mai
comandate produse. (Figura 20.)

Figura 20. Situația comenzilor peste 300 RON

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

38

Butonul afișează comenzile sub 100 RON, în funcție de
produse. (Figura 21)

Figura 21. Situația comenzilor sub 100 RON

Butonul afișează situația comenzilor în funcție de cantitatea
comandată . (Figura 22.)

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

39

Figura 22. Situația comenzilor în funcție de cantitate

Butonul , afișează furnizorii care nu sunt din România, sub
formă de Grid și details. (Figura 23.)

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

40

Figura 23. Situația furnizorilor din afara țării

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

41

5. CONCLUZII

Așa cum am precizat în introducere, în ziua de azi, orice informație se află la un click
distanță, lucru demonstrat în aplicația prezentată anterior. Datorită faptului că aplicația are o
interfață ușoară și interactivă, ea poate fi adaptată ușor în orice întreprindere și poate fi utilizată
de către orice utilizator, cu o bază de date concepută corect. Țin să precizez că nu am insistat
prea mult pe situațiile concrete bazate pe tema mea, r espectiv pe acele rapoarte prezentante, ci
am preferat să construiesc o aplicație pe caz general, care la nevoie, să aibă capacitatea de a
susține și altă temă, nu neapărat cea a aprovizionării.
În acest sens, consider că aplicația mea este folositoare, e ste perfecta pentru a fi folosită
de către oricine, în aproximativ orice domeniu, bineînțeles, cu modificările de rigoare care
intervin în baza de date.
Din punctul meu de vedere, datorită faptului că în ziua de azi smartphone -ul este ceva ce
aproape orici ne poate să aibă și având și o oarecare experiență deja la locul de muncă actual, am
conștientizat că orice lucru este mult mai ușor dacă ai la îndemână un telefon performant, care să
permită accesarea mai rapidă a aplicațiilor folosite la locul de muncă, iar ele la rândul lor să
poată fi accestate de pe telefon. Astfel că, o îmbunățire remarcabilă a aplicației mele, ar fi
implementarea ei pentru sistemele de operare Android si iOS.
Consider că aplicația mea, privind aprovizionarea în cadrul companiei SC MA RAVET
SA, prezintă suficient de bine și într -un mod plăcut, dar și ușor de înțeles, funcționarea și
utilizarea acesteia în domeniul aprovizionării, precum și extinderea ei într -un alt domeniu, în
funcție de necesitatea utilizatorului.

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

42
6. REFERINȚE BI BLIOGRAFICE

1. Toader, C. – Programarea aplicațiilor Windows, Suport de curs(electronic), CUNBM,
Centrul Universitar Nord din Baia Mare, Facultatea de Științe , 2017 -2018
2. http://www.maravet.com/
3. https://en.wikipedia.org/wiki/Microsoft_Visual_Studio
4. https://en.wikipedia.org/wiki/SQL_Server_Management_Studio
5. https://www.microsoft.com/net/learn/what -is-dotnet
6. http://www.math.uaic.ro/~cgales/csharp/Curs1.pdf
7. https://www.youtube.com/watch?v=NX8 -LhgFnUU&t=881s
8. https://www.youtube.com/watch?v=zn4zgBeUwnA&t=6s
9. https://github.com/dennismagno/metroframework -modern -ui
10. https://www.moodle.md/moot2015/mod/resource/view.php?id=940 –

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

43

7. ANEXE
7.1. ANEXA 1

Codul utilizat pentru forma Login
namespace licenta_app
{
public partial class Login : MetroForm
{
Start formStart;
SqlConnection con = new SqlConnection();
public Login()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(LOCAL);Initial
Catalog=MARAVET_APR;Integrated Security=True" ;

InitializeComponent();
}

private void Login_Load( object sender, EventArgs e)
{

SqlConnection con = new SqlConnection( "Data Source=(LOCAL);Initial
Catalog=MARAVET_APR;Integrated Security=True" );
con.Open();

{
}
}

private void autentificare_Click( object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(LOCAL);Initial
Catalog=MARAVET_APR;Integrated Security=True" ;
con.Open();
string userid = textBoxUtilizator.Text;
string password = textBoxParola.Text;
SqlCommand cmd = new SqlCommand( "select Utilizator,Parola from login where
Utilizator='" + textBoxUtilizator.Text + "'and Parola='" + textBoxParola.Text + "'",
con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
formStart = new Start();

formStart.Show( );

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

44
}
else
{
MessageBox.Show( "Ati introdus gresit numele de utilizator sau parola!" );
}
con.Close();
}

private void cancel_Click( object sender, EventArgs e)
{
Close();
}
}
}

7.2. ANEXA 2

Codul paginii principale
namespace licenta_app
{
public partial class Start : Form
{
Furnizori formFurnizori;
Comenzi formComenzi;
Produse formProduse;
Intrari formIntrari;
Stocuri formStocuri;
RapoarteMrv formrapoarteMRV;
FurnizoriXML formfurnizoriXML;

public Start()
{
InitializeComponent();
}

private void roundButton1_Cl ick(object sender, EventArgs e)
{
if (formFurnizori == null || formFurnizori.IsDisposed)
{
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formFurnizori = new Furnizori();
formFurnizori.Show();
}
else
{
//daca forma este creata, atunci ea este selectata
formFurnizor i.Select();
}

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

45
}

private void roundButton2_Click( object sender, EventArgs e)
{
if (formProduse == null || formProduse.IsDisposed)
{
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formProduse = new Produse();
formProduse.Show();
}
else
{
//daca forma est e creata, atunci ea este selectata
formProduse.Select();
}
}

private void roundButton3_Click( object sender, EventArgs e)
{
if (formComenzi == null || formComenzi.IsDisposed)
{
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formComenzi = new Comenzi();
formComenzi.Show();
}
else
{
//daca forma este creata, atunci ea este selectata
formComenzi.Select();
}
}

private void roundButton5_Click( object sender, EventArgs e)
{
if (formIntrari == null || formIntrari.IsDisposed)
{
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formIntrari = new Intrari();
formIntrari.Show();
}
else
{
//daca forma este creata, atunci ea este selectata
formIntrari.Select();
}
}

private void roundButton6_Click( object sender, EventArgs e)
{
if (formStocuri == null || formStocuri.IsDisposed)
{

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

46
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formStocuri = new Stocuri();
formStocuri.Show();
}
else
{
//daca forma este creata, atunci ea este selectata
formStocuri.Select();
}
}

private void Start_Load( object sender, EventArgs e)
{
timer1.Start();
label2.Text = DateTime.Now.ToShortTimeString();
label3.Text = DateTime.Now.ToShortDateString( );
}

private void timer1_Tick( object sender, EventArgs e)
{
label3.Text = DateTime.Now.ToShortDateString();
label2.Text = DateTime.Now.ToShortTimeString();

}

private void roundButton4_Click (object sender, EventArgs e)
{
if (formrapoarteMRV == null || formrapoarteMRV.IsDisposed)
{
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formrapoarteMRV = new RapoarteMrv();
formrapoarteMRV.Show();
}
else
{
//daca forma este creata, atunci ea este selectata
formrapoarteMRV.Select();
}
}

private void roundButton7_Click( object sender, EventArgs e)
{
if (formfurnizoriXML == null || formfurnizoriXML.IsDisposed)
{
//daca forma nu a fost creata
//sau daca a fost creata si apoi inchisa
//atunci ea se creeaza acum si se afiseaza
formfurnizoriXML = new FurnizoriXML();
formfurnizoriXML.Show();
}
else
{
//daca forma este creata, atunci ea este selectata

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

47
formfurnizoriXML.Select();
}
}
}
}

7.3. ANEXA 3
Codul formei Furnizori

namespace licenta_app
{
public partial class Furnizori : MetroForm
{

private MaravetDataContext context;

public Furnizori()
{
InitializeComponent();
}

private void CreateContext()
{
context = new MaravetDataContext();

}

private void Furnizori_Load( object sender, EventArgs e)
{

this.fURNIZORITableAdapter.Fill( this.dataSet11.FURNIZORI);
CreateContext();

fURNIZORIBindingSource1.DataSource = context.FURNIZORIs;
}

private void toolStripButton1_Click( object sender, EventArgs e)
{
try
{
this.Validate();
this.fURNIZORIBindingSource1.EndEdit();
this.fURNIZORITableAdapter.Update( this.dataSet11.FURNIZORI);
MessageBox.Show( "Datele s -au salvat!" );

}
catch(Exception ex)
{
MessageBox .Show(ex.Message);

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

48
}

}
}
}

7.4. ANEXA 4

Codul formei Produse
namespace licenta_app
{

public partial class Produse : MetroForm
{
private MaravetDataContext context;
SqlConnection con = new SqlConnection();
public Produse()
{
SqlConnection con = new SqlConnection();
con.ConnectionString =( "Data Source=(LOCAL);Initial
Catalog=MARAVET_APR;Integrated Security=True" );
InitializeComponent();
}
private void CreateContext()
{
context = new MaravetDataContext();
}

private void Produse_Load( object sender, EventArgs e)
{

this.pRODUSETableAdapter.Fill( this.dataSet1.PR ODUSE);
SqlConnection con = new SqlConnection( "Data Source=(LOCAL);Initial
Catalog=MARAVET_APR;Integrated Security=True" );
con.Open();
CreateContext();
pRODUSEBindingSource1.DataSource = context.PRODUSEs;

}

private void textBox1_TextChanged( object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(LOCAL);Initial
Catalog=MARAVET_APR;Integrated Security=True" ;
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM PRODUSE WHERE denumire_produs like('% " +
textBox1.Text + "%')";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

49
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
pRODUSEDataGridView.DataSource = dt;

con.Close();
}

private void toolStripButton1_Click( object sender, EventArgs e)
{
try
{
this.Validate();
this.pRODUSEBindingSource1.EndEdit();
this.pRODUSETableAdapter.Update( this.dataSet1.PRODUSE);
MessageBox.Show( "Datele s -au salvat!" );

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}

7.5. ANEXA 5
Codul formei Furnizori XML
namespace licenta_app
{
public partial class FurnizoriXML : MetroForm
{
private DataContext context1;

// folderul implicit cu fisiere XML (este langa fisierul executabil)
private string defaultFolderOfXMLfiles = "Furnizori" ;

// numele implicit al fisierului XML cu date
private string defaultXMLfilename = "Furnizori.xml" ;

// comentariu care se foloseste in metoda SaveData()
private string furnizoriXMLComment = "Lista furnizori" ;

// obiect ca re se foloseste pentru dialogurile OpenFile si SaveFile
private Dialog dialog = new Dialog();

public FurnizoriXML()
{
InitializeComponent();
}
private void CreateContext1()
{
context1 = new DataContext();

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

50
}
private void LoadData()
{

try
{
// daca contextul de date este nul, utilizatorul este anuntat si operatia
este abandonata
if (context1 == null)
{
string message = "Contextul de date este nul. \n" +
"(Verificati daca s -a creat contextul de date.)
\n\n" +
"Operatia este abandon ata.";
string caption = "Citire date" ;
MessageBox.Show(message, caption, MessageBoxButtons.OK,
MessageBoxIcon.Warning);
return; // operatia este abandonata
}

// se obtine calea completa catre fisierul XML intr -un dialog OpenFile
string filename =
dialog.GetFileNameFromOpenFileDialog(defaultXMLfilename, defaultFolderOfXMLfiles);
//context1.LoadFurnizoriFromXML(filename);

if (filename != null)
{
XDocument xdoc = XDocument.Load(filename);
FurnizoriConverter converter = new FurnizoriConverter();
context1.Furnizors = converter.GetListOf FurnizoriFromXDocument(xdoc);
furnizorBindingSource .DataSource = context1.Furnizors;
}

}
catch (Exception ex)
{
string message = ex.Message;
string caption = "Citire date din fisier XML" ;
MessageBox.Show(message, caption, MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

private void SaveData()
{
try
{
// se prei au modificarile facute in DataGridView
furnizorBindingSource.EndEdit();

// lista cu datele principale trebuie sa aiba macar 1 element
if (context1.Furnizors.Count == 0) return;

// se obtine calea completa catre fisierul XML intr -un dialog SaveFile
string filename =
dialog.GetFileNameFromSaveFileDialog(defaultXMLfilename, null);

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

51
context1.SaveFurnizoriToXML(filename, furnizoriXMLComment);
// se anunta utilizatorul ca datele s -au salvat cu succes
string message = "Datele s -au salvat in format XML." ;
string caption = "Salvare fisier XML" ;
MessageBox.Show(message, caption, MessageBoxButtons.OK,
MessageB oxIcon.Information);
}
catch (Exception ex)
{
string message = ex.Message;
string caption = "Salvare fisier XML" ;
MessageBox.Show(message, caption, MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
private void toolStripButton1_Click( object sender, EventArgs e)
{
LoadData();
}
private void toolStripButton2_Click( object sender, EventArgs e)
{
SaveData();
}
private void FurnizoriXML_Load( object sender, EventArgs e)
{
CreateContext1();
}
}
}

Codul clasei DataContext(din proiectul DataLayer)
namespace DataLayer
{
public class DataContext

{
public List<Furnizor> Furnizors { get; set; }
//public object Furnizors { get; set; }

public DataContext()
{
Furnizors= new List<Furnizor>();
}

public void LoadFurnizoriFromXML( string XMLfilename)
{
try
{
if (File.Exists(XMLfilename) == false)
{
string message = "Fișierul " + XMLfilename + " nu există." ;
string caption = "Fișier inex istent";
MessageBox.Show(message, caption,
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

52
}
XDocument furnizoriXDocument = XDocument.Load(XMLfilename);
// din documentul XML se obtine lista de obiecte folosind un convertor
FurnizoriConverter furnizorConverter = new FurnizoriConverter();
Furnizors =
furnizorConverter.GetListOfFurnizoriFromXDoc ument(furnizoriXDocument);
}
catch (Exception)
{
throw;
}
}

public void SaveFurnizoriToXML( string XMLfilename, string XMLcomment)
{
try
{
if (string.IsNullOrEmpty(XMLfilename)) return;

// se formeaza documentul XML folosind convertorul specializat
FurnizoriConverter furnizorConverter = new FurnizoriConverter();
XDocument furnizoriXD ocument =
furnizorConverter.GetXDocumentFromList(Furnizors, XMLcomment);

furnizoriXDocument.Save(XMLfilename);
}
catch (Exception)
{
throw;
}
}

}
}

Codul clasei Furnizor
namespace DataLayer
{
public class Furnizor
{
public string Cod { get; set; }
public string Nume { get; set; }
public string Prenume { get; set; }
public string Tara { get; set;}
public string Judet { get; set; }
public string Localitate { get; set; }
public string Strada { get; set; }
public string Numar { get; set; }
public string Firma { get; set; }
public string Telefon { get; set; }
public string Email { get; set; }

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

53

}
}

Codul clasei FurnizoriConverter
namespace DataLayer
{
public class FurnizoriConverter
{
// functia creeaza un XDocument pornind de la o lista de obiecte Furnizor
public XDocument GetXDocumentFromList(List<Furnizor> listOfFurnizori, string
comment)
{
// se pregateste denumirea XElementului container
string xeContainerName = "Furnizori" ;
// se pregateste un nou obiect de tip XDoc ument
XDocument xdoc = new XDocument();
if (!string.IsNullOrEmpty(comment))
{
// se creeaza un obiect XComment si se adauga la obiectul de tip
XDocument
XComment xc = new XComment(comment) ;
xdoc.Add(xc);
}
// se pregateste un XElement container care va contine celelalte XElemente
XElement xeContainer = new XElement(xeContainerName);
// pentru fiecare obiect din lista se creeaza un nou XElement
// care se adauga la XElementul container
foreach (var item in listOfFurnizori)
{
XElement xe = GetXElementFromObject(item);
xeContainer.Add(xe);
}
// se adauga XElementul container la documentul XML
xdoc.Add(xeContainer);
return xdoc;
}
// functia creeaza o lista de obiecte Furnizor pornind de la un XDocument
public List<Furnizor> GetListOfFurnizoriFromXDocument(XDocument xdoc)
{
// se pregateste numele XElementului de cautat in XDocument
string xElementName = "Furnizor" ;
// se creeaza lista generica
List<Furnizor> list = new List<Furnizor>();
// din fiecare XElement cu numele cautat se creeaza un obiect din clasa
indicata
// care se adauga la lista generica
foreach (var xelement in xdoc.Descendants(xElementName))
{
Furnizor obj = GetFurnizoriFromXElement(xelement);
list.Add(obj);
}
return list;
}

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

54

// functia creeaza un XElement pornind de la un obiect Furnizor
public XElement GetXElementFromObject(Furnizor furnizori)
{
XElement xe = new XElement( "Furnizor" ,
new XAttribute(nameof(furnizori.Cod), furnizori.Cod),
new XElement(nameof(furnizori.Nume), furnizori.Nume),
new XElement(nameof(furnizori.Prenume), furnizori.Prenume),

new XElement(nameof(furnizori.Tara), furnizori.Tara),

new XElement(nameof(furnizori.Judet), furnizori.Judet),

new XElement(nameof(furnizori.Localitate), furnizori.Localitate),

new XElement(nameof(furnizori.Strada), furnizori.Strada),
new XElement(nameof(furnizori.Numar), furnizori.Numar),

new XElement(nameof(fu rnizori.Firma), furnizori.Firma),
new XElement(nameof(furnizori.Telefon),
furnizori.Telefon),
new XElement(nameof(furnizori.Email), furnizori.Email));

//);
return xe;
}
// functia creeaza un obiect Furnizor pornind de la un XElement
public Furnizor GetFurnizoriFromXElement(XElement xe)
{
Furnizor furnizori = new Furnizor();
furnizori.Cod = xe.Attribute( nameof(furnizori.Cod)).Value;
furnizori.Nume = xe.Element(nameof(furnizori.Nume)).Value;

furnizori.Prenume = xe.Element(nameof(furnizori.Prenume)).Value;

furnizori.Tara = xe.Element(nameof(furnizori.Tara)).Valu e;

furnizori.Judet = xe.Element(nameof(furnizori.Judet)).Value;

furnizori.Localitate = xe.Element(nameof(furnizori.Localitate)).Value;

furnizori.Strada = xe.Element(nameof(furnizori.Strada)).Value;

furnizori.Numar = xe.Element(nameof(furnizori.Numar)).Value;

furnizori.Firma = xe.Element(nameof(furnizori.Firma)).Value;
furnizori.Telefon = xe.Element(nameof(furnizori.Telefon)).Value;
furnizori.Email = xe.Element(nameof(fu rnizori.Email)).Value;

return furnizori;
}
}
}

Universitatea Tehnică din Cluj -Napoca,
Centrul Universitar Nord Baia Mare, Facultatea de Științe , Informatic ă Economică

55

Similar Posts