0% acharam este documento útil (0 voto)
5 visualizações5 páginas

Sistema de Gestão de Produtos em C

Enviado por

reinaldogac69
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações5 páginas

Sistema de Gestão de Produtos em C

Enviado por

reinaldogac69
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

#include <stdio.

h>
#include <string.h>

typedef struct {
char nome[50];
char marca[50];
int quantidade;
float preco;
char fornecedor[50];
char descricao[100];
int codigo;
} Produto;

void consultar(Produto produtos[], int n) {


int i, codigo;

printf("Digite o código do produto que deseja consultar: ");


scanf("%d", &codigo);

for (i = 0; i < n; i++) {


if (produtos[i].codigo == codigo) {
printf("Produto encontrado:\n");
printf("Nome: %s\n", produtos[i].nome);
printf("Marca: %s\n", produtos[i].marca);
printf("Quantidade: %d\n", produtos[i].quantidade);
printf("Preço: %.2f\n", produtos[i].preco);
printf("Fornecedor: %s\n", produtos[i].fornecedor);
printf("Descrição: %s\n", produtos[i].descricao);
printf("Código: %d\n", produtos[i].codigo);
return;
}
}

printf("Produto não encontrado.\n");


}

void excluir(Produto produtos[], int *n, int codigo) {


int i, posicao = -1;

for (i = 0; i < *n; i++) {


if (produtos[i].codigo == codigo) {
posicao = i;
break;
}
}

if (posicao == -1) {
printf("Produto não encontrado.\n");
return;
}

// Shift todos os elementos após a posição para a esquerda


for (i = posicao; i < *n - 1; i++) {
produtos[i] = produtos[i + 1];
}

(*n)--; // Decrementa o número de produtos


printf("Produto excluído com sucesso.\n");
}

void atualizar(Produto produtos[], int n, int codigo) {


int i, posicao = -1;

// Procurar a posição do produto com o código informado


for (i = 0; i < n; i++) {
if (produtos[i].codigo == codigo) {
posicao = i;
break;
}
}

if (posicao == -1) {
printf("Produto não encontrado.\n");
return;
}

printf("Digite os novos dados do produto:\n");


printf("Nome: ");
fgets(produtos[posicao].nome, sizeof(produtos[posicao].nome), stdin);
produtos[posicao].nome[strcspn(produtos[posicao].nome, "\n")] = '\0'; // Remove a nova
linha

printf("Marca: ");
fgets(produtos[posicao].marca, sizeof(produtos[posicao].marca), stdin);
produtos[posicao].marca[strcspn(produtos[posicao].marca, "\n")] = '\0';

printf("Quantidade: ");
scanf("%d", &produtos[posicao].quantidade);

printf("Preço: ");
scanf("%f", &produtos[posicao].preco);

printf("Fornecedor: ");
fgets(produtos[posicao].fornecedor, sizeof(produtos[posicao].fornecedor), stdin);
produtos[posicao].fornecedor[strcspn(produtos[posicao].fornecedor, "\n")] = '\0';
printf("Descrição: ");
fgets(produtos[posicao].descricao, sizeof(produtos[posicao].descricao), stdin);
produtos[posicao].descricao[strcspn(produtos[posicao].descricao, "\n")] = '\0';

printf("Produto atualizado com sucesso.\n");


}

void salvarEmArquivo(Produto produtos[], int n) {


FILE *arquivo;
arquivo = fopen("[Link]", "w");

if (arquivo == NULL) {
printf("Erro ao abrir o arquivo.\n");
return;
}

for (int i = 0; i < n; i++) {


fprintf(arquivo, "%s;%s;%d;%.2f;%s;%s;%d\n",
produtos[i].nome,
produtos[i].marca,
produtos[i].quantidade,
produtos[i].preco,
produtos[i].fornecedor,
produtos[i].descricao,
produtos[i].codigo);
}

fclose(arquivo);
printf("Dados salvos com sucesso.\n");
}

void cadastrar(Produto *produto) {


printf("Nome: ");
fgets(produto->nome, sizeof(produto->nome), stdin);
produto->nome[strcspn(produto->nome, "\n")] = '\0'; // Remove a nova linha

printf("Marca: ");
fgets(produto->marca, sizeof(produto->marca), stdin);
produto->marca[strcspn(produto->marca, "\n")] = '\0';

printf("Quantidade: ");
scanf("%d", &produto->quantidade);

printf("Preço: ");
scanf("%f", &produto->preco);

printf("Fornecedor: ");
fgets(produto->fornecedor, sizeof(produto->fornecedor), stdin);
produto->fornecedor[strcspn(produto->fornecedor, "\n")] = '\0';

printf("Descrição: ");
fgets(produto->descricao, sizeof(produto->descricao), stdin);
produto->descricao[strcspn(produto->descricao, "\n")] = '\0';

printf("Código: ");
scanf("%d", &produto->codigo);

printf("Produto cadastrado com sucesso!\n");


}

void lerArquivo(Produto produtos[], int *n) {


FILE *arquivo;
arquivo = fopen("[Link]", "r");

if (arquivo == NULL) {
printf("Erro ao abrir o arquivo.\n");
return;
}

int i = 0;
while (fscanf(arquivo, "%[^;];%[^;];%d;%f;%[^;];%[^;];%d",
produtos[i].nome,
produtos[i].marca,
&produtos[i].quantidade,
&produtos[i].preco,
produtos[i].fornecedor,
produtos[i].descricao,
&produtos[i].codigo) == 7) {
i++;
}

*n = i; // Atualiza o número de produtos lidos

fclose(arquivo);
printf("Dados carregados com sucesso.\n");
}

int main() {
Produto produtos[100]; // Array para armazenar os produtos
int n = 0, opcao, codigo;

lerArquivo(produtos, &n); // Carrega os dados do arquivo

do {
// Menu de opções
printf("\nMenu:\n");
printf("1. Cadastrar\n");
printf("2. Consultar\n");
printf("3. Excluir\n");
printf("4. Atualizar\n");
printf("5. Sair\n");
printf("Opcao: ");
scanf("%d", &opcao);

switch (opcao) {
case 1:
cadastrar(&produtos[n]);
n++;
break;
case 2:
consultar(produtos, n);
break;
case 3:
printf("Digite o código do produto a ser excluído: ");
scanf("%d", &codigo);
excluir(produtos, &n, codigo);
break;
case 4:
printf("Digite o código do produto a ser atualizado: ");
scanf("%d", &codigo);
atualizar(produtos, n, codigo);
break;
case 5:
break;
default:
printf("Opção inválida.\n");
}
} while (opcao != 5);

// Salvar os dados em um arquivo antes de sair


salvarEmArquivo(produtos, n);

return 0;
}

Você também pode gostar