Red de conocimiento informático - Conocimiento informático - Programación en lenguaje C del sistema de gestión del desempeño estudiantil

Programación en lenguaje C del sistema de gestión del desempeño estudiantil

#include /*Función de biblioteca de referencia*/

#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);

p>

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*/

< p); >printf("\t\t\tla puntuación más alta:\n"); /*Puntuación más alta*/

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

<; p>FILE *fp; /*Definir puntero de archivo*/

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++;

}

fclose( fp); /*Cerrar el archivo*/

printf("¡Exitoso!\n"); /*Devolver mensaje de éxito*/

}

void main() /*Función principal*/

{

int n=0

for(;;)

{

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");

p>

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:

p> p>

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

p>

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

p>

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 /*Función de biblioteca de referencia*/

#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*/< / 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)");

p>

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");

}

}

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);

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);

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

{

p>

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);

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;

p>

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

p>

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