Categories:

Se trata de un cajero creado en el lenguaje Python, usando programación orientada a objeto. En el código se encontrará la clase cajero, la cual estará conformada por los atributos nombre, identificación, saldo y donaciones; además, en la clase mencionada se encuentran los métodos retirar, carga, donaciones, mos_don, saldo, consignar y proceso.

Al realizar un análisis del código se verá que algunos atributos se encuentran encapsulados, al igual que el método proceso y que el método __init__, constructor de la clase, inicializa los atributo.

El programa tiene un archivo adicional llamado ‘datos002.txt’, en el que se encuentran los valores iniciales y donde se guardan los nuevos valores, después de que los usuarios realizan sus transacciones.

El contenido del archivo ‘datos002.txt’ hace referencia a los números de cuentas, saldo y donaciones, como se muestra a continuación:

85460123 1300000 50000

86456321 1200000 20000

56897001 500000 10000

La aplicación tendrá el nombre de ‘Cajero2020.py’ y podrá probarse en un ID para Python, que permita probar el código que adicionemos.

Por último, recuerde que los dos archivos deberán estar en la misma carpeta.

A continuación, se mostrarán pantallazos de su funcionamiento:

Este reto consiste en completar el código para que el menú del programa funcione. Se deben utilizar listas y métodos de clase, para que el programa calcule y almacene los datos en el archivo auxiliar.

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

“””

Created on Sun Oct 25 15:33:26 2020

@author: waldo

“””

“”” Programa que simula un cajero electronico usando Objetos “””

”’Inicio del programa”’

#Inicio de la clase Cajero

class cajero():

    def __init__(self):

        self.__nombre = “”

        self.__identificacion = “”

        self.__saldo = 0

        self.__donaciones = 0

    def retirar(self):

        monto = int(input(“Escriba el valor a retirar: \n”))

        resp = input(“Está seguro, que desea realizar el retiro (s/n).. \n”)

        if resp==’s’:

            return self.__proceso(monto,’retiro’)

        else:

            print(“Ha cancela do la transacción, que tenga buen día.\n”)

    def carga(self, identificacion, saldo, donaciones):

        self.__saldo = int(saldo)

        self.__identificacion = identificacion

        self.__donaciones = int(donaciones)

    def donaciones(self):

        print(“Para realizar su donación, tenga en cuenta que: el mínimo es de 10000 y el máximo de 50000 \n”)

        monto = int(input(“Que valor desea donar? \n”))

        if monto>=10000 and monto<=50000 and monto<self.__saldo:

            opc = input(“Confirma su donación (s/n).. \n”)

            if opc==’s’:

                return self.__proceso(monto, ‘donacion’)

            else:

                print(“Proceso cancelado por el usuario.. \n”)

        else:

            print(“El valor no cumple con las condiciones o usted, no cuenta con saldo suficiente.”)

    def mos_don(self):

        print(f”Sus donaciones, suman un valor de:{self.__donaciones} \n”)

    def consignar(self):

        monto = int(input(“Escriba el valor a consignar: \n”))

        conf = input(“Esta seguro que desea realizar la consignación (s/n)…”)

        if conf==’s’:

            p = self.__proceso(monto, ‘consignacion’)

            return p

        else:

            print(“Consignación cancelada por el usuario..\n”)

    def saldo(self):

        self.__proceso(0,’saldo’)

    def __proceso(self, monto, op):

        if op==’consignacion’:

            self.__saldo += monto

            print(f”El valor consignado es de {monto} pesos\n”)

            return self.__saldo

        if op==’retiro’:

            if self.__saldo>=monto:

                self.__saldo -= monto

                print(f”Su retiro es de {monto} y su nuevo saldo es: {self.__saldo} \n”)

                return self.__saldo

            else:

                print(“No hay saldo suficiente, para realizar su transacción \n”)

                return self.__saldo

        if op==’saldo’:

                print(f”En la actualidad, su saldo es de: {self.__saldo} \n”)

        if op==’donacion’:

            self.__saldo -= monto

            self.__donaciones += monto

            print(“Su donación, fue realizada con exito.. \n”)

            return self.__donaciones

”’Fin de la clase Cajero”’       

clientes = []      #Inicialización de variable tipo lista

with open(‘datos002.txt’, ‘r’) as f: #Apertura de archivo datos002.txt

    clientes = [linea.split() for linea in f]#Conversión de lineas de texto en tokens que se van adicionando a la lista clientes

print(clientes)#Impresión de los datos de la lista Clientes

cjro = cajero() #Definicion de variable objeto – Instancia de la clase cajero

cjro.saldo() #Llamada al método saldo de el objeto cjro

sw2 = 0

#Inicio del ciclo de lectura de datos

while sw2==0:

    usuario = input(“Ingrese la identificación de usuario:”)

    contador = 0

    for i in clientes:

        if i[0]==usuario:

            sw=0

            cjro.carga(i[0], i[1], i[2])

            break

        contador += 1   

    while sw==0:

        print(“1. Para realizar una consignación”)

        print(“2. Para realizar un retiro”)

        print(“3. Para mirar el saldo”)

        print(“4. Para realizar donación”)

        print(“5. Para mostrar donación”)

        print(“6. Para Salir..”)

        print(“Digite una Opción:”, end=””)

        opc = int(input())

        ‘’’

                En este espacio se deberán colocar las instrucciones que permitan realizar lo que está descrito en el menú del programa, y una vez el programa termine, los datos que se guardan en el archivo deberán tener coherencia con las transacciones realizadas.

        ‘’’

    ops = input(“Usted desea trabajar otro usuario?  (s/n)…”)

    if ops==’s’:

        sw2 = 0

    else:

        sw2 = 1

#Escritura en archivo datos002.txt   

f = open(‘datos002.txt’, ‘w’)

for i in clientes:

    cad = str(i[0]) + ‘ ‘ + str(i[1]) + ‘ ‘ + str(i[2])

    f.write(cad + “\n”)

f.close()     

”’Fin del programa”’

Tags:

4 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Comentarios recientes

0
Would love your thoughts, please comment.x
()
x