Structuri de date
GESTIUNE LIBRARIE DIGITALA
1. INTRODUCERE
1.1 Obiectivul problemei :
Aceasta aplicatie informatica are ca obiectiv gestionarea cat mai buna a unei librarii digitale. Cu ajutorul ei vom avea acces la cartile care sunt in stoc, la introducerea in stoc de carti noi, la vizualizarea facturilor dintr-o data exacta , spre exemplu.
1.2 Necesitatea :
Aceasta aplicatie urmareste desfasurarea intregului flux economic in cazul comertului cu carti. Necesitatea apare atunci cand dorim o centralizare a datelor , cu scopul de reducere a personalului, a timpului , dar si de a oferi o situatie imediata , clara asupra activitatii economice. Si anume ne creeaza un tablou coerent al necesarului de carti (cand luam decizia de a aproviziona), al incasarilor primite (cand contabilitatea cere o situatie), al urmaririi evolutiei firmei ( cand decidem sa pastram afacerea sau nu), dar nu in ultimul rand ne ajuta si in relationarea cu clientul (oferindu-i un raspuns prompt in legatura cu cartile disponibile)
1.3 Mijloace de realizare :
Aplicatia a fost realizata in Microsoft Visual Studio 2005 Edition.
Pentru accesarea aplicatiei, am realizat un meniu ce contine 6 optiuni si avem:
1.Cumpara carte ( prin acest mod se face adaugarea de carti in stoc)
2.Vinde carte (cartea este vanduta, se scade din stoc)
3.Vizualizeaza carti vandute (evidenta asupra stocului)
4.Vizualizeaza carti nevandute
5.Vizualizeaza facturi ( evidenta incasarilor)
6.Iesire program
Datele de intrare se introduc de la tastaura, caracteristica a programului ce apartine optiunilor 1, 2 si 5.
2. DESCRIEREA PROBLEMEI
Gasirea structurii optime de date pentru a construi o aplicatie de gestionare a unei librarii digitale , urmarindu-se: informatiile despre cartile care sunt in stoc, cartile care ies din stoc, un mod de vizualizare a stocului (acesta fiind disponibil pentru : carti vandute si carti nevandute), informatiile despre facturi ( aici urmarindu-se in special elaborarea unui mod cat mai rapid de a gasi o factura dintr-o perioada anterioara).
3. SOLUTIE ALGORITM FOLOSIT
Am abordat ca si solutie, creerea a doua clase:
1.Clasa Carte ce va contine: functia carte, aceasta va da caracteristicile cartii: nume, autor si pret; mai contine si functii de tip get, set , ce ne vor da acesul in a seta caracteristicile functiei carte dar ne va arata si starea unei carti : vanduta sau nevanduta.
2.Clasa Factura contine: functia factura ce va avea ca argumente: numar, numecarte si data; functii de tipul get , set pentru a avea acces la aceste caracteristici.
Fisierele sunt folosite pentru retinerea instantelor celor doua clase.
4. DESCRIEREA PROGRAMULUI
Pentru rezolvarea aplicatiei am folosit urmatoarele tipuri de structuri si anume :
clase
fisiere
masiv unidimensional memorat static
1 ) Clasa - constituie un ansamblu de obiecte similare (aceeasi structura a datelor actionate de aceleasi metode). Tipul abstract de date, definit de utilizator printr-o clasa, se comporta ca un tip predefinit. Un obiect reprezinta un element (instantiere) al clasei respective. Pentru a crea un obiect in C++ trebuie definita forma sa generala (natura sa) folosind cuvantul cheie class. Clasa o putem interpreta ca o abstractizare logica, iar obiectul clasei respective, ca o existenta fizica. Compilatorul ascunde detaliile interne ale acestui tip de date fata de mediu extern (ascunderea informatiei). In mod implicit, datele si functiile declarate intr-o clasa devin proprii clasei respective. De aceea, ele se vor numi date membru, respectiv functii membru (metode) ale acelei clase.
Definire clasa : class Carte
Fisierul - este o colectie ordonata de articole (inregistrari) pastrate pe un suport extern de memorie si identificate printr-un nume.
Pentru fisierul standard de intrare , datele sunt introduse de la tastatura.
Pentru fisierul standard de iesire , rezultatele sunt afisate pe terminalul standard de iesire.
Fisierul are un articol care marcheaza sfarsitul fisierului. Pentru fisierul standard de intrare de la tastatura, sfarsitul de fisier, pentru sistemele de operare DOS si Windows se genereaza prin Ctrl-Z.
Vom realiza urmatoarele operatii:
1.Deschiderea fisierului:
FILE* fCarti = NULL;
fCarti = fopen('carti.dat','ab');
if(fCarti == NULL)
Carte(char* nume, char* autor, int pret)
if(strlen(autor) <30)
this->pret = pret;
}
void SetNume(char* nume)
}
void SetAutor(char *autor)
{
if(autor)
}
void SetPret(int pret)
char* GetNume()
char* GetAutor()
int GetPret()
void SetVanduta()
bool GetVanduta()
private
char Nume[30];
char Autor[30];
int pret;
bool vanduta;
//clasa care contine informatii dspre o factura
//contine functii de tipul get si set
class Factura
Factura(int numar, char* numecarte, tm data)
this->data = data;
}
void SetNumar(int numar)
void SetNumeCarte(char* nume)
}
void SetData(tm data)
tm GetData()
int GetNumar()
char* GetNumeCarte()
private
int numar;
char numecarte[30];
tm data;
void CumparaCarte(void)
//citim pe rand informatiile despre o carte
Carte c;
char Temp[40];
system('cls');
cout<<'Numele cartii este: ';
cin.get(Temp, 30);
c.SetNume(Temp);
cin.get();
cout<<'Numele autorului este: ';
cin.get(Temp, 30);
c.SetAutor(Temp);
cin.get();
cout<<'Pretul este: ';
cin.get(Temp, 30);
c.SetPret(atoi(Temp));
cin.get();
//scriem in fisier articolul
fwrite((void*)&c, sizeof(Carte), 1, fCarti);
//inchidem fisierul
fclose(fCarti);
void VizualizeazaCartiVandute()
bool amgasituna = false;
//curatam ecranul
system('cls');
//pozitionam cursorul la inceputul fisierului
fseek(fCarti, 0,SEEK_SET);
Carte *c = new Carte();
//citim toate articolele
while(fread((void*)c, sizeof(Carte), 1, fCarti) == 1)
}
//daca nu am gasit nici o carte, dam u mesaj corespunzator
if(amgasituna == false)
void VizualizeazaCartiNevandute()
bool amgasituna = false;
system('cls');
fseek(fCarti, 0,SEEK_SET);
Carte *c = new Carte();
while(fread((void*)c, sizeof(Carte), 1, fCarti) == 1)
}
if(amgasituna == false)
void VindeCarte()
system('cls');
char Temp[40];
cout<<'Care este numele cartii pe care doriti sa o vindeti?'<<endl;
cin.get(Temp, 30);
cin.get();
Carte *c = new Carte();
bool amgasit = false;
int pos = 0;
//trecem prin toate cartile
while(fread((void*)c, sizeof(Carte), 1, fCarti) == 1)
fseek(fFacturi, 0,SEEK_SET);
int ultimulnumar = 0;
Factura * fact = new Factura();
while(fread((void*)fact, sizeof(Factura), 1, fFacturi) == 1)
//incrementam ultimul numar gasit si il setam facturii curente
f.SetNumar(++ultimulnumar);
//salvam factura
fwrite((void*)&f, sizeof(Factura), 1, fFacturi);
fclose(fFacturi);
//salvam cartea cu informatiile modificate (s-a modificat campul care arata ca s-a vandut)
fseek(fCarti, sizeof(Carte) * pos ,SEEK_SET);
fwrite((void*)c, sizeof(Carte), 1, fCarti);
fclose(fCarti);
break;
}
pos++;
}
if(amgasit == true)
else
_getch();
void VizualizeazaFacturi()
bool amgasituna = false;
Factura * fact = new Factura();
//trcem prin toate facturile
while(fread((void*)fact, sizeof(Factura), 1, fFacturi) == 1)
}
if(amgasituna == false)
void main(void)
fclose(fFacturi);
char alegere = ;
while(alegere != )
if(alegere == )
if(alegere == )
if(alegere == )
if(alegere == )
}
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |