Ir ao conteúdo

Posts recomendados

Postado

Por favor, estou desesperada! :(

Tenho que entregar amanhã um trabalho que é um sistema de locadora de veículos, mas estou enfrentando alguns problermas com erros...

Abaixo seguem todas as funções do programa, comentei os erros.

Se alguém puder ajudar por favor!

Obrigada.

//locadora.h

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

// definicao do tipo cliente
typedef struct {
int codcli;
char nome[100];
int cpf[11];
char endereco[30];
int telefone[10];
int idade[2];
int codcarro;
int status; // sendo o status 0 para inativo e 1 para ativo
}cliente;

// definicao do tipo automovel
typedef struct {
int codcar;
char modelo[20];
char marca[20];
char placa[7];
char cor[20];
int status;
}automovel;

//prototipo das funcoes
//funcoes de clientes
void Clientes();
void Automoveis();
void Cadastro_Clientes();
void Altera_Clientes();
void Consultar_Clientes();
void Excluir_Clientes();
void Relatorio_Clientes();

//funcoes de automoveis
void Cadastro_Automoveis();
void Relatorio_Automoveis();

//funcao de locacao
int Gerenciamento_Locacoes();

--------------------------------------------------------------------------------------------------

//main

#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "Locadora.h"

int main()
{

char escolha=0;
while( (escolha!='s') && (escolha!='S') )
{


printf("--------------------------------------------------------------------------------\n");
printf(" Sistema de Gerenciamento de uma Locadora de Automoveis\n");
printf("--------------------------------------------------------------------------------\n");
printf(" Digite o numero referente a opcao desejada:\n");
printf(" 1- Clientes\n");
printf(" 2- Automoveis\n");
printf(" 3- Gerenciamento de Locacoes\n");
printf("Opcao: ");
scanf("%i", &escolha);
fflush(stdin);


switch(escolha)
{
case 1:
Clientes(); break;
case 2:
Automoveis(); break;

case 3:
Gerenciamento_Locacoes(); break;
default:
printf("Opcao invalida, digite a opcao novamente:\n ");
}
}
return 0;

}
--------------------------------------------------------------------------------------------------
//Clientes

#include "locadora.h"


// Função de cadastro de clientes
void Clientes()
{
int escolha=0;

printf("--------------------------------------------------------------------------------\n");
printf(" Clientes\n");
printf("--------------------------------------------------------------------------------\n");

printf(" Digite o numero referente a opcao desejada:\n");
printf(" 1- Cadastrar Cliente\n");
printf(" 2- Alterar Cliente\n");
printf(" 3- Excluir Cliente\n");
printf(" 4- Consultar Clientes\n");
printf(" 5- Relatorio de Clientes\n");
printf("Opcao: ");
scanf("%i", &escolha);
fflush(stdin);


switch(escolha)
{
case 1:
Cadastro_Clientes(); break;
case 2:
Altera_Clientes(); break;

case 3:
Excluir_Clientes(); break;
case 4:
Consultar_Clientes(); break;
case 5:
Relatorio_Clientes(); break;
default:
printf("Opcao invalida, digite a opcao novamente:\n ");
}
}


CODE
//Cadastro Clientes


#include "locadora.h"


// Função de cadastro de clientes
void Cadastro_Clientes()
{
printf("--------------------------------------------------------------------------------\n");
printf(" Cadastro de Clientes\n");
printf("--------------------------------------------------------------------------------\n");

cliente *vetclientes; // vetor de clientes
int n; // numero de clientes
FILE *arq_cliente; // arq. de armazenamento

// abre o arquivo para leitura
arq_cliente=fopen("Cadastro_Cliente.txt","r+b");

if(arq_cliente==NULL)
{
// se arquivo não existe abre para escrita
arq_cliente=fopen("Cadastro_Cliente.txt","w+b");
// inicializa num de clientes com 0
n=0;
}
else
{
//se arquivo existe le o num de clientes
fread(&n,sizeof(int),1,arq_cliente);
//aloca memória para os clientes
vetclientes = (cliente *)malloc(sizeof(cliente)*n);
// e le o vetor de clientes inteiro
fread(vetclientes,sizeof(cliente),n,arq_cliente);
}

if(n==0)
{
// se n=0, aloca memoria para vetor
vetclientes = (cliente *)malloc(sizeof(cliente));

}
else
{
// caso contrario realoca memoria para vetor
vetclientes= (cliente *)realloc(vetclientes,sizeof(cliente)*(n+1));
}

// cadastra novo cliente
printf("\nCliente %d",n);
printf("\nNome: "); scanf("%s",vetclientes[n].nome);
fflush(stdin);
printf("CPF: "); scanf("%i",vetclientes[n].cpf);
fflush(stdin);
printf("Endereco: "); scanf("%s",vetclientes[n].endereco);
fflush(stdin);
printf("Telefone: "); scanf("%i",vetclientes[n].telefone);
fflush(stdin);
printf("Idade: "); scanf("%i",&vetclientes[n].idade);
vetclientes[n].codcli = n;
vetclientes[n].status = 1;
printf("codigo:", &vetclientes[n].codcli);
printf("\nRegistro gravado com sucesso!\n");


// incrementa numero de clientes
n++;


// fecha o arquivo
fclose(arq_cliente);

// e em seguida reabre para posicionar no comeco
arq_cliente=fopen("Cadastro_Cliente.txt","r+b");

//reescreve o numero de clientes atualizado
fwrite(&n,sizeof(int),1,arq_cliente);
fwrite(vetclientes,sizeof(cliente),n,arq_cliente);

// e fecha o arquivo
fclose(arq_cliente);

//libera memoria
free(vetclientes);

}

CODE
//Altera Clientes

#include "locadora.h"

// Função de cadastro de clientes
void Altera_Clientes()
{

char nomecli[50];
int i;


printf("--------------------------------------------------------------------------------\n");
printf(" Alteracao de Clientes\n");
printf("--------------------------------------------------------------------------------\n");

cliente *vetclientes; // vetor de clientes
int n; // numero de clientes
FILE *arq_cliente; // arq. de armazenamento

// abre o arquivo para leitura
arq_cliente=fopen("Cadastro_Cliente.txt","r+b");

if(arq_cliente==NULL)
{
// se arquivo não existe abre para escrita
arq_cliente=fopen("Cadastro_Cliente.txt","w+b");
// inicializa num de clientes com 0
n=0;
}
else
{
//se arquivo existe le o num de clientes
fread(&n,sizeof(int),1,arq_cliente);
// e le o vetor de clientes inteiro
fread(vetclientes,sizeof(cliente),n,arq_cliente);
printf("Digite o nome do cliente que deseja alterar:\n");
scanf("%i", &nomecli);

for (i=0; i<n; i++)
{

//ERRO!!!!!!!!!!!!
//NA LINHA ABAIXO DA ERRO! (expected primary-expression before '[' token)

if(strcmp(nomecli = cliente[n].nome)==0) {
printf("\nCliente %d",n);
printf("\nNome: "); scanf("%s",vetclientes[n].nome);
fflush(stdin);
printf("CPF: "); scanf("%i",vetclientes[n].cpf);
fflush(stdin);
printf("Endereco: "); scanf("%s",vetclientes[n].endereco);
fflush(stdin);
printf("Telefone: "); scanf("%i",vetclientes[n].telefone);
fflush(stdin);
printf("Idade: "); scanf("%i",&vetclientes[n].idade);
printf("\nCliente alterado com sucesso:\n");
}

}
// fecha o arquivo
fclose(arq_cliente);

// e em seguida reabre para posicionar no comeco
arq_cliente=fopen("Cadastro_Cliente.txt","r+b");

//reescreve o numero de clientes atualizado
fwrite(&n,sizeof(int),1,arq_cliente);
fwrite(vetclientes,sizeof(cliente),n,arq_cliente);

// e fecha o arquivo
fclose(arq_cliente);

//libera memoria
free(vetclientes);

}

}

CODE
//Excluir Clientes

#include "locadora.h"

// Função de cadastro de clientes
void Excluir_Clientes()
{

int n;
int i;
char consulta[40];
char resposta;
cliente *vetclientes;

printf("--------------------------------------------------------------------------------\n");
printf(" Exclusão de Cliente\n");
printf("--------------------------------------------------------------------------------\n");

printf("Digite o nome do cliente que voce deseja excluir: ");
gets(consulta);
fflush(stdin);
for(i=0;i<n;i++)
{
if(strcmp(consulta, vetclientes[i].nome));
{
printf("Cliente cadastrado. Deseja excluir cliente? s/n: ");
scanf("%c", &resposta);

if(resposta == 's' or resposta=='S'){

//PROBLEMA NESTA LINHA, ERRO NA EXECUÇÃO
//CORTA A EXECUÇÃO QUANDO CHEGA AQUI
vetclientes[i].status = 0; //define que o cliente está inativo
printf("Cliente excluido com sucesso!");
}
}
}
}


CODE
#include "locadora.h"

// Função Relatório de Clientes


void Relatorio_Clientes()
{
printf("--------------------------------------------------------------------------------\n");
printf(" Relatorio de Clientes\n");
printf("--------------------------------------------------------------------------------\n");

cliente *vetclientes; // vetor de clientes
int i, n; // numero de clientes
FILE *arq_cliente;

//abre o arquivo binario para ler
arq_cliente=fopen("Cadastro_Cliente.bin","r+b");

printf("Teste1");

//IMPRIME O PRINTF TESTE1 E DEPOIS não IMPRIME MAIS NADA!

//carrega o vetor
//se arquivo existe le o num de clientes
fread(&n,sizeof(int),1,arq_cliente);
//aloca memória para os clientes
vetclientes = (cliente *)malloc(sizeof(cliente)*n);
// e le o vetor de clientes inteiro
fread(vetclientes,sizeof(cliente),n,arq_cliente);

// abre o arquivo para leitura
arq_cliente=fopen("Relatorio_Clientes.txt","w+t");

printf("Teste2");

if(arq_cliente==NULL){
// se não existe o arquivo exibe mensagem
printf("\nErro na abertura do arquivo");
exit(0);
}


// carrega todas informações de clientes no Relatório_Clientes.txt
for(i=0;i<n;i++)
{
printf("- entrou no for-");

if(vetclientes[i].status == 1){
printf(" - if do status-");
fprintf(arq_cliente, "Cód.Cliente: %i", vetclientes[i].codcli);
fprintf(arq_cliente, "Nome: %s", vetclientes[i].nome);
fprintf(arq_cliente, "\nCPF: %i", vetclientes[i].cpf);
fprintf(arq_cliente, "\nEndereco: %s", vetclientes[i].endereco);
fprintf(arq_cliente, "\nTelefone: %i", vetclientes[i].telefone);
fprintf(arq_cliente, "\nIdade: %i", vetclientes[i].idade);
fprintf(arq_cliente, "----------------------------------------------------------------");

}
}

printf("-saiu do for-");
system("PAUSE");

// fecha o arquivo
fclose(arq_cliente);

// libera memória do vetor
free(vetclientes);
}

  • Curtir 1
Postado

O strcmp() usa duas strings como parametro:

strcmp(string1, string2)

Se elas foram iguais, ele retorna 0.


Você tá passando apenas uma expressao como parametro:
if(strcmp(nomecli = cliente[n].nome)==0)

Acho que o correto seria:
if(strcmp(nomecli, cliente[n].nome)==0)

Aqui você colocou um ponto e virgula a mais, que tá cortando a execução do programa:
if(strcmp(consulta, vetclientes[i].nome));
{
...
}

Além disso, acho que faltou o "==0", pois você só vai querer excluir se consulta for igual a vetclientes.nome.

  • Curtir 2
  • 7 anos depois...

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