Estructura de datos----Operación de tabla lineal (gestión del desempeño de los estudiantes)

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int shoudsave=0; /* */

estructura estudiante

{

char num[10];/* número de estudiante*/

nombre de char[20];

sexo de char[4];

int cgrade;

int mgrade;

int totle;

int ave;

char neartime[10];/* Hora de la última actualización*/

}; nodo de estructura

{

estructura de datos del estudiante;

nodo de estructura *siguiente;

}Nodo,*Enlace void menu();

{

printf("********************************* *************************************************")

printf("\t1Registrar información del estudiante\t\t\t\t\t2Eliminar información del estudiante\n");

printf("\t3Consultar información del estudiante\ t\t \t\t\t4Modificar información del estudiante\n");

printf("\t5Guardar información del estudiante\t\t\t\t\t6Introducción al autor\n");

printf("\t0Salir del sistema\n");

printf("************************ ** ************************************************* * *******\n");

} void printstart()

{

printf("------- - -------------------------------------------------- --------------\n");

}

void Wrong()

{

printf("\n======>Mensaje: ¡Error de entrada!\n"

} void Nofind()

{

printf("\n=====>Mensaje: ¡No se encontró al estudiante!\n"

} void printc() /* Esta función se utiliza para generar chino*/

{

printf("ID del estudiante\tNombre Género Puntuación en inglés Puntuación en matemáticas Puntuación en idioma C Puntuación media total\n"); p )/* Esta función se utiliza para generar inglés*/

{

printf("%-12s%s\t%s\t%d\t%d\t %d \t %d\t %d\n",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p -> datos.cgrade,p->data.totle,p->data.ave

} N

ode* Locate(Link l,char findmess[],char nameornum[]) /* Esta función se utiliza para localizar el punto de contacto que cumple con los requisitos en la lista de conexiones y devuelve el puntero*/

{

Nodo *r;

if(strcmp(nameornum,"num")==0) /* Consulta por número de estudiante*/

{

r=l->siguiente;

mientras(r!=NULL)

{

if(strcmp(r->data. num,findmess) ==0)

return r;

r=r->siguiente

}

}

else if(strcmp(nameornum,"name")==0) /* Consulta por nombre*/

{

r=l->next; /p>

while(r!=NULL)

{

if(strcmp(r->data.name,findmess)==0)

devolver r ;

r=r->siguiente;

}

}

devuelve 0; p>} void Add(Link l) /* Agregar estudiantes*/

{

Nodo *p,*r,*s

char num[; 10];

r=l;

s=l->siguiente

mientras(r->siguiente!=NULL)

r= r->next; /* Coloca el puntero al final*/

while(1)

{

printf("Por favor, ingresa su número de estudiante (Regresar al menú anterior con '0':)");

scanf("%s",num);

if(strcmp(num,"0 ")== 0)

romper;

mientras(s)

{

if(strcmp(s->data. num,num) ==0)

{

printf("======>Mensaje: El estudiante con ID de estudiante '%s' ya existe. Si desea para modificarlo, seleccione '4 Modificar'!\n",num);

printstart();

printc();

printe(s

printstart();

printf("\n"); p>s=s->siguiente ;

} p=(Nodo *)malloc(sizeof(Nodo)); strcpy(p->data.num,num); printf("Por favor ingrese su nombre: ");

scanf("%s",p->data.name

getchar(); >printf("Por favor ingrese su género :");

scanf("%s",p->data.sex

getchar(); p>printf("Ingrese la puntuación del lenguaje c: ");

scanf("%d",&p->data.cgrade

getchar(); >

printf(" por favor

Introduzca la puntuación de matemáticas:");

scanf("%d",&p->data.mgrade);

getchar();

printf(" Por favor, introduzca su puntuación en inglés:");

scanf("%d",&p->data.egrade);

getchar();

p ->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade

p->data.ave=p->data.totle / 3;

/* Se ha completado la entrada de información*/

p->next=NULL

r->next=p

r=p;

shoudsave=1; }

} void Qur(Enlace l) /* Consulta estudiantes*/

{

int sel;

char findmess[20];

Nodo *p; if(!l->siguiente)

{

printf("\n=====>Aviso: ¡No hay información para consultar!\n");

return

}

printf( "\n======>1 Buscar por número de estudiante\n======>2 Buscar por nombre\n");

scanf("%d", &sel);

p>

if(sel==1)/* número de estudiante*/

{

printf("Ingrese el número de estudiante que es buscando:");

p>

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

printf("\t\t\t\tResultados de búsqueda\n"); /p>

printc()

printe(p);

printstart()

}

else <; /p>

Nofind()

}

else if(sel==2) /* Nombre*/

{

printf("Ingrese el nombre que desea encontrar:");

scanf("%s",findmess

p=Locate(l,findmess,"name); ");

if(p)

{

printf("\t\t\t\tResultados de búsqueda\n");

imprimirinicio();

imprimirc();

imprimir(p);

imprimirinicio(); /p>

else

Nofind();

}

else

Incorrecto(); l) /* Eliminar*/

{

int sel;

Nodo *p,*r

char findmess[20] ];

if(!l->next)

{

printf("\n======>Consejos: No se pueden eliminado!\n");

p>

re

turn;

}

printf("\n======>1 Eliminar por número de estudiante\n======>2 Eliminar por nombre\n"

scanf("%d",&sel);

if(sel==1)

{

printf( "Por favor, introduzca el número de estudiante que desea eliminar:");

scanf("%s",findmess

p=Locate(l,findmess,"num"));

p>

if(p)

{

r=l

mientras(r->siguiente! =p)

r=r->siguiente;

r->siguiente=p->siguiente

libre

;

printf("\n =====>Consejos: ¡El estudiante ha sido eliminado exitosamente!\n");

shoudsave=1

}

else

Nofind();

}

else if(sel==2)

{

printf("Ingrese el nombre que desea eliminar:");

scanf("%s",findmess

p=Locate(l,findmess,); "nombre");

si(p)

{

r=l

mientras(r->siguiente!= p)

r=r->siguiente;

r->siguiente=p->siguiente

libre

printf("\n== ===>Consejos: ¡El estudiante ha sido eliminado exitosamente!\n");

shoudsave=1

}

;

else

Nofind();

}

else

Incorrecto(); void Modificar(Enlace l)

{

Nodo *p;

char findmess[20]

if(!l- >siguiente)

{

printf("\n======>Aviso: ¡No se pueden modificar datos!\n"); return;

}

}

p>

printf("Ingrese el número de estudiante que desea modificar:"); p>scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

printf("Ingrese el nuevo número de estudiante (originalmente %s): ",p->data.num

scanf("%s",p->); data.num);

printf("Ingrese el nuevo nombre (originalmente %s):",p->data.name

scanf("%s", p->data.name);

getchar();

printf("Ingrese el nuevo género (originalmente %s):",p->data.sex);

scanf("%s",p->data.sex)

printf("Ingrese la nueva puntuación del lenguaje C (originalmente %d puntuación):",p- >datos.cgrade);

scanf("%d

",&p->data.cgrade);

getchar();

printf("Ingrese su nueva puntuación en matemáticas (originalmente %d puntos):",p- >data .mgrade);

scanf("%d",&p->data.mgrade);

getchar();

printf("Por favor, ingresa la nueva puntuación en inglés (originalmente %d puntos): ",p->data.egrade);

scanf("%d",&p->data.egrade);

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade

p->data.ave=p->totle/3. ;

printf("\n======>Aviso: ¡Datos modificados correctamente!\n");

shoudsave=1;

else

Nofind(); } void Disp(Enlace l)

{

int count=0; p>

Nodo *p;

p=l->siguiente; if(!p)

{

printf("\n== ===>Consejos: ¡No se pueden mostrar datos!\n");

return;

}

printf("\t\t\t \ tMostrar resultados\n");

printstart();

printc();

printf("\n");

mientras(p)

{

printe(p);

p=p->siguiente

}

p>

p>

printstart();

printf("\n"

} void Tongji(Enlace l)

{

Nodo *pm,*pe,*pc,*pt,*pa /* Se utiliza para señalar el contacto con la puntuación más alta*/

Nodo *r=l; ->siguiente;

if(!r)

{

printf("\n======>Mensaje: No hay datos para contar!\n");

return ;

}

pm=pe=pc=pt=pa=r;

while(r!=NULL)

{

if(r->data.cgrade>=pc->data.cgrade)

pc=r;

if(r- >datos.mgrade>=pm->datos.mgrade)

pm=r

if(r->datos.egrade >=pe->datos.egrade)

pm=r; p>

pe=r

if(r->datos.totle>=pt->datos .totle) ​​​​

pt=r

if(r->datos.ave>=pa->datos.ave)

pa=r; ;

r=r->siguiente

}

printf("---------------

------------------Resultados estadísticos------------------------------ --\ n");

printf("El que tiene la puntuación total más alta:\t%s %d puntos\n",pt->data.name,pt->data.totle) ;

printf("La persona con el puntaje promedio más alto:\t%s %d puntos\n",pa->data.name,pa->data.ave); con el puntaje promedio más alto en inglés:\t%s %d puntos \n",pe->data.name,pe->data.egrade);

printf("Más alto en matemáticas:\t %s %d puntos\n",pm->data.name ,pm->data.mgrade);

printf("El que tiene mayores habilidades en lenguaje C:\t%s %d puntos \n",pc->data.name,pc->data.cgrade);

printstart();

}

void Writer()

{

printf("Soy el SDDF legendario. Ahaha\n\n");

}

void Sort(Enlace l)

{

Enlace ll

Nodo *p,*rr,*s; /* Se utiliza para crear una nueva lista de enlaces*/

ll->next=NULL if(l->next==NULL)

{

printf("\n=====>Sugerencia: ¡No hay datos para ordenar!\n");

return

}

p =l->siguiente;

mientras(p)

mientras(p)

p=l->siguiente; p>

s=(Node*)malloc(sizeof(Node)); /* Crear un nuevo contacto para guardar información*/

s->data=p ->data; >

s->siguiente=NULL; rr=ll;

mientras(rr->siguiente!=NULL && rr->siguiente->datos.totle>= p->datos.totle) ​​

rr=rr->siguiente;

if(rr->siguiente==NULL)

rr->siguiente=

else

{

s->siguiente=rr->siguiente

rr->siguiente=s

}

p=p->siguiente;

}

libre(l)

l- >siguiente=ll-; >siguiente;

printf("\n=====>Mensaje: ¡Clasificación completada!\n");

} void Guardar(Enlace l )

{

ARCHIVO* fp;

Nodo *p;

int flag=1,count=0

fp=; fopen("c:\\estudiante","wb");

if(fp==NULL)

{

printf("\n= ====>Aviso: ¡Se produjo un error al volver a abrir el archivo!\n");

exit(

1);

}

p=l->siguiente; mientras(p)

{

if(fwrite(p, sizeof(Nodo),1,fp)==1)

{

p=p->siguiente

count++; >}

else

{

flag=0;

romper

}

}

if(flag)

{

printf("\n======>Mensaje: El archivo se guardó correctamente. (Se han guardado % d registros.)\n",count);

shoudsave=0;

}

fclose(fp);

} void main()

{

Enlace l;/* Lista enlazada*/

ARCHIVO *fp /* Puntero de archivo*/

int sel;

char ch;

char jian; int cuenta=0; /p >

printf("\t\t\t\tSistema de gestión del rendimiento estudiantil\n\t\t\t\t\n");

l=(Nodo*)malloc( tamaño de (Nodo));

l->next=NULL;

r=l; fp=fopen("C:\\estudiante","rb"); p >

if(fp==NULL)

{

printf("\n=====>Mensaje: El archivo aún no existe, ¿quieres para crearlo? (y/ n)\n");

scanf("%c",&jian);

if(jian=='y'||jian= ='Y')

p>

fp=fopen("C:\\student","wb");

else

salir (0);

}

printf("\n======>Mensaje: El archivo se ha abierto y se están importando registros...\n") ; while(!feof(fp))

{

p=(Nodo*)malloc(sizeof(Nodo)); ,sizeof(Node),1,fp)) /* Poner el contenido del archivo en el contacto */

{

p->next=NULL

;

r->next=p;

r=p; /* Poner este contacto en la conexión*/

count++; p>

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

printf("\n======>Mensaje: Importación de registros completada, ***%d registros importados .\n", recuento); while(1)

{

menu();

printf("Seleccione la operación:");

scanf("%d",&sel ); if(sel==0)

{

if(shoudsave==1)

{ getchar();

printf("\n======>Mensaje: Los datos han sido modificados, ¿desea guardar los cambios en el archivo (s/n)? \n");

scanf("%c",&ch );

i

f(ch=='y'||ch=='Y')

Guardar(l

}

printf("\n=); ====>Consejos: Has salido del sistema, ¡adiós!\n");

break;

}

switch(sel)

{

caso 1:Add(l);break; /* Agregar estudiante*/

caso 2:Del(l);break;/* Eliminar estudiante * /

caso 3:Qur(l);break;/* Consultar estudiantes*/

caso 4:Modify(l);break;/* Modificar estudiantes*/

caso 5:Save(l);break;/* Guardar estudiantes*/

caso 6:Writer();break;/*Introducción del autor*/

caso 9:printf("\t\t\t==========Información de ayuda==========\n");break

predeterminado: Incorrecto ();getchar();romper;

}

}

}

/* */

footer">