Domanda Archiviatore in c++

Stato
Discussione chiusa ad ulteriori risposte.

agadir92

Utente Silver
26 Ottobre 2008
66
13
0
73
Ultima modifica:
xD titolo bestia comunque è un programma interamente creato da me in c++ per archiviare dei dati in un file esterno e di effettuare ricerche all interno del file per poi stamparne i risultati.
ho usato tutte procedure i valore dei vettore all interno delle procedure sono memorizzati per indirizzo
chiedete per qualsiasi dubbio e commentate:
Codice:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include <dir.h>
using namespace std;
#define nf "c:\\fatture\\fatture.dat"
struct fattura{
              char codice_cliente[255];
              char codice_prodotto[255];
              int qnt;
              int gg;
              int mm;
              int aa;
              };
void carica();
void lettura(fattura v[100]); 
void svuota();  
void cerca_cp(fattura v[100]); 
void cerca_cc(fattura v[100]);          
main()
{

 FILE *a;
 a=fopen("c:\\fatture\\fatture.dat","r");
 if(a==NULL)
 {     
 int stat;
 stat = mkdir("c:\\fatture");
 char* filename = "c:\\fatture\\fatture.dat";
 ofstream fout ( filename );
 }



 int s;
 fattura v[1000];    
 do{
    lettura(v);     
    cout<<endl;
    cout<<"1.Carica fattura."<<endl;
    cout<<"2.Cerca fatture (codice prodotto)."<<endl;
    cout<<"3.Cerca fatture (codice cliente)."<<endl;
    cout<<"4.Svuota archivio."<<endl;
    cout<<"5.Esci."<<endl<<endl;
    cout<<"Scegli operazione: ";
    cin>>s;
    cout<<endl<<endl;
    switch (s)
             {
              case 1:
                    carica();
              break;
              case 2:
                    cerca_cp(v);
              break; 
              case 3:
              cerca_cc(v);
              break;          
              case 4:
                    svuota();
                    cout<<"Archivio svuotato!\n";
              break;     
             }
   }while(s!=5);                    
return 0;            
}
void carica()
{
 fattura cr;    
 cout<<"Inserisci codice cliente:"<<endl;
 cin>>cr.codice_cliente;
 cout<<"Inserisci codice prodotto:"<<endl;
 cin>>cr.codice_prodotto;
 cout<<"Inserisci quantita\':"<<endl;
 cin>>cr.qnt;
 cout<<"Inserisci data in formato gg/mm/aaaa:"<<endl;
 cout<<"giorno: ";
 cin>>cr.gg;
 cout<<"mese: ";
 cin>>cr.mm;
 cout<<"anno: ";
 cin>>cr.aa;
 FILE *f;
 f=fopen(nf,"a");
 fprintf(f,"%s\n",cr.codice_cliente);
 fprintf(f,"%s\n",cr.codice_prodotto);
 fprintf(f,"%i\n",cr.qnt);
 fprintf(f,"%i\n",cr.gg);
 fprintf(f,"%i\n",cr.mm);
 fprintf(f,"%i\n",cr.aa);
 fclose(f);
 cout<<"Scrittura eseguita con successo!"<<endl;
}
void lettura(fattura v[1000])
{
 FILE *f;
 f=fopen(nf,"r");
 int i;
 for(i=0;i<1000;i++)
    {
    fscanf(f,"%s\n",&v[i].codice_cliente);
    fscanf(f,"%s\n",&v[i].codice_prodotto);
    fscanf(f,"%i\n",&v[i].qnt);
    fscanf(f,"%i\n",&v[i].gg);
    fscanf(f,"%i\n",&v[i].mm);
    fscanf(f,"%i\n",&v[i].aa);
    } 
 fclose(f);
}                           
void svuota()
{
 FILE *f;
 f=fopen(nf,"w");
 fclose(f);
}    
void cerca_cp(fattura v[100])
{
 int i;    
 string x;

 cout<<"Inserisci il codice prodotto: ";
 cin>>x;
 bool trovati=false;
for(i=0;i<100;i++)
    {                          
     if(x==v[i].codice_prodotto)
       {
        cout<<endl;
        cout<<"Codice prodotto: "<<v[i].codice_prodotto<<endl;
        cout<<"Codice cliente: "<<v[i].codice_cliente<<endl;
        cout<<"Quantita\': "<<v[i].qnt<<endl;
        cout<<"Data: "<<v[i].gg<<"/"<<v[i].mm<<"/"<<v[i].aa<<endl;
        trovati=true;
        }
    }
if(!trovati)
   cout<<"Nessuna fattura trovata!\n";                                                  
}                     
void cerca_cc(fattura v[100])
{
 bool trovati=false;    
 int i;    
 string x;

 cout<<"Inserisci il codice cliente: ";
 cin>>x;
 
for(i=0;i<100;i++)
    {                          
     if(x==v[i].codice_cliente)
       {
        cout<<endl;
        cout<<"Codice cliente: "<<v[i].codice_cliente<<endl;
        cout<<"Codice prodotto: "<<v[i].codice_prodotto<<endl;
        cout<<"Quantita\': "<<v[i].qnt<<endl;
        cout<<"Data: "<<v[i].gg<<"/"<<v[i].mm<<"/"<<v[i].aa<<endl;
        trovati=true;
        }
    } 
if(!trovati)
   cout<<"Nessuna fattura trovata!\n";                                                  
}

compilate e provatelo.
EDITATO:creerà in automatico directory e file :)
 
aga, il modo più semplice e veloce per crearla su window è col DOS

Codice:
if(!DirectoryFound)
  system("md C:\\fatture"); //creo la cartella
else
....
 
Ultima modifica:
grz steph lo aggiungo subito :)
edit:non la crea, come controlla se l if che controlla la directory da come risultato 1? occorre una funzione...
 
grz steph lo aggiungo subito :)
edit:non la crea, come controlla se l if che controlla la directory da come risultato 1? occorre una funzione...

no aspetta, tu la cartella la puoi creare a prescindere... se esiste già NON la sovrascrive, se non esiste la crea dal nulla.
 
Ultima modifica:
quindi devo solo mettere all inizio del programma
system("md C:\\fatture");
se esiste non la sovrascrive in automatico provo
edit:la cartella la crea ma se voglio crearvi all interno un file di nome fatture.dat e scrivo come percorso c:\\fatture\\fatture.dat quel fatture.dat lo crea come cartella non come file, quindi come posso fare adesso x crearvi il file all interno? grz
EDIT:soluzione trovata, creerà in automatico directory e file, rivedi il codice steph
 
Stato
Discussione chiusa ad ulteriori risposte.