Implementação em C de um Sistema Básico de Gerenciamento de Contas
Classificado em Grego
Escrito em em
português com um tamanho de 5,53 KB
Este documento apresenta o código-fonte em linguagem C para um sistema simples de gerenciamento de contas bancárias, utilizando uma estrutura (struct) para armazenar os dados e um menu de opções para interação.
Estrutura do Código e Variáveis
O programa utiliza um array de 15 estruturas para armazenar as contas (conta[15]), cada uma contendo número, nome do cliente e saldo. Variáveis auxiliares como i (contador), op (opção do menu), posi (posição no array) e achou (flag de busca) são declaradas.
#include <stdio.h>
#include <string.h>
int main()
{
struct {
int num;
char nome[35];
float saldo;
} conta[15];
int i, op, posi, achou, num_conta;
float saldo_cliente, menor_saldo;
char nome_cliente[35];
// Inicialização das contas
for (i = 0; i < 15; i++) {
conta[i].num = 0;
strcpy(conta[i].nome, "\0");
conta[i].saldo = 0;
}
do {
printf("\nMenu de Opcoes");
printf("\n1 - Cadastrar contas");
printf("\n2 - Visualizar todas as contas de um determinado cliente");
printf("\n3 - Excluir conta de menor saldo");
printf("\n4 - Sair");
printf("\nDigite sua opcao ");
scanf("%d%*c", &op);
if ((op < 1) || (op > 4)) {
printf("\nOpção Inválida");
}
// Opção 1: Cadastrar contas
if (op == 1) {
achou = 0;
printf("\nDigite o número da conta a ser incluída ");
scanf("%d%*c", &num_conta);
// Verifica se a conta já existe
for (i = 0; i < 15; i++) {
if (num_conta == conta[i].num) {
achou = 1;
break;
}
}
if (achou == 1) {
printf("\nJá existe conta cadastrada com este número");
} else {
// Procura posição vazia (num == 0)
posi = -1;
i = 0;
while (i < 15) {
if (conta[i].num == 0) {
posi = i;
break;
}
i++;
}
if (posi == -1) {
printf("\nImpossível cadastrar novas contas");
} else {
printf("Digite o nome do cliente ");
scanf("%s%*c", conta[posi].nome);
printf("Digite o saldo do cliente ");
scanf("%f%*c", &conta[posi].saldo);
conta[posi].num = num_conta;
printf("\nConta cadastrada com sucesso");
}
}
getchar();
}
// Opção 2: Visualizar contas por cliente
if (op == 2) {
printf("\nDigite o nome do cliente a ser consultado ");
scanf("%s%*c", nome_cliente);
achou = 0;
for (i = 0; i < 15; i++) {
if (strcmp(conta[i].nome, nome_cliente) == 0 && conta[i].num != 0) {
printf("\nNúmero conta: %d | Saldo: %.2f", conta[i].num, conta[i].saldo);
achou = 1;
}
}
if (achou == 0) {
printf("\nNão existe conta cadastrada para este cliente");
}
getchar();
}
// Opção 3: Excluir conta de menor saldo
if (op == 3) {
i = 0;
achou = 0;
posi = -1;
// Encontra a conta com o menor saldo
while (i < 15) {
if (conta[i].num != 0) {
if (achou == 0) {
menor_saldo = conta[i].saldo;
posi = i;
achou = 1;
} else if (conta[i].saldo < menor_saldo) {
menor_saldo = conta[i].saldo;
posi = i;
}
}
i++;
}
if (achou == 0) {
printf("\nNenhuma conta foi cadastrada");
} else {
// Desloca o array para remover a conta na posição 'posi'
for (i = posi; i < 14; i++) {
conta[i] = conta[i+1];
}
// Limpa o último elemento (índice 14)
conta[14].num = 0;
strcpy(conta[14].nome, "\0");
conta[14].saldo = 0;
printf("\nConta excluída com sucesso");
}
getchar();
}
} while (op != 4);
return 0;
}Funcionalidades Principais
- Cadastrar Contas: Verifica duplicidade de número de conta e procura a primeira posição vazia (
num = 0) para inserção. - Visualizar Contas: Busca e exibe todas as contas associadas a um nome de cliente específico.
- Excluir Conta de Menor Saldo: Percorre o array para identificar a conta com o menor saldo e a remove, deslocando os elementos subsequentes para manter a integridade do array.
- Sair: Encerra o programa.
Nota: O uso de scanf("%d%*c", ...) e getchar() é empregado para limpar o buffer de entrada após a leitura, garantindo que o programa funcione corretamente em diferentes ambientes de console.