Sunteți pe pagina 1din 9

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Centrul de Excelență în informatică și Tehnologii Informaționale

Disciplina:
Tehnicile LINQ

Laborator Nr. 1

Tema:
” Noţiuni de bază LINQ. Componente. Extinderea C # pentru LINQ”

A elaborat: Popușoi Alexandru


Grupa: B-1841
A verificat: Nebunelea Diana

Chișinău 2021
Codul sursă:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lab1LINQ
{
internal class Program
{
//Creez corpul funcției principale Main
static void Main(string[] args)
{
//Declar o variabilă ce va corespunde numărului de elevi ce va dori să
introducă utilizatorul
int studentsNumber = 0;
//Folosesc blockul try-catch pentru a evita exceptiile posibile la
introducerea unei variabile de tip integer
try
{
//Setez culoarea de fon al textului
Console.BackgroundColor = ConsoleColor.Black;
//Setez culoarea textului
Console.ForegroundColor = ConsoleColor.Blue;
//Afișez un mesaj în care cer să se introducă variabila
Console.Write("Introduceti numarul de studenti: ");
//Introduc variabila de la tastatură
studentsNumber = int.Parse(Console.ReadLine());
}
//Tratez exceptia afișând un mesaj și însuși excepția
catch (Exception ex)
{
Console.WriteLine("Eroare la introducerea numarului de studenti!\
n" + ex.Message);
}

//Creez o listă de tipul clasei create Elevi cu mărimea variabilei


introduse mai sus
List<Elevi> elevi = new List<Elevi>(studentsNumber);

//Setez culoarea textului


Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("Va rugam să introduceti datele despre studenti ");
//Cu ajutorul ciclului for, introduc datele tuturor studenților
for (int i = 0; i < studentsNumber; i++)
{

//Folosesc block-ul try-catch pentru a evita excepțiile posibile


try
{
//Creez și salvez în variabile toate datele dorite de
utilizator referitor la studentul curent
Console.WriteLine("Student ID : " + (i + 1));
int id = (i + 1);

Console.Write("Nume: ");
string name = Console.ReadLine();

Console.Write("Prenume: ");
string prenume = Console.ReadLine();

Console.Write("Varsta: ");
int varsta = 0;
varsta = int.Parse(Console.ReadLine());

Console.Write("Gen: ");
string gen = Console.ReadLine();

Console.Write("Tipul contractului: ");


string tipC = Console.ReadLine();

Console.Write("GSM: ");
string gsm = Console.ReadLine();
Console.WriteLine("\n\n");
elevi.Add(new Elevi.Builder()
.withNume(name)
.withPrenume(prenume)
.withVarsta(varsta)
.withGen(gen)
.withTipContract(tipC)
.withGSM(gsm)
.build());

}
//Tratez exceptiile posibile la introducerea datelor de la
tastatură
catch (Exception ex)
{
Console.WriteLine("Tipul/Tipurile de date introduse nu
corespund cerintelor!\n" + ex.Message);
}
}

//Creez un punct de întoarcere pentru a folosi meniul de mai multe ori cu


ajutorul instrucțiunii goto
bib:
//Setez culoarea textului
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("0 - Inchide consola");
Console.WriteLine("1 - Afiseaza elevii care au >=18 ani");
Console.WriteLine("2 - Afisati studentii ai caror numar de telefon
contine \"20\"");
Console.WriteLine("3 - Afisati studentii ai caror tip de contract este
bugetar");
Console.WriteLine("4 - Adisati studentii numele carora contine
litera \"m\"");
Console.WriteLine("5 - Afisati lista elevilor");
//Declar o variabilă care va servi ca alegerea utilizatorului
int chose = 0;
//Introduc de la tastatură variabila declarată mai sus
chose = int.Parse(Console.ReadLine());
//Folosesc instrucțiunea switch pentru a facilita codul și a folosi
meniul
switch (chose)
{
//Dacă utilizatorul va tasta 0, aplicația se va închide cu
ajutorul comenzii - Environment.Exit(1)
case 0:
{ Environment.Exit(1); }
break;
//Declar restul variantelor posibile folosite de meniul creat mai
sus cu ajutorul clasei Functii create anterior
case 1:
{ Functii functie = new Functii();
functie.printAdultStudents(elevi); Console.ReadLine(); }
break;
case 2:
{ Functii functie = new Functii();
functie.printStudentsWhoseNumberContainsNumberTwenty(elevi); Console.ReadLine(); }
break;
case 3:
{ Functii functie = new Functii();
functie.printStudentsWithTypeOfContractBugetary(elevi);
Console.ReadLine(); }
break;
case 4:
{ Functii functie = new Functii();
functie.printStudentsWhoseNameContainsLetterM(elevi);
Console.ReadLine(); }
break;
case 5:
{ Functii functie = new Functii();
functie.showStudents(elevi); Console.ReadLine(); }
break;
default:
{ Console.WriteLine("Nu este o alegerea existenta\nincearca
din nou!"); }
break;
}
goto bib;

}
}
}

Elevi.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lab1LINQ
{
public class Elevi
{

//Creez constructorul clasei Elevi și îl declar private pentru a îl putea


folosi în clasa internă a acestuia
private Elevi()
{

}
//Declar toate atributele corespunzatoare unui elev
public int Id { get; set; }

public string Nume { get; set; }

public string Prenume { get; set; }

public int Varsta { get; set; }

public string Gen { get; set; }

public string TipContract { get; set; }

public string GSM { get; set; }

//Creez get-ere și set-ere pentru fiecare atribut corespunzător declarat


mai sus
public int getId() { return Id; }
public void setId(int Id) { this.Id = Id; }
public String getNume() { return Nume; }
public void setNume(String nume) { this.Nume = nume; }

public String getPrenume() { return Prenume; }


public void setPrenume(String prenume) { this.Prenume = prenume; }

public int getVarsta() { return Varsta; }


public void setVarsta(int varsta) { this.Varsta = varsta; }

public String getGen() { return Gen; }


public void setGen(String gen) { this.Gen = gen; }

public String getTipContract() { return TipContract; }


public void setTipContract(String tipContract) { this.TipContract =
tipContract; }

public void setGSM(String gsm) { this.GSM = gsm; }


//Creez clasa Builder care va construi obiectul clasei Elevi pe structuri
public class Builder
{
//Declar un obiect al clasei părinte
private Elevi elevi;

//Declar atributele corespunzatoare obiectului declarat mai sus


public Builder(Elevi elevi) { this.elevi = elevi; }

//Creez un constructor al clasei date în care inițializez un obiect al


clasei părinte
public Builder()
{
elevi = new Elevi();
}
//Declar pe rând funcțiile pentru constucția obiectului
public Builder withId(int id)
{
elevi.setId(id);
return this;
}
public Builder withNume(String nume)
{
elevi.setNume(nume);
return this;
}
public Builder withPrenume(String prenume)
{
elevi.setPrenume(prenume);
return this;
}

public Builder withVarsta(int varsta)


{
elevi.setVarsta(varsta);
return this;
}

public Builder withGen(String gen)


{
elevi.setGen(gen);
return this;
}

public Builder withTipContract(String tipContract)


{
elevi.setTipContract(tipContract);
return this;
}
public Builder withGSM(String gsm)
{
elevi.setGSM(gsm);
return this;
}

//Declar funcția care unește toate structurile anterioare


public Elevi build() { return elevi; }

}
//Creez metoda pentru afișarea datelor unui elev
public void showElevi()
{
Console.WriteLine("ID: " + Id);
Console.WriteLine("Nume: " + Nume);
Console.WriteLine("Prenume: " + Prenume);
Console.WriteLine("Varsta: " + Varsta);
Console.WriteLine("Gen: " + Gen);
Console.WriteLine("Tipul contractului: " + TipContract);
Console.WriteLine("GSM: " + GSM);
}

}
Functii.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lab1LINQ
{
public class Functii
{
//Creez funcția pentru afișarea listei de studenți care au >= 18 ani
public void printAdultStudents(List<Elevi> elevi)
{
//Setez culoarea textului
Console.ForegroundColor = ConsoleColor.Blue;
//Folosind biblioteca LINQ si interfata IEnumerable, selectez
studenții
IEnumerable<Elevi> ListaElevilor = elevi.Where(elev => elev.Varsta >=
18);
//Folosind ciclul foreach, afișez fiecare student selectat
foreach (Elevi elev in ListaElevilor)
{
elev.showElevi();
}
}

//Creez funcția care va selecta studenții ai caror număr de telefon


conține cifra 20
public void printStudentsWhoseNumberContainsNumberTwenty(List<Elevi>
elevi)
{
Console.ForegroundColor = ConsoleColor.Blue;
IEnumerable<Elevi> ListaElevilor = elevi.Where(elev =>
elev.GSM.Contains("20"));

foreach (Elevi elev in ListaElevilor)


{
elev.showElevi();
}
}
//Creez funcția care va selecta studenții care sunt la buget
public void printStudentsWithTypeOfContractBugetary(List<Elevi> elevi)
{
Console.ForegroundColor = ConsoleColor.Blue;
IEnumerable<Elevi> ListaElevilor = elevi.Where(elev =>
elev.TipContract.Equals("Buget"));

foreach (Elevi elev in ListaElevilor)


{
elev.showElevi();
}
}

//Creez funcția care va selecta studenții ai căror nume conține litera m


public void printStudentsWhoseNameContainsLetterM(List<Elevi> elevi)
{
Console.ForegroundColor = ConsoleColor.Blue;
IEnumerable<Elevi> ListaElevilor = elevi.Where(elev =>
elev.Nume.Contains("m") || elev.Nume.Contains("M"));

foreach (Elevi elev in ListaElevilor)


{
elev.showElevi();
}
}

//Creez funcția care va afișa toți studenții din listă


public void showStudents(List<Elevi> elevi)
{
Console.ForegroundColor = ConsoleColor.Blue;
IEnumerable<Elevi> ListaElevilor = elevi.Where(elev =>
elev.Nume.Contains(""));

foreach (Elevi elev in ListaElevilor)


{
elev.showElevi();
}
}
}
}
Capturi de ecran

Fig.1 (Înregistrările utilizatorului și meniul)

Fig.2 (Elevii care au vârsta >=18 ani)

Fig.3 (Studenții ai căror număr de telefon conține „20”)


Fig.4 (Studenții ai căror tip de contract este bugetar)

Fig.5 (Studenții ai căror nume conține litera „m”)

Fig.6 (Lista studenților)

Fig.7 (Închiderea consolei)

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