Red de conocimiento informático - Computadora portátil - Sistema de gestión de estudiantes de lenguaje C

Sistema de gestión de estudiantes de lenguaje C

#include

#include

#include

#include

#definir máximo 20

typedef struct estudiante //estudiante

{

char sno[max]; // número de estudiante

char sname[max] // Nombre

char sex[max]; //Género

char age[max]; //Edad

char part[max] //Departamento

char clases[max]; //clase

char calificación[max]; //calificación

estructura estudiante* siguiente

} estudiante;

student* head;

int LogOn() //Módulo de inicio de sesión, se ha implementado que la contraseña ingresada no se repetirá si descubre que ingresó. número incorrecto en el medio, puede retroceder y volver a ingresar

{

char nombre de usuario[max], contraseña[max]

printf(" \nIngrese el nombre de usuario: ");

scanf("s", nombre de usuario);

printf("\nIngrese la contraseña (hasta 15 dígitos): ");

//Comience con No hace eco y admite el modo de retroceso para obtener la contraseña ingresada

int i=0

while((igt;=0)amp; ;amp;(contraseña[i]=getch( ))!=13)//La condición igt;=0 se usa para limitar el rango de retroceso

{

if(contraseña [i-1]=='\b' )//Manejo de la tecla de retroceso

{

printf("ccc", '\b', '\0', ' \b');

i=i-2;

}

si no

printf("*"); p>

}

contraseña[--i]='\0';

//Se ha obtenido la contraseña.

Verificar la identidad del usuario

if(!strcmp(nombre de usuario, "zhang")amp;amp;!strcmp(contraseña, "8147086"))

{

printf("\n¡Inicio de sesión exitoso!");

devuelve 1;

}

de lo contrario

devuelve 0;

}

void regist()

{

char ch;

estudiante *s, *ptr // s; se usa para crear nuevos nodos y ptr se usa para almacenar temporalmente el nodo principal

do

{

s=(student*)malloc(sizeof( estudiante) ); // Crear un nuevo nodo de estudiante

printf("\nIniciar registro..."); //Iniciar registro

printf("\nPor favor ingrese el nombre del estudiante Número de estudiante: ");

scanf("s", s-gt; sno);

printf("\nPor favor ingrese el nombre del estudiante: ");

p>

scanf("s",s-gt;sname);

printf("\nIngrese el género del estudiante:

scanf(); " s", s-gt; sex);

printf("\nIngrese la edad del estudiante:

scanf("s", s-gt; edad );

printf("\nPor favor ingrese el departamento del estudiante: "

scanf("s", s-gt;depart); printf("\nIngrese la clase en la que se encuentra el estudiante: ");

scanf("s", s-gt; clases);

printf("\nIngrese el calificación del estudiante");

scanf("s", s-gt; calificación);

ptr=head;

head=s ;/ /Inserte el nuevo nodo al principio de la cola

s-gt; next=ptr;

fflush(stdin); yo ¿Quieres continuar con el registro? (Y/N)");

scanf("c", amp; ch);

} while(ch=='Y' ||ch= ='y');

return;

}

void ElePrint(char str[]) //Resulta un solo elemento

{

if(str==NULL) salir(0);

printf("s", str); unsigned int i=0 ;ilt; 12-strlen(str); i ) printf(" "); // Para alinear la salida, es necesario insertar algunos espacios

return; >

}

int LinePrint(student *ptr) //Emitir una línea

{

if(ptr==NULL) //Verificar el pasado en puntero

return 0

printf("\n"

ElePrint(ptr-gt; sno); >ElePrint(ptr-gt; nombre);

/p>

ElePrint(ptr-gt;edad);

ElePrint(ptr-gt;sexo);

ElePrint(ptr-gt;salir); >

ElePrint(ptr-gt; clases);

ElePrint(ptr-gt; calificación);

devolver 1

}

void print() //Imprimir toda la información del estudiante

{

estudiante *ptr=head

printf("\nNúmero de identificación del estudiante y nombre La edad y el género están relacionados con la clase y el grado");

while(ptr)

{

LinePrint(ptr);

ptr=ptr-gt; siguiente;

}

printf("\n");

retorno; /p>

void search()//Módulo de consulta

{

int método; //Método de consulta

char no[max], nombre [max], departam [max], clss[max], calificaciones[max]; //Se utiliza para recibir palabras clave de consulta

while(1)

{

printf( "\nPor favor seleccione el método de consulta");

printf("\n1. Buscar por número de estudiante");

printf("\n2. Buscar por nombre ");

printf("\n3. Buscar por departamento");

printf("\n4. Buscar por clase");

printf( "\ n5. Consulta por grado");

printf("\n6.Imprimir toda la información del estudiante");

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

scanf("d", amp; método);

estudiante *p=head, *temp;

cambiar(método)

{

caso 1:

printf("\nPor favor ingrese el número de estudiante a consultar:

scanf("s); ", no );

mientras(p)

{

if(!strcmp(p-gt; sno, no))

romper ;

else

{

temp=p;

p=p-gt;

}

}

printf("\nNúmero de estudiante, nombre, edad, sexo, grado de clase"); /p>

break;

caso 2:

printf("\nIngrese el nombre a consultar:

scanf("); s", nombre) ;

printf("\nNúmero de estudiante, nombre, edad, sexo, calificación de la clase");

while(p)

{

if(!strcmp(p-gt; sname, nombre))

LinePrint(p);

p=p-gt;ne;

xt;

}

break;

caso 3:

printf("\nPor favor ingrese el departamento donde se encuentra el estudiante:" ) ;

scanf("s",departm);

printf("\nNúmero de estudiante, nombre, edad, sexo, grado de clase"); while(p )

{

if(!strcmp(p-gt;depart,departm))

LinePrint(p); p>p =p-gt; siguiente;

}

break;

caso 4:

printf("\nPor favor, ingrese la clase de ubicación del estudiante: ");

scanf("s", clss);

printf("\nPor favor ingrese la calificación del estudiante: ");

scanf("s", calificaciones);

printf("\nNúmero de estudiante, nombre, edad, sexo, calificación de la clase"); p>

{

if(!strcmp(p-gt; clases, clss)amp; amp; !strcmp(p-gt; calificación, calificaciones))

LinePrint (p);

p=p-gt; siguiente;

}

caso 5:

printf ("\nPor favor ingrese la calificación del estudiante:");

scanf("s", calificaciones);

printf("\nNúmero de estudiante, nombre, edad, sexo, calificación de la clase ");

while(p)

{

if(!strcmp(p-gt; calificación, calificaciones))

LinePrint(p);

p=p-gt;

}

romper; caso 6:

imprimir();

romper;

caso 7:

retorno; :

printf("¡Lo sentimos, no existe tal método de consulta!"); p>

}

void modificar()//Modificar la información del estudiante

{

char num[max]; estudiante *p=head;

printf("\nIngrese el número de estudiante que desea modificar: "); p>

mientras( p)

{

if(!strcmp(p-gt; sno, num))

romper; >

else

else

p>

p=p-gt; siguiente

}

if( p==NULL)

{

printf("\nError: ¡No hay información sobre este estudiante!\n");

}

LinePrint(p);

printf("\nIngrese la información del estudiante que desea modificar:");

/p>

printf("\n1.Nombre");

printf("\n2.Género");

printf("\n3.Edad");

printf("\n4. Departamento");

printf("\n5. Clase");

printf("\n6 .grado") ;

char nombre1[max], sexo1[max], edad1[max], departamento1[max], clase1[max], grado1[max]

int select; /p>

fflush(stdin);

scanf("d", amp; select);

printf("\nIngrese nueva información:

cambiar(seleccionar)

{

caso 1:

scanf("s",nombre1)

; strcpy(p-gt; nombre, nombre1);

break;

caso 2:

scanf("s" , sexo1);

strcpy(p-gt; sexo, sexo1);

descanso;

caso 3:

scanf( "s", edad1); /p>

strcpy(p-gt; edad, edad1);

break;

caso 4:

scanf("s",salida1

strcpy(p-gt;salir,salir1);

romper;

caso 5:

scanf("s) ", clase1);

strcpy(p-gt; clases, clase1);

break;

caso 6:

scanf ("s", grado1);

strcpy(p-gt; grado, grado1);

descanso

predeterminado:

printf("\nError!");

romper;

}

LinePrint(p); p>

}

void del()//Eliminar la información de un estudiante

{

estudiante *p =head, *temp=head, * s;

char num1[max];

printf("\nIngrese el número de estudiante que desea eliminar: "

scanf( "s",num1);

while(p)//Encontrar el nodo donde se encuentra el estudiante

{

if(!strcmp(p- gt; sno, num1))

romper

else

{

temp=p; p=p-gt; siguiente;

}

}//mientras

if(!p)

{

printf("\nNo hay información sobre este estudiante.");

return

}

LinePrint(p); //Enviar la información del estudiante

printf("\n¿Realmente desea eliminar la información del estudiante? (S/N)")

char ch;

fflush(stdin);

scanf("c", y ch;

if(); ch=='Y'||ch=='y')

{

s=p-gt; siguiente

temp- gt; =s;

free(p);

printf("\nLa información del estudiante ha sido eliminada."); > p>

return;

}

void sort() //Módulo de clasificación. Organice los registros de los estudiantes por número de estudiante de menor a mayor.

Implementado utilizando un algoritmo de clasificación de burbujas

{

student *ptr, *s=head, *p>int count=0, count1;

while(s)//Cuenta el número de nodos de la lista enlazada

{

count;

s=s-gt

p>

p>

}

for(int i=1;ilt;count;i)

{

ptr=head;

p=NULL;

count1=count-i; // Se utiliza para controlar el punto final de cada ronda de clasificación de burbujas, es decir, cada vez que el nodo tiene el estudiante más pequeño. el número se mueve al i-ésimo nodo desde abajo

while(ptramp;amp;ptr-gt;nextamp;amp;(count1--))

{

if(strcmp(ptr-gt; sno,ptr-gt;siguiente-gt;sno)gt;0)

{

s=ptr-gt;siguiente

ptr-gt; next=s-gt; next;

if(p==NULL) //ptr está al principio de la cola

head=s;

else

else

p>

p-gt; siguiente=s

s-gt; =ptr;

p=s;

}

si no

{

ptr=ptr-gt ; siguiente;

if(p==NULL) //ptr está al principio de la cola

p=head

else

p=p-gt; siguiente;

}

}

}

regresar; >}

void quit()

{

char ch;

printf("\n¿Realmente quieres salir? ( Y/N)");

fflush(stdin);

scanf(" c", amp; ch);

if(ch==' Y'||ch=='y')

salir(0);

retorno

}

int principal( )

{

int option;

printf(" \nCopyright@2005 KongXinCai Todos los derechos reservados."); "\n¡Bienvenido al sistema de gestión de información de estudiantes!\n");

//Módulo de inicio de sesión

int icheck=0

while(ichecklt; 3; )

{

if(LogOn()==0)

icheck

else

romper; ;

}

if(icheck==3)

{

printf("\n¡Tres intentos de inicio de sesión fallidos consecutivos, salga! ");

salir(0);

}

//Interfaz del sistema

mientras(1)

{

printf("\n\nPor favor seleccione el requerido

Servicio: ");

printf("\n1.Registration");

printf("\n2.Query");

printf(" \ n3.Modify");

printf("\n4.Delete");

printf("\n5.Sort");

printf( " \n7. Promedio");

printf("\n6.Exit\n");

scanf("d", amp; opción);

cambiar(opción)

{

caso 1:

regist()

romper

caso 2:

buscar();

romper;

caso 3:

modificar(); >romper;

caso 4:

del();

romper

caso 5:

ordenar();

romper;

caso 6:

salir();

romper

}

}

devuelve 0;