diff --git a/avaliacoes/politecnico/db/apontamento.txt b/avaliacoes/politecnico/db/apontamento.txt new file mode 100644 index 0000000..e69de29 diff --git a/avaliacoes/politecnico/db/disciplina.txt b/avaliacoes/politecnico/db/disciplina.txt new file mode 100644 index 0000000..aeb0cca --- /dev/null +++ b/avaliacoes/politecnico/db/disciplina.txt @@ -0,0 +1 @@ +Teste2;5;11; diff --git a/avaliacoes/politecnico/src/main/java/MyProgram.java b/avaliacoes/politecnico/src/main/java/MyProgram.java index b9e7263..1574a03 100644 --- a/avaliacoes/politecnico/src/main/java/MyProgram.java +++ b/avaliacoes/politecnico/src/main/java/MyProgram.java @@ -8,10 +8,17 @@ import model.Politecnico; import model.Professor; +import view.Viewers; + +import controller.ProfessorController; + + public class MyProgram { public static void main(String[] args) { + Viewers view = new Viewers(); + ArrayList cursosPPorto = new ArrayList(); Curso licenciaturaCienciasEmpresariais = new Curso("Licenciatura em Ciências Empresariais (Pós-Laboral) ", @@ -41,6 +48,16 @@ public static void main(String[] args) { cursosPPorto.add(licenciaturaSistemasDeInformacaoParaGestao); cursosPPorto.add(licenciaturaSolicitadoria); cursosPPorto.add(licenciaturaSolicitadoriaPosLaboral); + + view.createCurso(licenciaturaCienciasEmpresariais); + view.createCurso(licenciaturaCienciasEmpresariaisPosLaboral); + view.createCurso(licenciaturaEngenhariaInfomatica); + view.createCurso(licenciaturaGesaoIndustrialLogistica); + view.createCurso(licenciaturaSegurancaDoTrabalhoEAmbiente); + view.createCurso(licenciaturaSegurancaInformaticaEmRedesDeComputadores); + view.createCurso(licenciaturaSistemasDeInformacaoParaGestao); + view.createCurso(licenciaturaSolicitadoria); + view.createCurso(licenciaturaSolicitadoriaPosLaboral); ArrayList disciplinasGrade = new ArrayList(); @@ -166,6 +183,6 @@ public static void main(String[] args) { for (Disciplina d: aluno.getDisciplinasFaltantes()) { d.imprimirRequisitos(); } - + } } diff --git a/avaliacoes/politecnico/src/main/java/controller/ApontamentoController.java b/avaliacoes/politecnico/src/main/java/controller/ApontamentoController.java new file mode 100644 index 0000000..2f75696 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/controller/ApontamentoController.java @@ -0,0 +1,51 @@ +package controller; + +import dao.ApontamentoDAO; +import model.Apontamento; +import model.Disciplina; + +import java.io.IOException; +import java.util.List; + +public class ApontamentoController { + private ApontamentoDAO dao; + + public ApontamentoController(List disciplinas) { + this.dao = new ApontamentoDAO(disciplinas); + } + + public List listarApontamentos() { + return dao.readAll(); + } + + public boolean criarApontamento(Apontamento a) { + try { + return dao.create(a); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + public boolean atualizarApontamento(int id, Apontamento a) { + try { + return dao.update(id, a); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + public boolean deletarApontamento(int id) { + try { + return dao.delete(id); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + public Apontamento buscarPorId(int id) { + return dao.readById(id); + } +} diff --git a/avaliacoes/politecnico/src/main/java/controller/CursoController.java b/avaliacoes/politecnico/src/main/java/controller/CursoController.java new file mode 100644 index 0000000..0db1a10 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/controller/CursoController.java @@ -0,0 +1,18 @@ +package controller; + +import model.Curso; + +public class CursoController { + Curso curso; + + public CursoController() {} + + public void createCurso(Curso c) { + this.curso = c; + curso.create(); + } + + public Curso getCurso() { + return curso; + } +} diff --git a/avaliacoes/politecnico/src/main/java/controller/DisciplinaController.java b/avaliacoes/politecnico/src/main/java/controller/DisciplinaController.java new file mode 100644 index 0000000..cc92cc8 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/controller/DisciplinaController.java @@ -0,0 +1,50 @@ +package controller; + +import dao.DisciplinaDAO; +import model.Disciplina; + +import java.io.IOException; +import java.util.List; + +public class DisciplinaController { + private DisciplinaDAO dao; + + public DisciplinaController() { + this.dao = new DisciplinaDAO(); + } + + public List listarDisciplinas() { + return dao.readAll(); + } + + public Disciplina buscarDisciplina(String nome) { + return dao.readByName(nome); + } + + public boolean criarDisciplina(Disciplina d) { + try { + return dao.create(d); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + public boolean atualizarDisciplina(Disciplina d) { + try { + return dao.update(d); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + public boolean deletarDisciplina(String nome) { + try { + return dao.delete(nome); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } +} diff --git a/avaliacoes/politecnico/src/main/java/controller/GradeController.java b/avaliacoes/politecnico/src/main/java/controller/GradeController.java new file mode 100644 index 0000000..df50bda --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/controller/GradeController.java @@ -0,0 +1,5 @@ +package controller; + +public class ApontamentoController { + +} diff --git a/avaliacoes/politecnico/src/main/java/controller/PolitecnicoController.java b/avaliacoes/politecnico/src/main/java/controller/PolitecnicoController.java new file mode 100644 index 0000000..62e38e9 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/controller/PolitecnicoController.java @@ -0,0 +1,27 @@ +package controller; + +import java.util.ArrayList; + +import dao.PolitecnicoDAO; +import model.Politecnico; + +public class PolitecnicoController { + PolitecnicoDAO dao = new PolitecnicoDAO(); + + public void adicionarPolitecnico(String nome, String url) { + Politecnico politecnico = new Politecnico(nome); + politecnico.setUrl(url); + dao.create(politecnico); + } + + public void listarPolitecnicos() { + ArrayList lista = dao.read(); + for (Politecnico p : lista) { + p.imprimirCursos(); // Mesmo que esteja vazio, mostra nome e URL + } + } + + public void removerPolitecnico(String nome) { + dao.delete(nome); + } +} diff --git a/avaliacoes/politecnico/src/main/java/controller/ProfessorController.java b/avaliacoes/politecnico/src/main/java/controller/ProfessorController.java new file mode 100644 index 0000000..c2650b1 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/controller/ProfessorController.java @@ -0,0 +1,28 @@ +package controller; + +import java.util.ArrayList; + +import dao.ProfessorDAO; +import model.Politecnico; +import model.Professor; + +public class ProfessorController { + ProfessorDAO dao = new ProfessorDAO(); + + public void adicionarProfessor(String nome, String apelido, String numeroFiscal, int id, int contrato, String nomePolitecnico) { + Politecnico politecnico = new Politecnico(nomePolitecnico); + Professor professor = new Professor(nome, apelido, numeroFiscal, id, contrato, politecnico); + dao.create(professor); + } + + public void listarProfessores() { + ArrayList lista = dao.read(); + for (Professor p : lista) { + p.imprimirPessoa(); + } + } + + public void removerProfessor(int id) { + dao.delete(id); + } +} diff --git a/avaliacoes/politecnico/src/main/java/dao/ApontamentoDAO.java b/avaliacoes/politecnico/src/main/java/dao/ApontamentoDAO.java new file mode 100644 index 0000000..e350927 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/dao/ApontamentoDAO.java @@ -0,0 +1,107 @@ +package dao; + +import model.Apontamento; +import model.Disciplina; + +import java.io.*; +import java.util.*; + +public class ApontamentoDAO { + private final String caminhoArquivo = "avaliacoes/politecnico/db/apontamento.txt"; + private Map apontamentosMap; + private List disciplinas; // para relacionar + + public ApontamentoDAO(List disciplinas) { + this.disciplinas = disciplinas; + apontamentosMap = new HashMap<>(); + try { + carregarApontamentos(); + } catch (IOException e) { + System.err.println("Erro ao carregar apontamentos: " + e.getMessage()); + } + } + + private void carregarApontamentos() throws IOException { + apontamentosMap.clear(); + + File arquivo = new File(caminhoArquivo); + if (!arquivo.exists()) { + arquivo.getParentFile().mkdirs(); + arquivo.createNewFile(); + return; + } + + try (BufferedReader br = new BufferedReader(new FileReader(arquivo))) { + String linha; + int id = 1; // chave simples incremental para controle interno + while ((linha = br.readLine()) != null) { + String[] parts = linha.split(";"); + if (parts.length < 4) continue; + + Double nota = Double.parseDouble(parts[0]); + String status = parts[1]; + String data = parts[2]; + String nomeDisc = parts[3]; + + Disciplina disc = null; + for (Disciplina d : disciplinas) { + if (d.getNome().equalsIgnoreCase(nomeDisc)) { + disc = d; + break; + } + } + + Apontamento a = new Apontamento(nota, status, data, disc); + apontamentosMap.put(id++, a); + } + } + } + + private void salvarTodos() throws IOException { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(caminhoArquivo))) { + for (Apontamento a : apontamentosMap.values()) { + StringBuilder sb = new StringBuilder(); + sb.append(a.getNota() != null ? a.getNota() : "").append(";"); + sb.append(a.getStatus() != null ? a.getStatus() : "").append(";"); + sb.append(a.getData() != null ? a.getData() : "").append(";"); + sb.append(a.getDisciplina() != null ? a.getDisciplina().getNome() : ""); + bw.write(sb.toString()); + bw.newLine(); + } + } + } + + // CREATE + public boolean create(Apontamento apontamento) throws IOException { + int id = apontamentosMap.isEmpty() ? 1 : Collections.max(apontamentosMap.keySet()) + 1; + apontamentosMap.put(id, apontamento); + salvarTodos(); + return true; + } + + public List readAll() { + return new ArrayList<>(apontamentosMap.values()); + } + + public Apontamento readById(int id) { + return apontamentosMap.get(id); + } + + public boolean update(int id, Apontamento apontamento) throws IOException { + if (!apontamentosMap.containsKey(id)) { + return false; + } + apontamentosMap.put(id, apontamento); + salvarTodos(); + return true; + } + + public boolean delete(int id) throws IOException { + if (!apontamentosMap.containsKey(id)) { + return false; + } + apontamentosMap.remove(id); + salvarTodos(); + return true; + } +} diff --git a/avaliacoes/politecnico/src/main/java/dao/CursoDAO.java b/avaliacoes/politecnico/src/main/java/dao/CursoDAO.java new file mode 100644 index 0000000..4bdc33e --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/dao/CursoDAO.java @@ -0,0 +1,16 @@ +package dao; + +public class CursoDAO { + + public void create(Curso c) { + + } + + public void read(Curso c) { + + } + + public void delete(Curso c) { + + } +} diff --git a/avaliacoes/politecnico/src/main/java/dao/DisciplinaDAO.java b/avaliacoes/politecnico/src/main/java/dao/DisciplinaDAO.java new file mode 100644 index 0000000..a7d51fd --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/dao/DisciplinaDAO.java @@ -0,0 +1,125 @@ +package dao; + +import model.Disciplina; + +import java.io.*; +import java.util.*; + +public class DisciplinaDAO { + private final String caminhoArquivo = "avaliacoes/politecnico/db/disciplina.txt"; + private Map disciplinasMap; + + public DisciplinaDAO() { + disciplinasMap = new HashMap<>(); + try { + carregarDisciplinas(); + } catch (IOException e) { + System.err.println("Erro ao carregar disciplinas: " + e.getMessage()); + } + } + + private void carregarDisciplinas() throws IOException { + disciplinasMap.clear(); + + File arquivo = new File(caminhoArquivo); + if (!arquivo.exists()) { + arquivo.getParentFile().mkdirs(); + arquivo.createNewFile(); + return; + } + + List linhas = new ArrayList<>(); + try (BufferedReader br = new BufferedReader(new FileReader(arquivo))) { + String linha; + while ((linha = br.readLine()) != null) { + linhas.add(linha); + } + } + + for (String linha : linhas) { + String[] parts = linha.split(";"); + if (parts.length < 3) continue; + + String nome = parts[0]; + int periodo = Integer.parseInt(parts[1]); + int ch = Integer.parseInt(parts[2]); + + Disciplina d = new Disciplina(nome, periodo, ch); + disciplinasMap.put(nome, d); + } + + for (String linha : linhas) { + String[] parts = linha.split(";"); + String nome = parts[0]; + Disciplina d = disciplinasMap.get(nome); + + if (parts.length > 3 && !parts[3].isEmpty()) { + String[] preReqs = parts[3].split(","); + for (String preReqNome : preReqs) { + Disciplina preReq = disciplinasMap.get(preReqNome.trim()); + if (preReq != null) { + d.addPreReq(preReq); + } + } + } + } + } + + private void salvarTodas() throws IOException { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(caminhoArquivo))) { + for (Disciplina d : disciplinasMap.values()) { + StringBuilder sb = new StringBuilder(); + sb.append(d.getNome()).append(";"); + sb.append(d.getPeriodo()).append(";"); + sb.append(d.getCh()).append(";"); + List preReqs = d.getPreRequisitos(); + for (int i = 0; i < preReqs.size(); i++) { + sb.append(preReqs.get(i).getNome()); + if (i < preReqs.size() - 1) sb.append(","); + } + bw.write(sb.toString()); + bw.newLine(); + } + } + } + + public boolean create(Disciplina disciplina) throws IOException { + if (disciplinasMap.containsKey(disciplina.getNome())) { + return false; + } + disciplinasMap.put(disciplina.getNome(), disciplina); + salvarTodas(); + return true; + } + + public List readAll() { + return new ArrayList<>(disciplinasMap.values()); + } + + public Disciplina readByName(String nome) { + return disciplinasMap.get(nome); + } + + public boolean update(Disciplina disciplina) throws IOException { + if (!disciplinasMap.containsKey(disciplina.getNome())) { + return false; + } + disciplinasMap.put(disciplina.getNome(), disciplina); + salvarTodas(); + return true; + } + + public boolean delete(String nome) throws IOException { + if (!disciplinasMap.containsKey(nome)) { + return false; + } + disciplinasMap.remove(nome); + + for (Disciplina d : disciplinasMap.values()) { + d.getPreRequisitos().removeIf(pre -> pre.getNome().equalsIgnoreCase(nome)); + } + + salvarTodas(); + return true; + } +} diff --git a/avaliacoes/politecnico/src/main/java/dao/GradeDAO.java b/avaliacoes/politecnico/src/main/java/dao/GradeDAO.java new file mode 100644 index 0000000..60e9f3f --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/dao/GradeDAO.java @@ -0,0 +1,18 @@ +package dao; + +import model.Grade; + +public class GradeDAO { + + public void create(Grade ap) { + + } + + public void read(Grade ap) { + + } + + public void delete(Grade ap) { + + } +} diff --git a/avaliacoes/politecnico/src/main/java/dao/PolitecnicoDAO.java b/avaliacoes/politecnico/src/main/java/dao/PolitecnicoDAO.java new file mode 100644 index 0000000..cd4d7c0 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/dao/PolitecnicoDAO.java @@ -0,0 +1,79 @@ +package dao; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + +import model.Politecnico; + +public class PolitecnicoDAO { + private final String arquivo = "db/politecnico.txt"; + + public PolitecnicoDAO() { + File dir = new File("db"); + if (!dir.exists()) dir.mkdirs(); + } + + public void create(Politecnico p) { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo, true))) { + bw.write(p.getNome() + ";" + p.getUrl()); + bw.newLine(); + System.out.println("Politécnico salvo com sucesso."); + } catch (IOException e) { + System.out.println("Erro ao salvar politécnico: " + e.getMessage()); + } + } + + public ArrayList read() { + ArrayList lista = new ArrayList<>(); + try (BufferedReader br = new BufferedReader(new FileReader(arquivo))) { + String linha; + while ((linha = br.readLine()) != null) { + String[] dados = linha.split(";"); + if (dados.length >= 1) { + String nome = dados[0]; + String url = dados.length > 1 ? dados[1] : ""; + + Politecnico p = new Politecnico(nome); + p.setUrl(url); + lista.add(p); + } + } + } catch (IOException e) { + System.out.println("Erro ao ler politécnicos: " + e.getMessage()); + } + return lista; + } + + public void delete(String nome) { + ArrayList lista = read(); + boolean removido = false; + + for (int i = 0; i < lista.size(); i++) { + if (lista.get(i).getNome().equalsIgnoreCase(nome)) { + lista.remove(i); + removido = true; + break; + } + } + + if (!removido) { + System.out.println("Politécnico com nome \"" + nome + "\" não encontrado."); + return; + } + + try (BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo))) { + for (Politecnico p : lista) { + bw.write(p.getNome() + ";" + p.getUrl()); + bw.newLine(); + } + System.out.println("Politécnico removido com sucesso."); + } catch (IOException e) { + System.out.println("Erro ao deletar politécnico: " + e.getMessage()); + } + } +} diff --git a/avaliacoes/politecnico/src/main/java/dao/ProfessorDAO.java b/avaliacoes/politecnico/src/main/java/dao/ProfessorDAO.java new file mode 100644 index 0000000..07bf543 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/dao/ProfessorDAO.java @@ -0,0 +1,85 @@ +package dao; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + +import model.Politecnico; +import model.Professor; + +public class ProfessorDAO { + private final String arquivo = "src/db/professor.txt"; + + public ProfessorDAO() { + File dir = new File("db"); + if (!dir.exists()) dir.mkdirs(); + } + + public void create(Professor p) { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo, true))) { + bw.write(p.getNome() + ";" + p.getApelido() + ";" + p.getNumeroFiscal() + ";" + p.getId() + ";" + p.getContrato() + ";" + p.getPolitecnico().getNome()); + bw.newLine(); + System.out.println("Professor salvo."); + } catch (IOException e) { + System.out.println("Erro: " + e.getMessage()); + } + } + + public ArrayList read() { + ArrayList lista = new ArrayList<>(); + try (BufferedReader br = new BufferedReader(new FileReader(arquivo))) { + String linha; + while ((linha = br.readLine()) != null) { + String[] dados = linha.split(";"); + if (dados.length == 6) { + String nome = dados[0]; + String apelido = dados[1]; + String numeroFiscal = dados[2]; + int id = Integer.parseInt(dados[3]); + int contrato = Integer.parseInt(dados[4]); + String nomePolitecnico = dados[5]; + + Politecnico politecnico = new Politecnico(nomePolitecnico); + Professor p = new Professor(nome, apelido, numeroFiscal, id, contrato, politecnico); + lista.add(p); + } + } + } catch (IOException e) { + System.out.println("Erro ao ler professores: " + e.getMessage()); + } + return lista; + } + + public void delete(int id) { + ArrayList lista = read(); + boolean removido = false; + + for (int i = 0; i < lista.size(); i++) { + if (lista.get(i).getId() == id) { + lista.remove(i); + removido = true; + break; + } + } + + if (!removido) { + System.out.println("Professor com ID " + id + " não encontrado."); + return; + } + + try (BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo))) { + for (Professor p : lista) { + bw.write(p.getNome() + ";" + p.getApelido() + ";" + p.getNumeroFiscal() + ";" + + p.getId() + ";" + p.getContrato() + ";" + p.getPolitecnico().getNome()); + bw.newLine(); + } + System.out.println("Professor removido com sucesso."); + } catch (IOException e) { + System.out.println("Erro ao deletar professor: " + e.getMessage()); + } + } +} diff --git a/avaliacoes/politecnico/src/main/java/db/db.txt b/avaliacoes/politecnico/src/main/java/db/db.txt new file mode 100644 index 0000000..e69de29 diff --git a/avaliacoes/politecnico/src/main/java/model/Apontamento.java b/avaliacoes/politecnico/src/main/java/model/Apontamento.java index 3f3a472..16e7115 100644 --- a/avaliacoes/politecnico/src/main/java/model/Apontamento.java +++ b/avaliacoes/politecnico/src/main/java/model/Apontamento.java @@ -46,7 +46,12 @@ public void setDisciplina(Disciplina disciplina) { } public void imprimirRegistro(){ - this.disciplina.imprimirRequisitos(); - System.out.println("Nota: " + nota + " Status: " + status + " Data: " + data); + System.out.println("Apontamento:"); + if (disciplina != null) { + disciplina.imprimirRequisitos(); + } else { + System.out.println("Disciplina: N/A"); + } + System.out.println("Nota: " + nota + " | Status: " + status + " | Data: " + data); } } diff --git a/avaliacoes/politecnico/src/main/java/model/Curso.java b/avaliacoes/politecnico/src/main/java/model/Curso.java index 660dc7c..f0f3310 100644 --- a/avaliacoes/politecnico/src/main/java/model/Curso.java +++ b/avaliacoes/politecnico/src/main/java/model/Curso.java @@ -1,5 +1,7 @@ package model; +import dao.CursoDAO; + public class Curso { private String nome; private String portaria; @@ -28,4 +30,9 @@ public void setPortaria(String portaria) { public void imprimirInfo(){ System.out.println("Curso [Nome: " + nome + " Portaria: " + portaria + "]"); } + + public void create() { + CursoDAO cdao = new CursoDAO(); + cdao.create(this); + } } diff --git a/avaliacoes/politecnico/src/main/java/model/Disciplina.java b/avaliacoes/politecnico/src/main/java/model/Disciplina.java index fae7f7d..d403f5b 100644 --- a/avaliacoes/politecnico/src/main/java/model/Disciplina.java +++ b/avaliacoes/politecnico/src/main/java/model/Disciplina.java @@ -12,7 +12,7 @@ public Disciplina(String nome, int periodo, int ch) { this.nome = nome; this.periodo = periodo; this.ch = ch; - this.preRequisitos = new ArrayList(); + this.preRequisitos = new ArrayList<>(); } public Disciplina(String nome, int ch, int periodo, ArrayList preRequisitos) { @@ -59,10 +59,12 @@ public void addPreReq(Disciplina disciplina) { } public void imprimirRequisitos() { - System.out.println("Disciplina [Nome: " + this.nome + ", CH: " + this.ch + ", Periodo: " + this.periodo + "]"); - for (Disciplina prereq : preRequisitos) { + System.out.println("Disciplina [Nome: " + nome + ", CH: " + ch + ", Periodo: " + periodo + "]"); + if (!preRequisitos.isEmpty()) { System.out.println("Pré-requisitos:"); - prereq.imprimirRequisitos(); + for (Disciplina d : preRequisitos) { + System.out.println("- " + d.getNome()); + } } } diff --git a/avaliacoes/politecnico/src/main/java/model/Politecnico.java b/avaliacoes/politecnico/src/main/java/model/Politecnico.java index ae619d8..3a879e9 100644 --- a/avaliacoes/politecnico/src/main/java/model/Politecnico.java +++ b/avaliacoes/politecnico/src/main/java/model/Politecnico.java @@ -13,6 +13,12 @@ public Politecnico(String nome, String url, ArrayList cursos) { this.cursos = new ArrayList(); } + public Politecnico(String nome) { + this.nome = nome; + this.url = ""; + this.cursos = new ArrayList<>(); +} + public String getNome() { return nome; } diff --git a/avaliacoes/politecnico/src/main/java/model/Professor.java b/avaliacoes/politecnico/src/main/java/model/Professor.java index c37895d..e18d641 100644 --- a/avaliacoes/politecnico/src/main/java/model/Professor.java +++ b/avaliacoes/politecnico/src/main/java/model/Professor.java @@ -6,19 +6,16 @@ public class Professor extends Pessoa { private int contrato; private Politecnico politecnico; - public Professor(String nome, String apelido, String numeroFiscal, int id, int contrato, Politecnico politecnico) { + public Professor(String nome, String apelido, String numeroFiscal, int id, int contrato, Politecnico politecnico) { super(nome, apelido, numeroFiscal); this.id = id; this.contrato = contrato; this.politecnico = politecnico; } - - public Professor(String nome, String apelido, String numeroFiscal, int id, Double salario, int contrato, Politecnico politecnico) { - super(nome, apelido, numeroFiscal); - this.id = id; - this.salario = salario; - this.contrato = contrato; - this.politecnico = politecnico; + + + public void imprimirPessoa(){ + System.out.println("Professor [Nome: " + getNome() + ", Apelido: " + getApelido() + ", NumeroFiscal: " + getNumeroFiscal() + ", ID: " + this.id + ", Salario: " + this.salario + "]"); } public int getId() { @@ -53,8 +50,4 @@ public void setPolitecnico(Politecnico politecnico) { this.politecnico = politecnico; } - public void imprimirPessoa(){ - System.out.println("Professor [Nome: " + getNome() + ", Apelido: " + getApelido() + ", NumeroFiscal: " + getNumeroFiscal() + ", ID: " + this.id + ", Salario: " + this.salario + "]"); - } - } diff --git a/avaliacoes/politecnico/src/main/java/view/AllObjectsScan.java b/avaliacoes/politecnico/src/main/java/view/AllObjectsScan.java new file mode 100644 index 0000000..3259832 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/view/AllObjectsScan.java @@ -0,0 +1,48 @@ +package view; + +import controller.AlunoController; +import controller.ApontamentoController; +import controller.CursoController; +import controller.DisciplinaController; +import controller.GradeController; +import controller.ProfessorController; +import model.Aluno; +import model.Apontamento; +import model.Curso; +import model.Disciplina; +import model.Grade; +import model.Professor; + +public class AllObjectsScan { + public AllObjectsScan() {} + + public void createCurso(Curso c) { + CursoController controller = new CursoController(); + controller.createCurso(c); + } + + public void createGrade(Grade g) { + GradeController controller = new GradeController(); + controller.createGrade(g); + } + + public void createDisciplina(Disciplina d) { + DisciplinaController controller = new DisciplinaController(); + controller.createDisciplina(d); + } + + public void createApontamento(Apontamento ap) { + ApontamentoController controller = new ApontamentoController(); + controller.createApontamento(ap); + } + + public void createProfessor(Professor p) { + ProfessorController controller = new ProfessorController(); + controller.createProfessor(p); + } + + public void createAluno(Aluno a) { + AlunoController controller = new AlunoController(); + controller.createAluno(a); + } +} diff --git a/avaliacoes/politecnico/src/main/java/view/ApontamentoScan.java b/avaliacoes/politecnico/src/main/java/view/ApontamentoScan.java new file mode 100644 index 0000000..44610f8 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/view/ApontamentoScan.java @@ -0,0 +1,124 @@ +package view; + +import controller.ApontamentoController; +import controller.DisciplinaController; +import model.Apontamento; +import model.Disciplina; + +import java.util.List; +import java.util.Scanner; + +public class ApontamentoScan { + private static Scanner scanner = new Scanner(System.in); + private static DisciplinaController disciplinaController = new DisciplinaController(); + private static ApontamentoController apontamentoController; + + public static void main(String[] args) { + List disciplinas = disciplinaController.listarDisciplinas(); + apontamentoController = new ApontamentoController(disciplinas); + + int opcao; + do { + System.out.println("\n--- Menu Apontamentos ---"); + System.out.println("1 - Listar apontamentos"); + System.out.println("2 - Cadastrar apontamento"); + System.out.println("3 - Deletar apontamento"); + System.out.println("0 - Sair"); + System.out.print("Escolha: "); + opcao = Integer.parseInt(scanner.nextLine()); + + switch (opcao) { + case 1: + listarApontamentos(); + break; + case 2: + cadastrarApontamento(); + break; + case 3: + deletarApontamento(); + break; + case 0: + System.out.println("Saindo..."); + break; + default: + System.out.println("Opção inválida!"); + break; + } + } while (opcao != 0); + } + + private static void listarApontamentos() { + List apontamentos = apontamentoController.listarApontamentos(); + if (apontamentos.isEmpty()) { + System.out.println("Nenhum apontamento registrado."); + return; + } + int id = 1; + for (Apontamento a : apontamentos) { + System.out.println("ID: " + id++); + a.imprimirRegistro(); + System.out.println(); + } + } + + private static void cadastrarApontamento() { + System.out.println("\n-- Cadastrar novo apontamento --"); + + System.out.print("Nota: "); + Double nota = Double.parseDouble(scanner.nextLine()); + + System.out.print("Status: "); + String status = scanner.nextLine(); + + System.out.print("Data (ex: 2025-07-12): "); + String data = scanner.nextLine(); + + List disciplinas = disciplinaController.listarDisciplinas(); + if (disciplinas.isEmpty()) { + System.out.println("Não há disciplinas cadastradas para associar."); + return; + } + + System.out.println("Disciplinas disponíveis:"); + for (Disciplina d : disciplinas) { + System.out.println("- " + d.getNome()); + } + + System.out.print("Nome da disciplina associada: "); + String nomeDisc = scanner.nextLine(); + + Disciplina disciplinaSelecionada = null; + for (Disciplina d : disciplinas) { + if (d.getNome().equalsIgnoreCase(nomeDisc)) { + disciplinaSelecionada = d; + break; + } + } + + if (disciplinaSelecionada == null) { + System.out.println("Disciplina não encontrada."); + return; + } + + Apontamento apontamento = new Apontamento(nota, status, data, disciplinaSelecionada); + boolean sucesso = apontamentoController.criarApontamento(apontamento); + if (sucesso) { + System.out.println("Apontamento cadastrado com sucesso!"); + } else { + System.out.println("Erro ao cadastrar apontamento."); + } + } + + private static void deletarApontamento() { + listarApontamentos(); + System.out.print("Informe o ID do apontamento para deletar: "); + int id = Integer.parseInt(scanner.nextLine()); + + boolean sucesso = apontamentoController.deletarApontamento(id); + if (sucesso) { + System.out.println("Apontamento deletado com sucesso!"); + } else { + System.out.println("ID inválido ou erro ao deletar."); + } + } +} diff --git a/avaliacoes/politecnico/src/main/java/view/DisciplinaScan.java b/avaliacoes/politecnico/src/main/java/view/DisciplinaScan.java new file mode 100644 index 0000000..268e734 --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/view/DisciplinaScan.java @@ -0,0 +1,176 @@ +package view; + +import controller.DisciplinaController; +import model.Disciplina; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class DisciplinaScan { + private static DisciplinaController controller = new DisciplinaController(); + private static Scanner scanner = new Scanner(System.in); + + public static void main(String[] args) { + int opcao; + + do { + System.out.println("\n=== Menu Disciplina ==="); + System.out.println("1 - Listar disciplinas"); + System.out.println("2 - Cadastrar disciplina"); + System.out.println("3 - Atualizar disciplina"); + System.out.println("4 - Deletar disciplina"); + System.out.println("0 - Sair"); + System.out.print("Escolha: "); + opcao = Integer.parseInt(scanner.nextLine()); + + switch (opcao) { + case 1: + listarDisciplinas(); + break; + case 2: + cadastrarDisciplina(); + break; + case 3: + atualizarDisciplina(); + break; + case 4: + deletarDisciplina(); + break; + case 0: + System.out.println("Saindo..."); + break; + default: + System.out.println("Opção inválida!"); + break; + } + } while (opcao != 0); + } + + private static void listarDisciplinas() { + List disciplinas = controller.listarDisciplinas(); + if (disciplinas.isEmpty()) { + System.out.println("Nenhuma disciplina cadastrada."); + return; + } + for (Disciplina d : disciplinas) { + d.imprimirRequisitos(); + System.out.println(); + } + } + + private static void cadastrarDisciplina() { + System.out.println("\n-- Cadastrar nova disciplina --"); + System.out.print("Nome: "); + String nome = scanner.nextLine(); + + System.out.print("Período: "); + int periodo = Integer.parseInt(scanner.nextLine()); + + System.out.print("Carga Horária: "); + int ch = Integer.parseInt(scanner.nextLine()); + + System.out.print("Pré-requisitos (separados por vírgula, vazio se não tiver): "); + String preReqInput = scanner.nextLine(); + + List preReqs = pegarPreRequisitos(preReqInput); + + Disciplina nova = new Disciplina(nome, periodo, ch); + for (Disciplina pre : preReqs) { + nova.addPreReq(pre); + } + + boolean sucesso = controller.criarDisciplina(nova); + if (sucesso) { + System.out.println("Disciplina cadastrada com sucesso!"); + } else { + System.out.println("Erro: disciplina já existe."); + } + } + + private static void atualizarDisciplina() { + System.out.println("\n-- Atualizar disciplina existente --"); + System.out.print("Nome da disciplina a atualizar: "); + String nome = scanner.nextLine(); + + Disciplina existente = controller.buscarDisciplina(nome); + if (existente == null) { + System.out.println("Disciplina não encontrada."); + return; + } + + System.out.println("Deixe vazio para manter o valor atual."); + + System.out.print("Novo nome (" + existente.getNome() + "): "); + String novoNome = scanner.nextLine(); + if (novoNome != null && !novoNome.trim().isEmpty()) { + existente.setNome(novoNome); + } + + System.out.print("Novo período (" + existente.getPeriodo() + "): "); + String novoPeriodoStr = scanner.nextLine(); + if (novoPeriodoStr != null && !novoPeriodoStr.trim().isEmpty()) { + int novoPeriodo = Integer.parseInt(novoPeriodoStr); + existente.setPeriodo(novoPeriodo); + } + + System.out.print("Nova carga horária (" + existente.getCh() + "): "); + String novaChStr = scanner.nextLine(); + if (novaChStr != null && !novaChStr.trim().isEmpty()) { + int novaCh = Integer.parseInt(novaChStr); + existente.setCh(novaCh); + } + + System.out.print("Novos pré-requisitos (separados por vírgula, vazio para manter): "); + String preReqInput = scanner.nextLine(); + if (preReqInput != null && !preReqInput.trim().isEmpty()) { + List preReqs = pegarPreRequisitos(preReqInput); + existente.setPreRequisitos(new ArrayList()); + for (Disciplina pre : preReqs) { + existente.addPreReq(pre); + } + } + + boolean sucesso = controller.atualizarDisciplina(existente); + if (sucesso) { + System.out.println("Disciplina atualizada com sucesso!"); + } else { + System.out.println("Erro ao atualizar disciplina."); + } + } + + private static void deletarDisciplina() { + System.out.println("\n-- Deletar disciplina --"); + System.out.print("Nome da disciplina a deletar: "); + String nome = scanner.nextLine(); + + boolean sucesso = controller.deletarDisciplina(nome); + if (sucesso) { + System.out.println("Disciplina deletada com sucesso!"); + } else { + System.out.println("Disciplina não encontrada."); + } + } + + private static List pegarPreRequisitos(String entrada) { + List preReqs = new ArrayList<>(); + if (entrada == null || entrada.trim().isEmpty()) { + return preReqs; + } + + String[] nomes = entrada.split(","); + List todas = controller.listarDisciplinas(); + + for (String nome : nomes) { + nome = nome.trim(); + for (Disciplina d : todas) { + if (d.getNome().equalsIgnoreCase(nome)) { + preReqs.add(d); + break; + } + } + } + + return preReqs; + } +} diff --git a/avaliacoes/politecnico/src/main/java/view/Main.java b/avaliacoes/politecnico/src/main/java/view/Main.java new file mode 100644 index 0000000..024a82c --- /dev/null +++ b/avaliacoes/politecnico/src/main/java/view/Main.java @@ -0,0 +1,122 @@ +package view; + +import java.util.Scanner; + +import controller.PolitecnicoController; +import controller.ProfessorController; + +public class Main { + public static void main(String[] args) { + ProfessorController profController = new ProfessorController(); + PolitecnicoController polController = new PolitecnicoController(); + Scanner sc = new Scanner(System.in); + int opcao; + + do { + System.out.println("\n===== MENU GERAL ====="); + System.out.println("1 - Gerenciar Professores"); + System.out.println("2 - Gerenciar Politécnicos"); + System.out.println("0 - Sair"); + System.out.print("Opção: "); + opcao = sc.nextInt(); + + switch (opcao) { + case 1: + menuProfessor(sc, profController); + break; + case 2: + menuPolitecnico(sc, polController); + break; + case 0: + System.out.println("Encerrando..."); + break; + default: + System.out.println("Opção inválida."); + } + + } while (opcao != 0); + sc.close(); + } + + public static void menuProfessor(Scanner sc, ProfessorController controller) { + int opcao; + do { + System.out.println("\n--- MENU PROFESSOR ---"); + System.out.println("1 - Cadastrar"); + System.out.println("2 - Listar"); + System.out.println("3 - Remover"); + System.out.println("0 - Voltar"); + System.out.print("Opção: "); + opcao = sc.nextInt(); + sc.nextLine(); + + switch (opcao) { + case 1: + System.out.print("Nome: "); + String nome = sc.nextLine(); + System.out.print("Apelido: "); + String apelido = sc.nextLine(); + System.out.print("Número Fiscal: "); + String numeroFiscal = sc.nextLine(); + System.out.print("ID: "); + int id = sc.nextInt(); + System.out.print("Contrato (horas): "); + int contrato = sc.nextInt(); + sc.nextLine(); + System.out.print("Nome do Politécnico: "); + String nomePol = sc.nextLine(); + + controller.adicionarProfessor(nome, apelido, numeroFiscal, id, contrato, nomePol); + break; + case 2: + controller.listarProfessores(); + break; + case 3: + System.out.print("ID do professor a remover: "); + int idRemover = sc.nextInt(); + controller.removerProfessor(idRemover); + break; + case 0: + break; + default: + System.out.println("Opção inválida."); + } + } while (opcao != 0); + } + + public static void menuPolitecnico(Scanner sc, PolitecnicoController controller) { + int opcao; + do { + System.out.println("\n--- MENU POLITÉCNICO ---"); + System.out.println("1 - Cadastrar"); + System.out.println("2 - Listar"); + System.out.println("3 - Remover"); + System.out.println("0 - Voltar"); + System.out.print("Opção: "); + opcao = sc.nextInt(); + sc.nextLine(); + + switch (opcao) { + case 1: + System.out.print("Nome: "); + String nome = sc.nextLine(); + System.out.print("URL: "); + String url = sc.nextLine(); + controller.adicionarPolitecnico(nome, url); + break; + case 2: + controller.listarPolitecnicos(); + break; + case 3: + System.out.print("Nome do Politécnico a remover: "); + String nomeRemover = sc.nextLine(); + controller.removerPolitecnico(nomeRemover); + break; + case 0: + break; + default: + System.out.println("Opção inválida."); + } + } while (opcao != 0); + } +}