/*
Administratorul unei cofetării are nevoie de o aplicație care permite gestiunea
materiilor prime din depozitul
ei. Pentru fiecare sortiment se va memora numele produsului, cantitatea, prețul de
achiziție, numele furnizorului.
Creați o aplicație care permite administratorului cofetăriei să construiască o baza
de date cu materiile prime
existente în depozit și să afișeze următoarele rezultate:
1. Citire produse
2. Lista produselor din depozitul firmei
3. Lista produselor cumpărate de la furnizorul cu numele citit de la tastatură
4. Ordonarea produselor alfabetic după nume produsului, iar la aceiași nume
descrescător după preț.
5. Ștergerea unui produs, cu numele denumirea furnizorului citite de la tastatură
6. Adăugarea unui nou produs la sfârșitul listei
7. Afișarea numelui furnizorului de la care a cumpărat cele mai multe produse
8. Afișați valoarea totală a stocului produselor din depozitul cofetăriei.
9. Membrii echipei
10. Ieșire din program
*/
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("[Link]");
ofstream g("[Link]");
///declararea datelor
struct materii_prime
{
char nume_produs[50];
char nume_furnizor[50];
int cantitate;
int pret_achizitie;
} mp[101];
int n,nr;
///citirea datelor si construirea vectorului de produse
void citire(materii_prime mp[],int &n)
{
f>>n;
for(int i=1; i<=n; i++)
{
[Link]();
f>>mp[i].nume_produs;
f>>mp[i].cantitate;
f>>mp[i].pret_achizitie;
f>>mp[i].nume_furnizor;
}
}
///afisare materii prime
void afisare(materii_prime mp[],int n)
{
g<<endl<<"\t\tLista produselor este"<<endl;
g<<endl<<"Nume\t\tCantitate\t\tPret\t\tNume_Furnizor";
for(int i=1; i<=n; i++)
{
g<<endl<<mp[i].nume_produs<<"\t\t"<<mp[i].cantitate<<"\t\
t"<<mp[i].pret_achizitie<<"\t\t"<<mp[i].nume_furnizor;
}
}
///Lista produselor cumpărate de la furnizorul cu numele citit de la tastatură
void produse_furnizor(materii_prime mp[],int n)
{
char s[20];
cout<<"Lista produselor furnizate de la:";
cin>>s;
cout<<endl<<"\nProdus\t\tPret\t\tNume Furnizor"<<endl;
int ok=0;
for(int i=0; i<n; i++)
if(strcmp(mp[i].nume_furnizor,s)==0)
{
g<<endl<<mp[i].nume_produs<<"\t\t"<<mp[i].pret_achizitie<<"\t\t";
g<<mp[i].nume_furnizor;
ok=1;
}
if(ok==0)
g<<"Nu au fost cumparate produse de la acest furnizor!";
g<<endl;
}
///determinarea mediei maxime
float medieMaxima(materii_prime mp[],int n)
{
float maxx=mp[1].cantitate;
for(int i=2; i<=n; i++)
if(mp[i].cantitate>maxx)
maxx=mp[i].cantitate;
return maxx;
}
///Afișarea numelui furnizorului de la care a cumpărat cele mai multe produse
void afisare_nume_furnizor(materii_prime mp[],int n)
{
float maxx=medieMaxima(mp,n);
g<<endl<<endl<<"\t\tFurnizori" << endl;
g<<endl<<"\t\tNumeFurnizor\t\tCantitate"<<endl;
for(int i=1; i<=n; i++)
if(mp[i].cantitate==maxx)
g<<mp[i].nume_furnizor<<"\t\t"<<mp[i].cantitate<<endl;
g<<endl;
}
///Ordonarea produselor alfaabetic după nume produsului, iar la aceiași nume
descrescător după preț.
void Sortare(materii_prime mp[],int n)
{
for(int i=1; i<=n-1; i++)
for(int j=i+1; j<=n; j++)
if(mp[i].nume_produs[0]>mp[j].nume_produs[0])
swap(mp[i],mp[j]);
}
///lista elevilor cu un nume dat de la tastaura
void cantitate_cofetarie(materii_prime mp[],int n)
{
for(int i=0; i<=n; i++)
{
nr=nr+mp[i].cantitate;
}
g<<nr;
g<<endl;
}
void adaugare(materii_prime mp[],int &n)
{
n=n+1;
cout<<"Nume produs:";
[Link]();
cin>>mp[n].nume_produs;
cout<<"Cantitate:";
cin>>mp[n].cantitate;
cout<<"Pret achizitie:";
cin>>mp[n].pret_achizitie;
cout<<"Nume furnizor:";
[Link]();
cin>>mp[n].nume_furnizor;
g<<endl<<mp[n].nume_produs<<"\t\t"<<mp[n].cantitate<<"\t\
t"<<mp[n].pret_achizitie<<"\t\t"<<mp[n].nume_furnizor;
}
void stergere(materii_prime mp[],int &n)
{ int i,k ;
cout<<"k=";cin>>k;
for(i=k;i<=n;i++){
strcpy(mp[i].nume_produs,mp[i+1].nume_produs);
strcpy(mp[i].nume_furnizor,mp[i+1].nume_furnizor);
mp[i].cantitate=mp[i+1].cantitate;
mp[i].pret_achizitie=mp[i+1].pret_achizitie;
}
for(i=1;i<=n-1;i++)
g<<endl<<mp[i].nume_produs<<" "<<mp[i].cantitate<<" "<<mp[i].pret_achizitie<<"
"<<mp[i].nume_furnizor<<endl;
}
///functia principala main
int main()
{
int optiune;
do
{
///afisare meniu pe ecran
cout << endl<<endl<<"**MENIU**" << endl;
cout << endl<<"1. Citire date ";
cout << endl<<"2. Afisare ";
cout << endl<<"3. Afisare produse de la furnizorul dat";
cout << endl<<"4. Sortare alfabetica dupa nume ";
cout << endl<<"5. Stergerea unui produs ";
cout << endl<<"6. Adaugarea unui produs";
cout << endl<<"7. Afișarea numelui furnizorului de la care a cumpărat cele mai
multe produse ";
cout << endl<<"8. Afișare valoarea totală a stocului produselor din depozitul
cofetăriei ";
cout << endl<<"9. Membrii echipei ";
cout<< endl<<"10. Iesire ";
///citire operatie dorita
cout<< endl<<"\t\tAlege operatia: ";
cin>>optiune;
///executie operatie dorita
switch(optiune)
{
case 1: citire(mp,n); break;
case 2: afisare(mp,n); break;
case 3:produse_furnizor(mp,n); break;
case 4: Sortare(mp,n);afisare(mp,n); break;
case 5: stergere(mp,n); break;
case 6: adaugare(mp,n);break;
case 7: afisare_nume_furnizor(mp,n); break;
case 8: cantitate_cofetarie(mp,n); break;
case 9: g<<"\nProgram realizat de Marcu Marius-Cristian "; break;
case 10: return 0;
default: cout<<"Optiune inexistenta!";
}
}
while(optiune!=10);
return 0;
}