Tenho que entregar na quarta 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 ");
}
}
//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);
}
//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);
}
}
//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!");
}
}
}
}
#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);
}
Editado por Jonathan Queiroz Modificar título para descrever melhor a dúvida e adcionar tag's (Jonathan)
Pergunta
pvj
Por favor, estou desesperada!
Tenho que entregar na quarta 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 "); } }//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); }//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); } }//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!"); } } } }#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); }Editado por Jonathan QueirozModificar título para descrever melhor a dúvida e adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados