Simulación Cajero Automático
Autor : René Curín
Competencia : Desarrollo de software (nivel 1)
Asignatura: Programación 1
Palabras clave: Programación, Funciones, Python
Descripción de la actividad
Durante el desarrollo de esta actividad comprendí el uso de las funciones en los programas, las que facilitan enormemente el trabajo de la programación. Además mejore las técnicas de programación ya que requerían de una lógica mas avanzada para realizar un código mas corto y simple de escribir
En esta actividad debíamos crear una especie de simulación de cajero automático, donde debía tener las funciones básicas que contiene un cajero automático como depositar dinero, girar dinero, transferencias, además de pedir una clave de ingreso y alertar al usuario si entre las cuentas contiene alguna con valor negativo.
Este programa debía funcionar correctamente para que el usuario pudiera volver atrás o cancelar alguna situación en la que se encontrara, por lo cual esto ayudo mucho a la utilización de ciclos y el uso de condiciones.
El enunciado de la actividad es el siguiente:
Elabore una solución computacional en python para simular el funcionamiento de un cajero automático. La situación a simular es un cliente que usa el cajero automático. El usuario tiene 3 cuentas bancarias del mismo banco: como cuenta rut, cuenta corriente, cuenta vista.
El cajero debe:
-Permitir el ingreso de una clave de acceso y validarla con la contraseña que haya en el sistema, permitiendo o no el acceso al sistema de cuentas bancarias del usuario. Si la contraseña fuera no válida, se puede reingresar hasta tres veces, después de lo cual si la clave correcta no ha sido ingresada se sale del sistema.
-Permitir ver los montos de dinero existente en cada cuenta (el saldo de cada cuenta).
-Mostrar una advertencia al usuario al ingresar a la pantalla principal de opciones si es que en alguna cuenta hubiera un saldo negativo, mencionar en que cuentas se debe dinero y el monto que se debe en total.
-Poder realizar transferencias de dinero de una cuenta a otra a petición del usuario.
-Permitir realizar giros de una cuenta específica y generar automáticamente la substracción en el saldo de la cuenta respectiva.
-Poder realizar un deposito de dinero por buzón por parte del usuario y generar automáticamente incremento en el saldo de la cuenta respectiva.
-Permitir salir del sistema.
-Permitir trabajar en el cajero automático cuantas veces sea necesario, dejando todas las alternativas de acciones antes vistas accesibles.
Ademas debíamos implementar ciertos métodos que debíamos usar al momento de realizar una solución al problema, y los que necesitamos eran los siguiente:
-Variables
-Tipos de datos
-Estructura de secuencias
-Diagramas de flujos
-Ciclos
-Condicionales simples y anidados
-Manejo de cadenas
-Programación en Python
Herramientas usadas
Python
Ide Ninja
Solución de la actividad
Pseudocodigo
Funcion x <- deposito(x)
Escribir "Ingrese monoto a depositas"
leer n
x <- x + n
FinFuncion
Funcion x <- giro(x)
Escribir "Ingrese monoto a girar"
leer n
x <- x - n
FinFuncion
Funcion trans(x,i)
Escribir "Ingrese monoto a trasnferir"
Leer n
x <- x - n
i <- i + n
FinFuncion
Funcion n <- seleccion()
escribir "Que desea hacer?"
escribir "1 Deposito, 2 Giro, 3 Transferencia"
leer n
FinFuncion
Funcion n <- selec_cuenta()
Escribir "1 Cuenta Rut, 2 Cuenta Corriente, 3 Cuenta vista"
Leer n
FinFuncion
Funcion m <- cuentaTrans(x)
m <- ""
Si x == 1
Escribir "1 Cuenta Corriente, 2 Cuenta Vista"
Leer m
FinSi
Si x == 2
Escribir "1 Cuenta Rut, 2 Cuenta Vista"
Leer m
FinSi
SI x == 3
Escribir "Cuenta Corriente, 2 Cuenta Rut"
Leer m
FinSi
FinFuncion
Funcion x <-salir(x)
Escribir "Desea Otra Operacion"
Escribir "1 Si, 2 No"
Leer n
Si n == "1"
x <- Verdadero
FinSi
Si n == "2"
x <-Falso
FinSi
FinFuncion
paswd <- 0
saldo_rut <- 0
saldo_corriente <- 0
saldo_vista <- 0
cont <- 3
Proceso sin_titulo
Mientras cont > 0
Escribir "Ingrese su clave secreta: "
leer pas
si paswd = pas entonces
z <- Verdadero
Mientras z == Verdadero
Si saldo_rut < 0
Escribir "Saldo negativo en Cuenta Rut, Saldo: $", saldo_rut
FinSi
Si saldo_corriente < 0
Escribir "Saldo negativo en Cuenta Corriente, Saldo: $", saldo_corriente
FinSi
Si saldo_vista < 0
Escribir "Saldo negativo en Cuenta Vista, Saldo: $", saldo_vista
FinSi
Escribir "Seleccione una cuenta:"
cuenta <- selec_cuenta()
si cuenta == "1"
escribir "Su saldo actual es de $", saldo_rut
n <- seleccion()
si n == "1" entonces
saldo_rut <- deposito(saldo_rut)
Finsi
si n == "2"
saldo_rut <- giro(saldo_rut)
FinSi
si n == "3"
x <- 2
n <- cuentaTrans(x)
si n == "1" entonces
saldo_rut, saldo_corriente <- trans(saldo_rut, saldo_corriente)
Sino n=="2"
saldo_rute, saldo_vista <- trans(saldo_rut, saldo_vista)
FinSi
FinSi
Escribir "Su saldo actual es de $", saldo_rut
z <- salir(z)
FinSi
si cuenta == "2"
escribir "Su saldo actual es de $", saldo_corriente
n <- seleccion()
si n == "1" entonces
ssaldo_corriente <- deposito(saldo_corriente)
Finsi
si n == "2"
saldo_corriente <- giro(saldo_corriente)
FinSi
si n == "3"
x <- 2
n <- cuentaTrans(x)
si n == "1" entonces
saldo_corriente, saldo_rut = trans(saldo_corriente, saldo_rut)
Sino n=="2"
saldo_corriente, saldo_vista = trans(saldo_corriente, saldo_vista)
FinSi
FinSi
Escribir "Su saldo actual es de $", saldo_vista
z <- salir(z)
si cuenta == "3"
escribir "Su saldo actual es de $", saldo_rut
n <- seleccion()
si n == "1" entonces
saldo_vista = deposito(saldo_vista)
Finsi
si n == "2"
saldo_vista = giro(saldo_vista)
FinSi
si n == "3"
x <- 2
n <- cuentaTrans(x)
si n == "1" entonces
saldo_vista, saldo_corriente = trans(saldo_vista, saldo_corriente)
Sino n=="2"
saldo_vista, saldo_rut = trans(saldo_vista, saldo_rut)
FinSi
FinSi
Escribir "Su saldo actual es de $", saldo_vista
z <- salir(z)
FinSi
FinSi
cont <- -1
FinMientras
Sino
cont <- cont -1
Escribir "Clave incorrecta - Intentos restantes ", cont
FinSi
FinMientras
si cont == 0
Escribir "Tarjeta bloqueada, Porfavor Acerquese a nuestras oficinas lo antes posible"
FinSi
si cont == -1
Escribir "Gracias por preferir nuestros servicios!"
FinSi
FinProceso
Código Fuente:
paswd = "1234" #esta es la contraseña 1234
saldo_rut = 0
saldo_corriente = 0
saldo_vista = 0
def deposito(x):
n = int(input("Ingrese monto a depositar: "))
x = x + n
return x
def giro(x):
n = int(input("Ingrese monto a girar: "))
x = x - n
return x
def trans(x,y):
n = int(input("Ingrese monto a transferir: "))
x = x - n
y = y + n
return x, y
def seleccion():
print "Que desea hacer?"
print "1 Deposito, 2 Giro, 3 Transferencia"
n = raw_input()
return n
def selec_cuenta():
print "1 Cuenta Rut, 2 Cuenta Corriente, 3 Cuenta vista"
n = raw_input()
return n
def cuentaTrans(x):
m = ""
if x == 1:
print "1 Cuenta Corriente, 2 Cuenta Vista"
m = raw_input()
if x == 2:
print "1 Cuenta Rut, 2 Cuenta Vista"
m = raw_input()
if x == 3:
print "Cuenta Corriente, 2 Cuenta Rut"
m = raw_input()
return m
def salir(x):
print "Desea Otra Operacion"
print "1 Si, 2 No"
n = raw_input()
if n == "1":
x = True
return x
elif n == "2":
x = False
return x
cont = 3
while cont > 0:
pas = raw_input("Ingrese su clave secreta: ")
if paswd == pas:
z = True
while z == True:
if saldo_rut < 0:
print "Saldo negativo en Cuenta Rut, Saldo: $", saldo_rut
if saldo_corriente < 0:
print "Saldo negativo en Cuenta Corriente, Saldo: $", saldo_corriente
if saldo_vista < 0:
print "Saldo negativo en Cuenta Vista, Saldo: $", saldo_vista
print "Seleccione una cuenta:"
cuenta = selec_cuenta() # Selecciona la cuenta
#-------------------------Cuenta Rut-------------------------->
if cuenta == "1":
print "Su saldo actual es de $", saldo_rut
n = seleccion() # Elije deposito, Giro o Transferencia
if n == "1":
saldo_rut = deposito(saldo_rut) # Aqui deposita a la cuenta Rut
elif n == "2":
saldo_rut = giro(saldo_rut) # Aqui Hace un giro a la cuenta rut
elif n == "3":
x = 1
n = cuentaTrans(x) # Selecciona la cuenta a la cual quiere transferir
if n == "1":
saldo_rut, saldo_corriente = trans(saldo_rut, saldo_corriente)
elif n == "2":
saldo_rute, saldo_vista = trans(saldo_rut, saldo_vista)
print "Su saldo actual es de $", saldo_rut
z = salir(z)
#------------------------- Fin Cuenta Rut----------------------------->
#-------------------------Cuenta Corriente----------------------->
elif cuenta == "2":
print "Su saldo actual es de $", saldo_corriente
n = seleccion() # Elije deposito, Giro o Transferencia
if n == "1":
saldo_corriente = deposito(saldo_corriente) # Aqui deposita a la cuenta corritente
elif n == "2":
saldo_corriente = giro(saldo_corriente) # Aqui hace un giro a la cuenta corriente
elif n == "3":
x = 2
n = cuentaTrans(x) # Selecciona la cuenta a la cual quiere transferir
if n == "1":
saldo_corriente, saldo_rut = trans(saldo_corriente, saldo_rut)
elif n == "2":
saldo_corriente, saldo_vista = trans(saldo_corriente, saldo_vista)
print "Su saldo actual es de $", saldo_corriente
z = salir(z)
#-------------------------Fin Cuenta Rut---------------------->
#-------------------------Cuenta Vista------------------------>
elif cuenta == "3":
print "Su saldo actual es de $", saldo_vista
n = seleccion() # Elije deposito, Giro o Transferencia
if n == "1":
saldo_vista = deposito(saldo_vista) # Aqui deposita a la cuenta Vista
elif n == "2":
saldo_vista = giro(saldo_vista) # Aqui deposita a la cuenta Vista
elif n == "3":
x = 3
n = cuentaTrans(x) # Selecciona la cuenta a la cual quiere transferir
if n == "1":
saldo_vista, saldo_corriente = trans(saldo_vista, saldo_corriente)
elif n == "2":
saldo_vista, saldo_rut = trans(saldo_vista, saldo_rut)
print "Su saldo actual es de $", saldo_vista
z = salir(z)
#-------------------------Fin Cuenta Rut--------------------->
cont = -1
else:
cont -= 1
print "Clave incorrecta - Intentos restantes ", cont
if cont == 0:
print "Tarjeta bloqueada, Porfavor Acerquese a nuestras oficinas lo antes posible"
if cont == -1:
print "Gracias por preferir nuestros servicios - Banco Pobre!"
Como vemos el cuerpo del código esta casi completamente dentro de un ciclo while, esto es para poder terminar el código y verificar si el usuario cerrara la sesión o bloqueo la tarjeta producto de ingresar muchas veces la contraseña incorrecta.
Un ejemplo del funcionamiento completo
De que me sirvió esta actividad
Principalmente me sirvió para comprender mejor el uso de las condiciones de pregunta como son los IF, manejar ciclos para mantener un tipo de seguridad en la parte de la contraseña y sobre todo a entender como funcionan y utilizan las funciones, comprendí el funcionamiento básico de lo que es la programación, ya que desde un comienzo no había logrado obtener la lógica de la programación, pero con este proyecto la desarrolle y trabaje, a demás me di cuenta de como funciona un sistema mirándolo desde adentro, como un programador y no como un usuario: Fue un gran aporte para mi conocimiento el realizar esta actividad ya que tuve que investigar por mi propia cuenta algunas funciones o formas de desarrollar una solución para los diversos problemas que se me iban presentando.
No hay comentarios:
Publicar un comentario