Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » scoala » informatica » retele calculatoare
Gestiune librarie digitala

Gestiune librarie digitala


ACADEMIA DE STUDII ECONOMICE

FACULTATEA DE CIBERNETICa, STATISTICa si INFORMATICA ECONOMICA

Structuri de date

PROIECT

GESTIUNE LIBRARIE DIGITALA

CUPRINS



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


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.