¡Ayuda para el examen universitario de idioma C! ~
# include & ltiostream & gt
# include & ltiomanip & gt
# include & ltfstream & gt
# include & lt String>
Usar espacio de nombres std
#define max 100;
Estudiantes de la clase
{
Público:
Estudiante*Siguiente;
Público:
Nombre de cadena; //nombre
Núm largo//Número de estudiante
int x, y, z; //Matemáticas, chino, inglés
int AA//Puntuación total
void play(){ cout & lt ;& ltName& lt& lt" El número de estudiante es"
estudiante(string sname, long snum, int sx, int sy, int sz)
{
nombre = sname
num = snum
x = sx
y = sy
z = sz
}
};
Categoría cla
{
Público:
Cla()//Función de construcción
{
stu = 0;
carga();
}
~cla() //Destructor
{
Estudiante* p;
p = estu
mientras(p)
{
p = p-& gt; siguiente;
Eliminar stu
stu = p
} p>
stu = 0; p>
}
void sadd(); //Agregar
void s remove(); //Eliminar p>
void Samend(); /Modificar
void s search(); //Consultar
void stat xis(); //Ordenar
void ssave(); /p>
void sload(); //Leer
//Función de clasificación
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
Privado:
Estudiante* stu//Contacto principal
};
Voidcla:: sad ()//Agregar
{
Estudiante* q;
Nombre de cadena 1;
número largo 1;
int x1, y1, z 1;
system("cls ");
cout & lt& lt" \n **Estudiantes adicionales* * \n " & lt& ltendl
cout & lt& lt"Ingrese estudiantes (separados por espacios)" < & ltendl
cout & lt& ltNombre, número de estudiante, puntaje de matemáticas, puntaje de chino y puntaje de inglés: "< & ltendl
CIN>>name 1>>num 1>>x 1>>y 1>>z 1;
q = nuevo estudiante(nombre1, num1, x1, y1, z 1);
q->; >q->; AA = x 1+y 1+z
1;
si (Stu)
{
Estudiante * t;
t = stu
si (t->;num==num1)
{
cout & lt& ltEl número de estudiante ya existe, vuelva a ingresar
Volver;
}
mientras(t->; siguiente)
{
if(t->;num==num1)
{
cout & lt& ltEl número de estudiante ya existe, vuelva a ingresar
Devolución;
}
t = t- & gt; siguiente;
}
t->; siguiente = q;
}
Otro
{
stu = q;
}
cout & lt& lt"Entrada completada"
}
Void cla::sremove()// eliminar
{
System("cls");
int num 1;
cout & lt& lt"\n**Eliminar información del estudiante* *\n";
cout & lt& lt"Ingrese el número de estudiante del estudiante que desea eliminar:";
CIN>>num 1;
//Encuentre el nodo que desea eliminar.
Estudiante *p1, * p2
p 1 = stu;
mientras(p1)
{
if(p 1->;num==num1)
Descanso;
Otro
{
p2 = p 1;
p 1 = p 1->; Siguiente
}
}
//Eliminar nodo
if(p1!=NULL)//Si se encuentra un nodo, elimínelo.
{
p 1->;play();
cout & lt& lt"¿Estás seguro de que quieres eliminarlo? [Sí/No] " & lt;& ltendl
char c;CIN & gt;& gtc;
if(toupper(c)!='Y ')return;
If (p1==stu) //El nodo a eliminar es el primer nodo.
{
stu = p 1->; Siguiente;
Eliminar p 1; De lo contrario //El nodo que se eliminará es el nodo siguiente.
{
p2->; siguiente = p 1->; siguiente;
Eliminar p 1; >
cout & lt& lt"Se encontró que el número de estudiante era "
}
Else //Nodo encontrado
cout & lt& lt"No ¡Encuentre al estudiante que desea eliminar! \n ";
}
Void cla::samend()//Modificar
{
System("cls");
long num 1;
cout & lt& lt"\n**Modificar información del estudiante* *\n";
cout & lt& lt"Ingrese el número de estudiante a modificar";
CIN & gt;& gtnum 1;
//Encuentre el nodo a modificar.
Estudiante *p1, * p2
p 1 = stu;
mientras(p1)
{
if(p 1->;num==num1)
Descanso;
Otro
{
p2 = p 1;
p 1 = p 1->; siguiente
}
}
if(p1!=null)
p>
{
cout & lt& lt"El número de estudiante es"
cout & lt& lt"Nombre"
cout & lt& lt"Ingrese información modificada: nombre, puntajes de matemáticas, puntajes de chino y puntajes de inglés" >y>& gtp 1->z
p 1->AA = p 1->x+p 1->y+ p 1->z
cout & lt& lt"Modificación exitosa"
}
Else //No se puede encontrar el contacto.
cout & lt& lt"¡No encontrado!\n ";
}
Void cla::ssearch()//Consulta
{
System("cls");
cout & lt& lt" \n**Consultar información del estudiante* * \n " & lt& ltendl
cout & lt& lt"Por favor ingrese el método de consulta:"
cout & lt& lt"1. Consulta por número de estudiante"
cout & lt& lt"2. Consulta por nombre"
cout & lt& lt" p>
cout & lt& lt"3.Return"
char c; CIN & gt; & gtc;
Cambiar (c)
{
Caso "1":
{
número largo 1;
cout & lt& lt"ID de estudiante a consultar"
CIN>& gtnum 1;
//Encuentre el nodo a consultar.
Estudiante *p1, * p2
p 1 = stu;
mientras(p1)
{
if(p 1->;num==num1)
Descanso;
Otro
{
p2 = p 1;
p 1 = p 1->; siguiente
}
}
if(p1!=null)
p>
{
cout & lt& lt"El número de estudiante es"
cout & lt& lt"Nombre:"
cout & lt& lt"query Done...";
}
Else //No se puede encontrar el contacto.
cout & lt& lt"¡No encontrado! \n "
Romper
}
Caso "2":; p>
p>
{
Nombre de cadena 1;
cout & lt& lt"El nombre del estudiante a consultar"
CIN & gt;& gtname 1 ;
//Encuentra el nodo a consultar.
Estudiante *p1, * p2
p 1 = stu;
mientras(p1)
{
if(p 1->;nombre==nombre1)
Romper;
Otro
{
p2 = p 1;
p 1 = p 1->; siguiente
}
}
if(p1!=null)
p>
{
cout & lt& ltname 1 & lt;& lt"Información del estudiante" < & ltendl
cout & lt& lt"Número de estudiante:"
cout & lt& lt"Consulta completada...";
}
Else //Contacto no encontrado.
cout & lt& lt "¡No encontrado! \n ";
Romper
}
Caso "3": retorno;
}
}
Void cla::pxh() //Ordenar por número de estudiante.
{
Estudiante *p1, *p2
int n;
p 1 = stu; n = 1;
mientras(p 1->; siguiente)
{ n++; p 1 = p 1->; siguiente;}
cout & lt& lt"* * *Sí"
int I;
p 1 = stu;
for(I = 1;i<n; i++)
{
p 1 = stu;
if(p 1->num & gtp 1->next->Num ) //Si el primer nodo es más grande que el segundo.
{
p2 = p 1->; siguiente;
p 1->; siguiente = p 1->; /p>
p2->; next = p 1; //Intercambio de nodo principal
stu = p2
}
p 1 = stu;
while(p 1->; next-> next)//Intercambio intermedio
{
p2 = p 1 ;
p 1 = p 1->siguiente;
if(p 1->num & gtp 1->siguiente->número)
p>{
p2->; siguiente = p 1->; siguiente;
p2->; >Siguiente-& gt;siguiente = p 1;
p1=p2->Siguiente; //Intercambio
}
}
}
p 1 = estu;
hacer
{
p 1->;jugar();
p 1 = p 1->;siguiente;
} while(p 1);
}
Void cla::psx()/ /Ordenar por puntuaciones de matemáticas.
{
Estudiante *p1, *p2
int n;
p 1 = stu; n = 1;
mientras(p 1->; siguiente)
{ n++; p 1 = p 1->; siguiente;}
cout & lt& lt"* * *Sí"
int I;
p 1 = stu;
for(I = 1;i<n; i++)
{ p 1 = stu;
if(p 1->x>p 1->next->X) //Si el nodo principal es mayor que el segundo.
{ p2 = p 1->; siguiente
p 1->; siguiente = p 1->; p2->; next = p 1; //Intercambio de nodo principal
stu = p2
}
p 1 = stu;
mientras(p 1->; siguiente-> siguiente)//intercambio intermedio
{ p2 = p 1;
p 1 = p 1- >Siguiente;
if(p 1->x>p 1->Siguiente->x)
{
p2 ->siguiente = p 1->siguiente;
p 1->siguiente = p 1->siguiente->siguiente;
p2- >Siguiente->siguiente = p 1;
p1=p2-> Siguiente; //Intercambio
}
}
}
p 1 = stu;
hacer
{ p 1->;play();
p 1 = p 1->; siguiente
} mientras(p 1); >
}
Void cla::pyw()//Clasificación de puntuación china.
{
Estudiante *p1, *p2
int n;
p 1 = stu; n = 1;
mientras(p 1->; siguiente)
{ n++; p 1 = p 1->; siguiente;}
cout & lt& lt"* * *Sí"
int I;
p 1 = stu;
for(I = 1;i<n; i++)
{ p 1 = stu;
if(p 1->y>p 1->next->Y) //Si el primer nodo es mayor que
{ p2 = p 1->; siguiente;
p2->; siguiente = p 1; //Intercambio de nodo principal
stu = p2
}
p 1 = stu;
while(p 1->; next -& gt; siguiente paso) // Intercambio intermedio
{ p2 = p 1;
p 1 = p 1->siguiente;
if(p 1->y>p 1->siguiente->y)
{
p2->siguiente = p 1->siguiente;
p 1-> siguiente = p 1->siguiente->siguiente;
p2->Siguiente->siguiente = p 1;
p1=p2->Siguiente //Intercambio p>
}
}
}
p 1 = estu;
hacer
{ p 1->;jugar();
p 1 = p 1->; siguiente
} mientras(p 1); p>
Void cla::pyy( )//Ordenar por partitura en inglés.
{
Estudiante *p1, *p2
int n;
p 1 = stu; n = 1;
mientras(p 1->; siguiente)
{ n++; p 1 = p 1->; siguiente;}
cout & lt& lt"* * *Sí"
int I;
p 1 = stu;
for(I = 1;i<n; i++)
{ p 1 = stu;
if(p 1->z & gtp 1->next->Z) //Si el nodo principal es mayor que el segundo.
{ p2 = p 1->; siguiente
p 1->; siguiente = p 1->; p2->; next = p 1; //Intercambio de nodo principal
stu = p2
}
p 1 = stu;
mientras(p 1->; siguiente-> siguiente)//intercambio intermedio
{ p2 = p 1;
p 1 = p 1- >Siguiente;
if(p 1->z>p 1->Siguiente->z)
{
p2 ->siguiente = p 1->siguiente;
p 1->siguiente = p 1->siguiente->siguiente;
p2- >Siguiente->siguiente = p 1;
p1=p2-> Siguiente; //Intercambio
}
}
}
p 1 = stu;
hacer
{ p 1->;play();
p 1 = p 1->; siguiente
} mientras(p 1); >
}
Nulo cla::pAA()//pulse total Ordenar por puntos.
{
Estudiante *p1, *p2
int n;
p 1 = stu; n = 1;
mientras(p 1->; siguiente)
{ n++; p 1 = p 1->; siguiente;}
cout & lt& lt"* * *Sí"
int I;
p 1 = stu;
for(I = 1;i<n; i++)
{ p 1 = stu;
if(p 1->AA>p 1->Next->AA) //Si el primer nodo es mayor que
{ p2 = p 1->; siguiente;
p2->; siguiente = p 1; //Intercambio de nodo principal
stu = p2
}
p 1 = stu;
while(p 1->; next -& gt; siguiente paso) // Intercambio intermedio
{ p2 = p 1;
p 1 = p 1->Siguiente;
if(p 1->AA>p 1->Siguiente->AA)
{
p2->siguiente = p 1->siguiente;
p 1-> siguiente = p 1->siguiente->siguiente;
p2->Siguiente->siguiente = p 1;
p1=p2->Siguiente //Intercambio p>
}
}
}
p 1 = estu;
hacer
{ p 1->;jugar();
p 1 = p 1->; siguiente
} mientras(p 1); p>
void cla::s taxi ()//sort
{
system("cls");
char c; p>
cout & lt& lt"Por favor seleccione el método de clasificación: "
cout & lt& lt"1 ...Ordenar por número de estudiante"
cout & lt& lt" 2 ...Ordenar por puntuación de matemáticas"
cout & lt& lt"3...clasificado por puntuación de chino"< & ltendl
cout & lt& lt"4...clasificado por puntuaciones en inglés"< & ltendl
cout & lt& lt"5...Ordenar por puntuación total"
cout & lt& lt"6...Regresar"
cout & lt& lt"Seleccione (1 -6)"
CIN & gt;& gtc;
Interruptor (c)
{
caso ' 1 ':pxh (); romper
Caso "2": psx (); romper
; ; romper;
Caso " 4":pyy(); romper;
Caso "5": pAA(); romper;
Caso "6" : return;
}
}
Void cla::ssave() //Guardar en archivo.
{
System("cls");
char c;
cout & lt& lt"\nGuardar información del estudiante (Este sobrescribirá el archivo original).
¿Quieres continuar? [Sí/No]: "CIN>>c;
if(toupper(c)!='Y ') devuelve;
ofstream tfile("date.txt ", IOs _ base::binary);
Estudiante * p = stu
Mientras(p)//Escribir en el archivo
{
tfile<<p ->nombre<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p- >y & lt& lt" \ t " & lt& ltp->z;
tarchivo & lt& ltendl
p = p-& gt; siguiente;
}
tfile();
cout & lt& lt. "Guardado..."
}
Void cla::sload() // leer
{
estudiante* p;
p = stu
mientras(p)
{
stu = p-& gt; p>Eliminar p;
p = stu
}
ifstream tfile("date.txt ", IOs _ base::binary
Nombre de cadena 1;
núm largo 1;
int x1, y1, z 1;
tfile>& gtname 1>& gtnum 1>& gtx 1>& gty 1>& gtz 1 ;
while(tfile.good())
{
//Crear contacto de estudiante
Estudiante;
s = estu
s = nuevo estudiante (nombre1, num1, x1, y1, z 1);
s-> next = 0;
s-& gt;AA = x 1+y 1+z 1;
If(stu) //Si ya existe un nodo
{
Estudiante* p2
p2 = stu
Y (p2->Siguiente paso)//Encuentra el nodo de cola
{
p2 = p2-& gt;
}
p2->; //Conexión
>}
En caso contrario//si no hay ningún nodo (tabla vacía)
{
stu = s; }
tfile & gt& gtname 1 & gt;& gtnum 1 & gt;& gtx 1 & gt;& gty 1 & gt;& gtz 1;
}
tfile . close(); /p>
cout & lt& lt" \ nSe ha cargado la información del estudiante...\ n "; ()
{
char c;
cla a;
hacer
{
cout & lt& lt”\ nSistema de gestión del desempeño estudiantil\n";
cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * \n";
cout & lt& lt"Autor: Ingeniería de software 06110119:zgjxwl \n";
cout & lt& lt"1...Agregar estudiantes\n ";
cout & lt& lt"2...Eliminar estudiantes\n ";
cout & lt& lt"3...Modificar estudiantes\n ";
cout & lt& lt"4...consultar información del estudiante\ n ";
cout & lt& lt"5...sort\ n ";
cout & lt& lt"6...Guardar información\ n ";
cout & lt& lt"7...Leer información\ n ";
cout & lt& lt" 8 ...salir\n";
cout<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n";
cout & lt& ltPor favor seleccione (1-8):;
CIN & gt;& gtc; p>
Cambiar(c)
{
caso ' 1 ':a sadd(); break;
Caso " 2": a. . s remove(); roto;
Caso "3": a . Samend();
Caso "4": a . /p>
Caso "5": a . stat xis();
Caso "6": a .ssave(); ": a . sload(); romper;
}
}mientras(c!='8');
} p>