[c]aiuto funzione prenotazioni

di il
1 risposte

[c]aiuto funzione prenotazioni


#include <stdio.h>
#include <string.h>
#include <malloc.h>

struct cliente
{
char nome[20];
char cognome[20];
int codice;
struct cliente *next;
};

struct prenotazione
{
int codicecliente;
int stanza[4];
int giornoarrivo;
int giornopartenza;
int mesearrivo;
int mesepartenza;
}lista[100];

int numero;
struct cliente *crea();
struct cliente *inserisci(struct cliente *);
void cerca(struct cliente *);
void visualizza(struct cliente *);
void menuprenotazione(struct cliente *);
void menu(struct cliente *);
void elenca();
int i=1;
int j=0;
main()
{
int c=-1;
struct cliente *p, *new;
while(c!=0)
    {
    printf("\nNella lista sono presenti %d clienti",i-1);
    printf("\nE [%d] prenotazioni",j);
    printf("\n\n\t1.crea nuovo cliente");
    printf("\n\t2.cerca clienti");
    printf("\n\t3.visualizza lista clienti");
    printf("\n\t4.crea prenotazione");
    printf("\n\t5.elenca lista prenotazioni");
    printf("\n\nDigita la scelta ---->");
    scanf("%d",&c);
    switch(c)
        {
        case 1: 
            if (i==1)
                {
                p = crea();
                i++;
                new = p;
                break;
                }
            else
                {
                new->next=malloc(sizeof(struct cliente));
                new = inserisci(new->next);
                break;
                }
        case 2: cerca(p); break;
        case 3: visualizza(p); break;
        case 4: menuprenotazione(p); break;
        case 5: elenca();
        }
    }
}

struct cliente * crea(){

struct cliente *p;
        
    p = malloc(sizeof(struct cliente));
    
    printf("\nInserisci nome del cliente  ");
    scanf("%s", p->nome);
    printf("\nInserisci cognome  ");
    scanf("%s", p->cognome);
    p->codice = 1;
    printf("\nAl cliente è stato assegnato il codice [1]\n");
    p->next=NULL;
    return p;
}

struct cliente * inserisci(struct cliente *p){


printf("\nInserisci nome del cliente ");
    scanf("%s", p->nome);
    printf("\nInserisci cognome  ");
    scanf("%s", p->cognome);
    p->codice = i;
    printf("\nAl cliente è stato assegnato il codice [%d]\n",i);
    i++;
    p->next= NULL;

    return p;
}

void cerca(struct cliente *p)
{
int codice;
printf("\ndigita il codice cliente---->");
scanf("%d", &codice);


do
    {
    if (p->codice==codice)
        {
        printf("\n\nil codice cliente appartiene a  [ %s %s ]",p->nome,p->cognome);
        }
    
    }
while ((p = p->next) !=NULL);
    
}    

void visualizza(struct cliente *p)
{
int d=1;
    printf("[codice]  [nome]  [cognome]");
while (p!=NULL)
    {
    printf("\n   [%d]    %s   %s\n",d,p->nome,p->cognome);
    d++;
    p = p->next;
    }
}
void menuprenotazione(struct cliente *p)
{
int sel;
    
printf("\nIl cliente che vuole prenotare e' gia' nella lista clienti?");
printf("\n1.si");
printf("\n2.no\n");
scanf("\n%d",&sel);

    switch(sel)
        {
        case 1: menu(p); break;
        case 2: printf("\nBisogna immettere i dati del cliente prima");    break;
        default : printf("\nscelta non valida"); break;
        }
}

void menu(struct cliente *p)
{

int giornoa;
int mesea;
int giornop;
int mesep;
int sel;
printf("\nImmettere codice cliente ->");
scanf("%d",&sel);
    while (p!=NULL)
        {
        if (p->codice==sel)
            {
            printf("\nImmettere dati di arrivo per cliente [%s %s codice(%d)]",p->nome,p->cognome,p->codice);
            printf("\nImmettere mese di arrivo  ");
            scanf("%d",&mesea);
                if(mesea>12)
                               do
                    {
                              printf("\nERRORE DATA NON VALIDA!\n");
                              printf("MESE: ");
                                 scanf("%d",&mesea);
                               }
                    while(!(mesea<=12));
            printf("\nImmettere giorno di arrivo  ");
            scanf("%d",&giornoa);
                        if(mesea==11||mesea==4||mesea==6||mesea==9)
                               if(giornoa>30)
                                  do{
                                        printf("\nERRORE DATA NON VALIDA!\n");
                                        printf("GIORNO: ");
                                       scanf("%d",&giornoa);
                              }
                    while(!(giornoa<=30)||(giornoa>=31));
                         if(mesea==2)
                               if(giornoa>29)
                                  do{
                                       printf("\nERRORE DATA NON VALIDA!\n");
                                       printf("GIORNO: ");
                                      scanf("%d",&giornoa);
                                    }
                    while(!(giornoa<=29));
            printf("\nImmettere mese di partenza  ");
            scanf("%d",&mesep);
                if((mesep>12)||(mesep<=mesea))
                               do
                    {
                              printf("\nERRORE DATA NON VALIDA!\n");
                              printf("MESE: ");
                                 scanf("%d",&mesep);
                               }
                    while(!((mesep<=12)&&(mesep>=mesea)));
            printf("\nImmettere giorno di partenza  ");
            scanf("%d",&giornop);
                        if(mesep==11||mesep==4||mesep==6||mesep==9)
                               if(giornop>30)
                                  do{
                                        printf("\nERRORE DATA NON VALIDA!\n");
                                        printf("GIORNO: ");
                                       scanf("%d",&giornop);
                              }
                    while(!(giornop<=30)||(giornop>=31));
                         if(mesep==2)
                               if(giornop>29)
                                  do{
                                       printf("\nERRORE DATA NON VALIDA!\n");
                                       printf("GIORNO: ");
                                      scanf("%d",&giornop);
                                    }
                    while(!(giornop<=29));
            lista[j].codicecliente=p->codice;
            }
        
        p = p->next;
        }
    lista[j].giornoarrivo=giornoa;
    lista[j].mesearrivo=mesea;
    lista[j].giornopartenza=giornop;
    lista[j].mesepartenza=mesep;
    j++;
}
    
void elenca()
{
int t;
for(t=0;t<j;t++)
    {
    printf("\nPer il cliente con codice %d",lista[t].codicecliente);
    printf("\ngiorno arrivo %d mese %d\n",lista[t].giornoarrivo,lista[t].mesearrivo);
    printf("\ngiorno partenza %d mese %d\n",lista[t].giornopartenza,lista[t].mesepartenza);
    }
}
salve a tutti questo programma dovrebbe creare una lista clienti per poi abbinare ogni cliente ad una prenotazione in albergo, dovrei creare una funzione che mi permette di non far prenotare il cliente per i giorni che qualcun'altro ha già scelto, ovviamente ci saranno piu stanze ma questo non è un problema che non riesco a risolvere, ogni aiutino sarà molto utile.

la prenotazione viene salvata in una struttura con 4 Int relativi alla data di arrivo e partenza del tipo giornoarrivo,mesearrivo,giornopartenza,mesepartenza = 23 3 2 4 rispettivamente, come faccio se un altro cliente vuole prenotarsi per 1 4 7 4?

1 Risposte

  • Re: [c]aiuto funzione prenotazioni

    Ciao! scusa ma io sono abbastanza nuovo sul C.. ma ti volevo chiedere se tu studi proprio in faccoltà o se hai studiato in libri normali ?
Devi accedere o registrarti per scrivere nel forum
1 risposte