Mudanças entre as edições de "Equipe4-2015-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 43: Linha 43:
  
 
==Distribuição==
 
==Distribuição==
 +
 +
===Adilson - Gustavo - Raphael ===
 +
 +
Trabalhamos em conjunto na estrutura do programa, no desenvolvimento das funções, testes e complementação de dados na wiki, enfatizando que o Gustavo trabalhou com mais afinco na construção do esqueleto principal.
  
 
==Desenvolvimento==
 
==Desenvolvimento==

Edição das 15h18min de 30 de junho de 2015

Integrantes

ADILSON GOEDERT SIQUEIRA

GUSTAVO VIEIRA ZACCHI

RAPHAEL WASHINGTON BAPTISTA GIASSI


Descrição da atividade principal

Implemente um programa em linguagem C que faça o controle de estoque simplificado de livros. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os livros(já cadastrados), poderá acrescentar novos livros, eliminar livros, e buscar um livro específico pelo isbn. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os livros. também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual o número de livros, o maior, menor e valor médio dos livros.

Descrição da atividade específica (dessa equipe)

Fazer uso
  1. Comando swith
  2. Lista encadeada
  3. Ponteiros
  4. Alocação Dinâmica de Memória
  5. Funções para tratamento de arquivo


Exemplo da estrutura (encadeada)
struct TLivro {
   char isbn[20];
   char titulo[50];
   char autor[40];
   float preco;
   struct TLivro *prox;
};
Exemplo de arquivo (livros.dat)
cat livros.dat
978-85-8041-019-8,O DIA DA CAÇA,JAMES PATTERSON,19.90 
978-85-8044-027-0,A FURIA DOS REIS,GEORGE R.R. MARTIN,56.80 
85-204-1043-X,BODY FOR LIFE,BILL PHILLIPS,99.80
978-85-99296-93-6,CILADA,HARLAN COBEN,21.50
978-85-8041-191-1,NAO BRINQUE COM FOGO,JOHN VERDON,36.70

Atividades

Distribuição

Adilson - Gustavo - Raphael

Trabalhamos em conjunto na estrutura do programa, no desenvolvimento das funções, testes e complementação de dados na wiki, enfatizando que o Gustavo trabalhou com mais afinco na construção do esqueleto principal.

Desenvolvimento

Conclusão

Código fonte

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
FILE *fp;
char ch;
struct TLivro {
   char isbn[20];
   char titulo[50];
   char autor[40];
   float preco;
   struct TLivro *next;
}*head1, *tail1;





void add_nodo_tail_livro()
{
   int res;

   struct TLivro *p =  malloc (sizeof(struct TLivro));
   if (!p){
        printf("Erro:Alocação\n");
        return;
   }

   printf("Entre com o ID do livro (ex: XXX-XX-XXXX-XXX-X,X)\n");
   scanf("%s",p->isbn);
   printf("Entre com o nome do livro\n");
   scanf("%s",p->titulo);
   printf("Entre com o nome do autor \n");
   scanf("%s",p->autor);
   printf("Entre com o preco \n");
   scanf("%f",&p->preco);
   if ((fp=fopen("livros.dat", "a")) == NULL) {
      printf("Falha na abertura do arquivo\n");
      return;
   }
   if((res = fprintf(fp,"\n%s,%s,%s,%f", p->isbn, p->titulo, p->autor, p->preco)) == EOF) {
     printf("Erro\n");
   }
   fclose(fp);

   p->next = NULL;

   if (tail1==NULL) {
      tail1 = head1 = p;
   }
   else {
       tail1->next = p;
       tail1 = p;
   }
   printf("Livro adicionado com sucesso!\n\n");
   return;
}



void print_livro_list(struct TLivro *runner)
{
int res;
 struct TLivro *p =  malloc (sizeof(struct TLivro));
 printf("Lista de livros:\n\n");
   if (runner==NULL)
      return;
   if ((fp=fopen("livros.dat", "a")) == NULL) {
      printf("Falha na abertura do arquivo\n");
      return;
   }
   while (1) {
      if((res = fscanf(fp,"\n%s,%s,%s,%f", p->isbn, p->titulo, p->autor, &p->preco))==EOF)      {
        printf("Fim de leitura\n");
          break;
          }
          printf("\n%s,%s,%s,%f", p->isbn, p->titulo, p->autor, p->preco);
   }

   for (;;){
   printf("---->ID: %s\n",runner->isbn);
   printf("---->Nome: %s\n",runner->titulo);
   printf("---->Autor: %s\n",runner->autor);
   printf("---->Preco: %f\n\n",runner->preco);
 if (runner->next==NULL)
      return;
   else
      runner=runner->next;
   }
}


void delete_livro(struct TLivro *runner){
 char id[20];
 struct TLivro *prunner;
  printf("Entre com o ID do livro a ser deletado (ex: XXX-XX-XXXX-XXX-X,X)\n");
   scanf("%s",id);

   if (runner==NULL)
      return;

   if(runner==head1){
      head1=runner->next;
   }

   for (;runner->next==NULL;runner=runner->next){
    if(strcmp(id,runner->isbn)==0){
        if(prunner!=NULL){
            prunner->next=runner->next;
            if(runner==tail1){
                tail1=prunner;
            }
        if(prunner==NULL && runner==tail1){
                tail1=NULL;
            }
        free(runner);
    }
    prunner=runner;
}

}
}
void find_livro(struct TLivro *runner){
 char id[20];
  printf("Entre com o ID do livro a ser encontrado (ex: XXX-XX-XXXX-XXX-X,X)\n");
   scanf("%s",id);

   if (runner==NULL){
     printf("Livro não encontrado!\n\n");
      return;
    }


   for (;;){
   if(strcmp(id,runner->isbn)==0){
   printf("---->ID: %s\n",runner->isbn);
   printf("---->Nome: %s\n",runner->titulo);
   printf("---->Autor: %s\n",runner->autor);
   printf("---->Preco: %f\n\n",runner->preco);
   return;
}
 if (runner->next==NULL){
         printf("Livro não encontrado!\n\n");
      return;
}
   else
      runner=runner->next;
   }


}



void stats(struct TLivro *runner){
float max=0;
float min=0;
int nlivros=1;
float vmedio=0;

 printf("Estatisticas:\n\n");
   if (runner==NULL)
    return;

   min=runner->preco;

   for (;;){
    if(max<runner->preco){
        max=runner->preco;
    }
    if(min>runner->preco){
        min=runner->preco;
    }
    vmedio=vmedio+runner->preco;


 if (runner->next==NULL)
      break;
   else
      nlivros++;
      runner=runner->next;
   }
   vmedio=vmedio/nlivros;
   printf("---->Preco max: %f\n",max);
   printf("---->Preco min: %f\n",min);
   printf("---->Numero de livros: %d\n",nlivros);
   printf("---->Preco medio: %f\n\n",vmedio);

}

void carrega_livro_list(){


}

void salva_livro_list(){


}

main()
{

  head1 = tail1 = NULL;

int opcao;
printf("\e[H\e[2J");

  MENU:

  printf("Entre com uma opção:\n 1-Adicionar Livro. \n 2-Lista de Livros. \n 3-Remover Livro. \n 4-Estatisticas. \n 5-Procurar Livro. \n 6-Sair.\n");
  scanf ("%d",&opcao);
  switch(opcao) {
  case 1:
          printf("\e[H\e[2J");
          add_nodo_tail_livro();
          goto MENU;
  case 2:
          printf("\e[H\e[2J");
          print_livro_list (head1);
          goto MENU;
  case 3:
          printf("\e[H\e[2J");
          delete_livro(head1);
          goto MENU;
  case 4:
          printf("\e[H\e[2J");
          stats(head1);
          goto MENU;
  case 5:
          printf("\e[H\e[2J");
          find_livro(head1);
          goto MENU;
  case 6:
          printf("\e[H\e[2J");
          return;

  }


  }



<< Equipe4-2015-1