GUI QT - XChanitoX/Proyecto1_BD2 GitHub Wiki
QT
Utilizamos la herramienta gráfica QT en lenguaje C++ para realizar una interfaz donde el usuario puede realizar una consulta y elegir uno entre los métodos de organización de archivos SequentialFile e IndexHash.
Código clase GUI
En esta parte encontramos el código principal de la ventana que muestra nuestra GUI, Creamos una clase que hereda de una clase predefinida de Qt "QMainWindow", a la cual le agregamos el modelo QStandarItemModel, para poder mostrar nuestros datos en formato de tabla, un string para definir el método a utilizar y una sección de Private Slots en la cual tenemos las funciones de nuestra clase. Estas funciones incluyen tanto las acciones a realizar al oprimir los botones como las funciones para operaciones internas.
Métodos clase GUI
En esta sección implementamos los métodos que va a poseer nuestra interfaz. Asignamos al modelo previamente definido las tablas disponibles y conectamos cada uno de los botones a una función en específico.
Parseando la consulta
En esta función obtenemos lo que el usuario ingresó en el Cuadro de texto y lo convertimos en substring los cuales se separan por cada salto de línea. Estos nuevos substrings se almacenan en un vector de strings, el cual solo tendrá 3 elementos ya que el formato que hemos seguido para la consulta es de esa forma. Con la primera línea obtenemos el fileName para poder leer el CSV deaseado. Luego creamos un vector de vectores string el cual va a recibir cada uno de los datos por separado del CSV, agregandolo a un objeto RecordEdu y haciendo un push_back al vector registros.
Ventana principal
Como se puede observar en la imagen de abajo, tenemos nuestra ventana principal de usuario que contiene tres secciones las tablas disponibles, la caja de entrada para el query principal, los botones correspondientes para las funciones y el espacio donde se mostraran nuestros datafile.dat
.
Sequential File
Carga de la tabla y muestra de los datos
En este caso, insertamos en el query a obtener que viene a ser INSER INTO TABLE ORDER from ('../EduData.csv') using INDEX SEQUENTIAL;
donde se obtendra la ruta del archivo y este sera cargado e insertado a través del método de organización de SequentialFile.
CRUD
Una vez presionado el boton de enviar, se cargara la tabla con todos los registros guardados, los registrados mostrados son cargados con el método elegido y del archivo de donde se inserto la tabla inicialmente.
Por otra parte, una vez insertada la tabla a través del Sequential File, tenemos las opciones de ejecutar comandos CRUD. Comenzaremos con una inserción, en este caso el campo encima del botón a insertar recibe los parametros de la tabla EduData.csv
separados por comas y los inserta al datafile.dat
. En este caso insertamos lo siguiente: 16,M,KW,KuwaIT,MiddleSchool,G-01,A,IT,F,Father,30,40,22,66,Yes,Good,Above-7,M
y se puede observar instantanemente debido a que la tabla se actualiza a posteriori.
A su vez, podemos realizar la función de busqueda secuencial dónde insertaremos la llave principal de nuestra tabla (GradeID
) en el campo que se encuentra encima del boton de "Search" que una vez presionado actualizara la tabla mostrando el o los campos con la llave primaria.
Además, podemos realizar la busqueda por rango de la misma forma llenando el campo de texto que se encuentra encima del botón dónde el mismo recibira dos llaves primarios de la tabla(GradeID
) separados por una coma. Una vez accionado el botón se mostraran los registros que se encuentren en el rango dado en la tabla inferior.
Por último, tenemos la función de eliminar que recibira, en el campo de texto que se encuentra encima del botón, la llave primaria de la tabla (GradeID
) y el registro o primer registro encontrado con la misma sera eliminado. Finalmente como en las demás funciones, la tabla se actualizara con los cambios realizados.