sábado, 24 de septiembre de 2016

CAJERO AUTOMÁTICO

Autor:

Rafael Fuentealba

Competencia:

Desarrollo de Software (Nivel 1)

Asignatura:

Programación I



Palabras Claves:

Python, Spyder, Cajero, Cuenta rut, Cuenta vista, Cuenta corriente, depósito, transacción, consulta de saldo.



Descripción de la Actividad:

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 sustracció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.


Solución:

Para dar solución al problema del cajero automático se elaboró el siguiente programa en lenguaje Python:


# -*- coding: utf-8 -*-
print "-----------------".center(110, " ")
print "CAJERO AUTOMATICO".center(110, " ")
print "-----------------".center(110, " ")
j= raw_input("Presione ENTRAR para comenzar".center(110, " "))
import random
import sys
m=0
clave=1998 #clave de cuentas
limite= 2 #mostrará cuantos intentos van quedando
intentos= 2 #intentos para la condición del while
cuenta_rut= 50000 #saldo cuenta rut
n_cuentarut= 123 #numero de cuenta rut
cuenta_vista= 1500000 #saldo cuenta vista
n_cuentavista= 456 #numero de cuenta vista
cuenta_corriente= random.randint(-9999999999,9999999999) #saldo de cuenta corriente
n_cuentacorr= 789 #numero de cuenta corriente
print"Deslice tarjeta"
print"Digite su clave:\n"
ingreso=int(raw_input(""))

while(intentos>=1):

   # COMPROBACIÓN DE CLAVE
    if ingreso==clave:
        m = 1
        
        print" "
        print"El saldo disponible en cuenta rut es de $" +str(cuenta_rut)
        print"El saldo disponible en cuenta vista es de $"+str(cuenta_vista)
        print"El saldo disponible en cuenta corriente es de $"+str(cuenta_corriente)
        print" "
        if cuenta_rut<0:
            deudarut= cuenta_rut * - 1
            print"Usted tiene un saldo negativo en su cuenta rut, debe un total de $"+str(deudarut)
            print" "
        if cuenta_vista<0:
            deudavista= cuenta_vista * - 1
            print"Usted tiene un saldo negativo en su cuenta vista, debe un total de $"+str(deudavista)
            print" "
        if cuenta_corriente<0:
            deudacorriente= cuenta_corriente * - 1
            print"Usted tiene un saldo neagtivo en su cuenta corriente, debe un total de $"+str(deudacorriente)
            print" "
    
        tipocuenta= int(raw_input("Escoga una cuenta:\n"
                              "1 . Cuenta rut\n"
                              "2 . Cuenta vista\n"
                              "3 . Cuenta corriente\n"
                              "4 . Salir del sistema\n"))
    #SE TRABAJA CON CUENTA RUT
        while tipocuenta == 1: 
            print("Que desea hacer:\n")
            print("1 . Depositar ")
            print("2 . Transferir dinero a otra cuenta ")
            print("3 . Realizar giro ")
            print("4 . Consultar saldo\n")
            tipoaccion= int(raw_input("Escoger accion a realizar:\n"))
            #ESCOGER ACCIÓN A REALIZAR

            #Depósito
            if tipoaccion==1:  
                montodep= int(raw_input("Ingresar monto a depositar:\n"))
                cuenta_rut= cuenta_rut + montodep
                print" "
                print"Accion realizada exitosamente"
                print"Saldo actualizado"
                print"Su nuevo saldo en cuenta rut es de $"+str(cuenta_rut)
                print" "
            #Transferir
            if tipoaccion==2:
                selcuenta1= int(raw_input("Ingresar numero de cuenta a transferir:\n"))
                selmonto1= int(raw_input("Ingresar monto a transferir\n"))
                print" "
                if cuenta_rut==0:
                    print"No se puede ejecutar accion, saldo insuficiente"
                    print" "
                if cuenta_rut<selmonto1:
                    print"No se puede ejecutar accion, saldo insuficiente"
                    print" "
                if cuenta_rut>=selmonto1:
                    print"Accion realizada exitosamente"
                    print" "
                    if selcuenta1==n_cuentavista:
                        n_cuentavista= n_cuentavista + selmonto1
                        print"Saldo actualizado en cuenta vista $"+str(cuenta_vista)
                        cuenta_rut= cuenta_rut - selmonto1
                        print"Saldo restante en cuenta rut es $"+str(cuenta_rut)
                        print" "
                    if selcuenta1==n_cuentacorr:
                        n_cuentacorr= n_cuentacorr + selmonto1
                        print"Saldo actualizado en cuenta corriente $"+str(cuenta_corriente)
                        cuenta_rut= cuenta_rut - selmonto1
                        print"Saldo restante en cuenta rut es $"+str(cuenta_rut)
                        print" "
                
            #Giro
            if tipoaccion==3:
                if cuenta_rut>0:
                    print" "
                    print"Opciones de giro:"
                    print"1 . $5000                      2 . $15000"
                    print"3 . $25000                     4 . $50000"
                    print"5 . Otro monto\n"
                    opcion= int(raw_input("Escoger una opción:\n"))
                    print" "
                    if opcion==1:
                        cuenta_rut= cuenta_rut - 5000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_rut)
                        print" "
                    if opcion==2:
                        cuenta_rut= cuenta_rut - 15000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_rut)
                        print" "
                    if opcion==3:
                        cuenta_rut= cuenta_rut - 25000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_rut)
                        print" "
                    if opcion==4:
                        cuenta_rut= cuenta_rut - 50000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_rut)
                        print" "
                    if opcion==5:
                        montogirar= int(raw_input("Ingresar otro monto a girar:\n"))
                        print" "
                        if cuenta_rut>=montogirar:
                            print"Accion realizada exitosamente"
                            cuenta_rut= cuenta_rut - montogirar
                            print"Saldo restante en cuenta rut es $"+str(cuenta_rut)
                            print" "
                        else:
                            print"No se puede realizar accion, saldo insuficiente"
                            print" "
                else:
                    print"No es posible realizar el giro, saldo insuficiente"
                    print" "

            #Consultar saldo
            if tipoaccion==4:
                if cuenta_rut<0:
                    print"Usted debe $"+str(cuenta_rut)
                    print" "
                if cuenta_rut>=0:
                    print" "
                    print"Saldo disponible en cuenta rut es $"+str(cuenta_rut)
                    print" "
            
            print"¿Desea realizar otra accion en esta cuenta?"
            print"1 . Si "
            print"2 . No\n"
            otraaccion= int(raw_input("Ingresar opcion:\n"))
            if otraaccion == 1:
                tipocuenta = 1
            if otraaccion == 2:
                print" "
                print("¿Desea salir de la cuenta y trabajar en otra?")
                print" "
                print"Presione 1 para salir de la cuenta"
                print" "
                tecla= int(raw_input("Ingresar opcion:\n"))
                print" "
                tipocuenta= int(raw_input("Escoga una cuenta\n"
                                          "1 . Cuenta rut\n"
                                          "2 . Cuenta vista\n"
                                          "3 . Cuenta corriente\n"
                                          "4 . Salir del sistema\n"))
    
             
        #SE TRABAJA CON CUENTA VISTA
        while tipocuenta == 2: 
            print("Que desea hacer:\n")
            print("1 . Depositar ")
            print("2 . Transferir dinero a otra cuenta ")
            print("3 . Realizar giro ")
            print("4 . Consultar saldo\n")
            tipoaccion= int(raw_input("Escoger accion a realizar:\n"))
            print" "

            #Depósito
            if tipoaccion==1:  
                montodep= int(raw_input("Ingresar monto a depositar:\n"))
                cuenta_vista= cuenta_vista + montodep
                print" "
                print"Accion realizada exitosamente"
                print"Saldo actualizado"
                print"Su nuevo saldo en cuenta vista es de $"+str(cuenta_vista)
                print" "

            #Transferir
            if tipoaccion==2:
                selcuenta2= int(raw_input("Ingresar numero de cuenta a transferir:\n"))
                selmonto2= int(raw_input("Ingresar monto a transferir:\n"))
                print" "
                if cuenta_vista==0:
                    print"No se puede ejecutar accion, saldo insuficiente"
                    print" "
                if cuenta_vista<selmonto2:
                    print"No se puede ejecutar accion, saldo insuficiente"
                    print" "
                if cuenta_vista>=selmonto2:
                    print"Accion realizada exitosamente"
                    print" "
                    if selcuenta2==n_cuentarut:
                        n_cuentarut= n_cuentarut + selmonto2
                        print"Saldo actualizado en cuenta rut $"+str(cuenta_rut)
                        cuenta_vista= cuenta_vista - selmonto2
                        print"Saldo restante en cuenta vista es $"+str(cuenta_vista)
                        print" "
                    if selcuenta2==n_cuentacorr:
                        n_cuentacorr= n_cuentacorr + selmonto2
                        print"Saldo actualizado en cuenta corriente $"+str(cuenta_corriente)
                        cuenta_vista= cuenta_vista - selmonto2
                        print"Saldo restante en cuenta vista es $"+str(cuenta_vista)
                        print" "
            
            #Giro
            if tipoaccion==3:
                if cuenta_vista>0:
                    print" "
                    print"Opciones de giro:"
                    print"1 . $5000                      2 . $15000"
                    print"3 . $25000                     4 . $50000"
                    print"5 . Otro monto\n"
                    opcion= int(raw_input("Escoger una opción:\n"))
                    print" "
                    if opcion==1:
                        cuenta_vista= cuenta_vista - 5000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_vista)
                        print" "
                    if opcion==2:
                        cuenta_vista= cuenta_vista - 15000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_vista)
                        print" "
                    if opcion==3:
                        cuenta_vista= cuenta_vista - 25000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_vista)
                        print" "
                    if opcion==4:
                        cuenta_vista= cuenta_vista - 50000
                        print"Accion realizada exitosamente"
                        print"Saldo restante: $"+str(cuenta_vista)
                        print" "
                    if opcion==5:
                        montogirar= int(raw_input("Ingresar otro monto a girar:\n"))
                        print" "
                        if cuenta_vista>=montogirar:
                            print"Accion realizada exitosamente"
                            cuenta_vista= cuenta_vista - montogirar
                            print"Saldo restante en cuenta vista es $"+str(cuenta_vista)
                            print" "
                        else:
                            print"No se puede realizar accion, saldo insuficiente"
                            print" "
                else:
                    print"No es posible realizar el giro, saldo insuficiente"
                    print" "
        
            #Consultar saldo
            if tipoaccion==4:
                if cuenta_vista<0:
                    print"Usted debe $"+str(cuenta_vista)
                    print" "
                if cuenta_vista>=0:
                    print"Saldo disponible en cuenta vista es $"+str(cuenta_vista)
                    print" "
    
            print"¿Desea realizar otra accion en esta cuenta?"
            print"1 . Si "
            print"2 . No\n"
            otraaccion= int(raw_input("Ingresar opcion:\n"))
            if otraaccion == 1:
                tipocuenta = 2
            if otraaccion == 2:
                print" "
                print("¿Desea salir de la cuenta y trabajar en otra?")
                print" "
                print"Presione 1 para salir de la cuenta"
                print" "
                tecla= int(raw_input("Ingresar opcion:\n"))
                print" "
                tipocuenta= int(raw_input("Escoga una cuenta\n"
                                          "1 . Cuenta rut\n"
                                          "2 . Cuenta vista\n"
                                          "3 . Cuenta corriente\n"
                                          "4 . Salir del sistema\n"))
    
        #SE TRABAJA CON CUENTA CORRIENTE
        while tipocuenta == 3: 
                print("Que desea hacer:\n")
                print("1 . Depositar ")
                print("2 . Transferir dinero a otra cuenta ")
                print("3 . Realizar giro ")
                print("4 . Consultar saldo\n")
                tipoaccion= int(raw_input("Escoger accion a realizar:\n"))
                print" "
    
                #Depósito
                if tipoaccion==1:  
                    montodep= int(raw_input("Ingresar monto a depositar:\n"))
                    cuenta_corriente= cuenta_corriente + montodep
                    print" "
                    print"Accion realizada exitosamente"
                    print"Saldo actualizado"
                    print"Su nuevo saldo en cuenta corriente es de $"+str(cuenta_corriente)
                    print" "

                #Transferir
                if tipoaccion==2:
                    selcuenta3= int(raw_input("Ingresar numero de cuenta a transferir:\n"))
                    selmonto3= int(raw_input("Ingresar monto a transferir:\n"))
                    print" "
                    if cuenta_corriente==0:
                        print"No se puede ejecutar accion, saldo insuficiente"
                        print" "
                    if cuenta_corriente<selmonto3:
                        print"No se puede ejecutar accion, saldo insuficiente"
                        print" "
                    if cuenta_corriente>=selmonto3:
                        print"Accion realizada exitosamente"
                        print" "
                        if selcuenta3==n_cuentarut:
                            n_cuentarut= n_cuentarut + selmonto3
                            print"Saldo actualizado en cuenta rut $"+str(cuenta_rut)
                            cuenta_corriente= cuenta_corriente - selmonto3
                            print"Saldo restante en cuenta corriente es $"+str(cuenta_corriente)
                        if selcuenta3==n_cuentavista:
                            n_cuentavista= n_cuentavista + selmonto3
                            print"Saldo actualizado en cuenta vista $"+str(cuenta_vista)
                            cuenta_corriente= cuenta_corriente - selmonto3
                            print"Saldo restante en cuenta corriente es $"+str(cuenta_corriente)
                            print" "

                #Giro
                if tipoaccion==3:
                    if cuenta_corriente>0:
                        print"Opciones de giro:"
                        print"1 . $5000                      2 . $15000"
                        print"3 . $25000                     4 . $50000"
                        print"5 . Otro monto\n"
                        opcion= int(raw_input("Escoger una opción:\n"))
                        print" "
                        if opcion==1:
                            cuenta_corriente= cuenta_corriente - 5000
                            print"Accion realizada exitosamente"
                            print"Saldo restante: $"+str(cuenta_corriente)
                            print" "
                        if opcion==2:
                            cuenta_corriente= cuenta_corriente - 15000
                            print"Accion realizada exitosamente"
                            print"Saldo restante: $"+str(cuenta_corriente)
                            print" "
                        if opcion==3:
                            cuenta_corriente= cuenta_corriente - 25000
                            print"Accion realizada exitosamente"
                            print"Saldo restante: $"+str(cuenta_corriente)
                            print" "
                        if opcion==4:
                            cuenta_corriente= cuenta_corriente - 50000
                            print"Accion realizada exitosamente"
                            print"Saldo restante: $"+str(cuenta_corriente)
                            print" "
                        if opcion==5:
                            montogirar= int(raw_input("Ingresar otro monto a girar:\n"))
                            print" "
                            if cuenta_corriente>=montogirar:
                                print"Accion realizada exitosamente"
                                cuenta_corriente= cuenta_corriente - montogirar
                                print"Saldo restante en cuenta corriente es $"+str(cuenta_corriente)
                            else:
                                print"No se puede realizar accion, saldo insuficiente"
                                print" "
                    else:
                        print"No es posible realizar el giro, saldo insuficiente"
                        print" "

                #Consultar saldo
                if tipoaccion==4:
                    if cuenta_corriente<0:
                        print"Usted debe $"+str(cuenta_corriente)
                        print" "
                    if cuenta_corriente>=0:
                        print"Saldo disponible en cuenta corriente es $"+str(cuenta_corriente)
                        print" "
    
                print"¿Desea realizar otra accion en esta cuenta?"
                print"1 . Si "
                print"2 . No"
                print" "
                otraaccion= int(raw_input("Ingresar opcion:\n"))
                if otraaccion == 1:
                    tipocuenta = 3
                if otraaccion == 2:
                    print" "
                    print("¿Desea salir de la cuenta y trabajar en otra?")
                    print" "
                    print"Presione 1 para salir de la cuenta"
                    print" "
                    tecla= int(raw_input("Ingresar opcion:\n"))
                    print" "
                    tipocuenta= int(raw_input("Escoga una cuenta\n"
                                              "1 . Cuenta rut\n"
                                              "2 . Cuenta vista\n"
                                              "3 . Cuenta corriente\n"
                                              "4 . Salir del sistema\n"))
        
        if tipocuenta!=4:
            m=1
        if tipocuenta == 4:
            print" "
            print"Que tenga buen día, hasta pronto"
            break
       
    if ingreso != clave:
        print" "
        print"Clave errónea. Intentos restantes:", limite
        print" "
        intentos= intentos - 1
        ingreso= ingreso = int(raw_input("Ingrese denuevo su contaseña:\n"))
        limite= limite - 1
        
        if intentos == 0 and clave!=ingreso:
            print" "            
            print"Clave incorrecta"
            print"Usted ha excedido el número de intentos permitidos"
            print"Su tarjeta ha sido bloqueada"
            print"Por favor contactarse con el banco"
            print" " 
        
        if intentos == 0 and clave == ingreso:
            m=1



Reflexión:

El desarrollo de software es un trabajo muy sofisticado que requiere de bastante concentración, paciencia y por sobre todo inteligencia, puesto que el producto debe funcionar para dar solución a la vida del hombre, utilizándose como una herramienta de ayuda eficaz y confiable. Esta actividad por sí sola detalla aquellos rasgos que he mencionado porque me ha permitido desarrollar en cierta forma la funcionalidad del típico cajero automático. Ciertamente no es un cajero que cumpla con la función total y absoluta que es trabajar con dinero físico, pero sí responde a la mayoría de las acciones que un usuario necesita de este tipo de máquinas o herramientas.

No hay comentarios:

Publicar un comentario