Programa desenvolvido em Java para simular o funcionamento de um caixa eletrônico, controlando o estoque de notas e realizando saques de forma otimizada, com interface gráfica Swing.
O sistema simula um caixa eletrônico com 6 tipos de notas disponíveis: R$ 2, R$ 5, R$ 10, R$ 20, R$ 50 e R$ 100. O programa entra em operação contínua atendendo clientes, gerencia o estoque de notas a cada saque realizado e permite ao administrador realizar reposições e configurar a cota mínima de operação.
- Efetuar Saque — o cliente informa o valor desejado e o sistema entrega as notas de forma otimizada
- Relatório de Cédulas — exibe a quantidade disponível de cada tipo de nota
- Valor Total Disponível — exibe o saldo total em reais no caixa
- Reposição de Cédulas — permite adicionar notas ao estoque do caixa
- Cota Mínima — define o valor mínimo que o caixa precisa ter para continuar operando
- Sair — encerra o atendimento e exibe o extrato completo de todas as operações realizadas
O programa sempre tenta pagar com as maiores notas possíveis, seguindo a ordem de prioridade:
R$ 100 → R$ 50 → R$ 20 → R$ 10 → R$ 5 → R$ 2
Antes de confirmar o saque, o sistema:
- Simula o pagamento em um array temporário sem alterar o estoque real
- Verifica se é possível atender ao valor exato com as notas disponíveis
- Verifica se o número de notas não ultrapassa o limite de 30 cédulas por operação
- Só desconta o estoque após todas as validações passarem
Mensagens de controle:
| Situação | Mensagem exibida |
|---|---|
| Notas insuficientes para o valor | Saque não realizado por falta de cédulas |
| Mais de 30 cédulas necessárias | Saque não realizado: excede o limite de 30 cédulas por operação |
| Caixa abaixo da cota mínima | Caixa Vazio: Chame o Operador |
O caixa inicia com as seguintes quantidades, conforme especificação do projeto:
| Cédula | Quantidade inicial |
|---|---|
| R$ 100 | 100 |
| R$ 50 | 200 |
| R$ 20 | 300 |
| R$ 10 | 350 |
| R$ 5 | 450 |
| R$ 2 | 500 |
A interface foi desenvolvida em Java Swing e segue o layout especificado no enunciado do projeto. A GUI se comunica com a lógica do caixa exclusivamente através da interface ICaixaEletronico, garantindo o desacoplamento entre tela e regras de negócio.
Ao clicar em Sair, o sistema exibe automaticamente um extrato com todas as operações realizadas na sessão (saques e reposições).
caixa-eletronico-java/
├── src/
│ └── caixaeletronico/
│ ├── CaixaEletronico.java # Lógica principal do caixa eletrônico
│ ├── ICaixaEletronico.java # Interface (contrato) fornecida pelo professor
│ └── GUI.java # Interface gráfica Swing
├── .gitignore
└── README.md
- Java JDK 8+
- Java Swing (interface gráfica)
- Clone o repositório
- Abra o projeto no IntelliJ IDEA (ou outra IDE Java)
- Execute o método
mainda classeCaixaEletronico - A janela do caixa eletrônico será aberta automaticamente
- Projeto desenvolvido como exercício acadêmico da disciplina de Programação Orientada a Objetos
- A interface
ICaixaEletronicofoi fornecida pelo professor e não pode ser alterada - A classe
GUIimplementa a tela seguindo o contrato definido na interface - O extrato exibido ao sair registra todos os saques e reposições da sessão