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 dati clienti e ottimizzazione corsi de "Il Teatro delle cinque" #26

Closed Mascariddu closed 5 years ago

Mascariddu commented 5 years ago

Studente proponente s233799 Mascarello Andrea

Titolo della proposta Gestione dati clienti e ottimizzazione corsi de "Il Teatrino"

Descrizione del problema proposto Ho contattato la titolare de "Il Teatrino", attività in proprio che offre corsi di teatro, che mi ha fornito un database relativo ai clienti. L’ applicazione dovrà andare a risolvere i problemi della titolare, quali la difficoltà nel trovare informazioni relative al singolo cliente, la difficoltà nel calcolare il fatturato (mensile ed annuale) e la difficoltà nel modificare i dati relativi ai clienti. In secondo luogo con i dati forniti relativi alle spese (luce, affitto, dipendenti) l’applicazione andrà a calcolare dapprima i margini di contribuzione, per poi andare a calcolare la strategia che permette (in base a scelta dell’utente) di massimizzare i guadagni o minimizzare le ore di lavoro (conoscendo anche in quali giorni e in quali orari si svolgono i corsi).

Descrizione della rilevanza gestionale del problema Dal punto di vista gestionale, l’ applicazione porterà a risparmiare ore di lavoro su fogli Excel permettendo all’utente di trovare (e/o modificare) dati relativi ai clienti o ai singoli corsi. Inoltre permetterà anche di calcolare il fatturato (mensile e/o annuale) totale o relativo ai singoli corsi (permettendo all’utente di conoscere quali sono i corsi più proficui) ed il guadagno orario. L’applicazione sarà anche in grado di calcolare quali sono i clienti più presenti dato lo storico dei corsi, in tal modo si potrà capire quali sono i “migliori”. Infine ha grande rilevanza gestionale l’ottimizzazione dei corsi che restituirà all’utente una strategia ottima per quanto riguarda gli orari e le date in cui svolgere i corsi e la necessità o meno di delegare il lavoro ai dipendenti

Descrizione dei data-set per la valutazione I dati sono estrapolati da 3 tabelle Excel: • La prima contenente : ID cliente, nominativi cliente(modificati per privacy), ID corso frequentato, contatti , presenze, compenso pagato, compenso da pagare • La seconda relativa ai corsi : ID corso , nome corso, tipologia, descrizione, giorno della settimana, orario , costo al singolo cliente , ID dipendente presente • La terza relativa ai dipendenti : ID , nome dipendente(modificato per privacy), compenso orario I dati in totale riguardano 99 diversi clienti e 10 tipologie di corsi. Dati aggiuntivi sono : costo dell’ affitto dei locali, spese varie, eventi esterni ai corsi.

Descrizione preliminare degli algoritmi coinvolti
In un primo momento gli algoritmi coinvolti saranno quasi semplicemente utili per interrogare il database, al fine di restituire all’utente i dati relativi ai singoli clienti, ai corsi, ai dipendenti, al fatturato(mensile e/o annuale), al guadagno orario e ai migliori clienti (con salvataggio di un file di testo per la panoramica relativa al cliente o ai corsi). In secondo luogo l’ applicazione andrà a provare una serie di combinazioni relative ai corsi, sfruttando un algoritmo ricorsivo per ottenere la strategia che permetterà (a seconda della scelta dell’utente) di massimizzare i profitti o minimizzare le ore di lavoro. Questa seconda parte terrà conto di una serie di fattori quali l’affitto dei locali, le spese per materiali, dipendenti e luce, il periodo dell’ anno in cui si svolge un corso e l’orario in cui si svolge. Questi ultimi due valori andranno ad incidere sulla parte di simulazione, infatti l’applicazione, per calcolare la strategia ottimale, andrà a simulare le adesioni al corso anche in base al clima, all’orario e alla data. Con lo storico delle presenze passate verranno calcolati dei coefficienti “stagionali” di adesione.

Descrizione preliminare delle funzionalità previste per l’applicazione software L’applicazione sarà dotata di diverse interfacce grafiche attraverso le quali sarà possibile utilizzare tutte le funzioni dell’applicazione. L’idea principale era quella di separare le tre macro funzioni dell’applicazione. Attraverso un menù principale sarà possibile decidere se accedere all’area di gestione e modifica dati, a quella di calcolo dei valori economici o passare al calcolo della strategia ottimale.

• Gestione e modifica dati: L’ utente (che ha specificatamente richiesto queste funzioni per alleggerire il proprio lavoro) potrà svolgere differenti attività, tra le quali:

  1. Inserimento (e/o eliminazione) di tutti i dati relativi ad un nuovo (o vecchio) cliente e/o corso
  2. Ricerca di tutti i dati relativi ad un singolo cliente(o un gruppo di clienti), con conseguente invio della panoramica al contatto salvato nel database(nel caso risultasse troppo difficile il collegamento alla mail, l’applicazione si limiterà a salvare la panoramica in un file di testo)
  3. Ricerca di tutti i dati relativi ad un corso, con possibilità di inviare ai clienti interessati la panoramica(vale il discorso del punto precedente)
  4. Aggiornamento e modifica dei dati, attraverso un menu che permette di salvare contemporaneamente le presenze ad una lezione di più studenti, così come permette l’aggiornamento dei dati relativi ai compensi pagati e da pagare
  5. Ricerca dei migliori clienti, valutando una serie di fattori tra i quali maggior numero di presenze e compensi pagati

• Calcolo valori economici: L’applicazione permetterà di calcolare:

  1. Fatturato mensile e annuale, andando a moltiplicare le presenze per il compenso dovuto(per i corsi con pagamento a singola lezione, per i corsi mensili terrà conto dei pagamenti nel tempo)
  2. Compenso orario medio, tenendo conto delle varie spese specificate al momento della raccolta dati.
  3. Corsi più proficui, tenendo conto di spese, orari e date di svolgimento dei corsi L’utente sarà in grado di accedere a questa sezione dell’applicazione andando poi a specificare quale dei tre valori è interessato a valutare. Non sono però mutuamente esclusivi, l’applicazione permetterà anche la visualizzazione di tutti e tre i parametri contemporaneamente, in modo da lasciare all’utente una visione più ampia del lavoro svolto

• Calcolo strategia ottimale In questa sezione dell’applicazione l’utente sarà in grado di preparare un piano per i periodi futuri. Prima di procedere con l’ottimizzazione egli dovrà scegliere se massimizzare i profitti (andando di conseguenza a specificare le ore di lavoro massime che è disposto a svolgere) o minimizzare le ore di lavoro (dovendo poi specificare il minimo profitto al quale accettare la strategia). Altri parametri importanti da inserire saranno le ore di disponibilità dei dipendenti e dei locali. A questo punto l’applicazione si promette di simulare le adesioni ai vari corsi conoscendo lo storico ed andando a calcolare dei coefficienti “stagionali” necessari per la simulazione. Una volta inseriti i parametri e simulate le presenze l’applicazione andrà a restituire la strategia ottimale sotto forma di file di testo. Per strategia ottimale si intende la combinazione settimanale con la quale svolgere i corsi e le direttive sulla necessità o meno della presenza di dipendenti.

Sarà presenta una quarta sezione nell’ applicazione che permetterà di tenere traccia di tutti gli eventi esterni ai corsi, questa sezione verrà poi coinvolta nel calcolo del fatturato annuale o mensile che sia.

fulcorno commented 5 years ago

Il contesto è interessante e rilevante. La proposta però è sbilanciata:

Ti chiederei di rivedere la proposta, eliminando le prime due parti (o riducendole al minimo), ed espandendo la descrizione del terzo punto.

Bisognerà probabilmente anche pensare a rinormalizzare la base di dati (ad esempio "compenso pagato" nella tabella dei Clienti mi pare errato..., come faccio se lo stesso cliente mi chiede più corsi?).

Mascariddu commented 5 years ago

Ho alleggerito significativamente la prima parte, durante lo svolgimento mi concentrerò principalmente sul calcolo della strategia ottimale. La parte anagrafica mi era stata richiesta dall'utente in quanto molto utile per alleggerire il lavoro, ma come da suggerimento, svolgerò le varie funzionalità al di fuori della tesi. Ho modificato la proposta cercando di spiegare in maniera esaustiva l'idea per l'algoritmo e specificando soprattutto output e vincoli iniziali. Per quanto riguarda il database pensavo ancora di modificare la sua struttura una volta accettata la proposta, il dataset presentato riguarda i fogli Excel che mi sono stati forniti. Come ho scritto nella nuova proposta, il cliente viene assegnato in maniera univoca ad un corso e può partecipare solo a quello in quanto l'assegnazione avviene per fasce d'età. Lascio un commento con la nuova proposta, grazie

Mascariddu commented 5 years ago

Studente proponente

s233799 Mascarello Andrea

Titolo della proposta

Gestione dati clienti e ottimizzazione corsi de "Il Teatrino"

Descrizione del problema proposto

Ho contattato la titolare de "Il Teatro delle cinque", attività in proprio che offre corsi di teatro, che mi ha fornito un database relativo ai clienti. L’ applicazione dovrà andare a risolvere i problemi della titolare, quali la difficoltà nel gestire le informazioni relative al singolo cliente e la difficoltà nel calcolare il fatturato (mensile ed annuale). In secondo luogo l’applicazione andrà a concentrarsi sulla funzione principale, ossia il calcolo della strategia che permette (in base a scelta dell’utente) di massimizzare i guadagni o minimizzare le ore di lavoro (conoscendo anche in quali giorni e in quali orari si svolgono i corsi).

Descrizione della rilevanza gestionale del problema

Dal punto di vista gestionale, l’ applicazione porterà a risparmiare ore di lavoro su fogli Excel permettendo all’utente di trovare (e/o modificare) dati relativi ai clienti o ai singoli corsi. Inoltre permetterà anche di calcolare il fatturato (mensile e/o annuale) totale o relativo ai singoli corsi (permettendo all’utente di conoscere quali sono i corsi più proficui) ed il guadagno orario. Ha grande rilevanza gestionale l’ottimizzazione dei corsi, funzione principale dell’applicazione, che restituirà all’utente una strategia ottima per quanto riguarda gli orari e le date in cui svolgere i corsi e la necessità o meno di delegare il lavoro ai dipendenti

Descrizione dei data-set per la valutazione I dati sono estrapolati da 3 tabelle Excel: • La prima contenente : ID cliente, nominativi cliente(modificati per privacy), ID corso frequentato, contatti , presenze, compenso pagato, compenso da pagare • La seconda relativa ai corsi : ID corso , nome corso, tipologia, descrizione, giorno della settimana, orario , costo al singolo cliente , ID dipendente presente • La terza relativa ai dipendenti : ID , nome dipendente(modificato per privacy), compenso orario I dati in totale riguardano 99 diversi clienti e 10 tipologie di corsi, ma l’applicazione verrà sviluppata in modo da poter gestire future modifiche sulla base di dati. Dati aggiuntivi sono : costo dell’ affitto dei locali, orari disponibilità dei locali, spese varie, eventi esterni ai corsi. I corsi sono suddivisi per fasce d’età, ogni cliente sarà legato univocamente ad un corso.

Descrizione preliminare degli algoritmi coinvolti
Una minima parte sarà dedicata alle interrogazioni della base dati, al fine di ottenere dati relativi ai clienti e utili al calcolo del fatturato. In secondo luogo l’ applicazione andrà a provare una serie di combinazioni relative ai corsi, sfruttando un algoritmo ricorsivo per ottenere la strategia che permetterà (a seconda della scelta dell’utente) di massimizzare i profitti o minimizzare le ore di lavoro. L’utente andrà dapprima a scegliere quale delle due opzioni sopra citate sviluppare. Nel caso della massimizzazione, dovrà aggiungere in input il massimo numero di ore di lavoro nelle quali è disposto a lavorare(per utente si intende la titolare), le ore ed i giorni di disponibilità dei dipendenti, le ore ed i giorni di disponibilità dei locali. Nel caso della minimizzazione, dovrà aggiungere in input il minimo profitto che è disposto ad ottenere, le ore ed i giorni di disponibilità dei dipendenti, le ore ed i giorni di disponibilità dei locali. Questa seconda parte terrà conto di una serie di fattori quali l’affitto dei locali, le spese per materiali, dipendenti e luce, il periodo dell’ anno in cui si svolge un corso e l’orario in cui si svolge. Questi ultimi due valori andranno ad incidere sulla parte di simulazione, infatti l’applicazione, per calcolare la strategia ottimale, andrà a simulare le adesioni al corso anche in base al clima, all’orario e alla data. Con lo storico delle presenze passate verranno calcolati dei coefficienti “stagionali” di adesione. Una volta terminata l’ottimizzazione verrà restituito in output un orario ottimale(salvato su file di testo), per ogni giorno in base alla disponibilità di locali e dipendenti verrà stampata una lista dei corsi da svolgere, del dipendente al quale affidare o meno il corso (potrebbe essere stampato in output “svolgere in autonomia” nel caso si consigli alla titolare di minimizzare le ore di lavoro dei dipendenti),dell’orario nel quale svolgere il corso(cercando magari di evitare l’utilizzo della luce) e delle adesioni previste. Vincoli relativi all’ottimizzazione saranno: obbligo di svolgere tutti i corsi presenti nel database nell’ arco della settimana, possibilità di svolgere il corso un’unica volta a settimana

Descrizione preliminare delle funzionalità previste per l’applicazione software L’applicazione sarà dotata di diverse interfacce grafiche attraverso le quali sarà possibile utilizzare tutte le funzioni dell’applicazione. L’idea principale era quella di separare le tre macro funzioni dell’applicazione. Attraverso un menù principale sarà possibile decidere se accedere all’area di gestione e modifica dati, a quella di calcolo dei valori economici o passare al calcolo della strategia ottimale.

• Gestione e contabilità: L’ utente (che ha specificatamente richiesto queste funzioni per alleggerire il proprio lavoro) potrà svolgere differenti attività, tra le quali:

  1. Ricerca di tutti i dati relativi ad un singolo cliente(o un gruppo di clienti), con conseguente invio della panoramica al contatto salvato nel database(nel caso risultasse troppo difficile il collegamento alla mail, l’applicazione si limiterà a salvare la panoramica in un file di testo).
  2. Ricerca di tutti i dati relativi ad un corso, con possibilità di inviare ai clienti interessati la panoramica(vale il discorso del punto precedente). 3.Calcolo del fatturato e dei corsi più proficui.

• Calcolo strategia ottimale In questa sezione dell’applicazione l’utente sarà in grado di preparare un orario settimanale per i corsi. Prima di procedere con l’ottimizzazione egli dovrà scegliere se massimizzare i profitti (andando di conseguenza a specificare le ore di lavoro massime che è disposto a svolgere) o minimizzare le ore di lavoro (dovendo poi specificare il minimo profitto al quale accettare la strategia). Altri parametri importanti da inserire saranno le date e le ore di disponibilità dei dipendenti e dei locali. A questo punto l’applicazione si promette di simulare le adesioni ai vari corsi conoscendo lo storico ed andando a calcolare dei coefficienti “stagionali” necessari per la simulazione. L’ottimizzazione terrà conto di due vincoli fondamentali: necessità di svolgere tutti i corsi presenti nel database nell’arco della settimana, obbligo di svolgere il corso una sola volta a settimana. L’applicazione restituirà sotto forma di file di file di testo l’orario settimanale dei corsi, stampando inoltre la presenza di un dipendente, l’orario nel quale svolgere i corsi e le adesioni previste.

fulcorno commented 5 years ago

ok, va bene, mi pare più chiaro. Secondo me associare univocamente un cliente ad un corso hno ha senso (tra l'altro, quando parli di ricercare i clienti migliori, signfica che il cliente può tornare più volte, o quando parli di "clienti interessati").