¿Cómo implementar el problema de recuperación de información de los estudiantes? Programación en C++
Guarde la información de los estudiantes en una lista enlazada individualmente. Le daré el código fuente que escribí: ¡échele un vistazo y úselo!
//el trabajo de 21chenxb
//2009/7/1
////////////////// ////////////////Inclusión del archivo de encabezado
#include
#include
#include
#include
#include
#include
///////////////////////////////////Predefinido
#define ERROR 0
#define OK 1;
///////////////////////// // ///////Definición de estructura
struct Student
{
char Studentno[10];//Número de estudiante
char nombre[10];//Nombre
char sexo[5];//Género
char jiguan[10];//Lugar de nacimiento
char xueyuan[10];//Universidad
char banji[10];//Clase
};
typedef int ElemType;
typedef struct LNODE
{
datos del estudiante;
struct LNODE *next;
}LNode, *LinkList;
//////////////////////////////// Las funciones de implementación necesarias para estructuras de almacenamiento (listas enlazadas individualmente)
//Inicializar lista enlazada individualmente
int init(LinkList &L)
{
L=(LinkList)malloc(sizeof( LNode));
if(L)
L->next=NULL;
return OK;
}/*init */
//Encontrar la longitud de la tabla
int ListLength(LinkList L)
{
LinkList p=L->next
int n=0;
mientras(p!=NULL)
{
n++;
p=p->siguiente;
}
return n;
}/*getLinklist length*/
//Insertar operación
int ListInsert(LinkList &L,int i, estudiante e)
{
LinkList s,p = L
int; j = 0;
while (p && j < i-1)
{ p = p->siguiente ++j }
if ( !p)
devuelve -1;
s = (LinkList) malloc ( tamaño de (LNode));
s->data=e;
s->siguiente = p->siguiente ;
p->siguiente = s;
retorno 1;
}/*ListInsert antes de i*/
/// //////////////////////////////Sección de declaración de funciones
void menu();//Mostrar menú
void add(LinkList stuinfo);//Agregar información
void del(LinkList stuinfo);//Eliminar información
void que(LinkList stuinfo);/ /Buscar información
void baobiao(LinkList L);//Mostrar toda la información
void xuanze(LinkList stuinfo);//Selección después de que el usuario complete la operación
void start(int Choose,LinkList stuinfo);//Iniciar mientras el programa se está ejecutando
int addiden(LinkList stuinfo,student stu);//Se utiliza para determinar si aparece el mismo número de estudiante al agregar información
void help(LinkList stuinfo);//Información de ayuda
void start();//Comenzar en un nuevo inicio
void Exception();/ /Manejar excepción de operación
p>///////////////////////////////Parte de función principal
void main() p>
{
cout<<"----------------INFORMACIÓN IMPORTANTE ----- --------- -------"< cout<<"¡Este programador funciona con 21chenxb!"< cout<<"Puedes elegir 5 y mirar la información de ayuda."< cout<<"Debes tener más cuidado o perderás los datos"< cout<<" ----------------------------------------- --------- ----"< inicio(); } ////// ///////// /////////////Parte de implementación de función detallada void menu()//Menú { p> cout< <"------El sistema de gestión de estudiantes se está ejecutando------"< cout<<"Menú:"< cout<<"--------------------------------------- --------- ------"< ; cout<<"| N. Salir del sistema (N=0 o cualquier cadena no numérica). |"< cout<<" | 1. Agregar información del estudiante |"< cout<<"| Consultar información del estudiante |"< cout<<"| 4. Informar información del estudiante |"< cout<<"| Información de ayuda |"< cout<<"------------------------------ ---- ---------------------"< cout<<"¡Por favor seleccione una operación!"< cout<<"----------------tu trabajo está comenzando------------------ -"< } void add(LinkList stuinfo)//Add { cout<<"- ----- ------estás agregando la información del estudiante-------"< int n; char temp; información del estudiante; cout<<"Nombre:"; cin>>info.nombre; cout<<"Género :"; p> cin>>info.sex; cout<<"Número de estudiante:"; cin>>info.studentno; if (addiden(stuinfo,info)==1) { cout<<"¡Número de estudiante duplicado! ¡Compruebe y agregue nuevamente!"< cout<<"----------------Se pasa la excepción-------------"< cout<<"¡Añadir de nuevo ahora!"< add(stuinfo); } cout<<" Ciudad natal:"; cin>>info.jiguan; cout<<"Universidad:"; cin>>info.xueyuan; cout <<"Clase:"; cin>>info.banji; n=ListLength(stuinfo)+1; ListInsert (stuinfo,n, info); //////////////////////////////////// //////// /////////// cout<<"¿Continuar agregando?"<&l t;endl<<"1→continuar 2→end"< cin>>temp; cambiar(temp) { p> caso '1': agregar(stuinfo);romper; caso '2': xuanze(stuinfo);romper; predeterminado: Excepción();romper ; } } void del(LinkList stuinfo)//Delete { cout< <"----------------estás eliminando la información del estudiante-------"< int flag=0; p> estudiante que; cout<<"Por favor, ingrese el número de estudiante que desea eliminar:"< cin>>que.studentno; Lista de enlaces p,q; p=stuinfo->siguiente; q=stuinfo; while(p&&flag!=1) p> { if(strcmp((p->data).studentno,que.studentno)==0) { bandera =1; //q=p->next; p=q->next;//Método de eliminación correcto, el método de eliminación anterior es incorrecto q- >next=p->next;// free(p); cout<<"¡Eliminación exitosa!"< } más { p=p->siguiente; q=q->siguiente; } if(flag==0) { cout<<"La eliminación falló, no existe dicha información de identificación del estudiante !"< } } ///////////////////// ///////// ///////// xuanze(stuinfo); } void que(LinkList stuinfo )//query { cout<<"------------estás buscando la información del estudiante-------"< int flag=0; estudiante que; cout<<"Ingrese el número de estudiante que desea consultar:"< cin>> que.studentno; LinkList p; p=stuinfo->siguiente; while(p) { if(strcmp((p->data).studentno,que.studentno)==0)//Las cadenas solo se pueden usar para comparar > { flag=1; cout<<"¡Recuperación exitosa!"< cout<<"Número de identificación del estudiante"< cout<<(p->datos).studentno< } p=p->siguiente; } if(bandera ==0 ) { cout<<"¡La consulta falló, no existe dicha información sobre el número de estudiante!"< } / ///////////////////////////// xuanze(stuinfo); } p> int addiden(LinkList stuinfo,student stu)//Se utiliza para determinar si el ID de estudiante agregado está duplicado { LinkList p; int flag=0; p=stuinfo->siguiente; while(p) { if(strcmp(( p->data).studentno,stu.studentno)==0)//Las cadenas solo se pueden usar para comparar { flag=1 ; } p=p->siguiente; } devolver bandera; } void baobiao (LinkList L)//Informe, muestra toda la información del estudiante { cout<<"----------- -Está toda la información de los estudiantes ---------"< LinkList p,stuinfo=L; p=L; cout<<" ID de estudiante"< setw(12)< <"Universidad"< while(p->siguiente) { p= p->siguiente; cout<<(p->datos).studentno<&l t;setw(10)<<(p->datos).nombre<< setw(10)<<(p->datos).sexo< setw(10)<<(p->data).xueyuan< } cout< //////////////función final xuanze( stuinfo); } void xuanze(LinkList stuinfo)//Selección después de la operación { cout<<"- - ----------¡Tu trabajo ha terminado, por favor da una nueva opción!-------"< char xuanze; cout <<"¡Esta operación ha terminado!"; cout<<"¿Continuar? y/n? "< //system("pausa" p> cin>>xuanze; if(xuanze=='y') { system("cls"); // qingping int elegir; menú(); cin>>elegir; comenzar(elegir,stuinfo ); p> } más { if(xuanze=='n') { p> retorno; } más { Excepción(); } } } void comenzar(int elegir,LinkList stuinfo)//elección al principio { switch(elegir) { caso 0: cout<<"Salió correctamente, ¡bienvenido a volver!"<< endl;break; caso 1: add(stuinfo);break; caso 2: del(stuinfo);break; caso 3: que( stuinfo);break; caso 4: baobiao(stuinfo);break; caso 5: ayuda(stuinfo);break; predeterminado: p> cout<<"¡Entrada ilegal! ¡El sistema sale automáticamente! "< return; } } void help(LinkList L)//Función de visualización de información de ayuda { int t; Lista de enlaces stuinfo=L; co ut<<"-------estás leyendo información útil------------"< cout<<"a. Este sistema tiene not El mecanismo de lectura y escritura de archivos se usa solo para probar algoritmos "< cout<<"b. Agregue información según se le solicite y no cierre el programa antes de realizar la prueba. endl; cout<<"c. El número de serie en el menú es el código de operación. En el mensaje de solicitud, siga el código de solicitud."< cout< <"d. Lo que hiciste no es bueno. ¡Está bien, gracias por tu consejo! 1 → Regresar. p> { xuanze(stuinfo); //Se inicia el programa regular } else { Exception();//El programa se inicia después de una mala operación } } void start()//El programa comienza { int Choose; LinkList stuinfo; init(stuinfo); ////////// ///////////////// menú (); cin>>elegir; comenzar(elegir, stuinfo); } void Exception()// Se utiliza para manejar el mal funcionamiento del usuario { cout<<"- ------------------------- ---------"< cout< cout<<"¡Entrada ilegal, opere con cuidado!"< system("pause"); system("cls") ; cout<<"¡Este sistema se reinicia automáticamente!"< cout< cout<<"---- ------------------------- ------"< inicio(); }