Red de conocimiento informático - Conocimiento informático - Programación en lenguaje C del sistema de gestión de información estudiantil

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;

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;

}

/*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){

if(strcmp(xhp, p-gt; data.xh)==0)break

p=p-gt

}

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

}