Cerinele programului ntr-un magazin exist un raion care comercializeaz jocuri pe calculator. Jocurile sunt pstrate ntr-un fiier sub forma: Productor, titlu_joc, categorie, pre, stoc
S se scrie un program care efectueaz urmatoarele operaii: ncarc datele din fiierul cu jocuri ntr-o structur de list cu subliste. Afieaz lista de producatori in ordine alfabetica. Afieaz lista de jocuri de la un producator in ordine alfabetica. Afieaz toate jocurile aparinnd unei categorii citite de la tastatur. Modific/adaug un joc in list. Calculeaz valoarea stocului. Caut joc dup titlu i afieaz informaii. Salvarea n fiier a informaiilor din lista cu subliste
Documentaia tehnic a aplicaiei Implementarea bazei de date care conine datele despre jocurile disponibile n magazin,aflate in raion, se va face utilizand structura de date lista cu subliste.
Codul in Dev C: #include <stdio.h> #include <stdlib.h> #include <string.h>
while(1) { printf("Luca Gabriela Ecaterina-Tema Nr.6"); printf("\n"); printf("\n1) Incarca datele din fisierul cu jocuri intr-o structura de lista cu subliste"); printf("\n2) Afiseaza lista de producatori in ordine alfabetica"); printf("\n3) Afiseaza lista de jocuri de la un producator in ordine alfabetica"); printf("\n4) Afiseaza toate jocurile apartinnd unei categorii citite de la tastatura"); printf("\n5) Modifica/adauga un joc in lista"); printf("\n6) Calculeaza valoarea stocului"); printf("\n7) Cauta joc dupa titlu, si afiseaza informatiile despre joc"); printf("\n8) Salvarea in fisier a informatiilor din lista cu subliste"); printf("\n9) Sfarsit program");
printf("\n\nOptiunea: "); scanf("%d", &opt);
switch(opt) { case 1: citesteDate(fisier, &prod); printf("\nDate citite cu succes!\n"); break; case 2: for(i = prod; i != NULL; i = i -> next) { afiseazaProducator(i); for(j = i -> jocuri; j != NULL; j = j -> next) { afiseazaJoc(j); } } break; case 3: printf("\nNumele producatorului: "); scanf("%s", nume); if(cautaProducator(prod, nume) != NULL) { for(i = prod; i != NULL; i = i -> next) { if(strcmp(i -> nume, nume) == 0) { for(j = i -> jocuri; j != NULL; j = j - > next) { afiseazaJoc(j); } break; } } } else { printf("\nProducatorul %s nu exista!\n", nume); } break; case 4: printf("\nCategoria: "); scanf("%s", nume); cat = 0; for(i = prod; i != NULL; i = i -> next) { for(j = i -> jocuri; j != NULL; j = j -> next) { if(strcmp(nume, j -> categorie) == 0) { afiseazaJoc(j); cat = 1; } } } if(!cat) { printf("\nNu exista jocuri din categoria %s!\n", nume); } break; case 5: val = 0; printf("\nTitlul jocului: "); scanf("%s", titlu); for(i = prod; i != NULL; i = i -> next) { if((aux3 = cautaJoc(i -> jocuri, titlu)) != NULL) { printf("\nDati noul titlu: "); scanf("%s", titlu); printf("Noua categorie: "); scanf("%s", categorie); printf("Noul pret: "); scanf("%d", &pret); printf("Noul stoc: "); scanf("%d", &stoc);
joc *cautaJoc(joc *jocuri, char *nume) { joc *i; for(i = jocuri; i != NULL; i = i -> next) { if(strcmp(nume, i -> titlu) == 0) { return i; } } return NULL; }
Probleme ntmpinate i modul lor de rezolvare Problema fundamental aprut n cadrul aplicaiei a fost eficientizarea alocrii memoriei pentru o derulare cat mai fluent a programului. S-a rezolvat prin alocarea dinamic a memoriei dup fiecare funcie i totodat eliberarea memoriei cu ajutorul funciei free().
Anex
Importarea datelor utilizate n execuia programului s-a facut din fisierul "jocuri.txt", salvat in acelasi director cu codul sursa al programului.
Concluzii
Programul a fost redactat n Dev C i salvat cu numele sda_project_6.C Programul principal conine un meniu interactiv prin care utilizatorul alege opiunea pe care o dorete. Acest meniu e implementat cu ajutorul instruciunii switch case. Funciile definite de programator sunt denumite sugestiv. Eventualele comentarii n codul surs sunt exprimate cu ajutorul // sau cu ajutorul /* */ Este un program complex, cu foarte multe funcii definite de programator. Din punctul de vedere al gestionrii memorie, este eficient folosindu-se cu success alocarea dinamic, iar dup uitlizare memoria s-a eliberat cu ajutorul funciei free(). Programul interacioneaz cu uilizatorul dndu-i astfel ansa optrii pentru una din variantele puse la dispoziie.
Bibliografie Laboratoarele i cursurile de SDA din timpul semestrului II.