La Red de Conocimientos Pedagógicos - Currículum vitae - Gestión de archivos de logros estudiantiles en lenguaje C

Gestión de archivos de logros estudiantiles en lenguaje C

Según sus requisitos, algunas funciones de la lista vinculada se escriben por separado. No tengo entrada de escritura. Si está pasando datos de prueba directamente a la función, escriba la entrada scanf usted mismo. Entonces tengo comentarios detallados sobre la función.

# incluir ltstdio.h gt

# incluir ltmalloc.h gt

# incluir ltstring.h gt

typedef? estructura? stuInfo

{

int? id;//número de estudiante

Char? Nombre[10]; //Nombre

int? Puntuación[3]; //Puntuación

int? ave//puntaje promedio

int? cont//Número total de información, solo debe almacenarse en el encabezado.

estructura? estuInfo? *Siguiente;

} SIO

SIO? *findSIObyID(int? ID card, SIO? * sioHead ///? Regresar al nodo anterior mediante búsqueda de ID.

¿SIO? *insertStu(int?count, int?id, char?name[], int?score[3], SIO?*sioHead, SIO?*sioTail); //Insertar información del estudiante. Parámetros: cuando count == -1, agregue un nodo al final de la lista vinculada; count gt = 0 en la posición del estudiante especificada, el estudiante original retrocede.

¿Anulado? printfSIO(SIO?* sioHead); //Imprimir lista enlazada

¿No es válido? deleteStu(int? ID card, SIO? * sioHead); //Eliminar información del estudiante y liberar memoria.

¿Anulado? px(SIO?* sioHead); // Ordenar por puntuación promedio de mayor a menor.

¿Anulado? findMax(SIO?* sioHead); //Busca información sobre los estudiantes universitarios con los puntajes promedio más altos.

¿Anulado? findMin(SIO?* sioHead); //Encuentra la información del estudiante con el puntaje promedio más bajo.

int? principal()

{

int? Puntuación[3];

SIO? *sioTail=NULL, * sioHead = NULL

sioHead=(SIO?*)malloc(sizeof(SIO));

SiO head->next = NULL

SiO head->;cont = 0;

Printf("1, muestra las puntuaciones de todos los estudiantes:\n");

Puntuación[0] = 89; puntuación [1]= 91; puntuación[2]= 85;

sioTail = inserts tu(3111101, "Chen Ming", puntuación, sioHead, sioTail);

Puntuación[0 ] = 99; puntuación[1] = 71; puntuación[2] = 83;

Siotail = insertstu (3, 111102, " Wanda ", puntuación, sioHead, sioTail

puntuación[0]= 79; puntuación[1]= 81; puntuación[2]= 85;

Siotail = insertstu (3, 111103, "Lisi", puntuación, Siohade, Siotail

Puntuación[0] = 92; Puntuación[1] = 91; Puntuación[2] = 75; ) ;

Puntuación[0]= 81; Puntuación[1]= 87; Puntuación[2]= 95;

Siotail = insertstu (3, 111105, "武郎", puntuación , sioHead, sioTail);

printfSIO(sioHead);

buscar max(sioHead);

buscar min(sioHead);

printf(" \ n ");

Printf("2. Eliminar la información del estudiante número 111103: \ n ");

delete stu(111103, sioHead);

p>

printfSIO(sioHead);

Printf("3, ordenado por puntuación promedio de mayor a menor\n ");

px (sioHead);//Ordenar

printfSIO(sioHead);

Printf("4. Inserte información del nuevo estudiante al final: 111106, Zhang Ning\n");

Puntuación[0] = 77; puntuación[1]= 78; puntuación[2]= 89;

Siotail = INSERTAR STU (3, 111106, "Zhang Ning", puntuación, sioHead , sioTail);

printfSIO(sioHead);

Printf("4. Inserte información del compañero de clase en el medio: 111107, Zhang San\n");

Puntuación[0]= 91; Puntuación[1]= 76; Puntuación[2]= 95;

Siotail = insertstu (2, 111107, "Zhang San", puntuación, sioHead, sioTail);

printfSIO(sioHead);

Printf("4.

Inserte información del compañero de clase en el encabezado: 111108, Liu Da\n");

Puntuación [0] = 86; Puntuación [1] = 84; Puntuación [2] = 85;

Siotail = INSERT STU (1, 11165438, "Liu Da", puntuación, sioHead, sioTail

printfSIO(sioHead

Return 0; >}

¿No es válido? printfSIO(SIO?*sioHead)//Imprimir lista enlazada

{

printf("?-9s-8s-8s-8s -8ss\n", "número de estudiante", "nombre", "grado 01", "nivel 02", "nivel 03", "puntaje promedio");

while(sioHead->; Siguiente a! = vacío)

{

printf(" d s d d d d \ n ", sioHead- gt; next- gt; id, sioHead- gt; next- gt; nombre, sioHead- gt; siguiente-gt; puntuación[0], sioHead-gt; siguiente-gt;ave);

cabezal de SiO = cabezal de SiO- gt;

}

printf(" \ n \ n ");

}

¿No válido? px(SIO?*sioHead)//Ordenar de mayor a menor

SIO? * sioNext=NULL, *nextSave=NULL, sioSave

while( sioHead->; siguiente!=null)

{

sioNext = sioHead- gt; siguiente;

mientras(sioNext- gt; siguiente!=null)

{

if(sioHead->; siguiente- gt; ave ltsioNext - gt; siguiente - gt; ave)

{

siguiente guardar = SiO cabeza- gt; siguiente - gt; siguiente;

SiO guardar = *(SiO cabeza- gt; siguiente);

*(SiO cabeza- gt; siguiente )= *(sioNext- gt; next);

SiO head-> ;next-gt;next = nextSave

siguiente save = sioNext-gt;next-gt;next;

*(sioNext->siguiente)= SiO guardar

sioNext-gt; siguiente-gt; siguiente=siguienteGuardar

}

sioNext = sioNext-gt;next;

}

SiO head = SiO head- gt;

}

}

¿No es válido? findMax(SIO?*sioHead)//Busque información sobre los estudiantes universitarios con el puntaje promedio más alto.

{

int? máx = 0;

SIO? * sioMax = NULL

mientras(sioHead->; next!=null)

{

if(max lt; SiO head->; next - gt ; ave)

{

max = SiO cabeza-gt; siguiente - gt; ave

SiO max = SiO cabeza-gt;

}

SiO head = SiO head- gt; Next;

}

Printf("1, puntuación media máxima Información del estudiante:\n ");

printf("?-9s-8s-8s-8s-8ss\n", "ID de estudiante", "Nombre", "Grado 01", "Nivel 02", "Nivel 03 ", "Puntuación promedio");

printf(" d s d d d d d \ n ", sioMax- gt; id, sioMax- gt; nombre, sioMax- gt; puntuación [0], sioMax- gt; puntuación[ 1], SiO max-gt; puntuación[2], SiO max-gt; ave);

}

¿No es válido? findMin(SIO?*sioHead)//Encuentra la información del estudiante con el puntaje promedio más bajo.

{

int? min = 999

¿SIO? * sioMin = NULL

mientras(sioHead->; siguiente!=null)

{

if(min gt; SiO cabeza->; siguiente - gt ; ave)

{

min = SiO cabeza-gt; siguiente - gt; ave

SiO min = SiO cabeza-gt;

}

SiO head = SiO head- gt; Next;

}

Printf("1, puntuación promedio más baja Información del estudiante:\n ");

printf("?-9s-8s-8s-8s-8ss\n", "ID de estudiante", "Nombre", "Grado 01", "Grado 02", "Nivel 03 ", "Puntuación promedio");

printf(" d s d d d d d \ n ", SiO min- gt; id, SiO min- gt; nombre, SiO min- gt; puntuación [ 0], SiO min- gt; puntuación [1], SiO min->; puntuación [2], SiO mingt;

}

¿No válido? eliminarStu(int? ID card, SIO? *sioHead)//Eliminar la información del estudiante del número de estudiante especificado y liberar memoria.

{

¿SIO? *dlsio=findSIObyID(id, cabezal SiO);

SIO? * dsio = dl SiO- gt; siguiente;

dsio- gt; siguiente = dl SiO- gt; siguiente

dsio- gt; /p>

Gratis (dsio);

}

SIO? *insertStu(int?count, int?id, char?name[], int?score[3], SIO?*sioHead, SIO?*sioTail)//Insertar información del estudiante. Cuando cuenta == 1, inserte en la posición del nodo principal; inserte Cuenta == 2 en la posición media y mueva los parámetros originales hacia atrás: cuando cuenta == 3, agregue un nodo al final de la lista vinculada; nodo de cola

{

int? con=0, mid=sioHead->cont/2;

SIO? *sioNew=(SIO?*)malloc(sizeof(SIO));

sion ew- gt; next = NULL

sion ew- gt;

strcpy(sioNew- gt; nombre, nombre);

sion ew- gt; puntuación[0]=puntuación[0];

sion ew- gt; 1]=puntuación[1];

sion ew- gt; puntuación[2]=puntuación[2];

sion ew- gt; puntuación[0] puntuación [1] puntuación[2])/3;

if(count==3)

{

if(sioHead->;next==NULL )

SiO head->; next = sioNew

Otros

SiO tail->; next = sioNew

sioTail = sioNew

Cabeza de SiO->;cont;

¿Regresar? Siote;

}

If(count==2)//Insertar en el medio.

{

if(sioHead->;cont lt2)//Si el número total de nodos es menor que 2, agréguelo al final.

{

Cabezal SiO->;cont;

¿Regresar? insertStu(3, id, nombre, puntuación, sioHead, sioTail

}

while(sioHead->; next!=null)

{

con;

if(con==mid)

{

sion ew- gt; next = sioHead- gt; -gt;next;

Cabezal SiO->;next = sioNew

Cabezal SiO->;cont;

¿Regresar? SiOt;

}

SiO head = SiO head- gt;Next;

}

}

If(count==1) // Inserta el primer nodo.

{

if(sioHead->; next==NULL)

{

Cola de SiO = cabeza de SiO- gt; = sioNew

}

Otro

{

sion ew- gt; next = sioHead- gt; ;

SiO head->next = sioNew

}

SiO head->cont;

¿Volver? Theote;

}

¿Volver? 0;

}

¿SIO? *findSIObyID(int?ID,SIO?*sioHead)//? Regrese al nodo anterior mediante la búsqueda de ID.

{

mientras(sioHead->; siguiente!=null)

{

if(sioHead->; siguiente - gt ; id==id)

{

¿Volver? Sihead;

}

SiO head = SiO head- gt;Siguiente;

}

¿Regresar? NULO

}