Jump to content


- - - - -

Cadastro Básico










1 resposta a este tópico

#1 Jackson Fraga

    Membro - Junior 1

  • Membros
  • PipPipPipPipPip
  • 281 posts
  • Estado:Rio Grande do Sul

Adicionado 09 August 2010 - 11:15 PM

pessoal...

preciso fazer em C, um programa q leia informações do usuário (cadastro de uma pessoa).... conforme o exemplo abaixo... POREM, com alguns recursos, ou seja, tenho q fazer varios cadastros (como não há limite, tenho q usar ponteiros, certo???), no final pesquisar pelo Codigo ao inves q digitar e logo apos exibir... fui claro??? resumindo... o programa deverá ler N pessoas e listar uma escolhida pelo código...

#include <stdio.h>
#include <conio.h>
typedef struct {int Dia,Mes,Ano;} DATA;
typedef struct pessoa
{
 char Nome[100];
 int Codigo;
 int Idade;
 DATA Nasc;
} PESSOA;

void ler_pessoa(PESSOA *ptr)
{
 printf("Introduza o nome  : "); gets(ptr->Nome);
 printf("Introduza o codigo: "); scanf("%d", &ptr->Codigo); 
 printf("Introduza a idade : "); scanf("%d", &ptr->Idade);
 printf("Introduza o dia nascimento: "); scanf("%d", &ptr->Nasc.Dia);
 printf("Introduza o mes nascimento: "); scanf("%d", &ptr->Nasc.Mes);
 printf("Introduza o ano nascimento: "); scanf("%d", &ptr->Nasc.Ano);
}
void Mostrar(struct pessoa x)
{
 printf("Codigo      : %d \n",x.Codigo);
 printf("Nome        : %s \n",x.Nome);
 printf("Idade       : %d \n",x.Idade);
 printf("Data Nasc.  : %d/%d/%d \n",x.Nasc.Dia,x.Nasc.Mes,x.Nasc.Ano);
}

int main(void)
{
   struct pessoa p;
   ler_pessoa(&p);
   Mostrar(p);
   getch();
   return 0;
}



#2 bcpaes

    Membro - Novato

  • Membros
  • Pip
  • 7 posts
  • Você é Humano?:Não
  • Sexo:Masculino
  • Estado:Rio Grande do Sul

Adicionado 26 April 2011 - 09:23 AM

Veja se este código te ajuda! Acho que ele está funfando!!


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define max 150

// BRUNO C. PAES E MATHEUS C. BENETTI



void flush_in()
{
   int ch;

   while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
}

struct biblioteca
{
       char nome[50];
       int quantidade,area;
       float preco;
};

void upper (char nam[50])
{
     int tam,i;
     tam=strlen(nam);
     for (i=0;i<tam;i++)
     {
         nam[i]=toupper(nam[i]);
     }
}

void zera (int livros[max])
{
     int i;
     for (i=0;i<max;i++)
     {
         livros[i]=0;
     }
}

int local (int livros[max])
{
    int i;
    for (i=0;i<max;i++)
    {
        if (livros[i]==0) return i;
    }
    return -1;
}

void desloca (struct biblioteca *desloca, int livros[max], int i)
{
     int x,j,k;
     x=local(livros);
     for (j=i+1;j<x+1;j++)
     {
         k=j-1;
         strcpy(desloca[k].nome,desloca[j].nome);
         desloca[k].quantidade=desloca[j].quantidade;
         desloca[k].area=desloca[j].area;
         desloca[k].preco=desloca[j].preco;
     }
}                  

void tira (int livros[max])
{
     int i;
     for (i=0;i<max;i++)
     {
         if (livros[i]==0) break;
     }
     i--;
     livros[i]=0;
}



void arruma (struct biblioteca *arruma, int x)
{
       int i,j,comp,quantaux,areaux;
       char aux[50];
       float precoaux;
       for (i=0;i<x;i++)
       {
           for (j=i;j<x;j++)
           {
               comp=strcmp(arruma[i].nome,arruma[j].nome);
               if (comp==1)
               {
                  strcpy(aux,arruma[i].nome); 
                  quantaux=arruma[i].quantidade;
                  areaux=arruma[i].area;
                  precoaux=arruma[i].preco;
                  arruma[i].quantidade=arruma[j].quantidade;
                  arruma[i].area=arruma[j].area;
                  arruma[i].preco=arruma[j].preco;
                  strcpy(arruma[i].nome,arruma[j].nome);
                  strcpy(arruma[j].nome,aux);
                  arruma[j].quantidade=quantaux;
                  arruma[j].area=areaux;
                  arruma[j].preco=precoaux;                  
               }
           }
       }
}

void arruma_preco (struct biblioteca *arruma, int livros [max])
{
     int x,quantaux,areaux,i,j;
     char aux[50];
     float precoaux;
     x=local(livros);
     for (i=0;i<x;i++)
       {
           for (j=i;j<x;j++)
           {
               if ((arruma[i].preco)<(arruma[j].preco))
               {
                  strcpy(aux,arruma[i].nome); 
                  quantaux=arruma[i].quantidade;
                  areaux=arruma[i].area;
                  precoaux=arruma[i].preco;
                  arruma[i].quantidade=arruma[j].quantidade;
                  arruma[i].area=arruma[j].area;
                  arruma[i].preco=arruma[j].preco;
                  strcpy(arruma[i].nome,arruma[j].nome);
                  strcpy(arruma[j].nome,aux);
                  arruma[j].quantidade=quantaux;
                  arruma[j].area=areaux;
                  arruma[j].preco=precoaux;                  
               }
           }
       }
}

int existe (struct biblioteca *existe, int livros[max],char nam[50])
{
    int x,i,res;
    x=local(livros);
    for (i=0;i<x;i++)
    {
        res=strcmp(nam,existe[i].nome);
        if (res==0) return 1;
    }
    return 0;
}

int menu()
{
      int x;
      printf("\n\n\n\nBem-Vindo a Livraria Virtual\n");printf("--------------------------------------\n");
      printf("1 - Comprar\n");
      printf("2 - Vender\n");
      printf("3 - Exibir\n");
      printf("4 - Consultar\n");
      printf("5 - Salvar\n");
      printf("6 - Carregar\n");
      printf("0 - Sair\n");
      printf("Por favor selecione a opcao desejada:\n");
      do
      {
                  scanf("%d",&x);
      } while ((x>6) || (x<0));
      return x;
}

void compra (struct biblioteca *compra,int livros[max])
{
     char nam[50];
     int x,y;
     x=local(livros);
     if (x==-1)
     {
               printf("\nMemoria cheia!");
               exit(1);
     }
     printf("\n\nDigite o nome do livro:\n");
     flush_in();
     gets(nam);
     upper(nam);
     y=existe(compra,livros,nam);
     if (y==1) printf ("Livro ja existente!");
     else
     {
         strcpy (compra[x].nome,nam);
         printf("Digite a quantidade:\n");
         do
         {
                        scanf("%d",&compra[x].quantidade);
         } while (compra[x].quantidade<0);
         printf("Digite o preco do livro:\n");
         do
         {
                        scanf("%f",&compra[x].preco);
         } while (compra[x].preco<0);
         printf("Digite a area correspondente:\n");
         printf("1-Exatas\n2-Humanas\n3-Saude\n4-Sociais\n");
         do
         {
                        scanf("%d",&compra[x].area);
         } while ((compra[x].area<1) || (compra[x].area>4));
         arruma(compra,x);
         livros[x]=1;
     }
}

void vende (struct biblioteca *vende, int livros[max])
{
     int x,i,area,q;
     char nam[50];
     x=local(livros);
     printf("\n\nDigite o nome do livro:\n");flush_in(); gets(nam);
     upper(nam);
     if (existe(vende,livros,nam)==0)
     {
                                     printf("\nLivro nao encontrado!\n");
     }
     else
     {
         for (i=0;i<x+1;i++)
         {
             area=strcmp(nam,vende[i].nome);
             if (area==0) break;
         }
         if (vende[i].quantidade>1)
         {
                                   vende[i].quantidade--;
         }
         else
         {
             desloca(vende,livros,i);
             tira(livros);
         }
     }
}

void exibe (struct biblioteca *exibe,int livros[max])
{
     int x,i,op;
     x=local(livros);
     printf("\n\nSelecione a ordem de exibicao\n1 - Ordem alfabetica\n2 - Ordem de precos\n");
     do
     {
                       scanf("%d",&op);
     } while ((op<1) || (op>2));
     if (op==1)
     {
               arruma(exibe,x);               
               for (i=0;i<x;i++)
               {
                   printf("\n---------------------------------");
                   printf("\nNome do livro: %s", exibe[i].nome);
                   printf("\nPreco do livro: %.2f", exibe[i].preco);
                   printf("\nQuantidade do livro: %d", exibe[i].quantidade);
                   printf("\nArea do livro: %d", exibe[i].area);
                   printf("\n=================================");
               }
     }
     if (op==2)
     {
               arruma_preco(exibe,livros);
               for (i=0;i<x;i++)
               {
                   printf("\n---------------------------------");
                   printf("\nNome do livro: %s", exibe[i].nome);
                   printf("\nPreco do livro: %.2f", exibe[i].preco);
                   printf("\nQuantidade do livro: %d", exibe[i].quantidade);
                   printf("\nArea do livro: %d", exibe[i].area);
                   printf("\n=================================");
               }
     }
               
                   
}

void consulta (struct biblioteca *consulta, int livros[max])
{
     float media=0, preco_menos, preco_mais;
     int op,area,i,x,a,mais=0,menos=0;
     char nm[50];
     printf("\n\nQual tipo de consulta?\n1-Dados\n2-Area\n3-Preco\n");
     do { scanf("%d",&op); } while ((op<1) || (op>3));
     x=local(livros);
     if (op==1)
     {
               printf("\nQual o nome do livro?\n");flush_in(); gets(nm); upper(nm);
               if (existe(consulta,livros,nm)==0) printf ("\n\n Livro nao encontrado!");
               if (existe(consulta,livros,nm)==1)
               {
                                                  for (i=0;i<x;i++)
                                                  {
                                                      area=strcmp(nm,consulta[i].nome);
                                                      if (area==0) break;
                                                  }
                                                  printf ("\n nome %s", consulta[i].nome);
                                                  printf ("\n area %d", consulta[i].area);
                                                  printf ("\n preco %f", consulta[i].preco);
                                                  printf ("\n quantidade %d", consulta[i].quantidade);
               }
     }
     if (op==2)
     {
               printf("\nQual area?\n");
               do { scanf("%d",&a); } while ((a<1) || (a>4));
               for (i=0;i<x;i++)
               {
                   if (consulta[i].area==a)
                   {
                                           printf("\n---------------------------------");
                                           printf("\nNome do livro: %s", consulta[i].nome);
                                           printf("\nPreco do livro: %f", consulta[i].preco);
                                           printf("\nQuantidade do livro: %d", consulta[i].quantidade);
                                           printf("\nArea do livro: %d", consulta[i].area);
                                           printf("\n=================================");
                   }
               }
     }
     if (op==3)
     {
               if (livros[0]==0) return;
               x=local(livros);
               preco_menos=consulta[0].preco;
               preco_mais=consulta[0].preco;
               for (i=0;i<x;i++)
               {
                   media=media+consulta[i].preco;
                   if (preco_menos>consulta[i].preco)
                   {
                                                     menos=i;
                   }
                   if (preco_mais<consulta[i].preco)
                   {
                                                    mais=i;
                   }
               }
               media=(media/x);
               printf("\n\nPesquiza concluida!!\n");
               printf("A media de precos foi de %.2f",media);
               printf("\n---------------------------------");
               printf("\nO livro mais barato encontrado:\n");
               printf ("\nNome %s", consulta[menos].nome);
               printf ("\nArea %d", consulta[menos].area);
               printf ("\nPreco %.2f", consulta[menos].preco);
               printf ("\nQuantidade %d", consulta[menos].quantidade);
               printf("\n---------------------------------");
               printf("\nO livro mais caro encontrado:\n");
               printf ("\n nome %s", consulta[mais].nome);
               printf ("\n area %d", consulta[mais].area);
               printf ("\n preco %.2f", consulta[mais].preco);
               printf ("\n quantidade %d", consulta[mais].quantidade);
     }
}   

void salva (struct biblioteca *salva, int livros[max])
{
     FILE *arq;
     char name[50];
     int i,resul,x,op;
     x=local(livros);
     arruma(salva,x);
     printf("\n\nDigite o nome do arquivo sem a extensao\n"); flush_in(); gets(name); 
     strcat(name,".bkp");
     arq=fopen(name,"r");
     if (arq!=NULL)
     {
                   printf("\n\n Arquivo ja existente!!");
                   printf("\n\nDeseja sobrescever?\n1-Sim\n2-Nao\n");
                   do { scanf("%d",&op); } while ((op<1) || (op>2));
                   if (op==2) { fclose(arq); return; }
     }             
     arq=fopen(name,"w");
     resul=fprintf(arq,"%d\n",x);
     for (i=0;i<x;i++)
     {
                 resul=fprintf(arq,"%s\n",salva[i].nome);
                 resul=fprintf(arq,"%d\n",salva[i].area);
                 resul=fprintf(arq,"%d\n",salva[i].quantidade);
                 resul=fprintf(arq,"%f\n",salva[i].preco);
                 if (resul == EOF)
                 printf("Erro na Gravacao\n");
     }
     fclose(arq);
}

void carrega (struct biblioteca *carrega, int livros[max])
{
     FILE *arq;
     int i,x,area,quantidade,op=1;
     float preco;
     char nam[50],nome[50];
     if (livros[0]==1)
     {
                      printf("Memoria ja alocada! Deseja continuar?\n1-Sim\n2-Nao\n");
                      do { scanf("%d",&op); } while ((op<1) || (op>2));
     }
     if (op==1)
     {
     printf("\n\nDigite o nome do arquivo sem a extensao\n");
     flush_in();
     gets(nam);
     strcat(nam,".bkp");
     arq=fopen(nam,"r");
     if(arq==NULL) printf("Arquivo nao encontrado");
     else
     {
     zera(livros);
     fscanf(arq,"%d\n",&x);
     if (x>max-1)
     {
                printf("\nNumero de livros supera memoria!");
                return;
     }
     for (i=0;i<x;i++)
     {
         livros[i]=1;
     }
     for (i=0;i<x;i++)
     {
         fgets(carrega[i].nome,50,arq);
         upper(carrega[i].nome);
         fscanf(arq,"%d\n",&carrega[i].area);
         fscanf(arq,"%d\n",&carrega[i].quantidade);
         fscanf(arq,"%f\n",&carrega[i].preco);
     }
     fclose(arq);
     }
     }
}

void sair ()
{
     int op;
     printf("\nVoce deseja realmente sair?\n1-Sim\n2-Nao\n");
     do
     {
                  scanf("%d",&op);
     } while ((op>2) || (op<1));
     if (op==1) exit(1);
     return;
}

main()
{
      struct biblioteca livro[max];
      int x, livros[max];
      zera(livros);
      comeco:
      x=menu();
      switch (x)
      {
             case 1: compra(livro,livros); goto comeco; break;
             case 2: vende(livro,livros); goto comeco; break;
             case 3: exibe(livro,livros); goto comeco; break;
             case 4: consulta(livro,livros); goto comeco; break;
             case 5: salva(livro,livros); goto comeco; break;
             case 6: carrega (livro,livros); goto comeco; break;
             case 0: sair(); goto comeco; break;
      }
}






1 usuário(s) esta(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)