Componentes: Guilherme Oribka Serafim, Rodrigo Mendes, Danilo Teixeira, Yuri Guilherme
Objetivos: O programa tem como objetivo simular o funcionamento basico de uma locadora, podendo cadastrar clientes, veiculos, registrar locacoes e consultar carros.
Metodologia de desenvolvimento: Ágil.
###
class Veiculo:
def __init__(self, modelo, placa, ano):
self.__modelo = modelo
self.__placa = placa
self.__ano = ano
self.__status = "disponível"
def get_modelo(self):
return self.__modelo
def get_placa(self):
return self.__placa
def get_ano(self):
return self.__ano
def get_status(self):
return self.__status
def set_status(self, status):
self.__status = status
def exibir_dados(self):
print("Modelo:", self.__modelo)
print("Placa:", self.__placa)
print("Ano:", self.__ano)
print("Status:", self.__status)
@staticmethod
def cadastrar():
print("\n--- Cadastro de Veículo ---")
modelo = input("Modelo: ")
placa = input("Placa: ")
ano = input("Ano: ")
return Veiculo(modelo, placa, ano)
@staticmethod
def listar_disponiveis(veiculos):
print("\n--- Veículos Disponíveis ---")
encontrou = False
for v in veiculos:
if v.get_status() == "disponível":
v.exibir_dados()
print("------------------------")
encontrou = True
if not encontrou:
print("Nenhum veículo disponível.\n")
###
class Pessoa:
def __init__(self, nome, cpf):
self.__nome = nome
self.__cpf = cpf
def get_nome(self):
return self.__nome
def set_nome(self, nome):
self.__nome = nome
def get_cpf(self):
return self.__cpf
def set_cpf(self, cpf):
self.__cpf = cpf
def exibir_dados(self):
print("Nome:", self.__nome)
print("CPF:", self.__cpf)
###
class Locacao:
def __init__(self, veiculo, cliente, data_retirada, data_devolucao):
self.__veiculo = veiculo
self.__cliente = cliente
self.__data_retirada = data_retirada
self.__data_devolucao = data_devolucao
def exibir_dados(self):
print("Cliente:")
self.__cliente.exibir_dados()
print("Veículo:")
self.__veiculo.exibir_dados()
print("Data de retirada:", self.__data_retirada)
print("Data de devolução:", self.__data_devolucao)
@staticmethod
def registrar(veiculos, clientes):
print("\n--- Registrar Locação ---")
cpf = input("Digite o CPF do cliente: ")
cliente = None
for c in clientes:
if c.get_cpf() == cpf:
cliente = c
break
if cliente is None:
print("Cliente não encontrado.\n")
return None
placa = input("Digite a placa do veículo: ")
veiculo = None
for v in veiculos:
if v.get_placa() == placa and v.get_status() == "disponível":
veiculo = v
break
if veiculo is None:
print("Veículo não encontrado ou indisponível.\n")
return None
data_retirada = input("Data de retirada (ex: 01/07/2025): ")
data_devolucao = input("Data de devolução (ex: 05/07/2025): ")
veiculo.set_status("alugado")
return Locacao(veiculo, cliente, data_retirada, data_devolucao)
###
from classes.Pessoa import Pessoa
class Cliente(Pessoa):
def __init__(self, nome, cpf, telefone):
super().__init__(nome, cpf)
self.__telefone = telefone
def get_telefone(self):
return self.__telefone
def set_telefone(self, telefone):
self.__telefone = telefone
def exibir_dados(self):
super().exibir_dados()
print("Telefone:", self.__telefone)
@staticmethod
def cadastrar():
print("\n--- Cadastro de Cliente ---")
nome = input("Nome: ")
cpf = input("CPF: ")
telefone = input("Telefone: ")
return Cliente(nome, cpf, telefone)
###
from classes.Cliente import Cliente
from classes.Locacao import Locacao
from classes.Veiculo import Veiculo
clientes = []
veiculos = []
locacoes = []
# --- MENU ---
def menu():
while True:
print("========= LOCADORA DE VEÍCULOS =========")
print("1 - Cadastrar Cliente")
print("2 - Cadastrar Veículo")
print("3 - Registrar Locação")
print("4 - Consultar Veículos Disponíveis")
print("5 - Listar Clientes")
print("6 - Listar Veículos")
print("7 - Listar Locações")
print("0 - Sair")
opcao = input("Escolha uma opção: ")
if opcao == "1":
cliente = Cliente.cadastrar()
clientes.append(cliente)
print("Cliente cadastrado com sucesso!\n")
elif opcao == "2":
veiculo = Veiculo.cadastrar()
veiculos.append(veiculo)
print("Veículo cadastrado com sucesso!\n")
elif opcao == "3":
locacao = Locacao.registrar(veiculos, clientes)
if locacao:
locacoes.append(locacao)
print("Locação registrada com sucesso!\n")
elif opcao == "4":
Veiculo.listar_disponiveis(veiculos)
elif opcao == "5":
print("\n--- Lista de Clientes ---")
for c in clientes:
c.exibir_dados()
print("------------------------")
elif opcao == "6":
print("\n--- Lista de Veículos ---")
for v in veiculos:
v.exibir_dados()
print("------------------------")
elif opcao == "7":
print("\n--- Lista de Locações ---")
for l in locacoes:
l.exibir_dados()
elif opcao == "0":
print("Encerrando o programa...")
break
else:
print("Opção inválida. Tente novamente.\n")
# --- EXECUÇÃO ---
menu()