Está en la página 1de 27

Universidad del Valle de México

Dr. Sergio Sentecal Guerrero

Materia: Lógica y Programación Estructurada

Alumno:

✓ José Reyes Cortés Montelongo

Actividad 4

Proyecto Integrador 1
31-julio -2022

Tetramestre mayo – ago 2022


Introducción:

El trabajo consiste en el diseño y programación del catálogo del sistema de gestión escolar, basado en
una plataforma que implementa estructura de ventanas con múltiples opciones para una interacción con
el usuario que sea muy intuitivo su funcionamiento, gestionando un menú inicial y a su vez un submenú
de acuerdo con las opciones seleccionadas.
La creación del programa utilizará variables y factores condicionales más comunes para su construcción
debido a que será la primera vez que generamos un proyecto de este calibre.

Planteamiento:

Debido a que administrar un catálogo de diversos conceptos es muy complicado, sobre todo cuando se
trata de operaciones que se deben de adaptar según sea el caso elegido, en este ejercicio en cuestión
son las siguientes: alta a estudiantes, baja a estudiantes, modificaciones de estudiantes y consulta de
estudiantes.

La operación más complicada es la de altas ya que se debe poder capturar los datos del estudiante y
guardar de forma temporal (mientras el alumno este matriculado) los datos capturados, la operación
más fácil es la de bajas ya que permitirá eliminar los datos de un estudiante del catálogo previamente
capturado, la operación de modificación debe permitir modificar/actualizar los datos de un estudiante
previamente capturado en la base de datos y por último la operación de consulta debe de permitir
observar un listado de datos de cada uno de los estudiantes previamente capturados en el sistema.

**El catálogo parte del ejemplo de estudiantes, sin embargo, puede adaptarse a otro concepto el cual
requiera capturar información de personas que necesite ser organizada o segmentada para su rápida
consulta:

a) Catálogo de pacientes
b) Catálogo de inventario de productos
c) Catálogo de autos
d) Catálogo de empleados
e) Catálogo de documentos
Instrucciones Etapa 1:

1. Análisis y modelado de sistemas.

Con base en una revisión de los documentos propuestos y las acciones tomadas hasta la fecha, siga la
estructura a continuación y, en grupos de dos, marque las secciones designadas para esta fase del
proyecto integrador:

2. Definición del catálogo a administrar y diseño de interfaz.


2.1. Descripción e interfaz del catálogo

Define el catálogo con el cual vas a trabajar y describe brevemente en qué consiste

Concepto Descripción
Se generarán registros de documentación e información en la base de datos con un ID
Alta de estudiantes
único.
Se eliminará el registro de documentación e información en la base de datos con un ID
Baja de estudiantes
creado.
Permitirá la modificación de los datos para los ID creados en caso de que se requiera
Modificaciones de estudiantes
actualización, se haya originado algún error o se tenga mal algún estatus.
Búsqueda de estudiantes La interfaz podrá mostrar los registros y ID previamente creados, eliminados o modificados

Salir Se podrá salir y entrar del modulo en cualquier momento.

Diseña las pantallas por ejemplo para el caso de un catálogo de estudiantes sería algo así:
Pantalla 1
Programa Compilado:

Pantalla 2
Programa Compilado:
Código C - https://www.onlinegdb.com/

#include<stdio.h>

int main(void)
{
int opcion;
int salida=1;
int exit;

{
printf("1.Alta de estudiantes \n");
printf("2.Baja de estudiantes \n");
printf("3. Modificaciones de estudiantes \n");
printf("4. Busqueda de estudiantes \n");
printf("5. Salir \n");

printf("Selecciona una opción \n");


scanf("%d", &opcion);

switch (opcion){

case 1:

printf("ALTA DE ESTUDIANTES \n");


printf("1. Ingresa la matricula: \n");
printf("2. Ingresa el nombre: \n");
printf("3. Ingresa el apellido paterno: \n");
printf("4. Ingresa el apellido materno: \n");
printf("5. Ingresa la carrera: \n");
printf("6. Ingrese el correo electronico: \n");
printf("7. Ingrese el Telefono: \n");
break;

case 2:

printf("BAJA DE ESTUDIANTES \n");


printf("1. Ingresa la matricula para consultar: \n");
break;

case 3:

printf("MODIFICACIÓN DE ESTUDIANTES \n");


printf("1. Ingresa la matricula: \n");
printf("2. Ingresa el nombre: \n");
printf("3. Ingresa el apellido paterno: \n");
printf("4. Ingresa el apellido materno: \n");
printf("5. Ingresa la carrera: \n");
printf("6. Ingrese el correo electronico: \n");
printf("7. Ingrese el Telefono: \n");
break;

case 4:

printf("BUSQUEDA DE ESTUDIANTES \n");


printf("1. Ingresa la matricula para consultar: \n");
break;

case 5:

printf("desea salir 1/si 0/no");


scanf("%d", &exit);
break;
}
}
}
Conclusión

En esta primera etapa del proyecto pudimos determinar cual seria el código sobre el cual estaremos
trabajando en esta y en las siguientes etapas del proyecto, adicional que nos dio oportunidad de poner
en practica elementos básicos de programación, entre comandos y secuencias básicas.

En lo personal es mi primera ocasión que trabajo con código C., usualmente había practicado mas en
Python, aunque al inicio integrar los comandos parece complicado, leyendo los códigos de prueba solo
es interpretar las secuencias y realizar ajustes.

Bibliografía y fuentes APA:

1. García-Bermejo Giner, José R. (2008). Programación estructurada en C [Versión


electrónica].Recuperado de https://elibro.net/es/ereader/uvm/53853

2. Oviedo, E. (2015). Lógica de programación orientada a objetos [Versión electrónica].


Recuperado de https://elibro.net/es/ereader/uvm/70431

3. Mancilla, A., Gómez, R. y Portilla, J. (2014). Diseño y construcción de algoritmos [Versión


electrónica].Recuperado de https://elibro.net/es/ereader/uvm/69931
Universidad del Valle de México
Dr. Sergio Sentecal Guerrero

Materia: Lógica y Programación Estructurada

Alumno:

✓ José Reyes Cortés Montelongo

Actividad 6

Proyecto Integrador 2
7-agosto -2022

Tetramestre mayo – ago 2022


Introducción:

Esta parte del proyecto integrador aplicaremos los conocimientos de inserción de datos, así como
manejo del concepto de estructuras y creación de funciones, esto con el fin de crear nuestro modelo de
un control escolar de una escuela. Nos enfocaremos en crear dos funcione uno de altas y otro de bajas
además de entender el concepto de vectores y aplicarlo para el acomodo de la información.

El objetivo del Proyecto integrador es emplear las bases de lógica computacional que refleje la aplicación
del paradigma de la programación estructurada, a partir de la construcción de un catálogo que permita
las operaciones de altas, bajas, modificaciones y consulta.

2.1 Arreglo de estructuras: función altas:

Definir la función alta que no devuelva ningún valor y que reciba como parámetro el arreglo de
estructuras en donde se va a guardar el registro capturado, así como el índice que indique la posición
del último elemento guardado, la función “altas” por ejemplo pedirá:
1. Ingresa la matricula:
2. Ingresa el nombre:
3. Ingresa el apellido paterno:
4. Ingresa el apellido materno:
5. Ingresa la carrera:
6. Ingrese el correo electronico:
7. Ingrese el Telefono:
Para la integración de la etapa 2 de este proyecto, utilizaremos estructuras, arreglos, funciones, ciclos
y vectores.

El objetivo es poder dar de alta y de baja estudiantes, tomando como base sus datos personales y que
en un futuro se pueda guardar su información, modificar y buscar una lista de alumnos registrados.
Código:
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<cstdlib>
#include<iomanip>
typedef struct alumno {
int opc;
int matricula;
char nombre[20];
char apellidop[20];
char apellidom[20];
char carrera[80];
char correo[80];
int telefono;
} Alumno;
/* Arreglo que almacena alumnos */
Alumno alumnos[50];
/* Contiene el numero de alumnos actual */
int total = 0;
int i, j;
void cargar(), guardar(), insertar(Alumno info);
void ingresar(), eliminar(), modificar(), mostrar(), buscar();
char menu(void);
int main(void)
{
char opc;
system("cls");
cargar();
for (;;)
{
switch (opc = menu())
{
case '1':
ingresar();
getch();
break;
case '2':
eliminar();
getch();
break;
case '3':
modificar();
getch();
break;
case '4':
mostrar();
getch();
break;
case '5':
buscar();
getch();
break;
case '6':
break;
default:
printf("Opcion no valida");
getch();
break;
}
if (opc == '6') break;
}
printf("Presione (g) para guardar los cambios: ");
if (getch() == 'g')
guardar();
return 0;
}
void insertar(Alumno info)
{
alumnos[total].matricula = info.matricula;
strcpy(alumnos[total].nombre, info.nombre);
strcpy(alumnos[total].apellidop, info.apellidop);
strcpy(alumnos[total].apellidom, info.apellidom);
strcpy(alumnos[total].carrera, info.carrera);
strcpy(alumnos[total].correo, info.correo);
alumnos[total].telefono = info.telefono;
total++;
}
void cargar()
{
Alumno info;
FILE* fp;
fp = fopen("alumnos.txt", "r");
if (fp == NULL)
{
printf("No se puede abrir el archivo\n");
return;
}
while (!feof(fp))
{
if (fread(&info, sizeof(Alumno), 1, fp) != 1) break;
insertar(info);
}
fclose(fp);
}
void guardar()
{
Alumno info;
FILE* fp;
fp = fopen("alumnos.txt", "w");
if (fp == NULL)
{
printf("No se puede abrir el archivo\n");
return;
}
for (int i = 0; i < total; i++)
fwrite(&alumnos[i], sizeof(Alumno), 1, fp);
fclose(fp);
}
void ingresar()
{
Alumno info;
printf("Ingrese los datos del Alumno \n");
printf("Ingrese matricula: "); scanf("%d", &(info.matricula));
while (getchar() != '\n');
printf("Ingrese nombre: "); gets(info.nombre);
printf("Ingrese Apellido Paterno: "); gets(info.apellidop);
printf("Ingrese Apellido Materno: "); gets(info.apellidom);
printf("Ingrese Carrera: "); gets(info.carrera);
printf("Ingrese Correo: "); gets(info.correo);
printf("Ingrese Telefono: "); scanf("%d", &(info.telefono));
insertar(info);
printf("Alumno ingresado exitosamente \n\n");
}
void eliminar()
{
char matricula;
int i;
printf("Ingrese Matricula a eliminar: ");
scanf("%d", &matricula);
for (i = 0; i < total; i++)
if (alumnos[i].matricula, matricula)
{
/* Recorre registros posteriores */
for (int j = i + 1; j < total; j++)
{
alumnos[j - 1].matricula, alumnos[j].matricula;
strcpy(alumnos[j - 1].nombre, alumnos[j].nombre);
strcpy(alumnos[j - 1].apellidop, alumnos[j].apellidop);
strcpy(alumnos[j - 1].apellidom, alumnos[j].apellidom);
strcpy(alumnos[j - 1].carrera, alumnos[j].carrera);
strcpy(alumnos[j - 1].correo, alumnos[j].correo);
alumnos[j - 1].telefono = alumnos[j].telefono;
}
printf("Alumno eliminado \n");
total--;
break;
}
if (i == total)
printf("Alumno no encontrado \n");
}
void modificar() {
}
void mostrar() {
}
void buscar() {
}
char menu(void)
{
char c;
printf("Bienvenido al sistema de alta de alumnos UVM \n\n");
printf("1.Alta de Estudiante. \n");
printf("2.Baja de Estudiante. \n");
printf("3.Modificaciones de Estudiante. \n");
printf("4.Mostrar Todos.\n");
printf("5.Buscar Estudiante.\n");
printf("6.Salir.\n");
printf("Ingresa la opcion deseada: ");
scanf("%s", &c);
printf("\n");
return(c);
}
2.1 Arreglo de estructuras: función bajas:

Definir la función alta que no devuelva ningún valor y que reciba como parámetro el arreglo de estructuras en
donde se va a guardar el registro capturado, así como el índice que indique la posición del último elemento
guardado, la función “altas” por ejemplo pedirá:

Integrar en el menú de selección la baja de un estudiante.


En este este caso se necesita seleccionar del menú principal, una opción para dar de baja los registros
de un estudiante e indicar con un mensaje que ha sido eliminado exitosamente.
Para este caso vamos a apoyarnos de la matrícula para seleccionar el estudiante y posteriormente
eliminar su registro.
Tambien se debe generar un respuesta para una matrícula no encontrada, la cual arroje un mensaje
“ALUMNO NO ENCONTRADO
Código:

#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<cstdlib>
#include<iomanip>
typedef struct alumno {
int opc;
int matricula;
char nombre[20];
char apellidop[20];
char apellidom[20];
char carrera[80];
char correo[80];
int telefono;
} Alumno;
/* Arreglo que almacena alumnos */
Alumno alumnos[50];
/* Contiene el numero de alumnos actual */
int total = 0;
int i, j;
void cargar(), guardar(), insertar(Alumno info);
void ingresar(), eliminar(), modificar(), mostrar(), buscar();
char menu(void);
int main(void)
{
char opc;
system("cls");
cargar();
for (;;)
{
switch (opc = menu())
{
case '1':
ingresar();
getch();
break;
case '2':
eliminar();
getch();
break;
case '3':
modificar();
getch();
break;
case '4':
mostrar();
getch();
break;
case '5':
buscar();
getch();
break;
case '6':
break;
default:
printf("Opcion no valida");
getch();
break;
}
if (opc == '6') break;
}
printf("Presione (g) para guardar los cambios: ");
if (getch() == 'g')
guardar();
return 0;
}
void insertar(Alumno info)
{
alumnos[total].matricula = info.matricula;
strcpy(alumnos[total].nombre, info.nombre);
strcpy(alumnos[total].apellidop, info.apellidop);
strcpy(alumnos[total].apellidom, info.apellidom);
strcpy(alumnos[total].carrera, info.carrera);
strcpy(alumnos[total].correo, info.correo);
alumnos[total].telefono = info.telefono;
total++;
}
void cargar()
{
Alumno info;
FILE* fp;
fp = fopen("alumnos.txt", "r");
if (fp == NULL)
{
printf("No se puede abrir el archivo\n");
return;
}
while (!feof(fp))
{
if (fread(&info, sizeof(Alumno), 1, fp) != 1) break;
insertar(info);
}
fclose(fp);
}
void guardar()
{
Alumno info;
FILE* fp;
fp = fopen("alumnos.txt", "w");
if (fp == NULL)
{
printf("No se puede abrir el archivo\n");
return;
}
for (int i = 0; i < total; i++)
fwrite(&alumnos[i], sizeof(Alumno), 1, fp);
fclose(fp);
}
void ingresar()
{
Alumno info;
printf("Ingrese los datos del Alumno \n");
printf("Ingrese matricula: "); scanf("%d", &(info.matricula));
while (getchar() != '\n');
printf("Ingrese nombre: "); gets(info.nombre);
printf("Ingrese Apellido Paterno: "); gets(info.apellidop);
printf("Ingrese Apellido Materno: "); gets(info.apellidom);
printf("Ingrese Carrera: "); gets(info.carrera);
printf("Ingrese Correo: "); gets(info.correo);
printf("Ingrese Telefono: "); scanf("%d", &(info.telefono));
insertar(info);
printf("Alumno ingresado exitosamente \n\n");
}
void eliminar()
{
char matricula;
int i;
printf("Ingrese Matricula a eliminar: ");
scanf("%d", &matricula);
for (i = 0; i < total; i++)
if (alumnos[i].matricula, matricula)
{
/* Recorre registros posteriores */
for (int j = i + 1; j < total; j++)
{
alumnos[j - 1].matricula, alumnos[j].matricula;
strcpy(alumnos[j - 1].nombre, alumnos[j].nombre);
strcpy(alumnos[j - 1].apellidop, alumnos[j].apellidop);
strcpy(alumnos[j - 1].apellidom, alumnos[j].apellidom);
strcpy(alumnos[j - 1].carrera, alumnos[j].carrera);
strcpy(alumnos[j - 1].correo, alumnos[j].correo);
alumnos[j - 1].telefono = alumnos[j].telefono;
}
printf("Alumno eliminado \n");
total--;
break;
}
else
printf("Alumno no encontrado \n");
}
void modificar() {
}
void mostrar() {
}
void buscar() {
}
char menu(void)
{
char c;
printf("Bienvenido al sistema de alta de alumnos UVM \n\n");
printf("1.Alta de Estudiante. \n");
printf("2.Baja de Estudiante. \n");
printf("3.Modificaciones de Estudiante. \n");
printf("4.Mostrar Todos.\n");
printf("5.Buscar Estudiante.\n");
printf("6.Salir.\n");
printf("Ingresa la opcion deseada: ");
scanf("%s", &c);
printf("\n");
return(c);
Conclusión

Hemos entrado en la segunda fase de este proyecto integral, de hecho, todas las habilidades adquiridas
en el curso de programación estructural y lógica parten de crear el sistema escolar y su menú, para
programar cada proyecto y ejecutarlo correctamente. menú de opciones para operaciones, cabe
mencionar que en la práctica se han implementado variables, el uso de estructuras, son muy importantes
para el desarrollo del sistema y la resolución de problemas que planteamos durante su desarrollo, hemos
dedicado mucho Esfuerzo en el Seguimiento de Proyectos, creemos en la buena cualificación
profesional cercana.

Bibliografía y fuentes APA:


1. García-Bermejo Giner, José R. (2008). Programación estructurada en C [Versión
electrónica].Recuperado de https://elibro.net/es/ereader/uvm/53853

2. Oviedo, E. (2015). Lógica de programación orientada a objetos [Versión electrónica].


Recuperado de https://elibro.net/es/ereader/uvm/70431

3. Mancilla, A., Gómez, R. y Portilla, J. (2014). Diseño y construcción de algoritmos [Versión


electrónica].Recuperado de https://elibro.net/es/ereader/uvm/69931

4. DESCARGAS. (s. f.). chelintutorials. Recuperado 2 de abril de 2021, de


http://chelintutorials.blogspot.com/p/descargas.html

5. Diego Moreno. (2018, 7 febrero). Porgrama Basico de Altas Bajas y Consultas en C [Vídeo].
YouTube. https://www.youtube.com/watch?v=Q21HOVIOOtE

6. ChelinTutorials. (2011, 3 octubre). Tutorial Programacion en C no32 : Estructuras dentro de


estructuras
[Vídeo].YouTube.https://www.youtube.com/watch?v=U37JX3JWWSo&list=PL78386798B27755
B9&index=33

7. 36. Altas, bajas, listado y modificaciones - tutorialesparaprogramar. (s. f.).


tutorialesparaprogramar. Recuperado 2 de abril de 2022, de
https://sites.google.com/site/tutorialesparaprogramar/c-para-principiantes-10-36/36-altas-bajas-
listado-y-modificaciones

También podría gustarte