Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Filipe Bandeira

[Resolvido] Cadastro de viagens em linguagem c

Recommended Posts

Olá,

 

Alguém poderia me ajudar?

 

Sou aluno de Ciência da computação na UFCG e estou fazendo este projeto em linguagem c,já fiz boa parte do projeto mais meu professor disse pra eu colocar um ponteiro , uma função e um arquivo de texto ,mais não estou conseguindo nenhum dos 3,ninguém aqui da UFCG ajuda ninguém, por isso estou aqui, quem poder ajudar ficaria muito agradecido ,preciso entrega-lo no inicio da próxima semana .

meu e-mail pra qualquer contato filipe.wilke@hotmail.com

 

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

#define MAXVIAGENS 50

struct cviagens

 {

    char viagem[30];
    char npassageiro[30];//nome do passageiro
    int codigodp; //codigo da passagem
    char ender[40]; 
    char cidade[50];
    char estado[40];
    char data[10];

 };

main (void) {


 struct cviagens menuViagens[MAXVIAGENS];

    int i, achou, quantos = 0;
    int codigodp;
    char opcao;
    char nomeviagem[30];

 do

 {

   system("cls");
   fflush(stdin);

   printf("\n\n=======================================================\n\n");
   printf("\n\nC A D A S T R O   D E   V I A G E M\n\n");
   printf("\n\n=======================================================\n");
   printf("\n1. Incluir novo cadastro de viagem\n");
   printf("\n2. Consultar destino de viagem pelo codigo da passagem\n");
   printf("\n3. Alterar um destino de viagem\n");
   printf("\n4. Excluir um destino de viagem\n");
   printf("\n5. Imprimir o cadastro do destino de viagem\n");
   printf("\n6. S A I R");
   printf("\n\n=======================================================\n");
   printf("\nDigite a opcao desejada:\n ");
   scanf("%c", &opcao);
   printf("\n\n=======================================================\n\n");

   switch(toupper(opcao))

   {

   case '1': // incluir novo cadastro

     {

       printf("\nIncluir novo cadastro de viagem\n");

       if(quantos < MAXVIAGENS)

       {

         printf("\nDigite o codigo da passagem: ");
         scanf("%d",&menuViagens[quantos].codigodp);
         fflush(stdin);

         printf("\nDigite o nome do passageiro: ");
         gets(menuViagens[quantos].npassageiro);
         fflush(stdin);

         printf("\nDigite o nome do destino de viagem: ");
         gets(menuViagens[quantos].viagem);
         fflush(stdin);

         printf("\nDigite o endereco de destino: ");
         gets(menuViagens[quantos].ender);
         fflush(stdin);

         printf("\nDigite o nome da cidade de partida : ");
         scanf("%s", &menuViagens[quantos].cidade);
         fflush(stdin);

         printf("\nDigite o estado do seu destino final: ");
         gets(menuViagens[quantos].estado);
         fflush(stdin);

         printf("\nDigite com especo a data de sua viagem: ");
         gets(menuViagens[quantos].data);
         fflush(stdin);

         quantos++;
       }


    else {

         printf("\nErro na inclusao. O cadastro estah cheio\n");

       }

       break;

     }

   case '2'://consultar o destino pelo codigo da passagem 
   {

       achou = 0;
       fflush(stdin);
       printf("\nConsultar viagem pelo nome.\n");
       printf("\nDigite o nome do destino: ");
       gets(nomeviagem);

       for(i = 0; i < quantos; i++)

       {

         if(strcmp(menuViagens[i].viagem, nomeviagem) == 0)

         {

          achou = 1;

          printf("\nNome do destino.: %s", menuViagens[i].viagem);
          printf("\nNome do Passageiro.: %s", menuViagens[i].npassageiro);
          printf("\nCodigo.......: %d", menuViagens[i].codigodp);
          printf("\nEndereco.....: %s", menuViagens[i].ender);
          printf("\nCidade inicial.......: %s", menuViagens[i].cidade);
          printf("\nEstado.......: %s", menuViagens[i].estado);
          printf("\nData de partida...: %s\n", menuViagens[i].data);

         }

       }

       if (!achou)

       {

         printf("\nA viagem %s nao foi encontrada no cadastro\n", nomeviagem);

       }

       break;

     }

   case '3': // alterar um destino de viagem, falta concluir

     {

       printf("\nAlterar um destino de viagem\n");

       break;

     }

   case '4': 

     {

       printf("\nExcluir um destino de viagem\n");

       break;

     }

     case '5': // imprimir o cadastro de viagem

     {

        printf("\nImprimir o cadastro de viagem\n");

        for(i = 0; i < quantos; i++)

        {

          printf("\nNome do destino.........: %s", menuViagens[i].viagem);
          printf("\nNome do Passageiro.: %s", menuViagens[i].npassageiro);
          printf("\nCodigo................: %d", menuViagens[i].codigodp);
          printf("\nEndereco.................: %s", menuViagens[i].ender);
          printf("\nCidade..................: %s", menuViagens[i].cidade);
          printf("\nEstado..................: %s", menuViagens[i].estado);
          printf("\nData de partida.........: %s\n", menuViagens[i].data);

        }

        break;

     }

     case '6': // sair

     {
       printf("\n====================== S A I R ========================\n");
       printf("\n=======================================================\n");

       break;

     }

     default: // opcao incorreta

     {
     printf("\nOpcao invalida\n");

       break;

     }

   }

   printf("\n\n");

   system("pause");
   return(0);
 }

 while(toupper(opcao) != '6');

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa por não ter sido claro é que esse projeto está me estressando muito, meu professor quer que eu implemente um arquivo de texto ou binário, um ponteiro do mais simples e uma função nesse meu código que vai ai em baixo ,mais só que não estou conseguindo implementar nenhum dos 3 , o que eu consegui fazer está ai, o pior é que ele não ensina nada e eu estou virando noite tentando fazer, enfim se poder ajudar editando meu código e me ajudando de alguma forma serei muito grato.

 

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

#define MAXVIAGENS 50

struct cviagens

 {

    char viagem[30];
    char npassageiro[30];//nome do passageiro
    int codigodp; //codigo da passagem
    char ender[40]; 
    char cidade[50];
    char estado[40];
    char data[10];

 };

main (void) {


 struct cviagens menuViagens[MAXVIAGENS];

    int i, achou, quantos = 0;
    int codigodp;
    char opcao;
    char nomeviagem[30];

 do

 {

   system("cls");
   fflush(stdin);

   printf("\n\n=======================================================\n\n");
   printf("\n\nC A D A S T R O   D E   V I A G E M\n\n");
   printf("\n\n=======================================================\n");
   printf("\n1. Incluir novo cadastro de viagem\n");
   printf("\n2. Consultar destino de viagem pelo codigo da passagem\n");
   printf("\n3. Alterar um destino de viagem\n");
   printf("\n4. Excluir um destino de viagem\n");
   printf("\n5. Imprimir o cadastro do destino de viagem\n");
   printf("\n6. S A I R");
   printf("\n\n=======================================================\n");
   printf("\nDigite a opcao desejada:\n ");
   scanf("%c", &opcao);
   printf("\n\n=======================================================\n\n");

   switch(toupper(opcao))

   {

   case '1': // incluir novo cadastro

     {

       printf("\nIncluir novo cadastro de viagem\n");

       if(quantos < MAXVIAGENS)

       {

         printf("\nDigite o codigo da passagem: ");
         scanf("%d",&menuViagens[quantos].codigodp);
         fflush(stdin);

         printf("\nDigite o nome do passageiro: ");
         gets(menuViagens[quantos].npassageiro);
         fflush(stdin);

         printf("\nDigite o nome do destino de viagem: ");
         gets(menuViagens[quantos].viagem);
         fflush(stdin);

         printf("\nDigite o endereco de destino: ");
         gets(menuViagens[quantos].ender);
         fflush(stdin);

         printf("\nDigite o nome da cidade de partida : ");
         scanf("%s", &menuViagens[quantos].cidade);
         fflush(stdin);

         printf("\nDigite o estado do seu destino final: ");
         gets(menuViagens[quantos].estado);
         fflush(stdin);

         printf("\nDigite com especo a data de sua viagem: ");
         gets(menuViagens[quantos].data);
         fflush(stdin);

         quantos++;
       }


    else {

         printf("\nErro na inclusao. O cadastro estah cheio\n");

       }

       break;

     }

   case '2'://consultar o destino pelo codigo da passagem 
   {

       achou = 0;
       fflush(stdin);
       printf("\nConsultar viagem pelo nome.\n");
       printf("\nDigite o nome do destino: ");
       gets(nomeviagem);

       for(i = 0; i < quantos; i++)

       {

         if(strcmp(menuViagens[i].viagem, nomeviagem) == 0)

         {

          achou = 1;

          printf("\nNome do destino.: %s", menuViagens[i].viagem);
          printf("\nNome do Passageiro.: %s", menuViagens[i].npassageiro);
          printf("\nCodigo.......: %d", menuViagens[i].codigodp);
          printf("\nEndereco.....: %s", menuViagens[i].ender);
          printf("\nCidade inicial.......: %s", menuViagens[i].cidade);
          printf("\nEstado.......: %s", menuViagens[i].estado);
          printf("\nData de partida...: %s\n", menuViagens[i].data);

         }

       }

       if (!achou)

       {

         printf("\nA viagem %s nao foi encontrada no cadastro\n", nomeviagem);

       }

       break;

     }

   case '3': // alterar um destino de viagem, falta concluir

     {

       printf("\nAlterar um destino de viagem\n");

       break;

     }

   case '4': 

     {

       printf("\nExcluir um destino de viagem\n");

       break;

     }

     case '5': // imprimir o cadastro de viagem

     {

        printf("\nImprimir o cadastro de viagem\n");

        for(i = 0; i < quantos; i++)

        {

          printf("\nNome do destino.........: %s", menuViagens[i].viagem);
          printf("\nNome do Passageiro.: %s", menuViagens[i].npassageiro);
          printf("\nCodigo................: %d", menuViagens[i].codigodp);
          printf("\nEndereco.................: %s", menuViagens[i].ender);
          printf("\nCidade..................: %s", menuViagens[i].cidade);
          printf("\nEstado..................: %s", menuViagens[i].estado);
          printf("\nData de partida.........: %s\n", menuViagens[i].data);

        }

        break;

     }

     case '6': // sair

     {
       printf("\n====================== S A I R ========================\n");
       printf("\n=======================================================\n");

       break;

     }

     default: // opcao incorreta

     {
     printf("\nOpcao invalida\n");

       break;

     }

   }

   printf("\n\n");

   system("pause");
   return(0);
 }

 while(toupper(opcao) != '6');

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Filipe Bandeira,

 

Você pode matar duas obrigatoriedades em uma só.

Por exemplo, na parte de incluir um novo cadastro. Você pode declarar uma função que recebe um ponteiro para uma estrutura:

int iInsereCadastro(struct cviagens* NOVO);

 

É uma função e usa ponteiro para a sua estrutura previamente alocada é claro. O acesso as membros da estrutura será exatamente igual ao que você fez no seu código, por exemplo:

printf("\nDigite o codigo da passagem: ");
scanf("%d",&NOVO.codigodp);

printf("\nDigite o nome do passageiro: ");
gets(NOVO.npassageiro);

 

No retorno, do tipo int, você pode retornar códigos de erros ocorridos dentro da função.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Detalhes a observar:

 

Não use fflush na entrada padrão. Segundo o ISO C, o comportamento é indefinido.

Não use gets, sob pena de buffer overflow. User fgets.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Filipe Bandeira,

 

Está na mão a função, mas tenha cuidado pois teu programa tem um BUG de lógica. Ao selecionar uma opção, o programa executa ela e cai fora do laço principal.

 

OBS.: Aos mais experientes, tenho quase certeza que o scanf("%*C") não deveria estar ali, mas por falta de tempo deixei desta forma mesmo. =P

 

Espero ter ajudado, FLW!

 

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

#define MAXVIAGENS 50

struct cviagens

 {

    char viagem[30];
    char npassageiro[30];//nome do passageiro
    int codigodp; //codigo da passagem
    char ender[40];
    char cidade[50];
    char estado[40];
    char data[10];

 };

int main (void) {


 struct cviagens menuViagens[MAXVIAGENS];

    int i, achou, quantos = 0;
    int codigodp;
    char opcao;
    char nomeviagem[30];

 do

 {

   system("cls");
   fflush(stdin);

   printf("\n\n=======================================================\n\n");
   printf("\n\nC A D A S T R O   D E   V I A G E M\n\n");
   printf("\n\n=======================================================\n");
   printf("\n1. Incluir novo cadastro de viagem\n");
   printf("\n2. Consultar destino de viagem pelo codigo da passagem\n");
   printf("\n3. Alterar um destino de viagem\n");
   printf("\n4. Excluir um destino de viagem\n");
   printf("\n5. Imprimir o cadastro do destino de viagem\n");
   printf("\n6. S A I R");
   printf("\n\n=======================================================\n");
   printf("\nDigite a opcao desejada:\n ");
   scanf("%c", &opcao);
   printf("\n\n=======================================================\n\n");

   switch(toupper(opcao))

   {

   case '1': // incluir novo cadastro

     {

       printf("\nIncluir novo cadastro de viagem\n");

       if(quantos < MAXVIAGENS)

       {

           iNovoCadastroViagen(menuViagens);
/*
         printf("\nDigite o codigo da passagem: ");
         scanf("%d",&menuViagens[quantos].codigodp);
         fflush(stdin);

         printf("\nDigite o nome do passageiro: ");
         gets(menuViagens[quantos].npassageiro);
         fflush(stdin);

         printf("\nDigite o nome do destino de viagem: ");
         gets(menuViagens[quantos].viagem);
         fflush(stdin);

         printf("\nDigite o endereco de destino: ");
         gets(menuViagens[quantos].ender);
         fflush(stdin);

         printf("\nDigite o nome da cidade de partida : ");
         scanf("%s", menuViagens[quantos].cidade);
         fflush(stdin);

         printf("\nDigite o estado do seu destino final: ");
         gets(menuViagens[quantos].estado);
         fflush(stdin);

         printf("\nDigite com especo a data de sua viagem: ");
         gets(menuViagens[quantos].data);
         fflush(stdin);
*/
         quantos++;
       }


    else {

         printf("\nErro na inclusao. O cadastro estah cheio\n");

       }

       break;

     }

   case '2'://consultar o destino pelo codigo da passagem
   {

       achou = 0;
       fflush(stdin);
       printf("\nConsultar viagem pelo nome.\n");
       printf("\nDigite o nome do destino: ");
       gets(nomeviagem);

       for(i = 0; i < quantos; i++)

       {

         if(strcmp(menuViagens[i].viagem, nomeviagem) == 0)

         {

          achou = 1;

          printf("\nNome do destino.: %s", menuViagens[i].viagem);
          printf("\nNome do Passageiro.: %s", menuViagens[i].npassageiro);
          printf("\nCodigo.......: %d", menuViagens[i].codigodp);
          printf("\nEndereco.....: %s", menuViagens[i].ender);
          printf("\nCidade inicial.......: %s", menuViagens[i].cidade);
          printf("\nEstado.......: %s", menuViagens[i].estado);
          printf("\nData de partida...: %s\n", menuViagens[i].data);

         }

       }

       if (!achou)

       {

         printf("\nA viagem %s nao foi encontrada no cadastro\n", nomeviagem);

       }

       break;

     }

   case '3': // alterar um destino de viagem, falta concluir

     {

       printf("\nAlterar um destino de viagem\n");

       break;

     }

   case '4':

     {

       printf("\nExcluir um destino de viagem\n");

       break;

     }

     case '5': // imprimir o cadastro de viagem

     {

        printf("\nImprimir o cadastro de viagem\n");

        for(i = 0; i < quantos; i++)

        {

          printf("\nNome do destino.........: %s", menuViagens[i].viagem);
          printf("\nNome do Passageiro.: %s", menuViagens[i].npassageiro);
          printf("\nCodigo................: %d", menuViagens[i].codigodp);
          printf("\nEndereco.................: %s", menuViagens[i].ender);
          printf("\nCidade..................: %s", menuViagens[i].cidade);
          printf("\nEstado..................: %s", menuViagens[i].estado);
          printf("\nData de partida.........: %s\n", menuViagens[i].data);

        }

        break;

     }

     case '6': // sair

     {
       printf("\n====================== S A I R ========================\n");
       printf("\n=======================================================\n");

       break;

     }

     default: // opcao incorreta

     {
     printf("\nOpcao invalida\n");

       break;

     }

   }

   printf("\n\n");

   system("pause");
   return(0);
 }

 while(toupper(opcao) != '6');

}

int iNovoCadastroViagen(struct cviagens* NOVO)
{

   printf("\nDigite o codigo da passagem: ");
   scanf("%*c");
   fgets(NOVO->npassageiro,sizeof(int),stdin);

   printf("\nDigite o nome do passageiro: ");
   scanf("%*c");
   fgets(NOVO->npassageiro,30,stdin);

   printf("\nDigite o nome do destino de viagem: ");
   scanf("%*c");
   fgets(NOVO->npassageiro,30,stdin);

   printf("\nDigite o endereco de destino: ");
   scanf("%*c");
   fgets(NOVO->npassageiro,30,stdin);

   printf("\nDigite o nome da cidade de partida : ");
   scanf("%*c");
   fgets(NOVO->npassageiro,30,stdin);

   printf("\nDigite o estado do seu destino final: ");
   scanf("%*c");
   fgets(NOVO->npassageiro,30,stdin);

   printf("\nDigite com especo a data de sua viagem: ");
   scanf("%*c");
   fgets(NOVO->npassageiro,30,stdin);

   return 1;
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.