Gestione Libreria con MongoDB
Descrizione del Progetto
In questo progetto, realizzerai un sistema di gestione di una libreria utilizzando C++ e MongoDB. Il programma supporterà l’aggiunta, la visualizzazione, la modifica e la cancellazione di libri nel database.
Requisiti
- Librerie C++: Utilizzare le librerie standard di C++ e la libreria MongoDB C++ Driver.
- Interfaccia Utente: Creare una semplice interfaccia utente a riga di comando che permetta all’utente di interagire con il sistema.
FunzionalitĂ
- Aggiungere un Libro: Chiedere all’utente di inserire i dettagli di un libro e aggiungerlo al database.
- Visualizzare i Libri: Visualizzare l’elenco di tutti i libri nel database.
- Modificare un Libro: Chiedere all’utente di inserire l’ID di un libro e i nuovi dettagli per modificare il libro nel database.
- Cancellare un Libro: Chiedere all’utente di inserire l’ID di un libro per cancellarlo dal database.
Esempio di Codice
#include <iostream>#include <mongocxx/client.hpp>#include <mongocxx/instance.hpp>#include <mongocxx/uri.hpp>#include <bsoncxx/json.hpp>#include <bsoncxx/builder/stream/document.hpp>
using bsoncxx::builder::stream::document;using bsoncxx::builder::stream::finalize;
void aggiungi_libro(mongocxx::collection& collection) { std::string titolo, autore; int anno;
std::cout << "Inserisci il titolo del libro: "; std::getline(std::cin, titolo); std::cout << "Inserisci l'autore del libro: "; std::getline(std::cin, autore); std::cout << "Inserisci l'anno di pubblicazione: "; std::cin >> anno; std::cin.ignore(); // Ignores the newline character left in the input buffer
document doc{}; doc << "titolo" << titolo << "autore" << autore << "anno" << anno;
collection.insert_one(doc.view()); std::cout << "Libro aggiunto con successo!" << std::endl;}
void visualizza_libri(mongocxx::collection& collection) { auto cursor = collection.find({}); for (auto&& doc : cursor) { std::cout << bsoncxx::to_json(doc) << std::endl; }}
void modifica_libro(mongocxx::collection& collection) { std::string id, nuovo_titolo, nuovo_autore; int nuovo_anno;
std::cout << "Inserisci l'ID del libro da modificare: "; std::getline(std::cin, id); std::cout << "Inserisci il nuovo titolo del libro: "; std::getline(std::cin, nuovo_titolo); std::cout << "Inserisci il nuovo autore del libro: "; std::getline(std::cin, nuovo_autore); std::cout << "Inserisci il nuovo anno di pubblicazione: "; std::cin >> nuovo_anno; std::cin.ignore(); // Ignores the newline character left in the input buffer
bsoncxx::oid oid(id); document filter_doc{}; filter_doc << "_id" << oid;
document update_doc{}; update_doc << "$set" << open_document << "titolo" << nuovo_titolo << "autore" << nuovo_autore << "anno" << nuovo_anno << close_document;
collection.update_one(filter_doc.view(), update_doc.view()); std::cout << "Libro modificato con successo!" << std::endl;}
void cancella_libro(mongocxx::collection& collection) { std::string id; std::cout << "Inserisci l'ID del libro da cancellare: "; std::getline(std::cin, id);
bsoncxx::oid oid(id); document doc{}; doc << "_id" << oid;
collection.delete_one(doc.view()); std::cout << "Libro cancellato con successo!" << std::endl;}
int main() { mongocxx::instance instance{}; mongocxx::client client{mongocxx::uri{}}; auto db = client["libreria"]; auto collection = db["libri"];
int scelta;
do { std::cout << "\nGestione Libreria\n"; std::cout << "1. Aggiungi Libro\n"; std::cout << "2. Visualizza Libri\n"; std::cout << "3. Modifica Libro\n"; std::cout << "4. Cancella Libro\n"; std::cout << "5. Esci\n"; std::cout << "Scegli un'opzione: "; std::cin >> scelta; std::cin.ignore(); // Ignores the newline character left in the input buffer
switch (scelta) { case 1: aggiungi_libro(collection); break; case 2: visualizza_libri(collection); break; case 3: modifica_libro(collection); break; case 4: cancella_libro(collection); break; case 5: std::cout << "Uscita..." << std::endl; break; default: std::cout << "Opzione non valida." << std::endl; } } while (scelta != 5);
return 0;}
Istruzioni per l’Esecuzione
-
Installa MongoDB C++ Driver: Segui le istruzioni ufficiali per installare il driver C++ di MongoDB: MongoDB C++ Driver Installation
-
Salva il codice in un file: Ad esempio
gestione_libreria.cpp
. -
Compila il programma: Assicurati di includere le librerie necessarie durante la compilazione.
Terminal window g++ -o gestione_libreria gestione_libreria.cpp -lmongocxx -lbsoncxx -
Esegui il programma:
Terminal window ./gestione_libreria -
Interazione con l’utente:
- Segui le opzioni nel menu per aggiungere, visualizzare, modificare o cancellare libri nel database.
Estensioni Possibili
- Interfaccia Grafica: Utilizzare una libreria come Qt per creare un’interfaccia grafica per la gestione della libreria.
- Validazione degli Input: Aggiungere funzionalità per validare gli input dell’utente.
- Ricerca di Libri: Implementare una funzione per cercare libri per titolo, autore o anno.
- Storico delle Operazioni: Mantenere uno storico delle operazioni eseguite durante la sessione.
- Gestione Utenti: Aggiungere funzionalitĂ per la gestione degli utenti, con autenticazione e autorizzazione.