Menu
Coddy logo textTech

Final del proyecto: Bucle principal

Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 27 de 61.

challenge icon

Desafío

Fácil

¡Felicidades! Has construido una biblioteca completa de Cuenta Bancaria. Ahora es el momento de cambiar de rol. En lugar de ser el creador de la biblioteca, te convertirás en el usuario de la biblioteca. Tu tarea es escribir un programa principal que ponga a prueba tu módulo Account.

Piensa en esto como un cliente que entra en un banco y realiza una serie de transacciones. Crearás una cuenta, realizarás depósitos y retiros, verificarás el saldo a lo largo del camino y, finalmente, cerrarás la cuenta cuando hayas terminado.

Trabajarás con tres archivos:

  • account.h: Tu archivo de cabecera completo con el tipo opaco Account y todos los prototipos de funciones: create_account, destroy_account, deposit, withdraw, y get_balance.
  • account.c: Tu implementación completa con la estructura oculta que contiene id y balance, además de todas las implementaciones de funciones que has construido a lo largo de este proyecto.
  • main.c: ¡Aquí es donde brillas! Escribe un programa que demuestre el ciclo de vida completo de una cuenta bancaria a través de una secuencia realista de transacciones.

Recibirás cinco entradas: el ID de la cuenta (un entero), un primer depósito, un retiro, un segundo depósito y un intento de sobregiro (un retiro que debería fallar debido a fondos insuficientes).

Tu programa principal debe contar la historia de la vida de esta cuenta:

  1. Crear la cuenta y anunciarlo
  2. Mostrar el saldo inicial
  3. Realizar el primer depósito y mostrar el nuevo saldo
  4. Retirar algunos fondos y mostrar el saldo actualizado
  5. Realizar otro depósito y mostrar el saldo
  6. Intentar un retiro que exceda el saldo; esto debería fallar
  7. Mostrar el saldo final (sin cambios tras el retiro fallido)
  8. Cerrar la cuenta

Imprime la salida en este formato:

Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closed

Donde 2001 es el ID de la cuenta, y los montos reflejan tus entradas. Formatea todos los valores monetarios con dos decimales usando %.2f. El mensaje de retiro fallido debe imprimirse cuando withdraw devuelva 0.

Este final demuestra todo lo que has aprendido sobre la encapsulación: tu programa principal interactúa con la Account puramente a través de su interfaz pública, sin tocar nunca los datos internos ocultos directamente.

Pruébalo tú mismo

#include <stdio.h>
#include "account.h"

int main() {
    // TODO: Leer account_id, deposit1, withdraw_amount, deposit2 y overdraft de la entrada

    // TODO: Crear la cuenta e imprimir "Account <id> created"

    // TODO: Imprimir el saldo inicial

    // TODO: Realizar el primer depósito, imprimir "Deposited <amount>" y el nuevo saldo

    // TODO: Retirar fondos, imprimir "Withdrew <amount>" y el saldo actualizado

    // TODO: Realizar el segundo depósito, imprimir "Deposited <amount>" y el nuevo saldo

    // TODO: Intentar el retiro por sobregiro; si falla, imprimir "Withdrawal failed: insufficient funds"
    // TODO: Imprimir el saldo final

    // TODO: Imprimir "Account <id> closed" y destruir la cuenta

    return 0;
}

Todas las lecciones de Object Oriented Programming