Visualizzazione dei risultati da 1 a 2 su 2

Discussione: magazzino in C++

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12

    magazzino in C++

    Questo programma che ho scritto dovrebbe simulare la gestione di un magazzino. La funzionalità di aggiornamento dei prodotti però non funziona considerando la stringa che inserisco sempre appartenente al database. Se tolgo questa funzionalità il programma funziona, ma non è certo l' obbiettivo che mi ero prefissato.

    Ecco il codice:

    #include <iostream.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "ordine.h"
    #include <string.h>
    #include <ctype.h>
    FILE *fp;
    ordine ord[100];
    int corrente=0;
    char modello[20];
    int old;
    int modEsistente;
    void scrivi();
    void apri();
    int main() {
    apri();
    char scelta;
    do {
    label:
    cout<<"Corrente="<<corrente<<endl;
    modEsistente=0;
    cout<<"Inserisci il nome del modello ";
    cin>>modello;
    for(old=0; old<corrente; old++) {
    cout<<ord[old].mod<<"-"<<modello;
    if(strcmp(ord[old].mod, modello)) {
    modEsistente=1;
    lb:
    cout<<"L' articolo e' presente nel database, vuoi modificare il suo prezzo unitario? (y/n) ";
    cin>>scelta;
    if((scelta=='y')||(scelta=='Y')) {
    cout<<"Inserisci prezzo unitario ";
    cin>>ord[old].pru;
    }
    if((scelta=='n')||(scelta='N')) break;
    if((scelta!='y')||(scelta!='Y')) {
    cout<<"Puoi immettere solamente y/n\n";
    goto lb;
    }
    }
    if(modEsistente==1) break;
    }
    if(!modEsistente) {
    corrente++;
    cout<<"Inserisci il prezzo unitario ";
    cin>>ord[corrente].pru;
    cout<<"Inserisci il numero dei modelli da acquistare ";
    cin>>ord[corrente].quant;
    }
    if(modEsistente) {
    char quantita[5];
    int temp;
    cout<<"Inserisci il numero di modelli da aggiungere a quelli gia' presenti ";
    cin>>quantita;
    temp=(int)ord[old].quant+(int)quantita;
    ord[old].quant[0]='m';
    }
    do {
    cout<<"Le informazioni sono corrette? (y/n) ";
    cin>>scelta;
    (scelta=='Y')?scelta='y':0;
    (scelta=='N')?scelta='n':0;
    if(scelta=='n')
    goto label;
    else if(scelta!='y')
    cout<<"Puoi immettere solamente y/n"<<endl;
    } while(scelta!='y');
    corrente++;
    scrivi();
    yn:
    cout<<"Desideri effettuare un altro ordine? (y/n) ";
    cin>>scelta;
    (scelta=='Y')?scelta='y':0;
    (scelta=='N')?scelta='n':0;
    if(scelta=='n')
    exit(0);
    else if(scelta!='y') {
    cout<<"Puoi immettere solamente y/n"<<endl;
    goto yn;
    }
    } while(scelta=='y');
    return 0;
    }
    void apri() {
    char n;
    fflush(stdin);
    if((fp=fopen("C:\\magazzino.dat","ab+"))==NULL) {
    cout<<"Errore nell' apertura del file\n";
    exit(1);
    }
    while(!feof(fp)) {
    fread(&ord[corrente].mod, sizeof(ord[corrente].mod), 1, fp);
    fread(&ord[corrente].pru, sizeof(ord[corrente].pru), 1, fp);
    fread(&ord[corrente].quant, sizeof(ord[corrente].quant), 1, fp);
    fread(&n, sizeof(n), 1, fp);
    corrente++;
    }
    corrente--;
    }

    void scrivi() {
    char s;
    if(!modEsistente) {
    while(!feof(fp)) {
    fread(&s, sizeof(s), 1, fp);
    }
    if(fwrite(&ord[corrente].mod, sizeof(ord[corrente].mod), 1, fp)!=1) {
    cout<<"Impossibile scrivere su file!\n";
    exit(1);
    }
    fwrite(&ord[corrente].pru, sizeof(ord[corrente].pru), 1, fp);
    fwrite(&ord[corrente].quant, sizeof(ord[corrente].quant), 1, fp);
    s='\n';
    fwrite(&s, sizeof(s), 1, fp);
    rewind(fp);
    fflush(fp);
    }
    if(modEsistente) {
    for(int i=0; i<corrente; i++) {
    if(fwrite(&ord[i].mod, sizeof(ord[i].mod), 1, fp)!=1) {
    cout<<"Impossibile scrivere su file!\n";
    exit(1);
    }
    fwrite(&ord[i].pru, sizeof(ord[i].pru), 1, fp);
    fwrite(&ord[i].quant, sizeof(ord[i].quant), 1, fp);
    s='\n';
    fwrite(&s, sizeof(s), 1, fp);
    }
    fflush(fp);
    rewind(fp);
    }
    }



    /Aiuto!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12
    ordine.h:


    #include <iostream.h>
    #include <string.h>

    class ordine {
    public:
    char mod[20];
    char pru[5];
    char quant[5];
    };

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.