Escrito en lenguaje c

# incluir ltiostream.h gt// cin y cout

# incluir ltstdlib.h gt

# incluir ltmalloc.h gt//Utilizar la función de aplicación de memoria malloc() y la memoria función de liberación gratuita().

# include ltstring.h gt//Procesamiento de cadenas

# include ltstdio.h gt//Operación de archivo (leer archivo)

Dirección de estructura/ *Inicio dirección*/

{

ciudad char[10];/*ciudad*/

ciudad char[10];/*condado*/< /p >

char pueblo[10];/*municipio*/

};

número de teléfono de la estructura/*información de contacto*/

{< / p>

char SJ[50]; /*Teléfono móvil*/

char JD[30] /*Teléfono de casa*/

char XD[30];/ *Número de teléfono de la escuela*/

};

Personal de la estructura/*Información personal*/

{

nombre del personaje[20] ; /*Nombre*/

char sex[10]; /*Género*/

Char MZ[16] /*Nacionalidad*/

Verificar ErGJ[17];/*Nacionalidad*/

char XL[19];/*Educación*/

};

Puntuación Estructural//Nivel

{

Número de carácter[20]; //Número de estudiante

char inglés[20];

char chino[20];

char math[20];

charphysics[20];

};

Typedef struct linknode //Definición El tipo de nodo.

{

char dirección[100]; //dirección

char cumpleaños[100]; //fecha de nacimiento

Estructura puntuación sc;//resultado

struct PE; //información personal

struct phone te; //información de contacto

boolean flag;

struct linknode * next

}Tipo de nodo;

Lista de candidatos clasificados según las puntuaciones de las pruebas

{

tipo de nodo * head

Público:

lista();

Lista::~ Lista();

nodo de enlace * crear lista (int) ; //Crear una lista enlazada

int listlen(); //Devuelve la longitud de la lista enlazada

nodetype * findnode(int); //Devuelve el nodo encontrando el puntero de número de secuencia.

nodetype * find(char c[]); //Devuelve el puntero al nodo buscando el nombre.

int find 2(char c[]); //Devuelve el número de serie del nodo buscando el nombre.

nodetype * ins node(int); //Insertar nodo

void delnode(int); //Eliminar nodo

nodetype * load();/ /Inicialización: leer datos desde el exterior.

void readstr(FILE *f, char * string); // Función de lectura de línea

bool check(char *a, char * b); las cuerdas son iguales.

void help(); //Mostrar el menú de ayuda

void edit person(nodetype *); //Editar descripción personal

void edit score(nodetype) * ); //Editar rendimiento académico

void edit phone(nodetype *); //Editar información de contacto

void dispname() //Mostrar los nombres de todos los estudiantes.

void disp node(nodetype * p); //Muestra toda la información de un estudiante.

void disp person(nodetype *); //Muestra la descripción personal del estudiante.

void dispscore(nodetype *); //Muestra el rendimiento académico de los estudiantes.

void disp phone(nodetype *); //Muestra la información de contacto del estudiante.

};

Boolllist:: check (char * a, char * b) // Compara dos cadenas para determinar la igualdad.

{

int I;

int j = strlen(b

for(I = 0; i ltj; i); )

{

Si (*a==*b)

{

a;

b ;

}

Otros

Devuelve 0;

}

Devuelve 1;

}

nodetype * list::creat list(int n)//Crea una lista vinculada.

{

tipo de nodo *h=NULL, *s, *t;

int I = 1

for(int j; = 0; j ltn; j )

{

If(i==1) //Crea el primer nodo.

{

h=(tipo de nodo*)malloc(sizeof(tipo de nodo));

h- gt next = NULL

t = h;

}

De lo contrario // crea los nodos restantes

{

s = (tipo de nodo *)malloc (tamaño de (tipo de nodo));

s- gt; siguiente = NULL

t->; siguiente = s;

t = s; //t Siempre apunta al último nodo de la lista enlazada individualmente generada.

}

i;

}

cabeza = h;

Devolver h;

}

Lista vacía::readstr(FILE *f, char *string)

{

Hacer

{

//①: Lea primero una línea de texto.

fgets(string, 255, f); //fgets(): Lee una cadena de longitud 255-1 del archivo f.

//Y guárdalo en una cadena.

} while((string[0]== '/')| |(string[0]== '\n');

Retorno;

}

tipo de nodo* Lista::carga()

{

ARCHIVO * fp

tipo de nodo * p;

char c[255];

int num

if((fp=fopen("student.txt "," r ")== NULL)

{

cout lt lt"No se puede abrir el archivo"

Devuelve 0;

}

readstr(fp, c );

sscanf(c, "Longitud del enlace: d", ampnum); //Obtener la longitud de la lista enlazada

p = creat list(num); Crear una lista de enlaces

for(int I = 0; i ltnumi)

{

readstr(fp,c);

strcpy(p - gt; dirección, c);

readstr(fp, c

strcpy(p- gt; cumpleaños, c

); readstr(fp, c);

strcpy(p-gt; número de serie, c);

readstr(fp, c); - gt; sc .chino, c);

readstr(fp, c

strcpy(p- gt; sc.inglés, c

readstr(fp, c);

strcpy(p-gt; sc.math, c);

readstr(fp, c); (p- gt ; sc.physics, c);

readstr(fp, c

strcpy(p- gt; pe.name, c

);

readstr (fp, c);

strcpy(p-gt; pe.sex, c);

readstr(fp, c); >strcpy(p - gt; P.E. GJ, c);

readstr(fp, c);

strcpy(p- gt; P.E. MZ, c

);

readstr(fp, c);

strcpy(p- gt; P.E. XL, c);

readstr(fp, c);

strcpy(p-gt; te. SJ, c); c);

strcpy(p- gt; te. JD, c);

readstr(fp, c);

strcpy(p- gt; te. return p;

}

void list::dispnode(nodetype * p)//Muestra toda la información de un estudiante.

{

if(p!=null)

{

mostrar persona(p);

disp puntuación(p);

disp teléfono(p);

}

}

Lista nula:: dispname() / /Muestra los nombres de todos los estudiantes.

{

tipo de nodo * p = head

cout lt lt"Estudiantes existentes:"

if(p==NULL)

cout lt lt"Sin datos del estudiante"

Y (p!=null)

{

cout lt lt"Nombre: "

p = p- gt; next;

}

}

Int List::listlen() //return La longitud de la lista enlazada.

{

int I = 0;

tipo de nodo * p = cabeza

Y (p!=null)

{

p = p-gt; siguiente;

i;

}

regresar;

}

nodetype * list::findnode(int I)//Devuelve el puntero del nodo al encontrar el número de secuencia.

{

tipo de nodo * p = cabeza

int j = 1;

if (i gtlistlen()| | I lt; =0) // me desbordo o desbordo

Devuelve NULL

Otros

{

Y (p! = NULL amp ampj ltI ) //Encuentra el nodo I-ésimo y apúntalo con p.

{

j;

p = p- gt; siguiente

}

Devuelve p ;

}

}

Nodetype* List::find(char c[]) //Devuelve el puntero al nodo buscando el nombre.

{

tipo de nodo * p = cabeza

int j = 1;

strcat(c, "\n");/ /Todas las cadenas leídas desde fuera tienen un carácter de nueva línea al final.

Y (p! = NULL amp amp! (check (c, p- gt; sports. name)) // Encuentra el nodo I-ésimo y apúntalo con p.

{

j;

p = p-gt;

}

Devuelve p; p >}

Int List::find2(char c[]) //Devuelve el número de serie del nodo buscando el nombre. nodetype * p =. head

int j = 1;

strcat(c, "\n"); //Todas las cadenas leídas desde fuera tienen un carácter de nueva línea al final.

And (p! = NULL amp amp! (check (c, p- gt; sports. name)) // Encuentra el nodo I-ésimo y apúntalo con p.

{

j;

p = p- gt; siguiente

}

Devuelve j ;

}

tipo de nodo* Lista:: insnode(int i)

{

tipo de nodo *h=head, *p, * s;

s =(nodetype *)malloc(sizeof(nodetype));//Crear nodo

s- gt; next = NULL

If ( i==0) //i=0, S es el primer nodo de la lista vinculada.

{

s- gt; next = h;

h = s; //Redefinir el nodo principal

}

Otros

{

p = findnode(I); //Encuentra el nodo I y apúntalo con p.

if (p!=null)

{

s- gt; siguiente = p- gt;

p - >; next = s;

}

else cout lt lt "El valor I ingresado es incorrecto"

}

head = h;

Return s;

}

Lista vacía: :delnode(int i) //Eliminar el nodo I.

{

tipo de nodo * h = encabezado, * p = encabezado, * s;

int j = 1

If( i==1) //Eliminar el primer nodo.

{

h = h-gt;

libre(p); Otros

{

p = findnode(I-1); // Encuentra el nodo I-1, p apunta a este nodo.

if (p!= NULL amp ampp->; next!=null)

{

s = p- gt; // s puntos; al nodo que se va a eliminar.

p->; siguiente = s- gt;

Gratis

}

Otros

cout lt lt"El valor I ingresado es incorrecto"

}

head = h;

}

void List: : editar persona(tipo de nodo * p)

{

char c[100];

cout lt lt"Ingrese un nombre:"

CIN gt; gtc;

strcat(c, "\n");

strcpy(p- gt;pe.name, c);

cout lt lt"Ingrese el género:"

CIN gtc;

strcat(c, "\n");

strcpy(p - gt; pe.sex, c);

cout lt lt"Ingrese la fecha de nacimiento (por ejemplo: 1982-1-1):" < endl

CIN gt; gtc;

strcat(c, "\n");

strcpy(p- gt; cumpleaños, c);

cout lt lt" Por favor ingrese Nacionalidad: "

CIN gt;gtc;

strcat(c,"\n");

strcpy(p- gt;p.MZ ,c );

cout lt lt"Ingrese la nacionalidad:"

CIN gt; gtc;

strcat(c, "\n");< /p >

strcpy(p- gt; P.E. GJ, c);

cout lt ltIngrese su nivel educativo: "< ltendl

CIN gt; gtc;

strcat(c, "\n");

strcpy(p- gt; P.E.

XL, c);

cout lt lt"Ingrese la dirección de su domicilio (por ejemplo, No. 11 Jiefang Road, ciudad de Yulin, Guangxi)" < ltendl

CIN gtc; ;

p>

strcat(c, "\n");

strcpy(p- gt; dirección, c);

cout lt lt"Personal edición de información completada!" lt ltendl

disp person(p);

}

void List::editscore(nodetype* p)

{

char a[50];

cout lt lt"Ingrese su número de estudiante:"

CIN gt;

strcat (a, " \ n ");

strcpy(p- gt; sc.num, a);

cout lt lt"Ingrese la puntuación del idioma: "

CIN gt; gta;

strcat(a, "\n");

strcpy(p- gt; sc. chino, a);

cout lt lt"Ingresa tu puntuación en inglés:"

CIN gt;

strcat(a, "\n");

strcpy(p- gt;sc.english,a);

cout lt lt"Ingrese su puntaje de matemáticas:"

CIN gta;

strcat(a, " \ n ");

strcpy(p- gt; sc.math, a);

cout lt lt"Ingrese su puntuación de física. :"

CIN gt; gta;

strcat(a, "\n");

strcpy(p- gt;Ciencia Física a);< /p >

cout lt lt"Edición de puntuaciones de materias completada!" lt ltendl

disp score(p);

}

void List:: editar teléfono (tipo de nodo * p)

{

char c[50];

cout lt lt"Ingrese su número de teléfono móvil:"

CIN gt;gtc;

strcat(c, "\n");

strcpy(p- gt;te. SJ, c);

cout lt lt"Ingrese el número de teléfono de su casa:"

CIN gt; gtc;

strcat(c, "\ n ");

strcpy(p- gt; te. JD, c);

cout lt lt"Ingrese el número de teléfono de la escuela: "

CIN gt; gtc;

strcat(c, "\n");

strcpy(p- gt;te.

XD, c);

cout lt lt"¡Edición de la información de contacto completada!" p>Lista vacía: :disp persona(tipo de nodo * p)

{

cout lt lt"Nombre:"

cout lt lt"Género:"

cout lt lt"Nacionalidad:"

cout lt lt"Nacionalidad:"

cout lt lt"Educación:"

cout lt lt"Fecha de nacimiento:"

cout lt lt"Dirección de casa:"

}

void List:: dispscore(nodetype* p)

{

cout lt lt"Número de estudiante:"

cout lt lt"Logros de China:"

cout lt lt"Puntuaciones en inglés:" ;sc.English;

cout lt lt"Puntuación de Matemáticas:"

cout lt lt"Puntuación de Física:"

}

void List:: disp phone(nodetype * p)

{

cout lt lt"El número de teléfono móvil es: "

cout lt lt" El número de teléfono de casa es"

cout lt lt"El número de teléfono de la escuela es"

}

void List:: help()

{

cout lt ltendl ltltendl

cout lt lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * lt; ltendl

cout lt lt" 1: Editar información personal"

cout lt lt"2. Editar resultados académicos"

cout lt lt" 3: Editar información de contacto"

cout lt lt" 4: Mostrar información personal"

cout lt lt"5: Mostrar logros académicos"

cout lt lt" 6: Mostrar información de contacto"

cout lt lt" 7: Mostrar toda la información sobre el alumno "

cout lt lt" 8: Menú de ayuda "

cout lt lt" 9: Volver al menú anterior "

cout lt lt" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * lt; ltendl

}

Lista::~list()

{

tipo de nodo *pa=cabeza, *pb

Si (¡pop! = vacío)

{

Pb = pa- gt; next;

if(pb==NULL)

Gratis ( pa );

Otros

{

Y (pb!=null)<

/p>

{

Gratis (pa);

pa = pb

Pb = p B- gt;

}

Gratis(pa);

}

}

}

Operador de clase

{

Lista l 1;

Público:

void Loop(); //Bucle principal

void display(); //Mostrar menú

};

Lista::List()

{

head = NULL

}

Operador nulo: display()

{

cout lt ltendl lt ltendl

cout lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"

cout lt lt" 1: Agregar información de un estudiante"

cout lt lt" 2: Eliminar información de estudiante"

cout lt lt" 3: Mostrar los nombres de todos los estudiantes "

cout lt lt" 4: Mostrar toda la información de un solo estudiante por nombre "

cout lt lt" 5: Editar un solo estudiante por nombre"

cout lt lt" 6: Menú Ayuda"

cout lt lt" 7: Guardar datos"

cout lt lt" 0: Salir del sistema"

cout lt "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" ltendl

}

Operador void: : Loop()

{

Lista l 1; //Objeto de lista

char ch[20];

tipo de nodo *p , * head

int I; // Número de serie del nodo de almacenamiento

p = l 1. load(); //Inicialización: leer datos desde el exterior y crear una lista vinculada.

cabeza = p;

display();

mientras(1)

{

cout lt ltendl lt ltendl

cout lt "Ingrese una opción (opción de ayuda - gt; 6):" lt; ltendl

CIN gtch;

/ ///system(" cls ");

if(L1.check(ch, " 1 "))

{

p = l 1 . ins nodo(0);

head = p;

//system(" cls ");

cout lt ltendl

cout lt "* * * * * * * * * * * * * *Agregar información del estudiante* * * * * * * * * * * * * * *" < endl

cout lt; lt"Ingrese su información personal a continuación:"

l 1. editar persona(p);

cout lt lt"Ingrese las puntuaciones de sus materias a continuación:"

l 1. editar puntuación(p);

cout lt lt"Ingrese la información de contacto a continuación:"

l 1. editar teléfono(p);

}

if(L1.check(ch, " 2 "))

{

//system(" cls ");

cout lt ltendl

cout lt lt"* * * * * * * * * * * * * * *Eliminar la información de un estudiante* * * * * * * * * * * * * * * * * *"< lt;endl

l 1. dispname();

cout lt lt"Ingrese el nombre del estudiante:"

CIN gt ; gtch;

I = l 1 . encontrar 2(ch);

l 1 . (L1.check(ch, " 3 "))

{

//system(" cls ");

cout lt ltendl

cout lt lt* * * * * * * * * * * * * * * * Mostrar los nombres de todos los estudiantes* * * * * * * * * * * * * "

l 1. dispname();

}

if(L1.check(ch, "4"))

{

/ /system(" cls ");

cout lt ltendl

cout lt lt"* * * * * * * * * * * * * * * Muestra el nombre de un solo estudiante según en su nombre Toda la información * * * * * * * * * * * * * * * * < lt;endl

l 1. dispname();

cout lt lt" Por favor ingrese el nombre del estudiante: "

CIN gt; gtch;

p = l 1 . find(ch);

l 1

.disp nodo(p);

}

if(L1.check(ch, " 6 "))

{

. Display();

}

If(L1.check(ch, " 7))//Guardar los datos.

{

ARCHIVO * fp

if((fp=fopen("student.txt "," w ")= = NULL)

{

cout lt lt "No se puede abrir el archivo"

Return;

}

int I;

char t[255];

//Asigne L1.listlen() al número en la cadena

sprintf(t, "Longitud del enlace: d\n ", l 1. listlen()); p >

fputs(t, FP);

strcpy(t, "\n");

fputs(t, FP);

p = l 1 . findnode(1); // Apunta el puntero principal a

for(I = 0; i ltl 1 . listlen(); i )

{

fputs(p- gt; dirección, FP); //Dirección de salida

fputs(p- gt; cumpleaños, FP); //Salida de cumpleaños

fputs(p- gt;sc.num, FP); //Número de estudiante de salida

fputs(p- gt; sc.chinese, FP); //Puntuación de idioma de salida

fputs(p- gt; sc.english, FP); //Salida de puntuaciones en inglés

fputs(p- gt; sc.math, FP); //Salida de puntuaciones de matemáticas

fputs(p- gt; sc.physics, FP); //Puntuaciones de física de salida

fputs(p- gt; pe.name, FP); //Nombre de salida

fputs (p- gt; pe.sex, FP); // Género de salida

fputs(p- gt; PE. GJ, FP); // Nacionalidad de salida

fputs( p - gt; PE. MZ, FP); //Exportar nacionalidad

fputs(p- gt; PE. XL, FP); //Exportar calificaciones académicas

fputs(p). - gt ; te. SJ, FP); // salida de teléfono

fputs(p- gt; te. JD, FP); //Número de teléfono residencial de salida

fputs(p-gt;te.

XD, FP); // Genera el número de teléfono de la escuela

fputs(t, FP

p = p- gt; p>

p = cabeza;

fclose(FP);

}

if(L1.check(ch, " 5 ") )

{

char c[20];

//system(" cls ");

cout lt ltendl

cout lt lt"******************Editar estudiantes individuales según el nombre* * * * * * * * * * * * * * * * * * * * * *" lt ; ltendl

l 1. dispname();

cout lt lt"Ingrese el nombre del estudiante:"

CIN gt; gtc;

p = l 1 . buscar(c);

//system(" cls ");

cout lt ltendl lt ltendl

cout lt lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * lt; ltendl

cout lt lt" 1: Editar información personal"

cout lt lt"2. Editar resultados académicos"

cout lt lt " 3: Editar información de contacto"

cout lt lt" 4: Mostrar información personal"

cout lt "5: Mostrar logros académicos"

cout lt lt" 6: Mostrar información de contacto"

cout lt lt" 7: Mostrar toda la información sobre el estudiante"

cout lt lt" 8: Menú de ayuda"

cout lt lt" 9: Volver al menú anterior"

cout lt lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * lttendl

mientras(1)

{< /p >

cout lt ltendl lt ltendl

cout lt lt"Ingrese una opción (opción de ayuda - gt; 8):" lt; ;

//system(" cls ");

if(L1.check(c, " 1 "))

{

//system(" cls ");

cout lt ltendl

cout lt lt"* * * * * * * * * * * * * * Editar información personal* * * * * * * * * * * * * * < lt;endl

l 1. editar persona(p);

}

si no (L1 .check(c, " 2 "))

{

//sistema

(" cls ");

cout lt ltendl

cout lt lt"* * * * * * * * * * * * * * * * * * * Logros académicos de la departamento editorial* * * * * * * * * * * *"< lt;endl

l 1. editar partitura(p);

}

else if( L1.check(c, " 3 "))

{

//system(" cls ");

cout lt ltendl

cout lt lt"* * * * * * * * * * * * * *Información de contacto del editor* * * * * * * * * * * * * * * * *"< lt;endl

l 1. editar teléfono(p);

}

else if(L1.check(c, "4"))

{

//system(" cls ");

cout lt ltendl

cout lt "* * * * * * * * * * * * * *mostrar información personal * * * * * * * * * * * * * *"

l 1. disp persona(p);

}

else if (L1.check(c, " 5 "))

{

//system(" cls ");

cout lt ltendl

cout lt lt"* * * * * * * * * * * * * * * *Mostrar rendimiento académico* * * * * * * * * * * * < lt;endl

l 1. puntuación disp(p);

}

else if(L1.check(c, "6"))

{

//system(" cls ");

cout lt ltendl

cout lt "* * * * * * * * * * * * * * * * * * * Mostrar información de contacto * * * * * * * * * * * * * *"< lt; endl

l 1. disp phone(p);

}

else if(L1.check(c, " 7 "))

{

//system(" cls ");

l 1 . disp nodo(p);

}

else if(L1.check(c, "8"))

{

//system(" cls ");

l 1. ayuda();

}

else if(L1.check(c, " 9 "))

{

Display();

Break; //Utiliza break para saltar de este bucle sin regresar, lo que significa salir del programa.

}

}

}

else if(L1.check(ch, " 0 "))

Retorno;

}

Retorno;

}

int main()

{

Sistema("Color 3A");

Operador chp

CHP. loop();

Devuelve 0;

}

Definitivamente funciona.