Sistema de registro de empleados ¡Practicando con AzulSchool! [ESP-ENG] | C++

avatar
(Edited)

¿Qué tal? Estoy de vuelta luego de un buen rato sin actividad en este blog, pues en cuanto a la meta del curso de programación, se vinieron un montón de contratiempos que no me permitieron seguir con fluidez, pero bueno, eso no significa que lo haya abandonado, pues me falta muy poco para culminar. El proyecto que traigo hoy es el número 7 del curso de AzulSchool, la última vez que traje contenido respecto a esta meta iba por el 71%, eso el 29 de septiembre. Ahora, casi dos meses después, voy en el 89%; avanzando a pasos de tortuga pero sin detenerme.

Este proyecto se basa en crear un sistema simple que permita guardar y buscar empleados del registro. Este registro es de máximo 20 empleados y consta del nombre e ID/número asignado, de cada uno. A partir de estos datos debe ser posible realizar búsquedas y ordenamientos, de tal forma que el usuario pueda mostrar los empleados que ha ingresado, ya sea en orden ascendente o descendente. También saber si hay nombres similares y si alguno no existe.

How are you doing? I'm back after a while without activity on this blog, because as for the goal of the programming course, there were a lot of setbacks that did not allow me to continue smoothly, but well, that does not mean that I have abandoned it, because I have very little to finish. The project I bring today is the number 7 of the AzulSchool course, the last time I brought content regarding this goal was 71%, that on September 29. Now, almost two months later, I'm at 89%; advancing at a snail's pace but without stopping.

This project is based on creating a simple system to save and search employees from the registry. This registry has a maximum of 20 employees and consists of the name and ID/number assigned to each one. From this data it should be possible to perform searches and sorting, so that the user can display the employees entered, either in ascending or descending order. It should also be possible to know if there are similar names and if any of them do not exist.


Portada post programacion, tech.jpg
Edited with CANVA

Programación c++.png

image.png

Programación c++.png

Para las librerías no cambiaron mucho las cosas respecto a la publicación anterior, de hecho hay bastante reciclaje, pues muchas de las cosas que necesité ya las había hecho antes por lo que solo tuve que adaptar y mejorar el código previo para crear este sistema. Cosa que fue predecible por el hecho de que el anterior proyecto se basaba en un registro también, solo que de películas. Para este punto, el condicionante "usa solo lo que ha sido mostrado en módulos anteriores" se cumple porque los añadidos de complejidad que le solía añadir a los programas ya están en el listado, a excepción de algunos detalles.

Las variables globales fueron "name_employee[20][50]" para el listado de nombres de los empleados, "n_employee[20]" para el listado de ID's y "employee_Counter" para el contador de empleados registados. Por otro lado, en las funciones la validación sigue presente en "validar_numero", "validar_nombre" y "validar_palabra", donde solo "validar_palabra" ha sido nueva y la emplee porque "validar_nombre" estaba adaptado para arreglos bidimensionales de tipo char y no arreglos unidimensionales, sin embargo ambas son muy parecidas en su código.

Sigue "interfaz_colect", que ha estado en muchos de los proyectos y no es más que una plantilla para mostrar un mensaje en pantalla, de tal manera que no esté repitiendo a cada momento varias líneas de código para comunicar mensajes al usuario. Sigue "is_repeat_number" para comprobar si un número está repetido (no está permitido), "employee_registry()" se encarga del proceso completo de registro de nombre e ID, "Name_Config" es una función que luego borré porque sustituí por strupr y se encargaba de transformar los nombres para que tuvieran la primera letra mayúscula y el resto en minúsculas, de tal forma que el estándar facilitara las búsquedas. La función "order" se encarga de los ordenamientos y parte del mismo método burbuja doble que usé en el anterior proyecto, "Show_Register" muestra todo el registro y "Show_One" muestra un registro en específico.

"Search_interfaz_name()" se apoya de "Search_repeat_name" para mostrar los nombres buscados por el usuario o los que sean similares. "Search_interfaz_n" se encarga de lo mismo pero con los ID. Finalmente "menu" que cumple la misma función de siempre, mostrar la interfaz con todas las opciones disponibles para que el usuario pueda usar el sistema.

De este primer tramo resaltaría el algoritmo de búsqueda secuencial que enseñan en el curso, lo apliqué para la comprobación de números repetidos (como antes mencioné), solo que como es recomendable, lo hizo por partes, de tal forma que la comprobación vaya dentro de otra función (employee_registry), en concreto como parámetro en un condicional if-else, de tal forma que se valide el registro (si el número está repetido, no lo registra en la lista).

También me gustaría explicar un poco más respecto a "Search_repeat_name", este cuenta con un bucle for que a través del uso de la función strncmp verifica si el nombre ingresado por el usuario es parecido (en sus tres primeros caracteres) a los que estén en el registro. Esto lo apliqué para cumplir con el requerimiento de "saber si hay nombres similiares y saber si un usuario existe".

For the libraries not much changed from the previous publication, in fact there is quite a lot of recycling, because many of the things I needed I had already done before so I only had to adapt and improve the previous code to create this system. This was predictable due to the fact that the previous project was based on a registry as well, only for movies. For this point, the condition "use only what has been shown in previous modules" is fulfilled because the complexity additions that I used to add to the programs are already in the listing, except for some details.

The global variables were "name_employee[20][50]" for the list of employee names, "n_employee[20]" for the list of ID's and "employee_Counter" for the counter of registered employees. On the other hand, in the functions the validation is still present in "validate_number", "validate_name" and "validate_word", where only "validate_word" has been new and I used it because "validate_name" was adapted for two-dimensional arrays of char type and not one-dimensional arrays, however both are very similar in their code.

Follow "interface_collect", which has been in many of the projects and is nothing more than a template for displaying a message on the screen, so that you are not repeating several lines of code to communicate messages to the user. It follows "is_repeat_number" to check if a number is repeated (not allowed), "employee_registry()" is in charge of the complete process of name and ID registration, "Name_Config" is a function that I later deleted because I replaced it with strupr and it was in charge of transforming the names to have the first letter uppercase and the rest in lowercase, so that the standard would facilitate searches. The "order" function is in charge of the sorting and part of the same double bubble method I used in the previous project, "Show_Register" shows the whole record and "Show_One" shows a specific record.

"Search_interface_name()" relies on "Search_repeat_name" to display the names searched by the user or those that are similar. "Search_interfaz_n" does the same but with the IDs. Finally "menu" that fulfills the same function as always, to show the interface with all the available options so that the user can use the system.

From this first section I would highlight the sequential search algorithm that they teach in the course, I applied it to check for repeated numbers (as I mentioned before), only that as it is recommended, did it in parts, so that the check goes into another function (employee_registry), specifically as a parameter in a conditional if-else, so that the record is validated (if the number is repeated, it does not register it in the list).

I would also like to explain a little more about "Search_repeat_name", this has a for loop that through the use of the strncmp function verifies if the name entered by the user is similar (in its first three characters) to those in the registry. This I applied it to fulfill the requirement of "to know if there are similar names and to know if a user exists".

Programación c++.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Programación c++.png

La interfaz para la búsqueda de nombres no pude armarla reciclando la de siempre, porque era necesario hacer modificaciones que la sacarían del estándar. De esta función resalto el uso de strupr para transformar el nombre o grupo de caracteres agrisados por el usuario, de tal manera que quede todo en mayúsculas y la búsqueda sea más sencilla. para mostrar el registro completo, el bucle no varió mucho respecto al proyecto de las películas, al igual con el proceso de ordenamiento, solo que cambié el nombre del parámetro por "criterio", un booleano que de ser "True" mostrara el registro de forma ascendente y de ser "False" lo mostrará de forma descendente, esto a partir del ID, tal como pide el enunciado.

En el menú, al igual consideré (al igual que el proyecto anterior), que si se quiere realizar una búsqueda o mostrar los registros debe haber más de un registro.

The interface for the name search could not be built by recycling the usual one, because it was necessary to make modifications that would take it out of the standard. From this function, I highlight the use of strupr to transform the name or group of characters grayed by the user, in such a way that everything is in capital letters and the search is easier. To show the complete record, the loop did not vary much with respect to the project of the movies, the same with the ordering process, only that I changed the name of the parameter for "criterion", a boolean that if "True" will show the record in ascending form and if "False" will show it in descending form, this from the ID, as the statement asks for.

In the menu, I also considered (as in the previous project), that if you want to perform a search or show the records, there must be more than one record.

Programación c++.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Programación c++.png

image.png

image.png

image.png

image.png

image.png

image.png

Programación c++.png

¡Y bueno... Eso es todo por hoy! Este resumen corresponde al proyecto número 7 del curso de C++ profesional de AzulSchool, creado por Ángel Sánchez Espinoza, te lo recomiendo, no está nada mal y es gratuito por lo que no tendrás que pagar para acceder al conocimiento que aporta. Pronto seguiré trayendo contenido, tengo como meta ahora, terminarlo antes de que acabe el año, espero que no pase algo como que pierda el acceso a internet o alguna cosa que me haga recordar la Ley de Murphy.

And well... That's all for today! This summary corresponds to the project number 7 of the AzulSchool professional C++ course, created by Angel Sanchez Espinoza, I recommend it, it is not bad at all and it is free so you will not have to pay to access the knowledge it brings. Soon I will continue bringing content, I have as a goal now, finish it before the end of the year, I hope that something does not happen as I lose internet access or something that makes me remember Murphy's Law.

Programación c++.png


Redes actualizada.gif


Puedes seguirme por acá si lo deseas:
You can follow me here if you want:

Cuenta secundaria
(Dibujos, edición y juegos) | Secondary account (Drawings, editing and games)



0
0
0.000
13 comments
avatar

Cada Vez más evolucionado tu trabajo en C++, me gusta como has avanzado

0
0
0.000
avatar

Hola, un gusto estar por acá y visitar tu producción. No soy experta en programación, pero nos presentas una maravillosa publicación, cuidada en los detalles y con un excelente paso a paso. Gracias por compartir tus conocimientos y experiencias con nosotros.
Feliz semana para tí y los tuyos @gabrielr29

0
0
0.000