@startuml state-enrollment
!theme plain
skinparam stateBackgroundColor #F8F9FA
skinparam stateBorderColor #495057
title Estado de Inscripción del Estudiante
[*] --> SinMaterias : Registro inicial
state "Sin Materias" as SinMaterias {
state "0 créditos" as cred0
}
state "Inscripción Parcial" as Parcial {
state "3 créditos\n(1 materia)" as cred3
state "6 créditos\n(2 materias)" as cred6
}
state "Inscripción Completa" as Completa {
state "9 créditos\n(3 materias)" as cred9
}
SinMaterias --> Parcial : inscribir(materia)
Parcial --> Parcial : inscribir(materia)\n[créditos < 9]
Parcial --> Completa : inscribir(materia)\n[créditos = 6]
Completa --> Parcial : cancelar(inscripción)
Parcial --> SinMaterias : cancelar(inscripción)\n[única materia]
note right of Completa
No puede inscribir
más materias
end note
note left of Parcial
Validaciones en cada inscripción:
- Límite de créditos
- No repetir profesor
- Materia no duplicada
end note
state validacion <>
SinMaterias --> validacion : intenta inscribir
Parcial --> validacion : intenta inscribir
validacion --> Parcial : [válido]
validacion --> [*] : [inválido]\nmuestra error
@enduml