Pídale a un experto que resuelva un problema de diseño de un curso de lenguaje C
Puedes consultar esto.
#includelt; stdio.hgt;
#includelt; definir BUFLEN 100
#define LEN 15
#define N 100
estructura registro
{
char código[LEN 1];
nombre de char[LEN 1];
int edad;
sexo de char[3]; tiempo de char[LEN 1];
char add[30];
char dormitorio[LEN 1];
char clases[30];
char major[30];
}stu[N];
int k=1, n, m, ad_key=111; ARCHIVO *fp;
void readfile();
void seek();
void modificar();
void insert();
void del();
void display();
void save();
void menu(); int main()
{
mientras(k)
menú();
sistema("pausa"); p> p>
return 0;
}
void help()
{
printf("\n0. ¡Bienvenido ayuda del sistema! \n");
printf("\n1. Después de ingresar al sistema, primero actualice la información del estudiante y luego consulte;\n");
printf( "\n2 .Siga las indicaciones del menú y escriba el código numérico;\n");
printf("\n3. Después de agregar la información del estudiante, recuerde presionar 7 para guardar;\n");
printf( "\n4. ¡Gracias por tu uso!\n");
}
void readfile()
{
char * p="estudiante.txt";
ARCHIVO *fp;
int i=0;
if (( fp=fopen("student.txt" , "r"))==NULL)
{
printf("¡Error al abrir el archivo! ¡Presione cualquier tecla para salir!", p);
sistema("pausa");
salir(0);
}
mientras(fscanf(fp, "s sds s s s s", stu[i ].código, stu[i].nombre, & stu[i].edad,
stu[i].sexo, stu[i].hora, stu [i].add, stu[ i].dorm, stu[i].classes, stu[i].major)==8)
{
i; p>
i=i ;
}
fclose(
fp);
n=i;
printf("¡Entrada completada!\n");
}
void seek( )
{
int i, elemento, bandera;
char s1[21]; ---------------\n");
printf("-----1. Buscar por número de estudiante-----\n") ;
printf("-----2. Buscar por nombre-----\n");
printf("-----3. Salir de esto menú -----\n");
printf("------------------\n");
while(1)
{
printf("Seleccione el número del submenú: ");
scanf("d", amp; item);
flag=0;
cambiar(elemento)
{
caso 1:
printf(" Por favor ingrese el número de estudiante del estudiante a consultar:\n");
scanf("s", s1);
for(i=0;ilt;n; i)
if(strcmp(stu[i].code, s1)==0)
{
flag=1;
printf ("Número de estudiante, nombre del estudiante, edad, sexo, fecha de nacimiento, dirección, dormitorio, clase, especialidad\n");
printf("--------- ---------- ---------------------------------------- ----------\ n");
printf("6s 7s 6d 5s 9s 8s 10s 10s 10s\n", stu[i].código, stu[i]. nombre, estu[i].edad,
p>stu[i].sexo, stu[i].tiempo, stu[i].add, stu[i].dorm, stu[i] .classes, stu[i].major); p>
}
if(flag==0)
printf("¡Esta identificación de estudiante no existe! \n"); break;
caso 2:
printf("Ingrese el nombre del estudiante que desea consultar:\n");
scanf("s", s1);
for(i=0;ilt;n;i)
if(strcmp(stu[i].nombre, s1)= =0)
{
flag=1;
printf("Número de estudiante, nombre del estudiante, edad, sexo, fecha de nacimiento, dirección, dormitorio, clase , mayor\n");
printf("------ --------------------------- ----------------------- ------------\n");
printf(" 6s 7s 6d 5s 9s 8s 10s 10s 10s\n", stu[i].código, stu[i ].nombre, stu[i].edad,
stu[i].sexo, stu[ i].tiempo, stu[i].añadir, stu
[i].dorm, stu[i].classes, stu[i].major);
}
if(flag==0)
printf("¡Este nombre no existe!\n"); break;
caso 3: retorno;
predeterminado: printf("Por favor, elija entre 1-3\n" ) ;
}
}
}
/********tecla****** ** */
key_2()
{
int p
if((fp=fopen("key_2", "r "))==NULL)
{
fp=fopen("key_2", "w ");
fwrite(amp; ad_key, sizeof( int), 1, fp);
fclose(fp);
}
fp=fopen("key_2", "r"); p>
fread(amp; ad_key, sizeof(int), 1, fp);
fclose(fp);
printf("Ingrese la contraseña de administrador:\ n");
error9: scanf("d",amp;p);
if(p!=ad_key)
{
p>printf("Lo sentimos, la contraseña que ingresaste es incorrecta, ¡vuelve a ingresarla!\n");
goto error9; p> else modificar();
}
cambiar_clave2()
{ int p;
if((fp=fopen( "key_2 ", "r"))==NULL)
{
fp=fopen("key_2", "w ");
fwrite( amp; ad_key, tamaño de (int), 1, fp);
fclose(fp);
}
fp=fopen("key_2", " r" );
fread(amp; ad_key, sizeof(int), 1, fp);
fclose(fp);
printf("Por favor ingrese la contraseña del miembro de administración:\n");
error9: scanf("d",amp;p);
if(p!=ad_key)
{
printf("Lo sentimos, la contraseña que ingresaste es incorrecta, ¡vuelve a ingresarla!\n");
goto error9
}
else {
printf("Ingrese la nueva contraseña de administrador:\n");
scanf("d",&ad_key);
fp=fopen("key_2", "w");
fwrite(amp; ad_key, sizeof(int), 1,
fclose(fp) ;
printf("¡Modificación exitosa! ! ! ! ! \n");
>}
}
void modificar()
{
int i, elemento, num
char sex1[3], s1[LEN 1], s2[LEN 1];
printf("Ingrese el número de estudiante que desea modificar:\n"); p >scanf("s",s1);
for(i=0;ilt;n;i)
if(strcmp(stu[i].code,s1) = =0)
num=i;
printf("------------------\n"); p >
printf("1.Modificar nombre\n");
printf("2.Modificar edad\n");
printf("3.Modificar género \ n");
printf("4.Modificar fecha de nacimiento\n");
printf("5.Modificar dirección\n");
printf("6.Modificar número de dormitorio\n");
printf("7.Modificar clase\n");
printf("8.Modificar especialidad\n " );
printf("9.Salir de este menú\n");
printf("----------------- - \n");
while(1)
{
printf("Seleccione un número de submenú: ");
scanf("d", elemento);
cambiar(elemento)
{
caso 1:
printf(" Por favor ingrese un nuevo nombre: \n");
scanf("s", s2);
strcpy(stu[num].name, s2); break;
p>
caso 2:
printf("Ingrese la nueva era:\n");
scanf("d",amp;stu[ num].age ); break;
caso 3:
printf("Ingrese un nuevo género:\n"); ",sex1) ;
strcpy(stu[num].sex, sex1); break;
caso 4:
printf("Por favor, introduzca el nuevo año y mes de nacimiento: \n");
scanf("s", s2);
strcpy(stu[num].time, s2); break; p>
caso 5:
printf("Ingrese la nueva dirección:\n");
scanf("s", s2); p>strcpy(stu[ num].add, s2);
caso 6:
printf("Ingrese el nuevo número de dormitorio:\n"); p>
scanf ("s", s2);
strcpy(stu[num].dorm, s2);
caso 7:
printf("Ingrese una nueva clase:\n");
scanf("s", s2);
caso 8:
printf ("Ingrese una nueva clase Mayor:\n");
scanf("s", s2);
strcpy(stu[num].c
lasses, s2); break;
caso 9: retorno;
default: printf ("Por favor, elija entre 1-9\n");
}
}
void sort()
{
int i, j, * p, *q, s;
char temp[10];
for(i=0;ilt;n-1;i)
{
for(j=n-1;jgt;i;j--)
if(strcmp(stu[j-1].code, stu[j].code)gt ;0 )
{
strcpy(temp, stu[j-1].code);
strcpy(stu[j-1].code, stu[ j].code);
strcpy(stu[j].code, temp);
strcpy(temp, stu[j-1].nombre);
p>
strcpy(stu[j-1].nombre, stu[j].nombre);
strcpy(stu[j].nombre, temp);
strcpy(temp, stu[j-1].sex);
strcpy(stu[j-1].sex, stu[j].sex);
strcpy(stu [j].sexo,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time); ,stu[ j].time);
strcpy(stu[j].time, temp);
strcpy(temp, stu[j-1].add);
strcpy(stu[j-1].add, stu[j].add);
strcpy(stu[j].add, temp);
strcpy( temp, estu[j-1].dormitorio);
strcpy(stu[j-1].dormitorio, stu[j].dormitorio);
strcpy( stu[j ].dorm, temp);
strcpy(temp, stu[j-1].clases
strcpy(stu[j-1].classes, stu); [j] .clases);
strcpy(stu[j].clases, temp);
strcpy(stu[j].major, temp);
p =amp;stu[j-1].edad;
q=amp;stu[j].edad;
s=*q;
* q=*p;
*p=s;
}
}
}
void insert ()
{
int i=n,j,flag;
printf("Ingrese el número de estudiantes que se agregarán:\ n");
scanf("d",amp; m);
hacer
{
flag=1;
while(flag)
{
flag=0;
printf("Por favor ingrese el expediente académico del estudiante désimo
No.:\n",i 1);
scanf("s",stu[i].code);
for(j=0;jlt;i;j )
if(strcmp(stu[i].code, stu[j].code)==0)
{
printf("El estudiante número, verifique y vuelva a ingresar!\n");
flag=1;
break;
}
}
printf("Por favor ingrese el nombre del estudiante désimo:\n",i 1);
scanf("s",stu[i].name); p>
p>
printf("Ingrese la edad del d estudiante:\n",i 1);
scanf("d",amp;stu[i]. edad);
p>
printf("Ingrese el sexo del désimo estudiante:\n",i 1);
scanf("s",stu[ i].sex);
printf("Ingrese el año y mes de nacimiento del désimo estudiante: (formato: año.mes)\n", i 1);
scanf("s", stu[i]. time);
printf("Ingrese la dirección del désimo estudiante: \n", i 1
scanf); ("s", stu[i].add) ;
printf("Por favor, ingrese al dormitorio del estudiante désimo:\n",i 1);
scanf(" s",stu[i].dorm);
printf("Por favor, introduzca la clase del estudiante désimo:\n",i 1);
scanf("s" ,stu[i].classes);
printf("Por favor ingrese la especialidad del estudiante désimo:\n",i 1);
scanf("s",stu [i].major);
if(flag==0)
{
i=i
i; /p>
}
}
mientras(ilt; n m);
n =m
printf(" ¡Entrada completada!\n\n");
n =m; p>
sort();
}
void del()
{
int i, j, flag= 0;
char s1[LEN 1];
printf("Por favor, introduzca el número de estudiante del estudiante que se va a eliminar:\n");
scanf(" s", s1);
for(i=0;ilt;n;i)
if(strcmp(stu[i].code, s1)==0)
{
flag=1
for; (j=i; jlt; n-1; j )
stu[j] =stu[j 1];
}
if(bandera= =0)
printf("¡La identificación del estudiante no existe! \n");
if(flag==1)
{
printf("Eliminar correctamente, seleccione el menú 6 para mostrar el resultado\n ") ;
n--;
}
}
visualización nula()
{
int i;
printf("La información de todos los estudiantes es: \n");
printf("Número de identificación del estudiante y apellido
Nombre, edad, sexo, fecha de nacimiento, dirección, dormitorio, clase, especialidad\n");
printf("----------------- ------- ------------------------------------------- -------\n"); p>
for(i=0;ilt;n;i)
{
printf("6s 7s 5d 5s 9s 8s 10s 10s 10s\n", stu[ i].código, stu[i].nombre, stu[i].edad,
stu[i].sexo, stu[i ].time, stu[i].add, stu[i ].dorm, stu[i].classes, stu[i].major
}
}
void save()
{
int i;
ARCHIVO *fp
fp=fopen( "estudiante.txt", "w");
for(i=0;ilt;n;i)
{
fprintf(fp, " s s d s s s s s s\n", stu[i].código, stu[ i].nombre, stu[i].edad,
stu[i].sexo, stu[i].tiempo, stu[i ].add, stu[i].dorm, stu[i ].classes, stu[i].major
}
fclose(fp);
}
menú vacío( )
{
int num;
printf("Sistema de gestión de información estudiantil\n" );
printf("╔═ ═══════════════════════════╗\n"); p>
printf("║ ¡¡Bienvenido!! ║ \n");
printf("║┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┈┈┈┈║\n") ;
printf("║ 0. Ayuda e instrucciones del sistema 1. Actualizar la información del estudiante ║\n");
printf("║ 2 Consultar información del estudiante 3. Modificar la información del estudiante ║\n");
printf("║ 4. Agregar información del estudiante 5. Eliminar información del estudiante ║\n");
printf. ("║ 6. Mostrar información actual 7. Guardar información del estudiante║\n");
printf("║ 8. Cambiar contraseña 9. Salir del sistema ║\n"); > printf("║┈┈┈┈ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈║\n");
printf(" ╚════
═════════════════════════╝\n");
printf("Seleccione un número de menú:");
scanf("d",amp;num);
cambiar(num)
{
caso 0: ayuda() ; romper;
caso 1: readfile(); romper;
caso 2: buscar(); romper;
caso 3: key_2(); ;
caso 4: insertar(); romper;
caso 5: del(); romper
caso 6: mostrar(); /p>
p>
caso 7: guardar(); romper;
caso 8: change_key2(); romper;
caso 9: k=0; break;
predeterminado: printf("Elija entre 0-9\n");
}
}