TdP-prove-finali / Introduzione

Istruzioni e documentazione per la proposta e lo svolgimento delle prove finali relative al corso di Tecniche di Programmazione.
http://bit.ly/tecn-progr
Apache License 2.0
4 stars 13 forks source link

Sviluppo di un software per ottimizzare l'acquisto di libri su Amazon #96

Closed DavideFaudella00 closed 1 year ago

DavideFaudella00 commented 1 year ago

Studente proponente

s273255 Faudella Davide

Titolo della proposta

Sviluppo di un software per ottimizzare l'acquisto di libri su Amazon

Descrizione del problema proposto

L’obbiettivo del software è quello di permettere all’utente di generare automaticamente una lista di libri da comprare su Amazon, elaborata rispettando dei vincoli selezionabili tramite un'interfaccia grafica. Alcuni dei vincoli che determineranno la scelta dei libri da inserire nella lista saranno il budget disponibile per l'acquisto, il genere, il rating dei libri, il numero di recensioni e altri che verranno mostrati in seguito. Un'altra funzione sarà quella di una ricerca di libri tramite autore (o anno in cui il libro è stato in top 100) che potranno essere aggiunti a una lista “Libri da leggere” (lista esterna a quella precedente e che ha come funzione quella di tener traccia dei libri da leggere in un secondo momento).

Descrizione della rilevanza gestionale del problema

Il problema è rilevante da un punto di vista gestionale, in quanto si tratta di un problema di ottimizzazione. Il software infatti si focalizza su una gestione ottimale delle finanze. Utilizzeremo un data-set contenente i dati dei bestseller di Amazon dal 2009 al 2021, tramite questi dati pianificheremo al meglio la nostra scelta nel comprare un insieme di libri. Grazie al vincolo di budget, infatti, potremo selezionare la cifra a nostra disposizione e il software genererà la lista di libri che più si avvicina alle nostre finanze, ovviamente tenendo conto di eventuali preferenze inserite dell'utente. L'utente potrebbe volere un rating medio dei libri nella lista di almeno 4.3 stelle, oppure solo libri con copertina rigida, di genere fiction, con minimo 1000 recensioni e che sono stati in top 100 tra il 2010 e il 2012. Vi sarà inoltre la possibilità di aggiungere manualmente un libro nella lista, l'algoritmo si occuperà poi di riempirla sempre seguendo i parametri selezionati. Al termine della generazione, oltre alla lista di libri, verranno mostrati i dati riguardanti il numero di libri presenti nella lista, il costo totale da sostenere e il bestseller della lista. Un processo del genere richiede tempo ma grazie a questo software il risultato sarà solamente a qualche click di distanza, ottimizzato e automatizzato.

Descrizione dei data-set per la valutazione

Il software utilizzerà un data-set proveniente dalla piattaforma Kaggle e contenente i top 100 bestseller su Amazon negli anni 2009-2021 [https://www.kaggle.com/datasets/abdulhamidadavize/top-100-best-selling-books-on-amazon-20092021] Questo database verrà pulito e adattato in quanto presenta alcune righe errate, verrà poi convertito per essere importato su HeidiSQL Il database è costituito da più di 1000 libri, con caratteristiche rappresentate nelle 10 colonne:

Descrizione preliminare degli algoritmi coinvolti

Il software sarà realizzato in linguaggio Java, le interfacce grafiche in JavaFx e i pattern utilizzati saranno MVC e DAO. Il software lavorerà con algoritmi ricorsivi, il cui compito sarà quello di estrarre dalle innumerevoli combinazioni possibili quella ottimale, definita tramite parametri definiti dall'utente. I vincoli potranno essere singoli oppure combinati, avendo così un algoritmo più complesso da gestire. Per esempio potremmo voler mantenere un certo livello di rating medio, ovviamente rimanendo nel budget e al contempo rispettando genere, intervallo di anni, tipo di copertina, numero di recensioni e ranking selezionati dall'utente. La ricerca dei libri e in seguito l'eventuale aggiunta alla lista "Libri da leggere" o alla lista per la ricorsione sarà invece effettuata tramite un algoritmo di ricerca e interrogazioni Sql al database.

Descrizione preliminare delle funzionalità previste per l’applicazione software

All'apertura del programma l'utente avrà a disposizione la funzione di ricerca dei libri, come in una biblioteca. Tramite una comboBox potrà selezionare un autore (o un range di anni), e confermando la scelta, verrà popolata una text area con tutti i libri scritti dall'autore (o usciti negli anni selezionati). A questo punto un'altra comboBox si popolerà con i titoli dei libri, e selezionandoli potranno essere aggiunti alla lista "Libri da leggere". Presente anche un metodo per rimuovere un libro dalla lista o cancellarla interamente.

In un'altra sezione del programma invece sarà presente la parte della generazione automatica della lista di libri. Qui saranno disponibili diversi controlli per tutti i parametri (budget, genere, rating medio, tipo di copertina, numero recensioni minime e anno) seguiti da un pulsante “conferma” che farà partire la ricorsione. Prima di ciò però potrà essere aggiunto manualmente un libro alla lista, che sarà presente anche nel caso in cui esso non rispetti alcun vincolo. Al termine l'utente avrà davanti a sé una lista di libri, il numero di libri, il totale in euro e il bestseller.

fulcorno commented 1 year ago

Il problema è ben definito sia dal punto di vista algoritmico che applicativo. La proposta è accettata.