A vacinação contra a COVID-19 se mostrou eficaz pa...
تم الإنشاء في: ٢٥ نوفمبر ٢٠٢٥
تمت الإجابة باستخدام GPT-5.1 Thinking بواسطة Chat01
تم الإنشاء في: ٢٥ نوفمبر ٢٠٢٥
تمت الإجابة باستخدام GPT-5.1 Thinking بواسطة Chat01
A vacinação contra a COVID-19 se mostrou eficaz para diminuir o número de infectados e casos de internações, porém é importante que a população continue vacinando com as doses de reforço. Segundo G1 (2022) a dose de reforço foi aplicada em 56,25% da população com 12 anos de idade ou mais, faixa de idade que atualmente pode receber o reforço da vacinação. (Vacinação contra a Covid: mais de 101 milhões de brasileiros tomaram a dose de reforço.
Disponível em: https://g1.globo.com/saude/coronavirus/vacinas/noticia/2022/08/02/vacinacao-contra-a-covid-mais-de-101-milhoes-de-brasileiros-tomaram-a-dose-de-reforco.ghtml Acesso em: 04/11/2025)
Pensando nisso desenvolva um sistema de controle de vacinação utilizando a linguagem JAVA seguindo os seguintes requisitos:
1 - Ao entrar no sistema o usuário deve informar o CPF e o nome da enfermeira que está aplicando a vacina.
2 - Após informado os dados da enfermeira o sistema deve apresentar a opção de vacinar cidadão, listar cidadãos vacinados e sair.
3 - Ao escolher a opção vacinar cidadão o sistema deve solicitar o CPF do cidadão, o nome do cidadão, a data de vacinação da primeira dose, a data de vacinação da segunda dose, a data de vacinação da terceira dose e a data de vacinação da quarta dose.
4 - Caso a data de vacinação das doses 2, 3 ou 4 forem inferiores a 4 meses da data de vacinação da dose anterior o sistema deve informar que o cidadão ainda não tem direito a uma nova data e retornar para as opções do requisito número 2. (não é necessário salvar esse registro na lista de cidadãos vacinados)
5 - Ao escolher a opção listar cidadãos vacinados o sistema deve mostrar uma lista dos cidadãos cadastrados no requisito número 3 e as datas de vacinação das doses.
6 - Ao escolher a opção sair o sistema deve sinalizar se o usuário deseja finalizar.
7 - Utilize os conceitos aprendidos na disciplina.
8 - Não é necessário salvar os dados em banco de dados ou arquivo, guarde todos os objetos em memória.
faça usando diferentes classes e arquivos para usar o POO da melhor maneira possivel
Vou montar um sisteminha de console em Java, orientado a objetos, com várias classes/arquivos:
Enfermeira – guarda os dados da enfermeira.Cidadao – guarda os dados do cidadão e datas de doses.RegistroVacinacao – faz o controle da lista e valida os intervalos das doses.SistemaVacinacao – contém o main e o menu.As datas serão lidas no formato dd/MM/yyyy e verificadas com LocalDate (Java 8+).
Se qualquer dose 2, 3 ou 4 for antes de 4 meses em relação à dose anterior, o sistema avisa e não salva o cidadão.
Enfermeira.javajavapublic class Enfermeira { private String cpf; private String nome; public Enfermeira(String cpf, String nome) { this.cpf = cpf; this.nome = nome; } public String getCpf() { return cpf; } public String getNome() { return nome; } @Override public String toString() { return nome + " (CPF: " + cpf + ")"; } }
Cidadao.javajavaimport java.time.LocalDate; public class Cidadao { private String cpf; private String nome; private LocalDate dataDose1; private LocalDate dataDose2; private LocalDate dataDose3; private LocalDate dataDose4; public Cidadao(String cpf, String nome, LocalDate dataDose1, LocalDate dataDose2, LocalDate dataDose3, LocalDate dataDose4) { this.cpf = cpf; this.nome = nome; this.dataDose1 = dataDose1; this.dataDose2 = dataDose2; this.dataDose3 = dataDose3; this.dataDose4 = dataDose4; } public String getCpf() { return cpf; } public String getNome() { return nome; } public LocalDate getDataDose1() { return dataDose1; } public LocalDate getDataDose2() { return dataDose2; } public LocalDate getDataDose3() { return dataDose3; } public LocalDate getDataDose4() { return dataDose4; } }
RegistroVacinacao.javajavaimport java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class RegistroVacinacao { private Enfermeira enfermeira; private List<Cidadao> cidadaos; private DateTimeFormatter formatter; public RegistroVacinacao(Enfermeira enfermeira) { this.enfermeira = enfermeira; this.cidadaos = new ArrayList<>(); this.formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); } /** * Fluxo completo para vacinar um cidadão: * - Ler dados * - Validar intervalos entre doses * - Se ok, salvar na lista */ public void vacinarCidadao(Scanner scanner) { System.out.println("\n=== Vacinar cidadão ==="); System.out.print("Informe o CPF do cidadão: "); String cpf = scanner.nextLine().trim(); System.out.print("Informe o nome do cidadão: "); String nome = scanner.nextLine().trim(); LocalDate dose1 = lerData(scanner, "Informe a data da 1ª dose (dd/MM/yyyy): "); if (dose1 == null) return; LocalDate dose2 = lerData(scanner, "Informe a data da 2ª dose (dd/MM/yyyy): "); if (dose2 == null) return; LocalDate dose3 = lerData(scanner, "Informe a data da 3ª dose (dd/MM/yyyy): "); if (dose3 == null) return; LocalDate dose4 = lerData(scanner, "Informe a data da 4ª dose (dd/MM/yyyy): "); if (dose4 == null) return; if (!validarIntervalos(dose1, dose2, dose3, dose4)) { System.out.println("O cidadão ainda não tem direito à nova dose."); System.out.println("Registro NÃO foi salvo.\n"); return; } Cidadao cidadao = new Cidadao(cpf, nome, dose1, dose2, dose3, dose4); cidadaos.add(cidadao); System.out.println("Cidadão vacinado e cadastrado com sucesso!\n"); } /** * Lista todos os cidadãos já cadastrados com as datas das doses. */ public void listarCidadaosVacinados() { System.out.println("\n=== Lista de cidadãos vacinados ==="); if (cidadaos.isEmpty()) { System.out.println("Nenhum cidadão vacinado cadastrado.\n"); return; } System.out.println("Enfermeira responsável: " + enfermeira); System.out.println("----------------------------------------"); for (Cidadao c : cidadaos) { System.out.println("Nome: " + c.getNome()); System.out.println("CPF : " + c.getCpf()); System.out.println("1ª dose: " + c.getDataDose1().format(formatter)); System.out.println("2ª dose: " + c.getDataDose2().format(formatter)); System.out.println("3ª dose: " + c.getDataDose3().format(formatter)); System.out.println("4ª dose: " + c.getDataDose4().format(formatter)); System.out.println("----------------------------------------"); } System.out.println(); } /** * Lê uma data do teclado no formato dd/MM/yyyy. * Se for inválida, volta ao menu principal (retorna null). */ private LocalDate lerData(Scanner scanner, String mensagem) { System.out.print(mensagem); String textoData = scanner.nextLine().trim(); try { return LocalDate.parse(textoData, formatter); } catch (DateTimeParseException e) { System.out.println("Data inválida! Operação cancelada, voltando ao menu.\n"); return null; } } /** * Valida se as doses 2, 3 e 4 respeitam o intervalo mínimo de 4 meses * em relação à dose anterior. * * Inferior a 4 meses => inválido. * Igual ou superior a 4 meses => válido. */ private boolean validarIntervalos(LocalDate d1, LocalDate d2, LocalDate d3, LocalDate d4) { if (d2.isBefore(d1.plusMonths(4))) { System.out.println("A 2ª dose está com menos de 4 meses de intervalo em relação à 1ª dose."); return false; } if (d3.isBefore(d2.plusMonths(4))) { System.out.println("A 3ª dose está com menos de 4 meses de intervalo em relação à 2ª dose."); return false; } if (d4.isBefore(d3.plusMonths(4))) { System.out.println("A 4ª dose está com menos de 4 meses de intervalo em relação à 3ª dose."); return false; } return true; } }
SistemaVacinacao.java (contém o main)javaimport java.util.Scanner; public class SistemaVacinacao { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("=========================================="); System.out.println(" Sistema de Controle de Vacinação COVID "); System.out.println("==========================================\n"); // 1 - Dados da enfermeira System.out.print("Informe o CPF da enfermeira: "); String cpfEnfermeira = scanner.nextLine().trim(); System.out.print("Informe o nome da enfermeira: "); String nomeEnfermeira = scanner.nextLine().trim(); Enfermeira enfermeira = new Enfermeira(cpfEnfermeira, nomeEnfermeira); RegistroVacinacao registro = new RegistroVacinacao(enfermeira); boolean sair = false; while (!sair) { // 2 - Menu de opções System.out.println("\n===== MENU PRINCIPAL ====="); System.out.println("Enfermeira logada: " + enfermeira); System.out.println("1 - Vacinar cidadão"); System.out.println("2 - Listar cidadãos vacinados"); System.out.println("3 - Sair"); System.out.print("Escolha uma opção: "); String opcaoTexto = scanner.nextLine(); int opcao; try { opcao = Integer.parseInt(opcaoTexto); } catch (NumberFormatException e) { opcao = -1; } switch (opcao) { case 1: // 3 e 4 - Vacinar cidadão e validar datas registro.vacinarCidadao(scanner); break; case 2: // 5 - Listar cidadãos registro.listarCidadaosVacinados(); break; case 3: // 6 - Confirmar saída System.out.print("Deseja realmente sair? (S/N): "); String resposta = scanner.nextLine().trim(); if (resposta.equalsIgnoreCase("S")) { sair = true; System.out.println("Finalizando o sistema. Até logo!"); } else { System.out.println("Operação cancelada. Retornando ao menu."); } break; default: System.out.println("Opção inválida! Tente novamente."); } } scanner.close(); } }
Se quiser, posso adaptar o sistema para:
ValidadorDeDose).Mas do jeito que está, já atende exatamente os requisitos que você listou e usa POO com várias classes.