PDA

Visualizza la versione completa : [C] Gestione lista prodotti del supermercato


tigerjack89
17-02-2012, 11:50
Ciao a tutti!!
Ieri ho sostenuto l'esame di Programmazione in C; chiedo consiglio a quanti di voi vorranno aiutarmi per capire il metodo migliore per impostare un problema del genere.

In pratica la traccia richiedeva di gestire dei prodotti di un supermercato, catalogabili con i nomi "fresco", "alimentare", "detersivo" o "altro". Ogni prodotto è caratterizzato da prezzo di acquisto, prezzo di vendita e un codice. Il prezzo di vendita deve essere sempre superiore a quello di acquisto. Inoltre, i prodotti freschi hanno anche una data di scadenza.

Quello che vogliamo ottenere sono funzioni per:
[list=1]
aggiungere un prodotto alla lista
vendere un prodotto
ottenere il guadagno corrente
controllare le scadenze e ritirare i prodotti scaduti
ritirare prodotti
[/list=1]

Vi spiego i miei ragionamenti un po' per volta, cercando di non appesantire troppo la discussione e di capire se sono giusti o sbagliati. Grazie in anticipo a tutti coloro che vorranno aiutarmi :)

tigerjack89
17-02-2012, 11:59
Prima di passare alle funzioni vere e proprie, partiamo dalla base, dalla definizione di un prodotto e dalle variabili da usare.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

static double guadagno;
char *tipi[] = {"fresco", "alimentare", "detersivo", "altro"};

typedef struct prodotto
{
char *tipo;
double prezzoacq;
double prezzoven;
int quantita;
long codice;
struct prodotto *next;
} Prodotto_t;

Dichiaro una variabile globale guadagno, che andrò di volta in volta ad incrementare o diminuire e che terrà conto del guadagno di giornata.
Dopodichè, creo un'altra variabile globale, tipi, che + un vettore di puntatori, ognuno dei quali punta alle stringhe predefinite. Primo dubbio: è giusta la scelta di un vettore di puntatori? O magari si potrebbe creare un enum? O una union?

Dopodichè passo alla definizione di un nuovo tipo del tipo struttura prodotto. I prodotti sono concatenati in una lista, ragion per cui ogni prodotto contiene un puntatore al prodotto successivo.
Secondo dubbio: i prodotti freschi, a differenza degli altri, devono avere anche un campo per la data di scadenza. Come gestisco la situazione? Creo un campo scadenza per tutti i prodotti, definendolo solo nel caso in cui il prodotto sia fresco e lasciandolo NULL per gli altri? Oppure c'è qualche modo di creare magari un "sottoprodotto" di tipo fresco, che aggiunge a prodotto solo il campo scadenza? E inoltre, il campo scadenza come andrebbe definito? Come stringa?

Grazie mille a tutti :)

tigerjack89
18-02-2012, 11:51
up :)

alka
20-02-2012, 09:42
Originariamente inviato da tigerjack89
Vi spiego i miei ragionamenti un po' per volta, cercando di non appesantire troppo la discussione e di capire se sono giusti o sbagliati.

Per non "appesantire" la discussione, in futuro apri discussioni separate per ogni problema da affrontare, anche se riguarda lo stesso progetto.

tigerjack89
21-02-2012, 11:26
Originariamente inviato da alka
Per non "appesantire" la discussione, in futuro apri discussioni separate per ogni problema da affrontare, anche se riguarda lo stesso progetto.
Vero. Speravo fosse possibile riportare il tutto sotto lo stesso 3d :)

Loading