Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PARALELO: 3-B
GESTION: 2022
LA PAZ - BOLIVIA
EJERCICIO 1.
from datetime import date
from datetime import datetime
class Trabajador:
def __init__(self,nombre,apellidos,sueldo,fecha_ingreso):
self.nombre=nombre
self.apellidos=apellidos
self.sueldo=sueldo
self.fecha_ingreso=fecha_ingreso
self.antiguedad=None
self.bono=None
class Socio:
def __init__(self, ci, nombre, telefono, domicilio):
self.ci=ci
self.nombre=nombre
self.telefono=telefono
self.domicilio=domicilio
def __str__(self):
return "Carnet de identidad: {0}\nNombre: {1}\nTelefono: {2}\
nDomicilio: {3}\n"\
.format(self.ci,self.nombre,self.telefono,self.domicilio)
class Libro:
def __init__ (self,titulo,genero,dias_permitidos):
self.titulo=titulo
self.genero=genero
self.alquilada=None
self.fecha_alquilada=None
self.dias_permitidos=dias_permitidos
def __str__(self):
cadena= "Titulo: {0}\nGenero: {1}\n".format(self.titulo,self.genero)
if self.alquilada==None:
cadena=cadena+"Disponible\n"
else:
cadena=cadena+"Alquilada\n"
return cadena
class Biblioteca:
def __init__(self,nombre,direccion,telefono,correo):
self.nombre=nombre
self.direccion=direccion
self.telefono=telefono
self.correo=correo
self.socios=[]
self.libros=[]
def registrar_socio(self,socio):
self.socios.append(socio)
def contiene_socio(self, ci):
for socio in self.socios:
if socio.ci==ci:
return True
return False
def baja_socio(self,ci):
for i in range(len(self.socios)):
if self.socios[i].ci==ci:
del self.socios[i]
break
def registrar_libro(self,libro,ejemplares):
for i in range(ejemplares):
nuevo_ejemplar=Libro(libro.titulo,libro.genero,libro.dias_permitidos)
self.libros.append(nuevo_ejemplar)
def contiene_libro(self, titulo):
for libro in self.libros:
if libro.titulo==titulo:
return True
return False
def baja_libro(self,titulo,ejemplares):
bajas_efectivas=0
i=0
while i<len(self.libros) and bajas_efectivas<ejemplares:
if self.libros[i].titulo==titulo and
self.libros[i].alquilada==None:
del self.libros[i]
bajas_efectivas+=1
else:
i=i+1
return bajas_efectivas
def alquilar_libro(self,titulo,ci):
for libro in self.libros:
if libro.titulo==titulo and libro.alquilada==None:
libro.alquilada=ci
libro.fecha_alquilada=date.today()
return True
return False
def devolver_libro(self, titulo,ci):
for libro in self.libros:
if libro.titulo==titulo and libro.alquilada==ci:
libro.alquilada=None
dias_retraso=date.today()-libro.fecha_alquilada
dias_retraso1=dias_retraso
return dias_retraso1
return -1
def listado_libros(self,genero):
disponibles=[]
alquiladas=[]
for libro in self.libros:
if libro.genero==genero:
if libro.alquilada==None and not (libro.titulo in
disponibles):
disponibles.append(libro.titulo)
if libro.alquilada!=None and not (libro.titulo in alquiladas):
alquiladas.append(libro.titulo)
for titulo in disponibles:
print(titulo+ " DISPONIBLE")
for titulo in alquiladas:
print(titulo+ " NO DISPONIBLE")
def listado_socios(self):
if len(self.socios)!=0:
for socio in self.socios:
print(socio)
else:
print("No hay socios registrados!!!")
def menu():
print("***M E N U G E S T I O N D E U N A B I B L I O T E C A***")
print("1. Registrar un nuevo usuario")
print("2. Dar de baja un usuario")
print("3. Registrar un nuevo libro")
print("4. Dar de baja un libro")
print("5. Prestar libro")
print("6. Devolver libro")
print("7. Mostrar listado de los libros")
print("8. Mostrar listado de los usuarios")
print("9. Salir")
opcion=int(input("Elige una opcion..."))
while opcion<1 or opcion >9:
opcion=int(input("Elige una opcion entre 1 y 9..."))
return opcion
opcion=menu()
hoy=date.today()
while opcion!=9:
if opcion==1:
print("Registrar un nuevo socio")
socio=nuevo_socio()
if biblioteca.contiene_socio(socio.ci):
print("El socio ya se encuentra registrado!!!")
else:
biblioteca.registrar_socio(socio)
elif opcion==2:
print("Dar de baja al socio...")
ci=input("Carnet de Identidad:")
if biblioteca.contiene_socio(ci):
biblioteca.baja_socio(ci)
print("socio con "+ci+" fue dado de baja con exito!!!")
else:
print("No existe ningun socio con el numero de carnet de
identidad=",ci)
elif opcion==3:
print("Registrar libro...")
libro=nueva_libro()
ejemplares=int(input("Ejemplares: "))
if biblioteca.contiene_libro(libro.titulo):
print("Ya existe una libro con el titulo ",libro.titulo)
else:
biblioteca.registrar_libro(libro,ejemplares)
elif opcion==4:
print('Dar de baja una libro...')
titulo=input("Titulo:")
ejemplares=int(input("Ejemplares: "))
if biblioteca.contiene_libro(titulo):
biblioteca.baja_libro(titulo,ejemplares)
else:
print('No existe ninguna libro llamada ', titulo)
bajas=biblioteca.baja_libro(titulo,ejemplares)
if bajas<ejemplares:
print("Solo puede dar de baja ", bajas, "ejemplares")
else:
print("Operacion realizad con exito!!!")
elif opcion==5:
print("Alquiler de libro")
titulo=input("Titulo de la libro:")
ci=input("CI del socio:")
existe_libro=biblioteca.contiene_libro(titulo)
existe_socio=biblioteca.contiene_socio(ci)
if existe_libro and existe_socio:
if biblioteca.alquilar_libro(titulo,ci):
print("Operacion realizada con exito!!!")
else:
print("La libro no esta disponible!!!")
else:
if not existe_libro:
print("No hay libro titulada ", titulo)
if not existe_socio:
print("No hay socio con CI ", ci)
elif opcion==6:
print("Devolver libro...")
titulo=input("Titulo de la libro que se devolvera:")
ci=input("CI del socio: ")
existe_libro=biblioteca.contiene_libro(titulo)
existe_socio=biblioteca.contiene_socio(ci)
if existe_libro and existe_socio:
resultado=biblioteca.devolver_libro(titulo, ci)
if resultado==0:
print("Operacion realizad con exito!!!")
elif resultado!=0:
print("libro entregada con un retraso de ",resultado,"
dias")
else:
print("La libro ",titulo," no esta alquilada al socio ",ci )
else:
if not existe_libro:
print("No existe libro titulada ", titulo)
if not existe_socio:
print("No existe socio con CI ", ci)
elif opcion==7:
genero=["accion", "comedia", "drama", "crimen", "ciencia ficcion"]
for i in genero:
biblioteca.listado_libros(i)
elif opcion==8:
if len(biblioteca.socios)!=0:
for socio in biblioteca.socios:
print(socio)
else:
print("No hay socios registrados!!!")
opcion=menu()