Hoy vamos a resolver un ejercicio en ANSI C, C o como lo conozcas. Se trata de simular un banco con usuarios, depósitos, retiros y administradores.

Vamos a usar archivos, structs, listas y varias cosas para este ejercicio de banco con C.

Entre las opciones tenemos el registro de usuarios, inicio de sesión, creación de administrador, inhabilitar usuarios, validar contraseñas, retirar, depositar, transferir entre usuarios, ver detalles de usuarios (incluyendo número de cuenta y saldo) entre otros.

Descripción del ejercicio

Veamos lo que el programa solicita:

Simular banco con C

El Banco “Banco Parzibyte” requiere un Software diseñado en C capaz de realizar las siguientes tareas:

Se deberá mostrar en la pantalla inicial con tres opciones:

  1. Crear usuario
  2. Ingresar usuario
  3. Ingresar administrador

Creación de Usuario

Solicitar: Nombres, Identificación, Correo Electrónico y Contraseña. Validar:

  1. Que se escriban todos los datos
  2. Que el correo electrónico cumpla con el estándar example@example.com (debe llevar un @ y después un .)
  3. Que la contraseña sea alfanumérica (que contenga números y letras y debe ser mínimo de 8 caracteres, máximo de 12).

Crear: Número de cuenta de 10 cifras generado aleatoriamente. Todo cliente iniciara con un monto de $1000

Permitir al usuario realizar las siguientes acciones luego del Ingreso. El usuario ingresara con correo y la contraseña:

  1. Retirar: El Usuario podrá retirar dinero
  2. Depositar: El Usuario podrá Depositar dinero en su cuenta
  3. Transferir: Enviar dinero a otro Usuario existente (Por número de cuenta)
  4. Detalles: Ver número de cuenta, saldo actual y nombre del Usuario.

Administrador

Existencia de un Usuario Administrador con las siguientes características:

Usuario: admin@ejemplo.com Clave: parz1byte (ya debe existir)

  1. Listar Usuarios: Este Usuario podrá ver los detalles de todas las cuentas creadas
  2. Inhabilitar / Habilitar: Podrá Inhabilitar o Habilitar un Usuario (Por número de cuenta)

Se deben almacenar los registros después de cerrar el programa, manejar archivos.

El usuario administrador debe estar guardado en el archivo para poder ingresar en cualquier momento.

Si un Usuario se encuentra Inhabilitado, no podrá ingresar a su menú.

Explicación del algoritmo

En este caso vamos a usar una cola como estructura de datos y vamos a leer archivos, ya sea para el administrador o para guardar y recuperar los usuarios.

Tendremos funciones separadas que harán un trabajo específico, por ejemplo la función que valida la contraseña o el correo electrónico.

Lo demás serán if, comprobaciones, solicitud de datos, implementación de menús, etcétera.

Administrador del banco

Administrador de sistema de banco programado con C

Administrador de sistema de banco programado con C

Para que el administrador del banco inicie sesión debemos leer el archivo que contiene las credenciales y colocar el contenido ya parseado en un struct:

Ya después se puede autenticar, para ello solicitamos el correo y contraseña y comparamos con lo recuperado del archivo leído anteriormente.

Por cierto, en las funciones vamos a ir pasándonos varios apuntadores al administrador y a la lista de clientes o usuarios del banco en C:

Por cierto, el struct del administrador queda así:

Crear cliente

Registrar nuevo cliente de sistema bancario en C - Solicitar datos y generar número de cuenta

Registrar nuevo cliente de sistema bancario en C – Solicitar datos y generar número de cuenta

Siguiendo con la solicitud de este ejercicio de programación en C vamos a ver cómo registrar un nuevo cliente.

En este caso solicitamos los datos necesarios, generamos el número de cuenta aleatorio y agregamos un nuevo nodo a la lista de clientes. Recordemos que la lista será en realidad una cola.

Si en algunos casos no se está esperando el resultado de la función es porque estamos pasando apuntadores, así las funciones no devuelven nada, mejor modifican los parámetros. Esto es casi obligatorio al menos para las cadenas.

Operaciones del cliente en el banco

Retirar, depositar, transferir y ver detalles de cuenta bancaria - Ejercicio resuelto con C

Retirar, depositar, transferir y ver detalles de cuenta bancaria – Ejercicio resuelto con C

Ya vimos cómo agregar clientes a este sistema de banco en C pero veamos cómo hacer que inicien sesión y además hagan operaciones como retiros, depósitos y transferencias.

Para todas las operaciones vamos a modificar un nodo de la lista de clientes. Es importante saber que esta lista se carga a la RAM desde el archivo al inicio del programa, y se guarda en el archivo al final.

Por eso es que basta con modificar la lista, ya que al final será guardada en el archivo y luego recuperada en el siguiente inicio, esto nos ahorra operaciones de archivos y hace el programa más rápido pues modifica directamente la memoria.

Iniciar sesión

Hacemos lo mismo que para el administrador, pero en este caso lee la lista completa, compara el correo de cada cliente hasta encontrarlo y luego verifica las credenciales.

Por cierto, aquí también se verifica si el cliente ha sido deshabilitado por el administrador.

Retirar y depositar dinero

Este par de funciones me gustaron mucho, ya que basta con crear una que se puede usar para retirar y depositar solo cambiando el signo del número.

Por ejemplo, he programado únicamente la función de retirar dinero que busca dentro de la lista y en caso de encontrar resta el saldo.

Pero si te fijas, para le caso de depositar dinero simplemente invoco a la función que retira pero pasándole la cantidad negativa, así al restar algo negativo se vuelve positivo.

Nota: fíjate en que las funciones reciben un número de cuenta, así pueden usarse para cualquier cliente.

Transferir dinero

Esta función igualmente me gustó mucho porque solo vamos a invocar a las 2 funciones anteriores, cambiando obviamente el número de cuenta de origen y de destino.

Por lo tanto este sistema de simulación de banco con lenguaje C está usando métodos que ayudan a escribir poco código y reutilizarlo:

Con esto nos aseguramos de que todo esté validado, pues al transferir invocamos a la función que retira dinero, misma que verificará que no queden saldos negativos.

Detalles de cuenta y listado de usuarios

Ahora veamos 2 funciones que imprimen datos. La que lista los clientes simplemente recorre la estructura de datos nodo por nodo e imprime con printf en modo de tabla:

Y la que imprime los detalles de la cuenta del usuario es la siguiente:

En todos los casos recorremos toda la lista hasta encontrar al usuario. Si bien esto es un poco lento, nos ahorra memoria y funciones para obtener un apuntador a un usuario o cosas de esas.

Poniendo todo junto

Recuerda que debe existir el siguiente archivo con el mismo nombre y contenido en donde ejecutes el programa:

Anteriormente te mostré las funciones más importantes para este sistema de banco en ANSI C, ahora veamos el código completo que incluye los métodos para solicitar datos, validar, etcétera.

Compila como un encanto en Windows con GCC y me imagino que funciona en DevC++ y cosas de esas, aunque yo siempre recomiendo un compilador actualizado y compilar manualmente con: gcc -Wall banco.c -o banco.exe para luego ejecutar con ./banco.exe

Para terminar te dejo con más tutoriales de C en mi blog.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 5,522 suscriptores

parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

1 Comentario

Carlos · septiembre 10, 2022 a las 6:55 am

Me gustaría que publicarlas también en java
Muchas gracias

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada.

A %d blogueros les gusta esto: