Está en la página 1de 8

ESTUDIANTE: CACHI VILLCA CAMILA KEILY

CODIGO SAGA: A25390-1

DOCENTE: ING. UREÑA MERIDA SERGIO

ASIGNATURA: ESTRUCTURA DE DATOS I

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

    def calcular_antiguedad (self):


       fecha=datetime.strptime(self.fecha_ingreso,"%d/%m/%Y")
       self.antiguedad=date.today().year-fecha.year

    def calcular_bono_antiguedad (self,antiguedad):


        if antiguedad>=1 and antiguedad<=5:
            self.bono=1.5
        elif antiguedad>5 and antiguedad<=10:
            self.bono=3
        elif antiguedad>10 and antiguedad<=15:
            self.bono=5
        else:
            self.bono=8
           
    def __str__(self):
        return "Nombre: {0}\nApellidos: {1}\nSueldo: {2}\nFecha de Ingreso:
{3}\nAntiguedad: {4} años\nBono: {5} %"\
           
.format(self.nombre,self.apellidos,self.sueldo,self.fecha_ingreso,self.antig
uedad,self.bono)

"""lista de los 5 trabajadores"""


compositor=Trabajador("CHRISTOPHER","BANG",1500,"10/08/1997")
coreografo=Trabajador("MINHO","LEE",2000,"02/12/1998")
cantautor=Trabajador("JISUNG","HAN",500,"30/01/2000")
cantante=Trabajador("SEUNGMIN","KIM",5000,"14/12/2012")
bailarin=Trabajador("JEONGIN","YANG",1000,"19/06/2005")
Trabajadores=[compositor,coreografo,cantautor,cantante,bailarin]
for persona in Trabajadores:
    persona.calcular_antiguedad()
    persona.calcular_bono_antiguedad(persona.antiguedad)
    print(persona)
    print("--*--*--*--*--*--*--*--*--*--")
EJERCICIO 2.

from datetime import date

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

biblioteca=Biblioteca('Biblioteca del prado','Plaza del


estudiante','7751384','biblioteca@hotmail.com')
def nuevo_socio():
    ci=input("Ingrese el carnet de identidad:")
    nombre=input("Ingrese el nombre: ")
    telefono=input("Ingrese el telefono: ")
    domicilio=input("Ingrese el domicilio: ")
    socio=Socio(ci,nombre,telefono,domicilio)
    return socio
def nueva_libro():
    titulo=input("Ingrese el titulo del libro: ")
    genero=input("Ingrese el genero del libro [accion, comedia, drama,
crimen, ficcion]: ")
    dias_permitidos=int(input("Dias permitidos: "))
    libro=Libro(titulo,genero,dias_permitidos)
    return libro

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()

También podría gustarte