Red de conocimiento informático - Conocimiento informático - Programa C para el sistema de selección de cursos de estudiantes.

Programa C para el sistema de selección de cursos de estudiantes.

Modifíquelo según sus necesidades ^^

#include

#include

int N1,N2,kk1 ,kk2,kk3;

estructura curso * cabeza1;

estructura estudiante * cabeza2

estructura curso //estructura de información del curso

{

int num1;

char nombre1[20];

int puntuación;

int nelepeo;// Ya registrado para esto curso Número de personas

int Melepeo;

struct couse * next;

};

struct estudiante//estructura de información del estudiante

{

int num2;

char nombre2[20];

int nelenum[50];//número de curso seleccionado

int nelen;

struct Student * next;

};

void Ms()

{

para(kk1=0;kk1<1100;kk1++)

para(kk2=0;kk2<1200;kk2++)

para(kk3=0;kk3 <1200 ;kk3++);

}

void tecladoc()//subfunción de grabar curso (grabar 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éditos\t límite de personal del curso\n");

scanf("%d%s%d%d%d",&p1-> num1, p1- > nombre1,&p1->puntuación,&p1->.Melepeo);

p1->nelepeo=0;

cabeza1=NULL;

mientras (p1 ->núm1! =0)

{

N1=N1+1;

si(N1==1)cabeza1=p1;

más p2->next=p1;

p2=p1;

p1=(struct couse * )malloc(sizeof(struct couse));

scanf( "%d%s%d%d",&p1->num1, p1->nombre1,&p1->puntuación,&p1->Melepeo);

p1->nelepeo=0;

}

p2->next=NULL;

}

void filec()//subfunción de teclado de grabación (f

rom)

{

ARCHIVO * fp;

char filepath[20];

struct couse *p1,*p2;

N1=0;

printf("Ingrese la ruta del archivo que se va a leer en la ruta del archivo:");

getchar();

obtiene(rutadelarchivo);

if((fp=fopen(rutadelarchivo, "r"))==NULL)

{

printf("¡No se puede encontrar el archivo %s!\n",filepath

exit(0

}

p1

p1=p2=(struct couse*)malloc(sizeof(struct couse));

fscanf(fp,"%d%s%d%d%d%d",&p1- >num1,p1->nombre1,&p1->puntuación,&p1->nelepeo,&p1->Melepeo);

head1=NULL;

while(!feof(fp) )

{

N1=N1+1;

si(N1==1)cabeza1=p1;

si no p2- >next=p1;

p2=p1;

p1=(struct couse * )malloc(sizeof(struct couse)) ;

fscanf(fp, "%d%s%d%d%d%d",&p1->num1,p1->nombre1,&p1->puntuación,&p1->nlepeo,&p1->Melepeo);

}

p2->next=NULL;

}

void inputc()//Ingrese la función principal del curso

{

int i;

printf("/t\t ingresa la información del curso\n");

printf("/n1.Ingresa /n" desde el teclado);

printf("2. Entrada /n" del archivo);

printf("3.volver al menú principal\n");

printf( " Seleccione (1~3):\n");

scanf("%d",&i);

switch(i)

{

case(1):keyboardc();break;

case(2):filec();break;

case(3): break;

}

}

void insertc(struct couse *incouse)//subfunción de gestión del curso (agregar curso)

{

estructura couse *p0,*p1,*p2;

p1=head1;

p0=incouse;

if(hea

d1 ==NULL)

{

head1=p0;

p0->siguiente=NULL;

}

}

else

{

while((p0->num1 > p1->num1) && amp; (p1->siguiente!= NULL))

{

p2=p1;

p1=p1->siguiente;

}

if(p0->num1 <= p1->num1)

{

if (head1==p1) head1=p0;

else p2- >siguiente=p0;

p0->siguiente=p1;

}

más

{

p1->siguiente=p0;

p0-> ; 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, ¡no se puede eliminar!\n" );

ir al final;

}

p1=head1;

while(num1!=p1->num1 && p1- >siguiente! =NULL)

{

p2=p1;

p1=p1->siguiente;

}

if(num1==p1->num1)

{

if(p1==cabeza1) cabeza1=p1->siguiente;

else p2->next=p1-> next;

printf("¡Eliminó este curso numerado!\n");

N1=N1-1;

}

else printf("¡No hay cursos con ese número! \n");

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");

printf("1.Agregar curso\n");

printf("2. Eliminar curso\n");

printf("3.Volver al menú principal \n" );

printf("Seleccione (1~3):\n");

scanf ("%d",&i);

cambiar (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 \n ");

scanf("%d%s%d%d",&incouse->num1,incouse->nombre1,&incouse->puntuación,&.incouse->Melepeo);

incouse->nelepeo=0;

insertc(incouse);

break;

}

case(2) :

{

printf("Ingrese el número del curso que desea eliminar:\n");

scanf("%d",&num1

delc(num1);

romper

}

caso(3): romper;

}

}

void teclados()//ingresar la subfunción de información del estudiante (desde el teclado)

{

int i;

struct estudiante *p1,*p2;

N2=0;

p1=p2=(struct estudiante *) malloc(sizeof(struct estudiante)) ;

printf("número de estudiante\t nombre de estudiante\n");

scanf("%d%s",&p1->num2,p1->nombre2);

p1->nelen =0;

for(i=0;i<20;i++) p1->nelenum[i]=0;

head2=NULL;

while(p1->num2!=0)

{

N2=N2+1;

si ( N2==1)head2=p1;

else p2->next=p1;

p2=p1;

p1=(estructura estudiante * ) malloc(sizeof(struct Student));

scanf("%d%s", &p1->num2,p1->name2);

p1->nelen=0;

for(i=0;i<20;i++) p1->nelenum[i]=0

}

p2->siguiente= NULL; ;

}

void files()//subfunción de entrada de información del estudiante (desde archivo)

{

int i=0;

ARCHIVO * fp;

ruta de archivo char[20];

estructura estudiante *p1,*p2;

N2=0;

printf("

Introduzca la ruta al archivo que se va a leer: ");

getchar();

gets(filepath);

if((fp=fopen( ruta de archivo, "r"))==NULL)

{

printf("¡%s archivo no encontrado!\n",ruta de archivo

);

salir(0);

}

p1

p1=p2=(struct estudiante*)malloc(sizeof(struct estudiante));

fread(p1,sizeof(struct estudiante),1,fp);

head2=NULL;

while(!feof(fp))

{

i=0;

N2=N2+1;

si(N2==1)cabeza2=p1;

else p2-& gt;next=p1;

p2=p1;

p1=(struct Student * )malloc(sizeof(struct Student));

fread(p1,sizeof(struct Student),1,fp);

}

p2->next=NULL;

}

void inputs()//ingresar la información del estudiante función principal

{

int i;

printf("/t\t ingrese la información del estudiante\n");

printf("/n1. Ingrese desde el teclado\n");

printf("2. Ingrese desde el archivo\n");

printf("3.Volver al menú principal\n");

printf("Seleccione (1~3):\n");

scanf("%d",&i);

switch(i)

{

case(1):teclados();break;

caso(2):archivos();romper;

caso(3): romper;

}

}

void inserts(struct Student * incouse)//subfunción de gestión de información del estudiante (completar la información del estudiante)

{

struct Student *p0,*p1,*p2; p>

p1=cabeza2;

p0=incouse;

if(cabeza2==NULL)

{

head2 =p0;

p0->next=NULL;

}

más

{

while( (p0->num2 > p1->num2 ) && (p1->siguiente! =NULL))

{

p2=p1;

p1=p1->siguiente;

}

if(p0->num2 <= p1->num2)

{

if(head2==p1) head2=p0;

else p2->next=p0;

p0->next=p1;

}

else

{

p1->siguiente=p0;

{

p1->siguiente=p0;

p0-> siguiente=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;

}

p1=head2;

while(num2!=p1->num2 && p1- > siguiente! =NULL)

{

p2=p1;

p1=p1->siguiente;

}

if(num2==p1->num2)

{

if(p1==cabeza2) cabeza2=p1->siguiente;

else p2->next=p1-> next;

printf("¡La información sobre este estudiante ha sido eliminada!\n");

N2=N2-1; p>

}

else printf("¡No hay estudiantes con este número de estudiante!\n");

end:;

}

void Managements()//función principal de gestión de información del estudiante

{

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. Volver al menú principal/n");

printf("Por favor elija (1~3) :\n" );

scanf("%d",&i);

cambiar(i)

{

caso (1):

{

incouse=(struct estudiante *)malloc(sizeof(struct estudiante) );

incouse->nelen=0;

incouse->nelenum[0]=0;

printf("St

número de estudiante\t nombre del estudiante\n");

scanf("%d%s",&incouse-> num2,incouse->nombre2);

inserts(incouse);

break;

}

case(2):

{

printf("Por favor, introduzca el número del estudiante que se va a eliminar:\n");

scanf("%d",&num2);

dels(num2);

break;

}

caso(3): descanso;

}

}

}

void elect(struct Student * s)//elegir clase

{

struct couse * p;

int num1,i;

printf("Ingrese el número de la clase a seleccionar:\n");

Escanee f("%d",&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;siguiente;

(p-& gt;nelepeo)++;

}

void cheak()//Subfunción de selección de cursos del estudiante (consultar cursos disponibles)

{

char e;

struct couse * c;

struct Student * s;

int num2,i,j=0 ,t=0;

printf("Ingrese su número de estudiante: ");

scanf("%d",&num2);

s= cabeza2;

while(s->num2! =num2 && s-& gt;siguiente!=NULL) s=s->siguiente;

if(s->num2!=num2)

{

printf("Su información no existe, ¡vaya al menú principal e ingrese su información!\n");

ir al final;

}

c=head1;

printf("Su número de curso opcional:\n");

while(c!=NULL)

{ p>

for(t=0,i=0;s->.nelenum[i]! =0;i++)

{

if(c- >num1 ==s->nelenum[i]) t=1;

}

if(t==0 &a

mp;& (c->nelenum!= c->nelenum[i]))

{

printf("%d\n",c-> num1);

j++;

}

c=c->siguiente;

}

si (j==0)

{

printf("¡Has tomado todos los cursos y no puedes seleccionar más!\n");

ir al final;

}

printf("¿Seleccionando curso (y/n)?:\n");

getchar();

e=getchar();

e=getchar();

i=0;

while(e=='y')

{

elect(s);

printf("¿Continuar con elect(s/n)?:\n");

getchar();

e=getchar();

}

fin:;

}

void back(struct Student * p)//retiro de clase

{

struct couse * p1;

int num1,i,j; p>

printf("Ingrese el número del curso que desea abandonar:\n");

Escanear f("%d",&num1);

p1=cabeza1;

while(p1->num1 !=num1) p1=p1->siguiente;

for(i=0;p->nelenum[i] ! = num1;i++);

for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1] ;

p->nelenum[--j]=0;

(p1->nelenum)--;

printf("Retiro exitoso de la clase ! \n");

}

void hcheak()//subfunción de selección de estudiantes (consultar cursos seleccionados)

{

char c;

struct couse * p0;

struct Student * p;

int num2, i,f=0;

printf ("Ingrese el número de estudiante:\n");

scanf("%d",&num2);

p=head2;

while(p ->num2! =num2 && p! =NULL) p=p-> ;next;

if(p==NULL)

printf ("Tu información no existe, por favor regrese al menú principal para ingresar su información:\n");

ir al final;

}

printf("Número de curso seleccionado:\n");

if( p->nelenum[0]==0)

{

printf("¡No has tomado ningún curso!\n");

ir al final;

}

for(i=0 ;p->nelenum[i]! =0;i++)

{

printf("%d\n",p->nelenum[i]);

p0=cabeza1;

while(p0->num1!=p->nelenum[i]) p0=p0->siguiente;

f=f+p0 ->puntuación;

}

printf("Créditos totales:%d\n",f);

printf("¿El retiro (y/n ) en progreso?") ;

getchar();

c=getchar();

while(c=='y')

{

back(p);

printf("¿Continuando con abandono(s/n)?")

getchar();

c=getchar();

(p->nelen)--;

}

fin:

}

void elective()//función principal electiva del estudiante

{

int i;

printf("1 .Consultar cursos disponibles \n");

printf("2. Consultar cursos seleccionados \n");

printf("3.volver al menú principal \n" );

printf("Por favor ingrese (1~3):\n");

scanf("%d",&i);

switch( i )

{

caso(1):cheak();romper;

caso(2):hcheak();romper

case(3): break;

}

}

void listc()//Información del curso de salida

{

struct couse * p;

p=head1;

printf("número del curso Nombre del curso Créditos Número del curso inscrito Límite del número del curso\n");< / p>

mientras(p! =NULL)

{

printf("%-8d%10s%6d%8d%12d\n",p->num1,p->nombre1,p->puntuación ,p->.nelepeo,p->Melepeo);

p=p->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"); p>

while(p!=NULL)

{

printf("%-4d %10s %6d\n",p->num2,p- >nombre2 ,p->nelen);

p=p->siguiente;

}

}

void intoc() // almacenar información del curso

{

ARCHIVO * fp;

struct couse * p; /p >

printf("Ingrese la ruta al archivo donde se guardará la información del curso:");

getchar();

gets(filepath);

p>

if((fp=fopen(filepath, "w"))==NULL)

{

printf("\n ¡Error al guardar! ") ;

salir(0);

}

p=head1;

mientras(p!=NULL)

{

fprintf(fp,"%d %s %d %d %d\n",p->num1,p->nombre1,p->.score,p- >nelepeo,p ->Melepeo);

p=p->siguiente;

}

fclose(fp); printf("¡La información del curso se guarda en %s! \n",filepath);

}

void intos()//almacenar información del estudiante

{

ARCHIVO * fp;

struct Student * p;

char filepath[30]

printf("Ingrese la ruta del archivo de información del estudiante que se guardará:");

getchar();

gets(filepath);

if((fp= fopen(filepath, "w"))==NULL)

{

printf("\ n ¡falló al guardar! ") ;

salir(0);

}

p=head2;

mientras(p!=NULL)

{

fwrite(p,sizeof(struct Student),1,fp);

p=p-> siguiente;

}

fclose(fp);

printf("¡Información del estudiante guardada en %s!\n",filepath);

}

void into()//almacenar información

{

int i;

printf("1. Almacenar información del curso/n");

printf ("2. Almacenar información del estudiante/n");

printf ("3. Regresar al menú principal/n"); (1 ~3)/n");

scanf("%d",&i);

cambiar(i)

{

caso(1):intoc();romper;

caso(2):intos();romper;

caso(3):romper;

}

}

void store()//función principal del mensaje

{

int i;

printf("/t\t sistema Ver y almacenar información\n");

printf("1. Ver información del curso\n");

printf(" 2. Ver información del estudiante\n");

printf("3. Guardar información\n");

printf("4.Volver al menú principal\n");

p>

printf("Ingrese (1~4):\n");

scanf("%d",&i);

cambiar (i)

{

case(1):listc();break;

case(2):lists();break

caso(3):into();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 de cursos\n");

printf("3.Ingreso de información del estudiante\n");

printf("4.Gestión de información del estudiante\n");

printf("5.Estudiante Gestión de la información\n ");

printf("6.Gestión de la información del estudiante\n");

printf("7.Gestión de la información del estudiante\n");

printf("8.Gestión de información del estudiante");

printf("5.Selección de estudiante");

printf("6.Visualización y almacenamiento de información del sistema" );

p>

printf("7.Salir del sistema\n");

printf("\nPor favor ingrese la opción de menú

(1~7):\n");

scanf("%d",&i);

if(i<1 || i>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 usar esta función p> system("cls");

gestiónc();

ir a inicio;

romper;

}

caso(3):

{

system("cls");

inputs();

ir a inicio;

romper;

p>

}

caso(4):

{

sistema("cls");

gestiones() ;

ir a inicio;<

romper;

}

caso(5):

{

sistema("cls");

electivo();

ir a inicio;

romper;

}

caso(6):

{

sistema("cls");

tienda();

ir a inicio;

romper;

}

caso(7):

{

system("cls");

printf("¡Gracias por usar este sistema! \n\n¡Adiós! \n");

}

}

}

return(0);

}