Gestione voli in c con grafi

di il
8 risposte

Gestione voli in c con grafi

Buongiorno devo fare un progetto con i grafi in c ma ho un problema non riesco a collegare l'amministratore con l'utente in pratica l'amministratore può inserire città o eliminarle ma se tipo inserisco la città poi se rifaccio partire il programma questa città non rimane memorizzata nell'elenco delle città cosi anche per la rimozione potete aiutarmi? posto il codice:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "Graph.h"
#include "List.h"
#include "Menu.h"
#include <string.h>
#define MAXCITTA 7
#define MAXEMAILAMMINISTRATORE  20
#define MAXEMAILPWDADMINISTRATOR 7
#define MAXDELETECITTA 7
#define MAXTRATTE 40
#define MAXDELETETRATTE 40
#define MAXEMAIL 20
#define MAXPWD 7
#define MAXCITTAPARTENZA 30

int main() {
    int sceltaUt2;
    int sceltaUt1;
    int scelta;
    int sceltaUt;
    int sceltaAmministratore;
    char cittaPartenza[MAXCITTAPARTENZA];
    char email[MAXEMAIL];
    char pwd[MAXPWD];
    char deleteCity[MAXDELETECITTA];
    char city[MAXCITTA];
    char emailAdministrator[MAXEMAILAMMINISTRATORE];
    char pwdAdministrator[MAXEMAILPWDADMINISTRATOR];
    Graph g = NULL;
  //inizializzo matrice con città
 char** nomiCitta = (char**) calloc(20, sizeof(char*));
  for(int i=0; i<20; i++) nomiCitta[i] = (char*) calloc(256, sizeof(char));
  strcpy(nomiCitta[0],  "Napoli");
  strcpy(nomiCitta[1],  "Roma");
  strcpy(nomiCitta[2],  "Milano");
  strcpy(nomiCitta[3],  "Torino");
  strcpy(nomiCitta[4],  "Salerno");
  strcpy(nomiCitta[5],  "Praga");
  strcpy(nomiCitta[6],  "Bari");
  strcpy(nomiCitta[7],  "Londra");
  strcpy(nomiCitta[8],  "Cagliari");
  strcpy(nomiCitta[9],  "Venezia");
  strcpy(nomiCitta[10], "Calabria");
  strcpy(nomiCitta[11], "Firenze");
  strcpy(nomiCitta[12], "Palermo");
  strcpy(nomiCitta[13], "Catania");
  strcpy(nomiCitta[14], "Parma");
  strcpy(nomiCitta[15], "Verona");
  strcpy(nomiCitta[16], "Bergamo");
  strcpy(nomiCitta[17], "Bolzano");
  strcpy(nomiCitta[18], "Perugia");
  strcpy(nomiCitta[19], "Taranto");

                g = initGraph(20,nomiCitta); //popolo grafo
    addEdge(g, getCityIndexByName(g, "Milano"), getCityIndexByName(g, "Roma"), 30, 4.78);
    addEdge(g, getCityIndexByName(g, "Napoli"), getCityIndexByName(g, "Milano"),2 ,7.1);
    addEdge(g, getCityIndexByName(g, "Roma"), getCityIndexByName(g, "Milano"),3, 15.3);
    addEdge(g, getCityIndexByName(g, "Torino"), getCityIndexByName(g, "Salerno"), 4 , 17.1);
    addEdge(g, getCityIndexByName(g, "Verona"), getCityIndexByName(g, "Praga"), 4 , 40.5);
    addEdge(g, getCityIndexByName(g, "Praga"), getCityIndexByName(g, "Salerno"), 5, 38.2);
    addEdge(g, getCityIndexByName(g, "Salerno"), getCityIndexByName(g, "Praga"), 7, 21.3);
    addEdge(g, getCityIndexByName(g, "Firenze"), getCityIndexByName(g, "Londra"), 9, 10.1);
    addEdge(g, getCityIndexByName(g, "Bari"), getCityIndexByName(g,  "Perugia"), 10, 42.2);
    addEdge(g, getCityIndexByName(g, "Venezia"), getCityIndexByName(g, "Verona"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Calabria"), getCityIndexByName(g, "Bergamo"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Cagliari"), getCityIndexByName(g, "Verona"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Palermo"), getCityIndexByName(g, "Milano"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Catania"), getCityIndexByName(g, "Palermo"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Parma"), getCityIndexByName(g, "Verona"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Londra"), getCityIndexByName(g, "Bolzano"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Bergamo"), getCityIndexByName(g, "Perugia"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Bolzano"), getCityIndexByName(g, "Taranto"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Perugia"), getCityIndexByName(g, "Parma"),4, 46.4);
    addEdge(g, getCityIndexByName(g, "Taranto"), getCityIndexByName(g, "Milano"),4, 46.4);

    while((scelta = menu())){
    switch (scelta)
    {
    
     case 1:
                 printf("Insert e-mail: ");
                 scanf("%s", emailAdministrator);
                       
                 printf("Insert password (max 7 characters): ");
                 scanf("%s", pwdAdministrator);
              
              
              while((sceltaAmministratore = menuAmministratore())){
                 switch (sceltaAmministratore) {
                     case 1://stampa archivo con città
                
                            printGraph(g);
                      
                            break;
                         
                     case 2://inserisci città
                    
                         printf("Insert the city you want to enter:");
                         scanf("%s", city);
                         
                         addNode(g,city);
                         
                         printf("~Operation successfully performed~");

                          break;
                    
                     case 3://cancella città
                          
                           printf("Insert the city to be deleted:\n");
                           scanf("%s", deleteCity);
                          
                          removeNodeByString(g,deleteCity);

                         printf("~\nOperation successfully performed~\n");
                          
                         break;
                    case 4: /*Se l'amministatore  vuole uscire*/

                           printf("Thank you goodbye!\n");

                           return 0;

                            break;

                         default: /*Se l'utente sbaglia ad inserire il numero*/
                         printf("This button does not allow you to make choices! Try again!\n");

                            break;
                         
                 }
              }
                  
        return 0;
        
      break;

    case 2:
            while((sceltaUt = menuUtente())){
                switch (sceltaUt) {
        case 1:
                      
                printf("Inserisci l'email: ");
                scanf ("%s", email);
                      
                printf("Inserisci password(max 7 caratteri): ");
                scanf("%s", pwd);
                      
                printf("\niscrizione effettuata con successo\n");

                      break;
         case 2:
                        
                printf("Inserisci l'email: ");
                scanf ("%s", email);
             
                printf("Inserisci password(max 7 caratteri): ");
                scanf("%s", pwd);
            
                printf("\naccesso effettuata con successo\n");
            
                    while((sceltaUt1 = menuUtente1())){
                       switch (sceltaUt1) {
             case 1://visualizza prenotazioni attive
                                 
                            break;
                                          
            case 2://effettua prenotazione
                                        
                    while((sceltaUt2 = menuUtente2())){
                            switch (sceltaUt2) {
                    case 1://visualizza tratta più breve
                                                                                
                                break;
                    case 2://visualizza meta più economica
                                                                            
                                break;
                    
                    case 3://visualizza meta più economica
                                                                    
                                break;
                    case 4://visualizza meta più gettonata
                        
                        printf("\nEnter city of start: ");
                        scanf("%s", cittaPartenza);
                        
                        srand( (unsigned int) time(NULL) );
                        
                        printf("\n The most popular destination is the following: ");
                        printf("%s\n", nomiCitta[rand()%9]);
                        
                          break;
                    
                case 5: /*Se l'amministatore  vuole uscire*/

                            printf("Thank you goodbye!\n");

                        return 0;

                    break;

        default: /*Se l'utente sbaglia ad inserire il numero*/
            printf("This button does not allow you to make choices! Try again!\n");
                   break;
                       }
                }
                                            
        return 0;
             break;
        }
      }
   }
}
                                                  
case 3: /*Se l'utente vuole uscire*/

      printf("Thank you for choosing the flight booking management service, come back to visit us!\n");

      return 0;

       break;

    default: /*Se l'utente sbaglia ad inserire il numero*/
    printf("This button does not allow you to make choices! Try again!\n");

       break;

          } /*Fine switch*/
    } /*Fine do*/
  return 0;
} /*Fine main*/

8 Risposte

  • Re: Gestione voli in c con grafi

    SOLITO TITOLO ...

    Non sai che i dati in memoria vengono eliminati tra una esecuzione e l'altra e che vanno salvati su file?

    Come ti hanno già detto in

    "inforge.net/forum/threads/grafo-ciclico-in-c.593583/#post-5100436"

    CONTINUANDO A FARE CROSSPOSTING, devi salvare i dati in un file e poi rileggerli quando apri nuovamente il programma.
  • Re: Gestione voli in c con grafi

    oregon ha scritto:


    SOLITO TITOLO ...

    Non sai che i dati in memoria vengono eliminati tra una esecuzione e l'altra e che vanno salvati su file?

    Come ti hanno già detto in

    "inforge.net/forum/threads/grafo-ciclico-in-c.593583/#post-5100436"

    CONTINUANDO A FARE CROSSPOSTING, devi salvare i dati in un file e poi rileggerli quando apri nuovamente il programma.
    si ma se io non voglio usare il file...potrei usare una funzione di logout...ma come posso includerla mantenendo lo stesso menu?
  • Re: Gestione voli in c con grafi

    Sara, basta aprire thread con titoli generici! Nel prossimo utilizza un titolo più specifico perché molti non hanno il tempo di andare a leggere tutto il codice.
  • Re: Gestione voli in c con grafi

    orion99 ha scritto:


    Sara, basta aprire thread con titoli generici! Nel prossimo utilizza un titolo più specifico perché molti non hanno il tempo di andare a leggere tutto il codice.
    va bene
  • Re: Gestione voli in c con grafi

    saraciao ha scritto:


    oregon ha scritto:


    SOLITO TITOLO ...

    Non sai che i dati in memoria vengono eliminati tra una esecuzione e l'altra e che vanno salvati su file?

    Come ti hanno già detto in

    "inforge.net/forum/threads/grafo-ciclico-in-c.593583/#post-5100436"

    CONTINUANDO A FARE CROSSPOSTING, devi salvare i dati in un file e poi rileggerli quando apri nuovamente il programma.
    si ma se io non voglio usare il file...potrei usare una funzione di logout...ma come posso includerla mantenendo lo stesso menu?
    In quel thread ti hanno anche risposto che "puoi fare il logout ma NON DEVI CHIUDERE IL PROGRAMMA". Se chiudi il programma DEVI usare un file.

    PERCHE' LO CHIEDI NUOVAMENTE QUI?

    DEVI SMETTERLA CON IL CROSSPOSTING.
  • Re: Gestione voli in c con grafi

    oregon ha scritto:


    saraciao ha scritto:


    oregon ha scritto:


    SOLITO TITOLO ...

    Non sai che i dati in memoria vengono eliminati tra una esecuzione e l'altra e che vanno salvati su file?

    Come ti hanno già detto in

    "inforge.net/forum/threads/grafo-ciclico-in-c.593583/#post-5100436"

    CONTINUANDO A FARE CROSSPOSTING, devi salvare i dati in un file e poi rileggerli quando apri nuovamente il programma.
    si ma se io non voglio usare il file...potrei usare una funzione di logout...ma come posso includerla mantenendo lo stesso menu?
    In quel thread ti hanno anche risposto che "puoi fare il logout ma NON DEVI CHIUDERE IL PROGRAMMA". Se chiudi il programma DEVI usare un file.

    PERCHE' LO CHIEDI NUOVAMENTE QUI?

    DEVI SMETTERLA CON IL CROSSPOSTING.
    okok ma come faccio a non chiudere il programma senza cambiare struttura del menu?
    va bene non lo faccio più
  • Re: Gestione voli in c con grafi

    Segnalata al moderatore
  • Re: Gestione voli in c con grafi

    oregon ha scritto:


    Segnalata al moderatore
    cosa?
Devi accedere o registrarti per scrivere nel forum
8 risposte