Componentes: Beatriz Costa Vasconcelos, Willian Augusto Minikovsky e Guilherme Pauli Minikovsky.
Objetivos: Facilitar o agendamento de serviços em geral.
Metodologia de desenvolvimento: Orientação a Objeto. Metodologia Iterativa e Incremental.
class Cliente:
def __init__(self, nome, telefone, genero, idade, cpf):
self.__nome = nome
self.__telefone = telefone
self.__genero = genero
self.__idade = idade
self.__cpf = cpf
def get_nome(self):
return self.__nome
def get_cpf(self):
return self.__cpf
def __str__(self):
return f"{self.__nome} - CPF: {self.__cpf}"
class Atendimento:
def __init__(self, cliente, servico, data, horario):
self.__cliente = cliente
self.__servico = servico
self.__data = data
self.__horario = horario
def get_cliente(self):
return self.__cliente
def get_servico(self):
return self.__servico
def get_data(self):
return self.__data
def get_horario(self):
return self.__horario
def __str__(self):
return f"Serviço: {self.__servico} | Cliente: {self.__cliente.get_nome()} | Data: {self.__data} | Hora: {self.__horario}"
class Agenda:
def __init__(self):
self.clientes = [] # Lista de clientes cadastrados
self.agendamentos = [] # Lista de serviços agendados
def cadastrar_cliente(self):
nome = input("Nome: ")
telefone = input("Telefone: ")
genero = input("Gênero: ")
idade = int(input("Idade: "))
cpf = input("CPF: ")
cliente = Cliente(nome, telefone, genero, idade, cpf)
self.clientes.append(cliente)
print(f"Cliente {nome} cadastrado com sucesso!")
def agendar_servico(self):
if not self.clientes:
print("Não há clientes cadastrados!")
return
# Exibe a lista de clientes para o agendamento
print("\nLista de Clientes Cadastrados:")
for idx, cliente in enumerate(self.clientes, 1):
print(f"{idx}. {cliente}")
cliente_id = int(input("\nEscolha o número do cliente desejado para agendamento: ")) - 1
cliente_escolhido = self.clientes[cliente_id]
servico = input("Serviço a ser prestado: ")
data = input("Data do atendimento (DD/MM/AAAA): ") # A data é tratada como uma string
# Verifica se o horário está disponível
while True:
horario = input("Hora do atendimento (HH:MM): ")
horario_ocupado = False
for atendimento in self.agendamentos:
if atendimento.get_data() == data and atendimento.get_horario() == horario:
horario_ocupado = True
break
if horario_ocupado:
print("Horário já preenchido. Por favor, escolha outro horário.")
else:
break
#Cria o atendimento e adiciona na lista de agendamentos
atendimento = Atendimento(cliente_escolhido, servico, data, horario)
self.agendamentos.append(atendimento)
print(f"Agendamento realizado com sucesso para o cliente {cliente_escolhido.get_nome()}.")
def cancelar_servico(self):
if not self.agendamentos:
print("Não há agendamentos para cancelar!")
return
# Exibe a lista de agendamentos para o cancelamento
print("\nLista de Agendamentos:")
for idx, atendimento in enumerate(self.agendamentos, 1):
print(f"{idx}. {atendimento}")
atendimento_id = int(input("\nEscolha o número do agendamento para cancelar: ")) - 1
atendimento_cancelado = self.agendamentos.pop(atendimento_id)
print(f"Agendamento para {atendimento_cancelado.get_cliente().get_nome()} cancelado com sucesso!")
def exibir_menu(self):
while True: # Loop para exibir o menu continuamente
print("\nMenu:")
print("1. Cadastro de Cliente")
print("2. Agendamento")
print("3. Cancelamento")
print("4. Sair")
opcao = int(input("Escolha uma opção: "))
if opcao == 1:
self.cadastrar_cliente()
#Vamos usar o elif para fazer várias verificações ao mesmo tempo
elif opcao == 2:
self.agendar_servico()
elif opcao == 3:
self.cancelar_servico()
elif opcao == 4:
print("Saindo...")
break # Agora o break está corretamente dentro do loop para encerrar o programa
else:
print("Opção inválida, tente novamente.")]
# Exemplo de uso
agenda = Agenda()
agenda.exibir_menu()