Sistema de gestión del desempeño de los estudiantes de diseño de cursos de lenguaje C
Gracias al cartel original
#include
#include
#define TAMAÑO 10 /* Definir el TAMAÑO constante para facilitar futuras modificaciones*/
struct Student /*Definir una matriz de estructura para almacenar la información del estudiante*/
{
int número; / *número de estudiante*/
nombre de char[20];/*nombre*/
puntuación flotante[3];/*puntuación*/
promedio flotante ;/*Puntuación promedio*/
}stu[SIZE];
void menu();/*Llamar a la función del menú*/
void write() ;/*Leer información*/
void save();/*Guardar función del archivo stud.dat*/
void open();/*Compruebe si es guardado correctamente*/
void inturn (struct Student c[]);/*Función utilizada para ordenar la información de los estudiantes por puntuación promedio*/
void save2();/*La información ordenada La información se almacena en el archivo studsort.dat*/
void read();/*Lee la información de los estudiantes de 2º 4 6 8 10 en el archivo studsort.dat*/
void main()
{
int Choice;/*Variable de elección del usuario*/
printf("********* *** ************************************************* **** *************************\n");
printf("* *\n");
printf ("* Hwadee &Gestión de archivos de puntuación de estudiantes& Hwadee *\n");
printf("* *\n");
printf(" ****** ********************************************** ******* *************************\n\n\n");
printf( "******** *************************●●Bienvenido●●************ *********** *************");
sistema("pausa");
mientras (1)
{
menu();/*Llame a la función de menú para formar la interfaz de operación*/
printf("Seleccione:\t ");
scanf("%d", &choice);
if ( elección == 0 )
{
sistema ("cls");
printf("\ n\n\t\t\t\tGracias
¡¡¡Uso!!!);
break;
}
switch(choice) /*Múltiples opciones para lograr diferentes funciones*/
{
caso 1:
escribir();
romper;
caso 2:
sistema ("cls");
save();
break;
caso 3:
system("pause") ;
system("cls");
open();
break;
caso 4:
system("cls");
printf("Información del estudiante antes de ordenar:\n");
open();
inturn( stu) ;
save2();
break;
caso 5:
system("cls");
read();
break;
predeterminado:
printf("\n¡No existe tal función!\nVuelva a ingresar\n ");
}
}
}
menú vacío()
{
printf ("\n1*****Ingrese la información del estudiante\t\t2*****Guarde la información en el archivo stud.dat\n");
printf("3 **** *Verifique el archivo data\t\t4***** Ordene la información del estudiante y guárdela en el archivo studsort.dat\n");
printf("5***** Lea el información del 2º 4 6 8 10º estudiante en el archivo studsort.dat\n");
printf("0*****Salir del sistema\n\n\n"); p>
}
/*********************************** ** ********************************\
Nombre de la función:
escribir
Descripción de la función:
Escritura completa de la información del estudiante
Parámetros de la función:
i stu
Valor de retorno:
Ninguno
Historial del módulo:
\******************** ************************************************* ***** **/
void write()
{
int i;/*count variable*/
stu[i]. promedio = 0;/*Inicializar el promedio de miembros de la estructura*/
printf("Ingrese la información del estudiante\n");
printf("Número de estudiante\tNombre \ tChino\tMatemáticas\tInglés\t\n");
for (i=0; i { scanf (" %d\t",&stu[i].number); if (stu[i].number == 0)/*Ingrese 0 cuando no se requiera información*/ p> romper; scanf("%s\t %f\t%f\t%f",&stu[i].nombre, &stu[i].puntuación[0], &stu[i].puntuación[1], &stu[i].puntuación[2]); stu[i].promedio = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/* Calcular nota media*/ } } /********************* * ************************************************* \ Nombre de la función: guardar Descripción de la función: Leer la información escrita en el archivo Parámetros de función: ARCHIVO *fp i Valor de retorno: Ninguno Historial del módulo: \ ************************************************** ** ************************/ void save() { ARCHIVO *fp ;/*Defina el puntero del archivo para leer datos del archivo*/ int i; if ((fp=fopen("stud.dat" ,"wb")) == NULL) { printf("no se puede abrir el archivo\n"); return; } for (i=0;i if (fwrite(&stu[i],sizeof(struct Student),1,fp) != 1) printf("error de escritura de archivo\n"); fclose(fp); printf("\n¡Información guardada exitosamente! ¡¡Felicitaciones!! \n\n" ); } /*************************** ***** *************************************\ Función nombre: abrir Descripción de la función: Se utiliza para verificar si los datos leídos en el archivo son correctos Parámetros de la función: ARCHIVO *cp i Valor de retorno: Ninguno Historial del módulo: \**** ****** ********************************************** ******* **********/ void open() { int i; ARCHIVO *cp ; cp = fopen ("stud.dat","rb"); printf("Información guardada en el archivo stud.dat:\ n\n"); printf("Número de estudiante\tNombre\tMatemáticas\tChino\tInglés\tPuntuación promedio\n\n"); for (i=0;i < TAMAÑO;i++) { fread(&stu[i],sizeof(struct estudiante),1,cp); printf("%d \ t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].n número, stu[i].nombre, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average ); } fclose (cp); } /***************** ***** ********************************************** ****** ***\ Nombre de la función: inturn Descripción de la función: Se utiliza para ordenar los elementos en la matriz de estructura Parámetros de función: en i,j,k estructura temporal del estudiante Valor de retorno: Ninguno Historial del módulo: \*************************** ********* *************************************/ void inturn(struct Student m[]) { int i,j,k;/*count variable*/ struct Student temp;/*el tipo de variable intermedia es el cuerpo de la estructura*/ for(i=0; i for (j=i +1; j { if( m[i].average < m[j].average ) { p> temp = m[i]; m[i] = m[j]; m[j] = temp; } } printf("\nInformación ordenada del estudiante:\n\n"); printf("Número de estudiante \tNombre\ tMatemáticas\tChino\tInglés\tPuntuación promedio\n"); for (i=0; i { printf("%d nombre%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i] .número , stu[i].nombre, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average ); p> }/*Salida de información del estudiante ordenada*/ } /****************** **** *********************************************** **\ Nombre de la función: guardar2 Descripción de la función: Leer la información ordenada del estudiante en otro archivo Medio Parámetros de función: ARCHIVO *mp i Valor de retorno: Ninguno Historial del módulo: \***************************************** ** ********************************/ void save2() { ARCHIVO *mp; int i; if ((mp=fopen("studsort. dat","wb"))==NULL) { printf("no se puede abrir el archivo\n"); return; } for (i=0;i if (fwrite(&stu[i], sizeof(struct Student), 1, mp) != 1) printf("error de escritura de archivo\n"); fclose(mp);/*Cerrar el archivo después de leer*/ } /****************************************** * *******************************\ Nombre de la función: leer p> Descripción de la función: Leer información de otro archivo Parámetros de la función: ARCHIVO *tp i Valor de retorno: Ninguno Historial del módulo: \*************** * ************************************************* ** *****/ void read() { int i=1; ARCHIVO *tp; p> tp = fopen ("studsort.dat", "rb" ); printf("La información de los estudiantes pares en el archivo studsort.dat es la siguiente:\ n\n"); printf("Número de estudiante\tNombre\tMatemáticas\tChino\tInglés\tPuntuación promedio\n\n"); for (i = 1;i { fseek(tp,i*sizeof(struct Student),0);/*fseek puede desplazar el comienzo del archivo según para que el usuario necesite Shift para leer los datos del archivo. k*sizeof(struct Student) significa mover el puntero de posición a k bytes en la posición actual*/ fread(&stu[ i],sizeof(struct Student),1,tp); /*Nota: Debes usar la función fseek para posicionarlo antes de poder leer los datos según tus necesidades, pero solo usa fseek funciona sin fread, p> simplemente imprime los datos en la pantalla sin leerlos del archivo. Este es un problema común*/ printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[ i ].número, stu[i].nombre, stu[i].puntuación[0], stu[i].puntuación[1], stu[i].puntuación[2], stu[i].promedio ); /p> } fclose (tp);/*Cerrar el archivo después de leer*/ }