Diagrama de flujo del lenguaje C de emergencia
int N1, N2, kk1, kk2, kk3;
estructura curso * cabeza1
estructura estudiante * cabeza2; /p>
estructura curso/estructura de información del curso
{
int num1
char name1[20]; int score;
int nelepeo; // Número de personas que se han registrado en el curso
int Melepeo
struct couse * next;
};
struct Student //estructura de información del estudiante
{
int num2;
char name2[20];
int nelenum[50]; //número de cursos tomados
int nelen; //número de cursos tomados
struct Student * next;
};
void Ms()
{
for(kk1=0;kk1lt;1100;kk1)
for( kk2=0;kk2 lt;1200;kk2 )
for(kk3=0;kk3lt;1200;kk3 );
}
nulo tecladoc() //grabar subfunciones del curso (desde el teclado)
{
struct couse *p1, *p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("Número de curso\t nombre del curso\t crédito\t límite de personal del curso\n");
Scanf("dssd",amp;
Scanf("dsd",amp;
Scanf("dssd",amp;
Scanf("dsd",amp;
Scanf("dsd dd",amp;p1-gt;num1,p1-gt;nombre1,amp;p1-gt;puntuación,amp;p1- gt ; melepeo);
p1-gt; nelepeo=0;
cabeza1=NULL
mientras( p1-gt; num1! =0)
{
N1=N1 1;
si(N1==1)cabeza1=p1;
más p2 -gt; siguiente=p1;
p2=p1;
p1=(estructura curso * ) malloc(sizeof(estructura curso)); "dsdd",amp;p1-gt;num1,p1-gt;nombre1,
amp; p1-gt; amperio; p1-gt;
p1-gt; ;next=NULL;
}
void filec()//Ingrese la subfunción del teclado (desde el archivo)
{
ARCHIVO * fp;
ruta de archivo char[20];
estructura couse *p1, *p2; "Ingrese la ruta al archivo a leer:");
getchar();
gets(filepath); (ruta de archivo, "r"))==NULL)
{
printf("¡No se puede encontrar el archivo s!\n", ruta de archivo
salir(0);
}
p1
p1=p2=(struct couse*)malloc(sizeof(struct couse)); >
fscanf(fp,"dsdddd",amp;p1-gt;num1,p1-gt;nombre1,amp;p1-gt;score,amp;p1-gt;nelepeo,amp;p1-gt;Melepeo) ;
head1=NULL;
while(!feof(fp))
{
N1=N1 1;
if(N1==1)head1=p1;
else p2-gt; siguiente=p1; =(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"dsdddd",amp;p1-gt;num1,p1-gt;name1,amp;p1-gt; puntuación, p1-gt; nlepeo, p1-gt;
}
p2-gt;
void inputc()//Ingresar la función principal del curso
{
int i;
printf("/t\t enter información del curso\n");
printf("/n1. Ingrese /n desde el teclado
printf("2. Ingrese /n desde el archivo"); /p> p>
printf("3.volver al menú principal\n");
printf("Seleccione (1~3):\n"); p> scanf ("d",amp;i);
switch(i)
{
case(1): tecladoc();
caso(2): filec(); romper;
caso(3): romper
p>
}
}
void insertc(struct couse *incouse)//subfunción de gestión del curso (agregar curso)
{
estructura couse *p0, *p1, *p2;
p1=head1
p0=incouse
if(head1 ==NULL)
{
cabeza1=p0;
p0-gt; siguiente=NULL
}
}
else
{
while((p0-gt; num1 gt; p1-gt; num1) amp; amp; (p1-gt; ¡siguiente! =NULL))
{
p2=p1;
p1=p1-gt;
if(p0-gt; num1 lt; = p1-gt; num1)
{
if (head1==p1) head1=p0;
más p2-gt; siguiente=p0;
p0-gt; siguiente=p1
más
{
p1-gt; siguiente=p0;
p0-gt ; siguiente=NULL
}
}
N1=N1 1;
}
void delc(int num1)//subfunción de gestión de cursos (eliminar cursos)
{
struct couse *p1, *p2;
if(head1==NULL)
{
printf("\n no tiene cursos, puede ¡No lo borre!\n");
ir al final;
}
p1=head1;
while(num1!= p1-gt; num1 & p1-gt; siguiente! =NULL)
{
p2=p1;
p1=p1-gt;
}
if(num1==p1-gt;num1)
{
if(p1==cabeza1) cabeza1= p1-gt; next;
else p2-gt; next=p1-gt;
printf("¡Eliminado este curso numerado! \n");
N1=N1-1;
}
else printf("¡No hay cursos con ese número!\n"); p>
p>
end:;
}
gestión de vacíosc()//función principal de gestión del curso
{
estructura curso * incouse;
int i, num1;
printf("\t\t gestión de cursos\n");
printf("1.Agregar curso\n");
printf("2. Eliminar curso\n"
printf("3.Volver al menú principal \n");
printf("Seleccione (1~3):\n");
scanf ("d",amp;i);
switch(i)
{
caso(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("Número de curso\t nombre del curso\t créditos\t límite de personal del curso
incouse-gt; nelepeo=0;
insertc(incouse);
break; > case(2):
{
printf("Ingrese el número del curso que desea eliminar:\n"); d ", amp; num1);
delc (num1);
break;
}
case(3): break
}
}
anular teclados()//ingresar la subfunción de información del estudiante (desde el teclado)
{
int i;
estructura estudiante *p1, *p2;
N2=0
p1=p2=(estructura estudiante *) malloc( sizeof (struct Student));
printf("número de estudiante\t nombre de estudiante\n");
scanf("ds",amp;p1-gt;num2,p1 - gt; nombre2);
p1-gt; nelen =0;
for(i=0; ilt; 20; i ) p1-gt; ;
cabeza2=NULL;
mientras(p1-gt; num2! =0)
{
N2=N2 1;
si( N2==1)cabeza2=p1
más p2; -gt; siguiente=p1;
p2=p1;
p1=(estructura estudiante * )malloc(tamañode(estructura estudiante)); "ds",amp;p
1-gt;num2,p1-gt;nombre2);
p1-gt;nelen=0;
for(i=0;ilt;20;i) p1-gt ; nelenum[i]=0;
}
p2-gt; siguiente= NULL
}
archivos vacíos(); //ingresa la subfunción de información del estudiante (desde el archivo)
{
int i=0
FILE * fp
char filepath; [20];
struct Student *p1, *p2;
N2=0;
printf("Ingrese la ruta del archivo a leer: ");
getchar();
obtiene(ruta de archivo);
if((fp=fopen(ruta de archivo, "r"))==NULL )
{
printf("¡El archivo no se encuentra!\n", ruta del archivo
exit(0); >
}
p1
p1=p2=(struct estudiante*)malloc(sizeof(struct estudiante)); (estructura estudiante), 1, fp);
head2=NULL
while(!feof(fp))
{
i=0;
N2=N2 1;
if(N2==1)head2=p1
más p2- gt; ;
p2=p1;
p1=(struct estudiante * )malloc(sizeof(struct estudiante));
fread(p1,sizeof(struct estudiante) ) ), 1, fp);
}
p2-gt; siguiente=NULL
}
void inputs(); //ingresar la información del estudiante función principal
{
int i;
printf("/t\t ingresar la información del estudiante\n");
printf("/n1. Ingresar desde el teclado\n");
printf("2. Ingresar desde el archivo\n"); Volver al menú principal\n");
printf("Por favor seleccione (1~3):\n");
scanf("d",amp;i);
switch(i)
{
case(1): teclados(); break
case(2): archivos ( ); romper;
caso(3): romper;
;
}
}
inserciones vacías (estructura estudiante * incouse)//subfunción de gestión de información del estudiante (completar la información del estudiante)
{
estructura estudiante *p0, *p1, *p2;
p1=head2
p0=incouse; (head2==NULL)
{
head2=p0
p0-gt; siguiente=NULL; p>
else
{
while((p0-gt; num2 gt; p1-gt; num2 ) amp; amp; (p1-gt; next!=NULL ))
{
p2=p1
p1=p1-gt; > if(p0-gt;num2 lt;= p1-gt;num2)
{
if(head2==p1) head2=p0;
más p2-gt; siguiente=p0;
p0-gt; siguiente=p1
más
{ p> p>
p1-gt; siguiente=p0;
{
p1-gt; siguiente=p0; =NULL ;
}
}
N2=N2 1;
}
void dels(int num2) //Subfunción de gestión de información del estudiante (eliminar información del estudiante)
{
struct Student * p1, *p2
if (head2== NULL)
{
printf("\n no tiene información sobre este estudiante, ¡no se puede eliminar!\n");
ir al final; /p>
}
p1=cabeza2;
while(num2!=p1-gt;num2 amp;amp; p1-gt;siguiente! =NULL)
{
p2=p1;
p1=p1-gt; p> if(num2==p1-gt;num2)
{
if(p1==head2) head2=p1-gt;siguiente;
else p2-gt; next=p1-gt; next;
printf("¡La información sobre este estudiante ha sido eliminada!\n"); /p>
}
else printf("¡No hay estudiantes con este número de estudiante!\n"
end:
}< / p>
gestión de vacíos()//función principal de gestión de información del estudiante<
/p>
{
struct Student * incouse;
int i, num2;
printf("/t\t gestión de información del estudiante\n ");
printf("1.Agregar información del estudiante\n");
printf("2. Eliminar información del estudiante\n");
printf("3. Regresar al menú principal/n");
printf("Por favor elija (1~3):\n"); , amp ;i);
cambiar(i)
{
caso(1):
{
incouse=(struct estudiante *)malloc(sizeof(struct estudiante) );
incouse-gt;nelen=0;
incouse-gt;nelenum[0]=0 ;
printf("Número de estudiante\t nombre de estudiante\n");
scanf("ds",amp;incouse-gt;num2,incouse-gt;name2);
p>
insertos(incouse);
descanso
}
caso(2):
{
printf("Ingrese el número del estudiante que desea eliminar:\n");
scanf("d", amp; num2);
dels(num2)
romper
}
caso(3): romper
}
} p>
}
void elect(struct Student * s)//elect class
{
struct couse * p;
int num1, i;
printf("Ingrese el número de la clase a seleccionar:\n"); "d", amp; num1 );
for(i=0;s- gt;nelenum[i]! =0; i );
s- gt; nelenum[i]=num1;
(s- gt; nelen)
p=cabeza1;
while(p- gt; num1!=num1) p=p- gt; siguiente
(p- gt; nelepeo)
}<; /p>
void cheak()//subfunción de selección de cursos del estudiante (consultar cursos disponibles)
{
char e;
struct couse * c ;
estructura estudiante*s;
>
int num2, i, j=0, t=0;
printf("Ingrese su número de estudiante:
scanf("d", amp ; num2);
s=head2;
while(s-gt; num2!=num2 amp; amp; s- gt; next!=NULL) s=s-gt ;next;
if(s-gt;num2!=num2)
{
printf("Tu información no existe, por favor ve a principal menú e ingrese su información! \n");
ir al final;
}
c=head1;
printf(" Su número de curso opcional:\n");
while(c!=NULL)
{
for(t=0,i=0;s -gt.nelenum[i]! =0; i )
{
if(c-gt;num1==s-gt;nelenum[i]) t=1;
}
if(t==0 amp;amp; (c-gt;nelenum!= c-gt;nelenum[i]))
{
printf("d\n", c-gt; num1
j
}
c=c-gt; siguiente;
}
if(j==0)
{
printf("Tú ¡He tomado todos los cursos y no puedo seleccionar más! \n");
ir al final;
}
printf("Seleccionando curso (y) /n)?:\n");
getchar();
e=getchar();
e=getchar();
i=0;
mientras(e=='y')
{
elegir(s); > printf("Continuar con elect(s/n)?:\n");
getchar()
e=getchar(); }
end:;
}
void back(struct Student * p)//retirada de clase
{
struct couse * p1;
int num1, i, j;
printf("Ingrese el número del curso que desea abandonar:\n");
Escanear f("d",amp;num1);
p1=head1;
while(p1-gt;num1! =num1) p1=p1-gt; siguiente;
para
(i=0;p-gt;nelenum[i]! =num1;i);
for(j=i;p-gt;nelenum[j]!=0;j) p-gt ;nelenum[j]=p-gt;nelenum[j 1];
p-gt;nelenum[--j]=0;
(p1-gt;nelenum) --;
printf("¡Retiro exitoso de la clase!\n");
}
void hcheak()//subfunción de selección de estudiante (consulta seleccionada cursos)
{
char c
estructura curso * p0;
estructura estudiante * p; > int num2, i, f=0;
printf("Ingrese el número de estudiante:\n");
scanf("d", amp; num2 ); p> p>
p=cabeza2;
while(p-gt;num2!=num2 amp;amp; p!=NULL) p=p-gt;siguiente;
if(p==NULL)
{
printf("Su información no existe, por favor regrese al menú principal para ingresar su información:\n");
goto end;
}
printf("Número de curso seleccionado:\n"); [0]= =0)
{
printf("¡No has tomado ningún curso!\n");
ir al final p>
}
for(i=0;p-gt;nelenum[i]! =0;i)
{
printf( "d\n ",p-gt;nelenum[i]);
p0=head1;
while(p0-gt;num1!=p-gt;nelenum[i ]) p0= p0-gt; siguiente;
f=f p0-gt; puntuación
}
printf("Créditos totales: d\n ", f) ;
printf("¿Está en curso el retiro (s/n)?") ;
getchar();
c=getchar( );
p>
mientras(c=='y')
{
atrás(p);
printf("¿Continuando con abandono(s/n)?")
getchar()
c=getchar()
(p-gt); ;nelen)--;
}
end:
}
void elective()//función principal electiva del estudiante p>
{
int i;
<p> printf("1.Consultar cursos disponibles \n");
printf("2. Consultar cursos seleccionados \n"); menú principal \n");
printf("Por favor, ingrese (1~3):\n");
scanf("d",amp;i); p> p>
cambiar(i)
{
caso(1):cheak(); romper
caso(2):hcheak; () ; break ;
case(3): break
}
}
void listc()//Salida del curso; información
{
struct couse * p;
p=head1;
printf("número del curso Nombre del curso Créditos Número de inscritos en el curso Límite de número de cursos\n");
while(p!=NULL)
{
printf("-8d10s6d8d12d\n", p-gt; num1, p-gt; nombre1, p-gt; puntuación, p-gt.nelepeo, p-gt;
p=p-gt;
p>
}
listas vacías()//generar información del estudiante
{
struct Student * p;
p =head2;
printf("Número de estudiante Nombre del estudiante Número de cursos tomados\n"); >
{
p>printf("-4d 10s 6d\n", p-gt; num2, p-gt; nombre2, p-gt; nelen
p=p-gt; next;
}
}
void intoc()//almacenar información del curso
{
ARCHIVO * fp ;
struct couse * p;
char filepath[30]
printf("Ingrese la ruta al se guardará el archivo donde se guardará la información del curso :");
getchar();
gets(filepath);
if((fp=fopen( ruta de archivo, "w"))== NULL)
{
printf("\n ¡falló al guardar! ");
salir(0);
}
p=head1;
while(p!=NULL) p> p>
{
> fprintf(fp, "d s d d d\n", p-gt; num1, p-gt; nombre1, p-gt.score, p-gt; nelepeo, p-gt; Melepeo
p); =p-gt; next;
}
fclose(fp);
printf("¡La información del curso se guarda en s!\n", ruta de archivo );
}
void intos()//almacenar información del estudiante
{
ARCHIVO * fp;
struct Student * p;
char filepath[30];
printf("Ingrese la ruta del archivo que se guardará:"); p> p>
getchar();
gets(filepath);
if((fp=fopen(filepath, "w"))==NULL) p>
{
printf("\ n ¡falló al guardar!";
exit(0); > p =cabeza2;
while(p!=NULL)
{
fwrite(p, sizeof(struct Student), 1, fp);
p=p-gt; next;
}
fclose(fp);
printf("Información del estudiante guardada en s! \n ", ruta de archivo);
}
void into()//almacenar información
{
int i; p>
printf("1. Almacenar información del curso/n");
printf ("2. Almacenar información del estudiante/n"); Volver a la página principal menu/n");
printf("Por favor, ingrese (1~3)/n");
scanf("d",amp;i) ;
cambiar(i)
{
caso(1): intoc(); romper
caso(2): intos(); romper ;
case(3): romper;
}
}
void store()//mensaje función principal
{
int i;
printf("/t\t system Ver y almacenar información\n");
printf("1 . Ver información del curso\n");
printf("2. Ver información del estudiante\n");
printf("3. Almacenar información\n ");
p>
printf("4.Regresar al menú principal\n");
printf("Por favor ingrese (1~4):\n");
scanf("d", amplificador i);
cambiar(i)
{
caso(1): listc(); (2): listas(); romper;
caso(3): en(); romper
caso(4): romper;
}
int main()//función principal
{
int i;
inicio:
printf("\n\t\t\t ¡Bienvenido al sistema de selección de cursos para estudiantes! printf("1.Entrada de información del curso\n");
printf(" 2.Gestión del curso\n");
printf("3.Ingreso de información del estudiante\n");
printf("4.Gestión de información del estudiante\n");
printf("5.Gestión de información del estudiante\n");
printf("6.Gestión de información del estudiante\n");
printf(" 7.Gestión de la información del estudiante\n");
printf("8.Gestión de la información del estudiante");
printf("5.Selección del estudiante");
printf("6. Visualización y almacenamiento de información del sistema");
printf("7.Salir del sistema\n");
printf("\nPor favor, ingrese a la opción del menú (1~7):\n");
scanf("d",amp; i);
if(ilt;1 || igt;7)
{
printf("Error de entrada, vuelva a escribir:\n");
ir a inicio
}
switch(i)
{
printf("Error de entrada, vuelva a escribir:\n");
geto start; > }
cambiar(i)
{
caso(1):
{
sistema( "cls");
inputc();
ir a iniciar
romper
}
caso(2):
{
{
Esta es la primera vez que intento utilizar esta función.
p> sistema("cls");
gestiónc();
ir a inicio
romper
}
caso(3):
{
sistema("cls");
entradas(); inicio;
ruptura
}
caso(4):
{
sistema("cls ");
gestiones();
ir a inicio; <
romper;
}
caso (5):
{
sistema("cls");
electivo();
ir a inicio
descanso;
}
caso(6):
{
sistema("cls"); p> p>
tienda();
ir a inicio;
romper
}
caso(7):
p>
{
system("cls");
printf("¡Gracias por usar este sistema!\n\n¡Adiós! \n ");
}
}
}
return(0);
}