Projeto 5 - Instituíte
Componentes: Gustavo Henrique Alves, Pedro Eduardo Kohlbeck Siqueira
Objetivos: Neste trabalho nós criamos um programa em python com o intuito de realizar inscrições de alunos e professores em escolas, o usuário poderá cadastrar alunos e professores em suas respectivas classes, pegar suas informações e alterá-las se desejar. Esses indivíduos serão adicionados a uma escola a escolha e será registrado como um integrante da tal utilizando uma lista de professores ou alunos existente na respectiva classe da escola. Esses dados serão armazenados na escola e futuramente os mesmos poderão ser lidos ou alterados, a escolha do usuário.
Metodologia de desenvolvimento: Para a criação do código, utilizamos um bloco de notas para criar um esboço, contendo todas as classes e seus respectivos atributos e métodos, por conta da facilidade de modificação; o desenvolvimento foi feito com a linguagem de programação Python, a qual foi escolhido pelo professor. Durante o processo da criação do código, foi separado para cada aluno da equipe as classes, escolhida de forma aleatória, para que cada aluno pudesse participar de forma ativa. Foi criado também uma regra de nomenclatura, métodos responsáveis pelo retorno de dados possui ‘Get’, junto a oque a função retornaria, (GetNome – Retorna o nome do indivíduo), da mesma forma funções com ‘Set’, a frente do nome da função, aplicaria ao dado escolhido um certo valor (SetNome – Atualiza o dado Nome do indivíduo). Para a nomenclatura das classes foi escolhido deixar a palavra ‘Classe’ a frente da respectiva classe. As classes ClasseAluno e ClasseProfessor ficaram separadas, por conta da facilidade de desenvolvimento.
Projeto 5 - código fonte
# Classe Pessoa
class ClassePessoa:
__Nome = None
__Idade = None
__Sexo = None
def __init__(self, Nome : str, Idade : int,Sexo : str):
self.__Nome = Nome
self.__Idade = Idade
self.__Sexo = Sexo
def GetNome(self) -> str:
return self.__Nome
def SetNome(self, Nome):
self.__Nome = Nome
return True
def GetIdade(self) -> int:
return self.__Idade
def SetIdade(self, Idade):
self.__Idade = Idade
return True
def GetSexo(self) -> str:
return self.__Sexo
def SetSexo(self, sexo):
self.__Sexo = sexo
return Trueimport Pessoa
# Classes Professor e Aluno
import pessoa
def RetornarProfessor(Professores, Instituicoes):
print("Lista de professores...")
if len(Professores) == 0:
print("Lista de professores vazia")
return False
for i in range(len(Professores)):
print(f"\t{i} | Nome: ", Professores[i].GetNome())
item = int(input("Escolha um dos item acima: "))
if item > len(Professores):
print("Opção invalida!")
opcao = 0
while opcao != -1:
print("\t1 = Atualizar dados")
print("\t2 = Retornar dados")
print("\t-1 = Sair")
opcao = int(input("Opcao: "))
if opcao == -1:
break
if opcao == 1:
print("\t1 = Salario")
print("\t2 = Nome")
print("\t3 = Grau Escolar")
print("\t4 = Adicionar à Instituição")
sel = int(input("Opcao: "))
if sel == 1:
salario = input("Digite o novo salario: ")
Professores[item].SetSalario(salario)
if sel == 2:
nome = input("Digite o novo nome: ")
Professores[item].SetNome(nome)
if sel == 3:
grau = input("Digite o novo Grau Escolar: ")
Professores[item].SetGrauEscolar(grau)
if sel == 4:
if len(Instituicoes) == 0:
print("Lista de instituições vazia")
pass
for j in range(len(Instituicoes)):
print(F"{j} | Nome: ", Instituicoes[j].GetNome())
inst = int(input("Selecione a instituição: "))
if inst > len(Instituicoes):
print("Instituição invalida!")
continue
Professores[item].SetInstituicao(Instituicoes[inst])
Instituicoes[inst].UpdateProfessores(Professores[item])
if opcao == 2:
print("Nome: ", Professores[item].GetNome())
x = Professores[item].GetInstitucao()
if x != None:
print("Instituição\t", x.GetNome())
print("Salario:\t", Professores[item].GetSalario())
print("GrauEscolar:\t", Professores[item].GetGrauEscolar())
return True
class ClasseProfessor(Pessoa.ClassePessoa):
__Salario = None
__GrauEscolar = None
__Instituicao = None
def __init__(self,Nome : str, Idade : int, Sexo : str, Salario : float, GrauEscolar : str, Concursado : bool):
super().__init__(Nome, Idade, Sexo)
self.__Salario = Salario
self.__GrauEscolar = GrauEscolar
self.__Concursado = Concursado
self.__Instituicao = None
def GetSalario(self) -> float:
return self.__Salario
def SetSalario(self, SalarioNovo):
self.__Salario = SalarioNovo
return True
def GetGrauEscolar(self) -> str:
return self.__GrauEscolar
def SetGrauEscolar(self, GrauNovo):
self.__GrauEscolar = GrauNovo
return True
def SetInstituicao(self, InstituicaoNova):
self.__Instituicao = InstituicaoNova
return True
def GetInstitucao(self):
return self.__Instituicaoimport Pessoa
class ClasseAluno(Pessoa.ClassePessoa):
__Matricula = None
__Notas = []
__Media = 0.0
__Fase = None
def __init__(self,Nome : str, Idade : int, Sexo : str, Mat : str, Fase : str):
super().__init__(Nome, Idade, Sexo)
self.__Matricula = Mat
self.__Fase = Fase
self.__Notas = []
self.__Media = 0.0
def SetMatricula(self, matricula):
self.__Matricula = matricula
return True
def GetMatricula(self) -> str:
return self.__Matricula
def SetNota(self, nota):
self.__Notas.append(nota)
soma = 0
for e in self.__Notas:
soma += e
self.__Media = soma/len(self.__Notas)
return True
def GetNota(self):
return self.__Notas
def SetFase(self, fase):
self.__Fase = fase
def GetMedia(self):
return self.__Media
# Classes Institução, EscolaPublica e EscolaPrivada
#! /usr/bin/python3
class Instituicao:
__Nome = None
__NotaInstitucional = None
__Alunos = []
__Professores = []
__Turmas = []
def __init__(self):
self.__Nome = None
self.__NotaInstitucional = None
self.__Alunos = []
self.__Professores = []
self.__Turmas = []
def SetNome(self, Nome : str) -> bool:
self.__Nome = Nome
return True
def GetNome(self):
return self.__Nome
def SetNota(self, Nota : float) -> bool:
self.__NotaInstitucional = Nota
return True
def GetNota(self) -> float:
return self.__NotaInstitucional
def GetAlunos(self) -> []:
return self.__Alunos
def UpdateAlunos(self, Aluno) -> bool:
self.__Alunos.append(Aluno)
return True
def GetProfessores(self) -> []:
return self.__Professores
def UpdateProfessores(self, Professor) -> bool:
self.__Professores.append(Professor)
return True
class EscolaPublica(Instituicao):
__Tipo = None
__Fundo = None
__Diretor = None
def __init__(self, Tipo : str, Fundo : int, Diretor : str):
self.__Tipo = Tipo
self.__Fundo = Fundo
self.__Diretor = Diretor
def GetTipo(self):
return self.__Tipo
def SetTipo(self, Tipo : str):
self.__Tipo = Tipo
return True
def GetFundos(self):
return self.__Fundo
def SetFundos(self, Fundos : int):
self.__Fundo = Fundos
return True
def GetDiretor(self):
return self.__Diretor
def SetDiretor(self, Diretor : str):
self.__Diretor = Diretor
return True
class EscolaPrivada(Instituicao):
__CNPJ = None
__Dono = None
def __init__(self, CNPJ : str, Dono : str):
self.__CNPJ = CNPJ
self.__Dono = Dono
def GetCNPJ(self) -> str:
return self.__CNPJ
def GetDono(self) -> str:
return self.__Dono
def SetDono(self, NovoDono : str):
self.__Dono = NovoDono
return True
# Arquivo APP, utilizando as classes e funções dos arquivos separados
#! /usr/bin/python3
from Classes import EscolaPublica, EscolaPrivada
from Professor import ClasseProfessor
from Aluno import ClasseAluno
Instituicoes = []
Professores = []
Alunos = []
def mostrar_professores():
print("Lista de Professores:")
for i, professor in enumerate(Professores):
print(f"{i} | Nome: {professor.GetNome()}")
item = int(input("Escolha um dos itens acima: "))
print("\t1 = Atualizar dados")
print("\t2 = Retornar dados")
opcao = int(input("Escolha uma opcao: "))
if opcao == 1:
print("\t1 = Salario")
print("\t2 = Nome")
print("\t3 = Grau Escolar")
print("\t4 = Adicionar à Instituição")
opcao = int(input("Opcao: "))
if opcao == 1:
salario = input("Digite o novo salario: ")
Professores[item].SetSalario(salario)
elif opcao == 2:
nome = input("Digite o novo nome: ")
Professores[item].SetNome(nome)
elif opcao == 3:
grau = input("Digite o novo Grau Escolar: ")
Professores[item].SetGrauEscolar(grau)
elif opcao == 4:
if Instituicoes:
for j, instituicao in enumerate(Instituicoes):
print(f"{j} | Nome: {instituicao.GetNome()}")
inst = int(input("Selecione a instituição: "))
Instituicoes[inst].UpdateProfessores(Professores[item])
else:
print("Lista de instituições vazia")
elif opcao == 2:
print("Nome:", Professores[item].GetNome())
print("\tSalario:", Professores[item].GetSalario())
print("\tGrau Escolar:", Professores[item].GetGrauEscolar())
def adicionar_professor():
nome = input("Digite o nome: ")
idade = input("Digite a idade: ")
sexo = input("Digite o Sexo: ")
salario = float(input("Digite o salario: "))
grau = input("Digite o grau escolar: ")
concursado = bool(input("Concursado: 1 para sim, 0 para não: "))
professor = ClasseProfessor(nome, idade, sexo, salario, grau, concursado)
Professores.append(professor)
print("\tAdicionar à Instituição")
if Instituicoes:
for j, instituicao in enumerate(Instituicoes):
print(f"{j} | Nome: {instituicao.GetNome()}")
inst = int(input("Selecione a instituição: "))
Instituicoes[inst].UpdateProfessores(professor)
else:
print("Lista de instituições vazia")
def mostrar_alunos():
print("Lista de Alunos:")
for i, aluno in enumerate(Alunos):
print(f"{i} | Nome: {aluno.GetNome()}")
item = int(input("Escolha um dos itens acima: "))
print("\t1 = Atualizar dados")
print("\t2 = Retornar dados")
opcao = int(input("Escolha uma opcao: "))
if opcao == 1:
print("\t1 = Adicionar Nota")
print("\t2 = Nome")
print("\t3 = Fase")
opcao = int(input("Opcao: "))
if opcao == 1:
qtd = int(input("Digite a quantidade de notas: "))
for i in range(qtd):
nota = float(input("Digite a nota: "))
Alunos[item].SetNota(nota)
elif opcao == 2:
nome = input("Digite o novo nome: ")
Alunos[item].SetNome(nome)
elif opcao == 3:
fase = input("Digite o nova fase: ")
Alunos[item].SetFase(fase)
elif opcao == 2:
print("Nome:", Alunos[item].GetNome())
print("\tMatricula:", Alunos[item].GetMatricula())
print("\tNotas:", Alunos[item].GetNota())
print("\tMedia:", Alunos[item].GetMedia())
def adicionar_aluno():
nome = input("Digite nome: ")
idade = input("Digite a idade: ")
sexo = input("Digite o Sexo: ")
matricula = input("Digite a matrícula do aluno: ")
fase = input("Digite a fase atual: ")
aluno = ClasseAluno(nome, idade, sexo, matricula, fase)
acao = int(input("Deseja adicionar alguma nota? Digite 1 para sim, ou 0 para não: "))
if acao == 1:
quantidade_notas = int(input("Digite a quantidade de notas: "))
for i in range(quantidade_notas):
nota = float(input(f"Digite a nota {i + 1}: "))
aluno.SetNota(nota)
elif acao == 0:
pass
else:
print("Opção inválida. Por favor, digite 1 para sim ou 0 para não.")
Alunos.append(aluno)
def mostrar_instituicoes():
print("Lista de Instituições:")
for i, instituicao in enumerate(Instituicoes):
print(f"{i} | Nome: {instituicao.GetNome()}")
item = int(input("Escolha um dos itens acima: "))
print("\t1 = Atualizar dados")
print("\t2 = Retornar dados")
opcao = int(input("Escolha uma opcao: "))
if opcao == 1:
print("\t1 = Nome")
print("\t2 = Nota")
if isinstance(Instituicoes[item], EscolaPublica):
print("\t3 = Tipo")
print("\t4 = Fundo")
print("\t5 = Diretor")
elif isinstance(Instituicoes[item], EscolaPrivada):
print("\t6 = CNPJ")
print("\t7 = Dono")
opcao = int(input("Opcao: "))
if opcao == 1:
nome = input("Digite o novo nome: ")
Instituicoes[item].SetNome(nome)
elif opcao == 2:
nota = input("Digite o nova nota: ")
Instituicoes[item].SetNota(nota)
elif opcao == 3 and isinstance(Instituicoes[item], EscolaPublica):
tipo = input("Digite o novo tipo: ")
Instituicoes[item].SetTipo(tipo)
elif opcao == 4 and isinstance(Instituicoes[item], EscolaPublica):
fundo = input("Digite o novo fundo: ")
Instituicoes[item].SetFundo(fundo)
elif opcao == 5 and isinstance(Instituicoes[item], EscolaPublica):
diretor = input("Digite o novo diretor: ")
Instituicoes[item].SetDiretor(diretor)
elif opcao == 6 and isinstance(Instituicoes[item], EscolaPrivada):
cnpj = input("Digite o novo CNPJ: ")
Instituicoes[item].SetCnpj(cnpj)
elif opcao == 7 and isinstance(Instituicoes[item], EscolaPrivada):
dono = input("Digite o novo dono: ")
Instituicoes[item].SetDono(dono)
elif opcao == 2:
print("Nome:", Instituicoes[item].GetNome())
print("\tNota:", Instituicoes[item].GetNota())
if isinstance(Instituicoes[item], EscolaPublica):
print("\tTipo:", Instituicoes[item].GetTipo())
print("\tFundo:", Instituicoes[item].GetFundo())
print("\tDiretor:", Instituicoes[item].GetDiretor())
elif isinstance(Instituicoes[item], EscolaPrivada):
print("\tCNPJ:", Instituicoes[item].GetCnpj())
print("\tDono:", Instituicoes[item].GetDono())
def adicionar_instituicao():
nome = input("Digite nome da instituição: ")
nota = input("Digite a nota da instituição: ")
types = int(input("Instituição é pública ou privada: (digite 1 para pública e 2 para privada): "))
inst = Classes.Instituicao()
inst.SetNome(nome)
inst.SetNota(nota)
if types == 1:
tipo = input("Digite o tipo da escola: (municipal ou estadual) ")
fundo = input("Quantidade de fundo da instituição: ")
diretor = input("Nome do diretor: ")
pub = EscolaPublica(tipo, fundo, diretor)
Instituicoes.append(pub)
elif types == 2:
cnpj = input("Digite o CNPJ da instituição: ")
dono = input("Digite o nome do dono da instituição: ")
priv = EscolaPrivada(cnpj, dono)
Instituicoes.append(priv)
else:
print("Digite uma opção válida...")
def start_menu():
while True:
print("Menu:")
print("\t0 = Retornar Professores")
print("\t1 = Adicionar Professor")
print("\t2 = Retornar Alunos")
print("\t3 = Adicionar Alunos")
print("\t4 = Retornar Instituicao")
print("\t5 = Adicionar Instituicao")
print("\t-1 = Sair")
sel = int(input("Opção: "))
if sel == -1:
print("Saindo...")
break
if sel == 0:
mostrar_professores()
elif sel == 1:
adicionar_professor()
elif sel == 2:
mostrar_alunos()
elif sel == 3:
adicionar_aluno()
elif sel == 4:
mostrar_instituicoes()
elif sel == 5:
adicionar_instituicao()
else:
print("Opção inválida. Tente novamente.")
if __name__ == "__main__":
print("Hello, Main!")
# Criar duas instituições
EscolaA = EscolaPublica("Estadual", 1555, "Carlos")
EscolaB = EscolaPrivada("12234", "Jose")
start_menu()