Ir ao conteúdo
  • Cadastre-se

C Código de concessionária - Reserva


Noobia

Posts recomendados

Boa tarde pessoal! Espero que todos estejam bem!

Eu estou tentando montar um código de concessionária, onde recebe os nomes da loja, dados, modelo do carro etc. Eu consegui fazer boa parte do meu código mas agora vem o problema..

Eu preciso fazer uma função que faça mostrar se o carro foi reservado ou não, porém estou com dificuldade e não sei exatamente o que fazer, será que alguém conseguiria me dar uma luz? Eu sou iniciante em C ainda..

Aqui está o que eu fiz até agora, é um código um pouco denso

Muito obrigada!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <locale.h>
//informações de início
	
typedef struct endereco { 
 char logradouro[80]; 
 char bairro[15]; 
 char CEP[10]; 
 char cidade[15]; 
 char estado[3]; 
 char fone[12]; 
 char email[40]; 
}endereco; 


typedef struct infocarro { 
 char sigla; 
 int regcarro; 
}infocarro; 
 
 
union dadoscarro { 
 char sigla; 
 struct infocarro reservado;  //informa o carro que já está reservado
}dadoscarro; 
 
 
typedef struct loja { //estrutura de informações
 int regloja; //gera automático 
 char nome[30]; 
 char CNPJ[19]; 
 struct endereco end; 
 int sold; 
 int reserved; 
 union  dadoscarro  tabela[3]; 
}loja;
	
typedef struct infoloja { 
 char sigla;    //informações dos carros 
 char CNPJ[19]; 
}infoloja; 
 
union dadosloja { 
 char sigla;      //reserva dos carros
 struct infoloja reserva; 
}dadosloja; 
 
typedef struct montadora    {  //dados
 int regcarro; //gera automático 
 char modelo[20]; 
 char cor[10]; 
 float  valor; 
 union dadosloja status; 
}montadora;

typedef struct data      { 
int dia;  
int mes;  
int ano;  
}data; 

 
typedef struct historicoVendas     { 
     int reghist; 
     int regcarro; 
     char modelo[20]; 
char cor[10]; 
float valor;  
int regloja; 
char nome[30]; 
char cnpj[19]; 
struct data; 
}historicoVendas; 

void menu();
void alocaL(loja **p,int tam);
void cadastroloja(loja *p, data *dt);
int verificaL();
void alocacarro(montadora **p, int tam);
void cadastrocarro(montadora *p);
int verificaC();
void exibirloja(loja *p, data *dt);
void exibircarro(montadora *p);
void gravaL(loja *p,char *str,int pos);
void gravaC(montadora *p,char *str,int pos);
void historicoVenda(montadora, data, loja);
void gravaH(loja *p, montadora *mt, data *dt);
void dadosloja(loja *p, montadora *mt, dloja *dl);
void carros(loja *p, data *dt, montadora *mt);

int main ()
{	

setlocale(LC_ALL, "Portuguese");
loja*lj=NULL;
data*dt=NULL;
montadora*mt=NULL;
alocacarro(&mt,1);
alocaL(&lj,1);

int op, i;
do{
menu();
scanf("%i",&op);
	


	switch(op){
	
		case 1:
			printf("Cadastro loja");
				fflush(stdin);
		    cadastroloja(lj, dt);
	     	system("cls");
		   break;
			
			
			
		case 2:
			printf("Consultar loja");
			fflush(stdin);
			exibirloja(lj, dt);
		  break;
			
			
		case 3:
			printf("Cadastro carro");
			fflush(stdin);
			cadastrocarro(mt);
			break;
		
		case 4:
			printf("Consultar carro");
			fflush(stdin);
			exibircarro(mt);
			break;
			
		default:
			
			break;
			
			
	}
	
	
}	while(op<5);

	
	
	return 0;
}
	
	
	
void menu()
{

	printf("\n1-Cadastro da empresa");
	printf("\n2-Consultar a empresa");
	printf("\n3-Cadastro do carro");
	printf("\n4-Consultar o carro\n");
}

void alocaL(loja **p,int tam){
    if((*p=(loja*)realloc(*p,tam*sizeof(loja)))==NULL)
      exit(1);

}



	void cadastroloja(loja *p, data *dt){
		
		
		
		int qreg=0,i;
		
		qreg=verificaL();
		
		printf ("\nDigite o nome da loja: ");
		gets (p->nome);
		fflush(stdin);
		
		printf ("\nDigite o CNPJ da loja: ");
		gets (p->CNPJ);
		fflush(stdin);
		
	
		printf ("\nDigite o Logradouro: ");
		gets (p->end.logradouro);
		fflush(stdin);
		
		printf ("\nDigite o Bairro: ");
		gets (p->end.bairro);
		fflush(stdin);
		
		printf ("\nDigite o CEP: ");
		gets (p->end.CEP);
		fflush(stdin);
	
		printf ("\nDigite o Estado: ");
		gets (p->end.estado);
		fflush(stdin);
	
		printf ("\nDigite o CEP: ");
		gets (p->end.CEP);
		fflush(stdin);
	
		printf ("\nDigite o fone: ");
		gets (p->end.fone);
		fflush(stdin);
		
		printf ("\nDigite o email: ");
		gets (p->end.email);
		fflush(stdin);
	
		printf ("\nDigite o dia da venda ");
		scanf("%i",&(dt->dia));
		fflush(stdin);
		
		printf ("\nDigite o mês da venda ");
		scanf("%i",&(dt->mes));
		fflush(stdin);
		
		printf ("\nDigite o ano da venda ");
		scanf("%i",&(dt->ano));
		fflush(stdin);
	
	
		p->sold=0;
		p->reserved=0;
		
		for(i=0;i<3;i++){
			p->tabela[i].sigla='L';
			
		gravaL(p,"ab",1);
			
			
			
		}
	}
		
	int  verificaL(){
    long int cont=0;
    FILE *fptr=NULL;
    if((fptr=fopen("concessionaria.bin","rb"))==NULL)
      return cont;
    else
      {
      fseek(fptr,0,2);  
      cont=ftell(fptr)/sizeof(loja);   
      fclose(fptr);    
      return cont;
      }
      
      
}
		
	int  verificaC(){
    long int cont=0;
    FILE *fptr=NULL;
    if((fptr=fopen("carro.bin","rb"))==NULL)
      return cont;
    else
      {
      fseek(fptr,0,2);  
      cont=ftell(fptr)/sizeof(montadora);   
      fclose(fptr);    
      return cont;
      }
      
	}
	
			
		void alocacarro(montadora **p, int tam){
			
			if((*p=(montadora*)realloc(*p,tam*sizeof(montadora)))==NULL)
      exit(1);
			
		}

	
	void cadastrocarro(montadora *p){
	
		int qr=0;
		qr=verificaC();
		fflush(stdin);
		
		printf ("\nDigite o modelo do carro: ");
		gets (p->modelo);
		fflush(stdin);
		
		printf ("\nDigite a cor: ");
		gets (p->cor);
		
		
		
		printf ("\nDigite o preço: ");
		scanf("%f",&p->valor);
		fflush(stdin);
		

		p->status.sigla='L';
		
			gravaC(p,"ab",1);
		
	}
	
	void exibirloja(loja *p, data *dt){
		
		int i,j,qreg;
    FILE *fptr=NULL;
    qreg=verificaL();   
    system("cls");
    if((fptr=fopen("concessionaria.bin","rb"))==NULL)
        printf("\nErro ao abrir o arquivo");
    else{
    	 printf("\nRegistro\tNome\tCNPJ\tEndereço\tVendido\tReservado\tDia\tMês\tAno");
          for(i=0;i<qreg;i++){
            fseek(fptr,i*sizeof(loja),0);
            fread(p,sizeof(loja),1,fptr);
        
            printf("\n%i|\t%s|\t%s|\t%s\t%i|\t%i",p->regloja,p->nome,p->CNPJ,p->end.CEP, p->sold, p->reserved, dt->dia, dt->mes, dt->ano);
            
			for(j=0;j<3;j++){
					if(p->tabela[j].sigla=='L'){
                printf("%c\t",p->tabela[j].sigla);
           	 }	else{
                printf("%c - %i",p->tabela[j].reservado.sigla,p->tabela[j].reservado.regcarro);
           		 }	
						
			}
			
        }
      fclose(fptr);
      }
      printf("\n");
    system("pause");
		
		
		
	}
	
	
	
	
	
	void exibircarro(montadora *p){
		
		int i,j,qreg;
    FILE *fptr=NULL;
    qreg=verificaC();   
    system("cls");
    if((fptr=fopen("carro.bin","rb"))==NULL)
        printf("\nErro ao abrir o arquivo");
    else{
    	 printf("\nregCarro\tModelo\tCor\tValor\tStatus\t");
          for(i=0;i<qreg;i++){
            fseek(fptr,sizeof(montadora),0);
            fread(p,sizeof(montadora),1,fptr);
        
            printf("\n%i|\t%s|\t%s|\t%.2f|",p->regcarro,p->modelo,p->cor,p->valor);
            if(p->status.sigla=='L'){
                printf("%c",p->status.sigla);
            }else{
                printf("%c - %s",p->status.reserva.sigla,p->status.reserva.CNPJ);
            }
        }
      fclose(fptr);
      }
      printf("\n");
    system("pause");
	
			
}
	
	void gravaL(loja *p,char *str,int pos){
    FILE *fptr=NULL;

    if((fptr=fopen("concessionaria.bin",str))==NULL)
      printf("\nErro ao abrir o arquivo");
    else{
        if(strcmp(str,"rb+")==0)
            fseek(fptr,sizeof(loja),0);

          fwrite(p,sizeof(loja),1,fptr);
        }
    fclose(fptr);        
}

void gravaC(montadora *p,char *str,int pos){
	
	FILE *fptr=NULL;

    if((fptr=fopen("carro.bin",str))==NULL)
      printf("\nErro ao abrir o arquivo");
    else{
        if(strcmp(str,"rb+")==0)
            fseek(fptr,sizeof(montadora),0);

          fwrite(p,sizeof(montadora),1,fptr);
        }
    fclose(fptr);  
	

		
}

void gravaH(loja *p, montadora *mt, data *dt, historicoVendas, char *str){
	
	FILE *fptr=NULL;
	if((fptr=fopen("historico.bin",str))==NULL)
      printf("\nErro ao abrir o arquivo");
    else{
        if(strcmp(str,"rb+")==0)
            fseek(fptr,sizeof(data),0);

          fwrite(p,sizeof(data),1,fptr);
	
}
	fclose(fptr); 
}
	

void historicoVenda(montadora *mt, data *dt, loja *lj){
	
	char cnpj2[19];
	
	printf("\nQual o CNPJ que vai ser consultado?");
	gets (cnpj2);
	
	if(strcmp(cnpj2,lj->CNPJ)){
		
		
	}
}

void dadosloja(loja *p, montadora *mt, dloja *dl){
	
	
	
	
		
}




void carros(loja *p, data *dt, montadora *mt){
	
	
	
	
	
	
}

 

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