Red de conocimiento informático - Material del sitio web - ¿Cómo programar un "sistema de gestión de selección de cursos para estudiantes" usando C++?

¿Cómo programar un "sistema de gestión de selección de cursos para estudiantes" usando C++?

Acabo de ver esto hace unos días. Tómalo y modifícalo

#include

#include

int N1,N2,kk1,kk2,kk3;

estructura curso * cabeza1;

estructura estudiante * cabeza2;

struct couse //Estructura de información del curso

{

int num1;

char nombre1[20];

int puntuación;

int nelepeo;//El número de personas seleccionadas para el curso

int Melepeo;//El límite superior del número de personas en el curso

struct couse * next;

};

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 de cursos seleccionados

struct Student * siguiente;

} ;

void Ms()

{

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

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

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

}

void keyboardc()//Subfunción de curso de entrada (entrada 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\tNúmero máximo de participantes del curso\n");

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

p1->nelepeo=0 ;

head1=NULL;

mientras(p1->num1!=0)

{

N1=N1+1;

if(N1==1)head1=p1;

else p2->siguiente=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 entrada del teclado (entrada desde archivo)

{

ARCHIVO * fp;

ruta de archivo char[20];

estructura couse *p1,*p2;

N1=0;

printf("Ingrese la ruta del archivo a leer:");

getchar();

gets(filepath

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

{

printf("¡No se puede encontrar el archivo %s!\n",rutadelarchivo); exit(0);

}

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

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

head1=NULL;

while(!feof(fp))

{

N1=N1+1;

if(N1==1) cabeza1 =p1;

else p2->next=p1;

p2=p1;

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

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

}

p2->next=NULL;

}

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

{

int i;

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

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

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

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

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

scanf("%d",&i);

cambiar(i)

{

case(1):keyboardc();break;

case(2):filec();break;

p>

case(3):break;

}

}

void insertc(struct couse *incouse)//Curso subfunción de gestión (Agregar cursos)

{

struct couse *p0,*p1,*p2;

p1=head1;

p0=ingreso ;

if(head1==NULL)

{

head1=p0;

p0->next=NULL;

}

else

{

mientras ((p0->num1 > p1->num1) && (p1->siguiente!=NULL))

{

p2=p1;

p1 =p1->siguiente;

}

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

{

si (cabeza1==p1) cabeza1=p0;

else p2->siguiente=p0;

p0->siguiente=p1;

}

else

{

p1->siguiente=p0;

p0->siguiente=NULL;

}

}

N1=N1+1;

}

void delc(int num1)//Subfunción de gestión de cursos (eliminar curso )

{

estructura curso *p1,*p2;

if(head1==NULL)

{

printf("\n¡No hay curso, no se puede eliminar!\n");

ir al final;

}

p1=head1;

p>

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

{

p2=p1;

p1 =p1->siguiente;

}

if(num1==p1->num1)

{

si (p1= =head1) head1=p1->siguiente;

else p2->next=p1->siguiente;

printf("¡El número del curso ha sido eliminado!\n ");

N1=N1-1;

}

else printf("¡No hay ningún curso con este número!\n");

end ::;

}

gestión de vacíosc()//función principal de gestión del curso

{

estructura curso * incouse;

int i,num1;

printf("\t\t\tGestión del curso\n");

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

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

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

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

scanf("%d",&i);

cambiar(i)

{

caso(1):

{

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

printf("Número de curso\tNombre del curso\tCréditos\tNúmero máximo de participantes del curso\n") ;

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

incouse - >nelepeo=0;

insertc(incouse);

break;

}

caso(2):

{

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

scanf("%d",&num1);

delc(num1);

ruptura;

}

caso(3): ruptura;

}

}

void teclados()//Subfunción para ingresar información del estudiante (ingresar desde el teclado)

{

int i;

struct estudiante *p1,*p2;

N2=0;

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

printf("Número de identificación del estudiante\tNombre del estudiante\n");

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

p1->nelen=0;

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

cabeza2= NULL;

mientras(p1->num2!=0)

{

N2=N2+1;

si(N2 ==1 )head2=p1;

else p2->next=p1;

p2=p1;

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

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

p1->nelen=0;

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

}

p2->next=NULL;

}

archivos vacíos()/

/Ingresar subfunción de información del estudiante (ingresar desde archivo)

{

int i=0;

ARCHIVO * 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("¡No se puede encontrar el archivo %s!\n",ruta del archivo

exit(0); > }

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

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

head2=NULL;

while(!feof(fp))

{

i=0;

N2=N2+1;

if(N2==1)head2=p1;

else p2->siguiente=p1;

p2=p1 ;

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

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

}

p2->next=NULL;

}

void inputs()//Función principal para ingresar información del estudiante

{

int i;

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

printf("\n1.From Entrada de teclado\n");

printf("2. Entrada desde archivo\n");

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

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

scanf("%d",&i);

switch(i)< / p>

{

caso(1):teclados();romper;

caso(2):archivos();romper;

caso (3): descanso;

}

}

inserciones vacías (estructura estudiante * incouse) // Subfunción de gestión de información del estudiante (completar estudiante información)

{

struct Student *p0,*p1,*p2;

p1=head2;

p0=incouse;

p>

if(head2==NULL)

{

head2=p0;

p0->siguiente= NULO;

}<

/p>

else

{

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

{

p2=p1;

p1=p1->siguiente;

}

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

{

if(head2==p1) head2=p0;

else p2->next=p0;

p0->siguiente=p1;

}

else

{

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 hay información sobre el estudiante y 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==head2) head2=p1->siguiente;

else p2 ->next= p1->next;

printf("¡Esta información del estudiante ha sido eliminada!\n");

N2=N2-1;

}

else printf("¡Estudiante sin este número de estudiante!\n");

end:;

}

void gerencias()/ /Función principal de gestión de información del estudiante

{

struct Student * incouse;

int i,num2;

printf ("\t \t\tGestió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 seleccione (1~3):\n");

scanf("%d",&i);

cambiar(

i)

{

caso(1):

{

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

incouse->nelen=0;

incouse->nelenum[0]=0;

printf("ID del estudiante\tNombre del estudiante\ n");

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

inserts(incouse);

break;

}

case(2):

{

printf("Ingrese el número de estudiante del estudiante que será eliminado :\n");

scanf("%d",&num2);

dels(num2);

break;

}

case(3):break;

}

}

void elect(struct Student * s)// Selección de curso

{

struct couse * p;

int num1,i;

printf("Ingrese el número del curso curso que deseas elegir:\ n");

scanf("%d",&num1);

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

p>

s->nelenum[i]=num1;

(s->nelen)++;

p=cabeza1 ;

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

(p->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("Por favor ingresa tu número de estudiante :");

scanf("%d",&num2);

s=head2;

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

if(s->num2!=num2)

{

printf("Tu la información no existe, por favor ingresa al menú principal ¡Ingresa tus datos!\n");

ir al final;

}

c=head1;

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

p>

while(c!=NULL)

{

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

{

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

}

if(t==0 && (c->nelepeo!=c->Melepeo))

{

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

j++;

}

c=c->siguiente;

}

si(j= =0)

{

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

ir al final;

p>

}

printf("Selección de curso (s/n)?:\n");

getchar();

e= getchar ();

i=0;

while(e=='y')

{

elegir(s)

printf("¿Continuar seleccionando cursos (y/n)?:\n");

getchar();

e=getchar();

p>

}

end:;

}

void back(struct Student * p)//retirar clase

{

struct couse * p1;

int num1,i,j;

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

scanf("%d",&num1);

p1=head1;

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

printf("¡Retiro de clase exitosamente!\n");

}

void hcheak()// Subfunción de selección de cursos para 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 , regrese al menú principal para ingresar información:\n");

ir al final;

}

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

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

{

printf("¡Aún no has elegido un 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("¿Quieres retirarte de la clase (s/n)?");

getchar();

c=getchar();

while(c=='y')

{

back(p);

printf("¿Continuar abandonando la clase (s/n)?");

getchar();

c =getchar();

( p->nelen)--;

}

fin:;

}

void elective()//función maestra de selección de cursos de estudiantes

{

int i;

printf("\t\t\tSelección de estudiantes \n");

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

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

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

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

scanf( "%d",&i);

switch(i)

{

case(1):cheak();break;

caso(2):hcheak();romper;

caso(3):romper;

}

}

void listc()//Salir información del curso

{

struct couse * p;

p=head1;

printf(" N.º de curso Nombre del curso Crédito Número de curso de números seleccionados Número máximo de números de curso\n ");

while(p!=NULL)

{

printf("%-8d%10s%6d%8d%12d\n", p->num1,p->nombre1,p->sc

mineral,p->nelepeo,p->Melepeo);

p=p->siguiente;

}

}

voidlists()//Salida de información del estudiante

{

struct Student * p;

p=head2;

printf(" Número de estudiante Nombre de estudiante Número de cursos seleccionados\n");

while(p!=NULL)

{

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

p=p->siguiente;

}

}

void intoc()//Almacenamiento de información del curso

{

ARCHIVO * fp;

struct couse * p; /p>

char filepath[30];

printf("Ingrese la ruta del archivo para guardar la información del curso:");

gets(rutadelarchivo);

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

{

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

exit(0);

}

p=head1;

while(p ! =NULL)

{

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

p=p->siguiente;

}

fclose(fp); >

p>

printf("¡La información del curso se ha guardado en %s!\n", ruta de archivo

}

void intos()//Almacenamiento); información del estudiante

{

ARCHIVO * fp;

struct estudiante * p;

char filepath[30];

printf ("Ingrese la ruta del archivo para guardar la información del estudiante:");

getchar()

gets(filepath); (fp=fopen (ruta de archivo,"w"))==NULL)

{

printf("\n¡Error al guardar!"

exit( 0);

}

p=cabeza2;

mientras(p!=NULL)

{

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

p=p->siguiente;

}

fclose(fp);

p

rintf("¡La información del estudiante se ha guardado en %s!\n", ruta de archivo

}

void into()//Información de almacenamiento

{

int i;

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

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

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

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

scanf ("%d",&i);

switch(i)

{

case(1):intoc();break;

caso(2):intos();romper;

caso(3):romper;

}

}

void store()//Función principal de información

{

int i;

printf("\t\tVisualización y almacenamiento de información del sistema\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. Regresar al menú principal\n");

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

scanf("%d",&i);

cambiar(i)

{

case(1 ):listc();break;

case(2):lists();break;

case(3):into();break;

case(4):break;

}

}

int main()//función principal

{

int i;

start:

printf("\n\t\t\t¡Bienvenido al sistema de selección de cursos para estudiantes!\n");

printf("Menú:\n");

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

printf("2.Gestión del curso \n") ;

printf("3.Ingrese la información del estudiante\n");

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

printf( "5. Los estudiantes eligen cursos\n");

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

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

printf("\nIngrese la opción de menú (1~7):\n");

scanf("%d",&i);

if(i<1 || i>7)

{

printf("Error de entrada, vuelva a ingresar:\n");

ir a inicio;

}

cambiar(i)

{

caso(1):

{

sistema("cls");

inputc();

ir a inicio;

romper;

}

caso(2):

{

sistema("cls");

gestiónc();

ir a inicio;

romper;

}

caso(3):

{

sistema("cls");

entradas(); p>

ir a inicio;

romper;

}

caso(4):

{

sistema("cls");

gerencias();

ir a inicio;

romper;

}

caso(5):

{

sistema("cls");

electivo();

ir a inicio;

romper;

}

caso(6):

{

sistema( "cls ");

store();

ir a inicio;

romper;

}

case( 7):

{

system("cls");

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

}

}

retorno(0);

}