Programación en c++ del sistema de gestión del desempeño estudiantil
#include
#include
#include
usando el espacio de nombres std;
struct Stu_score{
int num;
int mark[3];
nombre de cadena;
Stu_score*next ;
float aver; //Promedio de tres clases de las tres clases
};
//definir la clase de Estudiante
clase Estudiante{
privado:
Stu_score*head;
void Swap(Stu_score*,Stu_score*); //Swap(Stu_score*); /Swap(Stu_score*); //Intercambia los campos de datos de dos objetos Stu_score
void Print(Stu_score*); //Muestra el registro especificado
Stu_score*Find(int) ; //Busca el registro con el número de estudiante especificado y devuelve un puntero al registro
public:
Student(){head=NULL;}
Stu_score*get_head(){return head;}
int ListCount(); //Calcula el número total de registros en la lista vinculada actual y devuelve un número entero
void AddItem(int num, nombre de cadena,int mark[3]);//agregar un registro a
void RemoveItem(int);
void List();
void Sort_by_num( );
void Sort_by_aver();
void Search(int);
int Promedio();
} ;
p>int Student::ListCount(){
if(!head)return 0;
Stu_score*p=head;
int n=0;
while(p){
n++;
p=p->siguiente;
}
return n;
}
void Student::AddItem(int num, string name,int mark[3]){
si(! cabeza){
cabeza=new Stu_score;
for(int i=0;i<3;i++)
cabeza->marca[i]= marca[i];
cabeza->num=num
cabeza->nombre=nombre;
cabeza->siguiente=NULL;
return;
}
Stu_score*t=head;
mientras (t&&t
->numero! =num)
t=t->next;
if(t){
cout<< "Operación fallida: registro con número de estudiante "<< num<<"¡ya existe!" < } Stu_score*p=head; while(p->next)p=p ->siguiente; Stu_score*p1=nuevo Stu_score; p1->.num=num; for(int i=0;i<3 ;i++) p1->marca[i]=marca[i]; p1->nombre=nombre; p1->siguiente=NULL ; p-> next=p1; return; } void Estudiante::RemoveItem(int num){ Stu_score*t=Buscar(num); if(!t)return; Stu_ Score*p=cabeza; if(head==t){ head=head->next; eliminar p; cout<< "Eliminando exitosamente el registro con el estudiante numero "< return; } while(p->siguiente!=t )p=p->siguiente; Stu_score*p1=p->siguiente; p->siguiente=p1->siguiente; eliminar p1 ; cout<< "El registro con el número de estudiante "< Regresar; } void Student::Print(Stu_score*p){ cout.precision(3); cout<< p->num< < "\t\t"; cout< cout< return; } void Estudiante::List(){ if(ListCount==0){ cout < < "Error: ¡la lista actual está vacía! " < Regresar; } Stu_score*p=head; cout<<< "*** Hay un registro:"< cout << "Número de escuela\t\t Nombre\t\tInglés\t \tmath \themistry\t\puntaje promedio"<<endl; while(p){ Print(p); p=p- >siguiente ; } cout<< endl; return; } void Estudiante: :Buscar (int num){ cout<< "Buscando...." < Stu_score*p=Buscar(num); if (p){ cout<<< "Número de estudiante\t Nombre\t Inglés\t Matemáticas\t Química\t Puntuación promedio"< Imprimir (p ); } cout< } Stu_score *Estudiante::Buscar(int num ){ if(ListCount()==0){ cout<< "Error: ¡La lista actual está vacía!" < Devuelve NULL } Stu_score*p=head; while(p){ if(p->num= =num) romper; p=p->siguiente } if(! p){ cout<< "Error: ¡registro no encontrado! \n"; return NULL; } return p; } void Estudiante::Intercambiar(Stu_score *p1,Stu_score *p2){ int i; Stu_ Score*temp=new Stu_score; temp- >num=p1->num; p1->num=p2->num; p2->num=temp->num; for (i=0; i<3;i++) temp->marca[i]=p1->marca[i]; for(i=0; i<3 ;i++) p1->mark[i]=p2->.mark[i];student.AddItem(num,name,mark); } estudiante.Promedio(); iofile.close(); iofile.close()close(); } } } void SaveToFile(){ Stu_score*p; nombre de carácter[20] ; p>< p> fstream iofile; int i=0; iofile.open("stud.dat",ios::out|ios::binary); if(!iofile) { cerr<< "¡error de apertura!"< abortar(); } p=student.get_head(); while(p) { p->nombre.write((char*)&p- >. marca[1],tamañode(int)); iofile.write((char*)&p->marca[2],tamañode(int)); p =p->siguiente; } iofile.close(); iofile.close() iofile.close(); (); iofile.close()close(); } int main(){ cout<< " ¡Bienvenido!\n Sistema de gestión de calificaciones de estudiantes\nVer 1.01\n\n"; int select; char s; while(1){ seleccionar=Menú(); cambiar(seleccionar){ caso 0: s=Salir(); if(s=='y'||s=='Y')return 0; descanso; caso 1: AddNew(); ruptura; caso 2: Sort_by_num(); ruptura; caso 3: DoFind(); romper caso 4: DoDelete(); > ruptura; caso 5: Lista(); ruptura; caso 6: ShowAverage(); ruptura; caso 7: Loadfromfile(); ruptura; caso 8: SaveToFile(); break; predeterminado: cout<< "¡Entrada no válida! " < } } Devuelve 0; }