Documente Academic
Documente Profesional
Documente Cultură
Pentru elaborarea bazei de date Cazare, am analizat cu atenție ce date se vor conține într-o bază de date
cu tematica respectivă. Prin urmare, am evidențiat 6 entități : Turiști, Camera, Camera_type, Sejur,
Distracții și Înregistrare.
Entitatea Turiști conține informații despre turiștii ce eventual se vor caza într-o unitate turistică.
Aceasta conține informații despre numele, prenumele și patronimicul turiștilor, sexul acestora, și numărul
de telefon.
Entitatea Camera_type conține informații despre tipul camerelor existente în unitatea de cazare.
Aceasta conține informații despre capacitatea maximă a diferitor tipuri de camere, descriere(în diferite
unități de cazare există tipuri diferite de camere, plecând de la categorii lux, până la cele standard sau
economice.) și de asemenea prețul pe zi, în fiecare tip de cameră aparte(Pentru camere luxoase, prețul este
ridicat, pentru categorii medii, prețul pe zi este mai scăzut.)
Entitatea Distracții conține informații despre distracțiile turiștilor ce sunt cazați în unitatea de cazare
respectivă.
Aceasta conține informații despre denumirea distracției, și prețul pentru diferite tipuri de
distracții(Piscina, Fitness, Biliard etc.).
1
Entitatea Sejur conține informații despre sejurul turiștilor ce sunt cazați în unitatea turistică.
Aceasta conține informații despre ce tip de distracție a ales turistul, și data la care acesta va utiliza sejurul.
Am realizat asocieri între entitățile bazei de date Cazare, prin intermediul constrîngerii “foreign key” sau
“cheie externă”:
2
La crearea bazei de date Cazare, s-au respectat principiile normalizării, iar date redundante nu s-au
intâlnit .
Crearea modelului obiect(diagrama Entitate-Relaţie)
Asupra datelor se vor efectua operaţii de joncţiune, de afişare a datelor în urma efectuării select-urilor, de
afişare a rezultatelor calculabile în urma rulării scenariului anumitor vederi, şi a procedurii stocate la
inserarea informaţiilor într-un tabel.
3
Forma Main
Forma Main are concentrate sub un aspect atractiv toate condiţiile sarcinilor individuale, cât şi
direcţionarea spre informaţii de logare, iar apoi la logarea propriu-zisă.
Pentru o funcţionalitate corectă, utilizatorul ar trebui să se logheze pentru început, şi astfel acestuia i se
vor garanta drepturile de vizualizare a informaţiilor returnate în urma executării sarcinilor individuale.
Prin urmare, până când utilizatorul nu se va loga, acesta nu va avea acces la subpunctele cerinţelor
individuale, acestea vor rămâne blocate, până la momentul autentificării cu succes.
După cum observăm, în fig.1 toate sarcinile sunt blocate, cu excepţia Info Login-ului, care ne va permite
să vizualizăm informaţiile necesare pentru logare.
Forma Info Login
În această formă, utilizatorului i se comunică informaţiile necesare pentru logare, şi anume Username-ul,
şi Password-ul. Pentru atractivitate, atunci când utilizatorul va acţiona butonul “Afişează informaţia”, din
forma dată, detaliile despre username şi password se vor afişa utilizând animaţii.
4
Fig.2 (Forma Info Login înainte de acţionarea butonului Afişează informaţia)
La acţionarea butonului Afişează informaţia, pe ecranul Formei Info Login vor apărea informaţiile despre
username şi passwordul necesar pentru eventuala logare.
La închiderea acestei forme, se va deschide opţiunea de logare, care fără a vizualiza informaţiile despre
username şi password ar fi rămas blocată.
5
Forma Login
Forma Login permite utilizatorului să se logheze în aplicaţie. Dacă acesta a fost atent şi a memorat
informaţiile despre username şi password din Fig. 3 (Info Login), autentificarea va avea success, şi toate
sarcinile individuale se vor debloca, în caz contrar, se va afişa un mesaj de eroare, şi accesul la sarcinile
individuale va rămâne blocat.
Forma Sarcina 1
În forma Sarcina 1, sunt prezente componentele necesare realizării sarcinii 1 din cerinţele individuale, şi
anume inserarea unui turist, în ziua indicată, în camera introdusă sau selectată.
6
Fig.7 (Forma Sarcina 1 la inserare)
Forma Sarcina 2
Forma Sarcina 2 presupune afişarea listei turiștilor, care în ziua X nu sunt cazați.
Pentru aceasta, am plasat un control DateTimePicker, în care utilizatorul alege data dorită, iar la
acţionarea butonului “Afişează”, în DataGridView se vor afişa rezultatele.
Forma Sarcina 3
7
În Forma Sarcina 3, trebuie să afișez lista turiștilor ce dispun de reducere, și prețul final al sejurului (după
aplicarea reducerii).Pentru acest lucru, am plasat un control DataGridView pe formă, iar la acţionarea
butonului “Afişează”, datagridview-ul va fi populat cu informaţia necesară.
Forma Sarcina 4
În forma Sarcina 4, trebuie să afişez la ecran datele turiştilor, al căror sejur expiră la data, introdusă de
la tastatură. Pentru aceasta, am plasat un control DateTimePicker şi un control DataGridView, în care
se va afişa informaţia rezultantă în urma click-ului pe butonul “Acţionează”.
8
Fig. 10 (Forma Sarcina 4)
Forma Sarcina 5
În Forma Sarcina 5, trebuie să afişez informaţii despre camerele libere la data introdusă de la tastatură.
Pentru comoditate, am plasat pe formă un control DateTimePicker, şi un control DataGridView, care se
va popula cu informaţiile sarcinii 5, în urma acţionării butonului “Afişează camerele libere”.
9
Forma Sarcina 6
În Forma Sarcina 6, trebuie să export într-un fișier MS Word sau MS Excel atributele camerelor, în
ordinea descrescătoare a numărului de locuri libere din acestea, însă, pe lângă aceasta, pentru
comoditate, am decis să afişez rezultatele într-un DataGridView. Primul lucru pe care utilizatorul îl va
realiza, va fi să afişeze informaţiile în DataGridView, iar apoi, la acţionarea butonului “Export to
Excel”, rezultatele din DataGridView vor fi trimise către Excel.
Form Sarcina 7
În Forma Sarcina 7, trebuie să determin preţul mediu al sejururilor turiştilor actual cazaţi;
Pentru aceasta, am plasat un control DataGridView, în care voi afişa preţul mediu.
10
Fig. 13 (Forma Sarcina 7)
Forma Sarcina 8
În Forma Sarcina 8, trebuie să determin cel mai scump şi cel mai ieftin loc de cazare.
Pentru acest lucru, am plasat 2 controale DataGridView, în care voi afişa informaţiile date.
11
Forma Sarcina 9
În Forma Sarcina 9, trebuie să afişez la ecran facilitățile de care dispun turiști în dependență de prețul
sejurului. Pentru aceasta, am plasat pe Formă, un control DataGridView, în care se vor afişa informaţiile
sarcinii 9, în urma acţionării butonului “Lista facilităţilor în dependenţa preţului”.
Forma Sarcina 10
În Forma Sarcina 10, trebuie să determin prețul final al sejurului, în caz de oferire a unei reduceri.
Pentru acest lucru, am plasat pe formă un control DataGridView, care se va popula, în urma acţionării
butonului “Determină preţul sejurului+reducere dacă se aplică”.
12
Fig. 16 (Forma Sarcina 10)
Listingul aplicaţiei
Form 1
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
13
button6.Enabled = false;
button17.Enabled = false;
button18.Enabled = false;
button19.Enabled = false;
14
button16.Enabled = false;
button17.Enabled = false;
button18.Enabled = false;
button19.Enabled = false;
}
}
}
15
private void button17_Click(object sender, EventArgs e)
{
SidePanel.Height = button17.Height;
SidePanel.Top = button17.Top;
Form11 oform11 = new Form11();
oform11.ShowDialog();
}
Form 2
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.Threading;
using System.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
int _charIndex = 0;
int _charIndex2 = 0;
string _text = "admin";
string _text2 = "123";
public Form2()
{
InitializeComponent();
}
}
private void TypewriteText()
{
16
while (_charIndex < _text.Length)
{
Thread.Sleep(300);
label4.Invoke(new Action(() =>
{
label4.Text += _text[_charIndex];
}));
_charIndex++;
}
}
private void TypewriteText2()
{
while (_charIndex2 < _text2.Length)
{
Thread.Sleep(300);
label5.Invoke(new Action(() =>
{
label5.Text += _text2[_charIndex2];
}));
_charIndex2++;
}
}
}
}
}
Form 3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form3 : Form
{
public int x = 0;
public Form3()
{
InitializeComponent();
}
username = textBox1.Text;
pass = textBox2.Text;
if (username == "admin" && pass == "123")
{
MessageBox.Show("Logare cu succes");
this.Close();
x = 0;
}
else
{
MessageBox.Show("Eroare, incercati din nou");
x = -1;
}
}
}
}
Form 4
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form4 : Form
{
string connstring = @"server=.\SQLEXPRESS;
database=Cazare;
18
trusted_connection=true;";
public Form4()
{
InitializeComponent();
}
//sqlquery
string sqlquery1 = "select (rtrim(NumeTurist)+' '+ltrim(PrenumeTurist)) as Nume from
v_Turisti order by idturist ";
//data adapter
SqlDataAdapter da = new SqlDataAdapter(sqlquery1, connstring);
da.Fill(ds, "v_Turisti");
comboBox1.ValueMember = "IdTurist";
comboBox1.DisplayMember = "Nume";
comboBox1.DataSource = ds.Tables[0];
comboBox2.ValueMember = "IdCamera";
comboBox2.DisplayMember = "NumarCamera";
comboBox2.DataSource = ds2.Tables[0];
// string selected_name;
//selected_name="select idTurist from v_turisti
where"+comboBox1.SelectedValue.ToString()+""
}
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = "select * from inregistrare";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "inregistrare");
19
DataTable dt = new DataTable();
dt = ds.Tables["inregistrare"];
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
20
{
Process.Start("http://www.Twitter.com");
}
Form 5
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = "select * from v_data_expirarii where'" + dateTimePicker1.Value +
"'<data_inchirierii or '" + dateTimePicker1.Value + "'>termen_final";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "v_data_expirarii");
DataTable dt = new DataTable();
dt = ds.Tables["v_data_expirarii"];
21
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
Form 6
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.Diagnostics;
using System.Data.SqlClient;
namespace WindowsFormsApp1
{
public partial class Form6 : Form
22
{
public Form6()
{
InitializeComponent();
}
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = "select * from v_CALCUL_Reducere";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "v_CALCUL_Reducere");
DataTable dt = new DataTable();
dt = ds.Tables["v_CALCUL_Reducere"];
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
Form 7
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
23
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form7 : Form
{
public Form7()
{
InitializeComponent();
}
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = "select Turisti.IdTurist, NumeTurist, PrenumeTurist, PatrTurist,
SexTurist, Telefon From Turisti inner join inregistrare on inregistrare.idturist =
turisti.idturist inner join[v_Data_expirarii] on[v_Data_expirarii].[IdTurist] = Turisti.IdTurist
where '" + dateTimePicker1.Value.ToShortDateString() + "' =[v_Data_expirarii].[Termen_Final]";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "Turisti");
DataTable dt = new DataTable();
dt = ds.Tables["Turisti"];
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
24
private void button10_Click(object sender, EventArgs e)
{
Process.Start("http://www.Instagram.com");
}
Form 8
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form8 : Form
{
public Form8()
{
InitializeComponent();
}
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = "select v_data_expirarii.IdCamera,NumarCamera,Descriere from
v_data_expirarii inner join v_Camera on v_Data_expirarii.IdCamera = v_Camera.IdCamera inner join
v_Camera_type on v_Camera.IdCamera_type = v_Camera_type.IdCamera_type where'" +
dateTimePicker1.Value + "' <data_inchirierii or '" + dateTimePicker1.Value + "'>termen_final";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "v_data_expirarii");
DataTable dt = new DataTable();
dt = ds.Tables["v_data_expirarii"];
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
25
private void button3_Click(object sender, EventArgs e)
{
load_DB();
}
Form 9
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form9 : Form
{
public Form9()
{
InitializeComponent();
}
MessageBox.Show("Error" + e);
}
}
27
{
Process.Start("http://www.Instagram.com");
}
Form 10
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form10 : Form
{
public Form10()
{
InitializeComponent();
}
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = "select AVG(Pret_final) as Pret_Mediu_Sejur from v_CALCUL_PRET";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "v_CALCUL_PRET");
DataTable dt = new DataTable();
dt = ds.Tables["v_CALCUL_PRET"];
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
28
private void button3_Click(object sender, EventArgs e)
{
load_DB();
}
Form 11
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form11 : Form
{
public Form11()
{
InitializeComponent();
}
MessageBox.Show("Error" + e);
}
}
MessageBox.Show("Error" + e);
}
}
30
private void button13_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Form 12
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form12 : Form
{
public Form12()
{
InitializeComponent();
}
MessageBox.Show("Error" + e);
}
}
Form 13
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.Diagnostics;
namespace WindowsFormsApp1
{
public partial class Form13 : Form
{
public Form13()
{
InitializeComponent();
}
32
public void load_DB()
{
//string data = textBox1.Text.ToString();
//DateTime parsedDate = DateTime.ParseExact(data,"dd/mm/yyyy",null);
string sql = @"select * from v_CALCUL_Total order by IdTurist";
string constring = @"server=.\sqlexpress;
database=Cazare;
trusted_connection=true;";
try
{
SqlConnection conn = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "v_CALCUL_Total");
DataTable dt = new DataTable();
dt = ds.Tables["v_CALCUL_Total"];
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
catch (Exception e)
{
MessageBox.Show("Error" + e);
}
}
33
Ghid de utilizare a aplicaţiei
Aplicaţia este constituită în limbajul C#, în mediul de lucru Visual Studio. Cu toate acestea, întrucât
aplicaţia este constituită anume pentru lucrul cu bazele de date, se presupune că are acces la un scenariu al
bazei de date, care, în cazul dat, a fost realizat în SSMS (SQL Server Management Studio).
SO: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Visual Studio, SSMS
2016
Procesor: Intel Core i5 3470 @ 3.2 GHz (4 CPUs) / AMD FX-8350 @ 4 GHz (8 CPUs)
RAM: 8 GB
Erori posibile
Este posibilă apariţia unei erori la punctul 6 din sarcinile individuale, şi anume la exportul în Excel.
Întrucât nu toţi au versiunea de Microsoft Office activată, este posibi ca datele să nu fie exportate în
Excel.
Concluzie
În concluzie pot spune că stagiul de practică a decurs cu succes. Am realizat în termenii stabiliţi toate
sarcinile, şi am creat o interfaţă frumoasă aplicaţiei pentru comoditatea utilizatorului.
Într-un final, am însuşit multe lucruri din domeniul programării, mai ales datorită elaborării aplicaţiei în
limbajul de programare C# şi în mediul rapid de dezvoltare a aplicaţiilor Visual Studio. Am învăţat multe
lucruri noi, cum ar fi prelucrarea unor evenimente care sunt mai complexe, crearea și analizarea diferitor
componente (ComboBox,DataGridView), încărcarea cu rezultatele unui query a unui combobox,
conectarea cu bazele de date ,implementarea diferitor biblioteci din mediul de lucru Visual Studio pentru
a putea lucra cu limbajul T-SQL. Sarcinile individuale nu au fost uşoare, însă au fost duse până la capăt
cu succes, iar problemele ce au apărut în cale au fost depăşite.
După părerea mea, practica tehnologică constituie o etapă importantă, deoarece ne învaţă cum să ne
pregătim eficient pentru o eventuală carieră în domeniul IT.
34
Bibliografie
1. Constantin Gălăţan, Susana Gălăţan . Curs de C# : programare in Visual C# 2008 Express Edition.
Editura L & S Info-mat Bucureşti ,2008
2. https://www.c-sharpcorner.com
3. https://www.w3schools.com/sql/sql_union.asp
4. https://stackoverflow.com
5. http://cplusplus.com
35