Sinu 152 - Trabajo Final 1 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

Trabajo Final del

Curso

Introducción a
las Tecnologías
de la Información

Tecnologías de la
Información
Introducción a las Tecnologías de la Información

TEMA: Mejora de la Programación del cajero automático de Nuevo Perú Bank

OBJETIVO GENERAL
Al finalizar el módulo formativo, el estudiante tendrá los conocimientos y
práctica necesaria para el entendimiento e identificación de los recursos
tecnológicos de las tecnologías de la información.

DESCRIPCIÓN DE LA TAREA / OPERACIONES


El presente proyecto, busca el planteamiento de propuestas de los
participantes durante el módulo a desarrollar. Estas se fundamentarán con
el conocimiento de las tareas con sus respectivas operaciones que se
describen a continuación:

1. Nociones Básicas de Informática.


 Reconocer tipos de ordenadores, periféricos entrada/salida y
elementos del hardware y software.
 SO Windows y sus herramientas.
 Uso de carpetas, archivos, crear documentos y como
ejecutar un programa.

2. Reconocer las diferentes redes de computadoras e internet.


 Reconocer la importancia y uso del E-mail.
 Reconocer las redes sociales.
 Reconocer las comunidades virtuales y las herramientas en la web.

3. Conocer los problemas comunes de los equipos informáticos.


 Conocer los problemas comunes de los equipos informáticos.

4. La Activación de E- Business: ¿Qué es E- Business?


 Elaborar una lista de herramientas E-Business como
solución a un problema.
 Elaborar una lista de elementos que conforman el Estados
contables de una empresa.
 Elaborar una página web usando un gestor de contenido (Wix,
WordPress, Joomla)

5. Cómo prestar servicios tercerizados y Cómo crear una empresa


de contratación
 Elaborar un contrato y sus cláusulas.
 Elaborar y definir los Tipos de contratos.
6. Conceptos Generales y terminologías de programación.
 ¿Qué es Python? e identificar editores para Python - "IDLE"
Introducción a las Tecnologías de la Información
 Reconocer estructura de un programa, crear, editar, almacenar.
 Conocer el procedimiento en ejecutar líneas de código.
Introducción a las Tecnologías de la Información

 Encabezados, Descripción, Comentario, identificación.


7. Usar el IDLE para estructurar un programa ejecutando líneas de códigos.
 Identificar los Tipos de Datos, variables y operadores matemáticos
 Operaciones básicas de salida-entrada datos. (Print, Input).
8. Estructura de control condicional.
 Estructura de control condicional IF.
 Estructura de control condicional IF.ELSE.
 Estructura de control condicional F..ELIF..ELSE.

9. Estructura de control repetitivas – Arreglos y lista de datos.


 Bucle For.
 Bucle While.

10. Definiendo Funciones usando DEF.


 Diferentes formas de pasar argumentos y parámetros.
 Enviando valores con Return.
 Aplicar las funciones en un programa propuesto.

11. Colección de datos.


 Tuplas (…).
 Diccionarios {…}.

12. Programación Orientada a Objetos (POO) PARTE I – Objetos.


 Atributos y método de los objetos.
 Identificar las Clases en la POO.
 Declarando clases en POO.

13. Programación Orientada a Objetos (POO) PARTE II – Herencias..


 Identificar el Polimorfismo en la POO.

A continuación, se plantea el siguiente caso a desarrollar:

Imagen
1
Introducción a las Tecnologías de la Información

Mejora de la Programación del cajero automático de Nuevo Perú Bank:

El Nuevo Perú Bank desea implementar un nuevo programa para un


cajero automático, para el cual los distintos tipos de clientes puedan
realizar las operaciones frecuentes en un cajero.

En los últimos meses, los cajeros automáticos de la empresa Nuevo


Perú Bank han experimentado ciertos errores en distintas actividades
generando un malestar entre sus clientes. Los errores que ha
detectado la empresa son los siguientes:

1. Desconocimiento de las cláusulas en los contratos de los clientes: La


empresa ha identificado que algunos clientes desconocen las
clausulas del contrato que firmaron al momento de seleccionar la
empresa Nuevo Perú Bank. A pesar de la cantidad de tipos de
clientes, muchos de ellos poseen los mismos beneficios.

2. Errores de software: El software del cajero automático presenta


errores que ha dado lugar a problemas graves. Por ejemplo, un error
en la lógica de procesamiento de transacciones ha resultado en
transacciones duplicadas y se ha reportado pérdida de dinero del
usuario.

3. Errores en la entrada de datos del usuario: Los usuarios cuando


ingresan sus contraseñas de manera equivocada tienen demasiados
intentos lo cual ha generado largas colas de esperas. Esto además
podría facilitar que un tercero puede acceder de manera
inescrupulosa e intente robar dinero.

Imagen
2
Introducción a las Tecnologías de la Información

Entregable 01:
 Codificar en el programa del cajero automático usando las estructuras
de control condicional para gestionar los diferentes tiempos de
clientes.

import datetime
import getpass

class Cajero:
def __init__(self):
self.monto = 50000
print("NOMBRE DEL ALUMNO: ")
self.nombre = input()
print("¡¡MUY BIEN!!: " + self.nombre)
self.usr = input("TU ID: ")
self.passw = getpass.getpass("Tu contraseña: ")
self.mostrar_fecha_hora()
self.mostrar_bienvenida()

def mostrar_fecha_hora(self):
ahora = datetime.datetime.now()
print(ahora)
print(type(ahora))
print("\n")

def mostrar_bienvenida(self):
print("******************************************")
print('BIENVENIDO A SU CAJERO AUTOMATICO SENATI')
print("******************************************")

def operaciones(self):
control = 0
while control == 0:
opcion = int(input('''
---------------------------------------------------
POR FAVOR INDIQUE QUE OPERACION DESEA REALIZAR..
1. CONSULTAR BALANCE
2. DEPOSITO A CUENTA
3. RETIRO DE EFECTIVO
4. SALIR

DIGITE LA OPCION = '''))


if opcion == 1:
self.consultabalance()
Introducción a las Tecnologías de la Información
elif opcion == 2:
self.depositar()
elif opcion == 3:
self.retirar()
elif opcion == 4:
control = 1
self.salir()
else:
print('LO SENTIMOS OPCION NO VALIDA!, INTENTE DE NUEVO.. ')

def consultabalance(self):
print('SU BALANCE DISPONIBLE ES: ', self.monto)
print('DESEA REALIZAR OTRA OPERACION?')

def depositar(self):
deposito = int(input('INDIQUE LA CANTIDAD A DEPOSITAR.. '))
self.monto += deposito
print("Depósito realizado. Nuevo balance: ", self.monto)

def retirar(self):
retiro = int(input('INDIQUE LA CANTIDAD A RETIRAR.. '))
while retiro > self.monto:
print('''USTED NO POSEE FONDOS SUFICIENTES PARA ESTE RETIRO
POR FAVOR INTENTE DE NUEVO..
--------------------------------------------''')
retiro = int(input('INDIQUE LA CANTIDAD A RETIRAR.. '))

self.monto -= retiro
print('CANTIDAD RETIRADA: ', retiro)
print("Nuevo balance: ", self.monto)

def salir(self):
print('=======================================')
print("ESTIMADO ALUMNO GRACIAS POR USAR NUESTROS SERVICIOS!" )
print('=======================================')

ejecucion = Cajero()
ejecucion.operaciones()

 Codificar en el programa del cajero automático usando los bucles For


y While para registrar una cantidad finita de clientes y para permitir
tres intentos para el ingreso y la contraseña (de ingresar
incorrectamente más de 3 veces el programa finaliza y manda un
mensaje de error), respectivamente.

import datetime
import getpass
Introducción a las Tecnologías de la Información

class Cajero:
def __init__(self):
self.monto = 50000
self.nombre = ""
self.usr = ""
self.passw = ""

def solicitar_datos_usuario(self):
print("NOMBRE DEL ALUMNO: ")
self.nombre = input()
print("¡¡MUY BIEN!!: " + self.nombre)

def iniciar_sesion(self):
intentos = 0
while intentos < 3:
usr = input("TU ID: ")
passw = getpass.getpass("Tu contraseña: ")
# Aquí se puede implementar la lógica de verificación. Simulamos una
verificación.
if usr == "usuario" and passw == "contraseña": # Aquí debes ajustar las
credenciales esperadas
return True
else:
print("ID o contraseña incorrecta. Intente de nuevo.")
intentos += 1
print("Número máximo de intentos alcanzado. Programa finalizado.")
return False

def mostrar_fecha_hora(self):
ahora = datetime.datetime.now()
print(ahora)

def mostrar_bienvenida(self):
print("******************************************")
print('BIENVENIDO A SU CAJERO AUTOMATICO SENATI')
print("******************************************")

def operaciones(self):
control = 0
while control == 0:
opcion = int(input('''
---------------------------------------------------
POR FAVOR INDIQUE QUE OPERACION DESEA REALIZAR..
1. CONSULTAR BALANCE
2. DEPOSITO A CUENTA
3. RETIRO DE EFECTIVO
4. SALIR

DIGITE LA OPCION = '''))


Introducción a las Tecnologías de la Información
if opcion == 1:
self.consultabalance()
elif opcion == 2:
self.depositar()
elif opcion == 3:
self.retirar()
elif opcion == 4:
control = 1
self.salir()

def consultabalance(self):
print('SU BALANCE DISPONIBLE ES: ', self.monto)

def depositar(self):
deposito = int(input('INDIQUE LA CANTIDAD A DEPOSITAR.. '))
self.monto += deposito
print("Depósito realizado. Nuevo balance: ", self.monto)

def retirar(self):
retiro = int(input('INDIQUE LA CANTIDAD A RETIRAR.. '))
while retiro > self.monto:
print("USTED NO POSEE FONDOS SUFICIENTES PARA ESTE RETIRO")
retiro = int(input('INDIQUE LA CANTIDAD A RETIRAR.. '))
self.monto -= retiro
print('CANTIDAD RETIRADA: ', retiro)
print("Nuevo balance: ", self.monto)

def salir(self):
print("=======================================")
print("ESTIMADO ALUMNO GRACIAS POR USAR NUESTROS SERVICIOS!")
print('=======================================')

def main():
numero_de_clientes = 3 # Define la cantidad de clientes a atender
for _ in range(numero_de_clientes):
cajero = Cajero()
cajero.solicitar_datos_usuario()
if cajero.iniciar_sesion():
cajero.mostrar_fecha_hora()
cajero.mostrar_bienvenida()
cajero.operaciones()
else:
break # Finaliza el programa si fallan los intentos de inicio de sesión

main()

Entregable 02:
 Codificar en el programa del cajero automático usando funciones,
argumentos y parámetros.
Introducción a las Tecnologías de la Información
import datetime
import getpass

class Cajero:
def __init__(self, monto_inicial=50000):
self.monto = monto_inicial

def solicitar_datos_usuario(self):
print("NOMBRE DEL ALUMNO: ")
nombre = input()
print("¡¡MUY BIEN!!: " + nombre)
return nombre

def iniciar_sesion(self, max_intentos=3):


intentos = 0
while intentos < max_intentos:
usr = input("TU ID: ")
passw = getpass.getpass("Tu contraseña: ")
if self.verificar_credenciales(usr, passw): # Asume que esta función verifica las
credenciales
print("Acceso concedido.")
return True
else:
print("ID o contraseña incorrecta. Intente de nuevo.")
intentos += 1
print("Número máximo de intentos alcanzado. Programa finalizado.")
return False

def verificar_credenciales(self, usr, passw):


# Esto es un placeholder. En un caso real, conectaría con una base de datos segura.
return usr == "usuario" and passw == "contraseña"

def mostrar_fecha_hora(self):
ahora = datetime.datetime.now()
print(ahora)

def mostrar_bienvenida(self, nombre):


print("******************************************")
print(f'BIENVENIDO A SU CAJERO AUTOMATICO, {nombre}')
print("******************************************")

def seleccionar_operacion(self):
opcion = int(input('''
---------------------------------------------------
POR FAVOR INDIQUE QUE OPERACION DESEA REALIZAR:
1. CONSULTAR BALANCE
2. DEPOSITO A CUENTA
3. RETIRO DE EFECTIVO
4. SALIR
Introducción a las Tecnologías de la Información

DIGITE LA OPCION = '''))


return opcion

def realizar_operacion(self, opcion):


if opcion == 1:
self.consultar_balance()
elif opcion == 2:
self.depositar()
elif opcion == 3:
self.retirar()
elif opcion == 4:
self.salir()
else:
print("Opción no válida. Intente de nuevo.")

def consultar_balance(self):
print('SU BALANCE DISPONIBLE ES: ', self.monto)

def depositar(self):
deposito = int(input('INDIQUE LA CANTIDAD A DEPOSITAR: '))
self.monto += deposito
print("Depósito realizado. Nuevo balance: ", self.monto)

def retirar(self):
retiro = int(input('INDIQUE LA CANTIDAD A RETIRAR: '))
while retiro > self.monto:
print("USTED NO POSEE FONDOS SUFICIENTES PARA ESTE RETIRO.")
retiro = int(input('INDIQUE LA CANTIDAD A RETIRAR: '))
self.monto -= retiro
print('CANTIDAD RETIRADA: ', retiro)
print("Nuevo balance: ", self.monto)

def salir(self):
print("=======================================")
print("GRACIAS POR USAR NUESTROS SERVICIOS!")
print('=======================================')

def main():
cajero = Cajero()
nombre = cajero.solicitar_datos_usuario()
if cajero.iniciar_sesion():
cajero.mostrar_fecha_hora()
cajero.mostrar_bienvenida(nombre)
while True:
opcion = cajero.seleccionar_operacion()
if opcion == 4: # Salir
cajero.salir()
break
Introducción a las Tecnologías de la Información
cajero.realizar_operacion(opcion)

if __name__ == "__main__":
main()

 Codificar en el programa una tupla para almacenar la fecha (día, mes


y año) cuando el cliente interactúa con el cajero automático y un
diccionario para almacenar la información de los clientes (nombre,
apellidos, monto de dinero y tipo de cliente).

import datetime
import getpass

class Cajero:
def __init__(self, clientes):
self.clientes = clientes # Diccionario de clientes

def solicitar_datos_usuario(self):
usuario_id = input("Ingrese su ID de usuario: ")
if usuario_id in self.clientes:
cliente = self.clientes[usuario_id]
print(f"Bienvenido {cliente['nombre']} {cliente['apellidos']}")
return cliente
else:
print("Usuario no encontrado.")
return None

def iniciar_sesion(self, cliente, max_intentos=3):


intentos = 0
while intentos < max_intentos:
passw = getpass.getpass("Ingrese su contraseña: ")
if passw == cliente['contraseña']: # Verificar contraseña desde el
diccionario
print("Acceso concedido.")
return True
else:
print("Contraseña incorrecta. Intente de nuevo.")
intentos += 1
print("Número máximo de intentos alcanzado. Programa finalizado.")
return False

def mostrar_fecha_hora(self):
ahora = datetime.datetime.now()
fecha_actual = (ahora.day, ahora.month, ahora.year) # Tupla con la fecha
actual
print("Fecha de acceso:", fecha_actual)
Introducción a las Tecnologías de la Información
return fecha_actual

def realizar_operacion(self, cliente):


while True:
opcion = int(input('''
---------------------------------------------------
Indique la operación que desea realizar:
1. Consultar balance
2. Depositar dinero
3. Retirar dinero
4. Salir

Opción: '''))
if opcion == 1:
print('Su balance actual es:', cliente['monto'])
elif opcion == 2:
deposito = int(input('Indique la cantidad a depositar: '))
cliente['monto'] += deposito
print("Depósito realizado. Nuevo balance:", cliente['monto'])
elif opcion == 3:
retiro = int(input('Indique la cantidad a retirar: '))
if retiro <= cliente['monto']:
cliente['monto'] -= retiro
print('Retiro realizado. Nuevo balance:', cliente['monto'])
else:
print("Fondos insuficientes.")
elif opcion == 4:
print("Gracias por usar nuestros servicios.")
break
else:
print("Opción no válida. Intente de nuevo.")

def main():
clientes = {
'123': {'nombre': 'Juan', 'apellidos': 'Pérez', 'monto': 50000, 'contraseña':
'abc123', 'tipo_cliente': 'normal'},
'456': {'nombre': 'Ana', 'apellidos': 'López', 'monto': 75000, 'contraseña':
'xyz789', 'tipo_cliente': 'premium'}
}
cajero = Cajero(clientes)
cliente = cajero.solicitar_datos_usuario()
if cliente and cajero.iniciar_sesion(cliente):
cajero.mostrar_fecha_hora()
cajero.realizar_operacion(cliente)

if __name__ == "__main__":
main()
Introducción a las Tecnologías de la Información
 Aplicar la Programación Orientada a Objetos (clases, atributos y
métodos de los objetos) en el programa del cajero automático de la
empresa Nuevo Perú Bank

class Cliente:
def __init__(self, nombre, apellidos, contraseña):
self.nombre = nombre
self.apellidos = apellidos
self.cuenta = Cuenta()
self.contraseña = contraseña

class Cuenta:
def __init__(self):
self.balance = 0

def depositar(self, cantidad):


self.balance += cantidad
return self.balance

def retirar(self, cantidad):


if cantidad <= self.balance:
self.balance -= cantidad
return True
else:
return False

def consultar_balance(self):
return self.balance

class CajeroAutomático:
def __init__(self, clientes):
self.clientes = clientes

def autenticar_usuario(self, nombre, contraseña):


for cliente in self.clientes:
if cliente.nombre == nombre and cliente.contraseña == contraseña:
return cliente
return None

def realizar_operacion(self, cliente):


while True:
print("\nBienvenido al Nuevo Perú Bank")
opción = int(input("Seleccione una opción: \n1. Consultar Balance\n2. Depositar
Dinero\n3. Retirar Dinero\n4. Salir\nOpción: "))
if opción == 1:
print("Su balance actual es:", cliente.cuenta.consultar_balance())
elif opción == 2:
monto = float(input("Ingrese el monto a depositar: "))
Introducción a las Tecnologías de la Información
cliente.cuenta.depositar(monto)
print("Depósito realizado. Nuevo balance:", cliente.cuenta.consultar_balance())
elif opción == 3:
monto = float(input("Ingrese el monto a retirar: "))
if cliente.cuenta.retirar(monto):
print("Retiro realizado. Nuevo balance:", cliente.cuenta.consultar_balance())
else:
print("Fondos insuficientes.")
elif opción == 4:
print("Gracias por usar nuestros servicios.")
break

def main():
# Crear clientes
clientes = [
Cliente("Juan", "Pérez", "123"),
Cliente("Ana", "López", "456")
]

cajero = CajeroAutomático(clientes)
nombre = input("Ingrese su nombre: ")
contraseña = input("Ingrese su contraseña: ")
cliente = cajero.autenticar_usuario(nombre, contraseña)
if cliente:
cajero.realizar_operacion(cliente)
else:
print("Autenticación fallida.")

if __name__ == "__main__":
main()
Introducción a las Tecnologías de la Información

REFERENCIAS BIBLIOGRÁFICAS
ENTREGABLE 01:
OBJETIVO 08: Estructura de control condicional.
Enlace 1:
https://www.mclibre.org/consultar/python/lecciones/python-if-else.html

OBJETIVO 09: Diseña BD para distintos tipos, o distintos negocios.


Enlace 1:
https://www.adrformacion.com/knowledge/programacion/programacion_en_p
ython_
_el_bucle_while.html

ENTREGABLE 02:
OBJETIVO 10: Definiendo Funciones usando DEF.
Enlace 1:
https://codigospython.com/como-hacer-un-cajero-automatico-en-python/
Indicadores de Gestión de Compras

También podría gustarte