Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions avaliacoes/restaurante/Controller/FuncionarioController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package prova.pantoja.Controller;

import prova.pantoja.DAO.FuncionarioDAO;
import prova.pantoja.Models.Funcionario;
import prova.pantoja.Models.Endereco;
import prova.pantoja.View.FuncionarioView;
import java.util.List;
import java.util.Scanner;

public class FuncionarioController {
private List<Funcionario> funcionarios;
private FuncionarioView view;
private FuncionarioDAO funcionarioDAO;
private Scanner scan = new Scanner(System.in);

public FuncionarioController(List<Funcionario> funcionarios, FuncionarioView view) {
this.funcionarios = funcionarios;
this.view = view;
this.funcionarioDAO = new FuncionarioDAO();
this.funcionarios = funcionarioDAO.carregarFuncionarios();
}

public void adicionarFuncionario() {
System.out.println("\n--- Criar Novo Funcionário ---");
System.out.print("Nome: ");
String nome = scan.nextLine();
System.out.print("Número Contribuinte: ");
String numContribuinte = scan.nextLine();
System.out.print("Tipo Endereço: ");
String tipo = scan.nextLine();
System.out.print("CEP: ");
String cep = scan.nextLine();
System.out.print("Número: ");
int numero = scan.nextInt();
scan.nextLine();
System.out.print("CTP: ");
String ctp = scan.nextLine();
System.out.print("Cargo: ");
String cargo = scan.nextLine();

Endereco endereco = new Endereco(tipo, cep, numero);
Funcionario novoFuncionario = new Funcionario(nome, numContribuinte, endereco, ctp, cargo);
funcionarios.add(novoFuncionario);
funcionarioDAO.salvarFuncionarios(funcionarios);
System.out.println("Funcionário adicionado e salvo!");
}

public void removerFuncionario() {
System.out.print("\nCTP do Funcionário a ser removido: ");
String ctp = scan.nextLine();
boolean removido = false;

for (Funcionario funcionario : funcionarios) {
if (funcionario.getCtp().equals(ctp)) {
funcionarios.remove(funcionario);
removido = true;
break;
}
}

if (removido) {
funcionarioDAO.salvarFuncionarios(funcionarios);
System.out.println("Funcionário removido e salvo!");
} else {
System.out.println("Funcionário não encontrado.");
}
}

public void atualizarFuncionario() {
System.out.print("\nCTP do Funcionário a ser atualizado: ");
String ctp = scan.nextLine();
boolean encontrado = false;

for (Funcionario funcionario : funcionarios) {
if (funcionario.getCtp().equals(ctp)) {
System.out.println("\n--- Atualizar Funcionário ---");
System.out.print("Novo Nome: ");
String novoNome = scan.nextLine();
System.out.print("Novo Número Contribuinte: ");
String novoNumContribuinte = scan.nextLine();
System.out.print("Novo Tipo Endereço: ");
String novoTipo = scan.nextLine();
System.out.print("Novo CEP: ");
String novoCep = scan.nextLine();
System.out.print("Novo Número: ");
int novoNumero = scan.nextInt();
scan.nextLine();
System.out.print("Novo CTP: ");
String novoCtp = scan.nextLine();
System.out.print("Novo Cargo: ");
String novoCargo = scan.nextLine();

Endereco novoEndereco = new Endereco(novoTipo, novoCep, novoNumero);
funcionario.setNome(novoNome);
funcionario.setNumContribuinte(novoNumContribuinte);
funcionario.setEndereco(novoEndereco);
funcionario.setCtp(novoCtp);
funcionario.setCargo(novoCargo);

funcionarioDAO.salvarFuncionarios(funcionarios);
System.out.println("Funcionário atualizado e salvo!");
encontrado = true;
break;
}
}

if (!encontrado) {
System.out.println("Funcionário não encontrado.");
}
}

public void listarFuncionarios() {
System.out.println("\n--- Lista de Funcionários ---");
for (Funcionario funcionario : funcionarios) {
System.out.println(funcionario.toString());
}
System.out.println("---------------------------");
}

public void salvarFuncionarios() {
funcionarioDAO.salvarFuncionarios(funcionarios);
}
}
106 changes: 106 additions & 0 deletions avaliacoes/restaurante/Controller/ProdutoController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package prova.pantoja.Controller;

import prova.pantoja.DAO.ProdutoDAO;
import prova.pantoja.Models.Produto;
import prova.pantoja.View.ProdutoView;
import java.util.List;
import java.util.Scanner;

public class ProdutoController {
private List<Produto> produtos;
private ProdutoView view;
private ProdutoDAO produtoDAO;
private Scanner scan = new Scanner(System.in);

public ProdutoController(List<Produto> produtos, ProdutoView view) {
this.produtos = produtos;
this.view = view;
this.produtoDAO = new ProdutoDAO();
this.produtos = produtoDAO.carregarProdutos();
}

public void adicionarProduto() {
System.out.println("\n--- Criar Novo Produto ---");
System.out.print("Nome: ");
String nome = scan.nextLine();
System.out.print("Preço de Venda: ");
float valVenda = scan.nextFloat();
System.out.print("Preço de Custo: ");
float valProduto = scan.nextFloat();
System.out.print("IVA (%): ");
float IVA = scan.nextFloat();
scan.nextLine();

Produto novoProduto = new Produto(nome, valVenda, valProduto, IVA);
produtos.add(novoProduto);
produtoDAO.salvarProdutos(produtos);
System.out.println("Produto adicionado e salvo!");
}

public void removerProduto() {
System.out.print("\nNome do Produto a ser removido: ");
String nome = scan.nextLine();
boolean removido = false;

for (Produto produto : produtos) {
if (produto.getNome().equals(nome)) {
produtos.remove(produto);
removido = true;
break;
}
}

if (removido) {
produtoDAO.salvarProdutos(produtos);
System.out.println("Produto removido e salvo!");
} else {
System.out.println("Produto não encontrado.");
}
}

public void atualizarProduto() {
System.out.print("\nNome do Produto a ser atualizado: ");
String nome = scan.nextLine();
boolean encontrado = false;

for (Produto produto : produtos) {
if (produto.getNome().equals(nome)) {
System.out.println("\n--- Atualizar Produto ---");
System.out.print("Novo Nome: ");
String novoNome = scan.nextLine();
System.out.print("Novo Preço de Venda: ");
float novoValVenda = scan.nextFloat();
System.out.print("Novo Preço de Custo: ");
float novoValProduto = scan.nextFloat();
System.out.print("Novo IVA (%): ");
float novoIVA = scan.nextFloat();
scan.nextLine();

produto.setNome(novoNome);
produto.setValVenda(novoValVenda);
produto.setValProduto(novoValProduto);
produto.setIVA(novoIVA);
produtoDAO.salvarProdutos(produtos);
System.out.println("Produto atualizado e salvo!");
encontrado = true;
break;
}
}

if (!encontrado) {
System.out.println("Produto não encontrado.");
}
}

public void listarProdutos() {
System.out.println("\n--- Lista de Produtos ---");
for (Produto produto : produtos) {
System.out.println(produto.toString());
}
System.out.println("------------------------");
}

public void salvarProdutos() {
produtoDAO.salvarProdutos(produtos);
}
}
48 changes: 48 additions & 0 deletions avaliacoes/restaurante/DAO/FuncionarioDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package prova.pantoja.DAO;

import prova.pantoja.Models.Funcionario;
import prova.pantoja.Models.Endereco;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class FuncionarioDAO {
private static final String ARQUIVO = "funcionarios.txt";

public void salvarFuncionarios(List<Funcionario> funcionarios) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO))) {
for (Funcionario f : funcionarios) {
writer.write(f.getNome() + "," +
f.getNumContribuinte() + "," +
f.getEndereco().getTipo() + "," +
f.getEndereco().getCep() + "," +
f.getEndereco().getNumero() + "," +
f.getCtp() + "," +
f.getCargo());
writer.newLine();
}
} catch (IOException e) {
System.err.println("Erro ao salvar funcionários: " + e.getMessage());
}
}

public List<Funcionario> carregarFuncionarios() {
List<Funcionario> funcionarios = new ArrayList<>();
File file = new File(ARQUIVO);

if (!file.exists()) return funcionarios;

try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String linha;
while ((linha = reader.readLine()) != null) {
String[] dados = linha.split(",");
Endereco endereco = new Endereco(dados[2], dados[3], Integer.parseInt(dados[4]));
funcionarios.add(new Funcionario(dados[0], dados[1], endereco, dados[5], dados[6]));
}
} catch (IOException e) {
System.err.println("Erro ao carregar funcionários: " + e.getMessage());
}
return funcionarios;
}
}
39 changes: 39 additions & 0 deletions avaliacoes/restaurante/DAO/ProdutoDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package prova.pantoja.DAO;

import prova.pantoja.Models.Produto;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class ProdutoDAO {
private static final String ARQUIVO = "produtos.txt";

public void salvarProdutos(List<Produto> produtos) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(ARQUIVO))) {
for (Produto produto : produtos) {
writer.write(produto.getNome() + "," + produto.getValVenda() + "," + produto.getValProduto() + "," + produto.getIVA());
writer.newLine();
}
} catch (IOException e) {
System.err.println("Erro ao salvar produtos: " + e.getMessage());
}
}

public List<Produto> carregarProdutos() {
List<Produto> produtos = new ArrayList<>();
File file = new File(ARQUIVO);

if (!file.exists()) return produtos;

try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String linha;
while ((linha = reader.readLine()) != null) {
String[] dados = linha.split(",");
produtos.add(new Produto(dados[0], Float.parseFloat(dados[1]), Float.parseFloat(dados[2]), Float.parseFloat(dados[3])));
}
} catch (IOException e) {
System.err.println("Erro ao carregar produtos: " + e.getMessage());
}
return produtos;
}
}
53 changes: 53 additions & 0 deletions avaliacoes/restaurante/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package prova.pantoja;

import prova.pantoja.Controller.FuncionarioController;
import prova.pantoja.Controller.ProdutoController;
import prova.pantoja.Models.Funcionario;
import prova.pantoja.Models.Produto;
import prova.pantoja.View.FuncionarioView;
import prova.pantoja.View.ProdutoView;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
List<Produto> produtos = new ArrayList<>();
List<Funcionario> funcionarios = new ArrayList<>();

ProdutoView produtoView = new ProdutoView();
FuncionarioView funcionarioView = new FuncionarioView();

ProdutoController produtoController = new ProdutoController(produtos, produtoView);
FuncionarioController funcionarioController = new FuncionarioController(funcionarios, funcionarioView);

Scanner scan = new Scanner(System.in);
int opcao;

do {
System.out.println("\n--- Menu Principal ---");
System.out.println("1. Gerenciar Funcionários");
System.out.println("2. Gerenciar Produtos");
System.out.println("0. Sair");
System.out.print("Escolha uma opção: ");
opcao = scan.nextInt();
scan.nextLine();

switch (opcao) {
case 1:
funcionarioView.exibirMenuFuncionarios(funcionarioController);
break;
case 2:
produtoView.exibirMenuProdutos(produtoController);
break;
case 0:
funcionarioController.salvarFuncionarios();
produtoController.salvarProdutos();
System.out.println("Dados salvos. Saindo...");
break;
}
} while (opcao != 0);
}

}
Loading