def cadastrar(Professores): while True: matricula_prof = Professores.ultima_matricula + 1 # Leio o nome do professor nome_prof = recebe_nome() dados_prof = [matricula_prof, nome_prof] # Exibo os dados do professor print('\nVocê está criando o(a) seguinte professor(a):') exibir(dados_prof) # Checo se é para confirmar o cadastro if geral.perguntar('\nConfirmar cadastro? (s/n)'): # Se sim, cadastro o professor Professores.adicionar(matricula_prof, nome_prof) print('Cadastrando professor(a)...') break # Caso contrário, # Checo se não é para cadastrar um professor if not geral.perguntar('\nDeseja cadastrar um(a) professor(a)? (s/n)'): # Se sim, paro o loop break # Caso contrario repetimos o loop return Professores
def cadastrar(Disciplinas, Professores, Alunos): while True: # Leio o codigo codigo_disciplina = recebe_codigo() # Peço o código enquanto o codigo que foi digitado ja estiver cadastrado while Disciplinas.checar_codigo(codigo_disciplina): print('Esse código já foi cadastrado em outra disciplina.') codigo_disciplina = recebe_codigo() # Leio o nome da disciplina nome_disciplina = recebe_nome() # Leio os dias e horarios em que a disciplina irá acontecer dias_horarios = recebe_dias_horarios() # Leio o professor que ira ministrar essa disciplina matricula_prof = recebe_professor(dias_horarios, Disciplinas, Professores) # Leio o local da disciplina local = recebe_local(dias_horarios, Disciplinas) # Leio o número de vagas num_vagas = recebe_vagas() # Leio os alunos que serão matriculados nessa disciplina alunos_matriculados = recebe_alunos(dias_horarios, num_vagas, Disciplinas, Alunos) # Crio uma lista com os dados da disciplina, afim de facilitar nossa vida dados_disciplina = [ codigo_disciplina, nome_disciplina, dias_horarios, matricula_prof, local, num_vagas, alunos_matriculados ] print('\nVocê está criando a seguinte disciplina:') exibir(dados_disciplina) if geral.perguntar('\nConfirmar cadastro? (s/n)'): # Se sim, cadastro a disciplina Disciplinas.adicionar(dados_disciplina) print('Cadastrando disciplina...') # Paro o loop break # Caso contrário, # Checo se não é para cadastrar uma disciplina if not geral.perguntar('\nDeseja cadastrar uma disciplina? (s/n)'): # Se sim, paro o loop break # Caso contrário o looo ira se repetir return Disciplinas
def recebe_disciplina(lista_disciplinas, Disciplinas): while geral.perguntar( '\nDeseja matricular esse aluno em alguma disciplina? (s/n)'): # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar a disciplina que que o(a?) aluno(a) irá assistir?' # Realizo a busca para saber qual disciplina será assistida codigo_disciplina = disciplina.recebe_busca(pergunta_menu, Disciplinas) # Checo se a disciplina existe de fato if not Disciplinas.checar_codigo(codigo_disciplina): print('Por favor, digite uma disciplina válida.') continue dias_horarios = Disciplinas.lista[codigo_disciplina][1] vagas_disponiveis = Disciplinas.lista[codigo_disciplina][4] if codigo_disciplina in Disciplinas.matriculas: alunos_matriculados = Disciplinas.matriculas[codigo_disciplina] tam = len(alunos_matriculados) vagas_disponiveis -= tam if not vagas_disponiveis: print('Essa disciplina já está lotada.') continue # Se os horarios da disciplina chocarem com os do aluno if not disciplina.checar_disponibilidade(lista_disciplinas, dias_horarios, Disciplinas): # Exibimos uma mensagem de erro e rodamos o loop de novo print('Os horários do(a) aluno(a) chocam com o da disciplina.') continue nome_disciplina, dias_horarios, matricula_prof, local, num_vagas = Disciplinas.lista[ codigo_disciplina] alunos_matriculados = [] if codigo_disciplina in Disciplinas.matriculas: alunos_matriculados = Disciplinas.matriculas[codigo_disciplina] dados_disciplina = [ codigo_disciplina, nome_disciplina, dias_horarios, matricula_prof, local, num_vagas, alunos_matriculados ] print('\nVocê esta matriculando o(a) aluno(a) a seguinte disciplina:') disciplina.exibir(dados_disciplina) # Se for para cadastrar if geral.perguntar('\nConfirma? (s/n)'): # Retorno o codigo da disciplina return codigo_disciplina
def matricular(Alunos, Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar o(a) aluno(a) que você irá matricular em uma disciplina?' matricula_aluno = recebe_busca(pergunta_menu, Alunos, Disciplinas) if Alunos.checar_matricula(matricula_aluno): # Exibo o aluno nome_aluno, email, data_nasc = Alunos.lista[matricula_aluno] dados_aluno = [matricula_aluno, nome_aluno, email, data_nasc] print('\nVocê esta selecionando o(a) seguinte aluno(a):') exibir(dados_aluno) # Se não for esse professor, rodo o loop de novo if not geral.perguntar('\nConfirma? (s/n)'): continue # Fazemos uma lista com as disciplinas que ele assiste lista_disciplinas = [] if matricula_aluno in Disciplinas.alunos: lista_disciplinas = Disciplinas.alunos[matricula_aluno] # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar a disciplina que o(a) aluno(a) irá assistir?' codigo_disciplina = recebe_disciplina(lista_disciplinas, Disciplinas) if codigo_disciplina: Disciplinas.adicionar_aluno(codigo_disciplina, matricula_aluno) print('Matriculando aluno...') break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para matricular um aluno if not geral.perguntar( '\nDeseja matricular um(a) aluno(a) em alguma disciplina? (s/n)' ): # Se sim, paramos o loop break # Caso contrario, repetimos o loop return Disciplinas
def associar(Professores, Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar o(a) professor(a) que você irá associar a uma disciplina?' # Realizo a busca para saber qual professor vai ser removido matricula_prof = recebe_busca(pergunta_menu, Professores, Disciplinas) # Checo se o professor existe de fato if Professores.checar_matricula(matricula_prof): # Exibo o professor que você ira cadastrar print('\nVocê esta selecionando o seguinte professor(a):') exibir([matricula_prof, Professores.lista[matricula_prof]]) # Se não for esse professor, rodo o loop de novo if not geral.perguntar('\nConfirma? (s/n)'): continue lista_disciplinas = [] if matricula_prof in Disciplinas.professores: # Fazemos uma lista com as disciplinas que ele ministra lista_disciplinas = Disciplinas.professores[matricula_prof] codigo_disciplina = recebe_disciplina(lista_disciplinas, Disciplinas) if codigo_disciplina: Disciplinas.adicionar_professor(codigo_disciplina, matricula_prof) print('Associando professor à disciplina...') break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para associar um professor if not geral.perguntar( '\nDeseja associar um(a) professor(a) a alguma disciplina? (s/n)' ): # Se sim, paramos o loop break # Caso contrario, repetimos o loop return Disciplinas
def remover(Alunos, Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar o(a) aluno(a) que você irá remover?' # Realizo a busca para saber qual aluno vai ser removido matricula_aluno = recebe_busca(pergunta_menu, Alunos, Disciplinas) # Checo se o aluno existe de fato if Alunos.checar_matricula(matricula_aluno): nome_aluno, email, data_nasc = Alunos.lista[matricula_aluno] dados_aluno = [matricula_aluno, nome_aluno, email, data_nasc] print('\nExibindo o(a) aluno(a):') exibir(dados_aluno) # Checo se é para confirmar a remoção if geral.perguntar('\nConfirmar remoção? (s/n)'): # Se sim, removo o aluno if matricula_aluno in Disciplinas.alunos: lista_disciplinas = [] for codigo_disciplina in Disciplinas.alunos[ matricula_aluno]: lista_disciplinas.append(codigo_disciplina) for codigo in lista_disciplinas: Disciplinas.deletar_aluno(codigo, matricula_aluno) Alunos.deletar(matricula_aluno) print('Removendo aluno(a)...') # Paro o loop break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para remover um professor if not geral.perguntar('\nDeseja remover um(a) aluno(a)? (s/n)'): # Se sim, paro o loop break # Caso contrario, repetimos o loop return [Alunos, Disciplinas]
def recebe_disciplina(lista_disciplinas, Disciplinas): while geral.perguntar( '\nDeseja associar alguma disciplina à esse professor? (s/n)'): # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar a disciplina que o professor irá ministrar?' # Realizo a busca para saber qual disciplina será ministrada codigo_disciplina = disciplina.recebe_busca(pergunta_menu, Disciplinas) # Checo se a disciplina existe de fato if not Disciplinas.checar_codigo(codigo_disciplina): print('Por favor, digite uma disciplina válida.') continue dias_horarios = Disciplinas.lista[codigo_disciplina][1] matricula_prof = Disciplinas.lista[codigo_disciplina][2] if matricula_prof: print('Essa disciplina já tem um professor associado.') continue # Se os horarios da disciplina chocarem com os do professor if not disciplina.checar_disponibilidade(lista_disciplinas, dias_horarios, Disciplinas): # Exibimos uma mensagem de erro e rodamos o loop de novo print('Os horários do(a) professor(a) chocam com o da disciplina.') continue nome_disciplina, dias_horarios, matricula_prof, local, num_vagas = Disciplinas.lista[ codigo_disciplina] alunos_matriculados = [] if codigo_disciplina in Disciplinas.matriculas: alunos_matriculados = Disciplinas.matriculas[codigo_disciplina] dados_disciplina = [ codigo_disciplina, nome_disciplina, dias_horarios, matricula_prof, local, num_vagas, alunos_matriculados ] print('\nVocê esta associando a seguinte disciplina ao professor(a):') disciplina.exibir(dados_disciplina) # Se for para cadastrar if geral.perguntar('\nConfirma? (s/n)'): # Retorno o codigo da disciplina return codigo_disciplina
def remover(Professores, Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar o professor que você irá remover?' # Realizo a busca para saber qual professor vai ser removido matricula_prof = recebe_busca(pergunta_menu, Professores, Disciplinas) # Checo se o professor existe de fato if Professores.checar_matricula(matricula_prof): # Exibo o professor antes de remove-lo print('\nExibindo o(a) professor(a):') exibir([matricula_prof, Professores.lista[matricula_prof]]) # Checo se é para confirmar a remoção if geral.perguntar('\nConfirmar remoção? (s/n)'): # Se sim, removo o professor if matricula_prof in Disciplinas.professores: lista_disciplinas = [] for codigo_disciplina in Disciplinas.professores[ matricula_prof]: lista_disciplinas.append(codigo_disciplina) for codigo in lista_disciplinas: Disciplinas.deletar_professor(codigo, matricula_prof) Professores.deletar(matricula_prof) print('Removendo professor(a)...') # Paro o loop break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para remover um professor if not geral.perguntar('\nDeseja remover um(a) professor(a)? (s/n)'): # Se sim, paramos o loop break # Caso contrario, repetimos o loop return [Professores, Disciplinas]
def remover(Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar a disciplina que você irá remover?' # Realizo a busca para saber qual disciplina vai ser removida codigo_disciplina = recebe_busca(pergunta_menu, Disciplinas) # Checo se a disciplina existe de fato if Disciplinas.checar_codigo(codigo_disciplina): nome_disciplina, dias_horarios, matricula_prof, local, num_vagas = Disciplinas.lista[ codigo_disciplina] alunos_matriculados = [] if codigo_disciplina in Disciplinas.matriculas: alunos_matriculados = Disciplinas.matriculas[codigo_disciplina] dados_disciplina = [ codigo_disciplina, nome_disciplina, dias_horarios, matricula_prof, local, num_vagas, alunos_matriculados ] print('\nExibindo disciplina:') exibir(dados_disciplina) # Checo se é para confirmar a remoção if geral.perguntar('\nConfirmar remoção? (s/n)'): # Se sim, removo a disciplina Disciplinas.deletar(codigo_disciplina) print('Removendo disciplina...') # Paro o loop break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para remover uma disciplina if not geral.perguntar('\nDeseja remover uma disciplina? (s/n)'): # Se sim, paro o loop break # Caso contrario o loop irá se repetir return Disciplinas
def cadastrar(Alunos): while True: # Coloco a matricula do aluno matricula_aluno = Alunos.ultima_matricula + 1 # Leio o nome do aluno nome_aluno = recebe_nome() # Leio o email do aluno email = recebe_email() # Leio a data de nascimento do aluno data_nasc = recebe_data() # Crio uma lista com os dados do aluno, afim de facilitar nossa vida dados_aluno = [matricula_aluno, nome_aluno, email, data_nasc] # Exibo os dados do aluno print('\nVocê está criando o(a) seguinte aluno(a):') exibir(dados_aluno) # Checo se é para confirmar o cadastro if geral.perguntar('\nConfirmar cadastro? (s/n)'): # Se sim, cadastro o aluno Alunos.adicionar(dados_aluno) print('Cadastrando aluno(a)...') # Paro o loop break # Caso contrário, # Checo se não é para cadastrar um aluno if not geral.perguntar('\nDeseja cadastrar um(a) aluno(a)? (s/n)'): # Se sim, paro o loop break # Caso contrario, repetimos o loop return Alunos
def recebe_aluno(dias_horarios, Disciplinas, Alunos): while geral.perguntar( '\nDeseja matricular um(a) aluno(a) à essa disciplina?'): # Definimos a pergunta que será exibida com o menu de busca pelo aluno pergunta_menu = '\nComo deseja achar o aluno que você irá matricular?' matricula_aluno = aluno.recebe_busca(pergunta_menu, Alunos, Disciplinas) # Se o aluno não existe rodamos o loop de novo if not matricula_aluno: print('Por favor, digite um aluno válido.') continue # Se o chegamos até aqui significa que a matricula do aluno digitado é válida. # Se o aluno já assiste alguma aula, checamos sua disponibilidade. if matricula_aluno in Disciplinas.alunos: # Fazemos uma lista com as disciplinas que ele assiste lista_disciplinas = Disciplinas.alunos[matricula_aluno] if not checar_disponibilidade(lista_disciplinas, dias_horarios, Disciplinas): # Exibimos uma mensagem de erro e rodamos o loop de novo print('Os horários do(a) aluno(a) chocam com o da disciplina.') continue # Exibo o aluno que você ira matricular nome_aluno, email, data_nasc = Alunos.lista[matricula_aluno] dados_aluno = [matricula_aluno, nome_aluno, email, data_nasc] # Exibo o aluno que você ira cadastrar print('\nVocê esta matriculando o(a) seguinte aluno(a) à disciplina:') aluno.exibir(dados_aluno) # Se for para cadastrar if geral.perguntar('\nConfirmar matrícula? (s/n)'): # Retorno a matricula do aluno return matricula_aluno
def recebe_professor(dias_horarios, Disciplinas, Professores): while geral.perguntar( '\nVocê deseja cadastrar um(a) professor(a) à essa disciplina?'): # Definimos a pergunta que será exibida com o menu de busca pelo professor pergunta_menu = '\nComo deseja achar o professor que você irá cadastrar?' matricula_prof = professor.recebe_busca(pergunta_menu, Professores, Disciplinas) # Se o professor não existe rodamos o loop de novo if not matricula_prof: print('Por favor, digite um professor válido.') continue # Se o chegamos até aqui significa que o código do professor digitado é válido. # Se o professor já ministra alguma aula, checamos sua disponibilidade. if matricula_prof in Disciplinas.professores: # Fazemos uma lista com as disciplinas que ele ministra lista_disciplinas = Disciplinas.professores[matricula_prof] # Se o professor não tiver disponibilidade if not checar_disponibilidade(lista_disciplinas, dias_horarios, Disciplinas): # Exibimos uma mensagem de erro e rodamos o loop de novo print( 'Os horários do(a) professor(a) chocam com o da disciplina.' ) continue # Exibo o professor que você ira cadastrar print('\nVocê esta cadastrando o seguinte professor(a) à disciplina:') professor.exibir([matricula_prof, Professores.lista[matricula_prof]]) # Se for para cadastrar if geral.perguntar('\nConfirmar cadastro? (s/n)'): # Retorno a matricula do professor return matricula_prof
def modificar(Professores, Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar o(a) professor(a) que você irá modificar?' # Realizo a busca para saber qual professor vai ser alterado matricula_prof = recebe_busca(pergunta_menu, Professores, Disciplinas) # Checo se o professor existe de fato if Professores.checar_matricula(matricula_prof): # Leio a alteração no professor novo_nome_prof = recebe_nome() # Exibo o professor com a alteração print('\nExibindo professor(a) após as alterações:') exibir([matricula_prof, novo_nome_prof]) # Checo se é para confirmar a modificação if geral.perguntar('\nConfirmar modificação? (s/n)'): # Se sim, altero o professor Professores.alterar(matricula_prof, novo_nome_prof) print('Modificando professor(a)...') # Paro o loop break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para modificar um professor if not geral.perguntar('\nDeseja modificar um(a) professor(a)? (s/n)'): # Se sim, paro o loop break # Caso contrario repetimos o loop return Professores
def recebe_dias_horarios(): while True: print('\nLendo a grade de dias e horários:') # Vamos ler os dias e os hórarios de uma disciplina dias_horarios = {} dias_semana = ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab'] for dia in dias_semana: print( '\nCaso desejar não cadastrar mais nenhum horário, digite -1.') print(f'{dia}: ', end='') dias_horarios[dia] = [] while True: inicio = recebe_horario(0) if inicio == '-1': break final = recebe_horario(1) if inicio < final: dias_horarios[dia].append(f'{inicio}-{final}') else: print( 'O inicio da aula precisa acontecer antes que seu termino.' ) if valida_dias_horarios(dias_horarios): print('\nA disciplina acontecerá nos seguintes dias e horários:') print(converte_dias_horarios_str(dias_horarios)) if geral.perguntar( '\nConfirmar o cadastro desses horários? (s/n)'): return dias_horarios print( 'Por favor, digite uma grade de horários válida com no mínimo um horário cadastrado e sem sobreposições.' )
def modificar(Disciplinas, Professores): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar a disciplina que você irá modificar?' # Realizo a busca para saber qual disciplina vai ser alterada codigo_disciplina = recebe_busca(pergunta_menu, Disciplinas) # Checo se a disciplina existe de fato: if Disciplinas.checar_codigo(codigo_disciplina): # Crio uma lista com as possiveis modificações na disciplina opcoes_modificacoes_disciplina = [ '\nDeseja modificar o Nome da Disciplina?', '\nDeseja modificar a Lista de dias e horários?', '\nDeseja modificar o Professor que ministra a disciplina?', '\nDeseja modificar o Local?', '\nDeseja modificar o Número de Vagas?' ] # Crio um vetor que vai conter os novos dados da disciplina novos_dados = [codigo_disciplina] # Percorro a lista de possiveis modificações, checando se é ou não para alterar esse dado da disciplina for opcao in range(5): # A pergunta a alteracao em questão pergunta_modificar = opcoes_modificacoes_disciplina[opcao] # O valor do dado que será adicionado a disciplina ou o mesmo que antes se não alterarmos nada adicionar = Disciplinas.lista[codigo_disciplina][opcao] # Checo se é para alterar o dado if geral.perguntar(pergunta_modificar): # Se sim realizo a alteração adicionar = recebe_modificacoes(opcao, codigo_disciplina, Disciplinas, Professores) # Adiciono o dado na lista atualizado na disciplina novos_dados.append(adicionar) alunos_matriculados = [] if codigo_disciplina in Disciplinas.matriculas: alunos_matriculados = Disciplinas.matriculas[codigo_disciplina] novos_dados.append(alunos_matriculados) print('\nExibindo disciplina após as alterações:') exibir(novos_dados) # Checo se é para confirmar a modificação if geral.perguntar('\nConfirmar modificação? (s/n)'): novos_dados.remove(alunos_matriculados) # Se sim, altero a disciplina Disciplinas.alterar(novos_dados) print('Modificando disciplina...') # Paro o loop break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para modificar uma disciplina if not geral.perguntar('\nDeseja modificar uma disciplina? (s/n)'): # Se sim, paro o loop break # Caso contrario o loop irá se repetir return Disciplinas
def modificar(Alunos, Disciplinas): while True: # Defino a pergunta que será exibida junto com o menu de busca pergunta_menu = '\nComo deseja achar o(a) aluno(a) que você irá modificar?' # Realizo a busca para saber qual aluno vai ser alterado matricula_aluno = recebe_busca(pergunta_menu, Alunos, Disciplinas) # Checo se o aluno existe de fato if Alunos.checar_matricula(matricula_aluno): # Crio uma lista com as possiveis modificações no aluno opcoes_modificacoes_aluno = [ '\nDeseja modificar o Nome do Aluno?', '\nDeseja modificar o Email do Aluno?', '\nDeseja modificar a data de nascimento do Aluno?' ] # Crio um vetor que vai conter os novos dados do aluno novos_dados = [matricula_aluno] # Percorro a lista de possiveis modificações, checando se é ou não para alterar esse dado do aluno for opcao in range(3): # A pergunta a alteracao em questão pergunta_modificar = opcoes_modificacoes_aluno[opcao] # O valor do dado que será adicionado ao aluno ou o mesmo que antes se não alterarmos nada adicionar = Alunos.lista[matricula_aluno][opcao] # Checo se é para alterar o dado if geral.perguntar(pergunta_modificar): # Se sim realizo a alteração adicionar = recebe_modificacoes(opcao) # Adiciono o dado na lista atualizado no aluno novos_dados.append(adicionar) # Exibo o aluno com a alteração print('\nExibindo aluno(a) após as alterações:') exibir(novos_dados) # Checo se é para confirmar a modificação if geral.perguntar('\nConfirmar modificação? (s/n)'): # Se sim, altero o aluno Alunos.alterar(novos_dados) print('Modificando aluno(a)...') # Paro o loop break # Caso alguma das checagens anteriores não seja verdadeira, # Checo se não é para modificar um aluno if geral.perguntar('\nDeseja modificar um(a) aluno(a)? (s/n)'): # Se sim, paro o loop break # Caso contrario, repetimos o loop return Alunos