Esempio n. 1
0
def _turmas_por_professor():
    professores = importar_tabela()
    while True:
        try:
            ord = int(input("Entre o número (ORD) do professor para impressão de relatório por turmas  (0 - aborta):\n"))
            if ord < 0 or ord > len(professores):
                raise ValueError
        except ValueError:
            print("Entrada inválida :( tente novamente...")
            continue
        if ord == 0:
            print("Operação abortada")
            return
        break
    ord -= 1
    while True:
        periodo = input("Qual período (Enter = todos)?\n")
        if periodo == '' or f.validar_periodo(periodo):
            break
        else:
            print("Entrada inválida :( formato AAAA.S A=Ano, S= Semestre")

    turmas = importar_turmas_professor(professores[ord][0])
    if periodo != '':
        # filtra lista de turmas (var. turmas) incluindo só turmas do período solicitado
        turmas = [t for t in turmas if t[2] == periodo]
    else:
        # ordena por período, quando relatório inclui todos os períodos
        turmas.sort(key=lambda t: t[2])
    if len(turmas) == 0:
        print("Não há turmas vinculadas a esse professor no(s) período(s) selecionado(s)")
        return
    turmas = [t[1:] for t in turmas]
    f.imprimir_tabela(cabeçalho_turmas, turmas)
Esempio n. 2
0
def disciplinas():
    # loop para input de opção de menu com bloco try-except para forçar
    # o usuário a entrar uma opção válida:
    while True:
        print("Cadastro de disciplinas".upper())
        f.imprimir_tabela(cabeçalho, lista)
        # imprime o número de cada opção e sua descrição:
        for opção, tupla in enumerate(opções):
            print("%d - %s" % (opção, tupla[0]))
        print("")

        try:
            opção = int(input("Entre o número da opção desejada: \n"))
            if opção < 0 or opção >= len(opções):
                raise ValueError
            print("Opção: %s" % (opções[opção][0]))
            # aqui Python executa o bloco 'except' caso a opção digitada (var. opção)
            # não exista na lista de opções do menu (var. opções):
        except ValueError:
            print("Opção inválida :(")
            continue

        # chama a função que executa a opção desejada;
        opções[opção][1]()
        if opção == 0:
            break  # retorna para o menu principal
Esempio n. 3
0
def _imprimir_ata():
    # imprime lista de turmas na tela e prontifica o usuário a entrar o número de ordem (ORD) da turma
    # cuja ata deseja imprimir
    _imprimir_turmas()
    while True:
        try:
            ord = int(input("Entre o número (ORD) da turma para impressão de ata (0 - aborta):\n"))
            if ord < 0 or ord > len(lista_turmas):
                raise ValueError
        except ValueError:
            print("Entrada inválida :( tente novamente...")
            continue
        if ord == 0:
            print("Operação abortada")
            return
        break
    ord -= 1
    # pega a id da turma na lista de turmas
    id_turma = lista_turmas[ord][0]
    # pega o código da disciplina da turma
    codigo = lista_turmas[ord][3]
    # pega dados dos alunos vinculados à turma usando a lista de referência de alunos matriculados na turma
    # (lista_alunos) e a função acha_aluno (módulo alunos)
    lista = [x for aluno in lista_alunos if aluno[0] == id_turma for x in [acha_aluno(aluno[1])]]
    # exibe aviso e retorna caso não haja alunos matriculados nessa turma ainda
    if len(lista) == 0:
        print("Não há alunos inscritos nessa turma, nada a listar.")
        return
    # acrescenta campos para impressão relativos à nota e assinatura do aluno (último campo)
    for x in lista:
        x.insert(0, '')
        x.append('')
    # ordena lista por nome de aluno
    lista.sort(key=lambda aluno: aluno[2])
    # imprime barra superior do relatório na tela (sequencia de caracteres '=') com largura
    # igual à largura da ata a ser impressa
    larguras = cabeçalho_ata.values()
    largura = sum([int(x) for x in larguras]) + 2*(len(larguras) + 1)
    print("="*largura)
    # imprime cabeçalho centrado
    print()
    print(('{:^' + str(largura) + '}').format("universidade federal rural de pernambuco".upper()))
    print(('{:^' + str(largura) + '}').format('Ata de Exercício'))
    # imprime data e hora da emissão da ata (centrados)
    agora = datetime.datetime.now()
    print()
    print(('{:^' + str(largura) + '}').format(agora.strftime("%d/%m/%y - %H:%M")))
    # imprime informações sobre a turma e professor(es)
    print("Turma: %s" % (lista_turmas[ord][1]))
    print("Período: %s" % (lista_turmas[ord][2]))
    print("Código da disciplina: %s" % codigo)
    print("Nome da Disciplina: %s" % (acha_disciplina(codigo)[1]))
    print("Professor(es): %s" % (', '.join([acha_professor(x[1])[1] for x in lista_profs if x[0] == id_turma])))
    # imprime ata de presença
    print()
    f.imprimir_tabela(cabeçalho_ata, lista)
    # imprime barra inferior do relatório
    print()
    print("="*largura)
Esempio n. 4
0
def _imprimir_turmas():
    # copia a lista de turmas
    lista = f.copiar_lista(lista_turmas)

    # prepara a cópia da lista de turmas para impressão
    for turma in lista:
        # inclui nome da disciplina na cópia
        # a posição 3 contém o código da disciplina na lista das turmas;
        # a posição 1 da lista retornada pela busca contém o nome da disciplina
        turma.append(acha_disciplina(turma[3])[1])
        # inclui o(s) nome(s) do(s) professor(es) na listagem
        # lista os nomes dos professores (conteúdos na posição 1) dos resultados da busca pelos professores
        # e une-os com vírgula
        professores = ', '.join([x[1] for x in _acha_professores(turma[0])])
        turma.append(professores)
    #  elimina campo da id da turma antes de imprimir
    lista = [x[1:] for x in lista]
    # ordena lista por período da turma
    lista.sort(key=lambda turma: turma[1])
    f.imprimir_tabela(cabeçalho_turmas, lista)
Esempio n. 5
0
def _disciplinas_por_aluno():
    # entra CPF do aluno
    while True:
        cpf = input("Entre o CPF do aluno (0 - aborta):\n")
        if cpf == "0":
            print("Operação abortada")
            return
        if f.validar_cpf(cpf):
            cpf = f.formatar_cpf(cpf)
            # busca aluno
            aluno = acha_aluno(cpf)
            if aluno is None:
                print("Aluno com o CPF %s não encontrado" % cpf)
                continue
            print("CPF: %s, Aluno: %s" % (aluno[0], aluno[1]))
            break
        else:
            print("CPF inválido (somente algarismos, 11 dígitos): tente novamente")
    # busca turmas do aluno
    turmas = turmas_do_aluno(cpf)
    if turmas is None:
        print("Esse aluno não está matriculado em nenhuma disciplina")
        return
    # entra período
    while True:
        periodo = input("Qual período (Enter = todos)?\n")
        if periodo == '' or f.validar_periodo(periodo):
            break
        else:
            print("Entrada inválida :( formato AAAA.S A=Ano, S= Semestre")

    # seleciona período
    if periodo != '':
        turmas = [t for t in turmas if t[2] == periodo]
    if len(turmas) == 0:
        print("Esse aluno não está matriculado em nenhuma disciplina no período %s" % periodo)
        return
    turmas = [t[1:] for t in turmas]
    f.imprimir_tabela(cabeçalho_turmas, turmas)
Esempio n. 6
0
def exportar_tabela():
    # função usada pelo módulo 'turmas' para composição de nova turma
    f.imprimir_tabela(cabeçalho, lista)     # printa lista atualizada de disciplinas
    return f.copiar_lista(lista)            # chama função auxiliar em 'ferramentas' para retornar cópia da lista
Esempio n. 7
0
def _imprime_cadastro():
    lista.sort(key=lambda cadastro: cadastro[1].lower())
    f.imprimir_tabela(cabeçalho, lista)
Esempio n. 8
0
def exportar_tabela():
    f.imprimir_tabela(cabeçalho, lista)
    return f.copiar_lista(lista)
Esempio n. 9
0
def _imprimir_alunos(id_turma):
    # imprime tabela mostrando os alunos matriculados na turma identificada por 'id_turma'
    lista = [x for aluno in lista_alunos if aluno[0] == id_turma for x in [acha_aluno(aluno[1])]]
    f.imprimir_tabela(cabeçalho_alunos, lista)
    return lista