Programación en lenguaje C del sistema de gestión de información estudiantil
/*Completar con variables de puntero*/
/*Comando de precompilación*/
#include lt; #include lt;stdlib.hgt;
#include lt;conio.hgt;
#include lt;string.hgt;
/*Tipo de datos personalizado */
typedef struct Student{
char xh[10]; //Número de estudiante
char xm[15] //Nombre p>;
int cj[3]; //Calificaciones de 3 cursos
}STU, *STUP;
typedef struct stunode{
Datos de STU; /Variable de estructura
struct stunode *next; //Variable de puntero que apunta al siguiente nodo
}Nodo, *LinkList;
/ *Descripción de función personalizada* /
int initList(LinkList *L);
int insertLinkList(LinkList L, STU x, int i);
void firstcreatLinkList(LinkList L);
void rearcreatLinkList(LinkList L);
int eliminarLinkList(LinkList L, int i
LinkList localizarLinkList(LinkList L, char *xhp);
void disp(LinkList L);
int linklen(LinkList L);
int menu();
int menu1() ;
/*Definición de función*/
/*Función de menú*/
int menu(){
int num <; /p>
while(1){
system("cls"); //Borrar la pantalla
printf(" ----- ----- --Sistema de gestión del desempeño de los estudiantes-------------\n\n");
printf(" 1--Crear tabla de desempeño de los estudiantes 2- -Insertar calificaciones de los estudiantes\ n\n");
printf(" 3--Eliminar calificaciones de estudiantes 4--Buscar por ID de estudiante\n\n");
printf(" " 5-- Mostrar tabla de puntuación del estudiante 0--Salir\n\n");
printf(" --------------------- ---- ----------------\n");
printf("Ingrese 0-5: ");
scanf(" d",amp;num);
fflush(stdin);
if(numlt;0||numgt;5){
printf("Reseleccionar ! ¡Presiona cualquier tecla para continuar! ");
getch()
;}
else
romper;
}
devolver num;
}
/*Función de submenú*/
int menu1(){
int num;
while(1){
sistema ("cls");//Borrar la pantalla
printf("------------Crear hoja de puntuación del estudiante------------- \n\n");
printf(" 1--Método de inserción de cabeza 2--Método de inserción de cola\n\n");
printf(" ---- -------------------------------\n");
printf ("Ingrese 1-2:");
scanf("d",amp;num);
fflush(stdin);
if( numlt;1||numgt;2){
printf("¡Volver a seleccionar! ¡Presione cualquier tecla para continuar!");
getch();}
else
break;
}
return num;
}
/*Función de inicialización*/
int initLinkList(LinkList *L){
*L=new Node; //Aplica para el nodo principal
if(*L==NULL){
printf("¡No se pudo solicitar el espacio!\n");
exit(0); L)- gt; siguiente=NULL;
return 1;
}
/*Insertar función*/
int insertLinkList( LinkList L, STU x, int i){
LinkList p=L; //El puntero de trabajo apunta al nodo principal
LinkList newp; node
int j=0; //Establece el contador en 0
//Encuentra la posición de inserción para que el puntero de trabajo p apunte al i-1º nodo
while(p amp; amp ; jlt; i-1){
p=p-gt; siguiente;
}
/ /Si i es demasiado grande, p está vacío, si i es demasiado pequeño, satisface jgt; i-1
if(p==NULL || jgt; i-1){
printf("¡La posición no es razonable! \n");
printf("¡Volver a seleccionar! ¡Presione cualquier tecla para continuar!");
getch();
return 0;
}
//Insertar
newp=nuevo Nodo;
newp-gt; data=x;
newp; -gt; siguiente=p-gt; siguiente;
}
/*Función de creación de interpolación de encabezado
*/
void firstcreatLinkList(LinkList L){
int i, m; STU x; LinkList p
printf("Ingrese el enlace que necesita; que se creará ahora Número de estudiantes: ");
scanf("d",amp; m);
for(i=1;ilt;=m;i){
printf("Por favor ingrese los datos del désimo estudiante:\n", i
printf("ID del estudiante:
scanf); ("s", x.xh);
printf("Nombre: ");
scanf("s", x.xm); printf("Número alto en idioma C inglés (separado por espacios): ");
scanf("ddd",amp;x.cj[0],amp;x.cj[1],amp; x.cj[ 2]);
p=nuevo nodo;
p-gt; datos=x
p-gt; gt; siguiente;
L-gt; siguiente=p;
}
fflush(stdin); >
/*Función de creación de interpolación de cola*/
void rearcreatLinkList(LinkList L){
int i, m STU x; p>
printf("Ingrese el número de estudiantes que se crearán ahora:");
scanf("d",amp; m
for(i); =1; ilt; =m;i){
printf("Por favor ingrese los datos del désimo estudiante:\n", i);
printf("ID del estudiante: ");
p>scanf("s",x.xh);
printf("Nombre:");
scanf("s" ,x.xm);
printf("Inglés de alto nivel en lenguaje C (separado por espacios):"
scanf("ddd", amp; x.cj[ 0], amp; cj[1],amp;x.cj[2]);
p=nuevo nodo;
p-gt;data=x;
p-gt;siguiente=NULL;
q-gt;siguiente=p;
q=p; p>
fflush( stdin);
}
/*Función de visualización*/
void disp(LinkList L){
LinkList p=L- gt;
printf("10s15s7s7s7s\n", "número de estudiante", "nombre", "matemáticas superiores", "lenguaje C", "inglés");
while(p){
printf("10s15s7d7d7d\n", p-gt; datos.xh, p-gt; datos.xm,
p-gt; datos.cj[0], p-gt; datos.cj[1], p-gt; datos.cj[2]);
p=p-gt;siguiente;
}
printf("¡Presione cualquier tecla para continuar!"
getch()
}
<); p >/*Encontrar la longitud*/int linklen(LinkList L){
LinkList p=L-gt;
int i=0; ;
while(p){
i ; p=p-gt; siguiente
}
return i; p>
}
/*Función de eliminación*/
int deleteLinkList(LinkList L, int i){
LinkList q, p=L; // Deje que el puntero de trabajo p apunte al nodo principal, q recuerde el nodo eliminado
int j=0; // Inicialización del contador
// Encuentre la posición de eliminación, de modo que el puntero de trabajo p apunta al nodo i-1
while(p-gt; next amp; amp; jlt; i-1){
p=p-gt; ; j;
}
// Si i es demasiado grande, p-gt; next está vacío. Si i es demasiado pequeño, jgt; >
if( p-gt; next==NULL || jgt; i-1){
printf("La posición no es razonable, ¡vuelve a ingresar!");
getch();
return 0;
}
//Eliminar
q=p-gt;
p -gt; siguiente=q-gt; siguiente;
eliminar q; >
/*Función de búsqueda */
Lista de enlaces localizarLista de enlaces(Lista de enlaces L, char *xhp){
Lista de enlaces p=L-gt
> while(p){ p>
if(strcmp(xhp, p-gt; data.xh)==0)break
p=p-gt siguiente; p>
} p>
return p;
}
/*función principal*/
void main(){
int menunum, pos; LinkList L=NULL, posp; char xh[10];
switch(menunum){
caso 0: exit(0);
caso 1: if(initLinkList(amp; L)){
if( menu1()==1)
firstcreatLinkList(L);
else
rearcreatLinkList(L);
}
break;
caso 2: printf("\nPor favor ingrese los datos del estudiante a insertar:\n");
printf("ID del estudiante:");
scanf("s", x.xh
printf("Nombre:
scanf("s", x.xm);
printf("Lenguaje C avanzado:
scanf("ddd", amp; x.cj[ 0); ],amp;x.cj[1],amp;x.cj[2]);
while(1){
printf("Ingrese la posición del estudiante (1 -d): ", linklen(L) 1);
scanf("d", amp; pos);
if(insertLinkList(L, x, pos) )) break;
}
break;
caso 3: while(1){
printf("Ingrese el valor que desea posición del estudiante eliminada (1-d): ", linklen(L));
scanf("d", amp; pos);
if(deleteLinkList(L, pos) )break;
}
break;
caso 4: printf("Ingrese el número de estudiante que está buscando: "
);scanf("s", xh);
posp=locateLinkList(L, xh);
if(posp){
printf(" El estudiante Los resultados son los siguientes:\n");
printf("10s15s7s7s7s\n", "ID de estudiante", "Nombre", "Matemáticas superiores", "Lenguaje C", "Inglés" );
p>printf("10s15s7d7d7d\n", posp-gt; data.xh, posp-gt; data.xm,
posp-gt; data.cj[ 0], posp-gt ;data.cj[1], posp-gt; data.cj[2]);
}
else
printf ("Las calificaciones del estudiante no existen\n");
printf("¡Presiona cualquier tecla para continuar! ");
getch();
break;
caso 5: disp(L);
}//switch
}//mientras
}