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