Equipe5-2015-1
Integrantes
LEONARDO TASCA
LUISA MACHADO
NATALIA ADRIANA MIRANDA
Descrição da atividade principal
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos de uma loja de informática. 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 de informática (cadastrados), poderá acrescentar novos produtos, eliminar produtos, 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 de estatística dizendo qual a quantidade de produtos, o maior, menor e valor médio dos produtos de informática cadastrados.
Descrição da atividade específica
- Fazer uso
- Comando swith
- Lista encadeada
- Ponteiros
- Alocação Dinâmica de Memória
- Funções para tratamento de arquivo
- Exemplo da estrutura (encadeada)
struct TProduto{ int codigo; char descricao[40]; float preco; int qtdade; struct TProduto *prox; };
- Exemplo de arquivo (produtos.dat)
cat produtos.dat 111 PENDRIVE 19.50 20 102 DVD-RW 2.30 200 150 MOUSE 17.85 50 115 HP3212 80.50 10
Atividades
Distribuição
LEONARDO TASCA
- FUNÇÃO PRINCIPAL
- FUNÇÃO ESTATÍSTICA
LUÍSA MACHADO
- FUNÇÃO OPÇÕES
- FUNÇÃO LOCALIZAR
NATÁLIA ADRIANA MIRANDA
- FUNÇÃO LISTAR
- FUNÇÃO MOSTRAR OPÇÕES
-AS DEMAIS FUNÇÕES FORAM FEITAS EM GRUPO.
Conclusão
Código fonte
#include <stdio.h>
#include <stdlib.h>
struct TProduto{
int codigo;
int qtdade;
char descricao[20];
float preco;
struct TProduto *prox;
}*lista;
int i=1;
FILE *fp;
void listar_produtos()
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
int res;
if ((fp = fopen("produtos.dat", "r")) == NULL) {
printf("Falha na abertura do arquivo\n");
return;
}
printf("\n");
while(1) {
if((res = fscanf(fp,"%d %d %s %f", &pp->codigo, &pp->qtdade, pp->descricao, &pp->preco)) == EOF) {
break;
}
printf("%d %d %s %0.2f\n", pp->codigo, pp->qtdade, pp->descricao, pp->preco);
}
fclose(fp);
}
void add_prod()
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
int res, j;
printf("Digite o código do produto: ");
scanf("%d", &pp->codigo);
printf("Digite a quantidade de produtos: ");
scanf("%d", &pp->qtdade);
printf("Digite o nome do produto: ");
scanf("%s", pp->descricao);
printf("Digite preço do produto: ");
scanf("%f", &pp->preco);
if ((fp=fopen("produtos.dat", "a")) == NULL) {
printf("Falha na abertura do arquivo\n");
return;
}
if((res = fprintf(fp,"%d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco)) == EOF) {
printf("Erro\n");
}
fclose(fp);
}
void rm_prod()
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
int cod, j, res, c, q;
float p;
char d[20];
if ((fp = fopen("produtos.dat", "r+")) == NULL) {
printf("Falha na abertura do arquivo\n");
return;
}
printf("\nDigite o código: ");
scanf("%d", &cod);
rewind(fp);
for(pp=lista;pp!=NULL;pp=pp->prox) {
if((res = fprintf(fp,"%d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco)) == EOF) {
printf("Erro\n");
}
printf("Linha: %d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco);
}
/* fscanf(fp,"%d %d %s %f", &c, &q, d, &p);
pp->codigo = c;
pp->qtdade = q;
pp->preco = p;
for(j=0;j<20;j++)
pp->descricao[j] = d[j];
pp = pp->prox;
if ( pp != NULL && pp->codigo == cod ){
printf("\n%d %d %s %0.2f\n", pp->codigo, pp->qtdade, pp->descricao, pp->preco);
free(pp);
printf("\nProduto Retirado!");
break;
}*/
// if( res == -1 ){
// printf("\nCódigo não encontrado\n");
//}
fclose(fp);
}
void localizar()
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
int cod, res;
if ((fp = fopen("produtos.dat", "r")) == NULL) {
printf("Falha na abertura do arquivo\n");
return;
}
printf("\nDigite o código: ");
scanf("%d", &cod);
rewind(fp);
while(1) {
if((res = fscanf(fp,"%d %d %s %f", &pp->codigo, &pp->qtdade, pp->descricao, &pp->preco)) == EOF){
break;
}
if ( pp != NULL && pp->codigo == cod ){
printf("\n%d %d %s %0.2f\n", pp->codigo, pp->qtdade, pp->descricao, pp->preco);
break;
}
}
if( res == -1 ){
printf("\nCódigo não encontrado\n");
}
fclose(fp);
}
void ordenar()
{
}
void estat()
{
}
void mostra_opcoes()
{
system("clear");
printf("-----------------------------------------\n");
printf("Menu\n");
printf("Opção 1: Listar produtos cadastrados\n");
printf("Opção 2: Adicionar produtos\n");
printf("Opção 3: Remover produto\n");
printf("Opção 4: Localizar produto\n");
printf("Opção 5: Ordenar produtos\n");
printf("Opção 6: Estatísticas\n");
printf("Opção 7: Sair\n");
printf("-----------------------------------------\n");
}
void opcoes(int x)
{
int k;
while(i){
switch(x) {
case 1:
printf("\nTempo de visualização (segundos): ");
scanf("%d",&k);
listar_produtos(); // função listar
sleep(k);
funcao_principal();
break;
case 2:
add_prod(); // função adicionar
funcao_principal();
break;
case 3:
printf("\nRemover Produtos");
rm_prod(); // função remover
funcao_principal();
break;
case 4:
printf("\nLocalizar Produtos");
printf("\nTempo de visualização (segundos): ");
scanf("%d",&k);
localizar(); // função buscar
sleep(k);
funcao_principal();
break;
case 5:
ordenar(); // função ordenar
funcao_principal();
break;
case 6:
estat();
funcao_principal();
break;
case 7:
printf("Saindo!!\n");
i=0;
default:
x=7;
}
}
}
funcao_principal()
{
int num;
mostra_opcoes();
printf("Entre com um número: ");
scanf("%d",&num);
opcoes(num);
}
void main()
{
funcao_principal();
}
<< | Equipe5-2015-1 |
---|