Skip to content
edrram2-arch edited this page Jun 6, 2026 · 2 revisions

Proyecto académico desarrollado en Java que simula la gestión de un consultorio médico con control de acceso por administradores.


Tabla de contenidos


Descripción general

ProyectoEDJava es una aplicación de consola escrita en Java que permite administrar un consultorio médico. El sistema gestiona doctores, pacientes y citas médicas, y restringe el acceso mediante un sistema de autenticación por administrador.


Características

  • Alta de doctores — Registro de médicos con nombre, especialidad e identificador único.
  • Alta de pacientes — Registro de pacientes con datos personales e identificador único.
  • Creación de citas — Programación de citas con fecha, hora, motivo, doctor y paciente asignados.
  • Control de acceso — Solo administradores autenticados pueden operar el sistema.
  • Persistencia en archivos — Los datos se guardan y cargan desde archivos mediante ArchivoService.

Estructura del proyecto

ProyectoEDJava/
├── src/
│   └── main/
│       ├── consultorio/
│       │   └── Main.java                  # Punto de entrada
│       ├── com.consultorio.controller/
│       │   └── ConsultorioControlador.java # Lógica de menú e interacción
│       ├── model/
│       │   ├── Persona.java               # Clase base abstracta
│       │   ├── Administrador.java         # Hereda de Persona
│       │   ├── Doctor.java                # Hereda de Persona
│       │   ├── Paciente.java              # Hereda de Persona
│       │   └── Cita.java                  # Representa una consulta médica
│       ├── service/
│       │   ├── ArchivoService.java        # Lectura/escritura en archivos
│       │   ├── CitaService.java           # Gestión de citas
│       │   ├── DoctorService.java         # Gestión de doctores
│       │   ├── PacienteService.java       # Gestión de pacientes
│       │   └── IClasificable.java         # Interfaz de clasificación
│       └── util/
│           └── IdGenerator.java           # Generador de IDs únicos (UUID)
├── db/                                    # Archivos de persistencia
├── out/                                   # Clases compiladas
└── README.md

Arquitectura

El proyecto sigue una arquitectura en capas:

┌──────────────────────────────┐
│         Main.java            │  ← Punto de entrada
└──────────────┬───────────────┘
               │
┌──────────────▼───────────────┐
│  ConsultorioControlador      │  ← Capa de control (menú, flujo)
└──────┬──────────────┬────────┘
       │              │
┌──────▼──────┐  ┌────▼────────┐
│  *Service   │  │   Model     │  ← Servicios y entidades
└──────┬──────┘  └─────────────┘
       │
┌──────▼──────┐
│ArchivoService│  ← Persistencia en archivos
└─────────────┘

Clases principales

Persona (abstracta)

Clase base para Doctor, Paciente y Administrador. Contiene atributos comunes como id y nombre, y declara el método abstracto mostrarDatos().

Doctor

Extiende Persona. Agrega el atributo especialidad.

Paciente

Extiende Persona. Contiene la información personal del paciente.

Administrador

Extiende Persona. Incluye credenciales de acceso (identificador y contraseña) para autenticación.

Cita

Representa una consulta médica. Almacena:

  • idCita — Identificador único
  • fechaHoraLocalDateTime con formato yyyy-MM-dd HH:mm
  • motivo — Razón de la consulta
  • doctor — Doctor asignado
  • paciente — Paciente asignado

ConsultorioControlador

Orquesta toda la interacción con el usuario mediante un menú de consola. Delega las operaciones a los servicios correspondientes.

IdGenerator

Genera identificadores únicos de 8 caracteres en mayúsculas usando UUID.randomUUID().


Requisitos

Requisito Versión mínima
Java (JDK) 14+ (se usa switch expressions)
IDE recomendado IntelliJ IDEA
Sistema operativo Windows / Linux / macOS

Cómo ejecutar

  1. Clona el repositorio:

    git clone https://github.com/tu-usuario/ProyectoEDJava.git
  2. Abre el proyecto en IntelliJ IDEA.

  3. Marca src/main como Sources Root:

    • Click derecho en la carpeta mainMark Directory asSources Root
  4. Ejecuta la clase Main.java.


Flujo de uso

Al iniciar el sistema se solicitan las credenciales del administrador. Si son correctas, se despliega el menú principal:

========== CONSULTORIO MÉDICO ==========
1. Dar de alta doctor
2. Dar de alta paciente
3. Crear cita
4. Listar doctores
5. Listar pacientes
6. Listar citas
7. Buscar doctor por ID
8. Buscar paciente por ID
9. Buscar cita por ID
0. Salir
========================================

Control de acceso

El sistema implementa autenticación mediante la clase Administrador. Solo usuarios registrados con un identificador y contraseña válidos pueden acceder al sistema. Sin autenticación exitosa, el programa no permite ninguna operación.


Persistencia de datos

ArchivoService se encarga de leer y escribir los datos en archivos dentro de la carpeta db/. Los servicios (CitaService, DoctorService, PacienteService) cargan los datos al iniciar y los guardan al realizar cambios, garantizando que la información persista entre ejecuciones.