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 p>
{
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) p>
{
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: ); p>
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;