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

Gestione Negozi di Biciclette: Analisi e Simulazione #111

Closed MLorenzo01 closed 11 months ago

MLorenzo01 commented 1 year ago

Studente proponente

s282973 Mannino Lorenzo

Titolo della proposta

Gestione Negozi di Biciclette: Analisi e Simulazione

Descrizione del problema proposto

L'applicazione è stata sviluppata per condurre un'analisi approfondita dei dati accumulati da una serie di negozi nel corso degli anni, con l'obiettivo di ottimizzare la gestione aziendale. Tale analisi rivela con precisione quali prodotti, punti vendita e membri del personale contribuiscano maggiormente ai profitti, permettendo decisioni mirate e promozioni strategiche. Inoltre, l'ottimizzazione degli approvvigionamenti in base alle esigenze specifiche non solo riduce i costi ma garantisce una fornitura ininterrotta di prodotti di alta qualità. La simulazione, basata su dati triennali, offre una panoramica completa e affidabile del comportamento del mercato su base mensile. Ciò permette un'ottimizzazione precisa delle scorte, evitando sprechi e garantendo che gli scaffali dei negozi siano sempre ben forniti con i prodotti richiesti. Inoltre, attraverso la simulazione è possibile calcolare il numero di clienti insoddisfatti, consentendo l'adeguamento dei parametri input per identificare la combinazione ideale che minimizza le scorte e massimizza la soddisfazione del cliente. In definitiva, questa applicazione rappresenta un elemento chiave per l'ottimizzazione delle operazioni aziendali e il successo duraturo in un mercato competitivo.

Descrizione della rilevanza gestionale del problema

Dal punto di vista gestionale, l'analisi dei dati storici svela dinamiche aziendali fondamentali. L'identificazione dei prodotti ad alto rendimento permette di concentrare le risorse e le strategie di vendita per massimizzare i profitti complessivi. Inoltre, individuare i marchi di successo favorisce relazioni solide con i fornitori, potenziando la negoziazione e gli ordini, con conseguenti profitti stabili e una catena di approvvigionamento più efficiente. La valutazione delle performance dei dipendenti e dei negozi riconosce il talento interno, motivando l'incremento delle prestazioni. Allo stesso tempo, rileva le aree necessitanti investimenti in formazione o miglioramenti strutturali per offrire un servizio clienti di alta qualità. Questo approccio basato sui dati ottimizza l'efficienza operativa e migliora l'esperienza generale del cliente. Sotto il profilo della simulazione, l'analisi dei dati passati e le previsioni future supportano una gestione finanziaria oculata. Una previsione accurata della domanda evita costi legati a scorte eccessive o ordini urgenti dispendiosi. Inoltre, la simulazione consente di prepararsi a scenari ipotetici e di pianificare risposte in anticipo, migliorando la reattività aziendale di fronte a improvvisi cambiamenti di mercato. In sintesi, dal punto di vista gestionale, l'analisi dei dati e la simulazione sono strumenti fondamentali per una gestione delle risorse più efficiente, una maggiore redditività e una migliore adattabilità alle sfide del mercato, conferendo un notevole vantaggio competitivo nel contesto aziendale moderno.

Descrizione dei data-set per la valutazione

Il database utilizzato è stato ottenuto dal sito Kaggle.com, con una licenza di utilizzo non commerciale. Esso è composto da 9 tabelle interconnesse, ciascuna svolgendo un ruolo specifico all'interno del sistema. Di seguito, una panoramica delle tabelle e dei loro contenuti:

  1. customers (Clienti): Questa tabella contiene dettagli completi sui clienti, tra cui nome, cognome, numero di telefono, indirizzo e indirizzo email.
  2. orders (Ordini): Qui sono registrati tutti gli ordini effettuati, con informazioni come lo stato dell'ordine, la data dell'ordine, la data di consegna prevista, la data di spedizione, l'identificatore del cliente e il negozio associato all'ordine.
  3. order_Items (Articoli dell'ordine): Questa tabella è collegata agli ordini e fornisce un elenco dettagliato degli articoli presenti in ciascun ordine, inclusa la quantità, il prezzo di listino e lo sconto applicato.
  4. stores (Negozi): Qui sono registrati tutti i negozi, ognuno con i propri dettagli, tra cui nome, numero di telefono, indirizzo email e indirizzo fisico.
  5. staffs (Personale): Questa tabella contiene informazioni sullo staff associato ai negozi, inclusi nome, cognome, indirizzo email, numero di telefono e lo stato attivo. Inoltre, tiene traccia del responsabile del personale all'interno del negozio.
  6. Products (Prodotti): Questa tabella registra dettagli sui prodotti venduti, tra cui nome del prodotto, brand, categoria, prezzo di listino e anno di produzione.
  7. categories (Categorie): Contiene l'elenco delle categorie di prodotti disponibili.
  8. brands (Marchi): Questa tabella registra i vari marchi associati ai prodotti.
  9. stocks (Scorte): Questa tabella tiene traccia delle quantità di ciascun prodotto disponibile in ogni negozio, collegando le informazioni relative al negozio, al prodotto e alla quantità disponibile. Le tabelle sono collegate tra loro attraverso diverse relazioni, che vanno da uno-a-molti (1:N) a molti-a-molti (N:N). Ad esempio, una categoria può essere associata a più prodotti, mentre un prodotto può essere presente in più negozi.

https://www.kaggle.com/datasets/dillonmyrick/bike-store-sample-database https://www.sqlservertutorial.net/terms-of-use/

Descrizione preliminare degli algoritmi coinvolti

Nella fase iniziale dell'applicazione, l'adozione di SQL rappresenta un pilastro fondamentale per ottimizzare in modo notevole il processo di ricerca dei migliori elementi all'interno delle specifiche categorie. Questa scelta consente di ridurre significativamente la complessità computazionale, in quanto si possono selezionare solo le tabelle necessarie per l'analisi, evitando sovraccarichi inutili. Un esempio concreto di questa efficienza si riscontra quando si cerca di identificare i brand di maggior tendenza: attraverso la combinazione di due join, è possibile estrarre le informazioni essenziali e successivamente eseguire un'elaborazione in Java per creare una classifica basata sulla frequenza degli ordini ricevuti. Nel contesto della seconda parte dell'applicazione, quella dedicata alla simulazione, diventa imprescindibile prestare una cura particolare alla selezione degli attributi degli eventi. Questa fase richiede un'analisi approfondita, al fine di coprire tutte le possibili casistiche e situazioni, evitando comportamenti indesiderati come blocchi o loop infiniti. La creazione accurata e completa degli eventi è essenziale, con l'obiettivo di garantire una gestione impeccabile degli scenari imprevisti. Inoltre, l'inclusione di una clausola "case default" rappresenta una rete di sicurezza, che permette di gestire situazioni non contemplate, notificandole se necessario, ma senza interrompere bruscamente il flusso della simulazione. Un altro aspetto fondamentale è la scelta oculata degli attributi di stato, input e output. Questi attributi influiscono direttamente sulle statistiche finali e sull'accuratezza complessiva della simulazione. Un'analisi attenta dei punti in cui aggiornare questi attributi è cruciale per evitare distorsioni nei dati e garantire la generazione di eventi rilevanti, senza sovraccaricare il sistema con informazioni superflue.

Descrizione preliminare delle funzionalità previste per l’applicazione software

L'applicazione in questione svolge un'analisi dettagliata dei dati relativi a tre negozi situati in diverse città, con un focus sugli aspetti legati ai clienti, ai dipendenti, agli ordini e ai prodotti. L'applicazione richiede un intervallo di tempo specifico in input e fornisce in output diversi risultati. Nel primo scenario, attraverso un pulsante, l'applicazione restituisce i prodotti più redditizi, seguiti dai brand che contribuiscono maggiormente ai profitti, poi individua il dipendente di maggior successo e infine determina quale dei tre negozi ha la performance migliore. Nella seconda parte dell'applicazione, gli utenti possono selezionare un negozio specifico e un prodotto venduto da esso. Successivamente, possono scegliere di visualizzare i prodotti più frequentemente acquistati in combinazione con il prodotto selezionato. Inoltre, inserendo quattro parametri aggiuntivi - i mesi coinvolti nella simulazione, la quantità di ciascun rifornimento e la frequenza dei rifornimenti in giorni - l'applicazione calcola la percentuale dei clienti soddisfatti, il numero totale di rifornimenti effettuati e fornisce statistiche dettagliate sull'andamento della simulazione. Questa applicazione offre quindi un'ampia gamma di informazioni utili per valutare e migliorare le performance dei negozi, dei prodotti e del personale, nonché per ottimizzare la gestione delle scorte e soddisfare le esigenze dei clienti.

fulcorno commented 11 months ago

La tematica proposta è rilevante ed il data-set è adeguato.

Non ho però capito cosa dovrebbe fare l'applicazione proposta, soprattutto dal punto di vista algoritmico. L'intera sezione "Descrizione preliminare degli algoritmi coinvolti" dice solo banalità e non indica gli algoritmi che intendi utilizzare. Sembra quasi la classica fuffa scritta da ChatGPT.

Ti chiederei di riscrivere in modo più preciso ed esplicito le ultime 2 sezioni, facendomi capire quali algoritmi e strutture dati sono coinvolti (tra quelli che studiamo durante il corso), in modo da poterti fornire una risposta. Altrimenti ti faccio rispondere da ChatGPT.

MLorenzo01 commented 11 months ago

Gentile professore, spero questa nuova versione sia più chiara

Descrizione preliminare degli algoritmi coinvolti

Il programma sarà sviluppato in Java, utilizzando i pattern MVC (Model View Controller) e DAO (Data Access Object) per garantire la separazione tra l'interfaccia utente, la logica applicativa e l'accesso ai dati.

Nella prima fase, verranno raccolti i dati tramite query SQL relativi al periodo di interesse degli ordini. In questa query, saranno salvati sia gli ordini che tutti i dati relativi ai prodotti venduti, inclusi i profitti per ciascun ordine, tenendo conto degli eventuali sconti applicati.

Successivamente, per identificare i prodotti più proficui, verrà creata una LinkedList ordinata in base al profitto decrescente. Per il brand, verrà creata una TreeMap, dove la chiave sarà rappresentata dal brand e il valore sarà una lista dei prodotti venduti. Calcolando la somma dei profitti, verrà stilata una classifica. Un ragionamento simile verrà applicato per identificare il negozio migliore. Per quanto riguarda il personale più efficiente, sarà possibile effettuare tutte le operazioni tramite SQL e quindi presentare i dati della tabella all'utente.

Nella seconda fase, relativa alla simulazione, gli attributi di input includeranno un negozio tra i tre disponibili, un prodotto venduto da quel negozio, il numero di giorni tra un rifornimento e l'altro, la dimensione dell'ordine, nonché il mese di inizio e il mese di fine della simulazione.

Dopo aver raccolto i dati di input dal database, verranno calcolate le medie per ogni mese dei tre anni. Successivamente, inizierà la simulazione, durante la quale si simulerà quel periodo dell'anno utilizzando "Rifornimento" e "Prelievo" come casi nello switch degli eventi. Durante questa fase, si terrà traccia dei clienti soddisfatti e insoddisfatti. Poiché il numero di prodotti venduti al mese da un singolo negozio non è elevato, si prevederà un ordine a settimana pari a un quarto della media calcolata in precedenza.

In output, verranno visualizzati i prodotti venduti, i clienti soddisfatti e insoddisfatti, nonché i prodotti rimasti. Saranno inclusi anche un elenco degli ordini effettuati e un elenco dei rifornimenti.

Descrizione preliminare delle funzionalità previste per l’applicazione software

L'applicazione sarà costituita da due schede:

fulcorno commented 11 months ago

Sì, ora è più chiaro cosa intendi fare. Non ho capito a cosa ti serve conoscere "i prodotti più venduti insieme" ai fini della simulazione, ma lo potremo vedere analizzando il lavoro.

La proposta è accettata.