Sistema de gestión del desempeño estudiantil (lenguaje C)
#includelt;stdio.hgt;
#includelt;stdlib.hgt;
#includelt;string.hgt;
# includelt; windows.hgt;
#define NUM_SUBJECT 4
typedef struct zl
{
char no[5]; Número de estudiante*/
char nombre[6]; /*Nombre*/
int puntuación[NUM_SUBJECT] /*Puntuaciones de cada materia*/
float total; /*Puntuación total*/
promedio flotante /*Puntuación promedio*/
int orden;
int REC_NUM=0; /*Número de expedientes estudiantiles*/
char*subject[]={"Matemáticas", "Computación", "Física", "Ingeniería eléctrica" } ;
char*menu[]={"***************MENU******************",
p>"1. Ingresar nuevo registro",
"2. Mostrar registro",
"3. Buscar registro",
"4 . Modificar registro",
"5. Eliminar un registro a la lista",
"6. Agregar un registro a la lista",
"7. Ordenar para crear un archivo nuevo",
"8. Guardar el archivo",
"9. Cargar el archivo",
"10. Salir"};
registros de ESTUDIANTE[10];
void newRec();
void showTable();
void showTable2 (Iint);
void display();
void searchRec();
void modificarRec();
void deleteRec( );
p>
void addRec();
void orderRec();
void sortRec();
void saveRec();
void loadRec();
void copyRec(ESTUDIANTE*, ESTUDIANTE*);
void quit();
int menu_select();
int findRec(char*, int, int
void main()
{
<); p>sistema("cls");
para(;;)
{
cambiar(menu_select())
{
caso 1: newRec(); break;
caso 2: display();
caso 3: searchRec(); 4: modificarRec(); romper;
caso 5: borrarRec();
caso 6: agregarRec(); sortRec(); romper;
caso 8: saveRec(); romper;
caso 9: loadRec(); romper );
}
}
}
int menu_select()
{
char s[3];
int c, i;
for(i=0; ilt; 11; i )
{
printf("s", menú[i]);
}
ventana(1, 1, 80, 25);
{
printf(" Ingrese su elección(1-10): ";
scanf("s",
);c=atoi(s);
} while(clt;0||cgt;11);
return c;
} p>
void showTable1()
{
system("cls");
printf("********* *** ********INFORMACIÓN DEL ESTUDIANTE******************");
printf("D?D?D?D? D?D ?D?D?D?D\n");
printf("|Rec | No | Nombre | Computadora | Física | Inglés | total | Promedio | Orden\n");
printf("?¨¤?¨¤?¨¤?¨¤?¨¤?¨¤?¨¤?¨¨\n");
}
void showTable2(int n)
{
if(n==0)n=1;
if(REC_NUM==0)n =-1 ;
printf("?\n");
}
void quit()
{
char str[5];
printf("¿Guardar registros?(S/N)");
scanf("s", str
if(str[0]=='Y'||str[0]=='y')
saveRec();
> salir(0);
}
void newRec()
{
int i, j, suma;
system("cls");
printf("Ingrese REC_NUM: ");
scanf("d",amp; REC_NUM); >
for(i=0; ilt; REC_NUM; i )
{
system("cls");
suma=0;
for(j=0;jlt;NUM_SUBJECT;j);
{
scanf("d",amp;records[i].score[j ]);
suma=suma registros[i].puntuación[j]
}
registros[i].total=suma
registros[i].average=registros[i].total/NUM_SUBJECT
registros[i].order=0
}
}
visualización nula()
{
int i=0
showTable1(); > for(i=0;ilt;REC_NUM;i)
{
printf("|2d |4s |6s?4d | 4d | 4d | 5.1f | 5.1f | 2d \n", i 1, registros[i].no, registros[i].nombre, registros[i].puntuación[0], registros[i].puntuación[1], registros[i].puntuación[2 ], registros[i].puntuación[3], registros[i].total, registros[i].promedio, registros[i].orden
}
showTable2); (i);
printf("¡Presione cualquier tecla para regresar!"); saveRec()
{
ARCHIVO*fp1, *fp2;
if((fp1=fopen("d:\\cjt\\tc\\ lianxiti\\keshe\\keshe.dat", "wb"))==NULL)
{
printf("¡No se puede abrir este archivo!");
salir(1);
}
if((fp2=fopen("d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat ", "wb"))==NULL)
{
printf("¡No se puede abrir este archivo!");
exit(1);
}
printf("\nGuardando archivo......\n");
fwrite(amp; REC_NUM, tamaño de
(REC_NUM), 1, fp2);
fwrite(registros, tamaño de(ESTUDIANTE), REC_NUM, fp1);
fclose(fp1); >
printf("n\¡Guardado exitoso!!\n"); retraso(1000);
printf("\n¡Presione cualquier tecla para regresar!");
getch();
}
void loadRec()
{
ARCHIVO*fp1, *fp2;
if((fp1=fopen("d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat", "rb"))==NULL)
{ p>
printf("¡No se puede abrir este archivo!");
exit(1);
}
if((fp2=fopen(); "d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat","rb"))==NULL)
{
printf("No se puede ¡abre este archivo!");
exit(1);
}
system("cls");
printf( "\nCargando archivo....\n");
fread(amp; REC_NUM, sizeof(REC_NUM), 1, fp2;
fread(records, sizeof( ESTUDIANTE); ), REC_NUM, fp1);
fclose(fp1); fclose(fp2);
demora(2000);
printf("\nTienes éxito leer fecha del archivo!!!\n");
printf("\presione cualquier tecla para regresar!");
getch();
}
void searchRec()
{
char str[20];
int i;
system("cls");
printf("Ingrese el número que desea obtener:");
scanf("s", str);
i=findRec(str, 1, 0);
if(i!=-1)
{
printf("|2d | 4s | 6s | 4d | 4d | 4d | 5.1f | 2d \n", registros[i].no, registros[i]. [i].puntuación[1], registros[i].puntuación[2], registros[i].puntuación[3], registros[i].total, registros[i].promedio, registros[i].orden) ;
mostrar
Table2(0);
}
else printf("¡No se encuentra!\n");
printf("¡Presione cualquier tecla para regresar!") ;
getch();
}
void deleteRec()
{
int i, j ;
char str[20];
system("cls");
printf("Ingrese el número que desea eliminar:");
scanf("S", str);
i=findRec(str, 1, 0
for(j=i; jlt; REC_NUM); ;j )
registros[j]=registros[j 1];
REC_NUM--;
saveRec();
}
void copyRec(ESTUDIANTE*src, ESTUDIANTE*dest)
{
int i;
strcpy(dest-gt; no, src-gt; no);
strcpy(dest-gt; nombre, src-gt; nombre
for(i=0; ilt; NUM_SUBJECT; i )
destino-gt; puntuación[i]=src-gt; puntuación[i];
destino-gt; > dest-gt; promedio=src-gt; promedio;
dest-gt; orden=src-gt;
}
void orderRec( )
{
int i;
registros[0].order=1
for(i=1; ilt; REC_NUM; i )
if(registros[i].total==registros[i-1].total)
registros[i].order=registros[i-1] .order;
else
registros[i].order=i 1;
}
void sortRec()
{
int i, j, bandera;
ESTUDIANTE t
sistema("cls"); printf("\nclasificar archivo\n");
for(i=0; ilt; REC_NUM; i )
{
flag=0;
for(j=REC_NUM-1;jgt;i;j--)
if(records[j].totalgt;records[j-1].total)
{
copiarRec(amp; registros[j],amp;t);
copiarRec(amp;reco
rds[j-1],amp;records[j]);
copyRec(amp;t,amp;records[j-1]);
flag=1;
}
if(!flag) break
}
orderRec()
retraso(2000);
printf("\nclasificación exitosa\n");
saveRec()
}
int findRec(char); *destino, int tarType, int de)
{
int i
para (i=de; ilt; REC_NUM; i )
{
if((tarType==1amp; amp; strcmp(destino, registros[i].no)==0)
||tarType==2amp; amp;strcmp(destino, registros[i].nombre)==0)
return(i);
}
return(-1);
}
void modificarRec()
{
int i, j, suma
char no; [20], str[8];
system("cls");
printf("Ingrese el número que desea modificar: "); p> scanf("s", no);
i=findRec(no, 1, 0
showTable1(); | 2d | 4s | 6s |4d |4d | 4d | 4d | 5.1f|2d |\n",i 1,registros[i].no,registros[i].nombre [0], registros[i].puntuación[1], registros[i].puntuación[2], registros[i].puntuación[3], registros[i].total, registros[i].promedio, registros[ i].order);
showTable2(0);
printf("¿Quieres modificar este estudiante(Y/N):");
scanf("s", str);
if(str[0]=='y'||str[0]=='Y')
{ p>
printf("ingrese número:");scanf("s", registros[i].no);
printf("ingrese nombre:");scanf("s", registros[i].nombre);
suma=0;
for(j=0;jlt;NUM_SUBJECT;j)
{
printf("s: ", asunto[j]);
scanf(" d",amp; registros[i].score[j]);
suma=suma registros[i].score[j];
}
registros[i].total=suma;
registros[i].average=registros[i].total/NUM_SUBJECT;
registros[i].order=0;
}
printf("¡Presione cualquier tecla para regresar!";
getch(); p>void addRec()
{
int i, j, suma=0
char no[20], str[8]; p> p>
for(;;)
{
system("cls");
printf("Ingrese el número que desea para agregar : ");
scanf("s", str);
i=findRec(str, 1, 0);
if(i == -1)break;
else printf("¡Este número existe!\n"); >
strcpy(registros[REC_NUM].no, str);
printf("ingrese nombre:"); scanf("s", registros[REC_NUM].nombre);
for(j=0;jlt;NUM_SUBJECT;j)
{
printf("s: ", asunto[j]);
scanf( "d", & registros[REC_NUM].score[j]);
suma=suma registros[REC_NUM].score[j];
}
registros[REC_NUM].total=sum;
registros[REC_NUM].average=registros[REC_NUM].total/NUM_SUBJECT;
registros[REC_NUM].order=0
REC_NUM
guardarRec();