Buscamos urgentemente lenguaje C: Programación de sistema de selección de cursos para estudiantes (preferiblemente con diagrama de flujo)
#includelt; stdlib.hgt;
int N1, N2, kk1, kk2,
struct couse * head1; ;
struct Student * head2;
struct couse //estructura de información del curso
{
int num1;
char nombre1[20];
int puntuación;
int nelepeo; // Número de personas registradas en el curso
int Melepeo; límite de personal
estructura curso * siguiente
};
estructura estudiante//estructura de información del estudiante
{
int num2;
char name2[20];
int nelenum[50]; // número de curso seleccionado
int nelen; Número
estructura estudiante * siguiente
};
void Ms()
{
for( kk1=0;kk1lt.1100;kk1 )
for(kk2=0;kk2lt;1200;kk2 )
for(kk3=0;kk3lt;1200;kk3 );
}
void keyboardc()//Ingresar las 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\ tNombre del curso\tCréditos\t Número de curso cap\n");
scanf("dsddd",amp;p1-gt;num1,p1-gt;name1,amp;p1-gt;score,amp ;p1-gt;Melepeo);
p1-gt;nelepeo=0;
head1=NULL;
while(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;score,amp.p1-gt;Melepeo);
p1-gt;nelepeo=0;
}
p2-gt; siguiente=NULL
<;p>}
void filec()//grabar subfunciones del teclado (desde archivo)
{
FILE * fp;
char filepath[20];
struct couse *p1, *p2;
N1=0;
printf("Ingrese la ruta del archivo para leer: ") ;
getchar();
obtiene( ruta de archivo);
if((fp=fopen(ruta de archivo, "r"))==NULL)
{
printf("¡No se puede encontrar el archivo s!\n", ruta de archivo
exit(0); }
p1
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp, "dsdddd", amp ;p1-gt;num1,p1-gt;nombre1,amp;p1-gt;puntuación,amp;p1-gt;nelepeo,amp;p1-gt;Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1 1;
if(N1==1)head1= p1;
else p2-gt; next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse) )
fscanf(fp,"dsdddd",amp;p1-gt;num1,p1-gt;name1,amp;p1-gt;score,amp;p1-gt;nlepeo,amp;p1 -gt; melepeo);
}
p2-gt; siguiente=NULL
}
void inputc()// Ingrese la función principal del curso
{
int i;
printf("/t\t ingrese la información del curso\n");
printf("/n1. Ingrese /n" desde el teclado);
printf("2. Ingrese /n" desde el archivo); al menú principal\n");
printf("Por favor seleccione (1~3):\n");
scanf("d",amp;i);
cambiar(i)
{
caso(1): tecladoc(); romper
caso(2): filec( ); romper;
case(3): romper;
}
}
void insertc(struct couse *incouse)/ /subfunción de gestión de cursos (agregar curso)
{
estructura couse *p0, *p1, *p2
p1=head1
p0=incouse;
p>p>
if(head1 ==NULL)
{
head1=p0
p0-gt;
}
}
else
{
while((p0-gt;num1 gt; p1-gt;num1 ) amplificador; (p1-gt; siguiente!=NULL))
{
p2=p1; -gt;siguiente;
}
if(p0-gt;num1 lt;= p1-gt;num1)
{
if (cabeza1= =p1) cabeza1=p0;
else p2-gt; siguiente=p0
p0-gt; }
else
{
p1-gt; siguiente=p0
p0-gt; >
}
}
N1=N1 1;
}
void delc(int num1)//gestión del curso subfunción (eliminar cursos)
{
struct couse *p1, *p2
if(head1==NULL)
{
printf("\n no tiene cursos, ¡no se puede eliminar!\n");
ir al final
}
p1=cabeza1;
while(num1!=p1-gt; num1 amp; amp; p1-gt; next!=NULL)
{
p2=p1;
p1=p1-gt; siguiente
}
if(num1==p1-gt; num1)
{ p>
if(p1==head1) head1=p1-gt;
else p2-gt; next=p1-gt; p> printf(" ¡Eliminó 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
{
struct couse * incouse;
int i, num1;
printf("\t\t gestión del curso\n"); "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)
{
case(1): p>
p>
{
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 \n");
scanf("dsdd",amp;incouse-gt;num1,incouse-gt;name1,amp;incouse-gt;score,amp. incouse-gt;Melepeo );
incouse-gt; nelepeo=0;
insertc(incouse); }
case(2):
{
printf("Ingrese el número del curso que desea eliminar:\n");
scanf ("d", & num1
delc (num1
descanso
}
); case(3) :break;
}
}
void teclados()//ingrese la subfunción de información del estudiante (desde el teclado)
{ p>
int i;
estructura estudiante *p1, *p2;
N2=0
p1=p2=( struct Student *) 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; nelenum[i] =0;
head2=NULL;
while(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", amplificador; p1-gt; num2, p1-gt; nombre2); ;i) p1-gt;nelenum[i]=0;
}
p2-gt; next= NULL;
}
void files()//entrada de subfunción de información del estudiante (desde archivo)
{
int i=0;
ARCHIVO * fp;
char filepath[20];
estructura estudiante *p1, *p2;
N2=0;
printf("Ingrese la ruta del archivo a leer:
getchar(); p> p>
gets(rutadelarchivo);
if((fp=fopen(rutadelarchivo, "r"))==NULL)
{
printf("¡El archivo no se encontró!\n", ruta del archivo
exit(0); /p >
p1=p2=(struct estudiante*)malloc(sizeof(struct estudiante));
fread(p1,sizeof(struct estudiante),1,fp);
cabeza2=NULL;
while(!feof(fp))
{
i=0
N2=; N2 1 ;
if(N2==1)head2=p1;
else p2- gt; next=p1;
p2=p1; p>
p1=(struct estudiante * )malloc(sizeof(struct estudiante));
fread(p1, sizeof(struct estudiante), 1, fp> }
p2-gt; next=NULL;
}
void inputs()//ingresa la función principal de información del estudiante
{ p>
int i;
printf("/t\t ingresa la información del estudiante\n");
printf("/n1. Ingresa desde el teclado\n ") ;
printf("2. Ingresar desde archivo\n");
printf("3.Volver al menú principal\n");
printf ("Por favor seleccione (1~3):\n");
scanf("d",amp;i);
switch(i)
{
caso(1): teclados();
caso(2): archivos();
caso(3); ): descanso;
}
}
inserciones vacías (estructura estudiante * incouse) // gestión de información del estudiante subfu
nction (rellene la información del estudiante)
{
struct Student *p0, *p1, *p2
p1=head2
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0-gt; =NULL;
}
más
{
mientras((p0-gt; num2 gt; p1-gt; num2 ) amp;amp; (p1-gt;siguiente!=NULL))
{
p2=p1;
p1=p1-gt;siguiente;
}
if(p0-gt;num2 lt;= p1-gt;num2)
{
if(head2== p1) cabeza2=p0;
más p2-gt; siguiente=p0;
p0-gt; siguiente=p1; p> else
{
p1-gt; siguiente=p0
{
p1-gt; /p>
p0-gt; siguiente=NULL
}
}
N2=N2
}
void dels(int num2)//Subfunción de gestión de información del estudiante (eliminar información del estudiante)
{
struct Student * p1, *p2;
p>
if(head2==NULL)
{
printf("\n no tiene información sobre este estudiante, ¡no puede eliminarla! \n");
ir al final;
}
p1=head2;
while(num2!=p1-gt; num2 amp; p1 -gt; siguiente! =NULL)
{
p2=p1;
p1=p1-gt;siguiente; p>
}
if(num2==p1-gt;num2)
{
if(p1==cabeza2) cabeza2=p1- gt;next;
p>
else p2-gt; next=p1-gt;
printf("¡La información sobre este estudiante ha sido eliminada! \n");
N2=N2-1;
}
else printf("¡No hay estudiantes con este número de estudiante!\n");
end:;
}
void managements()//función principal de gestión de información estudiantil
{
struct estudiante * incouse;
int i, num2;
printf("/t\t información del estudiante m
anagement\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"); "d ", amp; i);
cambiar(i)
{
caso(1):
{ p>
incouse=(struct Student *)malloc(sizeof(struct Student) );
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; nombre2) ;
inserts(incouse);
break;
}
caso(2):
{
printf("Ingrese el número del estudiante que desea eliminar:\n");
scanf("d", amp; num2); > dels (num2);
romper
}
caso(3): romper
}
}
}
void elect(struct Student * s)//elect class
{
struct couse * p;
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=head1;
while(p- gt; num1! =num1) p=p- gt; next;
(p- gt; nelepeo)
}
void cheak()//selección de curso del estudiante subfunción (consultar cursos disponibles)
{
char e;
struct couse * c;
struct Student * s; p>
p>
int num2, i, j=0, t=0;
printf("Ingrese su número de estudiante: "); ("d", amp;núm
2);
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 al menú principal e ingresa tu información! \n");
ir al final;
}
c=head1;
printf("Tu 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"); /p>
scanf("d",amp;num1);
p1=head1;
while(p1-gt;num1! =num1) p1=p1-gt;siguiente;
for(i=0;p-gt;nelenum[i]! =num1;i);
for(j= i;p-gt;nelenum[j]!=0;j) p-gt;nelenum[j]=p-gt;nele
num[j 1];
p-gt;nelenum[--j]=0;
(p1-gt;nelenum)--;
printf("¡Retirada exitosa de la clase!\n");
}
void hcheak()//subfunción de selección de estudiantes (consultar cursos seleccionados)
{
char c;
estructura couse * p0;
estructura estudiante * p;
int num2, i, f=0;
printf("Ingrese el número de estudiante:\n");
scanf("d", num2
p=head2;< /p); >
while(p-gt;num2!=num2 amp;amp; p!=NULL) p=p-gt;next;
if(p==NULL)
{
printf("Su información no existe, regrese al menú principal para ingresar su información:\n");
ir al final
}
printf("Número de curso seleccionado:\n");
if( p-gt;nelenum[0]==0)
{
printf("¡No has tomado ningún curso!\n");
ir al final
}
para (i=0;p-gt;nelenum[i]! =0;i)
{
printf("d\n", p-gt;nelenum[i]
p0=cabeza1;
mientras(p0-gt; num1!=p-gt; nelenum[i]) p0=p0-gt; siguiente;
f=f p0-gt; puntuación;
}
printf("Créditos totales: d\n",
printf( "¿Está el retiro (s/n) en progreso?");
getchar();
c=getchar()
while(c==); 'y')
{
back(p);
printf("¿Continuando con el abandono (s/n)?")
getchar();
c=getchar();
(p-gt; nelen)--; p> end:
}
void elective()//función principal electiva del estudiante
{
int
printf("1.Consultar cursos disponibles \n");
printf("2. Consultar cursos seleccionados \n");
f("3.volver al menú principal \n");
printf("Por favor ingrese (1~3):\n");
scanf("d", amplificador; i);
cambiar(i)
{
caso(1): trampa(); (2): hcheak(); romper;
case(3): romper
}
}
lista vacíac( )//Información del curso de salida
{
struct couse * p;
p=head1
printf("número de curso Curso Nombre Créditos Curso Número inscrito Límite de número de curso\n");
while(p!=NULL)
{
printf("-8d10s6d8d12d\n" ,p-gt;num1,p-gt;nombre1,p-gt;score,p-gt.nelepeo,p-gt;Melepeo);
p=p-gt;siguiente;
}
}
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"); >
{
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 archivo a la información del curso se guardará: ");
getchar();
gets(filepath);
if((fp=fopen(filepath, "w"))==NULL)
{
printf("\n ¡Error al guardar! ");
salir(0);
}
p=head1;
while(p!=NULL) 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); /p>
}
void intos()//almacenar información del estudiante
{
ARCHIVO * fp;
estructura estudiante * p;
char filepath[30];
printf("Ingrese la ruta del archivo que se guardará:
<) p> getchar();obtiene(ruta de archivo);
if((fp=fopen(ruta de archivo, "w"))==NULL)
{
printf("\ n ¡falló al guardar!")
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p, sizeof(struct Student), 1,
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;
printf("1. Almacenar información del curso/n");
printf ("2. Almacenar información del estudiante/n"); /n" ");
printf("Por favor, ingrese (1~3)/n");
scanf("d", y
);cambiar(i)
{
caso(1):intoc(); romper
caso(2):intos(); ;
p>case(3): break
}
}
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");
printf("4.Volver al menú principal\n");
printf("Introduzca (1~4):\n"); > scanf("d ",amp;i
);
cambiar(i)
{
caso(1): listac();
caso(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.Curso gerencia\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.Estudiante Gestión de la información\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("\nIngrese la opción de 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 inicio
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);
}