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

Applicazione per la creazione di un itinerario gastronomico personalizzato #127

Closed lorenzoGrivet closed 2 months ago

lorenzoGrivet commented 2 months ago

Studente proponente

s296483 Grivet Talocia Lorenzo

Titolo della proposta

Applicazione per la creazione di un itinerario gastronomico personalizzato

Descrizione del problema proposto

L'applicazione permette di generare automaticamente un percorso gastronomico personalizzato all'interno di una città desiderata, elaborato rispettando i vincoli scelti dall'utente, in modo da massimizzare l'indicatore di qualità dei ristoranti. L'utente potrà infatti, per ogni città scelta, selezionare le proprie preferenze di tipologia di cucina, prezzo e numero di recensioni. Il programma offre inoltre altre funzionalità come la ricerca dei migliori ristoranti che offrono un particolare tipo di cucina oppure di uno specifico ristorante che potrà essere inserito nel proprio percorso.

Descrizione della rilevanza gestionale del problema

Il programma che si vuole implementare si sviluppa intorno alla creazione di una sequenza di ristoranti che sia la migliore possibile per l'utente che lo utilizza. Il servizio quindi fornito dall'applicazione, che utilizza come sorgente dati un estratto delle informazioni presenti sulla nota piattaforma di viaggi TripAdvisor, aggiunge una funzionalità che ora il sito non offre.

Descrizione dei data-set per la valutazione

Il dataset utilizzato è stato ottenuto raccogliendo le informazioni dal sito www.tripadvisor.com. I dati riguardano più di 125000 ristoranti oltre ad informazioni sulla città, tipo di cucina, rating, recensioni e fascia di prezzo. Il dataset è disponibile all'indirizzo (sono state apportate alcune modifiche): www.kaggle.com/datasets/damienbeneschi/krakow-ta-restaurans-data-raw

Descrizione preliminare degli algoritmi coinvolti

La prima parte dell'applicazione sfrutta semplici interrogazioni del database mediante query SQL mentre la seconda utilizza algoritmi più complessi. Il programma costruisce un grafo, servendosi del pacchetto Python NetworkX, ed esegue un algoritmo ricorsivo per la ricerca della soluzione ottima richiesta dall'utente.

Descrizione preliminare delle funzionalità previste per l’applicazione software

All'apertura del programma l'interfaccia grafica presenta due schede. L'utente può selezionare una città e una fascia di prezzo all'interno di due menù a tendina. Una volta selezionati si compileranno automaticamente i due campi di testo riguardanti il minimo e il massimo rating dei ristoranti che rientrano nelle scelte dell'utente. I due valori sono comunque modificabili dall'utente per restringere l'ampiezza dell'intervallo (se è inserito un valore fuori dal range consentito il programma restituirà un messaggio di errore). E' successivamente possibile selezionare una tipologia di cucina da un altro menu a tendina che si è popolato con le precedenti selezioni. Alla pressione del bottone il programma mostra la lista dei ristoranti che soddisfano tutte le richieste. Nella sezione sottostante è possibile stampare a video i dettagli di uno dei ristoranti tra quelli appena restituiti, selezionandolo tramite un menu che si aggiorna ogni volta che l'utente modifica i parametri di ricerca iniziali. E' quindi possibile aggiungere questo ristorante ad una "lista personale", modificabile eliminando uno o tutti i suoi componenti tramite degli appositi bottoni. La seconda sezione è dedicata alla ricerca del miglior percorso gastronomico: l'utente può modificare la città scelta (svuotando quindi la propria lista) e inserire ulteriori vincoli come il numero di giorni del suo soggiorno o le tipologie di cucina che vuole siano presenti nel percorso. Il programma mostra l'elenco dei ristoranti suggeriti, uno per giorno, che abbiano i rating migliori.

JosephAv commented 2 months ago

ecco la tua repo https://github.com/TdP-prove-finali/GrivetLorenzo.git