Programación PMLL
#Incluir "stdlib.h"
#Incluir "string.h"
#Incluir "windows.h"
int debería guardar = 0; /* */
Estructura estudiante
{
Número de carácter [10] /*ID del estudiante; */
nombre de char[20];
sexo de char[4];
Comercio internacional;
Comercio internacional; p>
p>
int egrade
int totle
int ave
char near time[10] /*última hora de actualización*; /
};
nodo de estructura typedef
{
Construir datos de estudiantes;
Nodo de estructura* siguiente
}Nodo, *Enlace;
Menú no válido()
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);
Printf("\ t1 Registrar datos del estudiante\t\t\t\t2Eliminar datos del estudiante\n");
printf("\t3 Consultar información del estudiante\t\t\t\Modificar información del estudiante\n ") ;
Printf("\t5Guardar información del estudiante\ t \ t \ t \ tSalir del sistema\ n ");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
}
void printstart()
{
printf("- \ n ");
}
Error no válido()
{
printf(" \ n = = = = = & gt ; Consejo: Error de entrada \ n ");
}
void Nofind()
{
printf(" \ n = = = = = > Consejo: ¡No se puede encontrar al estudiante! \ n ");
}
Void printc() /*Esta función se utiliza para generar chino*/
{
Printf ("ID del estudiante\tNombre, género, puntaje en inglés, puntaje en matemáticas, puntaje en lenguaje C, puntaje promedio\ n "); *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->data.cgrade,p->data.totle,p->data.ave);
}
Nodo * localizar (enlace L, char buscar lío [], c
har namernum [])/*Esta función se utiliza para localizar contactos calificados en la lista vinculada y devolver el puntero*/
{
node * r;
If (strcmp (namernum, "num") == 0)/*Consulta por número de estudiante*/
{
r = l-& gt;Siguiente;
p>
mientras(r!=null)
{
if(strcmp(r-& gt;data.num, findmess)==0)
return r;
r = r-& gt;siguiente;
}
}
Elseif (strcmp ( namernum, "nombre") = = 0)/*Consulta por nombre*/
{
r = l-& gt; >mientras (r!=null)
{
if(strcmp(r-& gt;data.name, findmess)==0)
regresar r;
r = r-& gt; Siguiente
}
}
Devuelve 0; > }
Nulo Agregar(Enlace l) /*Agregar estudiante*/
{
Nodos *p, *r, *s;
Número de carácter [10];
r = l;
s = l-& gt;Siguiente;
mientras(r->;Siguiente a! = vacío)
r = r-& gt; next /*Pon el puntero al final*/
while(1)
{
Printf("Ingrese su número de estudiante (use '0':) para regresar al menú anterior);
scanf("%s", número);
if(strcmp(num, "0")==0)
Descanso;
mientras(s)
{
if(strcmp(s->data.num,num)= 0)
{
printf(" = = = = = > Consejo: Aprenda El estudiante El número "%s" ya existe.
¡Seleccione "4Modify" para modificar! \n ", número);
printstart();
printc();
Imprimir;
printstart();
printf(" \ n ");
Retorno;
}
s = s-& gt;Siguiente;
p>
}
p=(nodo*)malloc(tamañode(nodo));
strcpy(p-& gt;data.num,num );
p>
Printf("Por favor ingrese su nombre:");
scanf("%s ", p->data. nombre); p>
getchar( );
Printf("Ingrese su género:");
scanf("%s ", p-& gt; data . sex)
getchar();
Printf("Ingrese su calificación en lenguaje C:");
scanf("%d ",&p->data . cgrade) ;
getchar();
Printf("Ingrese su puntaje de matemáticas:");
scanf("%d ", & ampp -> ; datos . m calificación);
getchar();
Printf("Ingrese su calificación de inglés:"); d ",&p->data.e calificación);
getchar();
p->data.totle = p->data.e calificación+p -> data.c calificación+p->data.m calificación;
p->;data.ave = p->data.totle/3;
/*Entrada de información se ha completado*/
p->; siguiente = NULL
r-& gt; siguiente = p
r = p ;
shoudsave = 1;
}
}
Void Qur(Enlace l) /*Consulta estudiantes*/
{
int sel
char find mess[20];
nodo * p;
if (! l->Siguiente)
{
printf(" \n = = = = = > Consejo: ¡No hay información para consultar!\n ");
Return;
}
printf(" \ n = = = = = & gt; 1 Buscar por número de estudiante\ n = = = = > 2 Presione Buscar por nombre \n ");
scanf("%d ", & ampsel);
If(sel==1)/*ID de estudiante */
{
Printf("Ingrese el número de estudiante que desea encontrar:");
scanf("%s ", busque desorden);
p =Ubicar(l,findmess," num");
if (p)
{
printf(" \ t \ t \ t \ t \ t hallazgos \ n ");
printstart();
printc();
printe(p);
printstart( );
}
Otros
<p>nofind();
}
De lo contrario, si(sel==2) /* nombre */
{
Printf ("Ingrese el nombre que desea encontrar:");
scanf("%s ", find mess
p=Locate(l, findmess, " name ");
if(p)
{
printf("\t\t\t\t\t resultados\n"); >
printstart();
printc();
printe(p);
printstart();
}
p>
Otro
nofind();
}
Otro
Error() ;
}
Void Del(Enlace l) /* Eliminar */
{
int sel
Nodo *p, * r ;
char find mess[20];
if (!l-& gt; next)
{
printf( " \ n = = = = = & gt; Consejo: ¡No se pueden eliminar datos!\n ");
Return
}
printf("
if(sel==1)
{
Printf("Ingrese el número de estudiante que desea eliminar:") ;
scanf ("%s", buscar desorden);
p=Locate(l, findmess, "num");
if (p)
{
r = l;
mientras(r->; siguiente!=p)
r = r-& gt ; siguiente;
r->siguiente = p->siguiente;
gratis(p);
printf(" \n = = = = > Consejo: ¡El estudiante ha sido eliminado exitosamente! \n ");
shoudsave = 1;
}
Otro
nofind( );
}
else if(sel==2)
{
Printf("Ingrese el nombre para ser eliminado: ");
scanf("%s ", buscar desorden);
p=Locate(l, findmess, " nombre ");
Si ( p)
{
r = l;
mientras(r->;Siguiente! =p)
r = r-& gt; siguiente;
r-& gt; siguiente = p-& gt; );
printf(" \ n = = = = = & gt; Consejo: ¡El estudiante ha sido eliminado exitosamente! \n "); >
}
Otro
nofind();
}
Otro
Error () ;
}
Modificación no válida (enlace l)
{
nodo * p;
char find desorden[20];
si (
! l->Siguiente)
{
printf(" \ n = = = = = > Consejo: ¡No se pueden modificar datos!\n ");
p>Return;
}
Printf("Ingrese el número de estudiante a modificar:");
scanf("%s " , encontrar desorden);
p=Locate(l, findmess, "num");
if (p)
{
Printf("Ingrese su nuevo número de estudiante (originalmente %s):",p->data.num);
scanf("%s",p->data. num);
Printf("Ingrese su nuevo nombre (originalmente %s):", p-& gt; data. name);
scanf("%s ", p-> ;data. name);
getchar();
Printf("Ingrese su nuevo género (originalmente %s):", p- >data.sex);
scanf("%s ",p->data.sex);
Printf("Ingrese su nueva puntuación en lenguaje C (originalmente %d): ",p-> ;data.cgrade);
scanf("%d ",&p->data.cgrade);
getchar();
Printf("Por favor ingrese su nueva puntuación de matemáticas (originalmente %d):", p->data.m calificación);
scanf( "%d",&p->data.m calificación);
getchar();
Printf("Ingrese su nueva calificación de inglés (originalmente %d):", p-& gt; data . e calificación
scanf); ("%d ", &p->; datos . e calificación);
p->datos = p->datos .e calificación+p->datos .c calificación+p ->datos .m calificación;
p->;datos .ave = p ->data.totle/3;
printf(" \ n = = = = = = > Consejo: ¡Los datos se han modificado correctamente! \ n ");
shoudsave = 1;
}
Otro
nofind();
}
Visualización no válida (enlace l)
{
int count = 0;
node * p;
p = l-& gt; siguiente;
if (!p)
{
printf(" \ n = = = = & gt; Consejo: ¡No hay datos para mostrar! \ n ");
Return;
}
printf(" \ t \ t \ t \ tDisplay Result \ n ");
printstart();
printc();
printf(" \ n ");
mientras(p )
{
printe(p);
p = p-& gt;
}
printstart();
printf(" \ n ");
}
Void Tongji (bucle l)
p>
{
Los nodos *pm, *pe, *pc, *pt, *pa/* se utilizan 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 ");
Regresar;
}
pm = PE = PC = pt = pa = r;
while(r!=null)
{
if(r->data . c grade>= PC->;data.cgrade)
PC = r;
if(r->data . m calificación>= pm->;data.mgrade)
pm = r ;
if(r-& gt;data. e calificación>= PE->data.egrade)
PE = r;
if(r-& gt;data.totle & gt= pt->data.totle)
pt = r;
if(r->data.ave & gt= pa->;data.ave)
pa = r;
r = r-& gt;Siguiente;
}
Printf (" -Resultados estadísticos.
Printf("Puntuación total más alta:\t%s %d \n ",pt->data.name,pt->data.totle);
Printf( "Puntuación promedio más alta:\t%s %d \n ",pa->data.name,pa->data.ave);
Printf("Más alta en inglés:\n t% s %d \n ",PE->data.name,PE->data.e calificación);
Printf("Puntuación más alta en matemáticas:\t%s %d \ n ", pm->data.name, pm->data.m grado);
printf(" Lenguaje C más alto:\t%s %d \n ", PC->data.name , PC->data.cgrade);
printstart();
}
Clasificación no válida (enlace l)
p>{
Enlace ll;
Nodo *p, *rr, *s;
ll =(Enlace)malloc(tamañode(Nodo )); *Se utiliza para crear una nueva tabla vinculada*/
ll->next = NULL
If (l->next==NULL)
p>{
printf(" \ n = = = = = & gt; Consejo: ¡No hay datos para ordenar! \n ");
}
p = l-& gt; siguiente
mientras(p)
{
s =(Nodo *)malloc(sizeof(Node));/*Los nuevos contactos se utilizan para guardar información*/
s-& gt;data = p-& gt;data;
s -& gt; siguiente = NULL
rr = ll
mientras(RR->;Siguiente!= NULL & amp& ampRR-& gt;Siguiente-& gt ;data.totle>= p->data.totle)
RR = RR->siguiente;
if(RR->next==NULL )
RR-& gt; siguiente = s;
Otro
{
s-& gt; siguiente = RR-& gt; RR-& gt; siguiente = s;
}
p = p-& gt; l);
l-& gt; next = ll-& gt; next;
printf(" \ n = = = = = > Consejo: ¡Clasificación completada! \ n ");
}
Guardado no válido (enlace l)
{
ARCHIVO * fp
nodo * p;
int flag=1, recuento = 0;
fp=fopen("c:\\estudiante ", " WB "); p>if(fp==NULL)
{
printf(" \ n = = = = = & gt; Consejo: ¡Se produjo un error al volver a abrir el archivo!\n "
Salir(1);
}
p = l-& gt;Siguiente;
mientras(p)
p>
{
if(fwrite(p,tamañode(Nodo),1,fp)=
=1)
{
p = p-& gt; siguiente; >Otro
{
bandera = 0
Romper
}
}
if (flag)
{
printf(" \ n = = = = = & gt; Consejo: El archivo se guardó correctamente. (Se han guardado %d registros )\n", count);
debe guardar = 0;
}
fclose(FP);
}<. /p>
void main()
{
Enlace l; /*Tabla de enlaces*/
ARCHIVO * fp/*Puntero de archivo*/
int sel
char ch
char jian
int count = 0
Nodo *p, * r;
printf("\t\t\t\t\tSistema de gestión del desempeño estudiantil\n\t\t-Proyecto experimental\n");
l= ( Nodo*)malloc(tamaño de(Nodo)).
l-& gt;next = NULL
r = l;
fp=fopen("C:\\estudiante","Rb");
if(fp==NULL)
{
printf(" \n = = = = = & gt; Consejo: El archivo aún no existe Quieres crearlo? (sí/no)\n");
scanf("%c", & amp Jane);
if(jian=='y. '| |jian=='Y ')
fp=fopen("C:\\estudiante "," WB ");
Otros
Salir (0 );
}
printf(" \ n = = = = = & gt; Consejo: El archivo se ha abierto y los registros se están importando...\ n "
Y (!feof(fp))
{
p=(nodo*)malloc(tamañode(nodo));
If (fread (p, sizeof (nodo), 1, FP))/*Coloque el contenido del archivo en el contacto*/
{
p->; = NULL
r-& gt; next = p;
r = p /*Pendiente de este contacto en la conexión*/
count++; p>
r = p; p>
}
}
fclose(FP);/*Cerrar el archivo*/
printf (" \ n = = = = = & gt; Consejo: Después de importar registros, * * * se importaron %d registros. \n ", count
while(1)
<); p>{menu();
Printf("Seleccione una operación:");
scanf("%d ", & ampsel);
if( sel==0)
{
if(shoudsave==1)
{ getchar(); p>
printf(" \ n = = = = = > Consejo: Los datos han sido cambiados.
¿Quieres guardar los cambios en el archivo (sí/no)? \ n ");
scanf("%c ", & ampch);
if(ch=='y'||ch=='Y ')
Save(l);
}
printf(" \ n = = = = = & gt; Consejo: Has salido del sistema. ¡Adiós! \n " ) ;
Interrumpir;
}
Cambiar (seleccionar)
{
Caso 1: Agregar ( l ); descanso; /*agregar estudiante*/
Caso 2: Del (l); /*eliminar estudiante*/
Caso 3: Corán (izquierda); ; /*Consultar estudiantes*/
Caso 4: Modificar (l); /*Modificar estudiantes*/
Caso 5: Guardar (l); estudiantes */
Caso 9: printf ("\ t \ t \ t = = = = = =Información de ayuda = = = = = = = "); : Error();getchar();Romper;
}
}
Dormir(100);
}
/* */