class Periodo_controller: def __init__(self): self.periodo = Periodo() self.salir = False def menu(self): while True: try: print(''' =============== Periodo =============== ''') menu = ['Listar Periodo', 'Buscar Periodo', "Nuevo Periodo", "Salir"] respuesta = Menu(menu).show() if respuesta == 1: self.listar_periodos() elif respuesta == 2: self.buscar_periodo() elif respuesta == 3: self.insertar_periodos() else: self.salir = True break except Exception as e: print(f'{str(e)}') def listar_periodos(self): print(''' ========================= Lista de Periodos ========================= ''') periodo = self.periodo.obtener_periodos('id_periodo') print(print_table(periodo, ['ID', 'Nombre periodo', 'fecha inicio', 'fecha fin'])) input("\nPresione una tecla para continuar...") def buscar_periodo(self): print(''' ====================== Buscar Periodo ====================== ''') try: id_periodo = input_data("Ingrese el ID del periodo >> ", "int") periodo = self.periodo.obtener_periodo({'id_periodo': id_periodo}) print(print_table(periodo, ['ID', 'Nombre periodo', 'fecha inicio', 'fecha fin'])) if periodo: if pregunta("¿Deseas dar mantenimiento al periodo?"): opciones = ['Editar periodo', 'Eliminar periodo', 'Salir'] respuesta = Menu(opciones).show() if respuesta == 1: self.editar_periodo(id_periodo) elif respuesta == 2: self.eliminar_periodo(id_periodo) except Exception as e: print(f'{str(e)}') input("\nPresione una tecla para continuar...") def insertar_periodos(self): nombre = input_data("Ingrese el nombre del periodo >> ") fecha_desde = input_data("Ingrese fecha de inicio del periodo (formato DD-MM-AAAA) >> ","date") fecha_hasta = input_data("Ingrese fecha fin del periodo (formato DD-MM-AAAA) >> ","date") self.periodo.guardar_periodo({ 'nombre_periodo': nombre, 'fecha_desde' : fecha_desde, 'fecha_hasta' : fecha_hasta }) print(''' ============================== Nuevo Periodo agregado ! ============================== ''') self.listar_periodos() def editar_periodo(self, id_periodo): nombre = input_data("Ingrese el nuevo nombre del periodo >> ") fecha_desde = input_data("Ingrese fecha de inicio del periodo (formato DD-MM-AAAA) >> ","date") fecha_hasta = input_data("Ingrese fecha fin del periodo (formato DD-MM-AAAA) >> ","date") self.periodo.modificar_periodo({ 'id_periodo': id_periodo }, { 'nombre_periodo': nombre, 'fecha_desde' : fecha_desde, 'fecha_hasta' : fecha_hasta, }) print(''' ======================== Periodo Editado ! ======================== ''') def eliminar_periodo(self, id_periodo): self.periodo.eliminar_periodo({ 'id_periodo': id_periodo }) print(''' ======================== Periodo Eliminado ! ======================== ''')
class Periodo_controller: def __init__(self): self.periodo = Periodo() self.profesor_curso = Profesor_curso() self.profesor = Profesor() self.malla = Malla() self.curso = Curso() self.salon = Salon() self.salir = False def menu(self): while True: try: print(''' =============== Periodos =============== ''') menu = [ 'Listar periodos', 'Buscar periodo', "Nuevo periodo", "Salir" ] respuesta = Menu(menu).show() if respuesta == 1: self.listar_periodo() elif respuesta == 2: self.buscar_periodo() elif respuesta == 3: self.insertar_periodo() else: self.salir = True break except Exception as e: print(f'{str(e)}') def listar_periodo(self): print(''' ======================== Lista de Periodos ======================== ''') periodo = self.periodo.obtener_periodos('id_periodo') print( print_table(periodo, ['ID', 'Periodo', 'Inicio', 'Fin', 'Estado'])) input("\nPresione una tecla para continuar...") def buscar_periodo(self): print(''' ===================== Buscar Periodo ===================== ''') try: id_periodo = input_data("Ingrese el ID del periodo >> ", "int") periodo = self.periodo.obtener_periodo({'id_periodo': id_periodo}) print( print_table(periodo, ['ID', 'Periodo', 'Inicio', 'Fin', 'Estado'])) if periodo: if pregunta("¿Deseas dar mantenimiento a este periodo?"): opciones = [ 'Asignar una malla al periodo escolar', 'Editar periodo escolar', 'Eliminar periodo escolar', 'Aperturar periodo escolar', 'Cerrar periodo escolar', 'Salir' ] respuesta = Menu(opciones).show() if respuesta == 1: self.agregar_malla(id_periodo, periodo) elif respuesta == 2: self.editar_periodo(id_periodo) elif respuesta == 3: self.eliminar_periodo(id_periodo) elif respuesta == 4: self.aperturar_periodo(id_periodo) elif respuesta == 5: self.cerrar_periodo(id_periodo) except Exception as e: print(f'{str(e)}') input("\nPresione una tecla para continuar...") def insertar_periodo(self): nombre_periodo = input_data("Ingrese el nombre del periodo >> ") fecha_desde = input_data("Ingrese desde cuando inicia el periodo >> ") fecha_hasta = input_data( "Ingrese hasta cuando finaliza el periodo >> ") self.periodo.guardar_periodo({ 'nombre_periodo': nombre_periodo, 'fecha_desde': fecha_desde, 'fecha_hasta': fecha_hasta }) print(''' ============================== Nuevo Periodo agregado ! ============================== ''') self.listar_periodo() def editar_periodo(self, id_periodo): nombre_periodo = input_data("Ingrese el nuevo nombre del periodo >> ") fecha_desde = input_data( "Ingrese desde cuando inicia el nuevo periodo >> ") fecha_hasta = input_data( "Ingrese hasta cuando finaliza el nuevo periodo >> ") self.periodo.modificar_periodo({'id_periodo': id_periodo}, { 'nombre_periodo': nombre_periodo, 'fecha_desde': fecha_desde, 'fecha_hasta': fecha_hasta }) print(''' ======================== Periodo Editado ! ======================== ''') def cerrar_periodo(self, id_periodo): periodo = self.periodo.obtener_periodo({'id_periodo': id_periodo}) if pregunta(f'¿Seguro que desea cerrar el periodo {periodo[1]}?'): self.periodo.modificar_periodo({'id_periodo': id_periodo}, {'estado_periodo': 'cerrado'}) print(''' ======================== Periodo Editado ! ======================== ''') def aperturar_periodo(self, id_periodo): periodo = self.periodo.obtener_periodo({'id_periodo': id_periodo}) if pregunta(f'¿Seguro que desea aperturar el periodo {periodo[1]}?'): self.periodo.modificar_periodo({'id_periodo': id_periodo}, {'estado_periodo': 'aperturado'}) print(''' ======================== Periodo Editado ! ======================== ''') def eliminar_periodo(self, id_periodo): self.periodo.eliminar_periodo({'id_periodo': id_periodo}) print(''' ======================== Periodo Eliminado ! ======================== ''') def agregar_malla(self, id_periodo, periodo): print( f'\n Por favor elige el grado o salón para el que desea trabajar su malla curricular :' ) salon_seleccionado = [] salones_1 = self.salon.obtener_salones('id_salon') print(print_table(salones_1, ['ID', 'Salón', 'Nombre del Salon'])) id_salon_seleccionado = input_data( "Seleccione el ID del salón a trabajar su malla: >> ", "int") salon_seleccionado = self.salon.obtener_salon( {'id_salon': id_salon_seleccionado}) print( f'\n Creación de la malla curricular para el periodo : {periodo[1]} y salón: {salon_seleccionado[1]}' ) print(f''' ======================================================= Malla curricular del Salón: {salon_seleccionado[1]} ======================================================= ''') #malla_periodo = self.malla.obtener_malla({'id_periodo': id_periodo,'id_salon': id_salon_seleccionado}) malla_periodo = self.malla.obtener_malla({ 'id_periodo': id_periodo, 'id_salon': id_salon_seleccionado }) print( print_table(malla_periodo, ['ID', 'ID_Periodo', 'ID_salon', 'ID_Profesor'])) mallas_imprimir = [] if malla_periodo: for v in malla_periodo: id_malla = v[0] id_periodo1 = v[1] id_salon1 = v[2] id_profesor_curso1 = v[3] nomb_periodo = self.periodo.obtener_periodo( {'id_periodo': id_periodo1}) if not nomb_periodo: nomb_periodo = '' nomb_salon = self.salon.obtener_salon({'id_salon': id_salon1}) if not nomb_salon: nomb_salon = '' nomb_profesor_curso = self.profesor_curso.obtener_profesor_curso( {'id_profesor_curso': id_profesor_curso1}) if not nomb_profesor_curso: nomb_profesor_curso = '' break nombre_profe = self.profesor.obtener_profesor( {'profesor_id': nomb_profesor_curso[1]}) if not nombre_profe: nombre_profe = '' nombre_curso1 = self.curso.obtener_curso( {'curso_id': nomb_profesor_curso[2]}) if not nombre_curso1: nombre_curso1 = '' mallas_imprimir.append({ 'id': id_malla, 'Periodo': nomb_periodo[1], 'Salon': nomb_salon[1], 'Profesor': nombre_profe[1], 'Curso': nombre_curso1[1], 'Codigo_curso_profe': id_profesor_curso1 }) print(print_table(mallas_imprimir)) if pregunta( f'¿Deseas ver la relación de cursos dictados por profesores?' ): curso_profe_1 = self.profesor_curso.obtener_profesor_cursos( 'id_profesor_curso') print(print_table(curso_profe_1, ['ID', 'Profesor', 'Curso'])) else: curso_profe_1 = [] id_curso_profe_seleccionado = input_data( "Seleccione el código profesor curso : >> ", "int") self.malla.guardar_malla({ 'id_periodo': id_periodo, 'id_salon': id_salon_seleccionado, 'id_profesor_curso': id_curso_profe_seleccionado }) print(''' ============================== Malla agregada ! ============================== ''')
class Habilitar_controller: def __init__(self): self.profesor = Profesor() self.curso = Curso() self.profesor_curso = Profesor_curso() self.periodo = Periodo() self.salon = Salon() self.malla = Malla() self.salir = False def menu(self): while True: try: print(''' ======================= Habilitar Cursos ======================= ''') menu = ["Habilitar salon", "Salir"] respuesta = Menu(menu).show() if respuesta == 1: self.habilitar_salones() else: self.salir = True break except Exception as e: print(f'{str(e)}') def habilitar_salones(self): print(''' ============================================= Habilitar curso por salones y periodo ============================================= ''') print('De la siguiente lista elija el periodo que se habilitara >>\n') periodos = self.periodo.obtener_periodos('id_periodo') print(print_table(periodos, ['ID', 'Nombre', 'Desde', 'Hasta'])) id_periodo_elegido = input_data("\nEscriba el ID del periodo escolar >> ", "int") buscar_periodo = self.periodo.obtener_periodo({'id_periodo': id_periodo_elegido}) if not buscar_periodo: print('\nEl periodo elegido no existe !') return print(f'\nElija el salon para el periodo: {buscar_periodo[1]} >> ') salones = self.salon.obtener_salones('id_salon') print(print_table(salones, ['ID', 'Nombre'])) id_salon_elegido = input_data("\nEscriba el ID del salon >> ", "int") buscar_salon = self.salon.obtener_salon({'id_salon': id_salon_elegido}) if not buscar_salon: print('\nEl salon elegido no existe !') return print(f'\nElija el curso a habilitar para el salon: {buscar_salon[1]} >> ') cursos_profesores = self.profesor_curso.obtener_profesor_cursos('id_profesor_curso') cursos_disponibles = [] if cursos_profesores: for pro_cur in cursos_profesores: curso_id = pro_cur[2] profesor_id = pro_cur[1] id_profesor_curso = pro_cur[0] curso = self.curso.obtener_curso({'curso_id': curso_id}) curso_nombre = curso[1] profesor = self.profesor.obtener_profesor({'profesor_id': profesor_id}) profesor_nombre = profesor[1] mallas = self.malla.buscar_mallas({ 'id_periodo': id_periodo_elegido, 'id_salon': id_salon_elegido, 'id_profesor_curso': id_profesor_curso }) if not mallas: cursos_disponibles.append({ 'codigo': id_profesor_curso, 'curso': curso_nombre, 'profesor_asignado': profesor_nombre }) else: for curso_disponible in cursos_disponibles: if curso_disponible['curso'] == curso_nombre: cursos_disponibles.remove(curso_disponible) print(print_table(cursos_disponibles)) id_profesor_curso = input_data('\nEscriba el codigo del curso disponible >> ', 'int') buscar_profesor_curso = self.profesor_curso.obtener_profesor_curso({'id_profesor_curso': id_profesor_curso}) if not buscar_profesor_curso: print('\nEl codigo escogido no existe como curso disponible') return mallas = self.malla.buscar_mallas({ 'id_periodo': id_periodo_elegido, 'id_salon': id_salon_elegido }) if mallas: for malla in mallas: pro_curso = self.profesor_curso.obtener_profesor_curso({'id_profesor_curso': malla[3]}) if pro_curso[2] == buscar_profesor_curso[2]: print('\nEste curso ya existe para el salon en el periodo escogido !') return self.malla.guardar_malla({ 'id_periodo': id_periodo_elegido, 'id_salon': id_salon_elegido, 'id_profesor_curso': id_profesor_curso }) print(''' ============================================================= Curso habilitado con exito para el salon y el periodo ============================================================= ''') input('\nPresione una tecla para continuar...')
class Notas_controller: def __init__(self): self.profesor = Profesor() self.curso = Curso() self.profesor_curso = Profesor_curso() self.periodo = Periodo() self.salon = Salon() self.malla = Malla() self.nota = Nota() self.alumno = Alumno() self.salir = False def menu(self): while True: try: print(''' ======================== Registro de Notas ======================== ''') menu = ["Listado de notas", "Registrar notas", "Salir"] respuesta = Menu(menu).show() if respuesta == 1: self.listar_notas() elif respuesta == 2: self.registrar_notas() else: self.salir = True break except Exception as e: print(f'{str(e)}') def listar_notas(self): print(''' ======================== Listado de Notas ======================== ''') notas = self.nota.obtener_notas('id_nota') lista_notas = [] if notas: for nota in notas: buscar_alumno = self.alumno.obtener_alumno( {'alumno_id': nota[1]}) buscar_malla = self.malla.obtener_malla({'id_malla': nota[2]}) nota_calificacion = nota[3] periodo = self.periodo.obtener_periodo( {'id_periodo': buscar_malla[1]}) salon = self.salon.obtener_salon({'id_salon': buscar_malla[2]}) profesor_curso = self.profesor_curso.obtener_profesor_curso( {'id_profesor_curso': buscar_malla[3]}) curso = self.curso.obtener_curso( {'curso_id': profesor_curso[2]}) profesor = self.profesor.obtener_profesor( {'profesor_id': profesor_curso[1]}) lista_notas.append( (nota[0], buscar_alumno[1], periodo[1], salon[1], curso[1], profesor[1], nota_calificacion)) print( print_table(lista_notas, [ 'ID', 'Alumno', 'Periodo Escolar', 'Salon', 'Curso', 'Profesor', 'Nota' ])) input("\nPresione una tecla para continuar...") def registrar_notas(self): print(''' =================================================== Registro de notas para los alumnos por salon =================================================== ''') print('Eliga el alumno que se le asignara una nota >> \n') alumnos = self.alumno.obtener_alumnos('alumno_id') print(print_table(alumnos, ['ID', 'Nombres', 'Edad', 'Correo'])) id_alumno_elegido = input_data('\nEscriba el ID del alumno >> ', 'int') buscar_alumno = self.alumno.obtener_alumno( {'alumno_id': id_alumno_elegido}) if not buscar_alumno: print('\nEl alumno elegido no existe !') return print( f'\nElija el curso y periodo a ser añadido a {buscar_alumno[1]} >> ' ) mallas = self.malla.obtener_mallas('id_malla') lista_mallas = [] if mallas: for malla in mallas: periodo = self.periodo.obtener_periodo( {'id_periodo': malla[1]}) salon = self.salon.obtener_salon({'id_salon': malla[2]}) profesor_curso = self.profesor_curso.obtener_profesor_curso( {'id_profesor_curso': malla[3]}) curso = self.curso.obtener_curso( {'curso_id': profesor_curso[2]}) profesor = self.profesor.obtener_profesor( {'profesor_id': profesor_curso[1]}) notas_agregadas = self.nota.buscar_notas({ 'id_alumno': id_alumno_elegido, 'id_malla': malla[0] }) if not notas_agregadas: lista_mallas.append((malla[0], periodo[1], salon[1], curso[1], profesor[1])) print( print_table( lista_mallas, ['Codigo', 'Periodo Escolar', 'Salon', 'Curso', 'Profesor'])) id_malla_elegida = input_data('\nEscriba el codigo de la malla >> ', 'int') buscar_malla = self.malla.obtener_malla({'id_malla': id_malla_elegida}) if not buscar_malla: print('\nEsta malla no existe !') return notas_alumnos = self.nota.buscar_notas({ 'id_alumno': id_alumno_elegido, 'id_malla': id_malla_elegida }) if notas_alumnos: print( f'\nYa existe una nota para el alumno {buscar_alumno[1]} en el curso seleccionado !' ) return periodo = self.periodo.obtener_periodo({'id_periodo': buscar_malla[1]}) salon = self.salon.obtener_salon({'id_salon': buscar_malla[2]}) profesor_curso = self.profesor_curso.obtener_profesor_curso( {'id_profesor_curso': buscar_malla[3]}) curso = self.curso.obtener_curso({'curso_id': profesor_curso[2]}) profesor = self.profesor.obtener_profesor( {'profesor_id': profesor_curso[1]}) while True: print(f'\nAlumno: {buscar_alumno[1]}') print(f'Periodo: {periodo[1]}') print(f'Salon: {salon[1]}') print(f'Profesor: {profesor[1]}') print(f'Curso: {curso[1]}') nota_ingresada = input_data('\nNota: >> ', 'int') if nota_ingresada > 20: print("La nota ingresada debe ser menor a 20!") else: break self.nota.guardar_nota({ 'id_alumno': id_alumno_elegido, 'id_malla': id_malla_elegida, 'nota': nota_ingresada }) print(''' ============================== Se califico al alumno ! ============================== ''') input("\nPresione una tecla para continuar...")