Red de conocimiento informático - Computadora portátil - Diseño e implementación del diseño de cursos en lenguaje C "Sistema de selección de cursos para estudiantes"

Diseño e implementación del diseño de cursos en lenguaje C "Sistema de selección de cursos para estudiantes"

/* Nota: Su elección es C IDE */

#include

#include

#include

#include

#define N 100

estructura estudiante

{

char num[10];

char nombre[10];

char tel[11];

};

/* La siguiente es la descripción del prototipo de función. Cuando la definición de la función llamada está después de la función que llama, se debe agregar esta parte*/

void myprint();

void mycreate();

void mydisplay();

void mysearch();

/* Las funciones sch_num y sch_name son llamado por mibúsqueda*/

void sch_num(FILE *fp);

void sch_name(FILE *fp

void mymodify();

void myadd ();

void mydelete();

/* las funciones del_num y del_name son llamadas por mydelete*/

void del_num( FILE *fp);

p>

void del_name(FILE *fp);

void mysort();

/* las funciones sort_num y sort_name son llamadas por mysort*/

void sort_num();

void sort_name();

void main()

{

char elegir,yes_no;

p>

hacer

{

myprint() /* Mostrar el menú principal*/

printf(" ");

elegir=getch();

cambiar(elegir)

{

caso '1 ': micreate(); break; /* crear*/

case '2': mydisplay(); /* display*/

case '3': mysearch( ); /* consulta*/

case '4': mymodify(); break /* modificar*/

case '5': myadd(); /* agregar*/

case '6': mydelete(); /* eliminar*/

case '7': mysort(); /

case '0': break;

default:printf("\n ¡%c es una opción ilegal! \n",elegir);

}

if(elegir=='0')

break;

printf("\n ¿Quieres continuar seleccionando (Y/N)?\n");

hacer

{

yes_no=getch();

} while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');

} while(yes_no!='Y'||yes_no!='y');

}

void myprint() /* Mostrar interfaz de menú*/

{

printf("\n\n\n\n\n\n\n\n");

printf(" |---- -----------------------|\n");

printf(" | Introduzca el número de opción (0- 7): | \n");

printf(" |----------------------|\ n");

printf(" | 1--Crear sistema de gestión de información|\n");

printf(" | 2--Mostrar sistema de gestión de información|\n" );

printf(" | 3--Consultar el sistema de gestión de información|\n");

printf(" | 4--Modificar el sistema de gestión de información|\n"

printf(" | 5--Agregar sistema de gestión de información|\n");

printf(" | 6--Eliminar sistema de gestión de información|\n");

printf(" | 7--Sistema de gestión de información de clasificación|\n");

printf(" | 0--Salir|\n"); p> printf(" | ----------------------------|\n");

}

/ *Definir la función para crear el sistema de gestión de información*/

void mycreate()

{

int i=1;

estructura temporal del estudiante;

ARCHIVO *fp;

fp=fopen("d:\\lbh\\guanli.dat","w");

if (fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

printf("\n Por favor ingrese el primer registro:\n");

printf("Número de estudiante (finalice la entrada con #):");

p>

hacer

{

gets(temp.num);

} while(strcmp( temp.num,"")==0 );

printf("Nombre (finalizar entrada con #):");

gets(temp.name

printf("Número de teléfono (finalice la entrada con #):");

gets(temp.tel

while(temp.num[0]!= '#'&&temp.nombre[0]! ='#'&&temp.tel[0]!='#')

> {

fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel);

i++;

printf("\n Por favor ingrese el registro %dth:\n",i);

printf("Número de estudiante (finalice la entrada con #):"); > hacer

{

gets(temp.num);

} while(strcmp(temp.num,"")==0);< / p>

printf("Nombre (finalizar la entrada con #):");

gets(temp.name);

printf("Número de teléfono (terminar con #) Entrada):");

gets(temp.tel);

}

fclose(fp);

}

/* Definir la función del sistema de gestión de información de visualización*/

void mydisplay()

{

int n=0;

estructura temporal del estudiante;

ARCHIVO *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");< / p>

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

// clrscr();

printf("Nombre del estudiante, número de teléfono\n"); while( feof(fp)==0)

{

fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp. tel) ;

printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);

n++

<; p> }

if(n==0)

printf("\n ¡No hay registros en el archivo!\n");

else

printf("\n ¡Hay ***%d registros en el archivo!\n",n

fclose(fp);

}

/* Definir funciones para consultar sistemas de gestión de información*/

void mysearch()

{

char c;

ARCHIVO *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

printf ("\n ¿Buscar por número de estudiante (h) o nombre (m)?");

c=getch();

if(c== 'h '||c=='H')

sch_num(fp); /* Consulta por número de estudiante*/

if(c=='m'||c == 'M')

sch_name(fp); /* Consulta por nombre*/

else

printf("\n

¡Carácter ilegal!\n");

fclose(fp);

}

/* Definir la función para consultar el sistema de gestión de información por número de estudiante* /

void sch_num(ARCHIVO *fp)

{

int flag=0,n=0;

char tempnum[10 ];

struct Student temp;

printf("\n Introduzca el número de estudiante para consultar el registro:

gets(tempnum);

while(feof(fp)==0)

{

fscanf(fp,"%23s%15s%15s\n",&temp.num ,&temp. nombre,&temp.tel);

if(strcmp(tempnum,temp.num)==0)

{

if(flag= =0)

printf("Nombre y número de teléfono del estudiante\n");

printf("%23s%15s%15s\n",temp.num,temp.name ,temp. tel);

flag=1;

}

n++;

}

si (n= =0)

printf("\n ¡No hay ningún registro en el archivo!\n");

else

if(flag==0). )

printf("\n ¡No existe tal persona en el archivo!\n");

}

/* Defina la función para consultar el sistema de gestión de información por nombre*/

void sch_name(FILE *fp)

{

int flag=0,n=0;

char tempname[10];

struct Student temp;

printf("\n Introduzca el nombre del registro que desea consultar:");

gets(tempname);

while(feof(fp)==0)

{

fscanf(fp,"%23s%15s% 15s\n",&temp.num,&temp.name, &temp.tel);

if(strcmp(tempname,temp.name)==0)

{

if(flag==0)

p>

printf("Nombre del estudiante, número de teléfono\n");

printf("%23s%15s%15s\ n",temp.num,temp.name,temp.tel) ;

flag=1;

}

n++;

}

if(n==0 )

printf("\n ¡No hay registro en el archivo!\n"

else

);

if(flag==0)

printf("\n ¡No existe tal persona en el archivo!\n");

}

/* Definir funciones para modificar el sistema de gestión de información*/

void mymodify()

{

char

int; n=0;

estudio de estructura

nt *find,temp,record[100],*p;* Hasta 100 registros*/

ARCHIVO *fp;

fp=fopen("d:\\lbh \\guanli.dat","r+");

if(fp==NULL)

{

printf("\n Error al abrir el archivo ! \n");

return;

}

p=registro;

while(feof(fp)==0 )

{

fscanf(fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel);

p++;

n++;

}

fclose(fp);

si(n==0)

p>

{

printf("\n ¡No hay registros en el archivo!\n");

return;

}

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

gets(temp.num);

for(p=record; p

if(strcmp(temp.num,p->num)==0)

{

find=p; /* find Recuerda la posición donde se modificó el registro*/

break;

}

if(p==record+n)

{

printf("\n ¡No existe esa persona!\n");

return;

}

hacer

{

printf("\n Por favor ingrese el número de estudiante correcto:");

do

{

gets( temp.num);

} while(strcmp(temp.num,"")=0);

printf("Ingrese el nombre correcto: ");

p>

gets(temp.name);

printf("Ingrese el número de teléfono correcto:");

gets(temp. tel);

for(p=record;p

if((strcmp(temp.num,p->num)==0)&& (p!=find))

{

printf("\n Número de estudiante duplicado, ¿quieres volver a ingresar (Y/N)?"); >

hacer

{

c=getch();

} while(c!='Y'&&c!='y'&&c! ='N'&&c!='n' );

putchar('\n');

break

}

if(p==record+n)

{

*find=temp /* buscar apunta a la ubicación donde el registro debe modificarse*/

descanso;

}

p>

}mientras

(c=='Y'||c=='y');

fp=fopen("d:\\lbh\\guanli.dat","r+");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

p>

}

for(p=record;p

fprintf(fp,"%23s%15s%15s\n ",p ->num,p->name,p->tel);

fclose(fp);

}

/* Definir agregar información Función del sistema de gestión*/

void myadd()

{

char c

int n=0;

estructura estudiante temp,registro[N],*p;

ARCHIVO *fp;

fp=fopen("d:\\lbh\\guanli.dat", "r+ ");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

retorno;

}

p=registro

while(feof(fp)==0)

{

fscanf(fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel);

p++;

n++;

}

fclose(fp);

hacer

{

printf( "\n Introduzca el número de estudiante recién registrado:");

do

{

gets(temp.num);

} while(strcmp(temp.num,"")=0);

printf("Ingrese el nombre del nuevo registro:");

gets(temp.name );

printf("Ingrese el número de teléfono del nuevo registro:"

gets(temp.tel); > for(p=record; p

if(strcmp(temp.num,p->num)==0)

{

printf(" \n Número de estudiante duplicado, ¿necesita volver a ingresarlo (Y/N)?"

hacer

{

);

c=getch();

p>

}mientras(c!='Y'&&c!='y'&&c!='N'&&c!='n');

putchar('\n');

romper

}

if(p==record+n)

{

*p= temp;

descanso;

}

}mientras(c=='Y'|| c=='y');

fp=fopen("d:\\lbh\\guanli.

dat","r+");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n" ) ;

return;

}

for(p=record;p

fprintf ( fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel

fclose(fp);

/* Definir la función para eliminar el sistema de gestión de información*/

void mydelete()

{

char c;

ARCHIVO *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");

if(fp= =NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

printf("\n ¿Eliminar por número de estudiante (h) o eliminar por nombre (m)?");

c=getch();

if(c =='h'||c=='H')

del_num(fp /* Eliminar por número de estudiante*/

if(c==); 'm'| |c=='M')

del_name(fp); /* Eliminar por nombre*/

else

printf("\ n Carácter ilegal! \n");

fclose(fp);

}

/* Defina la función para eliminar el sistema de gestión de información por número de estudiante. */

void del_num(ARCHIVO *fp)

{

int n=0;

char tempnum[10];

struct registro de estudiante[N],*p,*k;

p=record;

while(feof(fp)==0)

{

fscanf(fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel);

p++;

n++;

}

fclose(fp);

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

gets(tempnum);

for(k=record;k

if(strcmp( tempnum,k->num) ==0)

break /* Finaliza el ciclo después de encontrar el registro a eliminar*/

if(k

for(p=k;p

*p=*(p+ 1

else

printf("\n ¡No existe esa persona!\n");

fp=fopen("d:\\lbh\ \guanli.dat","w");

if(fp==NULL)

{

printf("\n Error al abrir el archivo

¡Derrota!\n");

return;

}

for(p=record;p

fprintf(fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel);

}

/* Definir la función para eliminar el sistema de gestión de información por nombre*/

void del_name(FILE *fp)

{

int n=0;

char tempname[10];

struct Student record[N],*p,*k;

p=record;

while( feof(fp)==0)

{

fscanf(fp,"%23s%15s%15s\n",p->num,p->nombre, p- >tel);

p++;

n++;

}

fclose(fp); > printf ("\n Introduzca el nombre del registro que desea eliminar:");

gets(tempname

for(k=record;k p>

if(strcmp(tempname,k->name)==0)

break /* Encuentra el registro que se eliminará y finaliza el ciclo* /

if(k< record+n) /* Finaliza el ciclo antes, indicando que se ha encontrado a la persona*/

for(p=k;p

*p=*(p+1

else

printf("\n ¡No existe esa persona!\n");

p>

fp=fopen("d:\\lbh\\guanli.dat","w");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

for(p=record; p

fprintf(fp,"%23s%15s %15s\n",p->num,p->name,p->tel);

}

/* Función que define el sistema de gestión de información de clasificación*/

void mysort()

{

char c;

ARCHIVO *fp;

fp=fopen( "d:\\lbh\\guanli.dat","r+");

if(fp==NULL)

{

printf(" \n ¡Error al abrir el archivo!\n");

return;

}

fclose(fp);

printf( "\n Ordenar por número de estudiante (h), o por nombre (m)?");

c=getch();

if(c=='h'| |c=='H')

sort_num(); /* Ordenar por número de estudiante */

if(c=='m'||c=='M' )

sort_name(); /* Ordenar por nombre

secuencia*/

else

printf("\n ¡Carácter ilegal!\n");

}

/* Botón de definición Función del sistema de gestión de información de clasificación de números de estudiantes*/

void sort_num()

{

int i,j,k,n=0;

char c;

estructura registro de estudiante[N],*p,temp

ARCHIVO *fp;

fp=fopen("d :\\lbh\\guanli.dat","r");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

p=record;

while(feof(fp ) ==0)

{

fscanf(fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel)

p++;

n++;

}

fclose(fp); n En orden ascendente (s) o en orden descendente (j)?");

c=getch();

if(c=='s'||c= =' S') /* Ordenar por número de estudiante en orden ascendente*/

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp((p+k )->núm ,(p+j)->núm)>0)

k=j;

temp=*(p+k);

*(p +k)=*(p+i);

*(p+i)=temp;

}

más

if(c=='j'||c=='J') /* Ordenar por número de estudiante en orden descendente*/

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp((p+k)->num,(p+j)->num)<0)

k=j;

temp =*(p +k);

*(p+k)=*(p+i);

*(p+i)=temp;

}

else

{

printf("\n ¡Carácter ilegal!\n");

return;

}

fp=fopen("d:\\lbh\\guanli.dat","w");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

for( p=record;p

{

fprintf(fp,"%23s

%15s%15s\n",p->num,p->nombre,p->tel);

printf("%23s%15s%15s\n",p->num,p ->nombre,p->tel);

}

fclose(fp);

}

/* Definir por nombre Funciones del sistema de gestión de información de clasificación*/

void sort_name()

{

int i,j,k,n=0;

char c;

estructura registro de estudiante[N],*p,temp;

ARCHIVO *fp;

fp=fopen("d:\ \lbh\\guanli.dat","r+");

if(fp==NULL)

{

printf("\n Abrir archivo ¡Error!\n");

return;

}

p=record;

while(feof(fp)== 0)

{

fscanf(fp,"%23s%15s%15s\n",p->num,p->nombre,p->tel); p>

p++;

n++;

}

fclose(fp);

printf("\n); en orden ascendente (s), o en orden descendente (j)?");

c=getch();

if(c=='s'||c= ='S' ) /* Ordenar por nombre en orden ascendente*/

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp((p+k)- >nombre,(p +j)->nombre)>0)

k=j;

temp=*(p+k);

* (p+k) =*(p+i);

*(p+i)=temp;

}

más

if(c =='j'||c=='J') /* Ordenar por nombre en orden descendente*/

for(i=0;i

{

k=i;

for(j=i+1;j

if( strcmp((p+k)->nombre,(p+j)->nombre)<0)

k=j;

temp=* (p+k);

*(p+k)=*(p+i);

*(p+i)=temp;

}

else

{

printf("\n ¡Carácter ilegal!\n");

return;

}

p>

fp=fopen("d:\\lbh\\guanli.dat","w");

if(fp==NULL)

{

printf("\n ¡Error al abrir el archivo!\n");

return;

}

p>

for(p=record;p

fprintf(fp,"%23s%15s%15s\n",p->num,p->nombre ,p->tel);

fclose(fp);

}