Equipe7-2015-1

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Integrantes

JOAO VITOR DA ANUNCIACAO

RAISSA LINHARES GOMES

VICTOR CESCONETTO DE PIERI


Descrição da atividade principal

Implemente um programa em linguagem C que faça o controle de estoque simplificado de automóveis. 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 carros (previamente cadastrados), poderá acrescentar novos veículos, eliminar veículos, e buscar um carro específico pela sua placa. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os veículos. 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 veículos, o maior, menor e valor médio dos veículos.

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 TCarro {
   char placa[9];
   char marca[20];
   char modelo[30];
   float preco;
   struct TCarro *prox;
};
Exemplo de arquivo (carros.dat)
cat carros.dat
AAB-1248 GM CORSA 18000
PTY-6548 VOLKS GOL 21500
MTB-6587 FIAT UNO 15000
AAB-8787 FORD FUSION 50000
LTX-1234 VOLKS FUSCA 8790

Atividades

Distribuição

Todos os integrantes da equipe participaram de todas as etapas da programação do projeto.

Desenvolvimento

Desenvolvemos nosso projeto buscando pensar por etapas, fazendo com que cada parte da função que estávamos trabalhando atualmente funcionasse, para que depois partíssemos para a próxima fase. Durante o desenvolvimento encontramos várias dificuldades, como erros que não conseguíamos identificar no programa, e precisamos resolver isso através de pesquisas tanto nas aulas da wiki, como em buscas na internet.

Conclusão

Concluímos que o conhecimento de cada conteúdo que vimos no semestre é estritamente necessário, pois todas as partes estão interligadas e ao programar, se cometermos um pequeno erro, por menor que seja, pode fazer com que o programa inteiro não funcione.

Notas

João Vitor-10

Raissa-10

Victor Cesconetto-10

Debatemos sobre o assunto e concluímos que todos os integrantes da equipe merecem nota máxima pois se dedicaram juntos ao projeto, utilizando todos os seus conhecimentos e conseguindo concluir todas as funções.

Avaliação (professor)

Caros alunos!

O programa atendeu aos requisitos iniciais, porém, é fácil notar que vocês utilizaram um código fonte básico e não tomaram nem o cuidado de limpar e ajustar as estruturas e as funções. Não foram feitas novas implementações e o programa não está comentado. Ainda faltou um cuidado maior com a wiki, entre outros problemas identificados que conversamos durante a apresentação.

Por isso minha nota para a equipe toda é: 8.

Douglas A.

Código fonte

<syntaxhighlight lang=c>

  1. include <time.h>
  2. include <stdio.h>
  3. include <stdlib.h>
  4. include <string.h>
  1. define FIM 7

typedef struct t_carro tipo_carro;

struct horas {

   int hora;
   int minuto;

};

struct t_carro {

 char placa[9];
 char marca[20];
 char modelo[30];
 float preco;
 struct horas *entrada;
 tipo_carro *next;

}*tail;

 tipo_carro *lista;




void atualizar_lista() { tipo_carro *p; FILE *p_arq;

p_arq = fopen ("carros.dat","a" "w");

if(lista!=NULL){ for(p=lista;p!=NULL;p=p->next){ fprintf(p_arq, "Modelo: %s Placa: %s Marca: %s Preco: %f\n",p->modelo,p->placa,p->marca,p->preco); } fclose(p_arq); } }


void listar_carro_por_placa(char placa[9]) { tipo_carro *p; p=lista;

 while(p!=NULL && strcmp(p->placa,placa)!=0){

p=p->next;

 }
   if(p!=NULL){

printf("\n---------------------------------------------------------------------\n"); printf("Modelo: %s \nPlaca: %s \nMarca: %s \nPreco: %f\n",p->modelo,p->placa,p->marca,p->preco); printf("\n---------------------------------------------------------------------\n");

   } 
     else {
       printf("\n---------------------------------------------------------------------");

printf("\nCarro não encontrado!");

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

}


int retirar_carro_estac(char placa[9]) {

tipo_carro *pa;
tipo_carro *pp;


	pa=lista;

for(pp=lista->next;pp!=NULL;pp=pp->next){ if(strcmp(placa,pp->placa)==0){ pa->next=pp->next; free(pp); break; } else{ pa=pp; } } }


int inserir_carro_estac() {

  int res;
  float preco;
  tipo_carro *p = malloc (sizeof(tipo_carro));
  if (!p)
       return -1;

  printf("Digite o modelo:\n");
  scanf("%s",p->modelo);
  printf("Digite a placa:\n");
  scanf("%s",p->placa);
  printf("Digite a marca:\n");
  scanf("%s",p->marca);
  printf("Digite o preco:\n");
  scanf("%f",&preco);

  p->preco=preco;
  p->next = NULL;

  if(lista==NULL){

lista = p;

  }
    else{

p->next = lista->next; lista->next = p;

    }

}

void listar_carros() { char aux; tipo_carro *p; FILE *p_arq; printf("Lista dos carros\n"); p_arq = fopen("carros.dat","r"); aux = getc(p_arq); printf("LISTA DE CARROS DO ARQUIVO\n"); while(aux!=EOF){ printf("%c",aux); aux=getc(p_arq); } fclose (p_arq); printf("\n-----------------------------------------\n"); printf("LISTA DE CARROS DA LISTA\n"); for(p = lista; p != NULL; p = p->next){ printf("\nModelo: %s \nPlaca: %s \nMarca: %s \nPreco: %f\n",p->modelo,p->placa,p->marca,p->preco); }

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


struct horas *hora_atual() {

  time_t rawtime; 
  struct tm *tminfo; 
  struct horas *p;

  time ( &rawtime ); 
  tminfo = localtime ( &rawtime );

  if((p=(struct horas *)malloc(sizeof(struct horas)))==NULL)
     return NULL;
  p->hora = tminfo->tm_hour;
  p->minuto = tminfo->tm_min;

  return p;   

}

float media_precos(){

tipo_carro *p; char aux, *modelo_menor, *modelo_maior, *placa_maior,*placa_menor; float maior, menor,media=0,precototal=0,preco=0; int soma,cont=0;

p=lista->next;

maior = p->preco; placa_maior = p->placa;

   	modelo_maior = p->modelo;

menor = p->preco; placa_menor = p->placa; modelo_menor = p->modelo; for(p = lista; p != NULL; p = p->next) { precototal = precototal + p->preco; cont = cont + 1; if(maior < p->preco) { maior = p->preco; placa_maior = p->placa;

           		modelo_maior = p->modelo;

} if(menor > p->preco) { menor = p->preco; placa_menor = p->placa; modelo_menor = p->modelo; } } media = precototal/cont; printf("\nMenor valor: %0.2f modelo: %s", menor, modelo_menor); printf("\nMaior valor: %0.2f produto: %s", maior, modelo_maior); printf( "\nMedia de preço dos produtos: %0.2f", media); }

void main() {

 int opcao;
 char aux1[9],aux2[9];
 struct horas *p;
 FILE *p_arq;
 lista	= tail = NULL;
 p_arq = fopen ("carros.dat","a" "w");

 do {
   printf("\n------------------------------\nMENU:\n\n1-Listar por placa \n2-Retirar carro\n3-Inserir carro\n4-Listar todos \n5-Media dos precos\n6-Atualizar arquivo\n7-Encerrar\n------------------------------\nSelecione uma opcao:");
   scanf("%d", &opcao);
   switch(opcao) {
   case 1: 
   	    printf("Qual a placa do carro que deseja consultar?\n");
           scanf("%s",aux1);
   	    listar_carro_por_placa(aux1);
           break;
   case 2:
           printf("Qual a placa do carro que deseja retirar?\n");
           scanf("%s",aux1);
           retirar_carro_estac(aux1);
           break;
   case 3:
           inserir_carro_estac();
           break;
   case 4:
           listar_carros();
           break;
   case 5:

media_precos(); break;

   case 6:

atualizar_lista(); break;

   default:
           break;
   } 

   p=hora_atual();
   printf("Hora %d minuto %d\n", p->hora, p->minuto);
   free(p);
 } while(opcao!=FIM);

}



<< Equipe7-2015-1