I would like to hire a C++ Programmer

Cerrado Publicado hace 6 años Pagado a la entrega
Cerrado Pagado a la entrega

# General

La tarea a realizar es la programación de una herramienta "configurador y generador de reportes" para la industria de generación de energía eléctrica.

Dicha herramienta deberá comunicarse con nuestro servidor de datos históricos para extraer la información necesaria para generar los reportes.

Además de utilizar datos históricos para la generación de reportes, es también necesario permitir al usuario introducir valores manuales al reporte justo antes de generar el mismo, rellenando algún tipo de ficha pre-definida.

Una lista de reportes estándar de la industria de generación de energía eléctrica deberá ser pre-configurada y accesible al usuario desde la herramienta.

Una interfaz gráfica que permita al usuario decidir que reporte generar, así como visualizar el reporte generado o a generar.

Para realizar la tarea es necesario cumplir los siguientes requisitos:

* Utilizar solamente C++ y las librerías Qt (versión 5.6.X).

* Utilizar como base la librería y generador de reportes NCReport ([url removed, login to view]).

* Utilizar el servidor Git de nuestra empresa para ir versionando el progreso del trabajo realizado.

# Detalles

Existe una idea básica de cómo realizar la tarea, los detalles se mencionan a continuación.

## NCReport

El NCReport es una herramienta y librería de Qt que tiene dos módulos principales:

* Un módulo "editor de plantillas" que permite definir las plantillas de los reportes a generar, así como las fuentes de datos cambiantes (o "datasources") con las que se rellenarán las plantillas a la hora de generar los reportes. La información de las plantillas de almacena en un fichero XML.

* Un módulo "generador de reportes", que utiliza las plantillas XML y las fuentes de datos cambiantes (o "datasources") para generar los reportes con los últimos datos disponibles y ciertos parámetros configurables. El generador permite luego exportar el reporte a diferentes formatos (Printer, Postscript, PDF, SVG, Text, HTML, Image).

Por defecto, el NCReport soporta diversos "datasources" incluyendo "SQL database", "Text", "QAbstractItemModel", "QStringList", "Custom subclassed". Para la tarea, es necesario crear un "datasource" personalizado para acceder a los datos de nuestro servidor histórico (detalles más adelante).

En resumen, para el NCReport las tareas requeridas son:

* Conocer bien y saber utilizar el NCReport.

* Aprender cómo crear un "datasource" personalizado ("QAbstractItemModel" o "Custom subclassed").

## Servidor de Históricos

Nuestro servidor de históricos es una aplicación “in-house” que no es compatible con ningún otro formato de datos standard en el mercado. Para acceder a los datos históricos, se utiliza también un protocolo de comunicaciones “in-house”.

Parte de la tarea es aprender y conocer el protocolo de comunicaciones y desarrollar un cliente para acceder a los datos desde C++ Qt. Preferentemente una clase de C++ que realice la abstracción del protocolo de comunicaciones a una interfaz de programación (API) sencilla. Esta clase, deberá realizar las funciones mínimas necesarias requeridas de un cliente de históricas, por ejemplo:

* Configurar y gestionar la comunicación con el servidor de históricos (set IP, Port, start, stop). Emitir señales al generarse algún error de conexión.

* Obtener datos históricos del servidor en base a "queries" sencillas. Por ejemplo, obtener datos entre un rango de fechas, obtener datos solo de algunas columnas específicas, etc. Emitir señales al generarse algún error de query.

Para validar esta clase, será necesario una interfaz de usuario (GUI) en Qt C++ que permita comprobar la funcionalidad básica de esta clase.

El siguiente paso es hacer uso de esta clase para crear el "datasource" personalizado del NCReport, utilizando el método más conveniente, después de haber estudiado todas las posibilidades que permite el NCReport para creare "datasource" personalizados (sección anterior).

## Reportes Standard

Se proporcionarán ejemplos reales del tipo de reportes utilizados en la industria. Parte de la tarea es crear plantillas del módulo "editor de plantillas" del NCReport que sean iguales a dichos reportes, pero que se generen con los datos de nuestro servidor histórico, así como datos "manuales" (mas información en próxima sección).

## Interfaz Gráfica

El modulo "generador de reportes" del NCReport es una DLL que permite generar los reportes programáticamente. Sin embargo, es necesario crear una interfaz gráfica que permita al usuario final decidir qué tipo de reporte generar (de forma amigable), definir los parámetros configurables del reporte, así como los datos "manuales".

Los datos manuales, son datos que no se encuentran en la base de datos. Son datos que el usuario debe poder introducir manualmente justo al momento de generar un nuevo reporte. Por lo tanto, es probable que resulte necesario "obligar" al usuario a rellenar una forma antes de pasar al paso de generación del reporte. Es parte también de la tarea realizar esa "forma" de datos manuales de tal forma que sea flexible y configurable.

# Conocimientos Mínimos Qt

Para poder realizar la tarea, es necesario tener como mínimo experiencia utilizando las siguientes clases de Qt:

• QVector, QMap, QHash y otros contenedores.

• QTcpSocket y QTcpServer para comunicaciones en TCP.

• QThread para ejecución de código concurrente.

• QAbstractItemModel y QAbstractItemView para implementación de patrón de diseño vista-controlador.

Además de conocer los mecanismos de generación de widgets utilizando la herramienta QtDesigner de Qt.

Programación en C++

Nº del proyecto: #13531243

Sobre el proyecto

10 propuestas Proyecto remoto Activo hace 6 años

10 freelancers están ofertando un promedio de €4075 por este trabajo

Yknox

Hello I'm interesting your project very well I'm a Good C++, Ruby, OpenCV, Math, Jave, Algorithm expert. I m quite well experienced in these jobs. Let's go ahead with me I want to service for you continously. Más

€4639 EUR en 30 días
(435 comentarios)
8.4
kjg197318

Qt expert!!!! Hello, I've a great interest in your project as a Qt master who have heavy experiences in Qt programming. I've fully gone through your requirements and have a plenty of confidence in myself that I Más

€3888 EUR en 30 días
(54 comentarios)
7.0
bestit4u

Hello. I am interested in your job. My name is Shan Bin and I am a team manager. Our team is an excellent team with over 3 years of experiences in android, ios, web development. Also our team members have full skil Más

€3333 EUR en 30 días
(4 comentarios)
4.5
priyas171

Dear Project Owner, Greetings for the day! Thank you for reviewing my bid. We have huge experience of working in C, C++ and C#. We can start the job immediately once you award it to us. Kindly chat wi Más

€4444 EUR en 30 días
(1 comentario)
3.0
luisaguerra74

Hola, Primero que todo, te soy sincero, no conozco la tecnología que QT que manejas y NCReport. Sin embargo, te comento que si he trabajado en C++, implementando sistemas transacciones bancarios, interfaces entre Más

€4444 EUR en 40 días
(0 comentarios)
0.0
rhynosistemas

Saludos me ha llamado mucho la atención tu solicitud, en especial porque trabajé muchos años en PDVSA (industria petrolera) y en ternium SIDOR (industria del acero) en el área de automatización nivel 1, nivel 2... en P Más

€4500 EUR en 30 días
(0 comentarios)
0.0