0% encontró este documento útil (0 votos)
4 vistas4 páginas

Diccionario Español-Inglés en Java

El documento describe una aplicación de escritorio en Java para gestionar un diccionario Español-Inglés, permitiendo a usuarios traducir palabras y consultar estadísticas. La estructura del proyecto incluye paquetes para la lógica de negocio y la interfaz gráfica, con almacenamiento en archivos de texto. Se detallan decisiones técnicas sobre la implementación, el flujo de uso y buenas prácticas para el mantenimiento y extensión de la aplicación.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas4 páginas

Diccionario Español-Inglés en Java

El documento describe una aplicación de escritorio en Java para gestionar un diccionario Español-Inglés, permitiendo a usuarios traducir palabras y consultar estadísticas. La estructura del proyecto incluye paquetes para la lógica de negocio y la interfaz gráfica, con almacenamiento en archivos de texto. Se detallan decisiones técnicas sobre la implementación, el flujo de uso y buenas prácticas para el mantenimiento y extensión de la aplicación.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

# Diccionario — Documentación del Proyecto

## Descripción General

Aplicación de escritorio en Java (Swing) para gestionar un diccionario


Español–Inglés, usuarios (estudiantes, docentes y administradores),
traducir palabras y frases, y consultar historial/estadísticas de
búsquedas. El almacenamiento es en archivos de texto planos
ubicados en `TXT/`.

## Estructura del Proyecto

```

src/main/java

├── GUI/ # Interfaces gráficas (Swing)

└── Traductor/ # Lógica de dominio y servicios

TXT/ # Almacenamiento en archivos de texto

```

### Paquete `Traductor`

- `[Link]`: Punto de entrada de la aplicación. Inicializa servicios y


abre la primera vista.

- `[Link]`: Proveedor/singleton de servicios de dominio


(diccionario, usuarios, historial).

- `[Link]` / `[Link]`: API e implementación para


gestionar palabras, buscar/contar y traducir.

- `[Link]` / `[Link]`: API e implementación


para CRUD de usuarios.

- `[Link]` / `[Link]`: API e


implementación para registrar y listar búsquedas (por usuario y
globales).

- `[Link]`, `[Link]` y subclases (`Estudiante`, `Docente`,


`Administrador`): Modelo de usuarios.

- `[Link]`: Modelo de palabra (español/inglés) con contador de


búsquedas y validación.
- `[Link]`: Modelo de cada búsqueda realizada.

### Paquete `GUI`

Ventanas principales (todas basadas en `JFrame` con Swing):

- `LoginPrincipal`: Acceso inicial para usuarios.

- `MenuEstudiante` / `MenuDocente`: Menús según rol.

- `BuscarPalabra`: Búsqueda y traducción de palabras puntuales.

- `TraducirFrase`: Traducción de frases completas manteniendo


puntuación/espacios.

- `Diccionario`: Gestión de palabras (agregar, eliminar, listar).

- `GestionDiccionario`: Variante de gestión de diccionario (según flujo


de UI).

- `RegistroUsuarios`: Alta de usuarios.

- `ListaUsuarios`: Edición, eliminación y listado de usuarios.

- `HistorialBusqueda`: Historial global de búsquedas.

- `EstadisticaEstudiante`: Estadísticas por estudiante (frecuencias,


más buscadas, etc.).

Todas las ventanas secundarias usan botón "Volver" y


`DISPOSE_ON_CLOSE` para no cerrar toda la app.

## Almacenamiento (carpeta `TXT/`)

- `[Link]`: líneas con formato `espanol;ingles;contador`.

- `[Link]`: líneas con formato


`nombreCompleto;tipoDocumento;numeroDocumento;tipoUsuario;con
trasena`.

- `[Link]`: registro de búsquedas con campos separados por


`;` y manejo de escape para evitar conflictos con separadores.

Los servicios cargan en memoria al iniciar y sobrescriben el archivo al


guardar cambios.
## Diseño y Decisiones Técnicas

- Uso de interfaces para desacoplar la lógica:

- `IDiccionario`, `IGestorUsuario`, `IRegistroBusquedas`, `IUsuario`.

- Algoritmos "sin librerías" estándar de colecciones avanzadas o


streams:

- Búsquedas lineales para encontrar/eliminar elementos.

- Selección manual del máximo para "palabra más buscada".

- Ordenamientos manuales en vistas de estadísticas ([Link]. burbuja).

- Traducción de frases sin expresiones regulares:

- Tokenización manual por puntos de código Unicode


(`[Link]`), preservando espacios, signos y números.

- Se aplica el patrón de mayúsculas del token origen a la traducción


(mayúsculas, capitalización).

- Validación de entrada:

- `Palabra` restringe a letras para español/inglés; se rechazan


números u otros símbolos.

- La UI captura excepciones de validación y muestra mensajes claros


al usuario.

- Concurrencia:

- La aplicación se ejecuta en el hilo de eventos de Swing; no se


requiere sincronización explícita para las operaciones típicas de UI.

## Flujo de Uso

1. Ejecutar `Traductor/[Link]`.

2. Iniciar sesión (según configuración de usuarios en `[Link]`).

3. Operaciones principales:

- Gestión de diccionario: agregar/eliminar palabras, listar.

- Búsqueda/Traducción: palabras y frases.

- Historial: ver búsquedas globales.

- Estadísticas: seleccionar estudiante y ver sus métricas.

- Gestión de usuarios: alta, edición, eliminación.


## Ejecución

- Desde un IDE (NetBeans/VS Code): ejecutar la clase


`[Link]`.

- Estructura de carpetas ya preparada; los archivos en `TXT/` se


crean/actualizan automáticamente al usar la app.

## Notas y Buenas Prácticas

- Evita cerrar la ventana principal de la aplicación si hay ventanas


hijas abiertas; usa los botones "Volver".

- Al editar archivos `TXT/`, respeta los separadores `;` y el esquema


de campos; la app asume ese formato.

- Para extender funcionalidades (por ejemplo, añadir nuevos roles o


métricas):

- Define primero la interfaz correspondiente y luego su


implementación.

- Mantén la lógica de negocio en `Traductor/` y la UI en `GUI/`.

## Mantenimiento / Extensión

- Nuevos formatos de almacenamiento: encapsular la


serialización/deserialización en métodos de `guardar()`/`cargar()` de
cada servicio.

- Nuevas vistas: seguir el patrón de Swing existente (GroupLayout o


layouts simples) y reutilizar `Servicios`.

- Más idiomas: extender `Palabra` y `Diccionario` para soportar pares


adicionales y ajustar la tokenización si fuera necesario.

También podría gustarte