Red de conocimiento informático - Descarga de software - Uso de programación en lenguaje C para implementar un sistema simple de gestión del desempeño estudiantil

Uso de programación en lenguaje C para implementar un sistema simple de gestión del desempeño estudiantil

#include?lt;stdio.hgt;

#include?lt;stdlib.hgt;

#include?lt;string.hgt;

p>

#includelt;memory.hgt;

typedef?struct?student

{

char?num[16] ;

char?name[20];

float?score[4];

struct?student?*next;

}?stu;

stu?*head; //Puntero de encabezado de enlace

stu*?create() //¿Crear una lista vinculada y leer información del archivo?

{

printf("Lectura?información del estudiante:\n");

stu?*p=NULL //Puntero, apuntando a un; nodo a insertar

stu?*q=NULL; //Puntero, utilizado para insertar nodos después

head?=?NULL //La lista vinculada está vacía; al principio

ARCHIVO?*?r?=fopen("input.dat", "r");?

p?=?(stu*)malloc(sizeof( stu));

while(fscanf(r,"ssfff",p-gt;num,p-gt;nombre,amp;p-gt;puntuación[0],amp;p-gt; puntuación[1],amp;p -gt;puntuación[2])!=EOF)

{

p-gt;puntuación[3]=(p-gt;puntuación [0] p-gt;puntuación [1] p-gt;puntuación[2])/3.0;

fprintf(stdout, "s\ts\tg\tg\tg\t.2f\n ", p-gt;num, p-gt; nombre, p-gt; puntuación[0], p-gt; puntuación[1], p-gt; puntuación[2], p-gt; puntuación[3])

p-gt; next=NULL;

if?(head?==?NULL) //head está vacío, inserta el primero

{

head?=?p;

} //Nodo, deja que el puntero del encabezado apunte al nodo p

más

{ //?De lo contrario, no Para el nodo principal, el nodo p debe insertarse

q-gt; next?=?p ///? p> }

q?=?p; ///?q apunta al último nodo actual

p?=?(stu*)malloc(sizeof(stu)); /p>

}

p>

fclose(r);

si?(head?=?NULL)

{

q-gt;next?=? NULL ///? Deje que el campo de puntero del último nodo señalado por q esté vacío para indicar que este es el final de la cadena

}

return?head; //?Volver al puntero del encabezado

}

void?sort(stu?**head,i

nt?n)?

{

FILE?*w=NULL;

if(n==0)

{

w?=?fopen("sortByMath.dat", "w");

}

else?if(n==1)

{

w?=?fopen("sortByEnglish.dat", "w");

}

else?if(n= =2)

{

w?=?fopen("sortByComputer.dat", "w");

}

else?if(n==3)

{

w?=?fopen("sortByAvg.dat", "w");

}

stu?*q, *t, *p;

stu?*?new_head?=?new?stu;

new_head-gt; cabeza;

p=new_head;

t=NULL;

mientras(t!=new_head-gt;siguiente)

{

p=new_head;

q=p-gt;siguiente;

mientras(q-gt;siguiente!=t)

{

if((p-gt;next-gt;puntuación[n])?lt;?(q-gt;next-gt;puntuación[n]))?

{

p-gt; siguiente=q-gt; siguiente;

q-gt; siguiente=q-gt; p>p-gt; siguiente-gt; siguiente=q;

}

p=p-gt;

q=p-gt; siguiente;

}

t=q;

}

*head?=?new_head-gt;siguiente;

p?=?*head;

q?=?p-gt;next;

printf("ID del estudiante\tNombre\tMatemáticas\tInglés\ tComputadora\tPromedio calificación\n");

int?grado?=?1;?

mientras(p!=NULL)

{

fprintf(w, "s\ts\tg\tg\tg\t.2f\td\n",

p-gt; num, p-gt; nombre, p -gt; puntuación[ 0], p-gt; puntuación[1], p-gt; puntuación[2], p-gt; puntuación[3], calificación);

fprintf(stdout, " s\ts\tg \tg\tg\t.2f\td\n",

p-gt; num, p-gt; nombre, p-gt; puntuación[0], p-gt ;puntuación[1] ,p-gt;puntuación[2],p-gt;puntuación[3],calificación);

if(q!=NULL?amp;amp;?q-gt; puntuación[3]? lt;?p-gt;score[3])?grade? =?1;

p=p-gt;next;

if(q! =NULL)?q =q-gt;siguiente;

}

printf("\n");

fclose(w);

<

p>}?

void?count(stu*?head)

{

float?cnt[4][8];

int?i,j;

for(i=0;ilt;4;i)

{

for(j=0;jlt; 8; j )

{

if(j!=2)cnt[i][j]=0;

else?cnt[i][ j]=100;

}

}

stu*?r=cabeza;

mientras(r!=NULL)

{

r=r-gt;siguiente;

}

}

int?main(? )?

{

head=create();

printf("Clasificación?por?promedio?puntuación:\n");

sort(amp; head, 3);

system("pausa");

return?0;

}