Componentes: Augusto Kestering Greipel e Willyam Machado
Objetivos:O objetivo do projeto seria uma organização dos clientes de uma oficina mecânica
Metodologia de desenvolvimento: Encapsulamento, polimorfismo e abstração
class Cliente:
def __init__(self, nome, cpf, telefone, veiculo, placa):
"""
Inicializa um objeto Cliente com os dados necessários.
"""
self._nome = nome
self._cpf = cpf
self._telefone = telefone
self._veiculo = veiculo
self._placa = placa
def atualizar(self, nome=None, telefone=None, veiculo=None, placa=None):
"""
Atualiza as informações do cliente.
"""
if nome:
self.nome = nome
if telefone:
self.telefone = telefone
if veiculo:
self.veiculo = veiculo
if placa:
self.placa = placa
def __str__(self):
"""
Representação textual de um cliente.
"""
return f"Nome: {self._nome}, CPF: {self._cpf}, Telefone: {self._telefone}, Veículo: {self._veiculo}, Placa: {self._placa}"
class SistemaMecanica:
def __init__(self):
"""
Inicializa o sistema com uma lista vazia de clientes.
"""
self.clientes = []
def cadastrar_cliente(self, nome, cpf, telefone, veiculo, placa):
"""
Cadastra um novo cliente e adiciona à lista de clientes.
"""
novo_cliente = Cliente(nome, cpf, telefone, veiculo, placa)
self.clientes.append(novo_cliente)
print(f"Cliente {nome} cadastrado com sucesso!")
def listar_clientes(self):
"""
Lista todos os clientes cadastrados.
"""
if not self.clientes:
print("Nenhum cliente cadastrado.")
return
print("\n--- Lista de Clientes ---")
for cliente in self.clientes:
print(cliente)
def buscar_cliente(self, cpf):
"""
Busca um cliente pelo CPF.
"""
for cliente in self.clientes:
if cliente._cpf == cpf:
return cliente
return None
def atualizar_cliente(self, cpf, nome=None, telefone=None, veiculo=None, placa=None):
"""
Atualiza as informações de um cliente existente pelo CPF.
"""
cliente = self.buscar_cliente(cpf)
if cliente:
cliente.atualizar(nome, telefone, veiculo, placa)
print(f"Cliente com CPF {cpf} atualizado com sucesso!")
else:
print(f"Cliente com CPF {cpf} não encontrado.")
def remover_cliente(self, cpf):
"""
Remove um cliente pelo CPF.
"""
cliente = self.buscar_cliente(cpf)
if cliente:
self.clientes.remove(cliente)
print(f"Cliente com CPF {cpf} removido com sucesso!")
else:
print(f"Cliente com CPF {cpf} não encontrado.")
class Aplicacao:
def __init__(self):
self.sistema = SistemaMecanica()
def executar(self):
"""
Método principal para rodar a aplicação.
"""
while True:
print("\n--- Menu ---")
print("1. Cadastrar Cliente")
print("2. Listar Clientes")
print("3. Buscar Cliente")
print("4. Atualizar Cliente")
print("5. Remover Cliente")
print("6. Sair")
opcao = input("Escolha uma opção: ")
if opcao == "1":
self.cadastrar_cliente()
elif opcao == "2":
self.sistema.listar_clientes()
elif opcao == "3":
self.buscar_cliente()
elif opcao == "4":
self.atualizar_cliente()
elif opcao == "5":
self.remover_cliente()
elif opcao == "6":
print("Saindo...")
break
else:
print("Opção inválida!")
def cadastrar_cliente(self):
nome = input("Nome: ")
cpf = input("CPF: ")
telefone = input("Telefone: ")
veiculo = input("Veículo: ")
placa = input("Placa: ")
self.sistema.cadastrar_cliente(nome, cpf, telefone, veiculo, placa)
def buscar_cliente(self):
cpf = input("CPF do cliente: ")
cliente = self.sistema.buscar_cliente(cpf)
if cliente:
print("\nCliente encontrado:")
print(cliente)
else:
print("Cliente não encontrado.")
def atualizar_cliente(self):
cpf = input("CPF do cliente a ser atualizado: ")
nome = input("Novo Nome (pressione Enter para manter): ")
telefone = input("Novo Telefone (pressione Enter para manter): ")
veiculo = input("Novo Veículo (pressione Enter para manter): ")
placa = input("Nova Placa (pressione Enter para manter): ")
self.sistema.atualizar_cliente(cpf, nome or None, telefone or None, veiculo or None, placa or None)
def remover_cliente(self):
cpf = input("CPF do cliente a ser removido: ")
self.sistema.remover_cliente(cpf)
"""
Inicialização e Execução
"""
if __name__ == "__main__":
app = Aplicacao()
app.executar()