Este proyecto consiste en un sistema de gestión de asistencia de empleados (SIGESAT) creado en C++. Permite registrar empleados, gestionar sus asistencias (marcaciones), y generar reportes relacionados con la asistencia, ausencias, permisos y horas extra. Utiliza archivos binarios para almacenar la información de empleados, marcaciones y reportes.
-
Empleado: Representa a un empleado con atributos como código, nombre, DUI, departamento, cargo y estado (activo/inactivo)...
-
Marcacion: Representa una marcación de asistencia, con atributos como código de empleado, fecha, hora de entrada/salida, horas extra, permiso, motivo y observaciones. También tiene métodos para cargar y guardar marcaciones (marcaciones.dat).
-
Reporte: Permite almacenar información de reportes generados, aunque en el código actual solo se usa para guardar/cargar reportes (reportes.dat).
-
SistemaGestion: Es la clase principal que gestiona la lógica del sistema. Contiene vectores de empleados, marcaciones y reportes, y métodos para todas las operaciones del sistema (agregar/editar/desactivar/listar empleados, registrar/editar/listar marcaciones, y generar reportes).
- Gestión de empleados (agregar, editar, desactivar, listar)
- Registro de marcaciones (registrar, editar, listar)
- Reportes (asistencia, horas trabajadas, ausencias, permisos, horas extra)
Toda la información se guarda en archivos binarios (empleados.dat, marcaciones.dat, reportes.dat). Cada vez que se realiza una operación de alta, edición o eliminación lógica, se actualizan los archivos correspondientes.
Al agregar empleados, se valida que el código y el DUI no estén repetidos. Al registrar marcaciones, se valida que el empleado exista y esté activo, que la fecha y hora tengan el formato correcto, y que no exista ya una marcación para ese empleado y fecha. Al editar o desactivar empleados/marcaciones, se verifica que existan y estén activos.
El sistema puede generar varios reportes:
- Asistencia por rango de fechas.
- Horas trabajadas por empleado.
- Empleados con ausencias en una fecha.
- Permisos solicitados.
- Horas extra realizadas en un rango de fechas.
La interfaz es por consola, con menús y tablas formateadas usando iomanip para facilitar la lectura.
- Incluye windows.h y usa SetConsoleOutputCP(CP_UTF8); para soportar caracteres UTF-8 en la consola de Windows.