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

  1. Cadastrar Contas: Verifica duplicidade de número de conta e procura a primeira posição vazia (num = 0) para inserção.
  2. Visualizar Contas: Busca e exibe todas as contas associadas a um nome de cliente específico.
  3. 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.
  4. 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.

Entradas relacionadas: