SERVIÇO PÚBLICO FEDERAL
MINISTÉRIO DA EDUCAÇÃO
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
UNIDADE DE ENSINO DESCENTRALIZADA DE DIVINÓPOLIS
Laboratório de Programação Orientada a
Curso: Engenharia de Computação Disciplina: Período 2ª
Objetos
Professor(a): Eduardo Habib Bechelane Maia Valor: 10
Data de Entrega: 12/01/2025 Lab: 7
Gerenciamento de Pedidos em um Restaurante com Cadastro de Clientes
Você foi contratado para desenvolver um sistema de gerenciamento de pedidos em um restaurante. O
sistema deve controlar:
1. Clientes cadastrados (Lista de Pessoas): Os clientes devem ser cadastrados com nome e CPF antes
de serem vinculados a pedidos.
2. Pedidos em espera para serem preparados (Fila de Pedidos): Os pedidos armazenam o CPF do
cliente e aguardam atendimento na fila.
3. Histórico de pedidos concluídos (Lista de Histórico): Após o preparo, os pedidos saem da fila e
são registrados no histórico.
Requisitos do Sistema
1. Classes
• Pessoa: Classe para representar os clientes do restaurante, com os seguintes atributos:
o nome (String): Nome do cliente.
o CPF (String): CPF do cliente.
• Pedido: Classe para representar os pedidos no sistema, com os seguintes atributos:
o codigoPedido (int): Identificador único do pedido.
o descricaoPedido (String): Descrição do pedido (ex.: "Pizza de Calabresa").
o tempoEstimado (int): Tempo estimado de preparo em minutos.
o CPF (String): CPF do cliente associado ao pedido.
2. Lista de Clientes
Implemente uma classe ListaClientes para gerenciar os clientes cadastrados:
• Permitir adicionar clientes à lista.
• Buscar um cliente pelo CPF.
• Exibir todos os clientes cadastrados.
3. Fila de Pedidos
Implemente uma classe FilaPedidos para gerenciar os pedidos em espera:
• Permitir adicionar um pedido à fila (enfileirar), armazenando apenas o CPF do cliente e
vinculando o pedido a ele.
• Remover um pedido da fila (desenfileirar), indicando o pedido removido.
• Exibir todos os pedidos na fila, buscando os dados do cliente pelo CPF na lista de clientes.
• Verificar se a fila está vazia.
4. Lista de Histórico de Pedidos
Implemente uma classe HistoricoPedidos para registrar pedidos concluídos:
• Adicionar um pedido ao histórico ao removê-lo da fila.
• Exibir todos os pedidos do histórico com os dados do cliente vinculados.
Menu Interativo
O programa principal deve oferecer as seguintes opções:
1. Adicionar uma nova pessoa à lista de clientes.
Permite cadastrar um novo cliente com nome e CPF.
2. Adicionar um novo pedido à fila.
Permite criar um pedido vinculado a um cliente já cadastrado. O CPF do cliente será solicitado para
vincular o pedido.
3. Preparar o próximo pedido.
Remove o pedido do início da fila e o adiciona ao histórico.
4. Exibir os pedidos em espera.
Mostra todos os pedidos na fila, incluindo os dados do cliente (nome e CPF).
5. Exibir o histórico de pedidos concluídos.
Mostra todos os pedidos no histórico, incluindo os dados do cliente (nome e CPF).
6. Exibir a lista de pessoas cadastradas.
Mostra todos os clientes cadastrados com nome e CPF.
7. Sair.
Encerra o programa.
Regras do Sistema
1. Antes de cadastrar um pedido, o cliente deve ser previamente adicionado à lista de pessoas.
2. Durante o cadastro de um pedido, o CPF do cliente será solicitado para vinculá-lo ao pedido.
3. Caso o CPF fornecido não corresponda a nenhum cliente cadastrado, o sistema deve impedir o
cadastro do pedido e exibir uma mensagem de erro.
4. O tempo estimado de preparo é apenas informativo e não altera a ordem da fila.
5. Deve-se tratar erros do cadastro.
Observações Gerais
• Vocês podem usar o código de lista dado em sala como base para implementar o histórico e criar a
fila adaptando o exemplo da lista.
• É proibido o uso de estruturas de dados prontas, como List, ArrayList, Vector, entre outras.
Se seu nome começa com uma letra de A a J, implemente na linguagem C++.
Se seu nome começa da letra K em diante, utilize JAVA.