Sou iniciante, e tenho um trabalho para realizar, estou travado

O sistema de gerenciamento de consultas deverá prover, pelo menos as seguintes funcionalidades:

  • Um menu com as seguinte opções:
    • Cadastrar Médico
    • Cadastrar Paciente
    • Agendar Consulta
    • Alterar Consulta
    • Buscar Pessoa
    • Lista Consultas
    • Sair
  • Cada opção do menu deverá estar modularizada em um método ou classe específico.
  • Os cadastros deverão ter as seguintes validações:
    • garantir que entradas numéricas recebam apenas números;
    • garantir que entradas do tipo texto, não sejam vazias ou nulas;
    • garantir que entradas do tipo data e hora sejam valores válidos;
    • entradas como e-mail, telefones, CRM e CEP devem ser validadas;
    • no caso de agendamento de consultas, deve-se verificar se a data e hora da consulta é maior ou igual a data e hora atual
    • também deve-se evitar que uma mesma consulta seja marcada para a mesma data e hora de outra consulta já agendada
  • O sistema deve conter uma estrutura de classes onde, uma classe abstrata Pessoa, será superclasse (pai) de Medico e Paciente.
  • A busca de pessoas deverá ser feita por partes do nome da pessoa.
  • A funcionalidade Listar Consultas, deverá exibir as consultas ordenadas por Data e Hora, em ordem crescente.

@Wesley_Nascimento, espepcificamente qual seria sua duvida ? Se eu fosse você começaria desenhando a estrutura do banco de dados e os relacionamentos das entidades. Com isso você conseguiria uma base boa para começar a fazer um CRUD.
Sobre tecnologia, você vai utilizar spring, hibernate ? Qual banco de dados você vai utilizar ? E qual versão do java você vai utilizar ? A partir do java 8 foi inserido a class LocalDate e isso ajuda demais na hora de trabalharmos com data e hora.