models/repositorio_voluntarios.py
class RepositorioVoluntarios:
""" Classe que guarda a lista de voluntários cadastrados -- Lógica de Persistência """
lista_voluntarios = []
@classmethod
def adicionar_voluntario (cls, voluntario):
cls.lista_voluntarios.append (voluntario)
@classmethod
def remover_voluntario (cls, voluntario):
cls.lista_voluntarios.remove (voluntario)
@classmethod
def buscar_voluntario_por_id (cls, ID):
"""
Busca no Repositório de Voluntários o ID fornecido e retorna o nome, caso existir ou retorna False se não.
Parâmetros:
- ID: int
"""
for voluntario_iterador in cls.lista_voluntarios:
if voluntario_iterador.id == ID:
return voluntario_iterador
return False
@classmethod
def percorrer_lista_voluntarios (cls):
""" Percorre a lista de voluntários cadastrados e exibe o nome e o ID de cada um """
print (f"{"Nome".ljust(25)} | {"ID".ljust(25)}")
for voluntario_iterador in cls.lista_voluntarios:
print (f"{voluntario_iterador.nome.ljust(25)} | {str(voluntario_iterador.id).ljust(25)}")
models/voluntario.py
from models.repositorio_vonluntarios import RepositorioVoluntarios
class Voluntario:
""" Classe que representa uma pessoa voluntária ao serviço """
def __init__ (self, nome = "", id = 0):
"""
Contrutor da Classe
Parâmetros:
- Nome: String
- ID: Int
"""
self.nome = nome
self.id = id
main.py
from models.repositorio_vonluntarios import RepositorioVoluntarios
from models.voluntario import Voluntario
def exibir_apresentacao():
"""Exibe no console uma apresentação amigável ao usuário"""
print ("\nOlá, seja bem-vindo à ONG Ajudantes. Como podemos ajudar? \n")
def selecionar_opcoes():
"""Permite o usuário escolher uma opção dentre os serviços disponíveiss"""
opcao_usuario = input (
"1 - Cadastrar voluntário" \
"\n2 - Remover voluntário" \
"\n3 - Mostrar a lista de voluntários" \
"\n4 - Sair; \n Digite o número da opção desejada: ")
return opcao_usuario
def confirmador():
input("\nAperte qualquer tecla para continuar")
print("\n\n\n")
def main():
while True:
try:
exibir_apresentacao()
opcao_usuario = int (selecionar_opcoes())
if opcao_usuario == 1:
nome_voluntario = input("\nDigite o nome do voluntário(a): ").title()
id_voluntario = input("Digite o novo ID do voluntário(a): ").title()
if RepositorioVoluntarios.buscar_voluntario_por_id (id_voluntario):
print ("\nEsse ID já está sendo usado. Por favor, tente novamente")
confirmador()
else:
RepositorioVoluntarios.adicionar_voluntario (Voluntario (nome_voluntario, id_voluntario))
print (f"\nO(A) voluntário(a) {nome_voluntario} foi adiocionado(a) com sucesso!")
elif opcao_usuario == 2:
id_voluntario = input ("\nDigite o ID do voluntário(a) que se deseja excluir: ")
voluntario_selecionado = RepositorioVoluntarios.buscar_voluntario_por_id (id_voluntario)
if not voluntario_selecionado:
print ("\nErro, este voluntário não existe em nosso banco de dados. Verifique se não houve erros de digitação no ID.")
confirmador()
else:
confirmacao = input (f"Deseja realmente deletar o(a) voluntário(a) {voluntario_selecionado.nome}? (S / qualquer outra tecla para cancelar): ").upper()
if confirmacao == "S":
RepositorioVoluntarios.remover_voluntario (voluntario_selecionado)
else:
print ("Cancelando a exclusão. Voltando ao Menu Principal")
confirmador()
elif opcao_usuario == 3:
RepositorioVoluntarios.percorrer_lista_voluntarios()
confirmador()
elif opcao_usuario == 4:
print ("\n\nObrigado por acessar nosso site. Até mais!")
break
else:
print ("\nOpção inválida. Por favor, tente novamente.")
confirmador()
except ValueError:
print ("\nDigite um número válido. Por favor, tente novamente.")
confirmador()
if __name__ == "__main__":
main()