Programación en lenguaje C: ¡sistema de consulta de puntuación de estudiantes! ¡urgente! ! !
Esta es una clase que hice yo mismo. Puedes cambiarla según tus propios requisitos. No es difícil y es similar a la tuya.
#include
#include
#include
#include
#define N 10
/****Definir estructura*****/
typedef struct Students /*marcados como estudiantes*/
{
char num[10]; /*Número de estudiante*/
char nombre[10]; /*Nombre del estudiante*/
int edad; */
char sex[10]; /*Género*/
float cyy; /*Puntuación del lenguaje C*/
computadora flotante; Puntuación*/
float inglés; /*Puntuación en inglés*/
float pj /*Puntuación media*/
}STU;
p >STU temp;
void sort(STU estudiantes[],int n); //Ordenar
void save(STU estudiantes[],int n);/ / Exportar
int Locate(STU Students[],int n);//Consulta
/*--------------Mostrar menú- - ------------------*/
char displaymenu()
{
char k ; p>
system("cls");
printf("Gestión del desempeño estudiantil\n");
printf("-------- -- -------------------------menú de aplicaciones--------------------- -- --------------\n");
printf(" 1 Ingrese las calificaciones de los estudiantes\n\n");
printf (" 2 Generar puntajes de los estudiantes\n\n");
printf(" 3 Consultar puntajes de los estudiantes\n\n");
printf(" 4 Modificar puntajes de los estudiantes\n \n ");
printf(" 5 Ver clasificación de puntuación\n\n");
printf(" 6 Ver estadísticas de puntuación\n\n");
imprimirf("
7 Guardar datos\n\n");
printf(" 8 Leer datos\n\n");
printf(" 9 Salir del sistema\n\n" );
printf("Seleccione la operación que desea realizar:");
k=getchar();
return k;
}
/****Definir la función de salida*****/
void printheader() /*Formatear el encabezado de salida*/
{
printf("\n\n************************Sistema de gestión de puntuación del estudiante***** * ************************\n\n\n");
printf("| ID de estudiante | Nombre | Edad | Género | Puntuación en lenguaje C | Puntuación en ordenador | Puntuación media | \n");
}
void printdata(STU pp) /*Formatear los datos en la salida tabla* /
{
STU* p;
p=&pp;
printf("| %-5s| %- 5s | %-4d| %-4s| %-6.0f| %-6.0f| %-6.0f|\n",p->núm,p->nombre,p->edad,p -> sex,p->cyy,p->computer,p->english,p->pj);
}
/*****Agregar información del estudiante* ** **/
int add(estudiantes STU[] ,int *n)
{
int i=0;
system ("cls");
printf(" \n");
printf(" Ingrese la información del estudiante\n");
printf (" Para salir, ingrese: 0 \n");
printf("Ingrese el ID del estudiante:\n ");
scanf("%s",estudiantes [ i].num);
while(strcmp(students[i].num,"0") )//Finalizar la entrada cuando el número de estudiante ingresado sea 0
{ p>
printf("Ingrese el nombre del estudiante:\n ");
scanf("%s",estudiantes[i].nombre);
printf (" ****************\n\n\n");
printf("Ingrese la edad del estudiante:\n ");
scanf("%d",&estudiantes[i].edad);
printf("******************\n\n\ n" );
printf("Por favor ingrese el género del estudiante:\n");
scanf("%s",estudiantes[i].sexo);
printf("***********
*****\n\n\n");
printf("Ingrese la puntuación en lenguaje C:\n ");
scanf("%f",&students [i].cyy);
printf("****************\n\n\n");
printf ("Ingrese las puntuaciones de la computadora:\n ");
scanf("%f",&students[i].computer);
printf("****** **********\n\n\n");
printf("Por favor, introduce tu puntuación en inglés:\n ");
scanf(" % f",&estudiantes[i].inglés);
printf("******************\n\n\n");
estudiantes[i].pj=(estudiantes[i].cyy+estudiantes[i].computadora+estudiantes[i].inglés)/3;
printf("Estudiantes' puntuación media: % -8.0f\n",estudiantes[i].pj);
i++;
printf("************ **** \n\n\n");
printf("Por favor ingrese el número de estudiante:\n ");
scanf("%s",estudiantes[ i].num );
}
*n=i;
guardar(estudiantes,i);
devolver i;
}
/*****Función de consulta de información del estudiante*****/
int Locate(STU Students[],int n)
{
int k,m=-1;
char num[10],nombre[20];
int i= 0;
p>system("cls");
printf("Ingrese: 0 para salir \n");
printf("Por favor elija cómo realizar la consulta: 1 ). Consulta por número de estudiante 2). Consulta por nombre de estudiante\n");
scanf("%d",&k);
if( k==1)
{
printf("Ingrese el número de estudiante que desea consultar:\n");
scanf("%s ",num);
while(i { if(strcmp(estudiantes[i].num,num)==0) /*Si se encuentra el estudiante No.*/ { printf(">>Número de estudiante: %s\n*Nombre del estudiante: %s\n*Edad del estudiante: %d\n*Sexo del estudiante:%s\n>Puntuación en lenguaje C:%-8.0f\n>Puntuación en computadora:%-8.0f\n>>Puntuación en inglés:%-8.0f\n>>Puntuación promedio:% -8.0f\n", estudiantes[i].num,estudiantes[i].nombre,estudiantes[i].edad,estudiantes[i].sexo,estudiantes[i].cyy,estudiantes[i].computadora,estudiantes [i].inglés,estudiantes [i].pj); m=i; getchar(); romper; } i++; /p> if(i>=n) printf("No se encontró información del estudiante\n"); getchar(); } else if(k==2) { printf("Ingrese el nombre del estudiante que desea consultar:\n") scanf("%s",nombre); while(i { if(strcmp( estudiantes[ i].nombre,nombre)==0) /*Si se encuentra el nombre*/ { printf("Número de estudiante: %s\nNombre del estudiante: %s\nEdad del estudiante: %d \ nSexo del estudiante: %s\nPuntuación de lenguaje C del estudiante:%-8.0f\nPuntuación de computadora:%-8.0f\nPuntuación de inglés:%-8.0f\nPuntuación promedio:%-8.0f\n",estudiantes[ i].num ,estudiantes[i].nombre,estudiantes[i].edad,estudiantes[i].sexo,estudiantes[i].cyy,estudiantes[i].computadora,estudiantes[i].inglés,estudiantes[i ].pj) ; m=i; getchar(); romper; } i++; } if(i>=n) printf("No se encontró información del estudiante\n"); } p> return m;/*Devuelve una raíz m para facilitar la modificación de la información del estudiante*/ getchar(); } /* ****Función de visualización*****/ entrada nula (estudiantes STU[],int n) { int i ; p> system("cls"); //Borrar la pantalla if(n==0) /*Indica que no hay ningún registro de información del estudiante*/ { printf("\n¡No hay registro de estudiante!\n"); } printf("\n\n"); printheader(); /*Muestra el encabezado de la tabla*/ i=0; while(i { printdata(estudiantes[i]); i++ } getchar( ); } /*****Modificar subrutina*****/ void Modificar(Estudiantes STU[],int n) { int i; if(n<=0) { sistema (" cls"); printf(" \nIngrese: 0 para salir \n"); printf("\n---------- no encontrado !----------\n"); getchar(); return ; } system("cls"); printf("Modificar información del estudiante"); input(estudiantes,n); i=Ubicar(estudiantes, n); /*Consulta el elemento de la matriz y devuelve el valor del subíndice*/ if(i!=-1) /*Si i!=-1, indica que se ha encontrado el elemento de la matriz* / { printf("Ingrese la información del nuevo estudiante: \n"); printf("ID del estudiante: "); scanf("%s",estudiantes[i].num); printf(" Nombre: "); scanf("%s",estudiantes[i ].nombre); printf("Edad: "); scanf("%d",&estudiantes[i].edad); printf (" Género: "); scanf("%s",estudiantes[i].sexo); printf(" Lenguaje C: "); scanf("%f",&estudiantes[i].cyy); printf(" Inglés: "); scanf("%f",&estudiantes[i] .inglés); printf(" Computadora: "); scanf("%f",&estudiantes[i].computadora); estudiantes[ i].pj=(estudiantes[i].cyy+estudiantes[i].inglés+estudiantes[i].computadora)/3; printf("Calificación promedio: %-9.0f\n" ,estudiantes[i].pj); save(estudiantes,n); printf("\n-------------Modificación exitosa !-------------\n"); } else printf("¡no encontrado!\n "); getchar(); } /*****Subrutina de clasificación de puntuación del estudiante*****/ void sort(Estudiantes STU[],int n) { int i,j,a,b,c,d,e,f,k; float p; printf("\nIngrese: 0 para salir"); printf("Selección del método de clasificación de puntajes: 1. Presione lenguaje C 2 Presione Inglés 3. Presione promedio\n "); scanf("%d",&k); if(k==1) /*Usar método de selección para C. clasificación de idiomas*/ { for(i=0; i for(j=0;j { if(estudiantes[i].inglés { temp=estudiantes[i]; estudiantes[i]=estudiantes[j+1]; estudiantes[j+1]=temp; } } } else if(k==2)/*El inglés usa el método de burbujeo*/ { p > para(a=0; a { c=a; para(b=a + 1; b si(estudiantes[b].cyy>estudiantes[c].cyy) c=b; si (c!=a) { temp=estudiantes[a]; estudiantes[a]=estudiantes[c]; estudiantes[c]=temp; } } } if(k==3) /* El La calificación promedio se calcula usando el método de inserción*/ { for(d=1;d { p =estudiantes[d].pj; for(e=0;e if(estudiantes[e].pj romper; if(e==d) continuar for(f=d;f>e;f-- ) estudiantes[f]=estudiantes[f-1]; estudiantes[e]=temp } } input(estudiantes,n); /*Mostrar todos los registros ordenados*/ save(estudiantes,n); printf("\n Clasificación completada \n"); } /*****Subrutina para contar el número de estudiantes con puntajes en cada nivel*****/ void Tongji(estudiantes de STU[],int n) { int count6085=0,count85=0,count60=0; int i=0; system("cls"); printf(" \nIngrese: 0 para salir \n"); input(estudiantes,n); i=0; mientras(i { if(estudiantes[ i].pj>85) {count85++;i=i+1;continue;} /*Puntuación promedio=>85*/ if(estudiantes[i].pj>=60&&estudiantes[i]. pj<=85) {count6085++;i=i+1;continue;} /*60 if(estudiantes[i].pj<60) {count6+;i= i+1;continue;} /*Puntuación promedio<60*/ } printf("\n************resultados estadísticos* ***********\n\n"); printf("Número de personas con puntuaciones medias superiores a 85:%d \n",count85); printf(" \n"); printf("Número de personas con puntuaciones promedio entre 65 y 80: %d \n", count6085); printf (" \n"); printf("Número de personas cuyo puntaje promedio es inferior a 60 puntos: %d \n",count60); printf(" \n ") ; printf("\n\n************estadísticas finales************"); getchar() ; } /*****Exportar o guardar datos*****/ void save(estudiantes de STU [],int n) { ARCHIVO* fp; int i=0; fp=fopen("estudiantes ","wb+") ;/*Abrir y crear un archivo binario en modo lectura-escritura*/ if(fp==NULL) /*Error al abrir el archivo*/ { printf("\n*******Error al abrir el archivo!*******\n"); return ; } for(i=0;i { if(fwrite(&students[i],sizeof( STU),1,fp)==1 )/*Escribe un registro o un elemento de matriz de estructura en el archivo cada vez*/ { continuar; } más { descanso; } } if(i>0) { getchar(); printf("\n\n****Exportar %d información del estudiante* \n",i); getchar(); } más > { system("cls"); printf("**No se exporta información*\n"); getchar() ; } fclose(fp); /*Cerrar este archivo*/ } /*****Importar Datos*****/ void Read(Estudiantes STU[],int * n) { ARCHIVO* fp; int i=0; fp=fopen("students","rb");/*Abrir un archivo binario existente en modo de solo lectura*/ if ( fp==NULL) /*Error al abrir el archivo*/ { printf("\n********Error al abrir el archivo!***** ***\n"); salir(0); } for(i=0;i { if(fread(&students[i],sizeof(STU),1,fp)==1)/*Leer un registro o un elemento de matriz de estructura en el archivo cada vez* / continuar; más romper; } *n=i; if(i>0) { printf("\n\n****************** Importar:%d Información del estudiante************\n",i); getchar(); } else { system("cls"); printf("************¡No se importó información!******* *** **\n"); getchar(); } getchar(); fclose(fp ); / *Cerrar este archivo*/ } /*****función principal*****/ void main()<); /p> { Estudiantes de STU[N]; int n; char s1[3],s2[3]={" 1"} ; int i,k; printf("\n\n"); printf("******* ***** ********************************************** ***\n"); printf("^ printf("^ printf("^ printf("^ ^\n"); printf("****************************** ****************************\n"); printf("\n\n"); for(i=0;i<3;i++) { printf("\nPor favor, introduzca la contraseña:"); obtiene(s1); if(strcmp(s1,s2)==0) descanso; más printf ("\n>Contraseña incorrecta, vuelva a ingresarla"); } if(i>2) { printf("\nHa ingresado incorrectamente tres veces seguidas, ¡el sistema saldrá!\n"); exit(0); } p> más { mientras(1) { k=displaymenu(); cambiar(k) { caso '1': agregar(estudiantes,&n); caso '2': leer( estudiantes,&n);entrada (estudiantes,n) ;descanso; caso '3' : Leer(estudiantes,&n);Localizar(estudiantes,n);descanso caso; '4' : Leer( estudiantes,&n);Modificar(estudiantes,n);;descanso case '5' : Leer(estudiantes,&n);sort(estudiantes,n);descanso; caso '6' : Leer(estudiantes,&n);Tongji(estudiantes,n); caso '7' : guardar(estudiantes,n) ;descanso; p> caso '8' : Leer(estudiantes,&n);descanso; caso '9' : sistema("cls"); printf("\n ****** ****Gracias por su uso**********\n");exit(0);break; predeterminado: printf("\ n\nError de entrada, ingrese Debe ser un número entre 0 y 9. Vuelva a ingresar\n");getchar();getchar(); } } p> } }