Você está na página 1de 18

TRABALHO DE TLP

GRUPO 1

EMANUEL VICENTE Nº10

INÊS PEREIRA Nº16

KELTON FERREIRA Nº19

WAGNER GANGA Nº26


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Scanner;

public class SistemaMarcacaoAssiduidades {

private static ArrayList<LivroDePonto> livrosDePonto;

private static Scanner scanner;

public static void main(String[] args) {

livrosDePonto = new ArrayList<>();

scanner = new Scanner(System.in);

exibirMenuPrincipal();

//menu principal

public static void exibirMenuPrincipal() {

int opcao;

do {

System.out.println("##### LIVRO DE PONTO - 2023 #####");

System.out.println("1. Cadastrar Livro de Ponto");

System.out.println("2. Gestão de Faltas (Estudante)");

System.out.println("3. Gestão de Faltas (Docente)");

System.out.println("4. Consultar Livro de Ponto");

System.out.println("0. Sair");

System.out.print("Escolha uma opção: ");

opcao = scanner.nextInt();

switch (opcao) {

case 1:

cadastrarLivroDePonto();

break;
case 2:

menuGestaoFaltasEstudante();

break;

case 3:

menuGestaoFaltasDocente();

break;

case 4:

consultarLivroDePonto();

break;

case 0:

System.out.println("Saindo do programa...");

break;

default:

System.out.println("Opção inválida. Tente novamente.");

break;

} while (opcao != 0);

}//cadastrar livro

public static void cadastrarLivroDePonto() {

System.out.print("Descrição do Livro de Ponto: ");

String descricao = scanner.next();

System.out.print("Ano: ");

int ano = scanner.nextInt();

System.out.print("Nome da Turma: ");

String nomeTurma = scanner.next();

System.out.print("Classe da Turma: ");

String classeTurma = scanner.next();

System.out.print("Curso da Turma: ");

String cursoTurma = scanner.next();


Turma turma = new Turma(nomeTurma, classeTurma, cursoTurma);

LivroDePonto livroDePonto = new LivroDePonto(descricao, ano, turma);

livrosDePonto.add(livroDePonto);

System.out.println("Livro de Ponto cadastrado com sucesso.");

//menu estudante

public static void menuGestaoFaltasEstudante() {

System.out.print("Descrição do Livro de Ponto: ");

String descricao = scanner.next();

LivroDePonto livroDePonto = buscarLivroDePonto(descricao);

if (livroDePonto == null) {

System.out.println("Livro de Ponto não encontrado.");

return;

int opcao;

do {

System.out.println("\n### GESTÃO DE FALTAS (ESTUDANTE) ###");

System.out.println("1. Marcar Faltas");

System.out.println("2. Consultar Faltas de um Estudante");

System.out.println("3. Justificar Falta");

System.out.println("4. Voltar");

System.out.print("Escolha uma opção: ");

opcao = scanner.nextInt();

switch (opcao) {

case 1:

marcarFaltasEstudante(livroDePonto);

break;
case 2:

consultarFaltasEstudante(livroDePonto);

break;

case 3:

justificarFaltaEstudante(livroDePonto);

break;

case 4:

System.out.println("Voltando ao menu principal...");

break;

default:

System.out.println("Opção inválida. Tente novamente.");

break;

} while (opcao != 4);

//marcar

public static void marcarFaltasEstudante(LivroDePonto livroDePonto) {

System.out.println("\n### MARCAR FALTAS (ESTUDANTE) ###");

for (Estudante estudante : livroDePonto.getEstudantes()) {

System.out.print("Estado (P - Presente / F - Falta) para o estudante " +


estudante.getNome() + ": ");

String estado = scanner.next();

livroDePonto.marcarFaltaEstudante(estudante, estado);

System.out.println("Faltas marcadas com sucesso.");

//consultar

public static void consultarFaltasEstudante(LivroDePonto livroDePonto) {

System.out.print("Número do Estudante: ");


int numeroEstudante = scanner.nextInt();

Estudante estudante = livroDePonto.consultarEstudante(numeroEstudante);

if (estudante == null) {

System.out.println("Estudante não encontrado.");

return;

livroDePonto.consultarFaltasEstudante(estudante);

//justificar

public static void justificarFaltaEstudante(LivroDePonto livroDePonto) {

System.out.print("Número do Estudante: ");

int numeroEstudante = scanner.nextInt();

Estudante estudante = livroDePonto.consultarEstudante(numeroEstudante);

if (estudante == null) {

System.out.println("Estudante não encontrado.");

return;

if (estudante.getEstado() == EstadoEstudante.INATIVO) {

System.out.println("Estudante inativo. Não é possível justificar faltas.");

return;

System.out.print("Motivo da Falta: ");

String motivo = scanner.next();

System.out.print("Valor da Falta: ");

double valorFalta = scanner.nextDouble();


livroDePonto.justificarFaltaEstudante(estudante, motivo, valorFalta);

System.out.println("Falta justificada com sucesso.");

//menu do docente

public static void menuGestaoFaltasDocente() {

int opcao;

do {

System.out.println("\n### GESTÃO DE FALTAS (DOCENTE) ###");

System.out.println("1. Consultar Docente");

System.out.println("2. Marcar Faltas");

System.out.println("3. Justificar Faltas");

System.out.println("4. Voltar");

System.out.print("Escolha uma opção: ");

opcao = scanner.nextInt();

switch (opcao) {

case 1:

consultarDocente();

break;

case 2:

marcarFaltasDocente();

break;

case 3:

justificarFaltasDocente();

break;

case 4:

System.out.println("Voltando ao menu principal...");

break;

default:

System.out.println("Opção inválida. Tente novamente.");

break;
}

} while (opcao != 4);

//consultar docente

public static void consultarDocente() {

System.out.print("Número do Docente: ");

int numeroDocente = scanner.nextInt();

for (LivroDePonto livroDePonto : livrosDePonto) {

Docente docente = livroDePonto.consultarDocente(numeroDocente);

if (docente != null) {

System.out.println(docente);

return;

System.out.println("Docente não encontrado.");

//marcar

public static void marcarFaltasDocente() {

System.out.print("Número do Docente: ");

int numeroDocente = scanner.nextInt();

for (LivroDePonto livroDePonto : livrosDePonto) {

Docente docente = livroDePonto.consultarDocente(numeroDocente);

if (docente != null) {

System.out.print("Estado (P - Presente / F - Falta) para o docente " +


docente.getNome() + ": ");

String estado = scanner.next();

livroDePonto.marcarFaltaDocente(docente, estado);

System.out.println("Falta marcada com sucesso.");


return;

System.out.println("Docente não encontrado.");

//justificar

public static void justificarFaltasDocente() {

System.out.print("Número do Docente: ");

int numeroDocente = scanner.nextInt();

for (LivroDePonto livroDePonto : livrosDePonto) {

Docente docente = livroDePonto.consultarDocente(numeroDocente);

if (docente != null) {

if (docente.getEstado() == EstadoDocente.INATIVO) {

System.out.println("Docente inativo. Não é possível justificar faltas.");

return;

System.out.print("Motivo da Falta: ");

String motivo = scanner.next();

System.out.print("Valor da Falta: ");

double valorFalta = scanner.nextDouble();

livroDePonto.justificarFaltaDocente(docente, motivo, valorFalta);

System.out.println("Falta justificada com sucesso.");

return;

System.out.println("Docente não encontrado.");


}

//consulta de livro

public static void consultarLivroDePonto() {

System.out.print("Descrição do Livro de Ponto: ");

String descricao = scanner.next();

LivroDePonto livroDePonto = buscarLivroDePonto(descricao);

if (livroDePonto == null) {

System.out.println("Livro de Ponto não encontrado.");

return;

livroDePonto.exibirRegistroPonto();

public static LivroDePonto buscarLivroDePonto(String descricao) {

for (LivroDePonto livroDePonto : livrosDePonto) {

if (livroDePonto.getDescricao().equalsIgnoreCase(descricao)) {

return livroDePonto;

return null;

//turma

class Turma {

private String nome;

private String classe;

private String curso;

public Turma(String nome, String classe, String curso) {


this.nome = nome;

this.classe = classe;

this.curso = curso;

//getters e setters

public String getNome() {

return nome;

public String getClasse() {

return classe;

public String getCurso() {

return curso;

enum EstadoEstudante {

ATIVO,

INATIVO

//Estudante

class Estudante {

private int numero;

private String nome;

private EstadoEstudante estado;

public Estudante(int numero, String nome, EstadoEstudante estado) {

this.numero = numero;

this.nome = nome;
this.estado = estado;

//getters e setters

public int getNumero() {

return numero;

public String getNome() {

return nome;

public EstadoEstudante getEstado() {

return estado;

public void setEstado(EstadoEstudante estado) {

this.estado = estado;

@Override

public String toString() {

return "Estudante{" +

"numero=" + numero +

", nome='" + nome + '\'' +

", estado=" + estado +

'}';

enum EstadoDocente {

ATIVO,
INATIVO

//docente

class Docente {

private int numero;

private String nome;

private EstadoDocente estado;

public Docente(int numero, String nome, EstadoDocente estado) {

this.numero = numero;

this.nome = nome;

this.estado = estado;

//getters e setters

public int getNumero() {

return numero;

public String getNome() {

return nome;

public EstadoDocente getEstado() {

return estado;

public void setEstado(EstadoDocente estado) {

this.estado = estado;

@Override
public String toString() {

return "Docente{" +

"numero=" + numero +

", nome='" + nome + '\'' +

", estado=" + estado +

'}';

//livro de ponto

class LivroDePonto {

private String descricao;

private int ano;

private Turma turma;

private HashMap<Estudante, String> faltasEstudante;

private HashMap<Docente, String> faltasDocente;

public LivroDePonto(String descricao, int ano, Turma turma) {

this.descricao = descricao;

this.ano = ano;

this.turma = turma;

this.faltasEstudante = new HashMap<>();

this.faltasDocente = new HashMap<>();

//getters e setters

public String getDescricao() {

return descricao;

public int getAno() {

return ano;

}
public Turma getTurma() {

return turma;

public ArrayList<Estudante> getEstudantes() {

ArrayList<Estudante> estudantes = new ArrayList<>();

for (Estudante estudante : faltasEstudante.keySet()) {

estudantes.add(estudante);

return estudantes;

//marcar

public void marcarFaltaEstudante(Estudante estudante, String estado) {

faltasEstudante.put(estudante, estado);

//consultar

public Estudante consultarEstudante(int numeroEstudante) {

for (Estudante estudante : faltasEstudante.keySet()) {

if (estudante.getNumero() == numeroEstudante) {

return estudante;

return null;

//consultar faltas estudante

public void consultarFaltasEstudante(Estudante estudante) {

String estado = faltasEstudante.get(estudante);

if (estado == null) {

System.out.println("Faltas do estudante " + estudante.getNome() + ": Nenhuma falta


registrada.");
} else {

System.out.println("Faltas do estudante " + estudante.getNome() + ": " + estado);

//justificar faltas estudante

public void justificarFaltaEstudante(Estudante estudante, String motivo, double valorFalta) {

String falta = faltasEstudante.get(estudante);

if (falta != null && falta.equalsIgnoreCase("F")) {

System.out.println("Falta já está marcada como falta injustificada. Não é possível


justificar novamente.");

return;

faltasEstudante.put(estudante, "J");

System.out.println("Falta justificada: Estudante " + estudante.getNome() + ", Motivo: " +


motivo + ", Valor da Falta: " + valorFalta);

//marcar faltas

public void marcarFaltaDocente(Docente docente, String estado) {

faltasDocente.put(docente, estado);

//cosultar faltas docente

public Docente consultarDocente(int numeroDocente) {

for (Docente docente : faltasDocente.keySet()) {

if (docente.getNumero() == numeroDocente) {

return docente;

return null;

//justificar faltas

public void justificarFaltaDocente(Docente docente, String motivo, double valorFalta) {


String falta = faltasDocente.get(docente);

if (falta != null && falta.equalsIgnoreCase("F")) {

System.out.println("Falta já está marcada como falta injustificada. Não é possível


justificar novamente.");

return;

faltasDocente.put(docente, "J");

System.out.println("Falta justificada: Docente " + docente.getNome() + ", Motivo: " +


motivo + ", Valor da Falta: " + valorFalta);

//registrar livro

public void exibirRegistroPonto() {

System.out.println("\n### REGISTRO DE PONTO ###");

System.out.println("Descrição: " + descricao);

System.out.println("Ano: " + ano);

System.out.println("Turma: " + turma.getNome() + " - " + turma.getClasse() + " - " +


turma.getCurso());

System.out.println("## FALTAS DE ESTUDANTES ##");

for (Estudante estudante : faltasEstudante.keySet()) {

String estado = faltasEstudante.get(estudante);

System.out.println("Estudante: " + estudante.getNome() + ", Estado: " + estado);

System.out.println("## FALTAS DE DOCENTES ##");

for (Docente docente : faltasDocente.keySet()) {

String estado = faltasDocente.get(docente);

System.out.println("Docente: " + docente.getNome() + ", Estado: " + estado);

Você também pode gostar