Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!