📍 Faculdade do Gama (FGA)
📚 Curso: Orientação a Objetos
👨🏫 Professor: André Luiz Peron Martins Lanna
- Caio Rocha de Oliveira - 232001371
- Lucas Machado Peres Ricarte - 232014093
- Alberto Côrtes Cavalcante - 232014610
- João Guilherme - 232014039
O projeto consiste em um Sistema de Gerenciamento de Clínica Médica escrito em Java, aplicado com conceitos de Orientação a Objetos (OO), como encapsulamento, herança, polimorfismo, além de boas práticas de modularização e tratamento de exceções.
O sistema centraliza as seguintes funcionalidades:
- Cadastro de médicos e pacientes
- Agendamento de consultas
- Prescrições e exames
- Menu interativo que diferencia as ações de um médico ou paciente no sistema
- Validações e tratamento de erros (ex.: blocos em construtores, exceções personalizadas, etc.)
O diagrama UML está em desenvolvimento e será disponibilizado na pasta de documentação para visualizar a relação entre entidades como Paciente, Medico, Consulta, CadastroMed, CadPac, CadConsul, CadPres e Menu.
📌 Use a versão JDK 17!
- Clique em Code, selecione Download Zip e escolha a pasta de destino para baixar o arquivo.
- Descompacte o arquivo e abra a pasta
Pasta-exemplono seu editor de código (ou a pasta que você criou para o projeto). - Instale e habilite os recursos necessários para desenvolvimento em Java no VS Code, por exemplo o Java Extension Pack.
- Na pasta
src, localize o arquivoMain.java. - Abra o arquivo e, com o botão direito do mouse, selecione Run Java para iniciar o programa.
- Para acessar o programa, é necessário escolher entre o menu de Médico ou o menu de Paciente, ambos têm o mesmo Login de 001, que foi utilizado para debugar o código, contúdo, dentro do Menu de médicos, é possível cadastrar novos integrantes, que recebem logins automáticos baseados no CPF para o Paciente e o CRM para o médico, não permitindo duplicatas.
- Classe
Paciente:- Estende
Pessoa(contém atributos como nome, CPF e data de nascimento). - Possui vínculo com
CadConsulpara acessar consultas do paciente. - Métodos de acesso e manipulação do histórico ou dados do paciente.
- Estende
- Classe
Medico:- Também estende
Pessoa. - Atributos adicionais: CRM, especialidade.
- Métodos para prescrever medicamentos/exames, consultar histórico profissional, etc.
- Também estende
- Cadastro de Usuários:
CadPacgerencia a lista de pacientes (adicionar, remover, buscar, atualizar).CadastroMedgerencia a lista de médicos (adicionar, remover, buscar, atualizar).
- Classe
CadConsul:- Controla a criação, exclusão e listagem de consultas.
- Verifica disponibilidade de médicos e pacientes (em expansão).
- Envolve validações e exceções personalizadas (como conflitos de horário).
- Classe
CadPres:- Armazena, cria e gerencia prescrições (exames, medicamentos, etc.).
- Está associada a
CadConsulpara vincular a prescrição com a consulta específica. - Em desenvolvimento para exibir históricos detalhados de prescrições.
- Classe
Menu:- Apresenta opções diferentes para médico ou paciente (via
JOptionPaneou console). - Através de métodos como
iniciarMenu(),menuStaff(), emenuClientes(), direciona o sistema para funcionalidades específicas (cadastrar, editar, remover, listar). - Recebe instâncias de cadastro (
CadastroMed,CadPac,CadConsul,CadPres) e as utiliza para as operações internas.
- Apresenta opções diferentes para médico ou paciente (via
- Erros de piloto (ex.:
StackOverflowError) normalmente ocorrem por construtores recursivos. - Exceções personalizadas podem ser criadas para tratar tentativas de cadastro duplicado, horários indisponíveis etc.
- Estrutura de validação em cada classe de cadastro, para evitar inconsistências.
- Menu
Menu.java→ Classe que gerencia a interação com o usuário (input e redirecionamento).
- Cadastros
CadPac.java,CadastroMed.java,CadConsul.java,CadPres.java→ Classes responsáveis pela lógica de cadastro, listagem e gestão de pacientes, médicos, consultas e prescrições.
- Clientes
Paciente.java→ Representa o paciente, contendo dados específicos e métodos associados.
- Staff
Medico.java→ Representa o médico, com informações adicionais como CRM e especialidade.
- Prescricoes
Consulta.javaarmazenaPrescricoes.javaque por sua vez armazenaExame.java,Medicamento.javaeTratamento.java.
📄 Relatório do Projeto (PDF)
-
Cadastro de um Paciente
- Exemplo:
new Paciente("teste", "001", "25/02/2025", cadConsul). - Nome: teste, cpf: 001, data de nascimnto: 25/02/2025.
- Em seguida,
cadPac.cadastrarPac(paciente)insere o registro no sistema.
- Exemplo:
-
Cadastro de um Médico
- Exemplo:
new Medico("Jorge", "001", "25/02/2025", "001", "consulta"). - Nome: Jorge, CRM: 001, data de nascimnto: 25/02/2025, cpf: 001
- Em seguida,
cadM.cadastrarMed(medico)armazena o médico.
- Exemplo:
-
Agendamento de uma Consulta
- Através de
cadConsul.criarConsulta(medico, paciente, data, horario), relacionando médico e paciente. - Futuras expansões vão validar conflitos de horário ou disponibilidade de agenda.
- Através de
-
Execução do Programa (via classe
Main)- Instancia objetos de cadastro:
CadastroMed,CadPac,CadConsul,CadPres. - Chama
Menu.iniciarMenu()para fornecer interface de decisão ao usuário.
- Instancia objetos de cadastro:
Use esses exemplos para testar e validar o comportamento de cada parte do sistema.