Академический Документы
Профессиональный Документы
Культура Документы
RAPORTUL
PRIVIND REZULTATELE STAGIULUI
PRACTICII TEHNOLOGICE
AL ELEVULUI
Gonța Nicolai
Grupa – PAP1613G
Chişinău 2019
Cuprins
RAPORTUL STAGIULUI DE PRACTICĂ ................................................................................... 3
DESCRIEREA ACTIVITĂȚILOR REALIZATE .......................................................................... 5
CONȚINUTUL ACTIVITĂȚILOR ȘI SARCINILOR INDIVIDUALE DE LUCRU .................. 7
1. Descrierea conținutului sarcinii. .............................................................................................. 7
Magazin alimentar ................................................................. Error! Bookmark not defined.
2. Listingul aplicației ................................................................................................................... 8
Principala ................................................................................................................................. 8
Form1 ..................................................................................................................................... 10
Form2 ................................................................................... Error! Bookmark not defined.2
Form3 ................................................................................... Error! Bookmark not defined.5
Despre noi ............................................................................ Error! Bookmark not defined.7
Contacte ............................................................................... Error! Bookmark not defined.8
Admin .................................................................................. Error! Bookmark not defined.9
Proceduri ................................................................................................................................ 30
3. Schema bazei de date: ........................................................................................................ 3030
4. Raporte:.............................................................................................................................. 3030
5. Prezentarea programului: ................................................................................................... 3036
Bibliografie ................................................................................................................................ 4646
2
RAPORTUL STAGIULUI DE PRACTICĂ
Conform sarcinii primite la data de 20.05.2019 am început a elebora tot ce a fost propus, începând cu
crearea designului, am elaborat câteva ferestre principale și câteva tabele pentru a efectua testarea
corectă a introducerii email-ului și parolei. Mai târziu am scris codul și creat formele necesare pentru
a efectua corect sarcina propusă de profesor. Dupa elaborarea precedentelor sarcini am creat o baza
de date mult mai complexă și normalizată. Spre sfârșit am testat programul efctuat pentru a nu depista
erori în caz contrar înlatur-am erorile.
1. Fereastra de autentificare/înregistrare;
2. Fereastra principală cu butoane către celelalte componente și informații „Despre noi” și
„Contacte”;
3. Fereastra cu categoriile de mărfuri;
4. Ferestre pentru adăugarea datelor (categorii, mărfuri, clienți etc.);
5. Fereastra pentru ștergerea/modificarea datelor existente în BD;
6. Fereastra pentru afișarea datelor după un criteriu.
3
Observații personale:
Pe parcursul stagiului de practică am descoperit mai multe competente ale mele, am descoperit că
programarea este un mod de ați crea o lume aparte în cel mai frumos mod posibil. Am observat că cu
cât mai mult efort depui cu atât programul devine mai complex și usor de înțeles.
Concluzii:
În concluzie pot spune ca stagiul de practică ne oferă o dezvoltare a abilităților și o pregătire amplă.
Având posibilitatea de a sustine stagiul de practică am posibilitatea să observ modul de lucru într-o
echipă, pot beneficia de trăininguri cu diverse tematici, pot acumula experienta și am posibilitatea de
a interacționa cu oameni profesioniști în domeniu. Conform unor sodaje susținute anterior, persoanele
care au susținut și promovat stagiul de practică au mai mult success în viata profesională, având mai
multă experiență. Plus la asta stagiul de practică oferă posibilitați și pentru angajatori, aceștia având
ocazia să cunoască și să evedențieze resurse umane cu adevărat potențial, pe care în timp să-i
perfecționeze conform standartelor proprii și îi pot transforma în angajați permanenți și de valoare.
4
DESCRIEREA ACTIVITĂȚILOR REALIZATE
Data Produse de elaborat Conținutul rezumativ al
lucrărilor
Agenda formării profesionale
20.05.2019 completată cu datele personale și sarcina Am primit sarcina individuala.
individuală.
Planul individual de activitate pe
21.05.2019 perioada Am elaborate un plan de activitate
pe perioada practicii.
practicii.
5
ca scop logarea utilizatorilor si
adminilor.
Scenariu de creare a viziunilor bazei de Am realizat pentru fiecare tabel
19.05.2019 actualizare si vizualizarea datelor
date.
corespunzatore fiecaruia.
Am creat doar o procedura stocata
Scenariu de creare a procedurilor sub denumirea addUser deoarece
20.06.2019
stocate. crearea unei proceduri in program
este mult mai convenabila.
Am connectat aplicatia chiar la
21.06.2019 Aplicație conectată la baza de date. inceputul crearii primului tabrl,
tabelul Login.
Am creat control-ere de adugare, de
Control-ere programate pentru gestiunea stregere si update pentru utilizatorii
24.06.2019 care se logheaza ca admini iar
datelor.
pentru userii obisnuitii de a aduga o
comanda in baza de date.
Am instalat mai intii extensia care
25.06.2019 Rapoarte. ne permite sa realizam raporte in
Visual Studio 2017 dupa am creat
pentru fiecare table cite un raport.
Am realizat planul care include
26.06.2019 Planul de întreținere a aplicației. citiva admini care au grija ca
palicatiia sa funcioneaza
corespunzator sis a o actualizeze
27.06.2019 Aplicație securizată. Aplicatia este securizata cu o parola
si login.
Produsul program finisat. Am finisat programul, raportul
28.06.2019 Raportul stagiului de practică. satgiului de practica si agenda
Raportul (tipărit și în format electronic), formarii profesionale, la fel ca si
agenda formării profesionale, aplicația baza de date normalizata si crata
vizuală și baza de date. fara erori.
6
CONȚINUTUL ACTIVITĂȚILOR ȘI SARCINILOR INDIVIDUALE DE
LUCRU
1. Descrierea conținutului sarcinii.
Magazin alimentar
Magazin alimentar. Elaborați o aplicație software care gestionează un magazin alimentar (mărfuri,
clienți, vânzări etc.) și oferă informația despre serviciile prestate.
Cerințe pentru aplicație:
- Fereastra de autentificare/înregistrare;
- Fereastra principală cu butoane către celelalte componente și informații „Despre noi” și
„Contacte”;
- Fereastra cu categoriile de mărfuri;
- Fereastra cu coșului de cumpărături;
- Ferestre pentru adăugarea datelor (categorii, mărfuri, clienți etc.);
- Fereastra pentru ștergerea/modificarea datelor existente în BD;
- Fereastra pentru afișarea datelor după un criteriu.
Algoritmul aplicației se va realiza după principiile programării vizuale. Informațiile se vor prelucra
la solicitarea utilizatorului folosind meniuri, formulare și controlere.
Afișarea la ecran a informațiilor sau imprimarea acestora se va realiza prin intermediul rapoartelor.
7
2. Listingul aplicației
Principla
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;
namespace Magazin_alimentar
{
public partial class Principala : Form
{
public Principala()
{
InitializeComponent();
button5.MouseLeave += OnMouseLeaveButton5;
button5.MouseEnter += OnMouseEnterButton5;
}
9
Form1
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.SqlClient;
namespace Magazin_alimentar
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
///////////////////////////////////////////////////////////////////////////////////Logar -
Email si
Parola//////////////////////////////////////////////////////////////////////////////////////
/////////
private void logare_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection(@"Data
Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Colea\Desktop\Magazin
alimentar\BD\LoginMAG.mdf;Integrated Security=True;Connect Timeout=30");
}
/////////////////////////////////////////////////////////////////Buton
Exit////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
/////////////////////////////////////////////////////////////////Buton
Inregistrare////////////////////////////////////////////////////////////////////////////////
/////////////////////////////
private void button1_Click(object sender, EventArgs e)
{
Form3 objForm3 = new Form3();
objForm3.Show();
}
}
}
11
Form2
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.SqlClient;
using System.IO;
using System.Drawing.Imaging;
namespace Magazin_alimentar
{
public partial class Form2 : Form
{
}
private void button3_Click(object sender, EventArgs e)
{
Principala p = new Principala();
Form1 f1 = new Form1();
this.Close();
p.Show();
f1.Show();
}
}
}
}
14
Form3
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.SqlClient;
namespace Magazin_alimentar
{
public partial class Form3 : Form
{
string sqlconnection = @"Data
Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Colea\Desktop\Magazin
alimentar\BD\LoginMAG.mdf;Integrated Security=True;Connect Timeout=30";
public Form3()
{
InitializeComponent();
}
//////////////////////////////////////////////////////Inregistrare in baza de
date///////////////////////////////////////////////
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" ||
textBox4.Text == "" || textBox5.Text == "")
MessageBox.Show("Indepliniti toate cimpurile");
else if (textBox5.Text != textBox6.Text)
MessageBox.Show("Parolele nu coincid");
else
15
{
using (SqlConnection conSQL = new SqlConnection(sqlconnection))
{
conSQL.Open();
SqlCommand sqlcmd = new SqlCommand("addUser", conSQL);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.AddWithValue("@Email", textBox4.Text.Trim());
sqlcmd.Parameters.AddWithValue("@Parola", textBox5.Text.Trim());
sqlcmd.Parameters.AddWithValue("@Nume", textBox1.Text.Trim());
sqlcmd.Parameters.AddWithValue("@Prenume", textBox2.Text.Trim());
sqlcmd.Parameters.AddWithValue("@Adresa", textBox3.Text.Trim());
sqlcmd.ExecuteNonQuery();
MessageBox.Show("Inregistrare reusita");
//Inapoi la principala
this.Close();
}
}
}
}
16
desprenoi
using System;
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;
namespace Magazin_alimentar
{
public partial class desprenoi : Form
{
public desprenoi()
{
InitializeComponent();
}
17
}
}
}
Contacte
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;
namespace Magazin_alimentar
{
public partial class Contacte : Form
{
public Contacte()
{
InitializeComponent();
}
admin
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.SqlClient;
namespace Magazin_alimentar
{
public partial class admin : Form
19
{
SqlConnection con = new SqlConnection(@"Data
Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Colea\Desktop\Magazin
alimentar\BD\LoginMAG.mdf;Integrated Security=True;Connect Timeout=30");
public admin()
{
InitializeComponent();
}
//Afisare furnizori
SqlCommand user = new SqlCommand("SELECT * from Furnizori", con);
SqlDataAdapter us = new SqlDataAdapter(user);
DataSet su = new DataSet();
us.Fill(su);
dataGridView2.DataSource = su.Tables[0];
dataGridView9.DataSource = su.Tables[0];
//Afisre user
SqlCommand ui = new SqlCommand("SELECT * from Login", con);
SqlDataAdapter di = new SqlDataAdapter(ui);
DataSet du = new DataSet();
di.Fill(du);
dataGridView4.DataSource = du.Tables[0];
dataGridView6.DataSource = du.Tables[0];
//Afisare admini
SqlCommand fur = new SqlCommand("SELECT * from Admini", con);
SqlDataAdapter fr = new SqlDataAdapter(fur);
DataSet fu = new DataSet();
fr.Fill(fu);
dataGridView3.DataSource = fu.Tables[0];
dataGridView5.DataSource = fu.Tables[0];
dataGridView11.DataSource = fu.Tables[0];
//Afisare produse
SqlCommand sel = new SqlCommand("SELECT [Produse].[ID_Produs],
[Produse].[Denumire], Produse.Pret, [Categorii].[Denumire_c],
[Furnizori].[Denumire_f] FROM [Produse] INNER JOIN [Categorii] ON
[Produse].[ID_Categorie]=[Categorii].[ID_Categorie] INNER JOIN [Furnizori] ON
[Produse].[ID_Furnizor]=[Furnizori].[ID_Furnizor]", con);
SqlDataAdapter da = new SqlDataAdapter(sel);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
dataGridView8.DataSource = ds.Tables[0];
dataGridView7.DataSource = ds.Tables[0];
21
private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text) ||
string.IsNullOrWhiteSpace(textBox2.Text))
{
MessageBox.Show("Indepliniti cimpurile");
}
else
{
SqlCommand cmd;
cmd = new SqlCommand("Insert into Produse(Denumire, Pret,
ID_Categorie, ID_Furnizor) values('" + this.textBox1.Text + "', '" +
this.textBox2.Text + "', '" + comboBox1.SelectedValue + "', '" +
comboBox2.SelectedValue + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Inserare reusita!");
}
SqlCommand sel = new SqlCommand("SELECT [Produse].[ID_Produs],
[Produse].[Denumire], Produse.Pret, [Categorii].[Denumire_c],
[Furnizori].[Denumire_f] FROM [Produse] INNER JOIN [Categorii] ON
[Produse].[ID_Categorie]=[Categorii].[ID_Categorie] INNER JOIN [Furnizori] ON
[Produse].[ID_Furnizor]=[Furnizori].[ID_Furnizor]", con);
SqlDataAdapter da = new SqlDataAdapter(sel);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
dataGridView8.DataSource = ds.Tables[0];
dataGridView7.DataSource = ds.Tables[0];
22
}
SqlCommand user = new SqlCommand("SELECT * from Furnizori", con);
SqlDataAdapter us = new SqlDataAdapter(user);
DataSet su = new DataSet();
us.Fill(su);
dataGridView2.DataSource = su.Tables[0];
}
SqlCommand sel = new SqlCommand("SELECT * from Admini", con);
SqlDataAdapter da = new SqlDataAdapter(sel);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView3.DataSource = ds.Tables[0];
dataGridView5.DataSource = ds.Tables[0];
dataGridView11.DataSource = ds.Tables[0];
}
}
SqlCommand sel = new SqlCommand("SELECT * from Login", con);
SqlDataAdapter da = new SqlDataAdapter(sel);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView4.DataSource = ds.Tables[0];
dataGridView6.DataSource = ds.Tables[0];
}
}
////////////////////////////Sterge
admin////////////////////////////////////////////////
private void button6_Click(object sender, EventArgs e)
{
string query = "SELECT * FROM Admini WHERE ID_Admin = '" +
textBox14.Text.Trim() + "'";
SqlDataAdapter sda = new SqlDataAdapter(query, con);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows.Count == 1)
{
SqlCommand cmd = new SqlCommand("delete from Admini where
ID_Admin=@id", con);
con.Open();
cmd.Parameters.AddWithValue("@id", textBox14.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Stergere reusita");
}
else
{
MessageBox.Show("Introdu corect datele");
}
}
SqlCommand user = new SqlCommand("SELECT * from Categorii", con);
SqlDataAdapter us = new SqlDataAdapter(user);
DataSet su = new DataSet();
us.Fill(su);
dataGridView10.DataSource = su.Tables[0];
command.Parameters.AddWithValue("ID_Produs", textBox20.Text);
command.Parameters.AddWithValue("Denumire", textBox18.Text);
command.Parameters.AddWithValue("Pret", textBox16.Text);
command.Parameters.AddWithValue("ID_Categorie",
comboBox4.SelectedValue);
26
command.Parameters.AddWithValue("ID_Furnizor",
comboBox3.SelectedValue);
con.Open();
command.ExecuteNonQuery();
con.Close();
}
else
{
MessageBox.Show("Incercaati din nou");
}
command.Parameters.AddWithValue("ID_Furnizor", textBox23.Text);
command.Parameters.AddWithValue("Denumire_f", textBox22.Text);
command.Parameters.AddWithValue("Adresa_f", textBox21.Text);
con.Open();
command.ExecuteNonQuery();
con.Close();
}
else
{
MessageBox.Show("Incercaati din nou");
}
SqlCommand user = new SqlCommand("SELECT * from Furnizori", con);
SqlDataAdapter us = new SqlDataAdapter(user);
DataSet su = new DataSet();
us.Fill(su);
dataGridView2.DataSource = su.Tables[0];
dataGridView9.DataSource = su.Tables[0];
}
27
private void tabPage3_Click(object sender, EventArgs e)
{
command.Parameters.AddWithValue("ID_Admin", textBox24.Text);
command.Parameters.AddWithValue("Nume", textBox25.Text);
command.Parameters.AddWithValue("Prenume", textBox26.Text);
command.Parameters.AddWithValue("Password", textBox27.Text);
command.Parameters.AddWithValue("Login", textBox28.Text);
con.Open();
command.ExecuteNonQuery();
con.Close();
}
else
{
MessageBox.Show("Incercaati din nou");
}
SqlCommand sel = new SqlCommand("SELECT * from Admini", con);
SqlDataAdapter da = new SqlDataAdapter(sel);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView3.DataSource = ds.Tables[0];
dataGridView5.DataSource = ds.Tables[0];
dataGridView11.DataSource = ds.Tables[0];
}
command.Parameters.AddWithValue("ID_Login", textBox29.Text);
command.Parameters.AddWithValue("Email", textBox30.Text);
command.Parameters.AddWithValue("Parola", textBox31.Text);
command.Parameters.AddWithValue("Nume", textBox32.Text);
command.Parameters.AddWithValue("Prenume", textBox33.Text);
command.Parameters.AddWithValue("Adresa", textBox34.Text);
con.Open();
command.ExecuteNonQuery();
con.Close();
}
else
{
MessageBox.Show("Incercaati din nou");
}
}
}
}
29
Proceduri
4. Rapoarte:
Tabel admin
30
Tabel Categorii
Tabel Comenzi
Tabel Furnizori
31
Tabel Login
Tabel Produse
32
33
34
35
5. Prezentarea programului
Forma Principala
36
2. În caz că nu suntem înregistrați accesăm butonul “Înregistrațivă” și mai apoi apare fereastra
Formular
37
4. Accesând direct de pe pagina principăl butonul înregistrare ajungem direct la fereastra
Formular
5. Accesând butonul “Despre noi” sau “Contacte” pe fereastra principală vor aparea ferestrele
respective cu informatia necesară
6. Dacă dorim să închidem fereastra principală facem click pe butonul “Exit” care la plasarea
cursorului pe el se face roșu
38
7. Dacă ne logăm ca user se deschide următorea fereastră unde putem plasa o comandă sau să
căutăm un produs sortândul după categoria sa
39
8. Facând click pe combobox apar toate categoriile existente în baza de date, iar dacă facem
click pe altă categorie din combobox apar produsele cu categoria respectivă
9. Dacă facem click pe unul din produsele apărute în datagridview în dreapta ei apare
informația despre produsul selectat
40
10. Pentru a plasa o comandă este necesar de a introduce datele Nume Prenumele, Telefonul și
Cantitatea produsului (cantitatea este aleasă cu ajutorul unui combobox) iar pentru efectuarea
comenzii este necesar să facem click pe butonul “Comandă”
11. Dacă dorim să ne delogăm din contul respectiv facem click pe butonul “Delogheazăte” (în
colț dreapta sus)
12. Mai apoi dacă avem nevoie să modificăm, ștergem și actualiza datele din baza de date ne
logăm cu contul unui admin
41
42
13. La introducerea datelor corect în casete se vor introduce noi date în baza de date și se va
afișa MessageBox-ul cu informația că totul este introdus corect
43
14. În caz că dorim să ștergem un utilizator, admin, produs, comandă din baza de date
introducem în una din casete ID-ul (user, admin, produs, comandă) și facem click pe butonul
“Șterge” respectiv ID-ul introdus și datele care îi aparțin se șterg
15. Pentru a face update la baza de date este necesar introducerea corectă a ID-ului produsului
sau furnizorului etc. și mai apoi este posibilă modificarea datelor pentru ID-ul respectiv
44
(După modificare)
16. Dacă dorim să ne delogam facem click pe butonul “Delogheazăte”.
45
Bibliografie
1. https://www.w3schools.com/
2. http://1bestcsharp.blogspot.com/2016/04/csharp-update-datagridview-cell-image.html
3. https://iconsflow.com/editor
4. https://stackoverflow.com/questions/22695778/sql-server-invalid-column-name-error-when-
inserting-into-excel-linked-server
5. https://www.codeproject.com/Questions/1235385/How-to-make-an-inner-join-in-Csharp-
for-inserting
6. https://documentation.devexpress.com/XtraReports/2658/Get-Started-with-DevExpress-
Reporting/Add-a-Report-to-Your-VS-Project/Add-a-New-Report-to-a-WinForms-
Application
7. https://stackoverflow.com/questions/33510649/delete-foreign-key
8. https://www.c-sharpcorner.com/UploadFile/1e050f/insert-update-and-delete-record-in-
datagridview-C-Sharp/
9. https://1bestcsharp.blogspot.com/2014/11/c-how-to-clear-text-of-all-textboxes-in.html
46