Simulación del sistema de gestión de información estudiantil. El lenguaje de programación es lenguaje C y el entorno de programación es VC 6.0.
/*
*** Esto lo escribí. Puede consultarlo. Mi compilador usa devC. Se puede decir que la eficiencia de mi código es muy alta. Al mismo tiempo, la interfaz está bien diseñada y es perfecta, y ha sido muy elogiada por el profesor. Sin embargo, la base de datos no se utiliza. El único inconveniente es que la compilación bajo VC puede informar un error. tiene restricciones inconsistentes en las declaraciones de variables para bucles. Específicamente, simplemente puede cambiar los detalles. El programa es muy correcto, pero se informará un error en el orden de declaración de las variables o en la posición en vc. Bien, dispérselo a tiempo. También estoy muy ocupado, así que no tengo tiempo para leer esto en detalle, lo siento.
*
/
#include lt;stdio.hgt;
#include lt;stdlib.hgt;
#include lt; string.hgt;
#includelt; conio.hgt;
int shoudsave=0;
{
char num[10];/*número de estudiante*/
char nombre[20];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave; /p>
typedef struct node
{
struct datos del estudiante;
struct node *next;
} Nodo, *Enlace;
void menu()
{
printf("\t\t\t\tSistema de gestión de puntajes estudiantiles\n\t\t \ t----------------------------------\n");
printf(" ** ************************************************* *** *******************************");
printf("\t1Ingrese la 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"); p >
printf("\t5Mostrar información del estudiante\t\t\t\t\t6Estadísticas de puntajes de los estudiantes\n");
printf("\t7Ordenar puntajes de los estudiantes\t\t\ t\ t\t8Guardar información del estudiante\n");
printf("\t9Obtener información de ayuda\t\t\t\t\t0Salir del sistema\n");
printf( "************************************************ *** **********************************\n");
} p >
void printstart()
{
printf("----------------------- - ---------------------------------------\n ");
}
void Wrong()
{
printf("\n======gt; mensaje: ¡Error de entrada!\n") ;
}
void Nofind()
{
printf("\n== ===gt; Consejo: El ¡No se encontró el estudiante!\n");
}
void printc() /* Esta función se utiliza para generar títulos en chino*/
{
printf("Nombre del estudiante, puntaje en inglés, puntaje en matemáticas, puntaje en lenguaje C, puntaje promedio total\n");
p>void printe(Node *p)/*Esta función se utiliza para generar el contenido específico bajo el título chino*/
{
printf("\ts \ts \td \td \td \td \td\n", p-gt; datos.num, p-gt; datos.nombre, p-gt; datos.egrade, p-gt; datos.mgrade, p-gt; datos. cgrade, p-gt; data.totle, p-gt; data.ave);
}//Imprimir menos nombres
Nodo *Locate(Link l, char findmess[ ] , char nameornum[]) /*Esta función se utiliza para ubicar el punto de contacto en la tabla de conexiones que cumple con los requisitos y devuelve el puntero*/
{
Nodo *r ;
if(strcmp(nameornum, "num")==0) /*Consulta por número de estudiante*/
{
r=l-gt ; siguiente;
p>while(r)
{
if(strcmp(r-gt; data.num, findmess)==0)
return r;
r=r-gt;siguiente;
}
}
si no ( strcmp(nameornum, "name" )==0) /*Consulta por nombre*/
{
r=l-gt
while; (r)
{
if(strcmp(r-gt; data.name, findmess)==0)
return r;
r=r-gt; siguiente;
}
}
devuelve 0; p>void Add(Link L ) /*Agregue el puntero de la cabeza del estudiante a mayúsculas para facilitar la distinción*/
{
system("cls"); /p>
Nodo *p, *r, *s;
char num[10];
while(1)
{ p>
r=L;
s=L-gt;siguiente;
mientras(r-gt;siguiente!=NULL)
r =r-gt;next;
printf("Ingrese su número de estudiante (regrese al menú anterior con '0':)");
scanf("s", num);
getchar();
if(strcmp(num, "0")==0)
break;
mientras(s)
{
if(strcmp(s-gt; data.num, num)==0)
{
system("cls");
printf("======gt; Consejo: El estudiante con ID de estudiante ya existe, ¡agréguelo nuevamente!\n", num); //Cambiar nueva línea
printstart();
printc();
printe(s);
printstart();
printf("\n");
printf("Por favor, ingrese el número de estudiante (volver al menú anterior con '0'): ");
scanf("s", num);
getchar();
s=L-gt; next; //Volver a buscar nuevamente para ver si la nueva entrada ya existe
}
else
s=s -gt ;next; //Si no hay coincidencias, continúa buscando. . .
}
p=(Nodo *)malloc(sizeof(Nodo));
strcpy(p-gt; data.num, num);
printf("Ingrese su nombre:");
scanf("s", p-gt; data.name
getchar(); //El programa se detiene y espera la entrada
printf("Ingrese la puntuación del lenguaje c:");
scanf("d", amp; p-gt; data. cgrade);
getchar();
printf("Ingrese su puntuación de matemáticas: "); gt; data .mgrade);
getchar();
printf("Ingrese su puntuación en inglés: "); amp; p -gt; datos.egrade);
getchar();
p-gt; datos.totle=p-gt; cgrade p- gt; data.mgrade;
p-gt; data.ave=p-gt; data.totle /*Se ha completado la entrada de información*/
p-gt; next=NULL;
r-gt; next=p;
//r=p; redundante aquí
shoudsave=1;
}
printf("¡Presione cualquier tecla para regresar!"
getch(); p>void Qur (Enlace l) /*Consultar estudiantes*/
{
int sel;
char findmess[20];
Nodo * p;
elección de carácter;
while(1){
sistema("cls"); (!l- gt; siguiente)
{
printf("\n======gt; Consejo: ¡No hay información para consultar!\n");
//No es necesario devolver return;
printf("Primero agrega un dato, querida. . .
\n");
break;
}
printf("\n=====gt; 1 Buscar por número de estudiante\n== ===gt; 2 Buscar por nombre\n");
scanf("d", amp; sel);
if(sel==1)/*número de estudiante */
{
printf("Ingrese el número de estudiante que desea encontrar: ");
scanf("s", findmess); /p> p>
p=Locate(l, findmess, "num");
if(p)
{
printf(" \t\ t\t\tResultados de búsqueda\n");
printstart();
printc();
printe(p); p>
printstart();
}
else
Nofind()
}
else if(sel==2) /*Nombre*/
{
printf("Ingrese el nombre que está buscando: "); > scanf( "s",findmess);
p=Locate(l,findmess,"nombre");
if(p)
{
printf("\t\t\t\tResultados de búsqueda\n");
printstart()
printc(); p> printe(p);
printstart();
}
else
Nofind(); p> }
else
Wrong();
printf("\nSi continuar consultando (s/n):"); para continuar consultando
getchar();
scanf("c", amp; elección
if(choice=='n'){
printf("¡Presione cualquier tecla para regresar! Estimado"
getch()
break;}
} p>
}
void Del(Link l) /*delete*/
{
int sel;
Nodo *p,* r;
elección de caracteres;
char findmess[20];
while(1){
sistema( "cls") ;
if(!l-gt; siguiente)
{
printf("\n======gt; Consejo : ¡No se pueden eliminar datos!\n");
printf("Vuelve atrás y elige de nuevo, querida. . .
"); //return;
break;
}
printf("\n======gt; 1Eliminar por número de estudiante\n =====gt;2Eliminar por nombre\n");
scanf("d",& sel);
if(sel==1)
p>{
printf("Ingrese el número de estudiante que desea eliminar: ");
scanf("s", findmess
p=Ubicar(l,findmess,"num");
if(p)
{
r=l;
mientras(r-gt; siguiente!=p)
r=r-gt; siguiente;
r-gt; siguiente=p-gt;
free(p);
printf("\n=====gt; Consejo: ¡El estudiante ha sido eliminado exitosamente!\n"); 1 ;
printf("\nSi continuar eliminando (s/n):"); //Elige si deseas continuar eliminando
getchar();
scanf ("c", amp; elección);
if (choice=='n')
break
}
else{
Nofind();
romper
}
}
más si( sel= =2)
{
printf("Ingrese el nombre que desea eliminar: ");
scanf("s", findmess);
p>p=Locate(l,findmess,"nombre");
if(p)
{
r= l;
p>
while(r-gt; siguiente!=p)
r=r-gt;
r-gt; ; next=p-gt; next;
free(p);
printf("\n=====gt; Consejo: ¡El estudiante ha sido eliminado exitosamente!\ n");
shoudsave=1;
printf("\nSi continuar eliminando (y/n):"); //Elige si deseas continuar eliminando
getchar();
scanf("c",amp;choice);
if(choice=='n')
break;
}
else{
Nofind();
descanso
}
}
else
Incorrecto();
sistema("pausa"); > printf("Presiona cualquier tecla para regresar, querido ");
getch()
}
void Modify(Link l)
{
sistema("cls");
Nodo *
p, *s;
s=l-gt;
char findmess[20];
int key=1; p> mientras(1){
si(!l-gt;siguiente)
{
printf("\n======gt ; Consejo: ¡No hay datos para modificar!\n");
break;
}
while(key){
system( "cls");
getchar();
printf("Ingrese el número de estudiante que desea modificar:
scanf( "s ", findmess);
//Agrega una función para verificar si existe el número de estudiante
while(s)
{
if(strcmp(s-gt;data.num,findmess)==0)
{
system("cls");
printf(" =====gt; Consejo: Se ha encontrado el estudiante con el número de estudiante, ¡modifíquelo! \n", findmess
printstart()
;printc() ;
printe(s);
printstart()
printf("\n"); p> key=0; //Saltar del bucle grande
break; //Saltar del bucle interno
}
else
s=s-gt; next; //Si no hay coincidencias, continúa buscando. . .
}
//Si aún no se encuentra después del escaneo, se le pedirá que vuelva a ingresar
if(!s)
printf( "\nLa identificación del estudiante no existe, ¡compruebe si está ingresada correctamente!\n");
system("pause"); /p>
p =Locate(l, findmess, "num");
if(p)
{
// printf(" Ingrese la nueva puntuación en lenguaje c (originalmente d puntos): ", p-gt; data.cgrade);
// scanf ("d", amp; p-gt; data.cgrade);
printf("Ingrese un nuevo nombre: ");
scanf("s", p-gt; data.name;
getchar( ); // El programa se detiene y espera entrada
printf("Ingrese la nueva calificación de lenguaje C:"); ; data.cgrade);
getchar();
printf("Ingrese la nueva puntuación de matemáticas:
scanf("d", amp; p-gt ; data.mgrade);
getchar();
printf("Ingrese la nueva partitura en inglés: "); ("d" , amp; p-gt; datos.egrade;
getchar();
p-gt; -gt; data .cgrade p-gt; data.mgrade; //La puntuación total y la puntuación promedio cambiarán después de la modificación
p-gt; ; /*Ingreso de información completado*/
printf("\n=====gt; Consejo: ¡Datos modificados exitosamente!\n"); /p>
}
más
Nofind();
descanso
}
printf("Por favor presione cualquier tecla para continuar.
");
getch();
}
void Disp(Enlace l)
{
sistema("cls");
int count=0;
Nodo *p;
p=l-gt; p> while(1){
if(!p)
{
printf("\n======gt; Consejo: No ¡Se puede mostrar información!\n");
//Respuesta a Mao ah return;
break;
}
printf ("\ t\t\t\tMostrar resultados\n");
printstart();
printc();
printf("\n ") ;
while(p)
{
printe(p);
p=p-gt;siguiente;
}
printstart();
printf("\n");
break; //Modificado
}
printf("¡Presione cualquier tecla para regresar!");
getch();
}
// sort sort Función
int SortData(Link L)//Usando el método de clasificación de burbujas más simple para clasificar por puntuación total
{
struct Student temp
{
struct Student temp
p>Nodo *r=L-gt; siguiente, *p1, *p2;
int count=0, i, j
while(r) p>
{r=r-gt; next;
count ;
}// Calcula la longitud de la lista enlazada
for(i =1; ilt; =cuenta-1;i){
for(r=L-gt;siguiente,j=1;jlt;=cuenta-i;r=r-gt;siguiente)
{
if(r-gt; data.totlelt; r-gt; next-gt; data.totle)
{temp=r-gt; datos;
r-gt; datos=r-gt; siguiente-gt;
r-gt; datos=temp;}
/*p1 =r-gt; siguiente;
r-gt; siguiente=r-gt; siguiente;
p2=r-gt; gt; siguiente-gt; siguiente;
r-gt; siguiente-gt; siguiente=p1; */
j;
}
}
printf("¡Ordenado correctamente! ¡Regrese a la interfaz principal para realizar consultas! ");
getch();
devolver 0;
}
void StatisDa
ta(Enlace L)
{ system("cls");
estructura temporal del estudiante
Nodo *r=L-gt; , *p2;
int count=0, i, j;
while(r)
{r=r-gt; >
count;
}//Calcular la longitud de la lista enlazada
for(i=1; ilt; =count-1; i){
for(r=L-gt; siguiente, j=1; jlt; = contar-i; r=r-gt; siguiente)
{
if(r -gt; datos.avelt; r-gt; siguiente-gt; datos.ave)
{temp=r-gt;datos;
r-gt;datos=r- gt;siguiente -gt;data;
r-gt;next-gt;data=temp;}
/*p1=r-gt;siguiente;
r -gt; siguiente=r-gt; siguiente-gt;
p2=r-gt; siguiente-gt; gt; siguiente -gt; siguiente=p1;
> }
}
printf("\nEl que tiene el puntaje promedio más alto es: \ts, d", L-gt; next-gt; data.name, L- gt; siguiente-gt ;data.ave);
for(i=1;ilt;=count-1;i){
for(r=L-gt;siguiente ,j=1; jlt;=count-i;r=r-gt;siguiente)
{
if(r-gt;data.cgradelt;r-gt;siguiente -gt;datos.cgrade)
{temp=r-gt;datos;
r-gt;data=r-gt;next-gt;datos;
r-gt; siguiente-gt; datos=temp;}
/*p1=r-gt; siguiente;
r-gt; siguiente-gt; siguiente ;
p2=r-gt;siguiente-gt;siguiente-gt;siguiente;
r-gt;siguiente-gt;siguiente=p1; p>
r-gt; siguiente-gt; siguiente-gt; siguiente=p2 */
j ;
}
} p>
printf("\ncLa puntuación de idioma más alta es: \ts, d", L-gt; next-gt; data.name, L-gt; next-gt; data.cgrade
);para (i=1;ilt;=count-1;i
){
for(r=L-gt; siguiente, j=1; jlt; = contar-i; r=r-gt; siguiente)
{
if(r-gt; data.mgradelt; r-gt; next-gt; data.mgrade)
{temp=r-gt;data;
r- gt;data=r-gt;next-gt;data;
r-gt;next-gt;data=temp;}
/*p1=r-gt;siguiente ;
r-gt; siguiente=r-gt; siguiente-gt; siguiente;
p2=r-gt; siguiente-gt; >
r-gt; siguiente-gt; siguiente=p1;
r-gt; siguiente-gt; siguiente=p2;
}
}
printf("\nLas puntuaciones más altas en matemáticas son:\ts, d", L-gt; next-gt; data. name , L-gt; siguiente-gt; data.mgrade);
for(i=1;ilt;=count-1;i){
for(r=L - gt;siguiente,j=1;jlt;=count-i;r=r-gt;siguiente)
{
if(r-gt;data.egradelt;r - gt;next-gt;data.egrade)
{temp=r-gt;data;
r-gt;data=r-gt;next-gt;data <; /p>
r-gt; siguiente-gt; datos=temp;}
/*p1=r-gt; siguiente
r-gt; -gt; siguiente-gt; siguiente;
p2=r-gt; siguiente-gt; siguiente
r-gt;
r-gt; siguiente-gt; siguiente-gt; siguiente=p2 */
j ; }
printf("\nLas puntuaciones más altas en inglés son: \ts, d", L-gt; next-gt; data.name, L-gt; next-gt; data.egrade) ;
for(i=1;ilt;=count-1;i){
for(r=L-gt;next,j=1;jlt;=count- i; r=r-gt; siguiente)
{
if(r-gt; data.totlelt; r-gt; siguiente-gt; data.totle)
{temp=r-gt;datos;
r-gt;data=r-gt;siguiente-gt;datos;
r-gt;siguiente-gt ;datos =temp;}
/*p1=r-gt; siguiente;
r-gt; siguiente=r-gt; siguiente
p2=r-gt; siguiente-gt; siguiente;
r-gt; siguiente-gt; siguiente=p1;
r-gt; siguiente-gt;
j ;
}
}//
printf("\nLa puntuación más alta es:\ts, d" , L -gt; siguiente-gt; datos.nombre, L-gt; siguiente-gt; datos.totle("pausa"); p>
void Guardar(Enlace l)
{
system("cls");
ARCHIVO *fp;
Nodo *p;
int flag=1, count=0;
fp=fopen("c:\\student.txt", "wb"); >
if(fp==NULL)
{
printf("\n=====gt; Consejo: ¡Ocurrió un error al volver a abrir el archivo!\n " );
salir(1);
}
p=l-gt; siguiente;
mientras(p)< / p>
{
if(fwrite(p,sizeof(Nodo),1,fp)==1)
{
p= p -gt; siguiente;
contar
}
más
{
bandera=0;
ruptura
}
}
if(bandera)
{
printf("\n=====gt; Consejo: El archivo se guardó correctamente. (Se han guardado los registros d.)\n", count
shoudsave=0; >
}
fclose(fp);
system("pausa"
}
int main(); p>
{
Enlace l /*Lista de enlaces*/
ARCHIVO *fp /*Puntero de archivo*/
int sel; ;
char ch;
system("color 4f");
int count=0
Nodo *p, * r;
//Agregue la función de menú y agregue printf("\t\t\t\tStudent Score Management System\n\t\t\t----------- -------------------\n");
l=(Nodo*)malloc(tamañode(Nodo));
l-gt; siguiente=NULL;
r=l;
fp=fopen("C:\\estudiante.txt", "ab "); p>
if(fp==NULL)
{
pri
ntf("\n======gt; Consejo: ¡El archivo no se puede abrir!\n");
exit(0);
printf("\n======gt; Consejo: El archivo se ha abierto y los registros se están importando...\n");
while(!feof(fp) )
{
p=(Nodo*)malloc(tamañode(Nodo));
if(fread(p,tamañode(Nodo),1, fp)== 1) /*Pon el contenido del archivo en el contacto*/
{
p-gt; -gt; next= p;
r=p; /*Pon este contacto en la conexión*/
count;
}
}
fclose(fp); /*Cerrar el archivo*/
while(1)
{
system( "cls");
printf("\n=====gt; Consejo: El archivo se ha abierto y se están importando registros...\n"); > menu(); //Transferir al bucle principal
printf("Por favor elija la operación:");
scanf("d", amp; sel); p>
if (sel==0)
{
if(shoudsave==1)
{ getchar();
printf(" \n=====gt; Consejo: Los datos han sido modificados, ¿desea guardar los cambios en el archivo (y/n)?\n");
scanf("c", amp;ch) ;
if(ch=='y'||ch=='Y')
Guardar(l); p>
}
printf("\n======gt; Consejo: ¡Has salido del sistema, adiós!\n");
break;
}
switch(sel)
{
caso 1: Agregar(l);
caso 2: Del(l ); descanso; /*Eliminar estudiantes*/
caso 3: Qur(l);
caso 4: Modificar(l); break; /*Modificar estudiantes*/
caso 5: Disp(l); //Mostrar información
caso 6: StatisData(l); //Función estadística p>
caso 7: SortData(l); //Ordenar
caso 8: Guardar (l); Guardar estudiante*/
caso 9 :printf("\t\t\t==========Información de ayuda==========\n"); menú(); sistema("pausa");
predeterminado: Incorrecto();
}
} p>
while (l){ /*Liberar Ocupado por la lista enlazada l (no 1)
¡Memoria! */
p = l;
l = l-gt;
libre
} p>
getchar();
devuelve 0;
}