@startuml use-cases !theme plain skinparam actorStyle awesome skinparam packageStyle rectangle skinparam usecaseBackgroundColor #F8F9FA skinparam usecaseBorderColor #495057 skinparam actorBackgroundColor #007AFF title Sistema de Registro de Estudiantes - Diagrama de Casos de Uso actor "Estudiante" as student actor "Administrador" as admin rectangle "Sistema de Inscripción Académica" { ' Autenticación (ambos actores) usecase "Iniciar sesión" as UC_LOGIN usecase "Recuperar contraseña" as UC_RECOVER ' Solo estudiantes usecase "Registrarse" as UC_REGISTER usecase "Activar cuenta" as UC_ACTIVATE usecase "Ver dashboard personal" as UC_DASHBOARD usecase "Ver materias disponibles" as UC_SUBJECTS usecase "Inscribirse en materia" as UC_ENROLL usecase "Cancelar inscripción" as UC_UNENROLL usecase "Ver mis inscripciones" as UC_MY_ENROLL usecase "Ver compañeros de clase" as UC_CLASSMATES ' Solo administrador usecase "Gestionar estudiantes\n(CRUD)" as UC_CRUD usecase "Ver todos los estudiantes" as UC_LIST usecase "Crear estudiante" as UC_CREATE usecase "Editar estudiante" as UC_EDIT usecase "Eliminar estudiante" as UC_DELETE ' Validaciones (includes) usecase "Validar límite de créditos\n(máx 9 créditos)" as UC_VAL_CREDITS usecase "Validar restricción de profesor\n(no repetir profesor)" as UC_VAL_PROF } ' Relaciones Estudiante student --> UC_REGISTER student --> UC_LOGIN student --> UC_ACTIVATE student --> UC_RECOVER student --> UC_DASHBOARD student --> UC_SUBJECTS student --> UC_ENROLL student --> UC_UNENROLL student --> UC_MY_ENROLL student --> UC_CLASSMATES ' Relaciones Admin admin --> UC_LOGIN admin --> UC_RECOVER admin --> UC_CRUD admin --> UC_LIST ' Extensiones CRUD UC_CRUD ..> UC_CREATE : <> UC_CRUD ..> UC_EDIT : <> UC_CRUD ..> UC_DELETE : <> ' Validaciones inscripción UC_ENROLL ..> UC_VAL_CREDITS : <> UC_ENROLL ..> UC_VAL_PROF : <> note right of UC_ENROLL Reglas de negocio: - Máximo 3 materias (9 créditos) - No puede tener 2 materias del mismo profesor - Requiere cuenta activada end note note right of UC_CLASSMATES Solo muestra nombres de compañeros por materia end note note right of UC_ACTIVATE El estudiante recibe código de activación al registrarse end note note bottom of admin Acceso completo al CRUD de estudiantes end note @enduml