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ú*/ p>
{
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" ); p>
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");
} p>
/ *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);
} p>
/* Definir la función del sistema de gestión de información de visualización*/
void mydisplay()
{
int n=0; p >
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 p>
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*/ p>
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;
} p>
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: "); 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; } 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(); }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 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); p> printf("\n ¡No existe esa persona!\n"); 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); p> } /* 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; 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->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> 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; } 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); }