Programación en lenguaje C: diseño de un sistema de gestión de dormitorios de estudiantes
#include
#include
#define LEN sizeof(struct Student)
#define N 35
#include
#define NULL 0
int n=0
char m[8] ={'0','1','2','3','4','5','6','7'};
int i;char c[10] ;char d[10];
char fname[20], fname0[20],fname6[20]={"shanchu"};
estructura estudiante
{núm largo;
nombre de char[10];
int eng;
int math;
int comp;
int ave;
int todo;
}p;
void shuru()
{ARCHIVO * fp;
printf("n\n\n\t Ingrese el nombre del archivo para almacenar los datos del estudiante: ");
scanf("% s",fname);< / p>
fp=fopen(fname, "w");
printf("/n\t Utilice la tecla espacio (Tab) para separar los datos de entrada/n/t Ingrese cada uno one Para las cartas de los estudiantes, presione la tecla Enter (Enter)/n");
printf("/n\n/t termina de ingresar los datos del estudiante.
Por favor ingrese el número de estudiante de un estudiante como 0 y presione enter \n");
printf("\t número de estudiante Nombre Inglés Matemáticas Computadora \n");
do{ printf( "\t");
scanf("%ld",&p.num);
if(p.num==0) break;
scanf("\t%s\t%d\t%dt%d",p.name,&p.eng,&p.math,&p.comp);
p.all=(p. eng+p.math+p.comp);
p.ave=( p.all/3);
fwrite(&p,LEN,1,fp); p p>
n++;
}mientras(1);
fclose(fp);
}
vacío chazhao ( )
{char fname1[20];
ARCHIVO *fp;
do{printf("/n\n\t Por favor ingrese los datos del estudiante desea encontrar el nombre del archivo: ");
scanf("%s",fname1);
if(strcmp(fname1,fname)==0){fp = fopen(fname, "r");break;}
else printf("/tEl archivo que ingresaste no existe\n");} while(1);
long número; p>
do
{ printf("/tPor favor ingrese el número de estudiante del estudiante que desea buscar presionando la tecla Atrás (Entrar):");
scanf( "%ld",&number); rebobinar(fp);
for(i=0;i { fread(&p,LEN,1,fp);
if(number= =p.num) { printf("\t Número Nombre Inglés Matemáticas Computadora Promedio Total? \n");
printf("\t%ld\t%s\t%d \t%d \t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all);
}
}
}
printf(" \¿todavía quieres buscar? Si quieres continuar, ingresa 'y' y presione Enter, no ingrese ' n'Agregar tecla Enter: ");
scanf("%s",c);} while(c[0]=='y');
fclose( fp);
}
void paixu()
{FILE *fp;char fname3[20];struct estudiante k[ N];
do{printf("/n\n\tIngrese el nombre de archivo de los datos del estudiante que desea ordenar: ");
scanf("%s", fnombre3);
>
if(strcmp(fname3,fname)== 0)
{fp=fopen(fname, "r");break;}
else printf("/ tEl archivo que ingresaste no existe\n");} while(1);
rewind(fp);
for(i=0;i fread(&k[ i] ,LEN,1,fp);
int w,q,j,g,t,t2,t3,t4,t5;char z[10];long t1;
for(q=0;q {g=q;
for(j=q+1;j if(k[j].ave t=k[g].ave;k[g]. ave=k[q].ave;k[q].ave=t;
t1=k[g].num;k[g].num=k[q].num;k[ q].num=t1;
t2=k[g].eng;k[g].eng=k[q].eng;k[q].eng=t2;
t3=k[g].math;k[g].math=k[q].math;k[q].math=t3;
t4=k[g].comp ;k[g].comp=k[q].comp;k[q].comp=t4;
t5=k[g].all;k[g].all=k[q ].all;k[q].all=t5;
for(w=0;w<10;w++)
{z[w]=k[g]. nombre[w];k[g].nombre[w]=k[q].nombre[w];k[q].nombre[w]=z[w];};
}
fclose(fp);
printf("/n\n\tIngrese el nombre del archivo en el que se almacenan los datos ordenados\n\tTenga en cuenta que este nombre de archivo no es el mismo que el nombre del archivo en el que se almacenan los datos originales\n");
printf("/n\t");
scanf("%s",fname0);
fp=fopen(fname0, "w");
for(i=0;i fclose(fp);
}
void shuchu()
{FILE *fp; char fname2[20];
do{printf("/n\n\t Ingrese el archivo que desea generar estudiante Nombre de datos: ");
scanf("%s",fname2);
if(strcmp(fname2,fname)==0){fp=fopen(fname, " r ");break;}
else if(strcmp( fname2,fname0)==0){fp=fopen(fname0, "r");break;}
else if (strcmp( fname2,fname6)==0){fp=fopen(fname6, "r");break }
else printf("/t El archivo que ingresaste no existe\n" ) ;}mientras(1);
rebobinar(fp);
printf("/
t Escuela No.Nombre Inglés Matemáticas Computadora Promedio Puntuación total\n");
printf("/t======================= = ========================================\n");
for(i=0;i {fread(&p,LEN,1,fp);
printf("/t%ld\t%s\t%d\t%d\n " ,p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all);
}
printf("/t ==================================================== ======= =====\n");
fclose(fp);}
void tongji()
{ARCHIVO *fp;char fname4[20];int e1=0,e2=0,e3=0,e4=0,e5=0;
do{printf("Ingrese los datos del estudiante que desea count El nombre del archivo: ");
scanf("%s",fname4);
if(strcmp(fname4,fname)==0)
{fp=fopen(fname, "r");break;}
else printf("t el archivo que ingresaste no existe\n");} while(1);
rebobinar(fp);
for(i=0;i {fread(&p,LEN,1,fp);
if(p.ave<=59&&p. ave >=0)e1=e1+1;
Si (p.ave<=69&&p.ave>=60)e2=e2+1;
Si (p.ave < =79&&p.ave>=70)e3=e3+1;
si( p.ave<=89&&p.ave>=80)e4=e4+1;
si ( p.ave<=100&&p.ave>=90)e5=e5+1;
}
fclose(fp);
printf("/ t contar el número de estudiantes en cada banda de puntaje por puntaje promedio /n");
printf("/t===================== == ==========================================\n"); p>
printf("(segmento de fracción t)0--59(t60)--69(t70)--79(t80)--89(t90)--100(n)");
printf("(t número de personas)%d(t)%d(t)%d(t)%d(t)%d(t)%d(n)",e1,e2,e3 ,e4,e5 );
printf("\t===== ============================ ==== ==========================\n");
}
void shanchu()
{ARCHIVO *fp,*fp1;c
har fname5[20];número largo;struct estudiante M[N];
printf("\n\t");
do{printf("/n\tPor favor ingrese el nombre del archivo del que desea eliminar los datos del estudiante:");
scanf("%s",fname5);
if(strcmp (fname5,fname )==0)
{fp=fopen(fname, "r");break;}
else printf("\n\t el archivo que escribiste no existe\ n");}mientras(1);
rebobinar(fp);
fp1= fopen(fname6, "w");
hacer{printf ("/t Por favor ingrese el número de estudiante del estudiante cuyos datos desea eliminar y presione Enter:");
scanf("%ld",&number);
para (i =0;i {fread(&M[i],LEN, 1,fp);
if(M[i].num!=número)fwrite(&M[i],LEN,1 ,fp1 );
}
n--;
fcloseall();
fp1=fopen(fname6, "r" ); fp =fopen(fname, "w");
for(i=0;i {fread(&M[i],LEN,1,fp1);fwrite(&M[i],LEN ,1 ,fp);}
fcloseall();
printf("/¿Aún deseas eliminar? Si continúas, escribe 'y' y presiona Enter; de lo contrario, escribe 'n ' y presiona Enter: ");
Escanear f("%s",c);
} while(c[0]=='y');
}
void charu()
{FILE *fp;char fname7[20];
do{printf("/tPor favor ingrese el nombre del archivo del nombre del archivo donde desea insertar los datos del estudiante: ");
scanf("%s",fname7);
if(strcmp( fname7, fname)==0){fp=fopen(fname, "r+");break;}
else printf("\t El archivo que ingresó no existe "); } while (1);
printf("Ingrese los datos que desea insertar (Ingrese los datos que desea insertar)\nt Separe los datos que ingresa con una tecla de puente (Tab) entre ( Después de ingresar Los datos están separados por teclas de puente (Tab))\nt Cada vez que termine de escribir los datos de un estudiante presione la tecla Enter (Enter) \n");
printf("/
Para terminar de insertar los datos del estudiante, ingrese el número de estudiante como 0 y presione Enter \n");
printf("/t número de estudiante \t nombre \t inglés \t matemáticas \t computadora \n ");
do{fseek(fp,n*LEN,0);printf("\t");
scanf("\t%ld",&p.all /3);
fwrite(&p,LEN,1,fp);
n++;} while(1);
fclose(fp);
}
void zhujiemian()
{
printf("\n\t menú principal\n");
printf("/n");
printf("/t=============================== == == ============================== /n");
printf("/ n" );
printf("/t 1.entrada de datos 2. salida de datos\n");
printf("\n");
printf ("\n");
printf("/t 3. Clasificación de datos (por promedio de calificaciones) 4. Búsqueda de datos (por número de estudiante)\n");
printf("\n");
printf("\t 5. Insertar datos 6. Eliminar datos (por número de estudiante)\n");
printf(" \n ");
printf("\n");
printf("\t 7. ¿Según puntuación media)?0.exit \n"); p>
printf("\n");
printf("\t========================== === ================================== \n");
printf ("\ t Ingrese su elección (0---7) y presione enter:");
scanf("%s",d);
}
void main()
{do
{
zhujiemian();
if(d[0]= =m[ 0]) más si(d[0]==m[3]){paixu();}
más si(d[0]==m[4]){chazhao( );}
más si(d[0]==m[5]){charu();}
más si(d[0]==m[6] ){ shanchu ();}
else if(d[0]==m[7]){tongji();}
else {printf("\tSu selección es ¡incorrecto! ¡Por favor elige de nuevo! ") ;
}