Componentes: Luiz Fernando Munhoz, Rafael Cubas
Objetivos:
OBJETIVO GERAL
Desenvolver um sistema de gerenciamento acadêmico que permita a criação, visualização, modificação e exclusão de informações relacionadas a alunos e professores, incluindo a adição de notas para os alunos.
OBJETIVOS ESPECÍFICOS
Implementar a criação de alunos no sistema, permitindo a inclusão do nome e ID, evitando duplicidades de ID.
Implementar a criação de professores no sistema, incluindo informações como nome, disciplina e ID, evitando duplicidades de ID.
Permitir a adição de notas por professores a alunos específicos, associando as notas a disciplinas específicas e calculando automaticamente as médias.
Metodologia de desenvolvimento: A metodologia adotada para o desenvolvimento do sistema de gerenciamento acadêmico compreendeu diversas etapas. Inicialmente, foram definidos os requisitos fundamentais, identificando as funcionalidades cruciais para alunos e professores. A estruturação do código incluiu a implementação das classes base, estabelecendo heranças e relações coerentes. As funcionalidades foram então desenvolvidas, abrangendo desde a adição de alunos e professores até a integração de notas associadas a disciplinas específicas. A interface de usuário foi elaborada para facilitar a interação, utilizando bibliotecas como “os” para melhorar a experiência do usuário.
import os
class Pessoa:
def __init__(self, nome, id):
self.__nome = nome
self.__id = id
def exibirInformacoes(self):
print(f"Nome: {self.__nome}")
print(f"ID: {self.__id}")
def getNome(self):
return self.__nome
def getId(self):
return self.__id
def setNome(self, novoNome):
self.nome = novoNome
def setId(self, novoId):
self.__id = novoId
class Aluno(Pessoa):
def __init__(self, nome, id):
super().__init__(nome, id)
self.__notas = []
def getNotas(self):
return self.__notas
def setNotas(self, novasNotas):
self.__notas = novasNotas
def exibirInformacoes(self):
super().exibirInformacoes()
for nota in self.__notas:
print(f"Disciplina: {nota.disciplina}, notas: {nota.notas}")
self.calcularMedia(nota.notas)
def calcularMedia(self, notas):
media = 0
for nota in notas:
media += nota
media /= len(notas)
print(f"Média: {media:.2f}")
class Professor(Pessoa):
def __init__(self, nome, disciplina, id):
super().__init__(nome, id)
self.__disciplina = disciplina
def getDisciplina(self):
return self.__disciplina
def setDisciplina(self, novaDisciplina):
self.__disciplina = novaDisciplina
def adicionarNotas(self, aluno):
notas = []
while True:
nota = float(input("Qual a nota a ser adicionada? (-1 para terminar): "))
if(nota < 0 or nota > 10):
break
notas.append(nota)
novaNota = Nota(self.getDisciplina(), notas)
notasAluno = aluno.getNotas()
notasAluno.append(novaNota)
aluno.setNotas(notasAluno)
print(f"Notas adicionadas para o aluno {aluno.getNome()} ({aluno.getId()}): Disciplina: {self.getDisciplina()}, {notas}")
def exibirInformacoes(self):
super().exibirInformacoes()
print(f"Disciplina: {self.getDisciplina()}")
class Nota:
def __init__(self, disciplina, notas):
self.disciplina = disciplina
self.notas = notas
alunos = []
professores = []
def adicionarAluno():
os.system("cls")
nome = input("Qual o nome do aluno? ")
id = input("E qual sua id? ")
for aluno in alunos:
if(id == aluno.getId()):
print("\nID já cadastrado!")
return
aluno = Aluno(nome, id)
alunos.append(aluno)
os.system("cls")
print("Aluno criado!\n")
aluno.exibirInformacoes()
return
def adicionarProfessor():
os.system("cls")
nome = input("Qual o nome do professor? ")
disciplina = input("Qual disciplina ele ensina? ")
id = input("E qual sua id? ")
for professor in professores:
if(id == professor.getId()):
print("\nID já cadastrado!")
return
professor = Professor(nome, disciplina, id)
professores.append(professor)
os.system("cls")
print("Professor criado!\n")
professor.exibirInformacoes()
return
def adicionarNotas():
os.system("cls")
id = input("Qual a id do professor? ")
for professor in professores:
if(professor.getId() == id):
idAluno = input("Qual a id do aluno para adicionar as notas? ")
for aluno in alunos:
if(aluno.getId() == idAluno):
professor.adicionarNotas(aluno)
return
os.system("cls")
print("Aluno não encontrado")
return
os.system("cls")
print("Professor não encontrado")
return
def encontrarAluno():
os.system("cls")
print("Encontrar aluno")
id = input("Qual o id do aluno? ")
print("")
for aluno in alunos:
if(aluno.getId() == id):
aluno.exibirInformacoes()
return
os.system("cls")
print("Aluno não encontrado")
return
def excluirAluno():
os.system("cls")
id = input("Qual a ID do aluno a ser excluído? ")
indice = -1
for i in range(len(alunos)):
if(id == alunos[i].getId()):
indice = i
break
if(indice != -1):
print(f"Aluno excluido: {alunos[indice].getNome()}")
alunos.pop(indice)
return
print("Aluno não encontrado")
return
def excluirProfessor():
os.system("cls")
id = input("Qual a ID do professor a ser excluído? ")
indice = -1
for i in range(len(professores)):
if(id == professores[i].getId()):
indice = i
break
if(indice != -1):
print(f"Professor excluido: {professores[indice].getNome()}")
professores.pop(indice)
return
print("Professor não encontrado")
return
while True:
print("\nBem vindo!")
print('1 - Adicionar aluno')
print('2 - Adicionar professor')
print('3 - Exibir todos os alunos')
print('4 - Buscar um aluno e suas notas')
print('5 - Exibir todos os professores')
print('6 - Adicionar notas a um aluno')
print('7 - Excluir um aluno')
print('8 - Excluir um professor')
print('Outro número - Sair')
num = int(input('Digite um número: '))
print()
if(num < 1 or num > 8):
break
elif(num == 1):
adicionarAluno()
elif(num == 2):
adicionarProfessor()
elif(num == 3):
os.system("cls")
if(len(alunos) > 0):
print("Exibindo todos os alunos: \n")
for aluno in alunos:
aluno.exibirInformacoes()
print()
else:
print("Nenhum aluno na lista")
elif(num == 4):
encontrarAluno()
elif(num == 5):
os.system("cls")
if(len(professores) > 0):
print("Exibindo todos os professores: \n")
for professor in professores:
professor.exibirInformacoes()
print()
else:
print("Nenhum professor na lista")
elif(num == 6):
adicionarNotas()
elif(num == 7):
excluirAluno()
elif(num == 8):
excluirProfessor()
print("Programa finalizado")