Gestión de archivos de logros estudiantiles en lenguaje C
# 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 ); p >
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"); p>
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); p>
cabezal de SiO = cabezal de SiO- gt;
}
printf(" \ n \ n ");
} p>
¿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
}