Download the Guru IA app
Android and iOS

zezim
Corrija esse código: #include <stdio.h> #include <stdlib.h> ...
Corrija esse código: #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUTOS 100
#define MAX_CLIENTES 100
typedef struct {
char produto[200];
int quantidade;
float preco;
} PRODUTO;
typedef struct {
char nome[100];
int rg, cpf, data_nascimento;
} CLIENTE;
/* Funcoes de PRODUTO */
void cadastrar_produtos(FILE *arquivo);
void listar_produtos();
void consultar_produto();
void editar_produto();
/* Funcoes de CLIENTE */
void cadastrar_clientes(FILE *arquivo);
void consultar_cliente();
void editar_cliente();
void excluir_cliente();
void listar_clientes();
/* Funcoes de VENDA */
void realizar_venda();
float total_caixa();
void vendas_realizadas();
int produtos_vendidos();
int main() {
int opcao, op;
FILE *produto = fopen("produto.txt", "a+");
if (produto == NULL) {
printf("Erro ao abrir o arquivo de produtos!\n");
return 1;
}
FILE *cliente = fopen("cliente.txt", "a+");
if (cliente == NULL) {
printf("Erro ao abrir o arquivo de clientes!\n");
return 1;
}
FILE *venda = fopen("venda.txt", "a+");
if (venda == NULL) {
printf("Erro ao abrir o arquivo de vendas!\n");
return 1;
}
do {
printf("Escolha uma opcao: \n1 - PRODUTO\n2 - CLIENTE\n3 - VENDA\n0 - SAIR\n");
scanf("%d", &opcao);
printf("\n");
switch (opcao) {
case 1:
printf("1 - cadastrar produto\n2 - consultar produto\n3 - editar produto\n4 - excluir produto\n5 - listar todos os produtos\n6 - retornar ao menu inicial\n");
scanf("%d", &op);
if (op == 1) {
cadastrar_produtos(produto);
}
if (op == 2) {
consultar_produto();
}
if (op == 3) {
editar_produto();
}
if (op == 5) {
listar_produtos();
}
break;
case 2:
printf("1 - cadastrar cliente\n2 - consultar cliente\n3 - editar cliente\n4 - excluir cliente\n5 - listar todos os clientes\n6 - retornar ao menu inicial\n");
scanf("%d", &op);
if (op == 1) {
cadastrar_clientes(cliente);
}
if (op == 2) {
consultar_cliente();
}
if (op == 3) {
editar_cliente();
}
if (op == 4) {
excluir_cliente();
}
if (op == 5) {
listar_clientes();
}
break;
case 3:
printf("1 - realizar venda\n2 - valor total em caixa\n3 - vendas realizadas\n4 - quantidade de produtos vendidos\n5 - retornar ao menu\n");
scanf("%d", &op);
if (op == 1) {
realizar_venda();
}
if (op == 2) {
printf("Valor total em caixa: %.2f\n", total_caixa());
}
if (op == 3) {
vendas_realizadas();
}
if (op == 4) {
printf("Quantidade de produtos vendidos: %d\n", produtos_vendidos());
}
break;
}
} while (opcao != 0);
fclose(produto);
fclose(venda);
fclose(cliente);
return 0;
}
/* Funcoes relacionadas a Produtos */
void cadastrar_produtos(FILE *produto) {
int opcao;
PRODUTO produtos;
do {
printf("Nome do produto: ");
scanf(" %[^\n]s", produtos.produto);
printf("Quantidade: ");
scanf("%d", &produtos.quantidade);
printf("Preco: ");
scanf("%f", &produtos.preco);
// Salvando informações no arquivo
fprintf(produto, "Produto: %s\n", produtos.produto);
fprintf(produto, "Quantidade: %d\n", produtos.quantidade);
fprintf(produto, "Preco: %.2f\n\n", produtos.preco);
printf("Deseja cadastrar outro produto? (1-Sim, 0-Nao): ");
scanf("%d", &opcao);
} while (opcao != 0);
fclose(produto);
}
void listar_produtos() {
FILE *produto = fopen("produto.txt", "r");
if (produto == NULL) {
printf("Erro ao abrir o arquivo!\n");
return;
}
char linha[256];
while (fgets(linha, sizeof(linha), produto)) {
printf("%s", linha);
}
fclose(produto);
}
void consultar_produto() {
FILE *produto = fopen("produto.txt", "r");
if (produto == NULL) {
printf("Erro ao abrir o arquivo!\n");
return;
}
char nome[200];
char linha[256];
int encontrado = 0;
printf("Digite o nome do produto para consultar: ");
scanf(" %[^\n]s", nome);
while (fgets(linha, sizeof(linha), produto)) {
if (strstr(linha, nome) != NULL) {
printf("Produto encontrado: \n");
printf("%s", linha);
for (int i = 0; i < 2; i++) {
fgets(linha, sizeof(linha), produto);
printf("%s", linha);
}
encontrado = 1;
break;
}
}
if (!encontrado) {
printf("Produto nao encontrado.\n");
}
fclose(produto);
}
void editar_produto() {
FILE *produto = fopen("produto.txt", "r+");
if (produto == NULL) {
printf("Erro ao abrir o arquivo!\n");
return;
}
char nome[200];
char linha[256];
int encontrado = 0;
long posicao;
printf("Digite o nome do produto para editar: ");
scanf(" %[^\n]s", nome);
while (fgets(linha, sizeof(linha), produto)) {
if (strstr(linha, nome) != NULL) {
encontrado = 1;
posicao = ftell(produto) - strlen(linha);
printf("Produto encontrado: \n");
printf("%s", linha);
for (int i = 0; i < 2; i++) {
fgets(linha, sizeof(linha), produto);
printf("%s", linha);
}
fseek(produto, posicao, SEEK_SET);
printf("Digite as novas informacoes do produto:\n");
PRODUTO produtos;
printf("Nome do produto: ");
scanf(" %[^\n]s", produtos.produto);
printf("Quantidade: ");
scanf("%d", &produtos.quantidade);
printf("Preco: ");
scanf("%f", &produtos.preco);
fprintf(produto, "Produto: %s\n", produtos.produto);
fprintf(produto, "Quantidade: %d\n", produtos.quantidade);
fprintf(produto, "Preco: %.2f\n\n", produtos.preco);
break;
}
}
if (!encontrado) {
printf("Produto nao encontrado.\n");
}
fclose(produto);
}
/* Funcoes relacionadas a Clientes */
void cadastrar_clientes(FILE *cliente) {
int opcao;
char nome[100];
int rg, cpf, dia, mes, ano;
CLIENTE clientes;
do {
printf("Nome do cliente: ");
scanf(" %[^\n]s", clientes.nome);
printf("RG: ");
scanf("%d", &clientes.rg);
printf("CPF: ");
scanf("%d", &clientes.cpf);
printf("Data de nascimento (DD/MM/AAAA): ");
scanf("%d/%d/%d", &dia, &mes, &ano);
// Salvando informações no arquivo
fprintf(cliente, "Nome: %s\n", clientes.nome);
fprintf(cliente, "RG: %d\n", clientes.rg);
fprintf(cliente, "CPF: %d\n", clientes.cpf);
fprintf(cliente, "Data de nascimento: %d/%d/%d\n\n", dia, mes, ano);
printf("Deseja cadastrar outro cliente? (1-Sim, 0-Nao): ");
scanf("%d", &opcao);
} while (opcao != 0);
}
void consultar_cliente() {
FILE *cliente = fopen("cliente.txt", "a");
if (cliente == NULL) {
printf("Erro ao abrir o arquivo!\n");
return 1;
}
cadastrar_clientes(cliente);
fclose(cliente);
printf("Cadastro concluido.");
return 0;
int cpf, encontrado = 0;
char linha[256];
CLIENTE clientes;
printf("Digite o CPF do usuario para consultar: ");
scanf("%d", &cpf);
while (fgets(linha, sizeof(linha), cliente)) {
if (sscanf(linha, "CPF: %d", &clientes.cpf) == 1) {
if (clientes.cpf == cpf) {
printf("Usuario encontrado:\n");
printf("%s", linha);
for (int i = 0; i < 3; i++) {
if (fgets(linha, sizeof(linha), cliente)) {
printf("%s", linha);
}
}
encontrado = 1;
break;
}
}
}
if (!encontrado) {
printf("Usuario nao encontrado.\n");
}
fclose(cliente);
}
void editar_cliente() {
FILE *cliente = fopen("cliente.txt", "r+");
if (cliente == NULL) {
printf("Erro ao abrir o arquivo!\n");
return;
}
int cpf, encontrado = 0;
char linha[256];
CLIENTE clientes;
long posicao;
printf("Digite o CPF do usuario para editar: ");
scanf("%d", &cpf);
while (fgets(linha, sizeof(linha), cliente)) {
if (sscanf(linha, "CPF: %d", &clientes.cpf) == 1) {
if (clientes.cpf == cpf) {
encontrado = 1;
posicao = ftell(cliente) - strlen(linha);
fseek(cliente, posicao, SEEK_SET);
printf("Digite as novas informacoes do cliente:\n");
printf("Nome do cliente: ");
scanf(" %[^\n]s", clientes.nome);
printf("RG: ");
scanf("%d", &clientes.rg);
printf("CPF: ");
scanf("%d", &clientes.cpf);
printf("Data de nascimento: ");
scanf("%d", &clientes.data_nascimento);
fseek(cliente, posicao, SEEK_SET);
fprintf(cliente, "Nome: %s\nRG: %d\nCPF: %d\nData de nascimento: %d\n\n",
clientes.nome, clientes.rg, clientes.cpf, clientes.data_nascimento);
break;
}
}
}
if (!encontrado) {
printf("Usuario nao encontrado.\n");
}
fclose(cliente);
}
void excluir_cliente() {
FILE *cliente = fopen("cliente.txt", "r");
if (cliente == NULL) {
printf("Erro ao abrir o arquivo!\n");
return;
}
int cpf, encontrado = 0;
char linha[256];
CLIENTE clientes;
printf("Digite o CPF do usuario para excluir: ");
scanf("%d", &cpf); // Usar %d para ler o CPF como int
FILE *temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("Erro ao abrir o arquivo temporário!\n");
fclose(cliente);
return;
}
while (fgets(linha, sizeof(linha), cliente)) {
// Remover a quebra de linha no final da linha
linha[strcspn(linha, "\n")] = '\0';
// Exibir a linha lida para depuração
printf("Linha lida: %s\n", linha); // Depuração
// Leitura do CPF da linha
if (sscanf(linha, "CPF: %d", &clientes.cpf) == 1) {
// Exibir o CPF lido para depuração
printf("CPF lido: %d\n", clientes.cpf); // Depuração
// Comparar os CPFs
if (clientes.cpf == cpf) {
printf("Cliente com CPF %d encontrado e excluido.\n", cpf);
// Pular as próximas 3 linhas (dados do cliente)
for (int i = 0; i < 3; i++) {
fgets(linha, sizeof(linha), cliente); // Leitura sem fazer nada com essas linhas
}
encontrado = 1;
} else {
fputs(linha, temp); // Copiar para o arquivo temporário se o CPF não for encontrado
}
} else {
fputs(linha, temp); // Copiar para o arquivo temporário se não for a linha do CPF
}
}
fclose(cliente);
fclose(temp);
if (encontrado) {
remove("cliente.txt");
rename("temp.txt", "cliente.txt");
printf("Usuario excluido com sucesso.\n");
} else {
remove("temp.txt");
printf("Usuario nao encontrado.\n");
}
fclose(cliente);
}
void listar_clientes() {
FILE *cliente = fopen("cliente.txt", "r");
if (cliente == NULL) {
printf("Erro ao abrir o arquivo!\n");
return;
}
char linha[256];
printf("Lista de clientes:\n");
while (fgets(linha, sizeof(linha), cliente)) {
printf("%s", linha);
if (strstr(linha, "CPF:") != NULL) {
for (int i = 0; i < 3; i++) {
if (fgets(linha, sizeof(linha), cliente)) {
printf("%s", linha);
}
}
}
}
fclose(cliente);
}
/* Funcoes relacionadas a VENDAS */
void realizar_venda() {
PRODUTO produtos[MAX_PRODUTOS];
int quantidade_vendida;
float valor_total = 0.0;
char produto_nome[200];
listar_produtos();
printf("Digite o nome do produto que deseja vender: ");
scanf(" %[^\n]s", produto_nome);
printf("Digite a quantidade vendida: ");
scanf("%d", &quantidade_vendida);
FILE *vendas = fopen("venda.txt", "a+");
if (vendas == NULL) {
printf("Erro ao abrir o arquivo de vendas!\n");
return;
}
FILE *produto = fopen("produto.txt", "r+");
if (produto == NULL) {
printf("Erro ao abrir o arquivo de produtos!\n");
fclose(vendas);
return;
}
char linha[256];
int encontrado = 0;
long posicao;
while (fgets(linha, sizeof(linha), produto)) {
if (strstr(linha, produto_nome) != NULL) {
encontrado = 1;
posicao = ftell(produto) - strlen(linha);
PRODUTO prod;
sscanf(linha, "Produto: %s[^\n]", prod.produto);
fgets(linha, sizeof(linha), produto);
sscanf(linha, "Quantidade: %d", &prod.quantidade);
fgets(linha, sizeof(linha), produto);
sscanf(linha, "Preco: %f", &prod.preco);
if (prod.quantidade >= quantidade_vendida) {
prod.quantidade -= quantidade_vendida;
valor_total = quantidade_vendida * prod.preco;
fseek(produto, posicao, SEEK_SET);
fprintf(produto, "Produto: %s\nQuantidade: %d\nPreco: %.2f\n\n", prod.produto, prod.quantidade, prod.preco);
fprintf(vendas, "Produto: %s, Quantidade: %d, Valor: %.2f\n", produto_nome, quantidade_vendida, valor_total);
printf("Venda realizada com sucesso!\n");
printf("Produto: %s, Quantidade: %d, Valor: %.2f\n", produto_nome, quantidade_vendida, valor_total);
} else {
printf("Quantidade insuficiente em estoque.\n");
}
break;
}
}
if (!encontrado) {
printf("Produto nao encontrado.\n");
}
fclose(produto);
fclose(vendas);
}
float total_caixa() {
FILE *vendas = fopen("venda.txt", "r");
if (vendas == NULL) {
printf("Erro ao abrir o arquivo de vendas!\n");
return 0;
}
char linha[256];
float valor_total = 0, valor = 0;
while (fgets(linha, sizeof(linha), vendas)) {
if (sscanf(linha, "Produto: %*[^,], Quantidade: %*d, Valor: %f", &valor) == 1) {
valor_total += valor;
}
}
fclose(vendas); // Fechar o arquivo antes de retornar
return valor_total;
}
void vendas_realizadas() {
FILE *vendas = fopen("venda.txt", "r");
if (vendas == NULL) {
printf("Erro ao abrir o arquivo de vendas!\n");
return;
}
char linha[256];
printf("Vendas realizadas:\n");
while (fgets(linha, sizeof(linha), vendas)) {
printf("%s", linha);
}
fclose(vendas);
}
int produtos_vendidos() {
FILE *vendas = fopen("venda.txt", "r");
if (vendas == NULL) {
printf("Erro ao abrir o arquivo de vendas!\n");
return 0;
}
char linha[256];
int quantidade_total = 0, quantidade = 0;
while (fgets(linha, sizeof(linha), vendas)) {
sscanf(linha, "%*[^:]: %*[^,], %*[^:]: %d", &quantidade);
quantidade_total += quantidade;
}
fclose(vendas);
return quantidade_total;
}
Corrija esse código: #include <stdio.h> #include <stdlib.h> #include <string.h>
#define MAX_PRODUTOS 100 #define MAX_CLIENTES 100
typedef struct { char produto[200]; int quantidade; float preco; } PRODUTO;
typedef struct { char nome[100]; int rg, cpf, data_nascimento; } CLIENTE;
/* Funcoes de PRODUTO */ void cadastrar_produtos(FILE *arquivo); void listar_produtos(); void consultar_produto(); void editar_produto();
/* Funcoes de CLIENTE */ void cadastrar_clientes(FILE *arquivo); void consultar_cliente(); void editar_cliente(); void excluir_cliente(); void listar_clientes();
/* Funcoes de VENDA */ void realizar_venda(); float total_caixa(); void vendas_realizadas(); int produtos_vendidos();
int main() { int opcao, op; FILE *produto = fopen("produto.txt", "a+"); if (produto == NULL) { printf("Erro ao abrir o arquivo de produtos!\n"); return 1; } FILE *cliente = fopen("cliente.txt", "a+"); if (cliente == NULL) { printf("Erro ao abrir o arquivo de clientes!\n"); return 1; } FILE *venda = fopen("venda.txt", "a+"); if (venda == NULL) { printf("Erro ao abrir o arquivo de vendas!\n"); return 1; }
do {
printf("Escolha uma opcao: \n1 - PRODUTO\n2 - CLIENTE\n3 - VENDA\n0 - SAIR\n");
scanf("%d", &opcao);
printf("\n");
switch (opcao) {
case 1:
printf("1 - cadastrar produto\n2 - consultar produto\n3 - editar produto\n4 - excluir produto\n5 - listar todos os produtos\n6 - retornar ao menu inicial\n");
scanf("%d", &op);
if (op == 1) {
cadastrar_produtos(produto);
}
if (op == 2) {
consultar_produto();
}
if (op == 3) {
editar_produto();
}
if (op == 5) {
listar_produtos();
}
break;
case 2:
printf("1 - cadastrar cliente\n2 - consultar cliente\n3 - editar cliente\n4 - excluir cliente\n5 - listar todos os clientes\n6 - retornar ao menu inicial\n");
scanf("%d", &op);
if (op == 1) {
cadastrar_clientes(cliente);
}
if (op == 2) {
consultar_cliente();
}
if (op == 3) {
editar_cliente();
}
if (op == 4) {
excluir_cliente();
}
if (op == 5) {
listar_clientes();
}
break;
case 3:
printf("1 - realizar venda\n2 - valor total em caixa\n3 - vendas realizadas\n4 - quantidade de produtos vendidos\n5 - retornar ao menu\n");
scanf("%d", &op);
if (op == 1) {
realizar_venda();
}
if (op == 2) {
printf("Valor total em caixa: %.2f\n", total_caixa());
}
if (op == 3) {
vendas_realizadas();
}
if (op == 4) {
printf("Quantidade de produtos vendidos: %d\n", produtos_vendidos());
}
break;
}
} while (opcao != 0);
fclose(produto);
fclose(venda);
fclose(cliente);
return 0;
}
/* Funcoes relacionadas a Produtos */
void cadastrar_produtos(FILE *produto) { int opcao; PRODUTO produtos; do { printf("Nome do produto: "); scanf(" %[^\n]s", produtos.produto); printf("Quantidade: "); scanf("%d", &produtos.quantidade); printf("Preco: "); scanf("%f", &produtos.preco);
// Salvando informações no arquivo
fprintf(produto, "Produto: %s\n", produtos.produto);
fprintf(produto, "Quantidade: %d\n", produtos.quantidade);
fprintf(produto, "Preco: %.2f\n\n", produtos.preco);
printf("Deseja cadastrar outro produto? (1-Sim, 0-Nao): ");
scanf("%d", &opcao);
} while (opcao != 0);
fclose(produto);
}
void listar_produtos() { FILE *produto = fopen("produto.txt", "r"); if (produto == NULL) { printf("Erro ao abrir o arquivo!\n"); return; } char linha[256]; while (fgets(linha, sizeof(linha), produto)) { printf("%s", linha); } fclose(produto); }
void consultar_produto() { FILE *produto = fopen("produto.txt", "r"); if (produto == NULL) { printf("Erro ao abrir o arquivo!\n"); return; }
char nome[200];
char linha[256];
int encontrado = 0;
printf("Digite o nome do produto para consultar: ");
scanf(" %[^\n]s", nome);
while (fgets(linha, sizeof(linha), produto)) {
if (strstr(linha, nome) != NULL) {
printf("Produto encontrado: \n");
printf("%s", linha);
for (int i = 0; i < 2; i++) {
fgets(linha, sizeof(linha), produto);
printf("%s", linha);
}
encontrado = 1;
break;
}
}
if (!encontrado) {
printf("Produto nao encontrado.\n");
}
fclose(produto);
}
void editar_produto() { FILE *produto = fopen("produto.txt", "r+"); if (produto == NULL) { printf("Erro ao abrir o arquivo!\n"); return; }
char nome[200];
char linha[256];
int encontrado = 0;
long posicao;
printf("Digite o nome do produto para editar: ");
scanf(" %[^\n]s", nome);
while (fgets(linha, sizeof(linha), produto)) {
if (strstr(linha, nome) != NULL) {
encontrado = 1;
posicao = ftell(produto) - strlen(linha);
printf("Produto encontrado: \n");
printf("%s", linha);
for (int i = 0; i < 2; i++) {
fgets(linha, sizeof(linha), produto);
printf("%s", linha);
}
fseek(produto, posicao, SEEK_SET);
printf("Digite as novas informacoes do produto:\n");
PRODUTO produtos;
printf("Nome do produto: ");
scanf(" %[^\n]s", produtos.produto);
printf("Quantidade: ");
scanf("%d", &produtos.quantidade);
printf("Preco: ");
scanf("%f", &produtos.preco);
fprintf(produto, "Produto: %s\n", produtos.produto);
fprintf(produto, "Quantidade: %d\n", produtos.quantidade);
fprintf(produto, "Preco: %.2f\n\n", produtos.preco);
break;
}
}
if (!encontrado) {
printf("Produto nao encontrado.\n");
}
fclose(produto);
}
/* Funcoes relacionadas a Clientes */
void cadastrar_clientes(FILE *cliente) { int opcao; char nome[100]; int rg, cpf, dia, mes, ano; CLIENTE clientes; do { printf("Nome do cliente: "); scanf(" %[^\n]s", clientes.nome); printf("RG: "); scanf("%d", &clientes.rg); printf("CPF: "); scanf("%d", &clientes.cpf); printf("Data de nascimento (DD/MM/AAAA): ");
scanf("%d/%d/%d", &dia, &mes, &ano);
// Salvando informações no arquivo
fprintf(cliente, "Nome: %s\n", clientes.nome);
fprintf(cliente, "RG: %d\n", clientes.rg);
fprintf(cliente, "CPF: %d\n", clientes.cpf);
fprintf(cliente, "Data de nascimento: %d/%d/%d\n\n", dia, mes, ano);
printf("Deseja cadastrar outro cliente? (1-Sim, 0-Nao): ");
scanf("%d", &opcao);
} while (opcao != 0);
}
void consultar_cliente() { FILE *cliente = fopen("cliente.txt", "a"); if (cliente == NULL) { printf("Erro ao abrir o arquivo!\n"); return 1; }
cadastrar_clientes(cliente);
fclose(cliente);
printf("Cadastro concluido.");
return 0;
int cpf, encontrado = 0;
char linha[256];
CLIENTE clientes;
printf("Digite o CPF do usuario para consultar: ");
scanf("%d", &cpf);
while (fgets(linha, sizeof(linha), cliente)) {
if (sscanf(linha, "CPF: %d", &clientes.cpf) == 1) {
if (clientes.cpf == cpf) {
printf("Usuario encontrado:\n");
printf("%s", linha);
for (int i = 0; i < 3; i++) {
if (fgets(linha, sizeof(linha), cliente)) {
printf("%s", linha);
}
}
encontrado = 1;
break;
}
}
}
if (!encontrado) {
printf("Usuario nao encontrado.\n");
}
fclose(cliente);
}
void editar_cliente() { FILE *cliente = fopen("cliente.txt", "r+"); if (cliente == NULL) { printf("Erro ao abrir o arquivo!\n"); return; }
int cpf, encontrado = 0;
char linha[256];
CLIENTE clientes;
long posicao;
printf("Digite o CPF do usuario para editar: ");
scanf("%d", &cpf);
while (fgets(linha, sizeof(linha), cliente)) {
if (sscanf(linha, "CPF: %d", &clientes.cpf) == 1) {
if (clientes.cpf == cpf) {
encontrado = 1;
posicao = ftell(cliente) - strlen(linha);
fseek(cliente, posicao, SEEK_SET);
printf("Digite as novas informacoes do cliente:\n");
printf("Nome do cliente: ");
scanf(" %[^\n]s", clientes.nome);
printf("RG: ");
scanf("%d", &clientes.rg);
printf("CPF: ");
scanf("%d", &clientes.cpf);
printf("Data de nascimento: ");
scanf("%d", &clientes.data_nascimento);
fseek(cliente, posicao, SEEK_SET);
fprintf(cliente, "Nome: %s\nRG: %d\nCPF: %d\nData de nascimento: %d\n\n",
clientes.nome, clientes.rg, clientes.cpf, clientes.data_nascimento);
break;
}
}
}
if (!encontrado) {
printf("Usuario nao encontrado.\n");
}
fclose(cliente);
}
void excluir_cliente() { FILE *cliente = fopen("cliente.txt", "r"); if (cliente == NULL) { printf("Erro ao abrir o arquivo!\n"); return; }
int cpf, encontrado = 0;
char linha[256];
CLIENTE clientes;
printf("Digite o CPF do usuario para excluir: ");
scanf("%d", &cpf); // Usar %d para ler o CPF como int
FILE *temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("Erro ao abrir o arquivo temporário!\n");
fclose(cliente);
return;
}
while (fgets(linha, sizeof(linha), cliente)) {
// Remover a quebra de linha no final da linha
linha[strcspn(linha, "\n")] = '\0';
// Exibir a linha lida para depuração
printf("Linha lida: %s\n", linha); // Depuração
// Leitura do CPF da linha
if (sscanf(linha, "CPF: %d", &clientes.cpf) == 1) {
// Exibir o CPF lido para depuração
printf("CPF lido: %d\n", clientes.cpf); // Depuração
// Comparar os CPFs
if (clientes.cpf == cpf) {
printf("Cliente com CPF %d encontrado e excluido.\n", cpf);
// Pular as próximas 3 linhas (dados do cliente)
for (int i = 0; i < 3; i++) {
fgets(linha, sizeof(linha), cliente); // Leitura sem fazer nada com essas linhas
}
encontrado = 1;
} else {
fputs(linha, temp); // Copiar para o arquivo temporário se o CPF não for encontrado
}
} else {
fputs(linha, temp); // Copiar para o arquivo temporário se não for a linha do CPF
}
}
fclose(cliente);
fclose(temp);
if (encontrado) {
remove("cliente.txt");
rename("temp.txt", "cliente.txt");
printf("Usuario excluido com sucesso.\n");
} else {
remove("temp.txt");
printf("Usuario nao encontrado.\n");
}
fclose(cliente);
}
void listar_clientes() { FILE *cliente = fopen("cliente.txt", "r"); if (cliente == NULL) { printf("Erro ao abrir o arquivo!\n"); return; }
char linha[256];
printf("Lista de clientes:\n");
while (fgets(linha, sizeof(linha), cliente)) {
printf("%s", linha);
if (strstr(linha, "CPF:") != NULL) {
for (int i = 0; i < 3; i++) {
if (fgets(linha, sizeof(linha), cliente)) {
printf("%s", linha);
}
}
}
}
fclose(cliente);
}
/* Funcoes relacionadas a VENDAS */
void realizar_venda() { PRODUTO produtos[MAX_PRODUTOS]; int quantidade_vendida; float valor_total = 0.0; char produto_nome[200];
listar_produtos();
printf("Digite o nome do produto que deseja vender: ");
scanf(" %[^\n]s", produto_nome);
printf("Digite a quantidade vendida: ");
scanf("%d", &quantidade_vendida);
FILE *vendas = fopen("venda.txt", "a+");
if (vendas == NULL) {
printf("Erro ao abrir o arquivo de vendas!\n");
return;
}
FILE *produto = fopen("produto.txt", "r+");
if (produto == NULL) {
printf("Erro ao abrir o arquivo de produtos!\n");
fclose(vendas);
return;
}
char linha[256];
int encontrado = 0;
long posicao;
while (fgets(linha, sizeof(linha), produto)) {
if (strstr(linha, produto_nome) != NULL) {
encontrado = 1;
posicao = ftell(produto) - strlen(linha);
PRODUTO prod;
sscanf(linha, "Produto: %s[^\n]", prod.produto);
fgets(linha, sizeof(linha), produto);
sscanf(linha, "Quantidade: %d", &prod.quantidade);
fgets(linha, sizeof(linha), produto);
sscanf(linha, "Preco: %f", &prod.preco);
if (prod.quantidade >= quantidade_vendida) {
prod.quantidade -= quantidade_vendida;
valor_total = quantidade_vendida * prod.preco;
fseek(produto, posicao, SEEK_SET);
fprintf(produto, "Produto: %s\nQuantidade: %d\nPreco: %.2f\n\n", prod.produto, prod.quantidade, prod.preco);
fprintf(vendas, "Produto: %s, Quantidade: %d, Valor: %.2f\n", produto_nome, quantidade_vendida, valor_total);
printf("Venda realizada com sucesso!\n");
printf("Produto: %s, Quantidade: %d, Valor: %.2f\n", produto_nome, quantidade_vendida, valor_total);
} else {
printf("Quantidade insuficiente em estoque.\n");
}
break;
}
}
if (!encontrado) {
printf("Produto nao encontrado.\n");
}
fclose(produto);
fclose(vendas);
}
float total_caixa() { FILE *vendas = fopen("venda.txt", "r"); if (vendas == NULL) { printf("Erro ao abrir o arquivo de vendas!\n"); return 0; }
char linha[256];
float valor_total = 0, valor = 0;
while (fgets(linha, sizeof(linha), vendas)) {
if (sscanf(linha, "Produto: %*[^,], Quantidade: %*d, Valor: %f", &valor) == 1) {
valor_total += valor;
}
}
fclose(vendas); // Fechar o arquivo antes de retornar
return valor_total;
}
void vendas_realizadas() { FILE *vendas = fopen("venda.txt", "r"); if (vendas == NULL) { printf("Erro ao abrir o arquivo de vendas!\n"); return; }
char linha[256];
printf("Vendas realizadas:\n");
while (fgets(linha, sizeof(linha), vendas)) {
printf("%s", linha);
}
fclose(vendas);
}
int produtos_vendidos() { FILE *vendas = fopen("venda.txt", "r"); if (vendas == NULL) { printf("Erro ao abrir o arquivo de vendas!\n"); return 0; }
char linha[256];
int quantidade_total = 0, quantidade = 0;
while (fgets(linha, sizeof(linha), vendas)) {
sscanf(linha, "%*[^:]: %*[^,], %*[^:]: %d", &quantidade);
quantidade_total += quantidade;
}
fclose(vendas);
return quantidade_total;
}