Programación en lenguaje C del sistema de gestión del desempeño estudiantil
#include
#include
#include
#include
typedef struct /*definir matriz de estructura*/
{
char num[10] ; /*número de estudiante*/
char nombre[20]; /*nombre*/
int puntuación; /*puntuación*/
}Estudiante
Estudiante stu[80]; /*Variable de matriz de estructura*/
int menu_select() /*Función de menú*/
{
char c;
do{
system("cls"); /*Borrar la pantalla antes de ejecutar*/
printf("\t\ t ****Sistema de gestión de calificaciones de los estudiantes****\n"); /*Selección de menú*/
printf("\t\t | 1. Registros de entrada |\n");
printf("\t\t | 2. Mostrar todos los registros |\n");
printf("\t\t | 3. Ordenar |\n"); /p>
printf("\t\t | 4. Insertar un registro |\n");
printf("\t\t | 5. Eliminar un registro |\n" )
printf("\t\t | 6. Consulta |\n");
printf("\t\t | 7. Estadística |\n"); /p>
printf("\t\t | 8. Agregar registros desde un archivo de texto|\n");
printf("\t\t | 9. Escribir en un archivo de texto |\n");
printf("\t\t | 0. Salir |\n");
printf("\t\t***** * ***********************************\n");
printf( " \t\t\tDé su elección(0-9):");
c=getchar(); /*Lea la selección*/
} while(c< ' 0'||c>'9');
return(c-'0'); /*Devolver selección*/
}
int Entrada (Estudiante stud[],int n) /*Ingrese varios registros*/
{int i=0
char sign,x[10] /*x[ 10] Se utiliza para borrar datos redundantes*/
while(sign!='n'&&sign!='N') /*Judgment*/
{ printf("\t \t\ tstudent's num:"); /*Entrada interactiva*/
scanf("\t\t\t%s",stud[n+i].num);
printf ("\t\t\tsnombre del estudiante:");
scanf("\t\t\t%s"
,estudiante[n+i].nombre);
printf("\t\t\tspuntuación del estudiante:"); ",&stud[n+i].score);
gets(x); /*Borrar entrada redundante*/
printf("\t\t\¿tantos registros más? (S/N)");
scanf("\t\t\t%c",&sign); /*Juicio de entrada*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*Mostrar todos los registros * /
{
int i
printf("\t\t\t------------- -- -------------------\n"); /*Formato de encabezado*/
printf("\t\t\tnúmero nombre puntuación \n ");
printf("\t\t\t------------------------------- - ------\n");
for(i=1;i { printf("\t\t\t%-16s%-15s%d\n",estudiante[i-1].num,estudiante[i-1].nombre,estudiante[i-1]. puntuación if(i>1&&i%10==0) /*pausa cada diez veces*/ {printf("\t\t\t---- - ----------------------------------\n"); /*Formato*/ printf(" \t\t\t"); sistema("pausa"); printf("\t\t\t------ ----- --------------------------\n"); } } printf("\t\t\t"); sistema("pausa"); void Sort_by_num(Student stud[] ,int n) /*Ordenar por número de estudiante*/ { int i,j,*p,*q,s char t[; 10]; for(i=0;i for(j=0;j if(strcmp(stud[j].num,stud[j+1].num)>0) {strcpy(t,stud[j+1 ].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].nombre); strcpy(stud[j+1].nombre,stud[j].nombre strcpy (stud[j].nombre,t p=&stud[j+1].score q=&stud[j].score; s=*p *p=*q *q=s; p>} } int Insert_a_record(Student stud[],int n) /*Insertar un registro*/ {char x[10]; /*Se usa para borrar entradas redundantes*/ printf("\t\t\tstudent's num:"); /*Entrada interactiva*/ scanf("\t\t \t%s",stud[n].num); printf("\t\t\tsnombre del estudiante:"); scanf("\t\t\ t%s",estudiante[n].nombre); printf("\t\t\tspuntuación del estudiante:"); scanf("\t\t\t %d",&stud[n].score); gets(x); n++; Ordenar_por_num(stud,n); /*Llamar Función de clasificación*/ printf("\t\t\tInsert Successed!\n"); /*Devolver información de éxito*/ return(n); } int Delete_a_record(Student stud[],int n) /*Buscar por nombre y eliminar un registro*/ { char s[20]; > int i=0,j; printf("\t\t\ttedime su nombre:" /*Consulta interactiva*/ scanf("%s",s); while(strcmp(stud[i].name,s)!=0&&i if(i==n) { printf("\t\t\tnot find!\n"); /*devolver información de error*/ return( n) ; } for(j=i;j { strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j].nombre,stud[j+1].nombre strcpy(stud[j].nombre,stud[j+1].nombre); stud[j].score=stud[j+1].score } printf("\t\t\t¡Eliminación exitosa!\n" ); /*Devolver información de éxito*/ return(n-1); /p> } void Query_a_record(Student stud[],int n) / *Buscar y mostrar un registro*/ { char s[20]; p> int i=0; printf("\t\t\tinput su nombre:"); /*Entrada interactiva*/ scanf( "\t\t\t%s",s); while(strcmp( stud[i].name,s)!=0&&i if(i==n) { printf("\t \t\tnot find!\n"); /*Ingrese información de error*/ return; } printf("\t\t\ este(su) número:%s\n ",stud[i].num); /*Enviar la información del estudiante*/ printf("\t\t\this(her) puntuación:%d\n",stud[i]. puntuación); } void Statistic(Student stud[],int n) /*Nueva función, salida de información estadística*/ { int i , j=0,k=0,sum=0; float aver; /*Puntuación promedio*/ for(i=0;i { sum+=stud[i].score if(stud[j].score>stud[i] .score; ) j=i; if(stud[k].puntuación } promedio =1.0 *sum/n; printf("\t\t\thay %d registros.\n",n /*Total*** número de registros*/ printf("\t\t\tnúmero:%s nombre:%s puntuación: % d\n",stud[j].num,stud[j].nombre,stud[j].score); printf("\t\t\tla puntuación más baja:\n" ) ; /*Puntuación mínima*/ printf("\t\t\tnumber:%s nombre:%s puntuación:%d\n",stud[k].num,stud[k] . name,stud[k].score); printf("\t\t\tla puntuación promedio es %5.2f\n",aver /*puntaje promedio*/ } int AddfromText(Student stud[],int n) /*Leer datos del archivo*/ { int i=0,num char filename[20] /*Definir nombre de archivo*/ printf("\t\t\ tIngrese el nombre de archivo:"); scanf("\t\t\t%s",nombre de archivo); /*Ingrese el nombre de archivo*/ if((fp=fopen (nombre de archivo ,"rb"))==NULL) /*Abrir archivo*/ { printf("\t\t\tno se puede abrir el archivo\n" /*Mensaje de error al abrir */ printf("\t\t\t"); sistema("pausa"); return(n); p>} fscanf(fp,"%d",&num); /*Leer la cantidad total del registro*/ while(i { fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].nombre, &stud[ n+i].puntuación); i++; } n+=num; Cerrar archivo*/ pri ntf("\t\t\tExitoso!\n"); printf("\t\t\t"); system("pausa"); p> p> return(n); } void WritetoText(Student stud[],int n) /*Escribe todos los registros en el archivo* / { int i=0; ARCHIVO *fp; /*definir puntero de archivo*/ char nombre de archivo[20 ]; /*definir nombre de archivo*/ printf("\t\t\tEscribir registros en un archivo de texto\n"); ("\t\ t\tIngrese el nombre del archivo:"); scanf("\t\t\t%s",nombre del archivo if((fp=fopen); (nombre de archivo,"w "))==NULL) /*Abre el archivo*/ { printf("\t\t\tno puedo abrir el archivo\n "); sistema("pausa"); retorno; } fprintf(fp,"%d\n ",n); / *Escribir datos en un bucle*/ while(i { fprintf(fp,"%-16s %-15s%d\n ",stud[i].num,stud[i].nombre,stud[i].score); i++; } p> fclose( fp); /*Cerrar el archivo*/ printf("¡Exitoso!\n"); /*Devolver mensaje de éxito*/ } void main() /*Función principal*/ { int n=0 for(;;) p> { p> switch(menu_select()) /*Juicio de selección*/ { caso 1: printf("\t\t\ tIngresar registros\n"); /*Ingresar varios registros*/ n=Input(stu,n break; > caso 2: printf("\t\t\tMostrar todos los registros\n"); /*Mostrar todos los registros*/ Display(stu,n) ; romper; caso 3: printf("\t\t\tSort\n"); stu,n); /* Ordenar por número de estudiante*/ printf("\t\t\t¡Clasificación exitosa!\n"); \t"); system("pausa"); pausa; caso 4: printf(" \t\t\tInsertar un registro\ n"); n=Insert_a_record(stu,n); /*Insertar un registro*/ printf("\t\t \t"); sistema("pausa"); pausa; caso 5: printf("\t\t\tEliminar un registro\n"); n=Delete_a_record(stu,n) /*Buscar por nombre y eliminar un registro*/ printf("\t\t\t"); sistema("pausa"); caso; 6: printf("\t\t\tQuery\n"); Query_a_record(stu,n /*Buscar y mostrar un registro*/ printf("\t\t\t"); sistema("pausa"); ruptura caso 7: printf("\t\t\tStatistic\n"); Statistic(stu,n); /*Nueva función, genera información estadística*/ printf("\t\t\t"); sistema("pausa"); ruptura caso 8: printf("\t\t\tAgregar registros desde un archivo de texto\n"); n=AddfromText(stu,n) /*Nueva función, generar información estadística*/ break; caso 9: printf("\t\t\tEscribir en un archivo de texto\n"); WritetoText(stu,n); /*Escribir datos en un bucle*/ printf("\t\t\t"); system("pause"); /p> p> descanso; caso 0: printf("\t\t\t¡Que tengas buena suerte, adiós!\n" ); /*Finalizar el programa */ printf("\t\t\t"); system("pausa"); (0); } } } 4. Diagrama de llamada de función Nota: " →" representa llamada Función de entrada Imprimir registros de lista enlazada Función de visualización Ingresar varios registros Función menu_select() p> Seleccionar menú Función Sort_by_num Mostrar todos los registros Función Eliminar_un_registro Buscar por nombre y eliminar un registro Query_a_record busca y muestra un registro Función estadística Salida de información estadística (nueva) Función AddfromText Agrega datos del texto a la matriz de estructura Función principal Insert_a_record inserta un registro WritetoText La función escribe todos los datos en el archivo Salir del programa Función inversa (head) Ordenar por número de estudiante 5. proceso de prueba 1. Ingrese a la interfaz 2. Ingrese la opción 1 y presione Entrar Ingrese los datos cuando se le solicite: 3. Ingrese la opción 7 y presione Enter; Ingrese el nombre del archivo: data.txt y presione Enter; >Si aparece un mensaje de éxito, la operación de lectura del archivo se realizó correctamente. 4. Regrese al menú principal, ingrese 2 y presione Entrar Pausar datos cada 10 veces 5. y presiona Enter Car Aparece el mensaje de clasificación exitosa. 6. Regrese al menú principal, ingrese 4 y presione Entrar Inserte un conjunto de datos según se le solicite 7. ingresa 5 y presiona Enter Car Ingresa tu nombre cuando se te solicite y elimina los datos Aparece un mensaje indicando que la eliminación se realizó correctamente 8. , ingresa 6 y presiona Enter Ingresa el nombre a consultar 9 Regresa al menú principal, ingresa 7 y presiona Enter Aparece información estadística 10. Regrese al menú principal. Ingrese 9 y presione Entrar Ingrese result.txt y presione Entrar Aparece un mensaje que indica que el archivo se escribió correctamente 11. Regrese al menú principal e ingrese 0. Ingrese para salir del sistema Respuesta: kingkey001 - Período de prueba Nivel 1 7-14 22:38 Modifique la respuesta : kingkey001, la respuesta que desea modificar es la siguiente: Las reglas de puntos están cerradas p> Informe de diseño del curso de idioma C -------Programa de gestión simple para las puntuaciones de los estudiantes 1. Funciones principales del menú del sistema (1) Ingresar varios registros (2) Mostrar todos los registros (3) Ordenar por número de estudiante (4) Insertar un registro (5) Buscar por nombre y eliminar un registro (6) Buscar y mostrar un registro (7) Generar información estadística (nuevo) (8) Desde Agregar datos a la matriz de estructura en el texto (9) Escribir todos los datos en el archivo (0) Salir del programa 2. Análisis de preguntas Esta pregunta evalúa principalmente el dominio de las estructuras, punteros, operaciones de archivos y algoritmos del lenguaje C de los estudiantes. Por lo tanto, responder a esta pregunta requiere sólidas capacidades de diseño, especialmente una idea de la situación general. Cómo depurar el programa también es muy importante. A través de este programa, puede adquirir experiencia que no tenía antes en la depuración de programas cortos. Cada opción del menú corresponde a una subrutina. El algoritmo de la subrutina captura casi todas las técnicas aprendidas en lenguaje C. Las funciones de cada subrutina se explican a continuación: Los algoritmos. de las funciones 1 y 4 son similares. Ingrese un registro en la estructura. Una de las partes clave es leer todos los caracteres redundantes a través de get y presionar Enter; de lo contrario, se producirá un error. La función 2 es mostrar todos los registros y generarlos a través de un bucle. El formato también es importante. La función 3 es ordenar por número de estudiante. Debido a que el número de estudiante se define en forma de una matriz de caracteres, cuando se usa el método de burbuja para ordenar, se deben usar strcmp, strcpy y otras funciones. La función 5 es eliminar registros por nombre. Ingrese el nombre primero y luego compárelos uno por uno. Si no hay ningún registro, se devolverá un mensaje de error. Si se encuentra, el registro se moverá. avance una posición y se devolverá n-1. El algoritmo de la función 6 se ha reflejado en la función 5. Introduce los nombres y compáralos uno a uno. La función 7 es una función nueva, porque considerando que la función original no tiene una función estadística para las calificaciones de los estudiantes, esta nueva función puede obtener el número de todos los registros, las calificaciones más altas, mínimas y promedio, y generar información relevante del estudiante, etc. Las funciones 8 y 9 son operaciones sobre archivos y preparan datos con antelación. 3. Parte de texto del programa #include #include #include #include typedef struct /*definir matriz de estructura*/ { char num[10]; /*número de estudiante*/ char nombre[20]; /*nombre*/ int puntuación /*puntuación * / }Estudiante; Estudiante stu[80]; /*Variable de matriz de estructura*/ int menu_select() /*Función de menú*/ p> { char c; do{ system("cls"); /*Borrar la pantalla antes de ejecutar*/< / p> printf("\t\t****Sistema de gestión de calificaciones de los estudiantes****\n"); /*Selección de menú*/ printf("\t\ t 1. Entrada de registros |\n"); printf("\t\t | 2. Mostrar todos los registros |\n"); printf("\t \ t | 3. Ordenar |\n"); printf("\t\t | 4. Insertar un registro |\n"); printf("\t \ t | 5. Eliminar un registro |\n"); printf("\t\t | 6. Consulta |\n"); printf("\t \ t | 7. Estadística |\n"); printf("\t\t | 8. Agregar registros desde un archivo de texto|\n"); printf( " \t\t | 9. Escribir en un archivo de texto |\n"); printf("\t\t | 0. Salir |\n"); printf ("\t\t******************************************\n "); printf("\t\t\tDa tu elección(0-9):"); c=getchar(); /*Lee la elección*/ } while(c<'0'||c>'9'); return(c-'0'); /*Volver a la selección*/ } int Input(Student stud[],int n) /*Ingrese varios registros*/ {int i=0; char sign,x[10]; /*x[10] se utiliza para borrar datos redundantes*/ while(sign!='n'&&sign!='N') /*Juicio*/ { printf ("\t\t\tsnum del estudiante:"); /*Entrada interactiva*/ scanf("\t\t\t%s",stud[n+i].num); printf("\t\t\tsnombre del estudiante:"); scanf("\t\t\t%s",estudiante[n+i].nombre); printf("\t\t\tspuntuación del estudiante:"); scanf("\t\t\t%d",&stud[n+i].puntuación) ; gets(x); /*Borrar entrada redundante*/ printf("\t\t\¿hay más registros?(Y/N)"); scanf("\t\t\t%c",&sign); /*Juicio de entrada*/ i++; } return(n+i); } void Display(Student stud[],int n) /*Mostrar todos los registros*/ { int i; printf("\t\t\t--------------------- --- -------\n"); /*Formato de encabezado*/ printf("\t\t\tnúmero nombre puntuación\n"); printf( "\t\t\t---------------------------------\n"); for(i=1;i { printf("\t\t\ t%-16s %-15s%d\n",estudiante[i-1].num,estudiante[i-1].nombre,estudiante[i-1].puntuación); if( i>1&&i% 10==0) /*pausa cada diez veces*/ {printf("\t\t\t---------------- ---- --------------\n"); /*Formato*/ printf("\t\t\t"); p> sistema("pausa"); printf("\t\t\t--------------------- ------ -------\n"); } } pr intf("\t\t\t"); system("pausa"); } void Sort_by_num(estudiante[],int n) /*Ordenar por número de estudiante*/ { int i,j,*p,*q,s; char t[10]; for(i=0;i for(j=0;j if(strcmp(stud[j].num,stud[j+1].num)>0) {strcpy(t,stud[j+1].num); p> strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy( t,stud[j+1].nombre); strcpy(stud[j+1].nombre,stud[j].nombre); strcpy(stud[j] ].nombre,t); p=&stud[j+1].score; q=&stud[j].score; s= *p; *p=*q; *q=s; } } int Insert_a_record(Student stud[],int n) /*Insertar un registro*/ {char x[10] /*Se utiliza para borrar entradas redundantes*/ printf; ("\t\t\tsnum del estudiante:"); /*Entrada interactiva*/ scanf("\t\t\t%s",stud[n].num); printf("\t\t\tsnombre del estudiante:"); scanf("\t\t\t%s",estudiante[n].nombre); p> printf("\t\t\tspuntuación del estudiante:"); scanf("\t\t\t%d",&stud[n].score); gets(x); n++; Sort_by_num(stud,n); /*Llamar a la función de clasificación*/ printf("\ t \t\t¡Insertar correctamente!\n"); /*Devolver información de éxito*/ return(n); } int Delete_a_record(Estudiante [],int n) /*Buscar por nombre y eliminar un registro*/ { char s[20]; int i=0,j; printf("\t\t\ttedime su nombre:"); /*Búsqueda interactiva*/ scanf("%s",s); while(strcmp(estudiante[i].nombre,s)!=0& &i if(i==n) { printf("\t\t\tnot find!\n"); /*Devolver información de error*/ return(n); } for(j=i;j { strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j ].nombre,estudiante[j+1].nombre); estudiante[j].score=estudiante[j+1].score; } printf("\t\t\t¡Eliminación exitosa!\n"); /*Devolver información de éxito*/ return(n-1); } void Query_a_record(Student stud[],int n) /*Buscar y mostrar un registro*/ { char s[20]; int i=0; printf("\t\t\tinponga su nombre:"); /*Entrada interactiva*/ scanf("\t\t\t%s " ,s); while(strcmp(stud[i].name,s)!=0&&i if(i= = n) { printf("\t\t\tnot find!\n"); /*Ingrese información de error*/ return; } printf("\t\t\this(her) número:%s\n",stud[i].num /*Enviar la información del estudiante*/ ); printf("\t\t\this(her) puntuación:%d\n",stud[i].score); } void Statistic(Estudiante estudiante[ ] ,int n) /*Nueva función, genera información estadística*/ { int i,j=0,k=0,sum=0; float aver; puntuación*/ for(i=0;i { suma+=stud [i] .score; if(stud[j].score>stud[i].score) j=i; if(stud[k].score } aver=1.0*sum/n; p rintf("\t\t\thay %d registros.\n",n); /*Total*** número de registros*/ printf("\t\t\tla puntuación más alta : \n"); /*Puntuación más alta*/ printf("\t\t\tnumber:%s nombre:%s puntuación:%d\n",stud[j].num, stud [j].name,stud[j].score); printf("\t\t\tla puntuación más baja:\n" /*La puntuación más baja*/ printf("\t\t\tnúmero:%s nombre:%s puntuación:%d\n",estudiante[k].num,estudiante[k].nombre,estudiante[k].puntuación); printf("\t\t\tla puntuación promedio es %5.2f\n",aver /*puntuación promedio*/ } int); AddfromText( Student stud[],int n) /*Leer datos del archivo*/ { int i=0,num; ARCHIVO *fp /*Definir el archivo puntero* / nombre de archivo char[20] /*Definir nombre de archivo*/ printf("\t\t\tIngrese el nombre de archivo:"); scanf("\t\t\t%s",nombre de archivo); /*Nombre de archivo de entrada*/ if((fp=fopen(nombre de archivo,"rb"))==NULL) / * Abrir el archivo*/ { printf("\t\t\tno se puede abrir el archivo\n"); /*Abrir mensaje de error*/ printf(" \t \t\t"); system("pausa"); return(n); } fscanf( fp,"%d",&num); /*Leer el número total de registros*/ while(i { fscanf(fp,"%s%s%d",estudiante[n+i].num,estudiante[n+i].nombre,&estudiante[n+i].puntuación) ; i++; } n+=num; fclose(fp); /*Cerrar archivo*/ printf ("\t\t\t¡Exitoso!\n"); printf("\t\t\t"); system("pausa" ); return(n); } void WritetoText(Student stud[],int n) /*Escribe todos los registros en el archivo*/ { int i=0; ARCHIVO *fp; /*Definir puntero de archivo*/ char filename[20]; /*Definir nombre de archivo*/ printf("\t\t\tEscribir registros en un archivo de texto\n "); /*Ingrese el nombre del archivo*/ printf("\t\t\tIngrese el nombre del archivo:"); scanf("\t\t\t%s ",nombre de archivo); if((fp=fopen(nombre de archivo,"w"))==NULL) /*Abrir archivo*/ { printf("\t\t\tno se puede abrir el archivo\n"); system("pausa"); return; } fprintf(fp,"%d\n",n); /*Escribir datos en un bucle*/ while(i { fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].nombre,stud[i].score); p > i++; } fclose(fp); /*Cerrar el archivo*/ printf("¡Exitoso!\n") ; / *Devolver información de éxito*/ } void main() /*función principal*/ { int n =0 ; for(;;) { switch(menu_select()) /*seleccione juicio*/ { p> caso 1: printf("\t\t\tIngresar registros\n" /*Ingresar varios registros*/ n=Entrada(stu ,n); break; caso 2: printf("\t\t\tMostrar todos los registros\n" ); /*Mostrar todos los registros*/ Display(stu,n); break; caso 3: printf ("\t\t \tSort\n"); Sort_by_num(stu,n); /*Ordenar por número de estudiante*/ printf("\t\t\ tOrdenación exitosa!\n" ); printf("\t\t\t"); system("pausa"); break; caso 4: prin tf("\t\t\tInsertar un registro\n"); n=Insert_a_record(stu,n); /*Insertar un registro*/ printf("\ t\t\t"); system("pausa"); pausa; caso 5: printf( "\t\t\tEliminar un registro\n"); n=Delete_a_record(stu,n); /*Buscar por nombre y eliminar un registro*/ printf( "\t\t\t"); sistema("pausa"); pausa; caso 6: printf("\t\t\tQuery\n"); Query_a_record(stu,n); /*Buscar y mostrar un registro*/ printf("\t\ t\t"); system("pausa"); pausa; caso 7: printf("\ t\t\tStatistic\n"); Statistic(stu,n); /*Nueva función, salida de información estadística*/ printf("\t\t\ t "); sistema("pausa"); descanso; caso 8: printf("\t\ t \tAgregar registros desde un archivo de texto\n"); n=AddfromText(stu,n); /*Nueva función, genera información estadística*/ break; caso 9: printf("\t\t\tEscribir en un archivo de texto\n"); WritetoText(stu,n); en un bucle*/ printf("\t\t\t"); system("pausa"); break; caso 0: printf("\t\t\t¡Que tengas buena suerte, adiós!\n"); /*Finalizar programa*/ > printf("\t\t\t"); sistema("pausa"); salir(0); } } } 4. Diagrama de relación de llamada de función Nota: "→" significa llamar Función de entrada Imprimir registros de lista enlazada Función de visualización Ingresar varios registros Función menu_select() Seleccionar menú p> Función Sort_by_num Mostrar todos los registros Registro Función Delete_a_record Buscar por nombre y eliminar un registro Query_a_record busca y muestra un registro Función estadística Salida de información estadística (nueva) Función AddfromText Añadir datos del texto a la matriz de estructura Función principal Insert_a_record inserta un registro La función WritetoText escribe todos los datos en el archivo Salir del programa Función inversa (cabezal) Ordenar por número de estudiante 5. Proceso de prueba de diseño 1. Ingrese a la interfaz 2. Ingrese la opción 1 y presione Enter; Entrar datos cuando se le solicite: 3. Regrese al menú principal Ingrese la opción 7 y presione Enter Ingrese el nombre del archivo: data.txt y presione; Ingrese; Si aparece un mensaje de éxito, la operación de lectura del archivo fue exitosa. 4. Regrese al menú principal, ingrese 2 y presione Entrar Pausar para mostrar datos cada 10 veces 5. ingresa 3 y presiona Enter Car Aparece un mensaje de clasificación exitosa. 6. Regrese al menú principal, ingrese 4 y presione Enter Siga las indicaciones para insertar un grupo