Ir ao conteúdo
  • Cadastre-se

C Não executa grande parte do código!!


Rita_18

Posts recomendados

Boa tarde, estou a fazer um projeto para uma disciplina. O trabalho é sobre gestão de recintos desportivos. A parte dos clientes está quase 100% funcional, o que acontece é que no caso dos recintos optamos por fazer por arrays devido à quantidade de ordenar e listar que tinhamos, e por listas ligadas seria muito mais trabalhoso. O que está a acontecer é que temos o código escrito na parte dos recintos mas não está a funcionar, quando selecionamos a opção no menu, simplesmente volta ao menu principal, como se não existisse nada. Peço a vossa ajuda, já estamos de volta disto desde ontem e não encontramos o erro e precisamos de ter isto a funcionar para prosseguir, temos de ter pronto amanhã... 

PS: código bastante extenso

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define MAX 50

typedef struct recinto{
	int id;
	char nome[MAX];
	char tipo[MAX];
	char conselho[MAX];
	float preco;
	int hAbertura;
	int hFecho;
	char iluminacao;
	char estado;
}RECINTOS;


typedef struct cliente{
	int id;
	char nome[MAX];
	char localidade[MAX];
	char morada[MAX];
	int nif;
	int ncc;
	char email[MAX];
	int telefone;
}CLIENTE;

typedef struct clientes{
	CLIENTE info;
	struct clientes *seguinte;
	struct clientes *anterior;
}CLIENTES;

typedef struct aluguer{
	CLIENTE cliente;
	RECINTOS recincto;
}ALUGUER;
void limparEcra(){		//Função para limpar o ecrã
	system("cls");
}

void guardarCliente(CLIENTES **ini){	//Função para guardar cliente
	CLIENTES *aux = *ini;
	FILE *fp;
	fp=fopen("Clientes.dat","wb");		//abrir ficheiro binário
	if(fp==NULL){
		printf("ERRO AO ABRIR O FICHEIRO");
		return ;
	}
	while(aux != NULL){					//quando a variável for diferente de NULL escreve para o ficheiro
		fwrite(&aux->info,sizeof(CLIENTE),1,fp);
		aux= aux->seguinte;
	}
	fclose(fp);
}

void carregarClientes(CLIENTES **ini,CLIENTES **fim){ //Função carregar clientes
	CLIENTES *novo;
	CLIENTE temp;
 	 FILE *f = NULL;
	if ((f = fopen("Clientes.dat", "rb")) != NULL) {
		  while(!feof(f)){
		    	fread(&temp, sizeof (CLIENTE), 1, f);
		  		if(feof(f)) break;	
				novo = (CLIENTES *) malloc(sizeof (CLIENTES));
	            novo->anterior = NULL;
	            novo->seguinte = NULL;
	            novo->info = temp;
	            if ((*ini) == NULL) {
	                *ini = novo;
	                *fim = novo;
	            } else {
	                novo->anterior = *fim;
	                (*fim)->seguinte = novo;
	                *fim = novo;
	            }
	            
		    }
		    fclose(f);
    }
}

int verificarFicheiros() {
    //if (CreateDirectory("pergunta\\", NULL) != ERROR_ALREADY_EXISTS)CreateDirectory("pergunta\\", NULL);
    //if (CreateDirectory("utilizadores\\", NULL) != ERROR_ALREADY_EXISTS) CreateDirectory("utilizadores\\", NULL);
    FILE *f;
    if ((f = fopen("clientes.dat", "rb")) == NULL) {
        f = fopen("clientes.dat", "wb");
        fclose(f);
        f = fopen("recintos.dat", "wb");
		fclose(f);
        f = fopen("alugueres.dat", "wb");
        fclose(f);
    }
    return 1;
}

void inserirCliente(CLIENTES **ini, CLIENTES **fim){
	char buf[40], comando[10];
	CLIENTE temp;
	CLIENTES * novo;
	temp.ncc = -1;
	do {
        printf("Pertende introduzir um novo cliente no sistema?(SIM/NAO)\n (Resposta) >");
        fflush(stdin);
        while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &comando) == 1) break;
            else {
                printf(" (Resposta) >");
            }
        }
    } while (strcmp(comando, "SIM") != 0 && strcmp(comando, "NAO") != 0);
    
    if (!strcmp(comando, "SIM")){
    	printf("\n(Nome)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &temp.nome) == 1) break;
            else {
                printf("\n(Nome)->");
            }
		}
	printf("\n(Localidade)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &temp.localidade) == 1) break;
            else {
                printf("\n(Localidade)->");
            }
		}
	printf("\n(Morada)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &temp.morada) == 1) break;
            else {
                printf("\n(Morada)->");
            }
		}
	printf("\n(NIF)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL || temp.nif < 100000000) {
           
			if (sscanf(buf, "%i", &temp.nif) == 1 && temp.nif > 100000000 &&  verificarExisteCliente(ini,temp)== 0) break;
            else {
                printf("\n(NIF)->");
            }
           
		}
	printf("\n(NCC)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL || temp.ncc < 10000000) {
            if (sscanf(buf, "%i", &temp.ncc) == 1 && temp.ncc > 10000000 && verificarExisteCliente(ini,temp)== 0) break;
            else {
                printf("\n(NCC)->");
            }
		}
	printf("\n(Email)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &temp.email) == 1) break;
            else {
                printf("\n(Email)->");
            }
		}
	printf("\n(Nº de Telefone)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%i", &temp.telefone) == 1) break;
            else {
                printf("\n(Telefone)->");
            }
		}
	}
	
	temp.id= gerarNumeroSequencial(ini);
	novo = (CLIENTES *) malloc(sizeof (CLIENTES));
	novo->anterior = NULL;
	novo->seguinte = NULL;
	novo->info = temp;
	if ((*ini) == NULL) {
	    *ini = novo;
	    *fim = novo;
	} else {
	    novo->anterior = *fim;
	    (*fim)->seguinte = novo;
	    *fim = novo;
	}
    
	guardarCliente(ini);
           
}

int gerarNumeroSequencial(CLIENTES **ini){
	CLIENTES *aux = *ini;
	int cont=0;
	 while (aux!=NULL) {
		aux = aux->seguinte;
		cont++;
	}
	return cont +1;
}

int verificarExisteCliente(CLIENTES **ini, CLIENTE novo){
	CLIENTES *aux = *ini;
    while (aux!=NULL) {
		if(aux->info.nif == novo.nif || aux->info.ncc == novo.ncc ){
			printf("ERRO:Cliente já existe em sistema");
			return 1;
		}
		aux = aux->seguinte;
	}
	return 0;
	

}

void listarClientesAlfa(CLIENTES **ini, CLIENTES **fim){
	
	//TODO -> Listar por ordem alfabefica PELO NOME (bubble Sort)
	
	CLIENTES *aux = *ini;
    while (aux!=NULL) {
    	printf("\nNome :%s Loca %s  morada %s  nif %i Tele %i", aux->info.nome, aux->info.localidade, aux->info.morada, aux->info.nif,aux->info.telefone);
		aux = aux->seguinte;
	}
	printf("\nPrima ENTER para continuar");
	fflush(stdin);
	getchar();
}

void listarClientesConcelho(CLIENTES **ini, CLIENTES **fim){
	
	//TODO -> Listar por ordem alfabefica PELO conselho  (bubble Sort)
	
	// MELHOR ESTRATEGIA SERIA MELHOR PASSAR PARA ARRAY PODE MANDAR O LISTA LIGADA A VIDA 
	
	CLIENTES *aux = *ini;
    while (aux!=NULL) {
    	printf("\n%s %s %s %i %i", aux->info.nome, aux->info.localidade, aux->info.morada, aux->info.nif,aux->info.telefone);
		aux = aux->seguinte;
	}
}

void listaDadosCliente(CLIENTES **ini, CLIENTES **fim){
	int comando;
	char buf[40];
	CLIENTES *aux = *ini;
        printf("Introduza o NIF(0 para SAIR)\n (Resposta) >");
        fflush(stdin);
        while (fgets(buf, sizeof buf, stdin) != NULL || comando < 100000000) {
            if (sscanf(buf, "%i", &comando) == 1 && comando > 100000000)  break;
            else {
                printf(" (Resposta) >");
            }
        }
	
	if(comando==0)return;
    while (aux!=NULL) {
    	if(comando==aux->info.nif){
    	printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                          CLIENTE                             |\n");
		printf("|______________________________________________________________|\n");
		printf("| ID: %i\n", aux->info.id);
		printf("| Nome: %s\n", aux->info.nome);
		printf("| Localidade: %s\n", aux->info.localidade);
		printf("| Morada: %s\n", aux->info.morada);
		printf("| NIF: %i\n", aux->info.nif);
		printf("| NCC: %i\n", aux->info.ncc);
		printf("| Email: %s\n", aux->info.email);
		printf("| Telefone: %i\n", aux->info.telefone);
		printf("|______________________________________________________________|\n");
    	printf("Prima ENTER para continuar\n");
    	fflush(stdin);
    	getchar();
		}
		aux = aux->seguinte;
	}
}


void editarCLiente(CLIENTES **ini){
	int comando;
	char buf[40];
	CLIENTES *aux = *ini;
        printf("Introduza o NIF(0 para SAIR)\n (Resposta) >");
        fflush(stdin);
        while (fgets(buf, sizeof buf, stdin) != NULL || comando < 100000000) {
            if (sscanf(buf, "%i", &comando) == 1 && comando > 100000000)  break;
            else {
                printf(" (Resposta) >");
            }
        }
         while (aux!=NULL) {
         	if(comando==aux->info.nif)break;
         	aux = aux->seguinte;
		}	
        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                        Editar CLIENTE                        |\n");
		printf("|______________________________________________________________|\n");
		printf("| ID: %i\n", aux->info.id);
		printf("| (1)Morada: %s\n", aux->info.morada);
		printf("| (2)Telefone: %i\n", aux->info.telefone);
		printf("| (0)Sair\n");
		printf("|______________________________________________________________|\n");
    	printf("Introduza 1 ou 2 para editar os dados \n (Resposta) >");
    	fflush(stdin);
        while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%i", &comando) == 1 && (comando >= 0 && comando <=2) )  break;
            else {
                printf(" (Resposta) >");
            }
        }
        
        if(comando == 1){
        	printf(" (Nova Morada) >");
        	  while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &aux->info.morada) == 1 )  break;
            else {
                printf(" (Nova Morada) >");
            }
      	  }
		}else if ( comando  == 2){
			printf(" (Novo Telefone) >");
			  while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%i", &aux->info.telefone) == 1  )  break;
            else {
                printf(" (Novo Telefone) >");
            }
       	 }
		}
		return;
}





//RECINTOS

void guardaRecintos(RECINTOS recinto[], int total){		//Função para guardar recintos
	FILE*fp= NULL;
	int i=0;
	fp=fopen("recintos.dat", "wb");
	if(fp==NULL){
		printf("ERRO ao abrir o ficheiro\n");
		return;
	}
	for(i=0; i<total; i++){
		fwrite(&recinto[0] ,sizeof(RECINTOS),1,fp);
	}
	fclose(fp);
}

void carregarRecintos(){ //Função carregar Recintos
}


int inserirRecintos(RECINTOS recinto[], int *capacTotal){ 	//Inserir Recintos
	char buf[40], comando[10];
	int i = (*capacTotal);
	
	if (( *capacTotal ) >= 80){
		printf("Impossivel adicionar recintos\n"); return 0;
	}
	
	do {
        printf("Pertende introduzir um novo recinto no sistema?(SIM/NAO)\n (Resposta) >");
        fflush(stdin);
        while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &comando) == 1) break;
            else {
                printf(" (Resposta) >");
            }
        }
    } while (strcmp(comando, "SIM") != 0 && strcmp(comando, "NAO") != 0);
    
    if (!strcmp(comando, "SIM")){
    	printf("\n(Nome)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &recinto[i].nome) == 1) break;
            else {
                printf("\n(Nome)->");
            }
		}
	printf("\n(Tipo)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &recinto[i].tipo) == 1) break;
            else {
                printf("\n(Tipo)->");
            }
		}
	printf("\n(conselho)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%s", &recinto[i].conselho) == 1) break;
            else {
                printf("\n(conselho)->");
            }
		}
	printf("\n(Preço)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%f", &recinto[i].preco) == 1) break;
            else {
                printf("\n(Preço)->");
            }
           
		}
	printf("\n(Hora de Abertura)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%i", &recinto[i].hAbertura) == 1) break;
            else {
                printf("\n(Hora de Abertura)->");
            }
		}
	printf("\n(Hora de Fecho)->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%i", &recinto[i].hFecho) == 1) break;
            else {
                printf("\n(Hora de Fecho)->");
            }
		}
	printf("\n(Iluminação (S | N))->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%c", &recinto[i].iluminacao) == 1) break;
            else {
                printf("\n(Iluminação)->");
            }
		}
	printf("\n(Estado (A (Ativo) | D (Desativo))->");
    	while (fgets(buf, sizeof buf, stdin) != NULL) {
            if (sscanf(buf, "%c", &recinto[i].estado) == 1) break;
            else {
                printf("\n(Estado)->");
            }
		}
	}
	
	(*capacTotal)++;
	recinto[i].id = (*capacTotal);
	printf("\nRecinto introduzido com sucesso!");
	void guardaRecintos(RECINTOS recinto[], int total);
	return 0;
}



int editarRecinto(RECINTOS recinto[], int total){		//Editar Informações dos recintos
	
	int nId;
	int i = 0;
	
	if(total == 0){
		printf("\nSem recintos registados"); return -1;
	}
	
	printf("\nIntroduza o ID do recinto: ");
	scanf("%i", &nId);
	
	for(i = 0; i < total; i++){
		if(nId == recinto[i].id){
			printf("_______________________________________________________________\n");
			printf("|                        Editar RECINTO                        |\n");
			printf("|______________________________________________________________|\n");
			printf("| (1)Hora de abertura: \n", scanf("%i", &recinto[i].hAbertura));
			printf("| (2)Hora de fecho: \n", scanf("%i", &recinto[i].hFecho));
			printf("| (3)Preco: \n", scanf("%f", &recinto[i].preco));
			printf("|______________________________________________________________|\n");
			return 0;
		}
	}
	
	printf("\nNão existe recinto"); return -1;	
	void guardaRecintos(RECINTOS recinto[], int total);
}
	
	
	
	
void listaRecintos(RECINTOS recinto[], int total){			//Lista informaçoes dos recintos
	
		int i = 0;
		if(total == 0){
		printf("\nSem recintos registados"); return;
	}
	
		for(i = 0; i < total; i++){
	    	printf("\n");
	        printf("_______________________________________________________________\n");
			printf("|                          RECINTO                             |\n");
			printf("|______________________________________________________________|\n");
			printf("| ID: %i\n", recinto[i].id);
			printf("| Nome: %s\n", recinto[i].nome);
			printf("| Tipo: %s\n", recinto[i].tipo);
			printf("| Preço: %.2f\n", recinto[i].preco);
			printf("| conselho: %s\n", recinto[i].conselho);
			printf("| Hora de Abertura: %i horas\n", recinto[i].hAbertura);
			printf("| Hora de Fecho: %i horas\n", recinto[i].hFecho);
			printf("| Iluminaçao: %c\n", recinto[i].iluminacao);
			printf("| Estado: %c\n", recinto[i].estado);
			printf("|______________________________________________________________|\n");
	    	printf("Prima ENTER para continuar\n");

	}
}



int listarPrecoDesc(RECINTOS recinto[], int total){   //LISTAR preço descendente
	RECINTOS aux;
	int i = 0, j = 0;
	
	if(total == 0){
		printf("\nSem recintos registados"); return -1;
	}
	
	for(i = 0; i < total; i++){
		for(j = 0; j < total - 1; j++){
			if(recinto[j].preco < recinto[j+1].preco){
				aux = recinto[j];
				recinto[j] = recinto[j+1];
				recinto[j+1] = aux;
			}
		}
	}
	
	for(i = 0; i < total; i++){
		if(toupper(recinto[i].estado) == 1){
			printf("\n");
	        printf("_______________________________________________________________\n");
			printf("|                          RECINTO                             |\n");
			printf("|______________________________________________________________|\n");
			printf("| ID: %i\n", recinto[i].id);
			printf("| Nome: %s\n", recinto[i].nome);
			printf("| Tipo: %s\n", recinto[i].tipo);
			printf("| Preço: %.2f\n", recinto[i].preco);
			printf("| conselho: %s\n", recinto[i].conselho);
			printf("| Hora de Abertura: %i horas\n", recinto[i].hAbertura);
			printf("| Hora de Fecho: %i horas\n", recinto[i].hFecho);
			printf("| Iluminaçao: %c\n", recinto[i].iluminacao);
			printf("| Estado: %c\n", recinto[i].estado);
			printf("|______________________________________________________________|\n");
	    	printf("Prima ENTER para continuar\n");
		}
	}
	return 0;
	
}

int listarPorTipo(RECINTOS recinto[], int total){
	char nTipo[100];
	int i = 0;
	
	if(total == 0){
		printf("\nSem recintos registados!"); return -1;
	}
	
	printf("\nIntroduza o tipo de Recinto: ");
	fflush(stdin);
	gets(nTipo);
	
	for(i = 0; i < total; i++){
		if(stricmp(nTipo, recinto[i].tipo) == 0 && toupper(recinto[i].estado) == 1){
			printf("\n");
	        printf("_______________________________________________________________\n");
			printf("|                          RECINTO                             |\n");
			printf("|______________________________________________________________|\n");
			printf("| ID: %i\n", recinto[i].id);
			printf("| Nome: %s\n", recinto[i].nome);
			printf("| Tipo: %s\n", recinto[i].tipo);
			printf("| Preço: %.2f\n", recinto[i].preco);
			printf("| conselho: %s\n", recinto[i].conselho);
			printf("| Hora de Abertura: %i horas\n", recinto[i].hAbertura);
			printf("| Hora de Fecho: %i horas\n", recinto[i].hFecho);
			printf("| Iluminaçao: %c\n", recinto[i].iluminacao);
			printf("| Estado: %c\n", recinto[i].estado);
			printf("|______________________________________________________________|\n");
	    	printf("Prima ENTER para continuar\n");
		}
	}
	
	return 0;
}

int listarPorConcelho(RECINTOS recinto[], int total){
	char nConcelho[100];
	int i = 0;
	
	if(total == 0){
		printf("\nSem recintos registados!"); return -1;
	}
	
	printf("\nIntroduza o conselho: ");
	fflush(stdin);
	gets(nConcelho);
	
	for(i = 0; i < total; i++){
		if(stricmp(nConcelho, recinto[i].conselho) == 0 && toupper(recinto[i].estado) == 1){
			printf("\n");
	        printf("_______________________________________________________________\n");
			printf("|                          RECINTO                             |\n");
			printf("|______________________________________________________________|\n");
			printf("| ID: %i\n", recinto[i].id);
			printf("| Nome: %s\n", recinto[i].nome);
			printf("| Tipo: %s\n", recinto[i].tipo);
			printf("| Preço: %.2f\n", recinto[i].preco);
			printf("| conselho: %s\n", recinto[i].conselho);
			printf("| Hora de Abertura: %i horas\n", recinto[i].hAbertura);
			printf("| Hora de Fecho: %i horas\n", recinto[i].hFecho);
			printf("| Iluminaçao: %c\n", recinto[i].iluminacao);
			printf("| Estado: %c\n", recinto[i].estado);
			printf("|______________________________________________________________|\n");
	    	printf("Prima ENTER para continuar\n");
		}
	}
	return 0;
}


int listarPorTipoEConcelho(RECINTOS recinto[], int total){
	char nConcelho[100];
	char nTipo[100];
	int i = 0;
	
	if(total == 0){
		printf("\nSem recintos registados!"); return -1;
	}
	
	printf("\nIntroduza o conselho: ");
	fflush(stdin);
	gets(nConcelho);
	printf("\nIntroduza o tipo de recinto: ");
	fflush(stdin);
	gets(nTipo);
	
	for(i = 0; i < total; i++){
		if((stricmp(nConcelho, recinto[i].conselho) == 0) && stricmp(nTipo, recinto[i].tipo) == 0){
			if(toupper(recinto[i].estado) == 1){
			printf("\n");
	        printf("_______________________________________________________________\n");
			printf("|                          RECINTO                             |\n");
			printf("|______________________________________________________________|\n");
			printf("| ID: %i\n", recinto[i].id);
			printf("| Nome: %s\n", recinto[i].nome);
			printf("| Tipo: %s\n", recinto[i].tipo);
			printf("| Preço: %.2f\n", recinto[i].preco);
			printf("| conselho: %s\n", recinto[i].conselho);
			printf("| Hora de Abertura: %i horas\n", recinto[i].hAbertura);
			printf("| Hora de Fecho: %i horas\n", recinto[i].hFecho);
			printf("| Iluminaçao: %c\n", recinto[i].iluminacao);
			printf("| Estado: %c\n", recinto[i].estado);
			printf("|______________________________________________________________|\n");
	    	printf("Prima ENTER para continuar\n");
			}
		}
	}
	return 0;
}

int listarPorInt(RECINTOS recinto[], int total){
	int IntS = 0;
	int IntI = 0;
	int i = 0;
	
	if(total == 0){
		printf("\nSem recintos registados!"); return -1;
	}
	
	printf("\nIntroduza o preço mais baixo: ");
	scanf("%i", &IntS);
	printf("\nIntroduza o preço mais elevado: ");
	scanf("%i", &IntI);
	
	for(i = 0; i < total; i++){
		if(recinto[i].preco >= IntI && recinto[i].preco <= IntS && toupper(recinto[i].estado) == 1){
			printf("\n");
	        printf("_______________________________________________________________\n");
			printf("|                          RECINTO                             |\n");
			printf("|______________________________________________________________|\n");
			printf("| ID: %i\n", recinto[i].id);
			printf("| Nome: %s\n", recinto[i].nome);
			printf("| Tipo: %s\n", recinto[i].tipo);
			printf("| Preço: %.2f\n", recinto[i].preco);
			printf("| conselho: %s\n", recinto[i].conselho);
			printf("| Hora de Abertura: %i horas\n", recinto[i].hAbertura);
			printf("| Hora de Fecho: %i horas\n", recinto[i].hFecho);
			printf("| Iluminaçao: %c\n", recinto[i].iluminacao);
			printf("| Estado: %c\n", recinto[i].estado);
			printf("|______________________________________________________________|\n");
	    	printf("Prima ENTER para continuar\n");
		}
	}
	
	return 0;
}



//MENU

int menu() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("________________________________________________________________\n");
		printf("|                         RECINTOALL                            |\n");
		printf("|_______________________________________________________________|\n");
		printf("|----------------------- 1 - Recintos --------------------------|\n");
		printf("|----------------------- 2 - Clientes --------------------------|\n");
		printf("|----------------------- 3 - Alugueres -------------------------|\n");
		printf("|------------------------- 0 - SAIR ----------------------------|\n");
		printf("|_______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 3){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 3 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 3); // vai bloquear para o utilizador introduzir entre 1 a 3


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}

int menuRecintos() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                         RECINTOS                             |\n");
		printf("|______________________________________________________________|\n");
		printf("|----------------------- 1 - Inserir --------------------------|\n");
		printf("|----------------------- 2 - Editar ---------------------------|\n");
		printf("|--------------------- 3 - Ver recintos -----------------------|\n");
		printf("|----------------------- 4 - Listar ---------------------------|\n");
		printf("|------------------------ 0 - MENU ----------------------------|\n");
		printf("|______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 4){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 4 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 4); // vai bloquear para o utilizador introduzir entre 1 a 3


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}

int listarRecintos() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                De que maneira pertende listar?               |\n");
		printf("|______________________________________________________________|\n");
		printf("|-------------- 1 - Ordem decrescente de preço ----------------|\n");
		printf("|------------------------ 2 - Tipo ----------------------------|\n");
		printf("|-------------------- 3 - Por conselho ------------------------|\n");
		printf("|------------------- 4 - Tipo e conselho ----------------------|\n");
		printf("|----------------- 5 - Intervalo de preço ---------------------|\n");
		printf("|----------------------- 0 - VOLTAR ---------------------------|\n");
		printf("|______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 5){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 5 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 5); // vai bloquear para o utilizador introduzir entre 1 a 3


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}

int menuClientes() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                         CLIENTES                             |\n");
		printf("|______________________________________________________________|\n");
		printf("|----------------------- 1 - Inserir --------------------------|\n");
		printf("|----------------------- 2 - Editar ---------------------------|\n");
		printf("|----------------------- 3 - Listar ---------------------------|\n");
		printf("|----------------------- 0 - VOLTAR ---------------------------|\n");
		printf("|______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 3){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 3 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 3); // vai bloquear para o utilizador introduzir entre 1 a 3


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}


int listarClientes() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                         CLIENTES                             |\n");
		printf("|______________________________________________________________|\n");
		printf("|------------------- 1 - Ordem Alfabetica ---------------------|\n");
		printf("|---------------------- 2 - Localidade ------------------------|\n");
		printf("|------------------------- 3 - NIF ----------------------------|\n");
		printf("|----------------------- 0 - VOLTAR ---------------------------|\n");
		printf("|______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 3){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 3 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 3); // vai bloquear para o utilizador introduzir entre 1 a 3


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}


int aluguer() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|                          ALUGUER                             |\n");
		printf("|______________________________________________________________|\n");
		printf("|-------------------- 1 - Fazer Reserva -----------------------|\n");
		printf("|---------------------- 2 - Historico -------------------------|\n");
		printf("|----------------------- 3 - Listar ---------------------------|\n");
		printf("|----------------------- 0 - VOLTAR ---------------------------|\n");
		printf("|______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 3){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 3 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 3); // vai bloquear para o utilizador introduzir entre 1 a 3


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}

int listarAluguer() {
	limparEcra();
    int escolha = 0,i;
    do {

        printf("\n");
        printf("_______________________________________________________________\n");
		printf("|               De que maneira pertende listar?                |\n");
		printf("|______________________________________________________________|\n");
		printf("|------- 1 - Alugueres Feitos por determinado cliente ---------|\n");
		printf("|---------- 2 - Alugueres de um determinado recinto -----------|\n");
		printf("|---- 3 - Recintos disponiveis para alugar de um conselho -----|\n");
		printf("|- 4 - Recintos disponiveis para alugar de um conselho e tipo--|\n");
		printf("|5 -Recintos disponiveis para alugar no periodo desejado(data e hora)--|\n");
		printf("|----------------------- 0 - VOLTAR ---------------------------|\n");
		printf("|______________________________________________________________|\n");
        printf("\n Por Favor Escolha  a opção: ");
        
        scanf("%i",&escolha);
      
      if(escolha < 0 || escolha > 5){
      	printf("\nERRO: Escolha incorreta! Pro favor escolha entre 1 e 3 , ou 0 para sair ");
      	fflush(stdin);
	  }
      
      
    } while (escolha < 0 || escolha > 5); // vai bloquear para o utilizador introduzir entre 1 a 5


    return escolha; // a escolha e returnada para o ciclo do main para exeucutar o procidimento certo
}
int main(int argc, char *argv[]) {
	
	setlocale(LC_ALL , "PORTUGUESE");
	CLIENTES *iniCliente = NULL, *fimCliente = NULL;
	RECINTOS rec[80];
	
	carregarClientes(&iniCliente,&fimCliente);
	
	int total=0, capacTotal=0;
	
	
	
	do{
		switch(menu()){
		
			case 1: // caso do recinto
				limparEcra();
					switch(menuRecintos()){
						case 1:// inserir
								inserirRecintos(rec, &capacTotal);
								guardaRecintos(rec, total);
							break;
						case 2:// editar
								editarRecinto(rec, total);
								guardaRecintos(rec, total);
							break;
						case 3:// Ver recintos
								listaRecintos(rec, total);
							break;
						case 4://Listar
									switch(listarRecintos()){// Menu Recintos parte Listar
										case 1:// Ordem decrescente de preço
												listarPrecoDesc(rec, total);
											break;
										case 2:// Tipo
												listarPorTipo(rec, total);
											break;
										case 3:// conselho
												listarPorConcelho(rec, total);
											break;
										case 4://Tipo e conselho
												listarPorTipoEConcelho(rec, total);
											break;
										case 5://intervalo de preços
												listarPorInt(rec, total);
											break;
												
										default:
											break;
											
										}
										break;
						default:
							break;
							
						}
				break;
			case 2:// caso do clientes
							switch(menuClientes()){// Menu Clientes
										case 1:// Inserir
												inserirCliente(&iniCliente, &fimCliente);
											break;
										case 2:// EDITAR
												editarCLiente(&iniCliente);
											break;
										case 3:// LISTAR

													switch(listarClientes()){// Menu Clientes
												case 1:// Ordem alfabetica
													listarClientesAlfa(&iniCliente, &fimCliente);
													break;
												case 2:// Localidade
														printf("\nEditar");
														getchar();getchar();
													break;
												case 3:// NIF
														listaDadosCliente(&iniCliente, &fimCliente);
													break;	
														
												default:
													break;
													
												}
													
										default:
											break;
											
										}
										break;
					
				break;
					
					
					
					
					
				break;
			case 3:// caso dos algueres :D
				switch(aluguer()){// ALUGUERES
										case 1:// FAZER RESERVA
												printf("\nInserir");
												getchar();getchar();
											break;
										case 2:// HISTORICO
												printf("\nEditar");
												getchar();getchar();
											break;
										case 3:// LISTAR
													switch(listarAluguer()){
														case 1: //Alugueres Feitos por determinado cliente
																printf("\nInserir");
																getchar();getchar();
															break;
														case 2: //Alugueres de um determinado recinto
																printf("\nInserir");
																getchar();getchar();
															break;
														case 3: //Recintos disponiveis para alugar de um conselho
																printf("\nInserir");
																getchar();getchar();
															break;
														case 4: //Recintos disponiveis para alugar de um conselho e tipo
																printf("\nInserir");
																getchar();getchar();
															break;
														case 5: //Recintos disponiveis para alugar no periodo desejado(data e hora)
																printf("\nInserir");
																getchar();getchar();
															break;
															default:
											break;			
											
											}
				}
												
				
				break;
			default:
				 abort();
				}	
	}while(1);
	
	
	return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Rita_18 Retire o LimparEcra() dentro do menu(), assim dá para ver as outras opções que não funcionavam. Seu programa original não está adicionando elementos, então eu modifiquei as seguintes funções: inserirRecintos(rec, &capacTotal);, editarRecinto(rec, &capacTotal);, listaRecintos(rec, &capacTotal);. Acho que saberá do que estou falando já que o código é seu. A variável total nessas funções aparentemente não serviam para nada. Também deixei a variável RECINTOS rec[80]; global.

 

Já é um avanço, mas deve ter mais problemas ainda e não sei se terá tempo de corrigir tudo até amanhã.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...