Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema progetto
Forum - C/C++ - problema progetto

Avatar
ntani00 (Normal User)
Newbie


Messaggi: 1
Iscritto: 31/12/2009

Segnala al moderatore
Postato alle 15:02
Giovedì, 31/12/2009
Buon pomeriggio a tutti sono uno studente e sto realizzando un programma per la gestione di un aereoporto.
Dovrei realizzare una parte di programma riservata all'utente che gli consenta di richiedere le combinazioni di voli necessarie per andare da una città all'altra.
Questo è il codice che ho realizzato:



#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <fstream>
using namespace std;

//STRUTTURE DI DATI

struct ora1
{ int ora;
  int minuti;

};

struct volo1
{ char id_volo[6];
  ora1 ora_partenza;
  ora1 ora_arrivo;
  char cod_partenza[6];
  char cod_arrivo[6] ;
  int canc;
};

struct aero1
{char id_aeroporto[5];
char nome[21];
char citta[21];
char nazione[21];
int fusorario;
int canc;
};

aero1 aeroporto;
volo1 volo;

void gotoxy( int x, int y ){
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ), coord);
}

//DICHIARAZIONE DI TUTTE LE FUNZIONI E DELLE PROCEDURE

void SMISTAMENTO2(int scelta);
void VIS_AEROPORTO();
void VIS_VOLO();
void MASCHERA_VOLO();
void INSERIMENTO_VOLO();
void INSERIMENTO_AEROPORTO();
void RIC_CITTA (char citta[21],int &a);
void RICERCA_AEROPORTO(int x);
void RICERCA_VOLO(int x);
void MODIFICA_AEROPORTO();
void MODIFICA_VOLO();
void CANCELLAZIONE_LOGICA_AEROPORTO();
void CANCELLAZIONE_LOGICA_VOLO();
void CANCELLAZIONE_FISICA_AEROPORTO();
void CANCELLAZIONE_FISICA_VOLO();
void RIPRISTINO_AEROPORTO();
void RIPRISTINO_VOLO();
void LOGIN();
void MENU_RICERCA_AEROPORTO();
void MENU_RICERCA_VOLO();
int  MENU_CANCELLAZIONE ();
int  MENU_VOLO_AEROPORTO();
int  MENU_ADMIN();
int MENU_UTENTE();
int  MENU1();
void CANCELLAZIONE_AEROPORTO ();
void CANCELLAZIONE_VOLO ();
void SMISTAMENTO2(int scelta);
void SMISTAMENTO1(int scelta);


//PROGRAMMA

//PARTE AMMINISTRAZIONE

//Maschere per il programma
void VIS_AEROPORTO()
{system("cls");
gotoxy(32,2);
cout<<"INSERIMENTO AEROPORTO";
gotoxy(5,5);
cout<<"Codice:_____";
gotoxy(34,5);
cout<<"Nome:____________________";
gotoxy(5,7);
cout<<"Citta':____________________";
gotoxy(34,7);
cout<<"Nazione:____________________";
gotoxy(5,9);
cout<<"Fusorario:___";
}

void VIS_VOLO() //maschera per l'inserimento del volo
{system("cls");
gotoxy(32,2);
cout<<"INSERIMENTO VOLO";
gotoxy(5,5);
cout<<"Codice:_____";
gotoxy(20,5);
cout<<"Ora Partenza:__:__";
gotoxy(41,5);
cout<<"Ora Arrivo:__:__";
gotoxy(5,7);
cout<<"Citta' Partenza:____________________";
gotoxy(43,7);
cout<<"Citta' Arrivo:____________________";
gotoxy(5,20);
cout<<"Codice Aeroporto Partenza:_____";
gotoxy(43,20);
cout<<"Codice Aeroporto Arrivo:_____";
}

void MASCHERA_VOLO()  //maschera per la ricerca, la modifica, la cancellazione e il ripristino del Volo
{system("cls");
gotoxy(5,5);
cout<<"Codice:_____";
gotoxy(20,5);
cout<<"Ora Partenza:__:__";
gotoxy(41,5);
cout<<"Ora Arrivo:__:__";
gotoxy(5,7);
cout<<"Codice Aeroporto Partenza:_____";
gotoxy(43,7);
cout<<"Codice Aeroporto Arrivo:_____";
}

//INSERIMENTO
//Inserimento Aeroporto
void INSERIMENTO_AEROPORTO()
{ char risp[2];
  FILE *aero;
if((aero=fopen("aeroporto.txt","r"))==NULL)aero=fopen("aeroporto.txt","w+");
    else { fclose(aero);
       aero=fopen("aeroporto.txt","r+");
     }
      while (!feof(aero))
    {fread(&aeroporto,sizeof(struct aero1),1,aero);
     if( feof(aero) )
        break;}
  VIS_AEROPORTO();
   gotoxy(14,24);
    cout<<"Premi * per terminare";
    gotoxy(12,5);
    gets(aeroporto.id_aeroporto);
    while (strcmp(aeroporto.id_aeroporto,"*")!=0)
    {
     gotoxy(39,5);
     gets(aeroporto.nome);
     gotoxy(12,7);
     gets(aeroporto.citta);
     gotoxy(42,7);
     gets(aeroporto.nazione);
     gotoxy(15,9);
     cin>>(aeroporto.fusorario);
     cin.ignore();
     aeroporto.canc=0;
     gotoxy(32,11);
     cout<<"Confermi?(s/n) ";
     do
     {
      gotoxy(47,11);
      cin>>risp;
      cin.ignore();
     }while(!((strcmp(risp,"n")==0)||(strcmp(risp,"N")==0)||(strcmp(risp,"S")==0)||(strcmp(risp,"s")==0)));
      if ((strcmp(risp,"s")==0)||(strcmp(risp,"S")==0)) {
      fwrite(&aeroporto,1, sizeof(struct aero1),aero);                      
                    
     }
      VIS_AEROPORTO();    
      gotoxy(14,24);
      cout<<"Premi * per terminare";
      gotoxy(12,5);
      gets(aeroporto.id_aeroporto);    
    }
    fclose(aero);      
    return;      
    }
    
//Inserimento Volo
void INSERIMENTO_VOLO()
{ int p;
    char citta[21];
    char citta2[21];
    char risp[2];
FILE *fvolo;
  if((fvolo=fopen("volo.txt","r"))==NULL)
    fvolo=fopen("volo.txt","w+");
   else
    {
      fclose(fvolo);
      fvolo=fopen("volo.txt","r+");
    }
  while (!feof(fvolo))
  {
     fread(&volo,sizeof(struct volo1),1,fvolo);
     if( feof(fvolo) )
        break;
     }
    VIS_VOLO();
    gotoxy(14,24);
    cout<<"Premi * per terminare";
    gotoxy(12,5);
    gets(volo.id_volo);
    while (strcmp(volo.id_volo,"*")!=0)
    {
    do{
       gotoxy(33,5);
       cin>>volo.ora_partenza.ora;
       cin.ignore();
       }while(volo.ora_partenza.ora<0||  volo.ora_partenza.ora>24);    
    do{
        gotoxy(36,5);
        cin>>volo.ora_partenza.minuti;
        cin.ignore();
       }while(volo.ora_partenza.minuti<0||  volo.ora_partenza.minuti>59);  
    do{
       gotoxy(52,5);
       cin>>volo.ora_arrivo.ora;
       cin.ignore();
       }while(volo.ora_arrivo.ora<0||  volo.ora_arrivo.ora>24);    
    do{
        gotoxy(55,5);
        cin>>volo.ora_arrivo.minuti;
        cin.ignore();
       }while(volo.ora_arrivo.minuti<0||  volo.ora_arrivo.minuti>59);
    gotoxy(21,7);
    gets(citta);
    p=1;
    RIC_CITTA(citta,p);
    gotoxy(31,20);
    gets(volo.cod_partenza);
    gotoxy(57,7);
    gets(citta2);
    p=2;
    RIC_CITTA(citta2,p);
    gotoxy(67,20);
    gets(volo.cod_arrivo);    
    gotoxy(32,22);
    cout<<"Confermi?(s/n) ";
    do
     {
      gotoxy(47,22);
      cin>>risp;
      cin.ignore();
     }while(!((strcmp(risp,"n")==0)||(strcmp(risp,"N")==0)||(strcmp(risp,"S")==0)||(strcmp(risp,"s")==0)));
    if ((strcmp(risp,"s")==0)||(strcmp(risp,"S")==0))
     fwrite(&volo,1, sizeof(struct volo1),fvolo);  
    VIS_VOLO();
    gotoxy(14,24);
    cout<<"Premi * per terminare";
    gotoxy(12,5);
    gets(volo.id_volo);            
  }
fclose(fvolo);
return;
    }

//Ricerca parziale dell'aeroporto    
void RIC_CITTA (char citta[21],int &a)
{
  int y;
  int x1;
  int x2;
  y=11;
  if (a==1){
   x1=5;
   x2=12;}
   else
   {x1=43;
    x2=50;      
   }
  char citta2[6];
  gotoxy(x1,9);
  cout<<"Codice Nome Aeroporto";
   FILE *aero;
   aero=fopen("aeroporto.txt","r+");
  int trovato=0;
  while  (!feof(aero))
  {fread(&aeroporto,sizeof(struct aero1),1,aero);
     if( feof(aero) )
        break;

  if (strcmp(aeroporto.citta,citta)==0 &&(aeroporto.canc==0))
  { gotoxy(x1,y);
    cout<<aeroporto.id_aeroporto;
    gotoxy(x2,y);
    cout<<aeroporto.nome;
    y+=1;    
   }
   }      
   if (y==11){
    gotoxy(x1,y);      
    cout<<"Nessun aeroporto con quel nome";
    gotoxy(21,7);
    cin>>(citta2);
    cin.ignore();
    RIC_CITTA(citta2,a);        
    }
  return;
}    
  

// MENU''
// parte in cui sono disegnati tutti i menu' del programma

int MENU_VOLO_AEROPORTO()
{
    int scelta2;
    do
    {
        system("cls");
        cout<<"1 - Volo"<<endl;
        cout<<"2 - Aeroporto"<<endl;
        cout<<"Operazione scelta: ";
        cin>>scelta2;
        cin.ignore();
    }while(scelta2<1||scelta2>2);
    return scelta2;
}

int MENU_ADMIN()
{
    int scelta;
    do
    {  
        system("cls");
        cout<<"Menu'' Amministratore: "<<endl;
        cout<<"1 - Inserimento"<<endl;
        cout<<"2 - Modifica"<<endl;
        cout<<"3 - Ricerca"<<endl;
        cout<<"4 - Cancellazione"<<endl;
        cout<<"5 - Ripristino"<<endl;
        cout<<"6 - Uscita"<<endl;
        cout<<"Operazione scelta: ";
        cin>>scelta;
    }while(scelta<1||scelta>7);
    return scelta;
}
int MENU_UTENTE()
{
    int scelta;
    do
    {  
        system("cls");
        cout<<"Menu'' Utente: "<<endl;
        cout<<"1 - Ricerca voli"<<endl;
        cout<<"2 - Acquista Volo"<<endl;
        cout<<"3 - Uscita"<<endl;
        cout<<"Operazione scelta: ";
        cin>>scelta;
    }while(scelta<1||scelta>3);
    return scelta;
}

int MENU1()
{
    int scelta;
    do
    {   scelta=0;
        system("cls");
        cout<<"Menu' Principale:"<<endl;
        cout<<"1 - Amministratore"<<endl;
        cout<<"2 - Utente"<<endl;
        cout<<"3 - Uscita"<<endl;
        cout<<"Operazione scelta: ";
        cin>>scelta;
    }while( scelta<1||scelta>4);
    return scelta;
}

//Login nella parte amministratore

void LOGIN()
{   int scelta;
    int psw;
    cout<<"Inserire la password: ";
    cin>>psw;
    if (psw==0000)
    {
        scelta=MENU_ADMIN();
        while(scelta!=6)
        {
            SMISTAMENTO2(scelta);
            scelta=MENU_ADMIN();
            return;
        }
    }
    else
    {
        cout<<"Password errata!"<<endl;
        system ("PAUSE");
        return;
    }
}

// SMISTAMENTI
// Parte in cui ci sono tutti gli smistamenti del programma, cioè quelli che indirizzano le scelte dell'utente nei vari menù
// Parametri passati: scelta, scelta2, scelta3

void SMISTAMENTO2(int scelta)
{ int scelta2;
    switch(scelta)
    {
        case 1 :
            scelta2=MENU_VOLO_AEROPORTO();
            switch(scelta2)
            {
                case 1 :
                    INSERIMENTO_VOLO();
                    break;
                case 2 :
                    INSERIMENTO_AEROPORTO();
                    break;
            }
            break;
        
    }            
    return;
}

void SMISTAMENTO1(int scelta)
{
    switch(scelta)
    {
        case 1 :
            LOGIN();
            break;
        case 2 :
             MENU_UTENTE();
break;
    }
    return;
}

//Main Principale

int main()
{ int scelta;
    scelta=MENU1();
    
    while (scelta!=3)
    {
        SMISTAMENTO1(scelta);
        scelta=MENU1();
    }
    system ("PAUSE");
    return EXIT_SUCCESS;    
}



potete darmi una mano? grazie

EDIT by HeDo: Racchiudi il codice tra i tag code

Ultima modifica effettuata da HeDo il 01/01/2010 alle 13:11
PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 19:52
Giovedì, 31/12/2009
Ciao!
1) Quando posti un codice racchiudilo nei tag code perchè così non si capisce nulla
2) Se vuoi che qualcuno ti aiuti devi darci qualche informazione in più. Qual'è il tuo problema? Hai già provato a scrivere le funzioni che ti servono? Se si cos'è che non va? Dove sono?
Il tuo sorgente è piuttosto lunghetto e la tua richiesta piuttosto vaga. Devi darci più informazioni e soprattutto nella maniera più chiara possibile!

Ultima modifica effettuata da Matthew il 31/12/2009 alle 19:52
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 7:03
Venerdì, 01/01/2010
Quoto matthew, per cosa ti serve una mano?

ps. se usi C++ e usi pure le librerie, tanto vale che usi string classe stringa che è fatta per il c++! ^^'

PM Quote