27
Universitatea Politehnica Timisoara Facultatea de Automatizari si Calculatoare Dosar de practica(anul I) Student:PARASCHIVU ANDREEA

Dosar practica

Embed Size (px)

Citation preview

Page 1: Dosar practica

Universitatea Politehnica TimisoaraFacultatea de Automatizari si Calculatoare

Dosar de practica(anul I)

Student:PARASCHIVU ANDREEA

An II Ingineria sistemelor

Gr. 3.1

Page 2: Dosar practica

CUPRINS

Prezentarea firmei……………………..pag. 3

Programa analitica………..……………pag. 4

Activitatea desfasurata…………….….pag. 5

Tema si subiectul progr. realizat..…...pag. 6

Date de test…………………………….pag 7

Cod sursa……………………………...pag .9

Page 3: Dosar practica

Prezentarea unitatii de efectuare a practicii

SC. ALTER SYSTEMS S.R.L.

Domeniul : IT Software

Departament : Internet, eCommerce, New Media, IT

Oras : Timisoara

Judet : Timis

Adresa : Daliei 13A

Sediu : 174 Chemin de Choulans 69005 LYON 05 FRANCE

Pagina WEB : http://www.altersystems.fr

Descrierea firmei:

Alter Systems este reuniunea ideilor si solutiilor adaptate industriei informatice de mâine.Societatea are sediul la Lyon, Franta si are activitate în urmatoarele domenii :- Realizare de proiecte informatice \"Nearshore \" prin filiala din Timisoara - Editor de solutii de administrare la distanta- Realizarea de aplicatii inovante - Consulting technic avansat - Training

Angajati : sub 10

Info: [email protected]

Coordonator practica : ADRIAN ANDRASESCU

Page 4: Dosar practica

PROGRAMA ANALITICAa activitatii de practica in productie a studentilor de la

Facultatea de Automatica si Calculatoare.

Rolul principal al inginerului il constituie perfectionarea continua a proceselor, a mijloacelor de productie si a tehnologiei, aceasta necesitand implicarea lui la nivelul atelierelor de productie.Prin practica se urmareste familiarizarea studentilor cu acest rol si crearea unor deprinderi in profesia aleasa, precum si vizarea unui viitor loc de munca.

Locul de desfasurare:

- unitati de productie moderne;

- centre de calcul;

- oficii de calcul;

- institute de cercetare - proiectare;

- unitati bancare;

- alte unitati dotate cu tehnica de calcul.

Obiective:

- cunoasterea structurii (configuratii posibile pentru unitate centrala, memorie, periferice etc., setup) la sistemele de tip PC (586, 686, Pentium, etc.);

- aprofundarea sistemului de operare DOS, WINDOWS (principalele comenzi interne si externe, organizarea structurii de fisiere si directoare);

- familiarizare cu programe utilitare si medii integrate (Norton Commander, Norton Utility, Norton Integrator, Dos Shell, utilitare din WINDOWS, programe antivirus, editoare de texte, editoare grafice, compilatoare etc.);

- familiarizare cu pachete de programe dedicate unei activitati specifice locului de practica (proiectarea cablajelor, proiectarea si simularea sistemelor, proiectarea schemelor electronice, analiza semnalelor, conducerea prin calculator in : energetica, chimie, transporturi, constructii de masini, etc.).

Page 5: Dosar practica

Cerinte:

- se va studia, in detaliu, una din problemele cu care se ocupa unitatea si se va realiza un program (in limbajul Pascal, sau alt limbaj de nivel inalt) pentru aceasta problema, punandu-se accent pe interfata cu utilizatorul (ferestre, meniuri, help etc.);

- in dosarul de practica se vor descrie : problema studiata, varianta clasica de rezolvare (eventual descrierea programelor existente), cerintele generale ale programului, metoda de rezolvare aleasa pentru program si observatii (facilitati, lipsuri, grad de eficienta, etc.);

- fisierul sursa al programului impreuna cu un set de date de test vor fi aduse pe o discheta pentru a fi prezentate la sustinerea colocviului

ACTIVITATEA DESFASURATA

Conform regulamentului UPT, am efectuat activitatea de practica pentru anul I in perioada 14 iulie - 1 august 2007 (90 de ore) in unitatea firmei SC Alter Systems SRL sub supravegherea d-lui ing. Adrian Andrasescu.

In saptamana 14-20 iulie 2007 :

- mi s-a aratat sediul firmei, echipamentele si angajatii; - am semnat fisa de protectie a muncii; - coordonatorul mi-a vorbit despre activitatea firmei Alter Systems din Franta, cu care sunt asociati;si care le furnizeaza contracte pentru vanzarea de soft-uri; - prezentarea sistemului de operare folosit: Windows XP; - mi-am formatat si partitionat hardul si am instalat Windows xp cu licenta sub indumarea unuia dintre angajati, pentru ca orice programator trebuie sa stie sa isi instaleze sistemul de operare in caz de nefunctionare pentru a-si putea continua munca ; - mi-am instalat programele pe care ei le utilizeaza ca mediu de programare(C#,Microsoft Visual Studio 2005,Dev C++,Microsoft SQL Server etc);

Page 6: Dosar practica

In saptamana 21-27 iulie 2008:

- coordonatorul practicii mi-a prezentat mediul de programare pe care ei il utilizeaza cel mai frecvent, adica C# (C Sharp),dar cum eu nevand cunostiinte decat despre programarea structurata, a trebuit intai sa ma familiarizez cu noile notiuni documentandu-ma despre obiecte, clase, mosteniri etc.; - m-am documentat si am exersat lucrul cu fisiere XML pe care ei le utilizeaza pentru baze de date sau ca un fel de biblioteca pentru a putea refolosi functiile deja editate; - m-am documentat si am pus intrebari despre codul HTML, incercand apoi sa vad care este efectul codului; In saptamana 28iulie – 1august 2008:

- angajatii firmei m-au pus la current cu programul la care tocmai lucrau;un program ce tine evidenta resurselor pe departamentele Frantei generand grafice dupa diferite criterii;

- am testat acel program pe mai multe seturi de date;- le-am furnizate erorile gasite si eventuale idei de remediere;- am ales impreuna cu coordonatorul tema de proiect: o baza de date ce

tine evidenta preparatelor si a ingredientelor dintr-un restaurant;- am realizat proiectul si l-am testat(am anexat mai jos datele de test)

PROIECT

Evidenta preparatelor si a ingredientelor dintr-un restaurant

Am realizat un program care tine evidenta retetelor care pot fi preparate la un restaurant. Acest program va fi folosit pentru eliberarea din magazie a produselor necesare prepararii unei comenzi. Retetele preparatelor pe care restaurantul le ofera sunt pastrate in fisierul “retete.txt”. Pentru fiecare ingredient al unui preparat, se va memora numele ingredientului si cantitatea necesara din acest ingredient pentru prepararea produsului. Se considera ca numarul de ingrediente dintr-un preparat este nelimitat.Toate ingredientele de care dispune restaurantul sunt pastrate pe linii distincte in fisierul “magazie.txt”, sub forma:

Page 7: Dosar practica

nume_ingredient cantitate_disponibila unitate_de_masura pret_pe_unitate_de_masura data_expirarii

La inceputul zilei baza de date ce contine retetele preparatelor, va fi incarcata din fisierul “retete.txt”, iar la sfarsitul zilei se va salva in acelasi fisier. Acelasi lucru se va intampla si cu BD ce contine ingredientele care se gasesc in magazie.

Implementarea bazei de date ce contine retetele am realizat-o utilizand structura de date arbore binar ordonat cu sublista, cautarea dupa numele preparatului facandu-se astfel cel mai rapid.

Implementarea bazei de date care contine ingredientele disponibile in magazie am realizat-o utilizand structura de date lista simplu inlantuita.

Programul are urmatorul meniu:

1. Incarcare – incarca bazele de date din cele doua fisiere (daca bazele de date au fost incarcare deja se afiseaza un mesaj de atentionare)

2. Afiseaza in ordine alfabetica toate preparatele din restaurant impreuna cu ingredientele necesare lor. Ingredientele se vor iparii in ordine descrescatoare a cantitatilor necesare pentru preparare.

3. Afiseaza in ordine alfabetica toate ingredientele disponibile pe stoc.4. Elimina ingredientele expirate (cele care au data expirarii mai mare decat data

curenta citita din sistem)5. Introducerea unei noi retete – se introduce un preparat nou, cu reteta lui, cu datele

citite de la tastatura.6. Introducerea unui nou ingredient. Datele se vor citi de la tastatura7. Eliberare comanda:

1 Citeste de la tastatura numele unui preparat comandat2 Afiseaza in ordine alfabetica ingredientele necesare, pe linii de forma: nume cantitate3 Afiseaza pretul total al ingredientelor unui produs4 Verifica daca se afla pe stoc contitati suficiente din ingedientele acestui

produs astfel incat el sa poata fi preparat. Daca un ingredient lipseste de pe stoc, sau nu exista pe stoc o cantitate la fel de mare ca si cea din reteta se afiseaza un mesaj corespunzator, altfel se elibereaza preparatul, scazand din cantitatile ingredinetelor corespunzatoare, disponibile pe stoc, cantitatile consumate.

8. Modificare pret – citeste de la tastatura numele unui ingredient si pretul lui si ilactualizeaza

9. Stergere – stergerea din evidenta a unei retete10. Salvare informatii in fisierele “magazie.txt” si “retete.txt“11. Parasire program.

Page 8: Dosar practica

Datele de test

Fisier "RETETE.TXT"

inghetataoua6rom5vanilie5lapte1*tortfaina1000zahar500bicarbonat2*

Fisier "MAGAZIE.TXT"

apa41l15.0000002006.10.12*bicarbonat

Page 9: Dosar practica

18gr0.9000002008.09.27*faina19000gr1.0000002008.11.02*lapte10l4.0000002008.12.20*oua10buc1.0000002008.10.17*rom200ml0.5000002008.08.20*sare10gr0.7000002008.05.29*vanilie200ml0.5000002008.04.12*zahar500gr0.5000002008.10.24

Page 10: Dosar practica

*

COD SURSA

#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>

typedef struct sublista /* sublista */{char *nume;int cant;struct sublista *urm;}nodsub;

typedef struct arb /* arbore cu subliste */{char *reteta;struct arb *st,*dr;nodsub *prim;}arbore;

typedef struct ingredienttt /* ingrediente */{char *nume;int cant;char *unitm;float pret;char *data; /* data este de forma YYYY.MM.DD */struct ingredienttt *urm;}nodingr;

arbore *adaug(arbore *rad, char reteta[20]){ /* adaugarea unui nod in arbore */if(rad==NULL){rad=(arbore*)malloc(sizeof(arbore));rad->reteta=(char*)malloc(strlen(reteta)+1);strcpy(rad->reteta,reteta);rad->st=rad->dr=NULL;rad->prim=NULL;}else{if(strcmp(rad->reteta,reteta)<0)rad->dr=adaug(rad->dr,reteta);

Page 11: Dosar practica

elseif(strcmp(rad->reteta,reteta)>0)rad->st=adaug(rad->st,reteta);}return rad;}

nodsub *adauga_nod(nodsub *prim,char nume[20],int cant){ /* adaugarea unui nod in sublista */nodsub *p,*q1,*q2;p=NULL;p=(nodsub*)malloc(sizeof(nodsub));p->nume=(char*)malloc(strlen(nume)+1);strcpy(p->nume,nume);p->cant=cant;p->urm=NULL;for(q1=q2=prim;(q1!=NULL)&&(q1->cant>p->cant);q2=q1,q1=q1->urm);if(q1!=q2) /* adaugarea nu se face la inceput */{q2->urm=p;p->urm=q1;return prim;}else{p->urm=prim; /* adaugarea de face la inceput */prim=p;return prim;}/* adaugare ordonata dupa cantitate -ordine descrescatoare *//* p este nodul ce contine ingredientul*/}

arbore *adaug_lista(arbore *rad, char nume[20], int cant,char reteta[20]){ /* adaugarea in sublista */if(rad!=NULL){if(strcmp(rad->reteta,reteta)<0)rad->dr=adaug_lista(rad->dr,nume,cant,reteta);if(strcmp(rad->reteta,reteta)>0)rad->st=adaug_lista(rad->st,nume,cant,reteta);if(strcmp(rad->reteta,reteta)==0)rad->prim=adauga_nod(rad->prim,nume,cant);}return rad;}

arbore *introduc(arbore *radacina){ /* introducerea datelor din fis f */FILE *f;char nume[20],reteta[20];int cant;if (radacina){printf("Lista a fost deja incarcata!");return radacina;

Page 12: Dosar practica

}if((f=fopen("retete.txt","r"))==NULL){printf("eroare");exit(0);}cant=cant;while(!feof(f)){fscanf(f,"%s",reteta);radacina=adaug(radacina,reteta);do{fscanf(f,"%s",nume);if(strcmp(nume,"*")){fscanf(f,"%d",&cant);radacina=adaug_lista(radacina,nume,cant,reteta);}}while (strcmp(nume,"*"));}fclose(f);return radacina;}

int afisare(arbore *radacina){ /* afisarea arborelui */nodsub *p;if(radacina!=NULL){afisare(radacina->st);printf("\nReteta:%s\n",radacina->reteta);printf("ingrendiente:\n");for(p=radacina->prim;p;p=p->urm)printf("-%s\n",p->nume);afisare(radacina->dr);}return 1;}

nodingr *adaug_ingr(nodingr *ingr,char nume[20],int cant,char unitm[20],float pret,char data[11]){ /* adaugarea in lista de ingrediente */nodingr *p,*q1,*q2; /*p=NULL;*/p=(nodingr*)malloc(sizeof(nodingr));p->nume=(char*)malloc(strlen(nume)+1);p->unitm=(char*)malloc(strlen(unitm)+1);p->data=(char*)malloc(strlen(data)+1);strcpy(p->nume,nume);strcpy(p->unitm,unitm);strcpy(p->data,data);p->cant=cant;p->pret=pret;p->urm=NULL;for(q1=q2=ingr;q1!=NULL&&strcmp(q1->nume,p->nume)<0;q2=q1,q1=q1->urm);

Page 13: Dosar practica

p->urm=q1;if(q1==q2)return p;else{q2->urm=p;return ingr;}}

nodingr *constr_lista(nodingr *ingr){ /* introducerea datelor din fis al doilea */FILE *f;char nume[20],unitm[20],data[11];float pret;int cant;if((f=fopen("magazie.txt","r"))==NULL){printf("eroare");exit(0);}

while(!feof(f)){while(1){fscanf(f,"%s",nume);if(strcmp(nume,"*")==0)break;fscanf(f,"%d",&cant);fscanf(f,"%s",unitm);fscanf(f,"%f",&pret);fscanf(f,"%s",data);ingr=adaug_ingr(ingr,nume,cant,unitm,pret,data);}}fclose(f);return ingr;}

int parcurg_lista(nodingr *ingr){nodingr *p;int k;p=ingr;k=0;printf("\n");while(p!=NULL){printf("Denumire: %s\ncantitate: %d\n",p->nume,p->cant);printf("unitate de masura: %s \npret pe unitate: %f\n",p->unitm,p->pret);printf("data expirarii: %s",p->data);printf("\n\n");p=p->urm;k++;if(k==7)

Page 14: Dosar practica

getch();}return 1;}

nodingr *sterge_lista(nodingr *ingr,nodingr *p) /* stergerea nodurilor */{nodingr *q1,*q2;for(q1=q2=ingr;q1!=NULL&&q1!=p;q2=q1,q1=q1->urm);if(q1!=q2) /* nu este primul nod */{q2->urm->urm=q1->urm;free(q1->nume);free(q1->unitm);free(q1->data);free(q1);}else{q1=ingr;ingr=ingr->urm;free(q1->nume);free(q1->unitm);free(q1->data);free(q1);}return ingr;}

void elimina_lista(nodingr *ingr){ /*stergerea ingredientelor expirate*/char *r,*t,d[15];nodingr *p,*q;printf("Dati data curenta:(YYYY.MM.DD)\n");scanf("%s",d); /* retinem in a anul, in l luna si in z ziua */p=ingr;while(p!=NULL && strcmp(d,p->data)<0){ingr=ingr->urm;free(p);p=ingr;}while (p->urm){while (p->urm!=NULL && strcmp(p->urm->data,d)>0){q=p->urm;p->urm=q->urm;free(q);}p=p->urm;}}

arbore *reteta_noua(arbore *radacina)

Page 15: Dosar practica

{ /* introducerea datelor de la tastatura */char nume[20],reteta[20];int cant;char opt; /* y sau n */printf("\nIntroduceti numele retetei: ");scanf("%s",reteta);radacina=adaug(radacina,reteta);do{printf("\nIntroduceti numele ingredientului: ");scanf("%s",nume);printf("Introduceti cantitatea: ");scanf("%d",&cant);radacina=adaug_lista(radacina,nume,cant,reteta);printf("\nDoriti sa mai introduceti ingrediente? (y/n)");fflush(stdin);scanf("%c",&opt);}while(opt=='y');return radacina;}

nodingr *ingredient_nou(nodingr *ingr){ /* introducerea ingredientelor de la tastatura */char nume[20],unitm[20],data[11];float pret;int cant;printf("\nIntroduceti numele ingredientului: ");scanf("%s",nume);printf("Introduceti cantitatea: ");scanf("%d",&cant);printf("Introduceti unitatea de masura: ");scanf("%s",unitm);printf("Introduceti pretul pe unitate de masura: ");scanf("%f",&pret);printf("Introduceti data expirarii (YYYY.MM.DD): ");scanf("%s",data);ingr=adaug_ingr(ingr,nume,cant,unitm,pret,data);return ingr;}

float pretul(nodingr *ingr,char *nume){ /* cautarea pretului unui ingredient */nodingr *p;for(p=ingr;p;p=p->urm){if(strcmp(p->nume,nume)==0)return p->pret;}return 0;}

int cantitate(nodingr *ingr,char *nume){ /* cantitatea disponibila pe stoc */nodingr *p;for(p=ingr;p;p=p->urm){

Page 16: Dosar practica

if(strcmp(p->nume,nume)==0)return p->cant;}return 0;}

int scade(nodingr *ingr,int cant,char *nume){ /* se scade din cantitatea disponibila, cantitatea utilizata */nodingr *p;for(p=ingr;p;p=p->urm){if(strcmp(p->nume,nume)==0)p->cant=p->cant-cant;}return 1;}

int cauta(arbore *radacina,char reteta[20],nodingr *ingr){ /* cautarea retetei in arbore si det pretului preparatului */float suma,pret;int cant,sw;nodsub *q;suma=0;sw=1;if(radacina==NULL) /* daca este vid cautarea este fara succes */return 0;else{if(strcmp(radacina->reteta,reteta)==0) /* daca s-a gasit se afis info */{for(q=radacina->prim;q;q=q->urm) /* se afis nume si cantitate */{printf("\tNume: %s\tcantitate: %d\n",q->nume,q->cant);

/* pretul total al ingredintelor */pret=pretul(ingr,q->nume);suma=suma+pret*q->cant;

/* verificarea contitatilor de pe stoc */cant=cantitate(ingr,q->nume);if(cantitate(ingr,q->nume)==0) /* daca nu s-a gasit ingr */sw=0;if(cant<q->cant) /* daca nu este de ajuns */sw=0;elsescade(ingr,q->cant,q->nume); /* se scade cantitatea care se utilizeaz*/}printf("\nPretul total al ingredientelor este: %2.f lei",suma);if(sw==0)printf("\nProdusul nu se poate preparat!\n");elseprintf("\nProdusul poate fi preparat!\n");}if(strcmp(radacina->reteta,reteta)<0)cauta(radacina->dr,reteta,ingr);else

Page 17: Dosar practica

if(strcmp(radacina->reteta,reteta)>0)cauta(radacina->st,reteta,ingr);}return 1;}

int eliberare(arbore *radacina,nodingr *ingr){ /* eliberarea unei comenzi */int c;char reteta[20]; /* pt retete */printf("\nIntroduceti numele retetei dorite: ");scanf("%s",reteta);c=cauta(radacina,reteta,ingr);if(c==0)printf("\nReteta nu a fost gasita!\n");return 1;}

int modif_pret(nodingr *ingr){ /* modificarea pretului din lista de ingrediente */nodingr *p;char nume[20];float pret;int sw=0;printf("\nIntroduceti numele ingredientului: ");scanf("%s",nume);for(p=ingr;p;p=p->urm){if(strcmp(p->nume,nume)==0){printf("\nPretul actual este: %f",p->pret);printf("\nIntroduceti noul pret: ");scanf("%f",&pret);p->pret=pret;sw=1;}}if(sw==1)printf("\nPretul a fost modificat!\n");elseprintf("\nIngredientul nu a fost gasit!\n");return 1;}

arbore *elimina_arbore(arbore *p,char reteta[20]){ /* stergerea unei retete introduse de la tastatura */arbore *q,*q1,*q2;if(p==NULL)printf("\nReteta introdusa nu a fost gasita!\n");elseif(strcmp(p->reteta,reteta)<0)p->dr=elimina_arbore(p->dr,reteta);elseif(strcmp(p->reteta,reteta)>0)p->st=elimina_arbore(p->st,reteta);else /* nodul a fost gasit */

Page 18: Dosar practica

if(p->st==NULL) /* nu are fiu st */{q=p->dr;free(p->reteta);free(p);return q;}elseif(p->dr==NULL) /* nu are fiu dr */{q=p->st;free(p->reteta);free(p);return q;}else{for (q1=q2=p;q1->st!=NULL;q2=q1,q1=q1->st);q2->st=q1->dr;q1->st=p->st;q1->dr=p->dr;free(p);return q1;}return p;}

int salvare_arb(FILE *f,arbore *radacina){ /* salvarea retetelor */nodsub *p;if(radacina!=NULL){salvare_arb(f,radacina->st);fprintf(f,"%s\n",radacina->reteta);for(p=radacina->prim;p;p=p->urm){fprintf(f,"%s\n",p->nume);fprintf(f,"%d\n",p->cant);}fprintf(f,"%s\n","*");salvare_arb(f,radacina->dr);}return 1;}

int salvare_lista(FILE *f,nodingr *ingr){ /* salvarea ingredientelor */nodingr *p;p=ingr;while(p->urm!=NULL){fprintf(f,"%s\n",p->nume);fprintf(f,"%d\n",p->cant);fprintf(f,"%s\n",p->unitm);fprintf(f,"%f\n",p->pret);fprintf(f,"%s\n",p->data);

Page 19: Dosar practica

fprintf(f,"%s\n","*");p=p->urm;}fprintf(f,"%s\n",p->nume);fprintf(f,"%d\n",p->cant);fprintf(f,"%s\n",p->unitm);fprintf(f,"%f\n",p->pret);fprintf(f,"%s\n",p->data);fprintf(f,"%s","*");return 1;}

int salvare(arbore *radacina,nodingr *ingr){ /* salvarea informatiior in fisiere */FILE *f,g;if((f=fopen("retete.txt","w"))==NULL){printf("eroare");exit(0);}salvare_arb(f,radacina);if((f=fopen("magazie.txt","w"))==NULL){printf("eroare");exit(0);}salvare_lista(f,ingr);fclose(f);return 1;}

int main(){int opt;nodingr *ingr; /* adresa listei de ingrediente */arbore *radacina; /* adresa arborelui */FILE *f,*g; /* f pt ratete; g pt ingrediente */float aux; /* variabila pt citirea nr reale */char *s; /* variabila pt citirea sirurilor de caractere */char c; /* variavila care ajuta la delimitarea retetelor (\n) */char reteta[20]; /* variabila pt retinerea retetei de sters */clrscr();ingr=NULL;radacina=NULL;radacina->prim=NULL;do{clrscr();if(radacina==NULL||ingr==NULL)printf("Fisierele nu au fost incarcate\n");elseprintf("Fisierele au fost incarcate\n");printf(" 1. Incarcare\n");printf(" 2. Afiseaza preparatele in ordine alfabetica\n");printf(" 3. Afiseaza ingredientele in ordine alfabetica\n");printf(" 4. Elimina ingrediente expirate\n");

Page 20: Dosar practica

printf(" 5. Introducerea unei noi retete\n");printf(" 6. Introducerea unui nou ingredient\n");printf(" 7. Eliberare comanda\n");printf(" 8. Modificare pret\n");printf(" 9. Stergerea unei retete\n");printf(" 10. Salvare\n");printf(" 0. Iesire\n");printf("\nAlegeti optiunea: ");scanf("%d",&opt);switch(opt){case 1: radacina=introduc(radacina); ingr=constr_lista(ingr);

break;

case 2: clrscr(); printf("Preparate disponibile:\n");

afisare(radacina); getch(); break;

case 3: clrscr(); printf("Ingrediente disponibile:\n\n");

parcurg_lista(ingr); getch(); break;

case 4: clrscr(); sterge_lista(ingr); parcurg_lista(ingr); getch(); break;

case 5: clrscr(); radacina=reteta_noua(radacina); printf("\n\nPreparate disponibile:\n"); afisare(radacina); getch(); break;

case 6: clrscr(); ingr=ingredient_nou(ingr); printf("\n\nIngrediente disponibile:\n\n"); parcurg_lista(ingr); getch(); /* data este de forma (YYYY.MM.DD) */ break;

case 7: clrscr(); eliberare(radacina,ingr);

getch(); break;

case 8: clrscr(); modif_pret(ingr); getch();

Page 21: Dosar practica

break;

case 9: clrscr(); printf("Introduceti denumirea retetei care trebuie stersa :");

scanf("%s",reteta); radacina=elimina_arbore(radacina,reteta); printf("\nCerinta s-a realizat cu succes!\n"); getch(); break;

case 10:clrscr(); salvare(radacina,ingr); printf("Salvare realizata cu succes!\n"); getch(); break;

case 0: break;

default: printf("Tastare gresita!");}}while(opt!=0);return;}