def eliminar():
    # Carga en memoria en la variable listado_alumnos todo el contenido del archivo json donde se guardan los datos del programa.
    listado_alumnos = leer_datos_json.get_lista_alumnos()

    while True:
        carnet = input("Ingrese el carnet del alumno a eliminar: ").upper()

        if (not es_carnet_valido(carnet)):
            print("Carnet Invalido - Respetar formato AB12345")
        elif (buscar_alumno.indice_alumno(carnet, listado_alumnos) == -1):
            print(
                "\nEl carnet ingresado no existe. Debe registrar al alumno.\nPuede registrarlo seleccionando la opcion en el menu."
            )
            return  # Regresar al menu principal
        else:
            break
    # Elimina de la List de Dicts alumno el alumno ubicado en la posicion devuelta por la funcion indice_alumno
    listado_alumnos.pop(buscar_alumno.indice_alumno(carnet, listado_alumnos))

    # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se elimino el alumno.
    with open("datos-alumnos.json", "w") as salida:
        json.dump(listado_alumnos, salida)

    print("*" * caracteres_decorativos)
    print("Alumno eliminado con exito.")
    return
예제 #2
0
def actualizar_promedio(carnet, listado_alumnos):
    total_notas = 0
    for nota in range(3):
        total_notas = total_notas + listado_alumnos[indice_alumno(
            carnet, listado_alumnos)]["notas"][nota]

    # Se actualiza el promedio del alumno redondeando el valor a 2 decimales
    listado_alumnos[indice_alumno(carnet,
                                  listado_alumnos)]["notas"][3] = round(
                                      (total_notas / 3), 2)
def imprimir_alumno():
    while True:
        carnet = input("Ingrese el carnet del alumno a mostrar: ").upper()

        if(not es_carnet_valido(carnet)):
            print("Carnet Invalido - Respetar formato AB12345")
        elif(buscar_alumno.indice_alumno(carnet, leer_datos_json.get_lista_alumnos()) == -1):
            print("\nEl carnet ingresado no existe. Debe registrar al alumno.\nPuede registrarlo seleccionando la opcion en el menu.")
            # Regresar al menu principal
            return
        else:
            break

    indice = buscar_alumno.indice_alumno(
        carnet, leer_datos_json.get_lista_alumnos())
    alumno = leer_datos_json.get_lista_alumnos()[indice]

    columnas = ["CARNET", "NOMBRE", "APELLIDO",
                "NOTA 1", "NOTA 2", "NOTA 3", "PROMEDIO"]
    # Crea un nuevo DataFrame con las columnas previamente definidas
    df = pd.DataFrame(columns=columnas)

    # Verifica que el alumno tenga notas registradas en el sistema, si es asi se agregan a la columna correspondiente del DataFrame. Si no es asi, solo se agregan carnet, nombre y apellido y en las columnas de notas se agregan guiones.
    if(alumno["notas"]):

        df.loc[0] = [alumno["carnet"], alumno["nombre"], alumno["apellido"], alumno["notas"][0], alumno["notas"]
                     [1], alumno["notas"][2], alumno["notas"][3]]

    if(not alumno["notas"]):

        df.loc[0] = [alumno["carnet"], alumno["nombre"],
                     alumno["apellido"], "-", "-", "-", "-.-"]

    print()
    print(df)
    print()

    return
예제 #4
0
def registrar():
    listado_alumnos = leer_datos_json.get_lista_alumnos()
    while True:
        carnet = input("Carnet: ").upper()
        if(not es_carnet_valido(carnet)):
            print("Carnet Invalido - Respetar formato AB12345")
        elif(indice_alumno(carnet, listado_alumnos) != -1):
            print("El carnet ingresado ya existe")
        else:
            break

    while True:
        nombre = input(carnet + " - Nombre: ")
        if(not es_nombre_apellido_valido(nombre)):
            print("Nombre Invalido - Debe ser solo un nombre sin espacios.")
        else:
            break

    while True:
        apellido = input(carnet + " - Apellido: ")
        if(not es_nombre_apellido_valido(apellido)):
            print("Apellido Invalido - Debe ser solo un apellido sin espacios.")
        else:
            break

    nuevo_alumno = {
        "carnet": carnet.upper(),
        "nombre": nombre,
        "apellido": apellido,
        "notas": []
    }

    listado_alumnos.append(nuevo_alumno)

    with open("datos-alumnos.json", "w") as salida:
        json.dump(listado_alumnos, salida)

    print("*" * caracteres_decorativos)
    print("Alumno registrado con exito")

    return
def editar_alumno():
    # Carga en memoria en la variable listado_alumnos todo el contenido del archivo json donde se guardan los datos del programa.
    lista_alumnos = leer_datos_json.get_lista_alumnos()
    while True:
        carnet = input("Ingrese el carnet del alumno a editar: ").upper()

        if(not es_carnet_valido(carnet)):
            print("Carnet Invalido - Respetar formato AB12345")
        elif(indice_alumno(carnet, lista_alumnos) == -1):
            print("\nEl carnet ingresado no existe. Debe registrar al alumno.\nPuede registrarlo seleccionando la opcion en el menu.")
            # Regresa al menu principal
            return
        else:
            break

    pos_alumno = indice_alumno(carnet, lista_alumnos)
    while True:
        opcion = input("\n" +
                       carnet + " - Seleccione el dato a modificar:\n\n1-Carnet\n2-Nombre\n3-Apellido\n4-Menu Principal\n")

        print("*" * caracteres_decorativos)

        if(es_opcion_valida(opcion, 1, 4)):
            opcion = eval(opcion)
            break
        else:
            print("Seleccione una opcion valida")
            print("*" * caracteres_decorativos)

    if (opcion == 1):
        while True:
            nuevo_carnet = input(
                "Carnet Actual: " + lista_alumnos[pos_alumno]["carnet"] + "\nCarnet Nuevo: ")

            if(es_carnet_valido(nuevo_carnet)):
                if(indice_alumno(nuevo_carnet, lista_alumnos) != -1):
                    print(
                        "\nEl carnet ingresado ya existe.\nEl nuevo carnet debe ser ¡¡¡NUEVO!!!")
                else:
                    break
            else:
                print("El nuevo carnet no es valido")

        lista_alumnos[pos_alumno]["carnet"] = nuevo_carnet.upper()

        # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se modifico el carnet del alumno.
        with open("datos-alumnos.json", "w") as salida:
            json.dump(lista_alumnos, salida)

        print("*" * caracteres_decorativos)
        print("Carnet modificado con exito.")
        return

    if (opcion == 2):
        while True:
            nuevo_nombre = input(
                "Nombre Actual: " + lista_alumnos[pos_alumno]["nombre"] + "\nNuevo Nombre: ")

            if(es_nombre_apellido_valido(nuevo_nombre)):
                break
            else:
                print("El nuevo nombre no es valido")

        lista_alumnos[pos_alumno]["nombre"] = nuevo_nombre

        # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se modifico el nombre del alumno.
        with open("datos-alumnos.json", "w") as salida:
            json.dump(lista_alumnos, salida)

        print("*" * caracteres_decorativos)
        print("Nombre modificado con exito.")
        return

    if (opcion == 3):
        while True:
            nuevo_apellido = input(
                "Apellido Actual: " + lista_alumnos[pos_alumno]["apellido"] + "\nNuevo Apellido: ")

            if(es_nombre_apellido_valido(nuevo_apellido)):
                break
            else:
                print("El nuevo apellido no es valido")

        lista_alumnos[pos_alumno]["apellido"] = nuevo_apellido

        # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se modifico el apellido del alumno.
        with open("datos-alumnos.json", "w") as salida:
            json.dump(lista_alumnos, salida)

        print("*" * caracteres_decorativos)
        print("Apellido modificado con exito.")
        return

    if (opcion == 4):
        # Regresar al menu principal
        return
예제 #6
0
def ingresar_notas():
    listado_alumnos = leer_datos_json.get_lista_alumnos()
    while True:
        carnet = input("Ingrese el carnet del alumno: ").upper()

        if (not es_carnet_valido(carnet)):
            print("\nCarnet Invalido - Respetar formato AB12345")
        elif (buscar_alumno.indice_alumno(carnet, listado_alumnos) == -1):
            print(
                "\nEl carnet ingresado no existe. Debe registrar al alumno.\nPuede registrarlo seleccionando la opcion en el menu."
            )
            # Regresar al menu principal
            return
        elif (len(listado_alumnos[buscar_alumno.indice_alumno(
                carnet, listado_alumnos)]["notas"]) == 4):
            print(
                "\nEl alumno " + carnet +
                " ya tiene las notas registradas.\nPuede modificarlas seleccionando la opcion en el menu."
            )
            # Regresar al menu principal
            return
        else:
            break

    while True:
        primeraNota = input(carnet + " - Primera Nota: ")

        if (esNotaValida(primeraNota)):
            break
        else:
            print("Nota Invalida")

    while True:
        segundaNota = input(carnet + " - Segunda Nota: ")

        if (esNotaValida(segundaNota)):
            break
        else:
            print("Nota Invalida")

    while True:
        terceraNota = input(carnet + " - Tercera Nota: ")

        if (esNotaValida(terceraNota)):
            break
        else:
            print("Nota Invalida")

    promedio = (eval(primeraNota) + eval(segundaNota) + eval(terceraNota)) / 3
    promedio = round(promedio, 2)

    listado_alumnos[buscar_alumno.indice_alumno(carnet,
                                                listado_alumnos)]["notas"] = [
                                                    eval(primeraNota),
                                                    eval(segundaNota),
                                                    eval(terceraNota), promedio
                                                ]

    with open("datos-alumnos.json", "w") as salida:
        json.dump(listado_alumnos, salida)

    print("*" * caracteres_decorativos)
    print("Notas del alumno " + carnet + " registradas con exito.")
    # Regresar al menu principal
    return
예제 #7
0
def modificar_nota():
    # Carga en memoria en la variable listado_alumnos todo el contenido del archivo json donde se guardan los datos del programa.
    lista_alumnos = leer_datos_json.get_lista_alumnos()
    while True:
        carnet = input("Ingrese el carnet del alumno a modificar: ").upper()

        if (not es_carnet_valido(carnet)):
            print("Carnet Invalido - Respetar formato AB12345")
        elif (indice_alumno(carnet, lista_alumnos) == -1):
            print(
                "\nEl carnet ingresado no existe. Debe registrar al alumno.\nPuede registrarlo seleccionando la opcion en el menu."
            )
            # Regresar al menu principal
            return
        elif (len(lista_alumnos[indice_alumno(carnet,
                                              lista_alumnos)]["notas"]) == 0):
            print(
                "\nEl alumno " + carnet +
                " no tiene notas registradas.\nPuede registrarlas seleccionando la opcion en el menu."
            )
            # Regresar al menu principal
            return
        else:
            break

    pos_alumno = indice_alumno(carnet, lista_alumnos)
    while True:
        opcion = input(
            "\n" + carnet +
            " - Seleccione la nota a modificar:\n\n1-Primera Nota\n2-Segunda Nota\n3-Tercera Nota\n4-Menu Principal\n"
        )

        print("*" * caracteres_decorativos)

        if (es_opcion_valida(opcion, 1, 4)):
            opcion = eval(opcion)
            break
        else:
            print("Seleccione una opcion valida")
            print("*" * caracteres_decorativos)

    if (opcion == 1):
        while True:
            nueva_nota = input(carnet + " - Nota Actual: " +
                               str(lista_alumnos[pos_alumno]["notas"][0]) +
                               "\n" + carnet + " - Nueva Nota: ")

            if (esNotaValida(nueva_nota)):
                break
            else:
                print("Nota Invalida")

        lista_alumnos[pos_alumno]["notas"][0] = eval(nueva_nota)
        nueva_nota = -1

        actualizar_promedio(carnet, lista_alumnos)

        # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se modifico la nota 1 y el promedio del alumno.
        with open("datos-alumnos.json", "w") as salida:
            json.dump(lista_alumnos, salida)

        print("*" * caracteres_decorativos)
        print("Nota 1 modificada con exito.")
        return

    if (opcion == 2):
        while True:
            nueva_nota = input(carnet + " - Nota Actual: " +
                               str(lista_alumnos[pos_alumno]["notas"][1]) +
                               "\n" + carnet + " - Nueva Nota: ")

            if (esNotaValida(nueva_nota)):
                break
            else:
                print("Nota Invalida")

        lista_alumnos[pos_alumno]["notas"][1] = eval(nueva_nota)
        nueva_nota = -1

        actualizar_promedio(carnet, lista_alumnos)

        # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se modifico la nota 2 y el promedio del alumno.
        with open("datos-alumnos.json", "w") as salida:
            json.dump(lista_alumnos, salida)

        print("*" * caracteres_decorativos)
        print("Nota 2 modificada con exito.")
        return

    if (opcion == 3):
        while True:
            nueva_nota = input(carnet + " - Nota Actual: " +
                               str(lista_alumnos[pos_alumno]["notas"][2]) +
                               "\n" + carnet + " - Nueva Nota: ")

            if (esNotaValida(nueva_nota)):
                break
            else:
                print("Nota Invalida")

        lista_alumnos[pos_alumno]["notas"][2] = eval(nueva_nota)

        actualizar_promedio(carnet, lista_alumnos)

        # Abre el archivo json donde se guardan los datos del programa, en modo de escritura(w) y lo sobreescribe con los datos de la List actual donde ya se modifico la nota 3 y el promedio del alumno.
        with open("datos-alumnos.json", "w") as salida:
            json.dump(lista_alumnos, salida)

        print("*" * caracteres_decorativos)
        print("Nota 3 modificada con exito.")
        return

    if (opcion == 4):
        # Regresar al menu principal
        return