// 🚀 Projeto: Gerenciador de Cronograma Acadêmico
// Objetivo
// Cadastrar disciplinas
// Listar todas
// Filtrar por dia da semana
// Exibir carga horária total
// Organizar tudo via terminal
// imports Main.java
import java.util.Scanner;
// imports Service.java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
// Classe Disciplina
class Disciplina {
private String nome;
private DiaSemana dia;
private int cargaHoraria;
public Disciplina(String nome, DiaSemana dia, int cargaHoraria) {
this.nome = nome;
this.dia = dia;
this.cargaHoraria = cargaHoraria;
}
public String getNome() {
return nome;
}
public DiaSemana getDia() {
return dia;
}
public int getCargaHoraria() {
return cargaHoraria;
}
@Override
public String toString() {
return nome + " | " + dia + " | " + cargaHoraria + "h";
}
}
// 📌 Enum DiaSemana
enum DiaSemana {
SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA
}
// 📌 Service
class CronogramaService {
private List<Disciplina> disciplinas = new ArrayList<>();
public void adicionar(Disciplina d) {
disciplinas.add(d);
}
public void listarTodas() {
if (disciplinas.isEmpty()) {
System.out.println("Nenhuma disciplina cadastrada.");
return;
}
disciplinas.forEach(System.out::println);
}
public void filtrarPorDia(DiaSemana dia) {
List<Disciplina> filtradas = disciplinas.stream()
.filter(d -> d.getDia() == dia)
.collect(Collectors.toList());
if (filtradas.isEmpty()) {
System.out.println("Nenhuma disciplina encontrada para " + dia);
return;
}
filtradas.forEach(System.out::println);
}
public void cargaHorariaTotal() {
int total = disciplinas.stream()
.mapToInt(Disciplina::getCargaHoraria)
.sum();
System.out.println("Carga horária total do semestre: " + total + "h");
}
}
// 📌 Main (Menu Interativo)
public class Main {
private static final Scanner scanner = new Scanner(System.in);
private static final CronogramaService service = new CronogramaService();
public static void main(String[] args) {
// Dados iniciais (funciona no MyCompiler)
service.adicionar(new Disciplina("Banco de Dados", DiaSemana.SEGUNDA, 4));
service.adicionar(new Disciplina("Algoritmos II", DiaSemana.QUARTA, 4));
service.adicionar(new Disciplina("Engenharia de Software", DiaSemana.SEXTA, 2));
int opcao;
do {
System.out.println("\n===== CRONOGRAMA ACADÊMICO =====");
System.out.println("1 - Adicionar disciplina");
System.out.println("2 - Listar todas");
System.out.println("3 - Filtrar por dia");
System.out.println("4 - Ver carga horária total");
System.out.println("0 - Sair");
System.out.print("Opção: ");
try {
opcao = Integer.parseInt(scanner.nextLine());
} catch (Exception e) {
System.out.println("Entrada inválida.");
opcao = -1;
}
switch (opcao) {
case 1 -> adicionarDisciplina();
case 2 -> service.listarTodas();
case 3 -> filtrar();
case 4 -> service.cargaHorariaTotal();
case 0 -> System.out.println("Encerrando...");
default -> System.out.println("Opção inválida.");
}
} while (opcao != 0);
}
private static void adicionarDisciplina() {
try {
System.out.print("Nome da disciplina: ");
String nome = scanner.nextLine();
System.out.print("Dia (SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA): ");
DiaSemana dia = DiaSemana.valueOf(scanner.nextLine().toUpperCase());
System.out.print("Carga horária (horas): ");
int carga = Integer.parseInt(scanner.nextLine());
service.adicionar(new Disciplina(nome, dia, carga));
System.out.println("Disciplina adicionada com sucesso!");
} catch (Exception e) {
System.out.println("Erro ao cadastrar disciplina.");
}
}
private static void filtrar() {
try {
System.out.print("Digite o dia: ");
DiaSemana dia = DiaSemana.valueOf(scanner.nextLine().toUpperCase());
service.filtrarPorDia(dia);
} catch (Exception e) {
System.out.println("Dia inválido.");
}
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: