Questa repository è stata realizzata per lo sviluppo del progetto di Programmazione a Oggetti.
Applicazione Qt per la gestione di artisti e dei loro prodotti multimediali, come:
- Album
- Singoli
- CD
- Vinili
- T-shirt
- Tour
Ogni prodotto è collegato a un artista e viene salvato in formato JSON o XML. I dati includono descrizioni, tracce, disponibilità, immagini locali o codificate in Base64.
Funzionalità principali:
- Visualizzazione con Visitor pattern
- Inserimento/modifica/eliminazione oggetti tramite dialog
- Filtri per tipo, genere, artista, disponibilità
- Salvataggio automatico opzionale
- Import/export JSON e XML
- Esportazione ridotta
- Validazione XML tramite XSD
- Qt 6.5+ (
core,gui,widgets,xml) xmllintcon supporto--schemaper validazione XML
Linux:
sudo apt install libxml2-utilsmacOS:
brew install libxml2Oltre allo script Bash (installer.sh), è incluso anche uno script PowerShell (installer.ps1) per l’installazione su Windows. Tuttavia, l’installer per Windows potrebbe fallire la compilazione a causa di un bug noto nel compilatore g++ 11.2.0 incluso in alcune distribuzioni di Qt. Il bug si manifesta come errore interno (internal compiler error) durante la compilazione di qfloat16.h, un header usato internamente da Qt.
Lo script installer.ps1 è comunque corretto e completo: verifica xmllint, genera correttamente il file .pro, compila e avvia l’applicazione. Su ambienti Windows privi di questo bug, lo script funziona correttamente.
- Compilare con
installer.shsu Linux/macOS (o WSL) - Compilare manualmente in ambiente Qt Command Prompt
- Evitare temporaneamente il tipo
qfloat16disabilitando le macro, se si modifica il progetto
- Aprire il Qt Command Prompt (incluso con l’installazione di Qt)
- Generare i Makefile:
qmake oop_project.pro -r
- Compilare:
mingw32-make
- Avviare:
.\oop_project.exe
Clona il repository:
git clone <url-repository>
cd oop_projectEsegui lo script installer.sh:
./installer.sh [path_qmake]path_qmakeè opzionale. Se omesso, verrà cercato in$PATH.
Lo script:
- Verifica
xmllinte supporto--schema - Pulisce e rigenera
.pro,Makefile,build/ - Compila il progetto
- Esegue l'applicazione
All'avvio del binario ./oop_project (o oop_project.exe su Windows), viene mostrato un menu testuale con tre opzioni:
-
Test import/export
Esegue salvataggio e caricamento di file JSON e XML per verificarne la correttezza. -
Modalità CLI
Interfaccia testuale per operazioni su artisti e prodotti. -
GUI Qt
Avvia l'interfaccia grafica principale per gestione completa via menù, form, e visualizzazione dettagliata.
Artista
├── contiene una mappa di:
│ └── ArtistProduct (abstract)
│ ├── Musica (abstract)
│ │ ├── Album
│ │ │ └── std::vector<Traccia>
│ │ └── Singolo
│ │ └── Traccia
│ └── NotMusica (abstract)
│ ├── Merch (abstract)
│ │ ├── TShirt
│ │ └── Disco (abstract)
│ │ ├── CD
│ │ └── Vinile
│ └── Tour
│ └── std::vector<DataTour>
│
├── Altre classi di supporto:
├── Traccia
│ ├── std::string nome
│ └── std::vector<std::string> partecipanti
├── DataTour
│ ├── Data data
│ ├── Orario orario
│ └── std::string luogo
├── Data
│ └── giorno, mese, anno
├── Orario
│ └── ore, minuti, secondi
└── Durata
└── ore, minuti, secondi