Sunteți pe pagina 1din 10

PROGRAM GESTIONARE CONTACTE

Aplicație în limbajul C++

Bud Alexandra Simona


Clasa X B, Colegiul Național „Ioan Slavici”(2022-2023)
Prezentarea aplicației

Această aplicație în limbajul C++ a fost concepută pentru gestionarea ușoară a unei liste
de contacte în funcție de anumite criterii. Poate fi folosită atât de utilizatorii de rând care vor să
își organizeze mai ușor lista de contacte, cât și în cadrul firmelor.

Descrierea aplicației

• Cerință:
Se dă un număr n și n contacte, fiecare contact are următoarele date: nume, prenume, număr
de telefon, vârstă, grupul din care face parte și genul.
Se cere să se scrie un program care să citească datele de la tastatură, să afișeze datele, să
sorteze contactele care au peste 18 ani, să sorteze contactele în funcție de vârstă(crescător), să
sorteze contactele în funcție de grupul din care fac parte(familie, prieteni, colegi), să sorteze
contactele în funcție de gen.
Exemplu citire: n=3
1 Pop Raul 0765786245 19 colegi M
2 Bota Ioana 0736459023 17 familie F
3 Costea Alex 0735728465 21 prieteni M

• Subprogramele folosite:

Subprogramul Meniu() afișează pe ecran o listă cu cerințe dintre care utilizatorul poate
alege, astfel prin selectarea unei cifre de la 0 la 6 acesta poate realiza mai multe operații.

1
Exemplu:

Subprogramul CitireDate() este accesat prin alegerea cifrei 1 și citește un număr n de


contacte, apoi pentru fiecare contact citește numele, prenumele, numărul de telefon, vârsta,
grupul din care face parte și genul.

Exemplu:

Subprogramul AfisareDate(i) este accesat prin tastarea cifrei 2 și afișează datele unui anumit
contact în funcție de i.

Exemplu:

2
Subprogramul SortareContacteMajore() este accesat prin tastarea cifrei 3 și sortează și
afișează doar contactele care au peste 18 ani.

Exemplu:

Subprogramul SortareVârstă() este accesat prin tastarea cifrei 4 și sortează contactele


în ordine crescătoare în funcție de vârsta pe care o au.

Exemplu:

Subprogramul SortareGrup() este accesat prin tastarea cifrei 5 și sortează contactele în


funcție de grupul din care fac parte: familie, prieteni sau colegi.

3
Exemplu:

Subprogramul SortareDupaGen() e accesat prin tastarea cifrei 6 și sortează contactele


în funcție de genul lor.

Exemplu:

4
• Declarații variabile

Pentru declararea variabilelor am folosit tipul unsigned – ia ca valori numere naturale –


și tipul contact.
Pentru a putea declara variabilele de tip contact am creat un struct. Fiecare variabila
declarată în tipul contact are: nume, prenume, grup, gen – câmpuri declarate de tip char –
varsta, numartel – câmpuri declarate de tip int – .
Exemplu accesare: c[i].nume, c[i].prenume[0], c[i].grup, c[i].gen, c[i].varsta,
c[i].numartel

• Main-ul principal

Main-ul principal conține:


Declarația variabilei optiune de tip unsigned – ia ca valori numere naturale –
Structura repetitivă cu test final do......while(); în această structură avem mai
multe instrucțiuni care se vor repeta cât timp condiția (optiune!=0) va fi îndeplinită. Prima
linie de cod din această structură este apelarea subprogramului Meniu(). Apoi se citește opțiunea
aleasă urmând a fi folosită funcția switch. Funcția switch evaluează o valoare (numită expresie)
comparând-o cu o listă de valori și returnează rezultatul corespunzător primei valori care se
potrivește. În funcție de valoare pe care o ia variabila opțiune, se vor apela diferite subprograme.
După fiecare apelare a unui subprogram se execută funcția break ceea ce întrerupe executarea
celorlalte instrucțiuni care nu au fost apelate.
Intrucțiunea return 0 care închide main-ul.

5
Programul în limbajul C++

/* Intrare: n contacte, fiecare contact: nume, prenume, nr. telefon, varsta,


grup, gen;
Iesire: citire, afisare, sortare contacte majore, sortare dupa varsta,
sortare dupa grup(familie, prieteni, colegi), sortare dupa gen;
*/
#include <iostream>
#include <cstring>
using namespace std;

void Meniu()
{
cout<<endl;
cout<<"Program gestionare contacte: "<<endl;
cout<<"1 - Citire date contacte"<<endl;
cout<<"2 - Afisare date contacte"<<endl;
cout<<"3 - Sortare contacte majore"<<endl;
cout<<"4 - Sortare dupa varsta"<<endl;
cout<<"5 - Sortare dupa grup(familie,prieteni,colegi)"<<endl;
cout<<"6 - Sortare dupa gen"<<endl;
cout<<"0 - Oprire program"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
}

unsigned i,j,n;

6
struct contact
{
char nume[21],prenume[21],grup[11],gen[1];
int varsta,numartel;
}c[31],aux;

void CitireDate()
{
cout<<"Citire date: "<<endl;
cout<<"Numarul de contacte: ";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<i<<" ";

cin>>c[i].nume>>c[i].prenume>>c[i].numartel>>c[i].varsta>>c[i].grup>>c[i].gen;
}
}

void AfisareDate(int i)
{
cout<<c[i].nume<<" "<<c[i].prenume<<" "<<c[i].numartel<<" "<<c[i].varsta<<"
"<<c[i].grup<<" "<<c[i].gen;
cout<<endl;
}

void SortareContacteMajore()
{
cout<<"Sortare contacte majore: "<<endl;
for(i=1;i<=n;i++)
if(c[i].varsta>=18) AfisareDate(i);
}

void SortareVarsta()
{
cout<<"Sortare dupa varsta: "<<endl;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(c[i].varsta>c[j].varsta)
{
aux=c[i];
c[i]=c[j];
c[j]=aux;
}
for(i=1;i<=n;i++) AfisareDate(i);
}

void SortareGrup()
{

7
cout<<"Sortare dupa grup: "<<endl;
cout<<"Familie: "<<endl;
for(i=1;i<=n;i++)
if(strcmp(c[i].grup,"familie")==0) AfisareDate(i);
cout<<"Prieteni: "<<endl;
for(i=1;i<=n;i++)
if(strcmp(c[i].grup,"prieteni")==0) AfisareDate(i);
cout<<"Colegi: "<<endl;
for(i=1;i<=n;i++)
if(strcmp(c[i].grup,"colegi")==0) AfisareDate(i);
}

void SortareDupaGen()
{
cout<<"Sortare dupa gen: "<<endl;
cout<<"Fetele: "<<endl;
for(i=1;i<=n;i++)
if(c[i].gen[0]=='F') AfisareDate(i);
cout<<endl;
cout<<"Baietii: "<<endl;
for(i=1;i<=n;i++)
if(c[i].gen[0]=='M') AfisareDate(i);
cout<<endl;
}

int main()
{
unsigned optiune;
do
{
Meniu();
cout<<"Ce doresti? ";
cin>>optiune;
switch(optiune)
{
case 1: CitireDate(); break;
case 2: for(i=1;i<=n;i++) AfisareDate(i); break;
case 3: SortareContacteMajore(); break;
case 4: SortareVarsta(); break;
case 5: SortareGrup(); break;
case 6: SortareDupaGen(); break;
}
}while(optiune!=0);
return 0;
}

8
Îmbunătățiri

Îmbunătățirile care ar mai putea fi aduse programului sunt:

• sortarea contactelor în ordine alfabetică


• sortarea contactelor după numărul de telefon

Bibliografie

• screenshot-uri din C++


• lini de cod din C++
• https://www.pbinfo.ro/articole/5547/informatica-clasa-a-ix-a

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