Esami a.a. 2012/2013 - Fondamenti di Informatica B
Transcript
Esami a.a. 2012/2013 - Fondamenti di Informatica B
Università di Brescia Corso di Laurea in Ingegneria Informatica MODULO DI FONDAMENTI DI PROGRAMMAZIONE Prof. Pietro Baroni Indicazioni per il superamento della prova orale e pratica a.a. 2012/13 Per il superamento del modulo di Fondamenti di Programmazione è richiesto lo svolgimento di una prova orale e pratica al calcolatore. Le date di svolgimento delle prove sono pubblicate sul sito di Ateneo con l'indicazione "Prova di programmazione Java - Prof. Baroni". Lo studente deve presentarsi con un CD, pen drive USB, o altro supporto di memorizzazione utilizzabile su PC in ambiente Windows contenente lo svolgimento in linguaggio Java dei problemi di programmazione riportati nel seguito. È anche ammesso presentarsi all'esame con un proprio PC portatile, se preferito. I primi 8 problemi specificati nell'elenco (fino a Titoli Azionari) sono obbligatori, mentre deve essere sviluppato uno solo tra gli ultimi due (Gestione palestra oppure Gestione consorzio mobilifici, la scelta tra i due è libera). Ciascun programma Java corrispondente ad un esercizio dovrà essere memorizzato in una cartella separata (con un nome significativo). 1. Polveri sottili Si richiede lo sviluppo di un programma che permette all'utente l'inserimento dei valori giornalieri di polveri sottili nell'aria rilevati nell'arco di una settimana e produce due tipi di allarmi: uno riguardante il valore massimo uno riguardante il valore medio. Una settimana è caratterizzata dall'anno solare al quale appartiene (p.e. 2008), dal numero della settimana all'interno dell'anno (da 1 a 53) e dai 7 valori di polveri sottili misurati giornalmente. Il programma dopo aver richiesto all'utente di inserire i dati riguardanti una settimana, effettua due verifiche: - se il valore massimo misurato durante la settimana supera una certa soglia prefissata (p.e. 75 mg/m3) viene dato un messaggio opportuno - se il valore medio delle misure durante la settimana supera un'altra soglia prefissata (p.e. 50 mg/m3) viene dato un altro messaggio Il funzionamento del programma dovrebbe essere ciclico: una volta inseriti e verificati i dati di una settimana, si richiede all'utente se vuole uscire dal programma o inserire i dati di una nuova settimana. 2. Quadrato magico Si richiede lo sviluppo di un programma che permette all'utente l'inserimento di una matrice quadrata di numeri interi positivi e verifica se si tratta di un quadrato magico. Una matrice quadrata di numeri interi è un quadrato magico se sommando i numeri posti lungo qualsiasi colonna, qualsiasi riga o una qualunque delle due diagonali si ottiene comunque lo stesso numero (detto costante "magica" del quadrato) Un quadrato magico è interessante solo se composto da numeri tutti diversi tra loro e ancor più se contiene numeri consecutivi a partire da 1. Il programma dovrebbe essere in grado anche di verificare: 1) se i numeri contenuti nella matrice sono tutti diversi o ci sono numeri ripetuti 2) se i numeri contenuti nella matrice sono consecutivi a partire da 1 3. Archivio CD Una persona possiede un certo numero di CD musicali e desidera organizzare il proprio archivio tramite uno strumento software. Il programma deve permettere l'inserimento di nuovi CD nella collezione, la visualizzazione e la rimozione degli stessi, la selezione di un brano a caso estratto dall'intera collezione. Ciascun CD è contraddistinto da autore, titolo e dall'elenco dei brani contenuti con le rispettive durate. In fase di creazione il programma deve richiedere l'input da tastiera dei dati necessari. Si suppone che ogni CD abbia un titolo univoco: il programma deve impedire l'inserimento se il titolo coincide con uno già presente. 4. Carta più alta Scrivere un programma che gioca a "carta più alta" tra computer ed utente. Il programma chiede di scegliere tra carte italiane o francesi e quindi inizia il gioco che si svolge secondo le seguenti modalità. Il computer fa il banco e si assume infinitamente ricco, mentre l'utente deve dichiarare il valore della sua disponibilità di denaro. Quindi ciclicamente il banco estrae una carta a caso e la propone all'utente, che decide quanto puntare sulla carta (a partire da un minimo di 1 euro e fino al massimo della sua disponibilità). Quindi viene estratta casualmente la carta del banco e, a seconda che sia maggiore o minore dell'altra, la scommessa viene o vinta o persa dall'utente, che in questo modo vede incrementare o diminuire la sua disponibilità. In caso di carte pari, si procede a una nuova estrazione. Il gioco continua fino a quando l'utente decide di ritirarsi o quando la sua disponibilità si esaurisce. 5. Medagliere olimpico Si richiede lo sviluppo di un programma per la gestione del medagliere olimpico Il programma deve prevedere le seguenti funzionalità principali: 1) introduzione elenco nazioni e gare Per ciascuna nazione e gara si richiede l'inserimento della denominazione. Il programma verifica che il nome di ciascuna nazione/gara non sia vuoto e che il nuovo nome inserito non sia già presente nell'elenco. 2) introduzione del risultato di una o più gare Il programma richiede all'utente il nome della disciplina di cui inserire il risultato e assicura che sia presente nell'elenco delle discipline (facoltativamente si controlla anche che il risultato di tale disciplina non sia già stato inserito in precedenza). Il programma richiede quindi i nomi delle nazioni vincitrici delle tre medaglie Il programma assicura che il nome di ciascuna nazione sia presente nel relativo elenco e aggiorna il conteggio delle medaglie. 3) visualizzazione del medagliere Il programma mostra l'elenco delle nazioni con il numero di medaglie vinte per ciascuna tipologia Facoltativamente prevedere la possibilità di visualizzare l'elenco nell'ordine tipicamente utilizzato in base alle medaglie vinte (prevale il numero di ori, a parità di ori prevale il numero di argenti, a ulteriore parità prevale il numero di bronzi) 6. Simulazione Tamagotchi Si richiede lo sviluppo di un programma che permette all'utente di interagire con una comunità di Tamagotchi di specie diverse Un Tamagotchi è un'entità software in grado di recepire stimoli dall'esterno che determinano la sua sopravvivenza e il suo grado di benessere: specie diverse di Tamagotchi reagiscono in modo diverso a diversi stimoli Per semplicità si suppone che: - gli stimoli ricevuti possano essere carezze o biscotti - il grado di benessere sia rappresentabile tramite due soli valori numerici (grado di soddisfazione affettiva, grado di sazietà) Si suppone che gli stimoli esterni siano forniti come numeri interi (numero di carezze o numero di biscotti). I due valori interni di ciascun Tamagotchi variano in base agli stimoli secondo la sua specie. Il loro valore iniziale è stabilito in modo casuale al momento della creazione. Anche le condizioni di sopravvivenza e infelicità variano secondo la specie. Il programma, dopo aver presentato un saluto iniziale, chiede quanti Tamagotchi si vogliono creare. Per ogni Tamagotchi da creare il programma chiede all'utente un nome e seleziona in modo casuale la specie tra quelle previste (TamaBase, TamaTriste e TamaGordo specificate successivamente) Segue un ciclo nel quale l'utente deve scegliere fra tre alternative: - dare carezze (la stessa quantità a tutti i Tamagotchi) - dare biscotti (la stessa quantità a tutti i Tamagotchi) - uscire dal programma In base alla scelta dell'utente viene estratto un numero casuale di biscotti o carezze da somministrare a tutti i Tamagotchi, variando il loro stato di conseguenza Per ogni Tamagotchi presente, l'utente viene informato del suo stato a seguito della somministrazione Se un Tamagotchi muore, ovviamente non viene incluso nelle interazioni successive Se muoiono tutti i Tamagotchi viene dato un opportuno messaggio all'utente e il programma termina. L'evoluzione delle tre specie di Tamagotchi è descritta di seguito. Tamabase: I due valori interni del Tamagotchi variano in base agli stimoli come segue: - Se riceve carezze, aumenta il grado di soddisfazione affettiva in base al numero di carezze ricevute ma diminuisce il grado di sazietà (della metà delle carezze ricevute) - Se riceve biscotti, aumenta il grado di sazietà secondo la regola che ogni biscotto mangiato aumenta del 10% il grado di sazietà precedente. Diminuisce però il grado di soddisfazione affettiva (di un quarto dei biscotti ricevuti) I due valori interni variano tra 0 e un valore massimo (p.e. 100) oltre il quale ulteriori stimoli non hanno effetti Il Tamagotchi muore quando: - uno dei due valori interni raggiunge 0 - il grado di sazietà raggiunge il massimo (troppo cibo) Il Tamagotchi è infelice quando: - il grado di soddisfazione è sotto una certa soglia (<30) - il grado di sazietà è troppo basso o troppo alto (<30 o >90) Tamatriste: Questo Tamagotchi è sempre infelice indipendentemente da quante carezze o biscotti riceve (però non muore mai di infelicità) Il suo grado di sazietà invece varia come nel caso del Tamabase e muore solo se non mangia abbastanza o se mangia troppo (come il Tamabase) Tamagordo: Questo Tamagotchi pensa solo a mangiare ed è insensibile alle carezze Il suo grado di soddisfazione affettiva è ininfluente e sempre massimo: l'infelicità è determinata solo dal grado di sazietà troppo basso (non dal grado di sazietà troppo alto). Analogamente muore solo se mangia poco, mai se mangia troppo Inoltre se riceve carezze e non biscotti il suo grado di sazietà cala il doppio rispetto agli altri. 7. Simulazione traffico Si richiede di simulare il movimento del traffico in un'ipotetico tratto di strada che viene percorso da delle automobili e che dei pedoni devono attraversare. La situazione iniziale della strada viene definita in modo casuale, quindi il programma dà il via alla simulazione. Ogni passo di simulazione prevede il calcolo della nuova situazione della strada e la sua visualizzazione. La simulazione termina su decisione dell'utente. La strada è rappresentabile come una matrice bidimensionale che le automobili percorrono in una direzione mentre i pedoni la percorrono in modo ortogonale. Per semplicità si può assumere che la strada sia percorsa a senso unico dalle auto e che i pedoni la attraversino sempre seguendo un'unica direzione. Ciascun passo di simulazione si svolge nel seguente modo: - ogni elemento (auto o pedone) si sposta secondo la sua direzione e velocità senza mai fermarsi; - se un elemento raggiunge il limite della strada, esce e non compare nel seguito della simulazione; - se un pedone entra in collisione con un auto, viene data segnalazione all'utente e (poichè siamo in un mondo ideale) il pedone prosegue regolarmente il suo cammino mentre l'auto viene eliminata e non compare nel seguito della simulazione. 8. Titoli azionari Un titolo azionario è caratterizzato da un nome e da un valore che varia ogni giorno. Un portafoglio azionario è composto da un insieme di lotti: ogni lotto è semplicemente un certo numero di azioni di un certo titolo. Si richiede un programma che gestisca: - un elenco di titoli, per ognuno dei quali l'utente deve specificare il nome e il valore iniziale - la composizione di un portafoglio, che consiste nello stabilire, per ciascun titolo in elenco, un numero di azioni acquistate - la simulazione dell'oscillazione del valore del portafoglio: per ogni giornata il programma calcola il valore iniziale complessivo del portafoglio, determina in modo random una variazione positiva o negativa del valore di ogni titolo, quindi calcola di conseguenza il nuovo valore complessivo del portafoglio e comunica all'utente la situazione attuale del suo patrimonio - si richiede inoltre di salvare su file tutte le informazioni introdotte e di poter riavviare successivamente il programma facendo ripartire la simulazione dal punto nel quale era stata interrotta. 9. Gestione Palestra Una palestra necessita di uno strumento software per la gestione della sua attività. Le funzionalità richieste si dividono in quattro aree principali: A) gestione delle attrezzature e degli esercizi B) gestione iscritti e loro piani di attività C) visualizzazioni sintetiche D) pianificazione settimana (FACOLTATIVO) E) salvataggio e caricamento A) GESTIONE DELLE ATTREZZATURE E DEGLI ESERCIZI La palestra contiene un insieme di attrezzature. Le attrezzature si dividono in diversi tipi (ad esempio "spalliera", "bilancere", "tapis roulant", "cyclette") e nella palestra possono essere presenti più attrezzi di uno stesso tipo. Per ogni tipo di attrezzatura deve essere definito almeno un esercizio che può essere svolto con quell'attrezzatura. Ogni esercizio è caratterizzato da un nome univoco (ad esempio "sollevamento 10 kg" o "corsa") e può essere continuo o a ripetizioni multiple. Sono richieste le seguenti funzionalità: • inserimento di nuovi attrezzi Dovrà essere richiesto all'utente il nome del tipo di attrezzatura da inserire. Se il tipo di attrezzatura è già presente si chiederà all'utente quanti nuovi attrezzi di quel tipo devono essere aggiunti a quelli già esistenti. Se il tipo di attrezzatura non è presente si chiederà all'utente quanti nuovi attrezzi vengono acquistati e si richiederà di definire almeno un esercizio che può essere svolto con quell'attrezzatura. Per ciascun esercizio inserito in associazione all'attrezzatura si chiederà all'utente di specificare il nome e se si tratta di un esercizio continuo o a ripetizioni multiple. Il programma verificherà che il nome dell'esercizio sia diverso da quello di tutti gli esercizi inseriti in precedenza e in caso contrario segnalerà il problema all'utente chiedendo di cambiare nome o di annullare l'inserimento. • eliminazione di attrezzi Dovrà essere richiesto all'utente il nome del tipo di attrezzatura da eliminare. Il programma verificherà che tale tipo di attrezzatura sia presente nella palestra e chiederà quanti attrezzi di quel tipo devono essere eliminati. Il numero di attrezzi eliminati dovrà essere minore o uguale a quello degli attrezzi di tale tipo già presenti. • aggiunta di esercizi Si richiede all'utente di selezionare uno dei tipi di attrezzatura presenti nella palestra e, per tale tipo di attrezzatura, si richiede di definire uno o più esercizi aggiuntivi che possono essere svolti con quell'attrezzatura. Per ciascun esercizio inserito in associazione all'attrezzatura si chiederà all'utente di specificare il nome e se si tratta di esercizio continuo o a ripetizioni multiple. Il programma verificherà che il nome dell'esercizio sia diverso da quello di tutti gli esercizi inseriti in precedenza e in caso contrario segnalerà il problema all'utente chiedendo di cambiare nome o di annullare l'inserimento. • FACOLTATIVO eliminazione di esercizi Si richiede all'utente di selezionare uno dei tipi di attrezzatura presenti nella palestra e, per tale tipo di attrezzatura, si richiede di indicare uno o più degli esercizi ad essa associati da eliminare. Il programma deve garantire che a ciascun tipo di attrezzatura rimanga associato almeno un esercizio. B) GESTIONE ISCRITTI E LORO PIANI DI ATTIVITA' La palestra ha un insieme di iscritti, per ciascuno dei quali viene definito un insieme di esercizi consigliati, chiamato piano di attività. Sono richieste le seguenti funzionalità: • Inserimento nuovo iscritto Per l'inserimento di un nuovo iscritto sono richieste le seguenti informazioni: • nome e cognome • codice fiscale (il programma deve verificare che sia univoco rispetto agli altri iscritti e impedire l'inserimento in caso contrario) • età • peso • definizione del piano di attività come da punto seguente Al nuovo iscritto viene attribuito automaticamente un numero di tessera univoco. • Inserimento piano di attività Un piano di attività per uno specifico cliente iscritto alla palestra consiste in un insieme di esercizi per ciascuno dei quali viene specificata la durata prevista per quell'iscritto. Inoltre viene specificato un tempo di pausa (espresso in minuti) che deve passare tra due esercizi consecutivi. Per ogni esercizio da inserire nel piano di attività di un iscritto devono essere specificato il nome e la durata. Il programma verifica che il nome corrisponda a uno di quelli inseriti in associazione alle attrezzature e che esso non sia già presente nel piano di attività. Quindi chiede all'utente di specificare la durata dell'esercizio secondo le seguenti modalità: - se si tratta di un esercizio continuo, viene richiesta la durata in minuti (ad esempio: "corsa", "5 minuti") - se si tratta di un esercizio a ripetizioni multiple, viene richiesto il numero di ripetizioni e la durata in secondi di ciascuna ripetizione (ad esempio: "sollevamento 10 kg", 10 ripetizioni da 15 secondi ciascuna) • Cancellazione di un iscritto L'iscritto viene identificato tramite il numero di tessera (facoltativamente sono possibili altre modalità di ricerca) e, dopo aver chiesto conferma, viene cancellato dall'elenco. FACOLTATIVO: • Modifica piano di attività Viene selezionato un iscritto tramite il numero di tessera (facoltativamente sono possibili altre modalità di ricerca) e viene data la possibilità di inserire nuovi esercizi nel piano di attività o di cancellare esercizi in esso presenti. Il programma assicura che il piano di attività contenga in ogni caso almeno un esercizio. C) VISUALIZZAZIONI SINTETICHE Sono richieste le seguenti visualizzazioni sintetiche • visualizzazione elenco attrezzature Vengono visualizzati tutti i tipi di attrezzatura presenti nella palestra, indicando per ciascuno gli esercizi ad essa associati e il numero di attrezzi • visualizzazione elenco esercizi Vengono visualizzati tutti gli esercizi previsti nella palestra, indicando per ciascuno se è continuo o a ripetizioni multiple e il tipo di attrezzatura richiesta per lo svolgimento • visualizzazione elenco iscritti Viene visualizzato l'elenco completo di tutti i clienti con i dati essenziali, senza presentare il piano di attività • visualizzazione dettagliata iscritto Viene selezionato un iscritto tramite il numero di tessera (facoltativamente sono possibili altre modalità di ricerca) e vengono presentati i dati essenziali e il dettaglio degli esercizi contenuti nel piano di attività. Inoltre viene calcolata la durata complessiva in minuti del piano di attività in base alle durate degli esercizi e al tempo di pausa previsto tra due esercizi consecutivi. • visualizzazione occupazione attrezzature Per ciascun tipo di attrezzatura viene calcolato: - il valore totale di minuti di occupazione previsti nei piani di attività Tale valore viene ottenuto sommando per ciascun piano di attività tutte le durate degli esercizi associati a tale tipo di attività. - il valore medio di occupazione per attrezzo, ottenuto dividendo il valore totale per il numero di attrezzi di quel tipo presenti. D) PIANIFICAZIONE SETTIMANA (FACOLTATIVO) Si supponga che la palestra sia aperta tutti i giorni della settimana con lo stesso orario (ad esempio ingressi degli iscritti dalle 8.00 alle 21.00, ultima uscita alle ore 22.00). Si vuole permettere ad ogni iscritto di effettuare una pianificazione della sua frequenza alla palestra e dell'utilizzo delle attrezzature come di seguito specificato. La pianificazione inizia selezionando uno degli iscritti alla palestra. Se l'iscritto ha già effettuato la pianificazione in precedenza si richiede se desidera effettuarne una nuova, eliminando la precedente, o uscire, mantenendo la precedente. Per ogni giorno della settimana viene richiesto all'utente se intende utilizzare la palestra in quel giorno ed a che ora intende effettuare l'ingresso (possono essere previste facilitazioni per specificare lo stesso orario di ingresso per più giorni). Per ciascun giorno in cui l'utente frequenta la palestra, viene fatto scorrere il piano di attività dell'utente e per ciascun esercizio da svolgere viene prenotata l'attrezzatura necessaria come di seguito specificato. Il programma considera il primo esercizio da svolgere e ricerca un attrezzo opportuno che sia libero nel giorno considerato, all'orario di ingresso specificato dall'utente e per tutto il tempo necessario allo svolgimento dell'esercizio, verificando che l'esercizio si concluda prima dell'orario di ultima uscita. Se trova l'attrezzo, lo occupa per il tempo necessario allo svolgimento dell'esercizio, altrimenti cerca un attrezzo opportuno che sia libero per tutto il tempo necessario allo svolgimento dell'esercizio a partire da un istante successivo all'orario di ingresso, sempre verificando il rispetto dell'orario di ultima uscita. Se non lo trova segnala l'impossibilità di effettuare la pianificazione, altrimenti occupa l'attrezzo per tutto il tempo necessario allo svolgimento dell'esercizio. La procedura viene quindi ripetuta con la stessa modalità per tutti gli esercizi contenuti nel piano di attività dell'iscritto, utilizzando come istante di inizio di ogni esercizio l'istante di conclusione dell'esercizio precedente sommato al tempo di pausa previsto nel piano di attività.. Se la pianificazione di tutti gli esercizi va a buon fine viene mostrata all'utente la sequenza degli attrezzi prenotati con i relativi orari, evidenziando gli eventuali tempi morti tra un esercizio e l'altro dovuti all'attesa che un attrezzo si liberi.. E' lasciata all'allievo la libertà di aggiungere funzionalità di visualizzazione sintetica relative alla pianificazione complessiva della settimana (ad esempio il piano di utilizzo settimanale di ciascun attrezzo). E) SALVATAGGIO E CARICAMENTO Il programma permette all'utente di salvare su file tutti i dati rilevanti inseriti e di caricarli al successivo avvio automaticamente o mediante apposita voce di menu. NOTA: Il programma dovrà essere presentato con almeno 3 tipi di attrezzatura e 5 clienti già inseriti. 10. Gestione consorzio di mobilifici Si richiede la scrittura di un software per la gestione di un consorzio di mobilifici. Le funzionalità richieste si dividono nelle seguenti aree principali: A) Gestione catalogo modelli B) Gestione mobilifici consorziati C) Realizzazione preventivo D) Gestione promozioni e scontistica E) Gestione catalogo materie prime (FACOLTATIVO) F) Salvataggio e caricamento A) GESTIONE CATALOGO MODELLI Il consorzio possiede un catalogo di tutti i modelli di mobile prodotti da almeno uno dei mobilifici consorziati. I modelli di mobile si suddividono in quattro tipologie di base: "armadi", "letti", "tavoli", "sedie". Ogni modello è in generale identificato da un nome e da un colore. Un "armadio" è caratterizzato, in aggiunta, da un'altezza e da un numero di ante. Un "letto" è caratterizzato, in aggiunta, da una lunghezza e da una larghezza. Un "tavolo" è caratterizzato, in aggiunta, da una lunghezza minima, una lunghezza massima (eventualmente uguale a quella minima) e da una larghezza. Una "sedia" è caratterizzata da un'altezza. Ad ogni modello sono associati un numero di tavole di legno, un numero di viti ed un numero di chiodi necessari per la costruzione di un esemplare. Sono richieste le seguenti funzionalità: • Inserimento nuovo modello Il programma richiede all'utente il nome del modello (verificando che non sia già presente nel catalogo), il colore e la tipologia. Sulla base della tipologia, il programma richiede all'utente le relative informazioni caratterizzanti. • Eliminazione modello Il programma richiede all'utente il nome del modello da eliminare, richiede conferma e procede all'eliminazione del modello indicato dal catalogo. Se il nome del modello non è presente nel catalogo, il programma segnala l'errore all'utente e richiede un nuovo nome. • Visualizzazione catalogo Il programma mostra all'utente la lista dei modelli presenti nel catalogo, visualizzando per ognuno nome, colore, tipologia, ed una descrizione specifica per tipologia (ad esempio, per un "letto" potrebbe indicare 200x160, per un armadio "6 ante altezza 270" e così via). Il programma permette di scegliere uno dei modelli (utilizzando il nome) e ne presenta una descrizione di dettaglio, che riporta tutte le informazioni associate a quel modello. • FACOLTATIVO Modifica modello Il programma richiede all'utente il nome del modello da modificare e permette all'utente di variare tutte le informazioni relative a quel modello. Se il nome del modello non è presente nel catalogo, il software segnala l'errore all'utente e richiede un nuovo nome. B) GESTIONE MOBILIFICI CONSORZIATI Un mobilificio consorziato è identificato da una ragione sociale e da un indirizzo. Ogni mobilificio consorziato possiede un catalogo dei modelli che è in grado di produrre: tale catalogo è un sottoinsieme del catalogo del consorzio ed assegna ad ogni modello un prezzo di vendita praticato da quello specifico mobilificio. Ogni mobilificio possiede un magazzino di materie prime: in particolare, tale magazzino è rappresentato dal numero di tavole di legno, dal numero di viti e dal numero di chiodi su cui quel mobilificio può contare per la costruzione di mobili. Ogni mobilificio può definire una serie di iniziative promozionali (vedi successivo punto D). Sono richieste le seguenti funzionalità: • Inserimento nuovo mobilificio Il programma richiede all'utente la ragione sociale (verificandone l'unicità) e l'indirizzo del mobilificio, nonché il numero di tavole di legno, viti e chiodi inizialmente presenti in magazzino. • Eliminazione mobilificio Il programma richiede all'utente la ragione sociale del mobilificio da eliminare, richiede conferma e procede all'eliminazione. Se la ragione sociale non corrisponde ad alcuno dei mobilifici consorziati, il software segnala l'errore all'utente e richiede una nuova ragione sociale. • Aggiornamento scorte magazzino Il programma richiede all'utente la ragione sociale del mobilificio sul quale operare ed i nuovi valori da assegnare alle relative scorte di magazzino. Se la ragione sociale non corrisponde ad alcuno dei mobilifici consorziati, il programma segnala l'errore all'utente e richiede una nuova ragione sociale. • Gestione iniziative promozionali VEDI SUCCESSIVO PUNTO D • Visualizzazione mobilifici Il programma presenta all'utente l'elenco dei mobilifici presenti con i relativi dati. Facoltativamente è possibile prevedere una visualizzazione sintetica relativa solo alla ragione sociale ed una dettagliata comprensiva di tutti i dati (catalogo, magazzino, promozioni) C) REALIZZAZIONE PREVENTIVO Sulla base del catalogo dei prodotti offerti dal consorzio, il programma permette all'utente di inserire le informazioni necessarie per la proposta di un preventivo: il nome del cliente, la data di redazione del preventivo, l'elenco dei mobili che fanno parte del preventivo (per ognuno verrà scelto il modello ed indicato il numero di pezzi richiesto). Il programma seleziona tra i mobilifici consorziati quelli che possiedono le seguenti caratteristiche: • possiedono a catalogo tutti i modelli di mobile richiesti dall'utente • hanno in magazzino scorte di materie prime sufficienti a far fronte alla produzione di tutti gli esemplari presenti nel preventivo Se non esiste nessun mobilificio con queste caratteristiche viene dato un opportuno messaggio all'utente, altrimenti per ogni mobilificio selezionato, il programma calcola il valore economico del preventivo e presenta all'utente la lista dei mobilifici selezionati e dei relativi importi calcolati (ordinata per importo crescente). Il valore economico iniziale del preventivo viene affinato sulla base delle promozioni attive (a livello di singolo mobilificio o a livello generale di consorzio) - VEDI SUCCESSIVO PUNTO D. Se viene applicata una promozione essa deve essere opportunamente evidenziata. L'utente decide se procedere all'acquisto, eventualmente selezionando tra quelli proposti il mobilificio dal quale intende acquistare (per default il software propone quello che ha prodotto il preventivo più economico). Il programma registra la transazione ed aggiorna le scorte disponibili per il mobilificio che effettua la vendita sulla base del fabbisogno richiesto per il contratto appena concluso. Il programma permette di visualizzare l'elenco di tutti i contratti conclusi con le relative informazioni. D) GESTIONE PROMOZIONI E SCONTISTICA Il calcolo del valore economico di un preventivo tiene in considerazione, oltre al numero di esemplari acquistati ed al prezzo praticato per ogni modello da ogni singolo mobilificio, anche meccanismi promozionali basati sulla definizione di criteri di scontistica. Tali criteri di scontistica possono essere definiti tanto a livello di consorzio (nel qual caso risultano validi per ogni mobilificio consorziato) quanto a livello di singolo mobilificio. In caso di presenza di più promozioni applicabili deve essere scelta quella che da' luogo al maggiore sconto. Un criterio promozionale è rappresentato da un nome (ad esempio "Ogni diecimila euro te ne regaliamo mille") e può ricadere in due diverse tipologie • promozione basata sul valore complessivo del preventivo: definisce una soglia minima di valore sopra la quale sarà praticato un dato sconto (es: sconto del 10% sugli importi che superano i 10000 euro, ad esempio su un preventivo di 11000 euro viene applicato uno sconto di 1100 euro); • promozione basata sul numero di esemplari acquistati per un certo tipo di mobile: definisce un numero minimo di esemplari sopra il quale sarà praticato un dato sconto (es: sconto del 25% per acquisto di più di 3 esemplari uguali. Ad esempio se vengono acquistate 4 sedie dello stesso tipo al prezzo di 100 euro l'una, viene applicato uno sconto di 100 euro); Sono richieste le seguenti funzionalità: • Inserimento nuova promozione Il programma richiede all'utente di indicare il nome ed il tipo di promozione da inserire ed i relativi dati. L'utente ha la possibilità di associare tale promozione all'intero consorzio o ad un singolo mobilificio consorziato, nel qual caso il programma richiede la scelta del mobilificio in questione • Visualizzazione elenco promozioni attive Il programma presenta l'elenco delle promozioni attive con le relative caratteristiche. • Eliminazione promozione Il programma richiede all'utente di indicare il nome di una promozione, richiede conferma e procede all'eliminazione. Se il nome non è associato ad alcuna promozione segnala l'errore all'utente e richiede un nuovo nome E) GESTIONE CATALOGO MATERIE PRIME (FACOLTATIVO) Il meccanismo di gestione delle materie prime precedentemente descritto, basato sulle tre risorse "numero di tavole di legno", "numero di viti", "numero di chiodi", può essere generalizzato, prevedendo la gestione (aggiunta, eliminazione, lista, modifica) di un catalogo di materie prime ("chiodi", "viti a stella", "viti a taglio", "viti a brugola", "vernice rossa", "vernice nera", "legno di faggio", "legno di rovere", ...) ed indicando per ogni modello il fabbisogno di materie prime scelte dal catalogo (es: "cinquanta chiodi", "trenta viti a stella", "venti tavole di rovere"). F) SALVATAGGIO E CARICAMENTO Il programma permette all'utente di salvare su file tutti i dati rilevanti inseriti e di caricarli al successivo avvio automaticamente o mediante apposita voce di menu. NOTA: Il programma dovrà essere presentato con almeno 5 modelli di mobile e 3 mobilifici e 2 criteri promozionali già inseriti.