La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progetto a.a. 2001-2002 ( Modulo A ) Un file di testo ARTICOLI.DAT contiene dei prodotti da vendere (max 10) con le seguenti caratteristiche: ::= descrizione.

Presentazioni simili


Presentazione sul tema: "Progetto a.a. 2001-2002 ( Modulo A ) Un file di testo ARTICOLI.DAT contiene dei prodotti da vendere (max 10) con le seguenti caratteristiche: ::= descrizione."— Transcript della presentazione:

1 Progetto a.a ( Modulo A ) Un file di testo ARTICOLI.DAT contiene dei prodotti da vendere (max 10) con le seguenti caratteristiche: ::= descrizione del prodotto ::= carattere sentinella ::=PZ | KG ::= costo in lire ::= percentuale dIVA : STRING[Lmax] = ^ : STRING[2] : integer ARTICOLI.DAT : text

2 Sviluppo dellalgoritmo bicchiere di plastica^PZ 8 20 piatto di plastica^PZ arance ^KG patate ^KG ARTICOLI.DAT Procedure INIZIALIZZA: assegna (assign) alla variabile Articoli il file fisico ARTICOLI.DAT ; prepara (reset) il file per la lettura bicchiere di plastica^PZ 8 20 prodotti: array[1..10] of STRING[Lmax] unita: array[1..10] of STRING[2] costo: array[1..10] of integer iva: array[1..10] of integer Procedure MostraArticolo: legge un rigo dal file di testo (procedura LeggiRigo); lo divide nelle sue parti e registra ogni parte come valore di vettori opportunamente definiti (procedura RegistraArticoli); mostra in output il contenuto del rigo per i clienti

3 Procedure AperturaCassa: si possono scegliere due vettori: uno per i tagli in Euro e uno per indicare i pezzi presenti in cassa per ogni taglio (RegistraTagli). Si calcola inoltre il totale di cassa di partenza, posto come primo elemento di un array per il bilancio giornaliero; la procedura stamperà sullo schermo la tabella corrispondente alla configurazione iniziale della cassa (StampaCassa). TagliCassa: array[1..14] of real PezziPerTaglio: array[1..14] of integer Procedure AcquistoCliente: per ogni prodotto disponibile il cliente ne sceglie la quantità (PZ o KG) che vuole acquistare (SceltaProdotti), immettendo il valore da standard input (tastiera); registriamo lacquisto (RegitraAcquisto) in un vettore, che riporta le quantità richieste dal cliente per ogni prodotto Acquisti Cliente N.1 bicchiere di plastica PZ: quantità=500 piatto di plastica PZ: quantità=200 arance KG: quantità=0 patate KG: quantità=10 acquisto: array[1..10] of integer Bilancio: array[1..2] of real

4 Procedure StampaFattura - dopo che il cliente ha registrato il suo acquisto sullo schermo viene stampato il corpo della fattura: : STRING[Lmax] prodotti[i]; : integer acquisto[i]; : integer costo[i]; : real ApprossimaEuro(costo[i]/ ); : integer costo[i]*acquisto[i]; : real *acquisto[i]; : integer iva[i]; Lultima riga conterrà il totale della spesa senza iva (detto Totale Imponibile), il Totale dellimposta Iva e il Totale della fattura: : real : real {( *iva[i])/100} : real + FATTURA N.1 Descrizione Quantità Prezzo U L Prezzo U E Totale L Totale E IVA % bicchiere di plastica , ,07 20 piatto di plastica , ,48 20 patate , ,50 4 Totale Imponibile=20,05 Imposta Iva=1,53 Totale Fattura=21,58

5 Riepilogo delle strutture fin qui considerate for i=1 to Progetto MostraArticolo: LeggiRigo; RegistraArticolo; StampaProdotto; 1 Inizializza file prodottibicchierepiattoarance patate unitàPZ KG costo iva [1][2][3][4] I prodotti in vendita oggi sono: bicchierePZ820 piattoPZ2420 aranceKG25004 patateKG30004

6 ... TagliCassa PezziPerTaglio [1][2][3][4][11][12][13][14] Acquisti Cliente N.1 bicchiere PZ:quantità=500 piatto PZ:quantità=200 arance KG:quantità=0 patate KG:quantità=10 acquisto [1][2][3][4] FATTURA N.1 Descrizione Quantità Prezzo U L Prezzo U E Totale L Totale E IVA % bicchiere di plastica , ,07 20 piatto di plastica , ,48 20 patate , ,50 4 Totale Imponibile=20,05 Imposta Iva=1,53 Totale Fattura=21,58 1 AperturaCassa RegistraTagli; StampaCassa; for i=1 to Acquisto: SceltaProdotti; RegistraAcquisto; StampaFattura; Bilancio Giornaliero TotaleCassa iniziale TotaleFatturato parziale

7 Procedura di pagamento del cliente Al momento del pagamento il cliente può pagare a fronte del totale fattura con le seguenti modalità: Totale esatto in euro (aggiornare solo i tagli in cassa) Cifra superiore in euro (calcolare il resto e aggiornare i tagli in cassa) ……………………………………………………………………………... Procedure Pagamento: al cliente nellatto del pagamento, viene chiesto con quanti pezzi vuole pagare per ogni taglio (RegistraPagamento) se il cliente paga la cifra esatta in euro, viene semplicemente aggiornata la cassa con i nuovi pezzi dati dal cliente; se la cifra pagata dal cliente è superiore a quella richiesta, viene calcolato prima il resto (CalcolaResto) suddiviso per tagli presenti in cassa e poi si passa allaggiornamento della cassa PezziPagamento: array[1..14] of integer Pseudo Codice aggiornamento senza resto For i=1 to 14 do PezziPerTaglio[i] PezziPerTaglio[i] +PezziPagamento[i]; Pseudo Codice aggiornamento con resto For i=1 to 14 do PezziPerTaglio[i] (PezziPerTaglio[i] +PezziPagamento[i]) - PezziResto[i]; PezziResto: array[1..14] of integer

8 Pagamento RegistraPagamento AggiornaCassa Cifra Pagata Esatta SINO CalcolaResto AggiornaCassa Totale da Pagare = Euro TagliCassa PezziPerTaglio PezziPagamento Euro - PezziResto Euro PezziPerTaglio =

9 Chiusura Cassa A fine giornata (dopo ad esempio 5 clienti) fare il bilancio di cassa mostrando: : real Bilancio[1]; : real Bilancio[2] (aggiornato con il totale dei 5 clienti) : real TagliCassa[i]*PezziPerTaglio[i] (sul valore aggiornato del vettore PezziPerTaglio dopo 5 clienti); La tabella dei tagli in cassa dopo 5 clienti; : integer ParteIntera( * ). Chiusura Cassa: Totale apertura Cassa= xxxxx Totale fatturato= yyyyy Totale chiusura cassa= zzzzz Situazione Cassa Totale Lire= wwwww

10 Note di progetto Nella procedura di pagamento, considerare le seguenti ulteriori modalità di pagamento: Totale esatto in lire (aggiornare una cassa in lire solo per totali e non per tagli); Cifra superiore in lire (calcolare il resto in euro e aggiornare i tagli in cassa euro e il totale cassa lire); Prevedere i casi di mancanza di resto per mancanza dei tagli giusti invitando il cliente a cambiare lui o a comprare altri prodotti. Nel passaggio da lire ad euro tenere presente la seguente circolare ministeriale ( 1 euro=1936,27 lire ). Circolare del 23/12/1998 n Emanato da Ministero delle Finanze ………………………….. In presenza delle condizioni sopra evidenziate l'articolo in rassegna impone di utilizzare l'importo convertito in euro con almeno: - cinque cifre decimali per gli importi originariamente espressi in unita' di lire (da 1 a 9 lire); - quattro cifre decimali per gli importi originariamente espressi in decine di lire (da 10 a 99 lire); - tre cifre decimali per gli importi originariamente espressi in centinaia di lire (da 100 a 999 lire); - due cifre decimali per gli importi originariamente espressi in migliaia di lire (da lire in poi).


Scaricare ppt "Progetto a.a. 2001-2002 ( Modulo A ) Un file di testo ARTICOLI.DAT contiene dei prodotti da vendere (max 10) con le seguenti caratteristiche: ::= descrizione."

Presentazioni simili


Annunci Google