|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2012
Messaggi: 15
|
[C] Gestione Magazzino
Salve, devo sviluppare un progetto in C
Devo simulare la gestione di un magazzino...quindi visualizzare i prodotti, acquistarli, aggiornare la scorta. In pratica dovrei eseguire questo: 1. Visualizzare i prodotti (con Codice, Nome, Utilizzo, Quantità, Prezzo) 2. Chiedere al cliente se vuole acquistare un prodotto 3. Dopo l'eventuale acquisto mostrare la scorta aggiornata 4. Visualizzare i prodotti in base all'utilizzo Bene...io mi sono fermato al punto 1 Se volete vi posto quello che ho fatto... Codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct prodotto {int codice;
char nome [20];
char utilizzo [15];
int quantita;
float prezzo;
};
typedef struct prodotto Prodotto;
void main ()
{
Prodotto scorta[7]={{1288, "Tubo", "Idraulica", 4, 10.00},
{1154,"Fil di ferro", "Muratura", 4, 2.50},
{2828,"Chiave inglese","Idraulica", 2, 5.49},
{6549, "Pittura", "Pitturazione",2, 5.99},
{1112, "Pennello", "Pitturazione", 4, 3.99},
{5155, "Chiavi", "Manutenzione", 3, 3.99},
{4856, "Sega", "Falegnameria", 1, 3.99}};
int j; /*Inventario*/
printf("Benvenuti nella ferramenta\n\n");
printf("Quali prodotti vuole acquistare?\n\n");
for (j=0;j<7;j++)
{
printf("Cod.: %d, Nome: %s, Utilizzo: %s, Qta': %d, Prezzo: %.2f\n",scorta[j].codice, scorta[j].nome, scorta[j].utilizzo, scorta[j].quantita, scorta[j].prezzo);
printf("............................................\n");
}
return 0;
}
Ultima modifica di .phoenix : 04-02-2013 alle 11:05. Motivo: . |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
|
Se ancora non avete studiato file e liste e allocazione dinamica della memoria il tuo approccio è corretto. Un piccolo appunto: la main se ritorni 0 deve essere int non void.
Prima cosa farei delle funzioni per gestire i 4 punti. Poi dopo la prima printf farei un ciclo while (con condizione per usicre) dove chiedo all'utente (scanf) che procedura vuole fare. 0 esco dal programma, 1 visualizzo i prodotti, 2 acquisto ecc. Sistemato questo, la visualizzazione è ok. Per quanto riguarda il punto 2-3. Devi fare una scanf e chiedere all'utente quale prodotto vuole acquistare (a parteire dal codice per esempio). Fai un ciclo sulla variabile scorta e veririchi se il codice è presente. Se presente vai a vedere la disponibilità. Se >0 è acquistabile e decrementi il valore = acquisto. Se disponibilità == 0 non è disponibile all'acquisto. Il punto 4 non ho ben capito. Se intendi visualizzare in ordine alfabetico i prodotti in base allla stringa presente campo utilizzo o altro. Se è così devi ciclare la lista e fare un ordinamento. Ultima modifica di airon : 04-02-2013 alle 11:50. Motivo: Correzione |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2008
Città: Roma
Messaggi: 126
|
Intanto dai un'occhiata che ti puo' risultare utile...
http://www.cplusplus.com/reference/cstdio/scanf/
__________________
La forza dei forti sta nel traversare le traversie con occhio sereno! (PK) ... I computer sono esattamente come gli esseri umani: fanno qualsiasi cosa tranne che pensare. (John Van Neumann) Siamo brevi, il mondo è sovraffollato di parole. (Stanisław Jerzy Lec) |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Dec 2012
Messaggi: 15
|
Ciao e grazie per le risposte
Rispondo @airon Non abbiamo ancora studiato le allocazioni dinamiche Per quanto riguarda le funzioni...per il primo punto penso che non serva Il secondo punto è sbagliato Per il 4 punto...si...praticamente devo far visualizzare in ordine alfabetico i prodotti in base al loro utilizzo (che deve essere scelto dall'utente...) Ho apportato un paio di modifiche...però il programma smette di funzionare (spero che sia un problema di pc e non di codice Codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct prodotto {int codice;
char nome [20];
char utilizzo [15];
int quantita;
float prezzo;
};
typedef struct prodotto Prodotto;
int main (void)
{
Prodotto scorta[7]={{1288, "Tubo", "Idraulica", 4, 10.00},
{1154,"Fil di ferro", "Muratura", 4, 2.50},
{2828,"Chiave inglese","Idraulica", 2, 5.49},
{6549, "Pittura", "Pitturazione",2, 5.99},
{1112, "Pennello", "Pitturazione", 4, 3.99},
{5155, "Chiavi", "Manutenzione", 3, 3.99},
{4856, "Sega", "Falegnameria", 1, 3.99}};
int j; /*Inventario*/
int pr;
printf("Benvenuti nella ferramenta\n\nEcco i prodotti disponibili in negozio:\n\n");
for(j=0;j<7;j++)
{
printf("Cod.: %d, Nome: %s, Utilizzo: %s, Qta': %d, Prezzo: %.2f\n",scorta[j].codice, scorta[j].nome, scorta[j].utilizzo, scorta[j].quantita, scorta[j].prezzo);
}
printf("\n\n");
printf("Inserisca il codice del prodotto che vuole acquistare: ",scorta[0].nome,scorta[1].nome,scorta[2].nome,scorta[3].nome,scorta[4].nome,scorta[5].nome,scorta[6].nome);
scanf("%d",&pr);
if(pr==1288 && scorta[pr-1].quantita>0)
{
printf("\nHai acquistato %s.\n\n",scorta[pr-1].nome);
scorta[pr-1].quantita--;
}
if(pr==1288 && scorta[pr-1].quantita==0)
{
printf("Prodotto non disponibile. Guarda bene l'inventario prima di selezionare un prodotto\n\n");
}
}
Ultima modifica di .phoenix : 04-02-2013 alle 12:48. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
|
Il problema è nel codice.
Tu chiedi il codice all'utente. L'utente scrive 1288. Oppure potrebbe benisismo scrivere 0 o 10, o 100. Mettiamo che scrive 1288. IF Codice è 1288 AND scorta[1288-1].quantità > 0 scorta[1288-1] mica esiste... Dovresti fare un ciclo, verificare che il codice inserito è effettivamente presente nel vettore scorta (che è lungo 7 con possibile indice da 0 a 6) e poi verificare la disponibilità..sempre in un ciclo, nello stesso! Ti consiglio di scrivere il tuo algoritmo di risoluzione in pseudo codice e magari fai pure dei diagrammi di flusso e poi, solo poi lo trasformi in C. Ovviamente ti consiglio di studiare meglio i costrutti del codice e i vettori perchè si evince che lo conosci poco. Ciao Ultima modifica di airon : 04-02-2013 alle 15:34. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:36.



















