from typing import List
# Classe Pedido
class Pedido:
nome: str
telefone: int
nr_contrato: int
def __init__(self, nome=None, telefone=None, nr_contrato=None):
self.nome = nome
self.telefone = telefone
self.nr_contrato = nr_contrato
def __str__(self):
return f"Nome: {self.nome}, Telefone: {self.telefone}, Contrato: {self.nr_contrato}"
# Classe ProdigiFila (implementação da fila circular)
class ProdigiFila:
inicio: int
fim: int
dimensao: int
elementos: List[Pedido]
def __init__(self, num_elementos=10):
self.inicio = 0
self.fim = 0
self.dimensao = 0
self.tamanho_max = num_elementos
self.elementos = [None] * num_elementos # Lista inicializada com posições vazias
# Mostrar todos os pedidos
def prodigiShowList(self):
if self.dimensao == 0:
print("A fila está vazia!")
return
n = 1
i = self.inicio
while n <= self.dimensao:
print(f"{n}. {self.elementos[i]}")
i = (i + 1) % self.tamanho_max
n += 1
# Adicionar um novo pedido ao fim da fila
def prodigiAppend(self, pedido):
if self.dimensao == self.tamanho_max:
print("Fila cheia! Não é possível adicionar mais pedidos.")
return
self.elementos[self.fim] = pedido
self.fim = (self.fim + 1) % self.tamanho_max
self.dimensao += 1
print("Pedido registado com sucesso.")
# Remover e devolver o pedido do início da fila
def prodigiPop(self):
if self.dimensao == 0:
print("A fila está vazia! Não há pedidos para atender.")
return None
pedido = self.elementos[self.inicio]
self.elementos[self.inicio] = None
self.inicio = (self.inicio + 1) % self.tamanho_max
self.dimensao -= 1
return pedido
# Ver o próximo pedido da fila sem remover
def prodigiPeek(self):
if self.dimensao == 0:
print("A fila está vazia!")
return None
return self.elementos[self.inicio]
# Função para mostrar o menu
def mostra_menu():
print("\n=== Menu de Comandos ===")
print("1. Listar pedidos")
print("2. Registar pedido")
print("3. Atender pedido")
print("4. Mostrar próximo pedido")
print("5. Sair")
# Função principal
def main():
listaPedidos = ProdigiFila()
while True:
mostra_menu()
escolha = input("Escolha uma opção (1-5): ")
if escolha == '1':
if listaPedidos.dimensao != 0:
print("\nLista de pedidos:")
listaPedidos.prodigiShowList()
else:
print("Lista de pedidos vazia!")
elif escolha == '2':
nome = input("Nome do cliente: ")
telefone = input("Telefone do cliente: ")
nr_contrato = input("Número do contrato: ")
pedido = Pedido(nome, telefone, nr_contrato)
listaPedidos.prodigiAppend(pedido)
elif escolha == '3':
pedido_atendido = listaPedidos.prodigiPop()
if pedido_atendido:
print(f"Pedido atendido: {pedido_atendido}")
elif escolha == '4':
proximo_pedido = listaPedidos.prodigiPeek()
if proximo_pedido:
print(f"Próximo pedido: {proximo_pedido}")
elif escolha == '5':
print("Terminando o programa. Adeus!")
break
else:
print("Opção inválida. Escolha por favor 1-5.")
# Chamamos a função principal
main()
To embed this program on your website, copy the following code and paste it into your website's HTML: