Mudanças entre as edições de "PR1022804 2020 2 AULA13"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 
=Trabalho Final=
 
=Trabalho Final=
  
==Requisito para Formação das Equipes==
+
==Informações==
  
* Os alunos formarão equipes com até 2 integrantes. A apresentação do trabalho final da unidade curricular (correspondente a avaliação prática 1 - AP1) será feita pelos dois alunos da equipe.
+
* Os trabalhos serão individuais;
 +
* A nota do trabalho final corresponde a Avaliação Prática 1 - AP1 (nota 3 do SIGAA);
 +
* A apresentação do trabalho vai ser na forma de seminário gravado mostrando todas as funcionalidades do programa;
 +
* Envio do código fonte em linguagem C comentado e link para apresentação no SIGAA.
  
 
==Requisitos mínimos do programa C==
 
==Requisitos mínimos do programa C==
Linha 9: Linha 12:
 
;O programa em linguagem C deve necessariamente fazer uso de:
 
;O programa em linguagem C deve necessariamente fazer uso de:
  
#Vetores
+
#Vetores;
#Estruturas
+
#Estruturas;
#Funções para tratamento de arquivo
+
#Funções para tratamento de arquivo.
  
 
;Nota1:<span style="color:red;">Os dados (informações) devem ser alterados na memória e só ao final gravados no arquivo, ou seja, você deve abrir o arquivo e copiar as informações para um vetor e todas as operações devem ser realizadas sobre este vetor, sendo que no final, as alterações devem ser regravadas no arquivo no disco.</span>
 
;Nota1:<span style="color:red;">Os dados (informações) devem ser alterados na memória e só ao final gravados no arquivo, ou seja, você deve abrir o arquivo e copiar as informações para um vetor e todas as operações devem ser realizadas sobre este vetor, sendo que no final, as alterações devem ser regravadas no arquivo no disco.</span>
Linha 32: Linha 35:
 
  } Auto[MAX];
 
  } Auto[MAX];
  
;Exemplo de arquivo (carros.dat):
+
;Exemplo do conteúdo do arquivo de texto (carros.txt):
  $ cat carros.dat (linux) ou Bloco de Notas->Arquivo->Abrir->carros.dat // CMD: type carros.dat
+
 
 +
  $ cat carros.dat (linux) ou Bloco de Notas->Arquivo->Abrir->carros.txt // CMD: type carros.txt
 
  AAB-1248 GM CORSA 18000
 
  AAB-1248 GM CORSA 18000
 
  PTY-6548 VOLKS GOL 21500
 
  PTY-6548 VOLKS GOL 21500
Linha 50: Linha 54:
 
   char marca[20];
 
   char marca[20];
 
   char modelo[30];
 
   char modelo[30];
   char preco[20];
+
   int ano;
 +
  float preco;
 
} Auto[MAX];
 
} Auto[MAX];
  
Linha 108: Linha 113:
 
void ler_arquivo()
 
void ler_arquivo()
 
{
 
{
  char buff[4][100];
 
 
   int res,j,i=0;
 
   int res,j,i=0;
 
   while(1) {
 
   while(1) {
       if((res = fscanf(p_arq,"%s %s %s %s",buff[0],buff[1],buff[2],buff[3]))==EOF)
+
       if(res = fscanf(p_arq,"%9s %20s %30s %d %f ",Auto[i].placa,Auto[i].marca,Auto[i].modelo,&Auto[i].ano,&Auto[i].preco)==EOF)
 
       {         
 
       {         
 
  printf("Fim de leitura\n");
 
  printf("Fim de leitura\n");
 
  break;
 
  break;
 
       }  
 
       }  
    strcpy(Auto[i].placa,buff[0]);
 
    strcpy(Auto[i].marca,buff[1]);
 
    strcpy(Auto[i].modelo,buff[2]);
 
    strcpy(Auto[i].preco,buff[3]);
 
 
     i++;
 
     i++;
 
   }
 
   }
Linha 135: Linha 135:
  
 
   for (i=0; i<prox_registro;i++) {
 
   for (i=0; i<prox_registro;i++) {
       if((res = fprintf(p_arq,"%s %s %s %s\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].preco))==EOF) {  
+
       if((res = fprintf(p_arq,"%9s %-20s %-30s %d %10.2f\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].ano,Auto[i].preco))==EOF) {  
 
  printf("Erro\n");
 
  printf("Erro\n");
 
           break;
 
           break;
Linha 155: Linha 155:
 
printf("\nModelo: ");
 
printf("\nModelo: ");
 
scanf("%s",Auto[i].modelo);
 
scanf("%s",Auto[i].modelo);
 +
printf("\nAno: ");
 +
scanf("%d",&Auto[i].ano);
 
printf("\nValor: ");
 
printf("\nValor: ");
scanf("%s",Auto[i].preco);
+
scanf("%f",&Auto[i].preco);
  
 
   prox_registro=i+1;
 
   prox_registro=i+1;
Linha 165: Linha 167:
 
   printf("\nImprimir relatorio...\n\n");
 
   printf("\nImprimir relatorio...\n\n");
 
   for(int i=0;i<prox_registro;i++)
 
   for(int i=0;i<prox_registro;i++)
       printf("%s %s %s %s\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].preco);
+
       printf("%s %-20s %-30s %d %10.2f\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].ano,Auto[i].preco);
   printf("\n================================================================");
+
   printf("\n=============================================+++++++++++++++++++===================");
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Linha 173: Linha 175:
 
==Apresentação==
 
==Apresentação==
  
#Entrega: '''XX/04/2021";
+
#Data final para entrega: '''14/04/2021''';
#Videoaula: Seminário de 10 a 20min (link do drive ou youtube);
+
#Videoaula: Seminário de 20 a 30min (''link'' do Drive ou YouTube).
#Toda a equipe deverá apresentar.
 
  
 
=Temas de Negócios=
 
=Temas de Negócios=
 +
 +
;Sugestões
  
 
* Padaria
 
* Padaria
Linha 194: Linha 197:
 
==Requisitos do negócio==
 
==Requisitos do negócio==
  
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos ou materiais de um comércio varejista. 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 produtos (já cadastrados), poderá acrescentar novos produtos do negócio e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção estatística dizendo qual a quantidade de produtos, o maior, o menor e o valor médio dos produtos cadastrados.
+
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos ou materiais de um comércio varejista. 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 produtos (já cadastrados), poderá acrescentar novos produtos do negócio e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar (por código) e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção estatística dizendo qual a quantidade de produtos, o maior, o menor e o valor médio dos produtos cadastrados.
 
 
=Apresentações=
 
 
 
Envio de link para arquivo de videoaula com apresentação do código fonte e do programa funcionando.
 
  
 
=Avaliação=
 
=Avaliação=
Linha 207: Linha 206:
 
#Entrega do código fonte devidamente comentado. (20%)
 
#Entrega do código fonte devidamente comentado. (20%)
  
==Motos==
+
==''Feedback''==
  
Equipe:  
+
Tema:  
Autores:  
+
Autor:  
 
<br>
 
<br>
 
<blockquote style="background:#E6E6FA; border: 2px solid navy; margin-left: 0px; margin-right: 0px; padding: 1em;">
 
<blockquote style="background:#E6E6FA; border: 2px solid navy; margin-left: 0px; margin-right: 0px; padding: 1em;">

Edição atual tal como às 15h43min de 25 de julho de 2022

Trabalho Final

Informações

  • Os trabalhos serão individuais;
  • A nota do trabalho final corresponde a Avaliação Prática 1 - AP1 (nota 3 do SIGAA);
  • A apresentação do trabalho vai ser na forma de seminário gravado mostrando todas as funcionalidades do programa;
  • Envio do código fonte em linguagem C comentado e link para apresentação no SIGAA.

Requisitos mínimos do programa C

O programa em linguagem C deve necessariamente fazer uso de
  1. Vetores;
  2. Estruturas;
  3. Funções para tratamento de arquivo.
Nota1
Os dados (informações) devem ser alterados na memória e só ao final gravados no arquivo, ou seja, você deve abrir o arquivo e copiar as informações para um vetor e todas as operações devem ser realizadas sobre este vetor, sendo que no final, as alterações devem ser regravadas no arquivo no disco.
Nota2
Fica proibido o uso de listas encadeadas.
Note3
Fica proibido o uso do C++ (Cpp).



Exemplo da estrutura (automóveis)
#define MAX 100
struct TCarro {
   char placa[9];
   char marca[20];
   char modelo[30];
   char preco;
} Auto[MAX];
Exemplo do conteúdo do arquivo de texto (carros.txt)
$ cat carros.dat (linux) ou Bloco de Notas->Arquivo->Abrir->carros.txt // CMD: type carros.txt
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
Exemplo de como ficaria o código:
#include <stdio.h>
#include <string.h>
#define MAX 100

struct TCarro {
   char placa[9];
   char marca[20];
   char modelo[30];
   int ano;
   float preco;
} Auto[MAX];

FILE *p_arq;
int prox_registro;

void abrir_arquivo();
void ler_arquivo();
void cadastrar();
void relatorio();
void grava_arquivo();


void main()
{
   abrir_arquivo();
   int opcao;
   while(1){
	printf("\nMENU PRINCIPAL\n\n");
	printf("1 - Cadastrar\n");
	printf("2 - Relatorio\n");
	printf("? - Sair ");
	scanf("%d",&opcao);

	switch (opcao)
	{
	   case 1:
	     cadastrar();
	   break;

	   case 2:
	     relatorio();
	   break;

	   default:
             grava_arquivo();
	     printf("\nBye!\n");
	     return;
	}
   }
}

void abrir_arquivo()
{
  int i;
  int res;

  if ((p_arq=fopen("carros.txt", "r")) == NULL) {
     if ((p_arq=fopen("carros.txt", "w")) == NULL) {
     	printf("Problemas na abertura do arquivo\n");
     	return;
     }
  }
  ler_arquivo();
}

void ler_arquivo()
{
  int res,j,i=0;
  while(1) {
      if(res = fscanf(p_arq,"%9s %20s %30s %d %f ",Auto[i].placa,Auto[i].marca,Auto[i].modelo,&Auto[i].ano,&Auto[i].preco)==EOF)
      {  					  	    
	  printf("Fim de leitura\n");
	  break;
      } 
     i++;
  }
  prox_registro=i;
  fclose(p_arq);
}

void grava_arquivo()
{
  int i, res;
  if ((p_arq=fopen("carros.txt", "w")) == NULL) {
     printf("\n\nErro: Problemas na abertura do arquivo.\n");
     return;
  }

  for (i=0; i<prox_registro;i++) {
      if((res = fprintf(p_arq,"%9s %-20s %-30s %d %10.2f\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].ano,Auto[i].preco))==EOF) { 
	  printf("Erro\n");
          break;
      }
  }
  fclose(p_arq);
}


void cadastrar()
{
   int i;
   i=prox_registro;
	printf("\n\nCadastrar Automóvel:\n");
	printf("Placas: ");
	scanf("%s",Auto[i].placa);
	printf("\nMarca: ");
	scanf("%s",Auto[i].marca);
	printf("\nModelo: ");
	scanf("%s",Auto[i].modelo);
	printf("\nAno: ");
	scanf("%d",&Auto[i].ano);
	printf("\nValor: ");
	scanf("%f",&Auto[i].preco);

   prox_registro=i+1;
}

void relatorio()
{
  printf("\nImprimir relatorio...\n\n");
  for(int i=0;i<prox_registro;i++)
       printf("%s %-20s %-30s %d %10.2f\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].ano,Auto[i].preco);
  printf("\n=============================================+++++++++++++++++++===================");
}

Apresentação

  1. Data final para entrega: 14/04/2021;
  2. Videoaula: Seminário de 20 a 30min (link do Drive ou YouTube).

Temas de Negócios

Sugestões
  • Padaria
  • Roupas (malharia, confecção)
  • Verdureira
  • Papelaria
  • Livraria
  • Outro (negócio)


Requisitos do negócio

Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos ou materiais de um comércio varejista. 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 produtos (já cadastrados), poderá acrescentar novos produtos do negócio e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar (por código) e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção estatística dizendo qual a quantidade de produtos, o maior, o menor e o valor médio dos produtos cadastrados.

Avaliação

  1. Cumprimento de todos os requisitos; (30%)
  2. Aparência e facilidade de acesso ao menu e as informações; (20%)
  3. Clareza na apresentação das funcionalidades; (30%)
  4. Entrega do código fonte devidamente comentado. (20%)

Feedback

Tema: Autor:

  1. Cumprimento de todos os requisitos:
  2. Aparência e facilidade de acesso ao menu e as informações: foram bem aqui. Pontuação:
  3. Clareza na apresentação das funcionalidades:
  4. Entrega do código fonte devidamente comentado:
Pontuação final
XX% Nota: X,X (sete)



Icone voltar.png Icone menu.png Icone prox.png