Utilice la programación en lenguaje C para implementar un sistema sencillo de gestión del desempeño de los estudiantes.
#includelt;stdio.hgt;
#includelt;stdlib.hgt;
#includelt;conio.hgt;
# includelt;dos.hgt;
#includelt;string.hgt;
#define?LEN?sizeof(struct?student)
#define?FORMAT? "-8d-15s-12.1lf-12.1lf-12.1lf-12.1lf\n"
#define?DATA?stu[i].num, stu[i].nombre, stu[i] .elec, stu[i].expe, stu[i].requ, stu[i].sum
struct?student/*Definir estructura de desempeño de los estudiantes*/
{ ? int?num;/*número de estudiante*/ char?name[15];/*nombre*/ double?elec;/*curso electivo*/ double?expe;/*curso experimental*/ double?requ;/*curso obligatorio Lección*/ double?sum;/*Puntuación total*/
};
struct?student?stu[50];/*Definir matriz de estructura*/
void?in();/*Ingresar información de puntuación del estudiante*/
void?show();/*Mostrar información del estudiante*/
void?order(); *Ordenar por puntuación total*/
void?del() /*Eliminar información de puntuación del estudiante*/
void?modify() /*Modificar información de puntuación del estudiante*/
void?menu();/*Menú principal*/
void?insert();/*Insertar información del estudiante*/
void?total() ;/*Calcular el número total de personas*/
void?search();/*Encontrar información de los estudiantes*/
void?main()/*Función principal*/
{?int?n; menu(); scanf("d",amp;n);/*Ingrese el número de la función seleccionada*/ while(n) {?switch(n) {? caso?1: ?en(); romper;
caso?2: ?búsqueda();
caso?3: ?del(); >
caso?4: ?modificar(); romper;
caso?5: ?insertar(); romper;
caso?6: ?orden(); ;
caso?7:?total();romper; caso?8:?show();romper;
predeterminado: romper }
obtener; ();
menu(); /*Mostrar la interfaz del menú nuevamente después de ejecutar la función*/
scanf("d", amp; }
);} p>
void?in()/*Ingrese la información del estudiante*/
{?int?i, m=0 /*m es el número de registros*/; char?ch[2] ; FILE?*fp;/*Definir puntero de archivo*/ if((fp=fopen("data.txt", "a "))==NULL)/*Abrir el archivo especificado
*/ {? printf("¿no?abrir\n"); return } while(!feof(fp)) { if(fread(amp;stu[m]?,LEN,1,fp)==1 ) m; /*Cuenta el número actual de registros*/ } fclose(fp); if(m==0) printf("¡No? registro!\n"); else { system("cls"); ; /*Llame a la función show para mostrar la información original*/ } if((fp=fopen("data.txt", "wb"))==NULL) { printf("can?not?open\n"); ; return ; } for(i=0; ilt; m; i )
fwrite(amp; stu[i]?, LEN, 1, fp); / printf("por favor?input(y/n):"); scanf("s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch , "y")==0)/*Determinar si se ingresa nueva información*/
{
printf("number: ");
scanf ( "d",amp;stu[m].num);/*Ingrese el número de estudiante*/
for(i=0;ilt;m;i)
if( stu[i].num==stu[m].num)
{
printf("¿el?número?existe, presione?cualquiera?para?continuar!"
getch();
fclose(fp);
retorno
} printf("nombre:");
scanf("s", stu[m].name); /*Ingrese el nombre del estudiante*/ printf("elective:"); );/*Ingrese los resultados del curso electivo*/ printf("experiment:");
scanf("lf",amp;stu[m].expe);/*Ingrese los resultados del curso experimental* / printf ("required?curso:");
scanf("lf",amp;stu[m].requ);/*Ingrese los puntajes requeridos del curso*/ stu[m].sum= stu[m ].elec stu[m].expe stu[m].requ;/*Calcular la puntuación total*/ if(fwrite(amp;stu[m],LEN,1,fp)!=1)/* Ingrese el nuevo Escriba la información en el archivo de disco especificado*/ {
printf("can?not?save!"
getch();
} else
{
printf("s?saved!\n", stu[m].name);
} printf("¿continuar?(s/n):"); /*Preguntar si desea continuar*/ scanf("s", ch } fclose(fp); ;
}
void?show() {?FILE?*fp;
int?
i, m=0;
fp=fopen("datos.txt", "rb"
mientras(!feof(fp))
{
if(fread(amp;stu[m]?,LEN,1,fp)==1)?
m;
}?
fclose(fp);
printf("número?nombreexperimento selectivo?requiredsum\t\n");
for(i=0;ilt;m; i )
{? printf(FORMATO, DATOS); /*Imprimir la información en el formato especificado*/
} }
void?menu() / *Función personalizada para implementar la función del menú*/
{ system("cls"); printf("\n\n\n\n\n"); - ------------------ESTUDIANTE-------------------|\n"); printf("\t \t|\t?0.?salir|\n"); printf("\t\t|\t?1.?input?record|\n"); printf("\t\t|\t? 2.?buscar?registro|\n"); printf("\t\t|\t?3.?eliminar?registro|\n"); printf("\t\t|\t?4.?modificar ?registro|\n"); printf("\t\t|\t?5.?insertar?registro|\n"); printf("\t\t|\t?6.?orden|\n" ); printf("\t\t|\t?7.?número?|\n"); printf("\t|\t?8.?show|\n"); \t|----------------------------------------------- --- |\n\n"); printf("\t\t\tchoose(0-8):");
}
void?order()/ *función de clasificación personalizada*/
{?FILE?*fp; struct?student?t; int?i=0, j=0, m=0; txt", "r "))==NULL) {?
printf("¿no puede? abrir!\n");
return; } while(!feof( fp) )? if(fread(amp;stu[m]?,LEN,1,fp)==1)? m; fclose(fp); if(m==0)? \n "); retorno; } if((fp=fopen("data.txt","wb"))==NULL) { printf("¿no se puede?abrir\n"); retorno;} para(i =0 ;ilt;m-1;i) for(j=i 1;jlt;m;j)/*doble bucle para lograr comparación e intercambio de rendimiento*/ if(stu[i].sumlt;stu[j]. suma) { ?t=stu[i]; stu[i]=stu[j]; stu[j]=t;} si((fp=f
open("data.txt","wb"))==NULL) {?printf("can?not?open\n");return;} for(i=0;ilt;m;i)/*will Vuelva a escribir el contenido reordenado en el archivo de disco especificado*/ if(fwrite(amp;stu[i]?, LEN, 1, fp)!=1)
{?
printf ("s?no?no?guardar!\n");?
getch() } fclose(fp); printf("guardar?con éxito\n");
}
void?del()/*función de eliminación personalizada*/
{FILE?*fp; int?snum, i, j, m= 0 char?ch[; 2]; if((fp=fopen("data.txt", "r "))==NULL) {?printf("¿no?open\n");} while (!feof(fp) )?if(fread(amp;stu[m],LEN,1,fp)==1)?m fclose(fp); if(m==0)? { printf("no ?record!\n" ); return; } printf("por favor?ingrese?el?número: "); scanf("d",amp;snum);
for(i=0;ilt ;m;i) si (snum==stu[i].num)
break; printf("buscar?el?estudiante,eliminar?(s/n)"); scanf("s" ,ch); strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*Determinar si eliminar*/ for(j=i;jlt;m; j) stu[j]= stu[j 1];/*Mover el siguiente registro a la posición del registro anterior*/ m--;/*Reducir el número total de registros en 1*/ if((fp=fopen( "data.txt", "wb"))==NULL) {?printf("can?not?open\n");return;} for(j=0;jlt;m;j)/*se cambiará Reescriba los registros al especificado archivo de disco*/ if(fwrite(amp;stu[j]?, LEN, 1, fp)!=1)
{?printf("¿No puedo? guardar!\n"); ();} fclose(fp); printf("¿eliminar? exitosamente!\n");
}
void?search()/ *Función de búsqueda personalizada*/ p>
{?FILE?*fp; int?snum, i, m=0; char?ch[2]; ) {?printf("¿no?no?abrir\n");return;} while(!feof(fp))?if(fread(amp;stu[m], LEN, 1, fp)==1)? m; fclose(fp); if(m==0)?{printf("¡no?registro!\n");} printf("por favor?ingrese?n
umber: "); scanf ("d", amp; snum); for (i=0; ilt; m; i) if (snum==stu[i].num)/* Encuentre si el número de estudiante ingresado está registrado en */ {?printf("encontrar?el?estudiante,mostrar?(s/n)"); scanf("s",ch); if(strcmp(ch,"Y")==0||strcmp( ch, "y")==0)?
{ printf("number?nameelectiveexperiment?requiredsum\t\n"); printf(FORMAT, DATA);/*Convierte los resultados encontrados al especificado. Formatear salida*/ break; } } if(i==m)?printf("can?not?find?the?student!\n"); /*La información que busca no se encuentra*/
}
void?modify()/*función de modificación personalizada*/
{?FILE?*fp; int?i, j, m=0, snum; if( (fp=fopen("data.txt", "r "))==NULL) {?printf("¿no?abrir\n");} while(!feof(fp))? (fread (amp; stu[m], LEN, 1, fp)==1)?m; if(m==0)?{printf("no?record!\n"); ; } show(); printf("¿por favor?ingrese?el?número?del?estudiante?¿cuál?quiere?modificar!\n"); scanf( "d",amp; snum); for(i=0;ilt;m;i) if(snum==stu[i].num)/*Recuperar si hay información para modificar en el registro*/ break; printf( "¡encontrar?el?estudiante!¿puede?modificar!\n"); printf("nombre:"); printf("electiva:"); scanf("lf",amp;stu[i].elec);/*Ingrese los resultados del curso optativo*/ printf("experimento:"); i].expe ;!"); stu[i].sum=stu[i].elec stu[i].expe stu[i].requ; if((fp=fopen("data.txt", "wb "))== NULL) {?printf("can?not?open\n");return;} for(j=0;jlt;m;j)/*Escribe la información recién modificada en el archivo de disco especificado* / if( fwrite(amp;stu[j]?,LEN,1,fp)!=1)
{?printf(
"¿No puedo guardar!");?getch();?} fclose(fp) }
void?insert()/*función de inserción personalizada*/
{ ?ARCHIVO?*fp; int?i,j,k,m=0,snum; if((fp=fopen("data.txt","r "))==NULL) {?printf("no puede? ?open\n"); return;} while(!feof(fp))? if(fread(amp;stu[m],LEN,1,fp)==1)?m; if(m==0 ) ?{printf("¡no?registro!\n"); fclose(fp); return } printf("¿por favor?ingrese?posición?¿dónde?¿quiere?insertar!(ingrese?el?número) \n"); scanf("d",amp;snum);/*Ingrese la posición a insertar*/ for(i=0;ilt;m;i) if(snum==stu[i].num) break; for(j=m-1;jgt;i;j--)
stu[j 1]=stu[j];/*Mover una posición hacia atrás desde el último registro* / printf( "ahora?por favor?ingrese?la?nueva?información.\n"); printf("número: "); scanf("d",amp;stu[i 1].num); ;m;k)
if(stu[k].num==stu[i 1].num)
{
printf( "el? ¿Hay un número?existente, presione?¿cualquiera?para?continuar!");
getch();
fclose(fp);
return;
} printf("nombre:"); scanf("s",stu[i 1].nombre); printf("electiva:"); ].elec); printf("experimento:"); scanf("lf",amp; stu[i 1].expe); printf("requerido?curso:"); i 1].requ[i 1].sum=stu[i 1].elec stu[i 1].expe stu[i 1].requ; "wb"))==NULL) {?printf("¿no?abrir\n");return;} for(k=0;klt;=m;k) if(fwrite(amp;stu [k] ?, LEN, 1, fp)!=1)/*Escribe el registro modificado en el archivo del disco*/
{?printf("can?not?save!"); ?} fclose(fp); }
void?total()
{?FILE?*fp; int?m=0; txt","r "))==NULL) {?pr
intf("¿no?abrir\n"); return;} while(!feof(fp))? if(fread(amp;stu[m],LEN,1,fp)==1)? *El número de registros estadísticos es el número de estudiantes*/ if(m==0)?{printf("no?record!\n");fclose(fp);return;} printf("the?class?are ?d ?estudiantes!\n", m); /*Emite el número contado*/ fclose(fp); }