Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@cosminpopescu14
Created July 30, 2018 05:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cosminpopescu14/98d137fa22478ecceaf0adad3aa15cdb to your computer and use it in GitHub Desktop.
Save cosminpopescu14/98d137fa22478ecceaf0adad3aa15cdb to your computer and use it in GitHub Desktop.
// ConsoleApplication12.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
struct Carte {
int id;
string autor;
string nume;
int anPublicatie;
bool esteImprumutata;
};
char citesteOptiune() {
char op;
cout << "Introduceti optiunea: " << endl;
cout << "A - Adaugare carte" << endl;
cout << "L - Listarea tuturor cartilor din biblioteca" << endl;
cout << "E - Elimina carte" << endl;
cout << "I - Imprumutul unei carti de o persoana" << endl;
cout << "C - Listare informatii despre carte" << endl;
cout << "P - Listare informatii despre persoana" << endl;
cin >> op;
return op;
}
int cautaCarte(Carte* biblioteca[]) {
for (int i = 0; i<10; i++) {
if (biblioteca[i] == NULL) {
return i;
}
}
return -1;
}
Carte* citesteDetaliiCarteNoua() {
Carte* rezultat = new Carte;
rezultat->esteImprumutata = false;
cout << "Cod identificare: " << endl;
cin >> rezultat->id;
cout << "Autor: " << endl;
cin >> rezultat->autor;
cout << "Nume: " << endl;
cin >> rezultat->nume;
cout << "An publicatie: " << endl;
cin >> rezultat->anPublicatie;
return rezultat;
}
void adaugaCarte(Carte* biblioteca[]) {
int nume = cautaCarte(biblioteca);
if (nume == -1) {
cout << "Carte imprumutata" << endl;
return;
}
biblioteca[nume] = citesteDetaliiCarteNoua();
}
void listareInformatiiCarte(Carte* m) {
if (m->id == 0 || m->nume == "" )
{
cout << "Carte nu este in biblioteca" << endl;
return;
}
cout << "Cod identificare: " << m->id << endl;
cout << "Autor: " << m->autor << endl;
cout << "Nume: " << m->nume << endl;
cout << "An publicatie: " << m->anPublicatie << endl;
cout << "Imprumutata: " << (m->esteImprumutata ? "DA" : "NU") << endl;
}
int citesteId() {
int rez;
cout << "Introduceti id-ul cartii: ";
cin >> rez;
return rez;
}
int cautaCarteaCuIdul(int id, Carte* biblioteca[]) {
for (int i = 0; i<10; i++) {
if (biblioteca[i] != NULL && biblioteca[i]->id == id) {
return i;
}
}
return -1;
}
void eliminaCarte(Carte* biblioteca[]) {
int id = citesteId();
int nume = cautaCarteaCuIdul(id, biblioteca);
if (nume == -1) {
cout << "Cartea cautata nu exista" << endl;
return;
}
delete biblioteca[nume];
biblioteca[nume] = NULL;
}
void interpreteazaOptiune(char op, Carte* biblioteca[]) {
switch (op) {
case 'A': adaugaCarte(biblioteca); break;
case 'L': cout << "Listarea tuturor cartilor din biblioteca" << endl; break;
case 'E': eliminaCarte(biblioteca); break;
case 'I': cout << "Imprumutul unei carti de o persoana" << endl; break;
case 'C': listareInformatiiCarte((Carte*)biblioteca); break;
case 'P': cout << "Listare informatii despre persoana" << endl; break;
case 'Q': cout << "Inchide aplicatia" << endl; break;
default: cout << "Optiune invalida" << endl;
}
}
int main() {
char op;
Carte* biblioteca[10];
for (int i = 0; i<10; i++) {
biblioteca[i] = NULL;
}
do {
op = citesteOptiune();
interpreteazaOptiune(op, biblioteca);
} while (op != 'Q');
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment