Código fuente del sistema de selección de cursos experimental
# incluir & ltstdlib.h & gt
# incluir & ltconio.h & gt
# incluir & ltdos. h & gt
# include & ltstring.h & gt
#define LEN sizeof(estructura estudiante)
#Formato de definición" %-8d %-15s %-12.1lf %-1lf %-1lf %-12.1lf %-1lf \ n "
#Definir datos stu[i]. número,stu[i]. Nombre, Stu[yo]. elec,stu[i]. expe,stu[i]. Zona Caliente, Stu[i]. Suma
Estructura estudiante/*Estructura que define el desempeño del estudiante*/
{ int num/*Student ID */
char name[15];/* Nombre*/
Doble selección; /*Curso electivo*/
Doble tarifa; /*Clase experimental*/
Doble zona caliente; */
Doble suma; /*Puntuación total*/
};
Estructura estudiante estu[50] /*Definir matriz de estructura*/ p>
void in ()/*Ingresar información de calificaciones 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 modificar();/*Modificar información de puntuación del estudiante*/
void menu(); /*menú principal*/
void insert(); /*insertar información del estudiante*/
void total();/* Calcular el total número de personas*/
void search();/*Buscar información del estudiante*/
Void main()/* función principal*/
{ int n;
menu();
scanf("%d ", & ampn); /*Ingrese el número de la función seleccionada*/
Cuando ( sustantivo)
{cambiar (n)
{ caso 1:en(); descanso;
Caso 2: búsqueda() descanso;
p >
Caso tres: del(); break;
Caso cuatro: modificar(); break;
Caso cinco: insert();
Caso 6: orden(); romper;
Caso 7: total(); romper
; > Predeterminado: break
}
getch();
menu() /*Mostrar la interfaz del menú nuevamente después de ejecutar esta función*/
scanf("%d ", & ampn);
}
}
Nulo in()/*Ingrese la información del estudiante*/
{ int i, m = 0; /*m es el número de registros*/
char ch[2];
FILE * fp/*define puntero de archivo* /
If ((FP = fopen ("data.
txt "," a+")= = null)/*Abrir el archivo especificado*/
{
printf("No se puede abrir\n ");
Regresar;
}
Y (!feof(fp))
{
if(fread(& amp;stu [ m], LEN, 1, fp)==1)
m++; /*Calcular el número de registros actuales*/
}
fclose(FP );
If (m==0)
printf("¡Sin registro!\n ");
Otro
{
System("cls");
show() /*Llama a la función show para mostrar la información original*/
}
if((fp=fopen("data.txt "," wb"))==NULL)
{
printf("No se puede abrir\n");
{
printf("no se puede abrir\n");
p>
return;
}
for(I = 0;i<m;i++)
fwrite(& stu[i] , LEN, 1, FP /*Escribe información en el archivo de disco especificado*/
printf("Por favor ingrese (s/n):");
scanf( "%s ", ch);
While (strcmp (ch, " y ") == 0 || strcmp (ch, " y))== 0)/* Determinar si se ingresa nueva información* /
{
printf(" número:" );
scanf("%d", & Stu[m].num);/ *Ingrese el ID del estudiante */
for(I = 0;i<m;i++)
if (Stu[i].num==stu[m].Number)
{
printf("El número ya existe, presione cualquier botón para ¡continuar!");
getch();
fclose(FP );
Regresar;
}
printf(" nombre:");
scanf("%s ", stu[ m].Nombre);/*Ingrese el nombre del estudiante*/
printf(" electiva :");
scanf("%lf ", & ampStu[m]. elec); /*Ingrese la puntuación del curso optativo*/
printf("Experimento: ");
scanf("%lf ", & Stu[m]. expe);/*Ingrese los resultados de la clase experimental*/
printf("Curso requerido:");
scanf("%lf ", & ampStu[m]. requ);/*Ingrese los puntos del curso requeridos*/
Stu[m]. suma=stu[m]. Electrónica+Estudiante[m]. expe+stu. Canción caliente /*Calcular puntuación total*/
if(fwrite(&stu[m], LEN, 1, fp)!=1)/*Escribe la información recién ingresada en el archivo de disco especificado. */
{
printf("¡No se puede guardar!");
getch();
}
Otros
{
printf("¡%s se ha guardado!\n ", Stu[m].
nombre);
m++;
}
printf("¿Continuar? (s/n):); /*Preguntar si desea continuar*/ p >
scanf("%s ", ch);
}
fclose(FP);
printf("¡Está bien!\ n " ) ;
}
Visualización no válida()
{ ARCHIVO * fp
int i, m = 0;
fp=fopen("data.txt","Rb");
Y (!feof(fp))
{
if( fread (& stu[m],LEN,1,fp)==1)
m++;
}
fclose(FP);
m++; p>
printf("número nombre experimento electivo suma obligatoria \ t \ n "
for(I = 0;i<m;i++)
>{ p>
printf(formato, datos);/*Imprimir información en el formato especificado*/
}
}
Nulo menu()/* Función personalizada para implementar la función de menú*/
{
System ("cls");
printf(" \ n \ n \ n \ n ") ;
printf(" \ t \ t |-ESTUDIANTE-| \ n ");
printf("\t\t|\t 0. salir | \ n ") ;
printf("\t\t|\t 1. Registro de entrada | \ n ");
printf("\t\t|\t 2. Buscar registro | \ n ");
printf("\t\t|\t 3. Eliminar registros | \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|\t 8.
mostrar | n ");
printf(" \ t \ t |-| \ n \ n ");
printf(" \ t \ t \ tselect(0 - 8):");
}
Voideorder ()/*Función de clasificación personalizada*/
{ FILE * fp
Estructura estudiante t;
int i=0,j=0,m=0;
if((fp=fopen("data.txt "," r+")= = NULL )
{
printf("¡No se puede abrir!\n ");
Regresar;
}
And(!feof(fp))
if(fread(& stu[m],LEN,1,fp)==1)
m++; p>fclose(FP);
If (m==0)
{
printf("¡Sin registro!\n ");
Regresar;
}
if((fp=fopen("data.txt "," wb"))==NULL) p>
{
printf("No se puede abrir\n ");
return;}
for(I = 0; i<m -1; i++)
for(j = I+1; j & ltm; J++)/*comparación e intercambio de puntuaciones de doble ciclo*/
if (Stu[i] .sum & ltStu[j]. suma)
{ t = stu[I]; stu[I]= stu[j]; stu[j]= t;}
if((fp=fopen(" data.txt "," wb"))==NULL)
{ printf("No se puede abrir\n"); return;}
for(I = 0;i<m; I++)/*Reescribe el contenido reorganizado en el archivo de disco especificado*/
if(fwrite(&stu[i], LEN, 1, fp)! =1)
{
printf("¡%s no se puede guardar!\n ");
getch();
}
fclose( FP);
printf("Guardar correctamente\ n ");
}
Void del()/*función de eliminación personalizada*/
{ ARCHIVO * fp
int snum, I, j, m = 0
char ch[2];
if((fp=; fopen("data.txt "," r+")== NULL)
{ printf("No se puede abrir\n" }
Y (! feof(FP))if(fread(& stu[m],LEN,1,FP)== 1)m++;
fclose(FP);
if ( m= =0)
{
printf("¡Sin registro! \ n ");
Devolver
} p>
printf("Ingrese un número:");
scanf("%d ", &snum);
for(I = 0;I<m; i++) p>
if(snum==stu[i]).
Número)
Pausa;
printf("Estudiante encontrado, ¿eliminar? (s/n)");
scanf("%s ", ch) ;
If (strcmp (ch, " y") == 0 || strcmp (ch, " y)) = = 0)/*Determinar si se debe eliminar*/
for (j = I; j & ltm; j++)
stu[j]= stu[j+1] /*Mover el último registro a la posición del registro anterior*/
;m-;/*El número total de registros menos 1*/
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("No se puede abrir\n "); return }
for(j = 0; j & ltm; J++)/*Reescribe los registros modificados en el archivo de disco especificado*/
if(fwrite(&stu[j],LEN,1,fp)!=1)
{ printf("¡No se puede guardar!\n ");
getch();}
fclose(FP);
printf("¡Eliminación exitosa!\n ");
}
Búsqueda nula()/*función de búsqueda personalizada*/
{ FILE * fp
int snum, I, m = 0;
char ch [2];
if((fp=fopen("data.txt "," Rb ")== NULL)
{ printf("No se puede abrir\n "); return;}
Y (!feof(FP))if(fread(&stu[m],LEN,1,FP)== 1)m++;
fclose( FP);
if(m==0) {printf("¡Sin registro!\n "); return;}
printf("Por favor, ingrese un número: ");
scanf("%d ",&snum);
for(I = 0;i<m;i++)
If(snum ==stu[i] ).
num)/*Compruebe si el número de estudiante ingresado está en el registro*/
{ printf("¿Estudiante encontrado, mostrar? (y/n)"); % s ", ch);
if(strcmp(ch," Y")==0||strcmp(ch," Y))== = 0)
{ p>
printf("número nombre experimento electivo suma obligatoria \ t \ n ");
printf(formato, datos /*Envía los resultados encontrados en el formato especificado*/<); /p>
Descanso;
}
}
if(i==m) printf("¡Estudiante no encontrado!\n "); /* No se encontró información*/
}
Modificación nula()/*Función de modificación personalizada*/
{ FILE * fp
int i, j, m=0, snum
if((fp=fopen("data.txt "," r+")== NULL)
{ printf(" No se puede abrir\n "); return;}
while(!feof(fp))
if(fread(& stu[m], LEN, 1, FP )= = 1)m++;
if(m==0) {printf("¡Sin registro!\n ");
fclose(FP);
Return;
}
show();
printf("¡Ingrese el número de estudiante que desea modificar!\n ");
printf("Número de modificación:");
scanf("%d ",&snum);
for(I = 0;i<m;i++)
If(snum==stu[i]).num)/*Recuperar si hay información que deba modificarse*/
Break;
printf ("Estudiante encontrado! ¡Se puede modificar! \ n ");
printf(" nombre:");
scanf("%s ", stu[i].nombre); /* Ingrese un nombre*/
printf("elective:");
scanf("%lf", & Stu[i].elec);/*Ingrese puntajes para cursos electivos */
printf("Experimento:");
scanf("%lf", & Stu[I]. expe);/*Ingrese los resultados de la clase experimental*/
printf("Curso requerido:");
scanf("%lf ", & ampStu[I]. requ);/*Ingrese los puntajes requeridos del curso*/
printf("¡Modificación exitosa!");
Stu[I]. suma=stu[i]. elec+stu[i]. expe+stu[yo].
Canción popular;
if((fp=fopen("data.txt "," wb"))==NULL)
{ printf("No se puede abrir\n" ); Return;}
for(j = 0;j & ltm;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 se puede guardar!"); getch();}
fclose(FP) ;
}
Inserción nula()/*función de inserción personalizada*/
{ ARCHIVO * fp
int i, j, k, m=0, snum
if((fp=fopen("data.txt "," r+")== NULL)
{ printf("No se puede abrir \n ") ; return;}
while(!feof(fp))
if(fread(& stu[m], LEN, 1, FP)== 1)m++; p>
if(m==0) {printf("¡Sin registro!\n ");
fclose(FP);
Return ;
}
printf("¡Ingrese la posición que desea insertar! (Ingrese un número)\ n ");
scanf("%d ", &snum);/ *Ingrese la posición a insertar*/
for(I = 0;i<m;i++)
if(snum==stu[i] número)
.break;
for(j = m-1;j>i;j-)
stu[j+1]= stu[ j]; del último registro*/
printf("Ingrese nueva información ahora.\n ");
printf(" número:"
scanf); ("%d ", & Stu[i+1].num);
for(k = 0; k & ltm; k++) p>
if(stu[k]. num==stu[i+1].Number)
{
printf("El número ya existe, presiona cualquier botón para continuar!" ");
getch();
fclose(FP);
Retorno;
}
printf(" nombre:");
scanf("%s ", stu[i+1]. nombre);
printf(" electivo:");
scanf("%lf ", & Stu[i+1].elec); printf("Experimento:");
scanf("%lf ", & Stu[i+1].expe);
printf("Curso requerido: ");
scanf("%lf ", & Stu[i+1].requ);
Stu[i+1]. suma=stu[i+1]. elec+stu[i+1]. expe+stu[i+1].
Canción popular;
if((fp=fopen("data.txt "," wb"))==NULL)
{ printf("No se puede abrir\n" ); return;}
for(k = 0;k & lt= m;k++)
if(fwrite(&stu[k],LEN,1,fp) ! = 1)/*Escribe el registro modificado en el archivo del disco*/
{ printf("¡No se puede guardar!"); getch();}
fclose(FP) ; p>
}
Total no válido()
{ ARCHIVO * fp
int m = 0;
if(( fp=fopen("data.txt "," r+")== NULL)
{ printf("No se puede abrir\n");}
Y (!feof (fp))
if(fread(& stu[m], LEN, 1, fp)==1)
m++;/*registro estadístico El número representa el número de estudiantes*/
if(m==0) {printf("¡Sin registro!\n "); fclose(FP);}
printf(" Hay % d estudiantes en la clase! \n", m); /*Datos estadísticos de salida*/
fclose(FP);
}