RISOLTO prenotazioni voli

Stato
Discussione chiusa ad ulteriori risposte.

sare1234

Utente Attivo
187
1
Salve hour problema con la stampa delle prenotazioni...cioè se tipo voglio fare una prenotazione in base alla meta più popolare se inserisco i dati per effettuare la prenotazione dopo la ricerca della meta più popolare ed in seguito scelto di vedere le prenotazioni attive questa non viene stampata..posto di seguito il codice
Main.c
C:
                    /*progetto gestione delle prenotazioni di voli.*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <string.h>
#include <stdbool.h>
#include "Graph.h"
#include "List.h"
#include "Queue.h"
#include "Menu.h"
#include "ListPrenotazioni.h"
#include "ListUtente.h"

#define BUFFER_SIZE 256
#define  randomize srand(((unsigned int) time(NULL)))
#define  random(x) rand()%x

int main(int argc, char** argv){
 bool Admin;
 char name[50];
 char surname[50];
 char cityDestination[10];
 char deleteCity[10];
 char city[10];
 char cityPartenza[10];
 char cod_id[7];
 int n=1,m=1;
 char email[100];
 char pwd[7];
 ListPrenotazioni L = NULL;//per listPrenotazioni
 ListUtente l = NULL;//per listUtente
 randomize;
 Graph g = populateGraph();
 char mostPopularDestination = random(g->nodes_count);
 //char buffer_email[BUFFER_SIZE];
 //char buffer_password[BUFFER_SIZE];
 int loginChoice;
 int adminChoice;
 int userChoice;
 int user1Choice;
 int user2Choice;
 bool continueLoop;
 double price;
 double distance;
    int p;

do{
    loginChoice = LoginMenu();
    if(loginChoice == 0){  /*azioni amministratore*/
        continueLoop = true;
          
              Admin=true;
        
           printf("Insert name: ");
           scanf("%s", name);
        
           printf("Insert surname: ");
           scanf("%s", surname);

            printf("Insert e-mail: ");
            scanf("%s", email);
                    
            printf("Insert password (max 7 characters): ");
            scanf("%s", pwd);
            
               l = user_push(l,name,surname,email,pwd,Admin);
               user_exist(l,name,surname,email,pwd,Admin);

            /*
            Se l'admin non e' presente nella data structure degli admin --> continueLoop = false
                In questo modo torna al menu di login e non vengono eseguite operazioni
            */
            while(continueLoop){
                
             adminChoice = AdminMenu();
                
              switch (adminChoice){
                      
               case 0: // exit / logout
                                            
                    continueLoop = false;
                      
                    break;
               case 1: /* stampa destinazioni e tratte*/
                      
                printf("\nThe destinations are as follows:\n");
                      
                    PrintGraph(g);
                      
                    break;
               case 2: /*inserisci destinazioni e tratte*/
                

          addNode(g, getCityName("new destination(first uppercase character)"));
                      
                printf("\nInsert number of sections to be entered:\n");
                scanf("%d",&p);
                for(int v=0; v<p; v++){
                      
                printf("\nInsert price(es. 23.78):%d ",v);
                 scanf("%lf", &price);
                    
                 printf("\nInsert distance(es. 345.98):%d",v);
                 scanf("%lf", &distance);
                
                    
           addEdge(g,getCityIndexByName(g,getCityName("new destination(first uppercase character)")), getCityIndexByName(g, getCityName("new destination(first uppercase character)")),price,distance);
                    
                      }
                  
                      printf("\n~Operation successfully performed~\n");
                      
                    break;
                case 3: /*cancella destinazioni e tratte*/
                      
                     printf("Insert the city to be deleted:\n");
                     scanf("%s", deleteCity);
                                              
                     removeNodeByString(g,deleteCity);

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

                           break;
                    
                }
            }
         }else if(loginChoice == 1){ /*azioni utenti*/
             continueLoop = true;
              Admin=false;
               while(continueLoop){
                user1Choice = UserMenu1();
                  switch (user1Choice){
                          
                      case 0: // exit / logout
                          
                            continueLoop = false;
                          
                            break;
                          
                   case 1: /*effettuo iscrizione*/
                            
                        for(int i=0; i<n; i++){
                            
                            printf("\nInsert name:\n");
                            scanf("%s", name);
                            printf("\nInsert surname:\n");
                            scanf("%s", surname);
                            printf("\nInsert e-mail:\n");
                            scanf("%s",email);
                            printf("\nInsert password:\n");
                            scanf("%s",pwd);
                                                        
                            }
                          l=user_push(l,name,surname,email,pwd,Admin);

                                break;
                              
                    case 2: /*effettuo accesso*/
                          
                                printf("\nInsert e-mail:\n");
                                scanf("%s",email);
                                printf("\nInsert password:\n");
                                scanf("%s",pwd);
                         user_exist(l,name,surname,email,pwd,Admin);
                        
                          printf("\n welcome %s %s \n", name, surname);


                          
                    // printf("~\nLogin successful~\n");

                    if(loginChoice == 1){ /*azioni utenti*/
                        continueLoop = true;
                    while (continueLoop){
                    userChoice = UserMenu();
                        switch (userChoice){
                                
                            case 0:
                                
                                continueLoop = false;
                                
                                break;
                      case 1:  /*vedi prenotazioni attive*/
                                                              
                         printf("\nThe destinations are as follows:\n");
                                            
                            PrintGraph(g);
                        
                                break;
                                
                        
                           case 2: /*effettua prenotazione*/
                                
                            if(loginChoice == 1){ /*azioni utenti*/
                             continueLoop = true;
                               while (continueLoop){
                                user2Choice = UserMenu2();
                                  switch (user2Choice){
                                          
                                case 0:
                                          
                                 continueLoop = false;
                                          
                                    break;
                                          
                                case 1: /*Prenotazione basata sul meno scambi inserendo la città di partenza e la città di destinazione*/
                                          
                                          printf("\nInserisci città di partenza: ");
                                          scanf("%s", cityPartenza);
                                          
                                          printf("\nInserisci città di destinazione: ");
                                          scanf("%s", cityDestination);

                                          //inserire funzione per determinare tratta più economica
                                          
                                    printf("Enter the number of reservations you wish to make\n");
                                         scanf("%d",&m);
                                          
                                         for (int i=0; i<m; i++){
                                            
                                         printf("\nInsert citta:\n");
                                         scanf("%s",city);
                                         printf("\nInsert id:\n");
                                         scanf("%s",cod_id);
                                            
                                         L = insertTailPrenotazioni(L,city,cod_id);
                                            
                                         }
                                             break;
                                          
                                case 2: /*Prenotazione basata sui percorsi più brevi inserendo la città di partenza e destinazione
                                    funzione per percorsi brevi*/
                                          
                                printf("\nInserisci città di partenza: ");
                                scanf("%s", cityPartenza);
                                                                                  
                                printf("\nInserisci città di destinazione: ");
                                scanf("%s", cityDestination);
                                          
                                //inserire funzione per determinare tratta più breve
                                          
                                printf("Enter the number of reservations you wish to make\n");
                                scanf("%d",&m);
                                          
                                         for (int i=0; i<m; i++){
                                            
                                         printf("\nInsert citta:\n");
                                         scanf("%s",city);
                                         printf("\nInsert id:\n");
                                         scanf("%s",cod_id);
                                            
                                         L = insertTailPrenotazioni(L,city,cod_id);
                                            
                                         }
                                
                                       break;
                                          
                                case 3: /*Prenotazione basata sulla destinazione più economica inserendo solo la città di partenza
                                    funzione per destinazione piu economica*/
                                          
                                     printf("\nInserisci città di partenza: ");
                                     scanf("%s", cityPartenza);
                                          
                                        //inserire funzione per la tratta più economica
                                    
                                    printf("Enter the number of reservations you wish to make\n");
                                         scanf("%d",&m);
                                          
                                         for (int i=0; i<m; i++){
                                            
                                         printf("\nInsert citta:\n");
                                         scanf("%s",city);
                                         printf("\nInsert id:\n");
                                         scanf("%s",cod_id);
                                            
                                         L = insertTailPrenotazioni(L,city,cod_id);
                                            
                                         }
                                            break;
                                          
                                case 4: /*Prenotazione basata sulla destinazione più popolare inserendo solo la città di partenza*/
                                          
                                    printf("\nEnter city of start: ");
                                    scanf("%s", cityPartenza);
                                    
                             printf("\n The most popular destination is the following:\n");
                                          
                                 mostPopularDestination = random(g->nodes_count);
                                    char* cityName = g->cityNames[mostPopularDestination];
                            
                                printf("id:%d city:%s\n",mostPopularDestination,cityName);

                                     printf("Enter the number of reservations you wish to make\n");
                                     scanf("%d",&m);
                                          
                                     for (int i=0; i<m; i++){
                                        
                                     printf("\nInsert citta partenza:\n");
                                     scanf("%s", city);
                                     printf("\nInsert id:\n");
                                     scanf("%s",cod_id);
                                        
                                     L = insertTailPrenotazioni(L,city,cod_id);
                                        
                                     }
                                  break;
                                          
                              case 5:  /*vedi prenotazioni attive*/
                                                            
                                printListPrenotazioni(L);
                                        break;
                                    }
                                  }
                                }
                    
            default: /*Se l'utente sbaglia ad inserire il numero*/
            printf("This button does not allow you to make choices! Try again!\n");
                                       break;
                                
                          }
                     }
                }
           }
       }
   }
    
    }while(loginChoice != 2);
        printf("Thanks for choosing us, come back to visit us!\n");
            return 0;
}
ListPrenotazioni.c
C:
#include "ListPrenotazioni.h"
#include <stdlib.h>
#include <string.h>

ListPrenotazioni initListPrenotazioni(char cod_id[7], char citta[10]) {
    ListPrenotazioni l = (ListPrenotazioni)malloc(sizeof(struct prenotazione));
    strcpy(l->cod_id, cod_id);
    strcpy(l->citta, citta);
    l->next = NULL;
    return l;
}


void printListPrenotazioni(ListPrenotazioni l) {
    if (l != NULL) {
        printf("\ncity:%s  id:%s\t", l->citta, l->cod_id);
        printListPrenotazioni(l->next);
    }
}

ListPrenotazioni insertTailPrenotazioni(ListPrenotazioni l, char cod_id[7], char citta[10]) {
    if (l != NULL) {
        l->next = insertTailPrenotazioni(l->next, cod_id, citta);
    }
    else{
        l = initListPrenotazioni(cod_id,citta);
    }
    return l;
}


struct prenotazione *nuovoNodo(char citta[10], char cod_id[7])
{
 struct prenotazione *nodo;

    nodo = (struct prenotazione *) malloc(sizeof(struct prenotazione));
        if (nodo == NULL) return NULL;
        strcpy(nodo->citta, citta);
        strcpy(nodo->cod_id, cod_id);
        nodo->next = NULL;
 return nodo;
}
ListPrenotazioni.h
C:
#include <stdio.h>
#define LEN 100
#define MAX 20

struct prenotazione{
    char cod_id[7];
    char citta[10];
    struct prenotazione* next;
};

typedef struct prenotazione* ListPrenotazioni;

ListPrenotazioni initListPrenotazioni(char cod_id[7], char citta[10]);
void printListPrenotazioni(ListPrenotazioni L);
ListPrenotazioni insertTailPrenotazioni(ListPrenotazioni L,char cod_id[7], char citta[10]);
struct prenotazione *nuovoNodo(char cod_id[7], char citta[10]);
 

sare1234

Utente Attivo
187
1
Impossibile da provare, come al solito, non si sa cosa fare e manca tutto il codice per compilare senza errori.
si lo so pero sono tanti file...ora allego i menu poi per il resto non serve perche se provi a farlo funzionare con la scelta di prenotazione con la meta più popolare va però se faccio poi la prenotazione va correttamente ma non viene stampata(la prenotazione) poi le altre funzioni vedo ancora inserire
menu.c
C:
#include <stdio.h>
#include "Menu.h"

int LoginMenu(){
    int choice = -1;
    printf(" * * * * * * * * * * * * * * * * * * * * * * * *   Welcome to flight booking management\n * * * * * * * * * * * * * * * * * * * * * * * *  \n");
    printf("Who are you?\n");
    printf(" 0. Admin\n");
    printf(" 1. User\n");
    printf(" 2. Exit\n");
    printf("Insert your choice:");
    scanf("%d",&choice);
    while (choice < 0 || choice > 2) {
      printf("This button does not allow you to make choices! Try again!\n");
      printf("Insert choice thanks: ");
      scanf("%d", &choice);
        return choice;
    }
    return choice;
}

int AdminMenu(){
    int choice = -1;

    printf("                   **************** \n");
    printf("                     ADMINISTATOR        \n");
    printf("                   ****************     \n");

    printf(" 0. Logout\n");
    printf(" 1. Print destinations\n");
    printf(" 2. Insert destinations\n");
    printf(" 3. Delete destinations\n");
   
    printf("Insert your choice:");
    scanf("%d",&choice);
    while (choice < 0 || choice > 3) {
    printf("This button does not allow you to make choices! Try again!\n");
       printf("Insert your choice:");
       scanf("%d", &choice);
      return choice;

   
    }
    return choice;
}

int UserMenu(){
    int choice = -1;
    printf("  \n                   **************** \n");
    printf("                         USER          \n");
    printf("                   ****************     \n");
   
    printf(" 0. LogOut\n");
    printf(" 1. List of available cities\n");
    printf(" 2. Make reservation\n");
    printf("Insert your choice:");
    scanf("%d",&choice);
    while (choice < 0 || choice > 3) {
       printf("This button does not allow you to make choices! Try again!\n");
       printf("Insert your choice:");
       scanf("%d", &choice);
         return choice;
    }
    return choice;
}


int UserMenu1(){
    int choice = -1;

    printf("                   **************** \n");
    printf("                         USER          \n");
    printf("                   ****************     \n");
   
    printf(" 0. LogOut\n");
    printf(" 1. SignUp\n");
    printf(" 2. SignIn\n");
   
    printf("Insert your choice:");
    scanf("%d",&choice);
       while (choice < 0 || choice > 2) {
          printf("This button does not allow you to make choices! Try again!\n");
          printf("Insert your choice:");
          scanf("%d", &choice);
            return choice;
       }
       
    return choice;
}

int UserMenu2(){
    int choice = -1;

    printf("                   **************** \n");
    printf("                         USER          \n");
    printf("                   ****************     \n");
   
    printf(" 0. LogOut\n");
    printf(" 1. Booking based on the shortest route by entering the city and the departure destination\n");
    printf(" 2. Booking based on the shortest routes by entering the city of departure and destination\n");
    printf(" 3. Booking based on the cheapest destination by entering only the city of departure\n");
    printf(" 4. Booking based on the most popular destination by entering only the city of departure\n");
    printf(" 5. View prenotations\n");
    printf("Insert your choice:");
    scanf("%d",&choice);
       while (choice < 0 || choice > 5) {
          printf("This button does not allow you to make choices! Try again!\n");
          printf("Insert your choice:");
          scanf("%d", &choice);
            return choice;
       }
       
    return choice;
}
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando

Hot: Quale crypto per il futuro?

  • Bitcoin

    Voti: 64 48.9%
  • Ethereum

    Voti: 51 38.9%
  • Cardano

    Voti: 17 13.0%
  • Polkadot

    Voti: 6 4.6%
  • Monero

    Voti: 12 9.2%
  • XRP

    Voti: 12 9.2%
  • Uniswap

    Voti: 3 2.3%
  • Litecoin

    Voti: 10 7.6%
  • Stellar

    Voti: 8 6.1%
  • Altro (Specifica)

    Voti: 19 14.5%

Discussioni Simili