Ir ao conteúdo
  • Cadastre-se

ReplicantMachine

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por ReplicantMachine

  1. #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <locale.h>
    /*
    Síntese
    Objetivo: Acompanhar os teste dos aviões dos clientes, realizado pela Embraer, nas pistas de prova 
    Entrada: Para cada avião, codigo de identificação, modelo, capacidade, nome do cliente, país de origem;
    para as pistas de teste, código sequencial,endereco, estado onde localiza-se a pista, tamanho do circuito,
    velocidade maxima obtida em todos os testes, identificação da avião que obteve maior velocidade
    Saída: Se teste realizado, identificação do avião, identificação do aviao, data do teste (com dia mes e ano) colhido
    diretamente do computador e velocidade máxima aferida.
     */
    
    #define EXIT_SUCCESS 0
    #define EXIT_FAILURE 1
    #define COD_ID 7
    #define MAX 100
    
    //cria um sinônimo ou alias para para um tipo de dado existente
    
    typedef struct{
    	char codigoIdentificacao[COD_ID];
    	char modeloAviao[MAX];
    	int capacidade;
    	char nomeCliente[MAX];
    	char nomePais[MAX];
    }Aviao;
    
    typedef struct{
    	int codigoPista;
    	char enderecoPista[MAX];
    	char estadoPista[MAX];
    	float tamanhoCircuito;
    	float velocidadeMaxima;
    	Aviao aviao;
    }PistaDeTeste;
    
    
    
    void leValidaFloat(char *msg, char *msgErro, float *circuito);
    int verifica(char nome[]);
    int leValidaCapacidade(char *msg, char *msgErro, int *cap);
    char *leValidaTexto(char *msg, char *msgErro);
    int verificaModelo(char modelo[]);
    int verificaCodigoAviao(char codigoAviao[]);
    int verificaCodigo(char nome[]);
    char *leValidaCodigoAviao(char *msg, char *msgErro);
    void cadastrarDadosPistas();
    void cadastrarDadosAvioes();
    void chamaMenuPrincipal(char *opcao);
    void chamaFuncoesMenuPrincipal(char *opcao);
    int main(int argc, char *argv[]) {
    	setlocale(LC_ALL, "Portuguese");
    	char opcao=' ';
    	do{
    		printf("CONTROLE DE TESTES DE AVIOES DA EMBRAER\n\n");
    		chamaMenuPrincipal(&opcao);
    		chamaFuncoesMenuPrincipal(&opcao);
    		
    	}while(opcao!='s');
    	
    	
    	return 0;
    }
    
    
    
    //Chama as funcoes do menu principal
    //entrada: Opcao
    //Saida: Nenhuma
    void chamaMenuPrincipal(char *opcao){
    	int flag=1;
    	do{
    		printf("(1)- CADASTRAR DADOS DO CLIENTE\n");
    		printf("(2)- CADASTRAR DADOS DA PISTA DE TESTE\n");
    		printf("(3)- CADASTRAR DADOS TESTE\n");
    		printf("(S)- ENCERRAR O PROGRAMA\n");
    		scanf(" %c", &*opcao);
    		*opcao=tolower(*opcao);
    		if((*opcao<49||*opcao>51)&&*opcao!='s'){
    			printf("\nOpcao invalida!\n");
    			flag=0;
    		}else{
    			flag=1;
    		}
    		system("cls");
    	}while(!flag);
    }
    void chamaFuncoesMenuPrincipal(char *opcao){
    	switch(*opcao){
    		case '1':
    			cadastrarDadosAvioes();
    			break;
    		case '2':
    			cadastrarDadosPistas();
    			break;
    		case '3':
    			break;
    		case 's':
    			exit(EXIT_SUCCESS);
    			break;
    	}
    }
    void cadastrarDadosAvioes(){
    	Aviao aviao;
    	char opcaoEscolhida= ' ';
    	int gravado=0, flag=1;
    	FILE *arquivo;
    	
    	arquivo = fopen("avioes.txt", "ab");
    	
    	if(!arquivo){
    		perror("\nErro na abertura do arquivo!\n");
    		exit(EXIT_FAILURE);
    	}else{
    		
    		do{
    			
    			do{
    				strcpy(aviao.codigoIdentificacao, leValidaCodigoAviao("DIGITE O CODIGO DO AVIAO:", "\nCODIGO INVALIDO!\n"));
    				//verifica se existe repeticao
    				if(verificaCodigoAviao(aviao.codigoIdentificacao)==0){
    					flag=0;
    					printf("\nESSE CODIGO JA EXISTE!\n");
    				}else{
    					flag=1;
    				}
    				
    			}while(!flag);
    			
    			do{
    				strcpy(aviao.modeloAviao, leValidaTexto("DIGITE O MODELO DO AVIAO:", "\nMODELO NAO PODE SER VAZIO!\n"));
    				if(verificaModelo(aviao.modeloAviao)==0){
    					flag=0;
    					printf("\nESSE MODELO JA EXISTE\n");
    				}else{
    					flag=1;
    				}
    				
    			}while(!flag);
    			
    			
    			
    			gravado = fwrite(&aviao, sizeof(Aviao), 1, arquivo);
    			
    			if(gravado==1){
    				printf("\nGravado com sucesso!\n");
    			}
    			
    			printf("(1)- CADASTRAR OUTRO AVIAO (Tecle S)\n");
    			printf("(2)- VOLTAR AO MENU (QUALQUER  OUTRA TECLA)\n");
    			scanf(" %c", &opcaoEscolhida);
    			opcaoEscolhida=tolower(opcaoEscolhida);
    			system("cls");
    			getch();
    		}while(opcaoEscolhida=='s');
    		
    		fclose(arquivo);
    		
    	}
    	
    	
    	
    }
    
    void cadastrarDadosPistas(){
    	
    	
    	
    }
    
    char *leValidaCodigoAviao(char *msg, char *msgErro){
    	char *pNome=0, nome[MAX];
    	strcpy(nome, "");
    	int stringTam=0, flag=1, verificador=0;
    	
    	do{
    		printf("%s", msg);
    		fflush(stdin);
    		scanf("%[^\n]s", nome);
    		
    		if(strlen(nome)==0){
    			printf("%s", msgErro);
    			flag=0;
    		}else if(strlen(nome)<COD_ID || strlen(nome)>COD_ID){
    			flag=0;
    			
    		}else if(verificaCodigo(nome)==0){
    			flag=0;
    		}else{
    			flag=1;
    		}
    		
    	
    	}while(!flag);
    	system("cls");
    	getch();
    	return pNome = nome;
    }
    int verificaCodigo(char nome[]){
    	int i, flag=1;
    	
    	
    	for(i=0;i<COD_ID;i++){
    		if(i<3){
    			if(!isalpha(nome[i])){
    				flag=0;
    			}
    		}else{
    			if(!isdigit(nome[i])){
    				flag=0;
    			}
    		}
    	}
    	
    	return flag;
    }
    char *leValidaTexto(char *msg, char *msgErro){
    	char *pNome=0, aux[MAX];
    	strcpy(aux, "");
    	int i, flag=1, stringTam=0;
    	
    	do{
    		printf("%s", msg);
    		fflush(stdin);
    		scanf("%[^\n]s", &aux);
    				
    		if(strlen(aux)==0){
    			printf("%s", msgErro);
    			flag=0;
    		}else{
    			flag=1;
    		}
    	
    	}while(!flag);
    	system("cls");
    	getch();
    	return pNome = aux;
    }
    int leValidaCapacidade(char *msg, char *msgErro, int *cap){
    	int flag=1;
    	
    	do{
    		printf("%s", msg);
    		scanf("%d", &*cap);
    		
    		if(*cap<=0){
    			printf("%s", msgErro);
    			flag=0;
    		}else{
    			flag=1;
    		}
    		
    	}while(!flag);
    	system("cls");
    }
    int verifica(char nome[]){
    	FILE *paises;
    	char aux[MAX];
    	paises = fopen("paises.txt", "rb");
    	
    	if(!paises){
    		perror("Error: ");
    		exit(EXIT_FAILURE);
    	}else{
    		fflush(stdin);
    		while(fgets(aux, sizeof(aux), paises)!=NULL){
    			if(aux[strlen(aux)-1]=='\n'){
    				aux[strlen(aux)-1]='\0';
    			}
    			if(stricmp(nome, aux)==0){
    				return 1;
    			}
    		}
    	}
    	
    	return 0;
    	
    }
    void leValidaFloat(char *msg, char *msgErro, float *circuito){
    	int flag=1;
    	
    	do{
    		printf("%s", msg);
    		scanf("%f", &*circuito);
    		
    		if(*circuito<=0){
    			flag=0;
    			printf("%s", msgErro);
    		}else{
    			flag=1;
    		}
    	
    	}while(!flag);
    }
    
    int verificaCodigoAviao(char codigoAviao[]){
    	Aviao aviao;
    	FILE *arquivo;
    	arquivo = fopen("avioes.txt", "rb");
    	if(!arquivo){
    		perror("Error: ");
    		exit(EXIT_FAILURE);
    	}else{
    		fread(&aviao, sizeof(Aviao), 1, arquivo);
    		while(!feof(arquivo)){
    			if(strcmp(aviao.codigoIdentificacao, codigoAviao)==0){
    				fseek(arquivo, -sizeof(Aviao), SEEK_CUR);
    				return 0;
    			}
    			fread(&aviao, sizeof(Aviao), 1, arquivo);
    		}
    	
    		return 1;
    		
    	}
    	
    }
    int verificaModelo(char modelo[]){
    	Aviao aviao;
    	
    	FILE *arquivo;
    	
    	arquivo = fopen("avioes.txt", "rb");
    	
    	if(!arquivo){
    		perror("\nNao foi possivel abertura do arquivo!\n");
    		exit(EXIT_FAILURE);
    	}else{
    		fread(&aviao, sizeof(Aviao), 1, arquivo);
    		while(!feof(arquivo)){
    			if(strcmp(aviao.modeloAviao, modelo)==0){
    				fseek(arquivo, -sizeof(Aviao), SEEK_CUR);
    				return 0;
    			}
    		}
    		
    		return 1;
    		
    	}
    	
    	
    	fclose(arquivo);
    	
    }

     

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!