0% encontró este documento útil (0 votos)
12 vistas14 páginas

PROGRAMACION15

prpyecto progra

Cargado por

Edgar
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas14 páginas

PROGRAMACION15

prpyecto progra

Cargado por

Edgar
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 PDF, TXT o lee en línea desde Scribd

INSTITUTO POLITÉCNICO NACIONAL

Unidad Profesional Interdisciplinaria en Ingeniería y


Tecnologías Avanzadas.

“Introducción a la programación”

Practica 8 “Estructuras y Archivos”

Profesor: José Luis Cruz Mora

PRESENTA:
PÉREZ RODRÍGUEZ EDGAR

GRUPO 1MV1

17 DE DICIEMBRE DE 2024.
Objetivo
Desarrollo de programas utilizando estructuras y archivos como aplicación para las bases
de datos.

Introducción
Al momento de realizar programas en C, toda la información de las variables y datos
guardados una vez iniciado el programa se guardan en memoria, lo cual tiene una serie de
ventajas como el rápido acceso, pero cuenta con una ventaja que es crucial si se desean
hacer programas donde se guarden datos importantes a largo plazo y es que al momento
de cerrarse el programa se pierde toda la información. El problema anterior se soluciona
con la implementación de archivos en C, implementar archivos nos permite almacenar la
información en el disco local de la computadora por lo que se puede guardar una gran
cantidad de información sin miedo a que esta se pierda al momento de cerrar el programa
o si este llega a fallar repentinamente y se cierra.
La implementación de estos archivos es lo que se implementará y explorará en el
desarrollo del programa de esta práctica, el manejo de estos archivos para crearlos,
leerlos, modificarlos, etc., así como también la implementación de estructuras, lo que
permite agrupar variables en un espacio de memoria para poder escribir o leerlas
fácilmente.
Desarrollo
Esta práctica solicita un programa que permita llevar una lista de asistencia de alumnos,
guardando distinta información para poder completar esta lista.
Alumno: Nombre, Número de Boleta, Año de Ingreso, Carrera y Turno
Profesor: Nombre, Número de Empleado y Turno
Lista: Fecha, Unidad de Aprendizaje, Grupo, Profesor y la Lista de Alumnos
Fecha: Día, Mes y Año
Estos datos se pueden almacenar como estructuras para que sea mas fácil llevar un registro
al momento de leer y escribir el archivo, para crear una estructura se usa el comando
typedef struct y el nombre de la estructura que se desea crear. Dentro de la estructura se
escriben las variables que almacenará la estructura y el tamaño en este caso ya que
trabajaremos con cadenas de texto, las estructuras quedarían de la siguiente forma:

En este caso la estructura de lista no cuenta con las cadenas de Profesores y Lista de
Alumnos ya que simplemente se insertarán al momento de mostrar la lista y de esta forma
se administra mejor el espacio en el programa.
Lo primero que se tiene que hacer en el main del programa aparte de declarar las variables
y punteros que se vayan a utilizar, es intentar abrir el archivo y en caso de que no exista
crearlo para que a partir de ese archivo se escriban todos los datos del programa que se
almacenarán en el disco del archivo.
Después de la creación o apertura del archivo se crea un menú con todas las opciones que
se proporcionan en la lista de asistencia para registrar tanto profesor, como asignatura,
fecha, grupo y alumnos, por lo que se hará uso de la biblioteca “tools.h” para la creación
del menú y las pausas necesarias en el programa. Las opciones del menú serán:
Lista de Asistencia
1. Registrar Unidad de Aprendizaje
2. Registrar Grupo
3. Registrar Fecha
4. Registrar Profesor
5. Agregar Alumno
6. Modificar Alumno
7. Mostrar Lista

8. Salir
Para este menú se crea una cadena de texto con todas las opciones y una variable tipo
entero que se igualará a la función showMenu( ) de la biblioteca de funciones tools.h, de
esta forma se creará el menú.

Y se pondrá dentro de un ciclo do while para que se muestra mientras que no se presione
la opción de salir.
La primera opción del programa es registrar una unidad de aprendizaje lo cual es parte de
la lista, esta parte se guardará en la primera sección del programa, pero en este caso incluso
dentro de la estructura se guardará en un lugar específico para que posteriormente no haya
problemas de sobre escritura en caso
de que los datos se declaren en
desorden o se quieran cambiar
posteriormente.
En este caso se escribe sizeof(l.fecha)
porque la unidad de aprendizaje se
guarda después que la fecha dentro
de la estructura.
Para la sección dos se tiene que
regisrtar un grupo lo cual sigue la
misma lógca anterior, solo que el
grupo se encuentra después de
l.Materia y l.Fecha, por lo que se
suma el sizeof de estos dos valores
para que el puntero del archivo se
poscicione correctamente.
Para la fecha la lógica cambia un poco ya que existe también una estructura específica que
guarda estos valores, la diferencia con el de la lista es que en la estructura se guardan por
seprado, de esta forma se puede llevar un registro de mejor manera por si se requiere
actualizar este programa posteriormente para que almacene distintos archivos según la
fecha y la cadena de texto que contiene la fecha en la lista es simplemente para que se
muestre al usuario.
En este caso puse un proceso de validación
para que los números ingresados estén entre
1 y 31 para que sean fechas válidas y no
pueda ser cualquier número al azar. Por
medio de una variable entera utiliza la
función atoi( ), (anything to int) por lo que
convierte lo que sea que esté dentro de la
función a su valor entero, en este caso de
char a entero y por medio de esta variable se
hacen las validaciones y este proceso se
repite con Mes y Año.
Ahora con el uso de la función snprintf( ) se coloca de manera controlada (en cuestión de
tamaño) los valores de día, mes y año en un formato específico y se escribe en la lista.

Ahora para el registro del profesor, se utiliza una estructura distinta que está
inmediatamente después de la lista, de esta forma el fseek solo tiene que saltar este
parámetro para escribir o leer la estructura de profesor.
Como solo se va a almacenar un maestro no es
recomendable guardar su número de
empleado asociado con el puntero de la
memoria, ya que esto podría atrofiar la lista de
estudiantes en caso de sobre escribirse. Para el
turno del profesor se vuelve a utilizar la función
showMenu ya que solo existe el turno
Matutino o Vespertino.

Ahora para agregar la lista de alumnos se registran los valores de la misma forma que las
estructuras anteriores, pero con la diferencia de que la dirección del puntero en el archivo
estará asociada con el número de boleta que se registre al alumno para que de esta forma
sea más fácil localizarlo en el programa y no haya riesgo de que se pierda un dato si se
borrara uno en el centro de la lista y se tuviera que copiar todo lo demás.
Ahora la parte mas compleja del programa es hacer que se pueda modificar a los alumnos,
los datos que se pueden modificar de estos son: Su nombre, año de ingreso, turno, carrera
o eliminarlos. La boleta no es posible modificarla en este programa por la complejidad que
generaría al momento de estar enlazada directamente con el puntero en el archivo. Para
elegir cual de estas opciones se desea modificar se utilizó de nuevo la función showMenu()
para que el usuario pueda escoger cual de esas opciones desea modificar en el alumno, así
como también la opción de regresar al menú principal por si no se desea realizar ningún
cambio. Todos los cambios se realizan sobre escribiendo sobre el valor actual que contenga
la memoria por lo que automáticamente se eliminará el valor anterior para dar paso al
nuevo y en caso de eliminar al alumno se liberará ese espacio llenando todo con ceros y la
boleta se podrá utilizar de nuevo.
Antes de llegar este menú muestra la lista de alumnos registrados y solicita su número de
boleta, en caso de que no haya ningún alumno registrado simplemente mostrará ese
mensaje y regresará al menú principal, lo mismo en caso de que se introduzca un número
de boleta no existente.
Posterior a eso inicia el submenú en el que se podrá elegir que se desea modificar,
funciona de la misma manera que las escrituras anteriores, solo que esta vez se sobre
escribe y se mueve el valor de la boleta menos 1 ya que las boletas comienzan a partir del
número 1, pero el puntero comienza a registrar a partir del valor 0, así que para comenzar
esto se tiene que restar uno al valor de la selección que es igual a la boleta.

Por ultimo para mostrar la lista se utilizará la misma lógica que cuando se muestran los
alumnos para modificarse en el apartado anterior, solamente que esta vez deben
mostrarse todos los valores de la estructura lista y profesor, por lo que por medio de fseek
se irá moviendo el puntero para leer los valores deseados y se mostrarán todos los
alumnos que tengan una boleta asignada en el orden de estas.
Resultados
El programa comienza creando un archivo binario con el nombre solicitado, en este caso
“Lista.bin” en la carpeta donde se encuentren nuestros programas.
Una vez que se crean los archivos el programa
puede empezar a funcionar correctamente
guardando todos los datos requeridos en este
mismo, por lo que es importante no borrarlo ni
modificarlo en caso de tener información
importante.

Una vez que se crea el archivo se muestra el siguiente menú en pantalla:


Por medio del cursor y enter se
selecciona la opción que se desea
realizar, se recomienda ir en orden
aunque puede no ser asi y el programa
funcionará de igual manera.

Si se selecciona registrar unidad de Aprendizaje saldrá el siguiente mensaje:

Se puede escribir cualquier Unidad de Aprendizaje que solicite el usuario, una vez
presionado enter regresará al menú principal y esperará a que se registre el siguiente dato,
en este caso el grupo:
De igual forma al presionar enter este regresará al
menú principal y esperará a que se registre el
siguiente dato para escribirlo en el archivo.
Para registrar la fecha solicita que sea en el formato siguiente DD/MM/AAAA y comprueba
que tanto el día, como el mes y el año sean valores reales o existentes, aunque por supuesto
con limitaciones en el año.

En caso de ingresera una fecha incorrecta

Lo mismo pasa con el mes

Y el año:

Se muestra un texto con la fecha ingresada para que el usuario pueda verificarla y si no es
correcta volver a ingresarla presionando de nuevo la sección en el menú.

La siguiente sección es agregar profesor, donde nos solicita su nombre y su número de


empleado:
Posteriormente nos abre un submenú para que seleccionemos el turno
del profesor con las opciones de Matutino y Vespertino

Ahora para agregar alumnos lo primero que nos solicita es su número de boleta ya que esa es la
dirección del puntero donde se guardarán todos los datos al finalizar de escribirlos.

Se pueden agregar de esta forma alumnos indefinidamente, solo se debe tener cuidado de
no repetir número de boleta porque se pueden sobre escribir los datos.

Una vez registrados estos alumnos se puede mostrar la lista del programa, la cual se vería
de la siguiente forma:
Se muestran todos los alumnos y sus datos, junto con los del profesor, la materia, fecha y
grupo. Estos datos no se pierden al dejar el programa porque están registrados dentro del
archivo binario creado al abrir por primera vez el programa.
Si se desea editar algún alumno simplemente se selecciona la opción y se despliega de
nuevo la lista de alumnos y solicita la boleta del alumno que deseamos modificar:

En caso de que la boleta no exista…


Se despliega este mensaje y lleva
de nuevo al menú principal.

Pero cuando se selecciona una boleta existente se despliega el siguiente submenú:


En el cual se muestra el nombre del alumno para que el usuario verifique que sea correcta
la boleta ingresada y realice las modificacinoes que desee, en este caso cambiaremos el
nombre para demostración (se debe presionar dos veces enter)

Después de regresar al menú principal si volvemos a mostrar la lista:

Los datos del número de boleta 3 seguirán intactos a excpeción del nombre el cual fue
cambiado, en caso de eliminar un alumno sucede lo siguietne, se eliminará el número de
boleta 5

Se elimina por completo de la lista y todos sus datos serán igual a cero por lo que no se
leerán.
Conclusión
El uso de archivos permite la creación de programas más extensos que no sean de un único
uso, ya que el almacenamiento a largo plazo de información presenta muchas ventajas en
creaciones de programas done se tenga que llevar una cuenta de personas, objetos,
números, etc. Pero por el tipo de lenguaje también se debe tener cuidado, ya que en caso
de cambiar el nombre del documento el programa ya no será capaz de leerlo hasta que
también se actualice el programa o si no se tiene cuidado con el uso de los tipos de creación
de documentos y por alguna razón se comete un error, con la creación tipo w se puede
borrar algún documento importante de datos.

Los archivos en binario almacenan información de una mejor manera que los de texto ya
que estos últimos solo pueden guardar ascii, lo cual no es óptimo en caso de bases de datos
(aunque sean pequeñas como este caso), pero los binarios son excelentes para esto, solo
se tiene que saber utilizar los punteros de archivos correctamente, así como las funciones
fwrite y fread.
Ahora con el uso de archivos se puede llevar un registro a largo plazo de información
deseada en nuestros programas, pero siempre se debe tener en cuenta el cuidado con el
que se tienen que manejar estas herramientas

También podría gustarte