Sunteți pe pagina 1din 48

Seminar 1

MessageBox.Show("Hello!",
"Mesaj important");

DialogResult result1 = MessageBox.Show("Va place C#?","Intrebare importanta",

MessageBoxButtons.YesNo);

DialogResult result2 = MessageBox.Show("Va place C#?","Intrebare",

MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,

MessageBoxDefaultButton.Button2);

1
Pentru a obţine răspunsurile:
if (result1 == DialogResult.Yes && result2 == DialogResult.No)

MessageBox.Show("Ati raspuns yes, apoi no.");

}
MessageBox.Show("C# e cel mai tare!","Critical Warning",MessageBoxButtons.OKCancel,

MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1,

MessageBoxOptions.RightAlign,true);

MessageBox.Show("C# e cel mai tare!","Anunt important", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation,

MessageBoxDefaultButton.Button1);

6. Setarea focusului
txtNume.Focus();

7. Curățarea valorii unui control de tip TextBox


txtDenp.Clear();

sau
txtDenp.Text = "";

8. Ascunderea/afișarea unui control

2
lblStocf.Visible = false; //- ascunderea
lblStocf.Visible = true; //- afişarea

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 lab01_ex2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)


{
//Ascundere controale
lblValAmortizare.Visible = false;
txtValAmortizare.Visible = false;
btnAdaugare.Visible = false;
lstRezultate.Visible = false;
//Dezactiveaza proprietatea de editare a textboxului
txtValAmortizare.Enabled = false;

private void btncalcul_Click(object sender, EventArgs e)


{
//declarare variabile
double vi, durata, amortizare;
//atribuit variabilelor valori din textbox
vi = Convert.ToDouble(txtValIntrare.Text);
durata = Convert.ToDouble(txtDNU.Text);
//calcul amortizare
amortizare = Math.Round(vi / (durata*12),2);
//afisare amortizarea in textbox, conversie din double in string
txtValAmortizare.Text = amortizare.ToString();
//afisare controale in forma
lblValAmortizare.Visible = true;
txtValAmortizare.Visible = true;
btnAdaugare.Visible = true;
lstRezultate.Visible = true;

private void btnAdaugare_Click(object sender, EventArgs e)


{

3
//declarat si intializat variabila element
string element = txtDenMijlocFix.Text + " " + txtValIntrare.Text + " " +
txtDNU.Text + " " + txtValAmortizare.Text;
//Am adaugat continutul variabilei element in listbox
lstRezultate.Items.Add(element);

//Golit continutul textboxuriloe


txtDenMijlocFix.Text = "";
txtDNU.Clear();
txtValIntrare.Clear();
//Ascundere controale
txtValAmortizare.Visible = false;
lblValAmortizare.Visible = false;
btnAdaugare.Visible = false;

}
}
}

Seminar 2

Validarea unui număr real inserat într-un TextBox:

double doutput = 0;

if (double.TryParse(txtPret.Text, out doutput))

MessageBox.Show("Valoarea introdusa pentru pret este un numar de tip double valid


si este stocata in variabila doutput de tip double:" + doutput);

double pretf= doutput;

else

MessageBox.Show("Valoarea introdusa pentru pret nu este un numar de tip double


valid!!!");

4
2 1
5 5
1 7
1 6
1 3 6
7
1 6
6
4 7

Fig. 1. Fereastra în modul Design

Fig. 2. Fereastra la execuţia aplicaţiei

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;

5
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void optLei_CheckedChanged(object sender, EventArgs e)


{
cboRata.Items.Clear();
cboRata.Items.Add("5");
cboRata.Items.Add("10");
cboRata.Items.Add("100");
}

private void optEuro_CheckedChanged(object sender, EventArgs e)


{
cboRata.Items.Clear();
cboRata.Items.Add("3");
cboRata.Items.Add("4");
cboRata.Items.Add("5");
}

private void btnCalcul_Click(object sender, EventArgs e)


{
double suma = Convert.ToDouble(txtSuma.Text);
int perioada = Convert.ToInt32(numPerioada.Value);
double rata = Convert.ToDouble(cboRata.SelectedItem)/1200;
double valimprumut, valdobanda, anuitate, amortisment, valramasa;
if(optAnuitati.Checked)
{
anuitate = Math.Round(suma*rata/(1-Math.Pow(1+rata,-perioada)), 1);
valimprumut = suma;
for(int i=1;i<=perioada;i++)
{
valdobanda = valimprumut * rata;
amortisment = anuitate - valdobanda;
valramasa = valimprumut - amortisment;
listBox1.Items.Add("pentru luna " + i + " rata este " + anuitate+"
valoarea ramasa este "+valramasa);
valimprumut = valramasa;
}
}
else
{
amortisment = Math.Round(suma /perioada, 1);
valimprumut = suma;
int i = 1;
while(i<=perioada)
{
valdobanda = valimprumut * rata;
anuitate = amortisment + valdobanda;
valramasa = valimprumut - amortisment;
listBox1.Items.Add("pentru luna " + i + " rata este " + anuitate + "
valoarea ramasa este " + valramasa);

6
valimprumut = valramasa;
i++;
}
}
}

private void btninchidere_Click(object sender, EventArgs e)


{
Application.Exit();
}

private void Form1_Load(object sender, EventArgs e)


{
optLei.Checked = true;
optAnuitati.Checked = true;
}

private void btnReset_Click(object sender, EventArgs e)


{
optLei.Checked = true;
optAnuitati.Checked = true;
listBox1.Items.Clear();
txtSuma.Text = "";
numPerioada.Value = 1;
cboRata.SelectedIndex = -1;
}
}
}

Seminar 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;

namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void min_Click(object sender, EventArgs e)


{
double min = a[0];
for (int i =1;i<Convert.ToInt32(txtnr.Text);i++)
{
if (min > a[i])
min = a[i];
}
label4.Text = "minimul este " + min;

7
}
double[] a;
private void btnGenerare_Click(object sender, EventArgs e)
{
a = new double[Convert.ToInt32(txtnr.Text)];
}
int i = 0;

private void btnAdaugare_Click(object sender, EventArgs e)


{
if (i < Convert.ToInt32(txtnr.Text))
{
a[i] = Convert.ToDouble(txtVal.Text);
i++;
txtVal.Clear();
txtVal.Focus();
}
else
MessageBox.Show("Toate pozitile din array au o valoare");
}

private void btnAfisare_Click(object sender, EventArgs e)


{
label3.Text = "";
for( int d=0;d<Convert.ToInt32(txtnr.Text);d++)
{
label3.Text += a[d] + "; ";
}
}

private void btnMax_Click(object sender, EventArgs e)


{
double min = a[0];
for (int i = 1; i < Convert.ToInt32(txtnr.Text); i++)
{
if (min < a[i])
min = a[i];
}
label4.Text = "maximul este " + min;
}
}
}

Să se construiască următoarea aplicaţie:

8
2 3
1

2 3
1

3
1

3 3 3
3

Fig. 1. Fereastra în modul Design

9
Fig. 2. Fereastra la execuţia aplicaţiei

Seminar 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;

namespace WindowsFormsApp5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[,] a;
private void btnGenerare_Click(object sender, EventArgs e)
{
a = new int[Convert.ToInt32(txtLinii.Text),
Convert.ToInt32(txtColoane.Text)];
Random r = new Random();
label3.Text = "";
for(int i =0; i< Convert.ToInt32(txtLinii.Text);i++)

1
0
{
for(int j=0;j< Convert.ToInt32(txtColoane.Text);j++)
{
a[i, j] = r.Next(0, 10);
label3.Text += a[i, j] + " ";
}
label3.Text += "\n";
}
}

private void btnCalcul_Click(object sender, EventArgs e)


{
string o = cboOpt.Text;
int l = Convert.ToInt32(txtLinii.Text);
int c = Convert.ToInt32(txtColoane.Text);
switch(o)
{
case "suma elemetelor":
int s = 0;
for (int i=0;i<l;i++)
{ for (int j=0;j<c;j++)
{
s+= a[i, j];
}
}
MessageBox.Show("Suma elementelor este " + s);
break;

case "minimul pe linie":


string min = "";
for (int i = 0; i < l; i++)
{
int m = a[i, 0];
for (int j = 0; j < c; j++)
{
if (m > a[i, j])
m = a[i, j];
}
min += "Minimul liniei " + (i + 1) + " este " + m+"\n";
}
MessageBox.Show(min);
break;

case "maximul pe coloana":


string max = "";
for (int i = 0; i < c; i++)
{
int m = a[0, i];
for (int j = 0; j < l; j++)
{
if (m < a[j, i])
m = a[j, i];
}
max += "Maximul coloanei " + (i + 1) + " este " + m + "\n";
}
MessageBox.Show(max);
break;
case "suma elementelor de pe diagonala principala":
if (l == c)

1
1
{
int suma = 0;
for (int i = 0; i < c; i++)
suma += a[i, i];
MessageBox.Show("suma elemetelor de pe diagonala principala este
" + suma);
}
else
MessageBox.Show("Matricea nu este patratica");

break;
case "suma elementelor aflate deaspra diagonalei principale":
int sd = 0;
for (int i = 0; i < l; i++)
{
for (int j =i+1; j < c; j++)
{
sd += a[i, j];
}
}
MessageBox.Show("Suma elementelor este " + sd);
break;

default:
MessageBox.Show("Alegeti o optiune");
break;
}
}
}
}

Să se construiască următoarea aplicaţie:

3
1 8

4
2

1
2
Fig. 1. Fereastra în modul Design

Fig. 2. Fereastra la execuţia aplicaţiei

LABORATORUL 5 – Meniu. Grafic. DataGridView


Să se construiască următoarea aplicație cu meniu fig1

Fig1. Meniu Aplicatie

La clik pe butonul Afisare DataGridViww sa se deschida urmatoarea fereastra fig2

1
3
Fig2. AfisareListView

Iar la click pe butonul afisare grafic sa se afiseze fereastra din fig3

Fig3. Afisare grafic

Rezolvare:

Codul asociat ferestrei Form1:


public static string[,] date = new string[12, 3] {

{ "Euro", "1", "4.75" }, { "Euro", "2", "4.80" }, { "Euro", "3", "4.80" }, {


"Euro", "4", "4.85" }, { "Euro", "5", "4.92" }, { "Euro", "6", "4.90" },

{ "Dolar", "1", "4.00" },{ "Dolar", "2", "4.15" },{ "Dolar", "3", "4.05" },{
"Dolar", "4", "4.75" },{ "Dolar", "5", "4.10" },{ "Dolar", "6", "4.20" }};

private void btnIesire_Click(object sender, EventArgs e)

1
4
Application.Exit();

private void btnGrafic_Click(object sender, EventArgs e)

FrmGrafic fg = new FrmGrafic();

this.Hide();

fg.Show();

private void btnList_Click(object sender, EventArgs e)

FrmVizualizare fv = new FrmVizualizare();

this.Hide();

fv.Show();

Codul asociat formai FrmVizualizare:


private void FrmVizualizare_Load(object sender, EventArgs e)

dataGridView.Columns.Add("Moneda", "Moneda");

dataGridView.Columns.Add ("Luna", "Luna");

dataGridView.Columns.Add ("Curs", "Curs");

dataGridView.Columns.Add ("Medie", "Medie");

double[] medie = new double[2];

int[] contor = new int[2];

for (int i = 0; i < 12; i++)

if(Form1.date[i, 0]=="Euro")

medie[0] += Convert.ToDouble(Form1.date[i, 2]);

contor[0]++;

else

1
5
medie[1] += Convert.ToDouble(Form1.date[i, 2]);

contor[1]++;

medie[0] = Math.Round(medie[0] / contor[0],2);

medie[1] = Math.Round(medie[1]/contor[1],2);

for (int i = 0; i < 12; i++)

if (Form1.date[i, 0] == "Euro")

dataGridView1.Rows.Add(new Object[] { Form1.date[i, 0], Form1.date[i,


1], Form1.date[i, 2], medie[0].ToString() });

else

dataGridView1.Rows.Add(new Object[] { Form1.date[i, 0], Form1.date[i,


1], Form1.date[i, 2], medie[1].ToString() });

private void btnRevenire_Click(object sender, EventArgs e)

Form1 f1 = new Form1();

this.Hide();

f1.Show();

}Codul asociat ferestrei FrmGrafic:


private void FrmGrafic_Load(object sender, EventArgs e)

chart1.DataSource = Form1.date;

chart1.Series.Clear();

chart1.Series.Add("Euro");

chart1.Series.Add("Dolar");

for (int i = 0; i < 6; i++)

1
6
chart1.Series["Euro"].Points.AddXY(Convert.ToInt32(Form1.date[i, 1]),
Convert.ToDouble(Form1.date[i, 2]));

for (int i = 6; i < 12; i++)

chart1.Series["Dolar"].Points.AddXY(Convert.ToInt32(Form1.date[i, 1]),
Convert.ToDouble(Form1.date[i, 2]));

chart1.Titles.Add("Evolutie curs valuatar");

chart1.Series["Euro"].IsValueShownAsLabel = true;

chart1.Series["Dolar"].IsValueShownAsLabel = true;

private void btnRevenire_Click(object sender, EventArgs e)

Form1 f1 = new Form1();

this.Hide();

f1.Show();

Laborator 7

Se asociaza butonului calcul codul:


double[] salrarii;

int nrlinii;

private void Form1_Load(object sender, EventArgs e)

nrlinii = angajatiDataGridView.Rows.Count - 1;

salrarii = new double[nrlinii];

for (int i = 0; i < nrlinii; i++)

salrarii[i] =
Convert.ToDouble(angajatiDataGridView.Rows[i].Cells[4].Value);

private void button1_Click(object sender, EventArgs e)

1
7
double min = salrarii[0];

for (int i = 0; i < nrlinii; i++)

if (min > salrarii[i])

min = salrarii[i];

label1.Text += "\n rezultat:" + min;

private void button3_Click(object sender, EventArgs e)

double medie = 0;

int contor = 0;

for (int i = 0; i < nrlinii; i++)

medie += salrarii[i];

contor++;

medie = medie / contor;

label2.Text += "\n rezultat:" + medie;

private void button4_Click(object sender, EventArgs e)

double max = salrarii[0];

for (int i = 0; i < nrlinii; i++)

if (max < salrarii[i])

max = salrarii[i];

label3.Text += "\n rezultat:" + max;

Lab 08

Rezolvare:
1
8
Codul asociat ferestrei Form1:
public partial class Form1 : Form

public Form1()

InitializeComponent();

private void button1_Click(object sender, EventArgs e)

Form2 f2 = new Form2();

this.Hide();

f2.Show();

private void button2_Click(object sender, EventArgs e)

Form3 f3 = new Form3();

this.Hide();

f3.Show();

private void button3_Click(object sender, EventArgs e)

Application.Exit();

Codul asociat Ferestrei Form2:


public partial class Form2 : Form

public Form2()

InitializeComponent();

1
9
private void produseBindingNavigatorSaveItem_Click(object sender, EventArgs e)

this.Validate();

this.produseBindingSource.EndEdit();

this.tableAdapterManager.UpdateAll(this.bdDataSet);

private void Form2_Load(object sender, EventArgs e)

// TODO: This line of code loads data into the 'bdDataSet.Intrari' table. You
can move, or remove it, as needed.

this.intrariTableAdapter.Fill(this.bdDataSet.Intrari);

// TODO: This line of code loads data into the 'bdDataSet.produse' table. You
can move, or remove it, as needed.

this.produseTableAdapter.Fill(this.bdDataSet.produse);

private void button1_Click(object sender, EventArgs e)

Form1 f1 = new Form1();

this.Hide();

f1.Show();

}
Codul asociat Ferestrei Form3:
public partial class Form3 : Form

public Form3()

InitializeComponent();

private void button1_Click(object sender, EventArgs e)

Form1 f1 = new Form1();

2
0
this.Hide();

f1.Show();

private void Form3_Load(object sender, EventArgs e)

OleDbConnection con = new


OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\
bd.accdb");

string sql = @"Select denumire, sum(iesiri.cantitate) as


total_canitate_vanduta, sum(intrari.cantitate) as total_canitate_achizitionata

from produse, iesiri, intrari

where produse.id_produs=iesiri.id_produs and


produse.id_produs=intrari.id_produs

group by denumire";

OleDbDataAdapter da = new OleDbDataAdapter(sql, con);

DataSet ds = new DataSet();

da.Fill(ds, "Rezultat");

dataGridView1.DataSource = ds.Tables["Rezultat"];

chart1.Series.Clear();

chart1.Series.Add("Achizitii");

chart1.Series.Add("Vanzari");

for (int i = 0; i < dataGridView1.Rows.Count-1; i++)

chart1.Series["Vanzari"].Points.AddXY(ds.Tables["Rezultat"].Rows[i].Field<string>("denumi
re"), ds.Tables["Rezultat"].Rows[i].Field<double>("total_canitate_vanduta"));

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)

chart1.Series["Achizitii"].Points.AddXY(ds.Tables["Rezultat"].Rows[i].Field<string>("denu
mire"), dataGridView1.Rows[i].Cells[2].Value);

chart1.Titles.Add("Grafic total achizitii si vanzari");

chart1.Series["Achizitii"].IsValueShownAsLabel = true;

chart1.Series["Vanzari"].IsValueShownAsLabel = true;

Laboratorul 10: Fereastra login. Utilizare funcții în C#

Să se construiască următoarea aplicație cu cele 2 ferestere fig1, fig 2

2
1
Fig1. Fereastra de login

Fig2. Meniul aplicatiei

La clic pe oricare din primele 4 butoane de mai sus se dorește citirea datelor de intrare
(suma_imprumutului, rata_dobanzii și perioada) în câte un Inputbox și afișarea ratei lunare pentru
imprumut într-un Messagebox, ca în exemplul de mai jos

2
2
InputBox

MessageBox

Pentru fiecare din urmatoarele 4 butoane (button1, button2, button3 și button4) se va utiliza un alt tip de
funcție, conform indicațiilor de pe fiecare buton.

Codul aferent primei forme, 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.OleDb;

namespace lab_10
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

2
3
private void btnInchidere_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void btnLogare_Click(object sender, EventArgs e)


{
OleDbConnection con = new
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\
bd.accdb");
con.Open();
string sql = "Select COUNT(*) from utilizatori where user='" +
txtUser.Text+"' and parola= '"+ txtParola.Text+"'";
MessageBox.Show(sql);
int c = (int)cmd1.ExecuteScalar();

if(c==1)
{
FrmMeniu fm = new FrmMeniu();
this.Hide();
fm.Show();
}
else
{
MessageBox.Show("User sau parola incorecte!");
}
}
}
}

Pentru a putea folosi funcția Inputbox, care în mod normal nu există în C# dar există în Visual Basic (care
face parte din pachetul Visual Studio, la fel ca și C#), va trebui să dăm clic dreapta pe proiect in fereastra
Solution Explorer și să alegem Add Reference, să căutam în listă Microsoft.VisualBasic, să-l bifăm și să
dăm OK. Apoi la codul aferent formei să adăugăm în partea de sus utilizarea spațiului de nume
VisualBasic cu instrucțiunea:
using Microsoft.VisualBasic;

Acum vom putea folosi obiectul Interaction (aparținând spațiului de nume Microsoft.VisualBasic) cu
funcția Inputbox, ca de exemplu în linia de cod de mai jos:
double imprumut = Convert.ToDouble(Interaction.InputBox("Introduceti suma"));

Codul aferent formei 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 Microsoft.VisualBasic;

namespace lab_10
{

2
4
public partial class FrmMeniu : Form
{
public FrmMeniu()
{
InitializeComponent();
}

void rata()
{
double imprumut = Convert.ToDouble(Interaction.InputBox("Introduceti suma"));
double dobanda = Convert.ToDouble(Interaction.InputBox("Introduceti rata
dobanzii"));
double perioada = Convert.ToDouble(Interaction.InputBox("Introduceti durata
imprumutului "));
double anuitate = Math.Round((dobanda * imprumut) / (1 - Math.Pow((1 +
dobanda), -perioada)), 1);
MessageBox.Show("Valaorea ratei este de " + anuitate);

void rata_2(double imprumut, double dobanda, double perioada)


{
double anuitate = Math.Round((dobanda * imprumut) / (1 - Math.Pow((1 +
dobanda), -perioada)), 1);
MessageBox.Show("Valaorea ratei este de " + anuitate);
}
private void button1_Click(object sender, EventArgs e)
{
rata();
}

private void button2_Click(object sender, EventArgs e)


{
double imprumut = Convert.ToDouble(Interaction.InputBox("Introduceti suma"));
double dobanda = Convert.ToDouble(Interaction.InputBox("Introduceti rata
dobanzii"));
double perioada = Convert.ToDouble(Interaction.InputBox("Introduceti durata
imprumutului "));
rata_2(imprumut, dobanda,perioada);
}

double rata_3()
{
double imprumut = Convert.ToDouble(Interaction.InputBox("Introduceti suma"));
double dobanda = Convert.ToDouble(Interaction.InputBox("Introduceti rata
dobanzii"));
double perioada = Convert.ToDouble(Interaction.InputBox("Introduceti durata
imprumutului "));
double anuitate = Math.Round((dobanda * imprumut) / (1 - Math.Pow((1 +
dobanda), -perioada)), 1);

return anuitate;
}
private void button3_Click(object sender, EventArgs e)
{
double anuitate = rata_3();
MessageBox.Show("Valaorea ratei este de " + anuitate);
}

double rata_4(double imprumut, double dobanda, double perioada)

2
5
{

double anuitate = Math.Round((dobanda * imprumut) / (1 - Math.Pow((1 +


dobanda), -perioada)), 1);
return anuitate;
}
private void button4_Click(object sender, EventArgs e)
{
double imprumut = Convert.ToDouble(Interaction.InputBox("Introduceti suma"));
double dobanda = Convert.ToDouble(Interaction.InputBox("Introduceti rata
dobanzii"));
double perioada = Convert.ToDouble(Interaction.InputBox("Introduceti durata
imprumutului "));
double anuitate = rata_4(imprumut, dobanda, perioada);
MessageBox.Show("Valaorea ratei este de " + anuitate);
}

private void button5_Click(object sender, EventArgs e)


{
Form1 f1 = new Form1();
this.Hide();
f1.Show();
}
}
}

Facultativ:
Putem să definim noi o funcție utilizator care ridică un număr real x la o putere întreagă pozitivă y.
(Observație: Funcția Math.Pow era mai puternică, deoarece putea ridica un numar real (double) x la o
putere reală (double) y!)

Această funcție va fi:


public double putere(double x, int y)
{
int n = 1;
double rezultat=1;
while (n <= y)
{
rezultat *= x;
n++;
}
return rezultat;
}

și o vom plasa oriunde în cadrul clasei Form1. Specificatorul de acces public de mai sus e necesar
pentru a putea apela această funcție-membru a clasei Form1 și din cealaltă formă a aplicației, forma
Meniu. Dacă nu era nevoie să fie apelată și dintr-o altă formă puteam să omitem specificatorul public
și totul funcționa foarte bine (când specificatorul de acces lipsește se consideră impl icit specificatorul
private, care permite utilizarea funcției respective doar în clasa unde a fost definită).

În cadrul clasei Form1 apelul funcției putere se va face foarte simplu, ca de exemplu în linia de cod:
double calcul =putere(4,2);

În schimb, în cea de-a doua formă, forma Meniu, apelul ei se va face astfel:

2
6
Form1 f=new Form1();
double calcul = f.putere(4,2);

Acest mod de apel e necesar deoarece funcția putere se poate apela doar ca funcție membru a unui
obiect (f) de clasă Form1 (deoarece în clasa Form1 a fost definită cu public -nu public static! - funcția
putere!)

TEMA:
Sa se construiască o aplicatie care sa contina minim:
- O baza de date (4 Puncte)
- O fereastra de login (1 Punct)
- 2 functii (3 Puncte)
- Un array (1 Punct)
1 Punct din oficiu

LABORATORUL 11 – Aplicaţie cu afişare raport, raport cu


parametru si grafic

Link-uri utile pentru crearea rapoartelor

Să se construiască o aplicaţie de tip Windows Form cu patru butoane de comandă. Se va


lucra cu baza de date Programari.accdb, plasata in folderul bin/Debug al proiectului, dar si in
parintele folderului bin/Debug.
 Primul buton (Afisare raport) va apela o nouă formă unde va afişa toate programarile
crescatoe dupa data si ora programarii, afisand numele doctorului, specialitatea acestuia,
numele pacientului, sexul acestuia si data si ora programarii.
 Al doilea buton (Afisare raport cu parametru) va apela o forma noua unde va afisa aceasi
situatie ca la punctul anterior dar doar pacientii de sex feminin sau cei de sex masculin,
alesi functie de introducerea literei F sau M intr-un textbox de catre utilizator.
 Al treile buton va afisa un grafic cu numarul de pacienti pe fiecare doctor.
 Ultimul buton permite părăsirea aplicaţiei.

2
7
Fig.1
Rezolvare:
Se creeaza forma Meniu de mai sus cu cele 4 butoane din care primele 3 deschid 3 noi forme
(numite frmRap, frmRapPar si frmGrafic de exemplu), si apoi se salveaza proiectul si se
plaseaza baza de date in folderul bin/Debug, dar si in folderul parinte al lui bin/Debug.
Se va realiza adaugarea sursei de date la proiect: din meniul Project, Add New Data Source,
Database, Next, Dataset, Next, New Connection, se alege Access, baza de date
Programari din bin/Debug, Test Connection, ok si apare fereastra:

In fereastra de mai sus se alege: Next, Yes, Yes si Finish.


In fereastra Solution Explorer va apare baza de date Programari.accdb, si la proprietatile bazei
de date se seteaza proprietatea Copy to output Directoy pe Do not copy (in loc de Copy
always).
1) Pentru primul buton: Afisare raport (fara parametru):
Se pregateste sursa de date pentru punctul 1 (afisarea raportului fara parametru): Se alege din
meniul Project, Add New Item/ categoria Data, Dataset, și se dă numele DSRaport.xsd.
Din fereastra Toolbox se va glisa Table Adapter în fereastra DSRaport.xsd care va
deschide o fereastra numita TableAdapter Configuration Wizard. Se selectează butonul New
Connection. Se selectează Access si calea către baza de date Programari.accdb dar cea din
parintele lui bin/Debug de aceasta data! şi apoi se selectează Test Connection.

2
8
Se da ok, Next, ramane selectat butonul Use SQL Statements, si apoi se da iar Next:

În fereastra Enter a SQL Statement se selectează butonul Query Builder, tabelele Doctori,
Pacienti, Programari şi câmpurile numeprend (numele si prenumele doctorului), specialitatea
acestuia (câmpul specialitate), nume_pren (Pacienti), sex, data si ora programarii (câmpurile
datap si orap).

Se completeaza cu sortarea dorita (ca in figura, dupa datap si orap) si se poate verifica
rezultatul apasand butonul Execute Query:

2
9
Apoi se da ok, Next, Next, Finish.

Automat a fost creat urmatorul TableAdapter in fereastra DSRaport.xsd:

Aceste campuri din TableAdapter vor constitui sursa de date a raportului.

In continuare, pe forma frmRap se adauga un control ReportViewer din Toolbox (din


sectiunea Reporting) si se alege Design a new Report, ca mai jos:

3
0
Fig.2

Pentru Visual Studio 2012 difera putin pasii de aici incolo fata de Visual Studio 2017, si anume:

Pentru Visual Studio 2012:

Se selectează de la Data Source – DSRaport, apoi se apasă butonul Next. În fereastra


Report Wizard se glisează toate câmpurile în zona ∑ Values şi se apasă butonul Next.

Se selectează Next (nu exista posibilitatea calcularii subtotalurilor întrucât nu am ales nici un
criteriu de grupare), se alege un stil (de exemplu Corporate), Next.
Raportul (Report1.rdlc [Design]) va arăta ca în imagine:

3
1
În formularul frmRap selectăm săgeata de sus din dreapta a controlului reportviewer şi alegem
numele raportului creat (Lab13.Report1.rdlc):

Fig.3

Se rulează până aici, cu observatia ca trebuie să completați și codul pentru vizualizarea


formularului frmRap, la clic pe butonul Afisare raport din formularul principal (Fig.1), cel cu
meniul cu butoane, adica:

private void btnRaport_Click(object sender, EventArgs e)

FrmRap f = new FrmRap();

f.Show();

Pentru cazul utilizarii Visual Studio 2017:

Pentru alegerea lui Design a New Report in fig.2 la reportviewer, va apare urmatoarea fereastra:

3
2
Totodata apare in fereastra Solution Explorer Report1.rdlc. Se da dublu clic pe acest
Report1.rdlc si se obtine fereastra Report1.rdlc[Design]:

In aceasta se trage din Toolbox (de la Report Items) un control Table. Se va deschide fereastra
Dataset Properties din figura de mai jos, la care se alege la Data source: DSRaport si fereastra
va fi completata automat cu campurile setului de data ca in figura:

Apoi se alege ok si fereastra Report1.rdlc [Design] va arata ca mai jos:

3
3
Aici se completeaza pe rand toate coloanele cu campurile corespunzatoare din DataSet care apar
automat la pozitionarea mouse-ului in coloana respectiva:

Se pot adauga noi coloane cu clic dreapta pe ultima coloana si alegand Insert Column, Right, ca
in final sa avem:

În formularul frmRap selectăm săgeata de sus din dreapta şi alegem numele raportului creat
(deci Lab13.Report1.rdlc), la fel ca in fig. 3.

Se rulează până aici, cu observatia ca trebuie să completați și codul pentru vizualizarea


formularului frmRap, la clic pe butonul Afisare raport din formularul principal, cel cu meniul
cu butoane, adica:

private void btnRaport_Click(object sender, EventArgs e)

FrmRap f = new FrmRap();

f.Show();

3
4
Observatie:

In ambele cazuri (deci fie ca folositi Visual Studio 2012 sau 2017), cand alegeti numele
raportului la proprietatea Choose report a controlului ReportViewer din fig.3, daca e sa va uitati
la evenimentul Load a formularului frmRap veti vedea ca s-a generat automat codul:

private void frmRap_Load(object sender, EventArgs e)

this.reportViewer1.RefreshReport();

2) Pentru al doilea buton: Afisare raport cu parametru

Se doreste ca la clic pe butonul Afisare raport cu parametru (de pe formularul Meniu) sa se


deschida urmatorul formular, numit frmRapPar:

Fig.4

Si in figura 4 de mai sus s-a glisat din fereastra Toolbox, din categoria Reporting un control
Reportviewer pe formular.
Dar, inainte de a alege din nou Design a new report de la sageata dreapta sus a controlului
reportviewer, va trebui sa ne pregatim Dataset-ul. Pentru aceasta urmam exact aceeasi pasi:

Din meniul Proiect, Add new Item, Data, dataset, si se da numele DSRapPar. Se trage din
Toolbox un TableAdapter pe suprafata DSRapPar.xsd care apare. Se deschide Table Adapter
ConfigurationWizard si se urmeaza aceeasi pasi (Dar intotdeauna la New Connection pentru
setarea sursei de date se va lua baza de date din parintele lui bin/Debug), pana la Query
Builder, unde comanda SQL generata va fi insa una cu parametru sex citit de la tastatura, ca in
figura de mai jos, unde s-a completat interogarea SELECT generată cu clauza WHERE sex=?

3
5
Se poate verifica rezultatul apăsând butonul Execute Query. Pentru parametrul ?, în loc
de valoarea NULL, va trebui aleasă o alta valoare din domeniul de valori (M sau F), de
exemplu F. Se apasă butonul OK. Rezultatul este afişat mai jos:

Se da apoi Ok, Next, Next şi Finish. Automat a fost creat următorul Table Adapter, cu
parametrul GetData (sex)

Se revine la formularul frmRapPar in care textbox-ul va avea proprietatea Name setată pe


txtSex. Se apeleaza formularul frmRapPar la clic pe butonul Afisare Raport cu Parametru din
formularul cu meniul principal, deci se va scrie urmatorul cod pe forma din fig.1, al 2-lea
buton:
3
6
private void btnRapPar_Click(object sender, EventArgs e)

frmRapPar f= new frmRapPar();

f.Show();

}
In continuare se urmeaza aceeasi pasi ca si la celalalt raport, alegand Design a new report la
sageata din partea de sus a reportviewerului de pe forma frmRapPar, si se va crea fisierul
Report2.rdlc (si Report2.rdlc [Design]). Apoi se alege ca sursa de date a controlului
reportviewer fisierul Report2.rdlc creat.

Codurile controalelor de pe forma frmRapPar până în acest moment (codul pentru metoda
frmRapPar_Load s-a generat automat) sunt:

private void frmRapPar_Load(object sender, EventArgs e)

// TODO: This line of code loads data into the 'DSRapPar.DataTable1' table.
You can move, or remove it, as needed.

this.DataTable1TableAdapter.Fill(this.DSRapPar.DataTable1);

this.reportViewer1.RefreshReport();

private void btnInchidere_Click(object sender, EventArgs e)

Close();

}
private void btnAfisare_Click(object sender, EventArgs e)

3
7
}

Vom muta rândurile de la frmRapPar_Load şi le punem în cadrul butonului btnAfişare. În


cadrul primei comenzi, cea cu this.DataTable1TableAdapter.Fill(this.Raport.DataTable1);
vom adăuga un parametru a cărui valoare va fi preluată din proprietatea Text a controlului
txtSex:

private void btnAfisare_Click(object sender, EventArgs e)


{
// TODO: This line of code loads data into the 'Raport.DataTable1' table.
You can move, or remove it, as needed.
this.DataTable1TableAdapter.Fill(this.Raport.DataTable1,txtSex.Text);
this.reportViewer1.RefreshReport();
}

Se rulează până aici!

3) Pentru al 3-lea buton: realizarea unui grafic

În continuare, pentru realizarea graficului, adăugăm la proiect o nouă formă, Project/Add


Windows Form, cu numele frmGrafic și completăm pentru evenimentul clic pe butonul Grafic
de pe primul formular codul:

private void btnGrafic_Click(object sender, EventArgs e)

frmGrafic f = new frmGrafic();

f.Show();

Pentru început se va crea sursa de date, Project/ Add New Item, Data, Dataset, și vom da
numele DSGrafic.xsd. Se vor urma paşii cunoscuţi până la Query Builder (din nou cu baza
de date din parintele lui bin/Debug), unde se vor alege câmpurile numeprend (numele şi
prenumele doctorului) şi CNP-ul pacientului, apoi se va modifica comanda SELECT ca în
figura următoare.

3
8
Pe formularul frmGrafic se va adăuga din fereastra Toolbox, categoria Data, controlul Chart.
Se redimensionează controlul şi se modifică proprietatea Data Source din fereastra de
proprietăţi, se va alege Other data sources apoi Project data sources, DSGrafic, Doctori şi
apare numele DoctoriBindingSource.

Se vor adăuga şi cele 2 butoane de comandă Întoarcere şi Ieşire, şi se scriu codurile asociate.

3
9
Tot pentru chart, se va modifica proprietatea Series (Collection), și din categoria Data,
proprietatea Name – se schimbă în Numarul pacientilor, iar pentru aceeași proprietate
Series (Collection) din categoria Data Source se va alege XValueMember numeprend şi
YValueMember nr_pacienti.

Dacă se doreşte, se poate modifica tipul graficului folosind opţiunea Chart Type (tot din
proprietatea Series (Collection).

Se salvează, se compilează (Build Solution) și se rulează!

4
0
[]

Rezultatul execuţiei:

Raportul simplu:

Raportul cu parametru:

Graficul

Pag. 41 Lab.2 - Crearea unei aplicaţii grafice


[]

Lab 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;

namespace lab13
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
double[,] array = new double[3, 5] { { 5,-67,45,0,34},{ -2,56,89,45,6},
{0,49,78,67,-4 } };
double n_poz = 0;
double n_neg = 0;
double n_zero = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)

{
if (array[i, j] < 0)
n_neg++;
if (array[i, j] > 0)
n_poz++;

Pag. 42 Lab.2 - Crearea unei aplicaţii grafice


[]

if (array[i, j] == 0)
n_zero++;
}
}

MessageBox.Show(" Sunt " + n_neg + " valori negative , " + n_poz + "valori
pozitive si valoriel egale cu zero sunt in numar de " + n_zero);

}
}
}
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;

class Program
{
static void Main()
{
int[] vector = new int[50];
int[] pozitiiMaxime;
int valoareMaxima;
int numarPozitiiMaxime = 0;

Random random = new Random();

// Inițializarea vectorului cu valori aleatoare între 1 și 9


for (int i = 0; i < 50; i++)
{
vector[i] = random.Next(1, 10);
}

// Determinarea valorii maxime


valoareMaxima = vector[0];
for (int i = 1; i < 50; i++)
{
if (vector[i] > valoareMaxima)
{
valoareMaxima = vector[i];
}
}

// Determinarea numărului de poziții cu valoarea maximă


for (int i = 0; i < 50; i++)
{
if (vector[i] == valoareMaxima)

Pag. 43 Lab.2 - Crearea unei aplicaţii grafice


[]

{
numarPozitiiMaxime++;
}
}

// Inițializarea și completarea vectorului cu pozițiile valorii maxime


pozitiiMaxime = new int[numarPozitiiMaxime];
int index = 0;
for (int i = 0; i < 50; i++)
{
if (vector[i] == valoareMaxima)
{
pozitiiMaxime[index] = i;
index++;
}
}

// Afișarea rezultatelor
Console.WriteLine("Vectorul generat aleator:");
for (int i = 0; i < 50; i++)
{
Console.Write(vector[i] + " ");
}

Console.WriteLine("\n\nValoarea maximă: " + valoareMaxima);

Console.WriteLine("\nPozițiile valorii maxime:");


for (int i = 0; i < numarPozitiiMaxime; i++)
{
Console.Write(pozitiiMaxime[i] + " ");
}

Console.ReadLine();
}
}

namespace lab13
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)


{

private void button1_Click(object sender, EventArgs e)


{
double[,] a = new double[6, 3] { { 8, 9, 0 }, { -4, 6, 9 }, { 89, 76, 56 },
{ 7, 0, 5, }, { 6, -8, 3 }, { 1, 6, 9 } };

Pag. 44 Lab.2 - Crearea unei aplicaţii grafice


[]

double[] s = new double[6];


double[] p = new double[3] { 1, 1, 1 };
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 3; j++)
{
s[i] += a[i, j];
}
}

for (int j = 0; j < 3; j++)


{l
for (int i = 0; i < 3; i++)
{
p[j] *= a[i, j];
}
}

for (int i = 0; i < 2; i++)


{
r[i] = s[i % 6] + p[i % 3];
}

// Afișăm rezultatele în label1


label1.Text += string.Join( ", ", r);

}
}
}

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.OleDb;

namespace Proiect_8
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
Form1 fn = new Form1();
fn.Show();
this.Hide();

Pag. 45 Lab.2 - Crearea unei aplicaţii grafice


[]

}
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data
Source=|DataDirectory|\\Sal.accdb");
private void Form3_Load(object sender, EventArgs e)
{
// 3 comenzi SELECT pte cele 3 ComboBox-uri
// departamentul
con.Open();
string sql1 = "select deptno &' '& dname from dept order by deptno";
OleDbDataAdapter da1 = new OleDbDataAdapter(sql1, con);
DataSet ds1 = new DataSet();
// datele sunt salvate in RAM intr-un DataSet;
// in cadrul acestuia se defineste tabela virtuala Departamente
da1.Fill(ds1, "Departamente");
//Elementele din DataSet vor forma lista de Items a ComboBox-ului
// n1 - numarul de elemente din DataSet
int n1 = ds1.Tables["Departamente"].Rows.Count;
for (int i = 0; i < n1; i++)
comboBox1.Items.Add(ds1.Tables["Departamente"].Rows[i][0].ToString());
// se selecteaza primul element
comboBox1.Text = ds1.Tables["Departamente"].Rows[0][0].ToString();
// job-uri;
string sql2 = "select distinct job from emp order by job";
OleDbDataAdapter da2 = new OleDbDataAdapter(sql2, con);
DataSet ds2 = new DataSet();
da2.Fill(ds2, "Job-uri");
int n2 = ds2.Tables["Job-uri"].Rows.Count;
for (int i = 0; i < n2; i++)
comboBox2.Items.Add(ds2.Tables["Job-uri"].Rows[i][0]);
// se selecteaza primul element
comboBox2.SelectedIndex = 0;
// sefi
string sql3 = "select distinct empno from emp order by empno";
OleDbDataAdapter da3 = new OleDbDataAdapter(sql3, con);
DataSet ds3 = new DataSet();
da3.Fill(ds3, "Sefi");
int n3 = ds3.Tables["Sefi"].Rows.Count;
for (int i = 0; i < n3; i++)
comboBox3.Items.Add(ds3.Tables["Sefi"].Rows[i][0]);
// se selecteaza primul element
comboBox3.SelectedIndex = 0;
}

private void button2_Click(object sender, EventArgs e)


{
OleDbCommand c = new OleDbCommand();
c.Connection = con;
c.CommandType = CommandType.Text;
//c.CommandText = "INSERT INTO emp (empno,ename, job,mgr,hiredate,sal,
comm,deptno) " +
// "values (" + pempno + "," + "'" + pename + "'" + "," + "'" + pjob + "'" +
"," +
// pmgr + "," + "'" + phiredate.Date + "'" + "," + psal + "," + pcom + ","
+ pdeptno + ")";
c.ExecuteNonQuery();
}
}
}

Pag. 46 Lab.2 - Crearea unei aplicaţii grafice


[]

Int codpr=9

String denpr=”dorna”

Int pret 20

Int cant 120

Insrare (copr,denpr,pret,cant)

Form1_load(sender,e)

Private void inserare(int codpr…

Con.open()

OLedbcomand c=new oledbcommand()

c.connection =con

c.commnadtype=commnadtype.text

c.commandtext=”insert into prosuse (cod_prod,den_prod,pret,cant)”+

values(“ + cpdpr+”,”+”’”+denpr+”,”+”’”pret+”,”+cant+”)

c.executenonquery();

con.close();

string connectionString = "your_connection_string"; // specificați conexiunea la baza de


date

string query = "UPDATE your_table SET column1=@param1, column2=@param2 WHERE id=@id"; //


specificați interogarea de actualizare și parametrii

using (SqlConnection connection = new SqlConnection(connectionString))

SqlCommand command = new SqlCommand(query, connection);

command.Parameters.AddWithValue("@param1", textBox1.Text); // preluați valoarea din


primul text box și o adăugați ca ați ca parametru

command.Parameters.AddWithValue("@param2", textBox2.Text); // preluați valoarea din al


doilea text box și o adăugați ca parametru

command.Parameters.AddWithValue("@id", your_id); // specificați id-ul înregistrării pe


care doriți să o actualizați

connection.Open();

int result = command.ExecuteNonQuery();

Pag. 47 Lab.2 - Crearea unei aplicaţii grafice


[]

connection.Close();

if (result > 0)

MessageBox.Show("Comanda a fost actualizată cu succes.");

else

MessageBox.Show("Nu s-a putut actualiza comanda.");

Pag. 48 Lab.2 - Crearea unei aplicaţii grafice

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