Diseño del curso C++

"Diseño del curso C++"

Título del diseño del curso: Sistema de gestión del desempeño del estudiante

Clase del estudiante: *****

Estudiante Nombre: *****

ID del estudiante: *****

(2) Análisis de funciones y requisitos del sistema de gestión del desempeño del estudiante

Entrada de desempeño del estudiante , estadísticas, consulta, modificación, eliminación y salida. Dibujar un diagrama de estructura funcional.

(3) Tabla de estructura de datos del sistema de gestión del desempeño de los estudiantes

Número de serie nombre de miembro (nombre de campo) Tipo de datos longitud significado del campo

1 class_0 char 20 class

2 num int número de estudiante

3 nombre char 8 nombre

4 elec flaot tecnología electrónica

5 c_prog float programación en C p>

6 medios flaot tecnología multimedia

7 eng float inglés universitario

8 matemáticas flotantes matemáticas avanzadas

9 deportes flotantes deportes universitarios

p>

10 flotación política Economía política marxista

11 puntuación promedio flotante

12 ranking int de orden

(4) Datos de prueba del sistema de gestión del desempeño de los estudiantes Tabla

class_0 num nombre elec c_prog media eng matemáticas deporte política ave orden

Red 30331 3033101 Ma Yunfei 80 70 60 70 70 60 80 El resto de los datos de la tabla están compuestos por mi cuenta.

(5) Usar listas enlazadas para escribir programas (escribir código fuente a mano y dar comentarios)

0) Definir nodos de listas enlazadas

1) Función principal main ( ): Defina el puntero principal de la lista vinculada, llame a entradas, estadísticas y otras funciones para procesar la tabla de puntuación.

2) Establezca la función de lista vinculada Crear (): ingrese información de puntuación de clase a clase política;

3) Función estadística Statistic(): Calcula la calificación promedio

4) Función de consulta Lookup(): Consulta los registros de calificaciones de los estudiantes con números de estudiantes específicos

;

5) Función de modificación Modificar(): Modifica el registro de puntuación del estudiante con el número de estudiante especificado.

6) Función de eliminación Eliminar(): Elimina el registro del estudiante con el número de estudiante especificado; ;

7) Función de salida Salida(): Genera el registro de puntuación de todos los estudiantes de la clase.

8) Función de inserción Insertar(): Inserta nuevos nodos en orden de puntuación promedio.

9) Función de clasificación Sort(): ordena los elementos del registro de desempeño de los estudiantes en orden descendente según la puntuación promedio.

El programa es el siguiente:

#include;

#include

#include

#include

#include >p>

usando el espacio de nombres std;

struct Node//Definir nodo de lista enlazada

{

char* class_0; //Clase

int número;

char* nombre;//nombre

float elec;//puntuación de tecnología electrónica

float c_prog;// Puntaje de programación en C

float media;// Puntaje de tecnología multimedia

float eng;// Puntaje de inglés universitario

float math;// Avanzado puntuación de matemáticas

deporte flotante;//puntuaciones de deportes universitarios

política flotante;//puntuaciones de economía política marxista

ave flotante;//puntuaciones promedio

int orden;//clasificación

Nodo* link;

Nodo(){link=NULL;}

Nodo(int _number,char * _class_0,char* _name,float _elec,

float _c_prog,float _media,float _eng,float _math,

float _sport,float _polity,float _ave,int _order,Node* siguiente )

{

número=_número;

clase_0=nuevo carácter[21];

strcpy(clase_0,_clase_0);

nombre=nuevo char[9];

strcpy(nombre,_nombre);

elec=_elec;

c_prog=_c_prog

media=_media;

eng=_eng;

math=_math;

sport=_sport;

polity=_polity;

ave=_ave;

orden=_order;

enlace=siguiente;

}

~Nodo()

{

eliminar []clase_0;

eliminar []nombre;

}

};

clase StudentScore

{

privado:

Nodo* primero;//Puntero principal del lista vinculada

int Choice;//Elija cómo leer los datos

int fileNum;//Reste uno del número de archivo actual

int fileLoc;// Localice el archivo actual

string* fileName;

int operChoice;

int RecordLength;

público:

StudentScore();

void Save();

void BuildList(); //Crear manualmente una lista de calificaciones

void ReadInfo(int k);//Leer la información del estudiante de la memoria

void ClearList();

void Statistic ( );

void Sort();

void Add();

void Delete();

void PrintList();

void Menu();

};

StudentScore::StudentScore()

{

RecordLength =0;

operChoice=0;

primero=NULL;

elección=0;

fileLoc=0;

p>

fileNum=0;

fileName=new string[10];//Puede almacenar hasta 10 archivos

}

int GetOrder ( Nodo* primero,float ave);

void StudentScore::BuildList()

{

int _number;//número de estudiante

char* _class_0=new char[21];//class

char* _name=new char[9];//name

float _elec;//puntuación de tecnología electrónica

float _c_prog;//Puntuación de programación en C

float _media;//Puntuación de tecnología multimedia

float _eng;//Puntuación de inglés universitario

float _math;//Puntuaciones de matemáticas avanzadas

float _sport;//Puntuaciones de deportes universitarios

float _polity;//Puntuaciones de economía política marxista

float _ave ;//Puntuación promedio

int _order;//Ranking

char c;

Nodo *p,*r=NULL;

first=NULL;

cout<<"¿Quieres ingresar información de calificaciones del estudiante?"<

while((c=getchar())=='n ');

while(tolower(c)!='n')

{

cin>>_class_0;//clase

cin>>_número;

cin>>_nombre;//nombre

cin>>_elec;

cin>>_c_prog;

cin>>_media;

cin>>_eng;

cin>>_math;

cin>>_sport;

cin>>_polity;

_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//Obtener la puntuación media

> _order=GetOrder(first,_ave);

p=new Node(_number,_class_0,_name,_elec,

_c_prog,_media,_eng,_math,_sport,_polity,

_ave,_order,NULL);//Crea un nuevo nodo para almacenar información

if(first!=NULL)

r->link=p ;

else first=p;

r=p;

RecordLength++;

cout<<"Quieres ingresar información de calificaciones del estudiante ?"<

while((c=getchar())=='n');

}

}

int GetOrder(Node* first, float ave)//Hay un problema grave con el registro de clasificación

{

int order=1;

Nodo* temp= primero;

for(;temp;temp=temp->link)

{ if(temp->ave>ave) orden++;

if(temp ->avepedido)++;

}

devolver pedido;

}

void StudentScore ::Statistic()

{

Node* temp=first;

float a_elec=0.0;//Resultados de tecnología electrónica

float a_c_prog=0.0;//Puntuación de programación C

float a_media=0.0;//Puntuación de tecnología multimedia

float a_eng=0.0;//Puntuación de inglés universitario

float a_math=0.0;//Puntuaciones de matemáticas avanzadas

float a_sport=0.0;//Puntuaciones de deportes universitarios

float a_polity=0.0;//Puntuaciones de economía política marxista

int i=0;

while(temp)

{

a_elec+=temp->elec;

a_c_prog+=temp->c_prog;

a_media+=temp->media;

a_eng+=temp->eng;

a_math+=temp->matemáticas

a_sport+=temp->deporte;

a_polity+=temp->polity;

i++;

temp=temp-> enlace ;

}

a_elec=a_elec/i;

a_c_prog=a_c_prog/i;

a_media=a_media/i;

p>

a_eng=a_eng/i;

a_math=a_math/i;

a_sport=a_sport/i;

a_polity=a_polity /i;

cout<<"Tecnología electrónica

La nota media es: "<

cout<<"La nota media de programación en c es: "<

cout<< "Multimedia La puntuación técnica media es: "<

cout<<"La puntuación media en inglés es: "<

cout< <"Matemáticas Avanzadas La puntuación media en deportes es: "<

cout<<"La puntuación media en deportes es: "<

cout<<"La puntuación media en política es: "<

}

void StudentScore::Delete()

{

int studNum;

Nodo* p;

Nodo* temp=first;

cout<<"Por favor, introduzca el estudiante número a eliminar"<

cin>>studNum;

promedio flotante;

for(;temp;temp=temp->link)

{

cout<número;

if(temp->número==studNum)

{

promedio=temp->ave ;

if(temp==first)//Significa que es la primera vez

{

first=first->link;

eliminar temp;

break;//Si no saltas, temp=temp->link generará un error

}

más

{

p->link=temp->enlace;

eliminar temporal;

descanso;

}

}

p=temp;

RecordLength--;

}

//Modificar las clasificaciones de los estudiantes a continuación

temp=first;

for(;temp;temp=temp->link)

if(temp->aveorder--;

}

void StudentScore::Add()

{

int _number;//número de estudiante

char* _class_0=new char[21];//Clase

char* _name=new char[9];/ /Nombre

float _elec;//Puntuaciones de tecnología electrónica

float _c_prog;//Puntuación de programación C

float _media;//Puntuación de tecnología multimedia

float _eng;//Puntuación de inglés universitario

float_ma

th;//Puntuaciones de matemáticas avanzadas

float _sport;//Puntuaciones de deportes universitarios

float _polity;//Puntuaciones de economía política marxista

float _ave; Puntuación media

int _order;//Ranking

char c;

Nodo *p,*r=NULL;

r= primero;

while(r->link)

r=r->link;

// first=NULL;

cout<<"¿Quieres ingresar información de calificaciones del estudiante?"<

while((c=getchar())=='n');

while( tolower(c)!='n')

{

cin>>_class_0;//clase

cin>>_number;

cin>>_name;//Nombre

cin>>_elec;

cin>>_c_prog;

cin>>_media;

cin>>_eng;

cin>>_math;

cin>>_sport;

cin>>_polity;

_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//Obtener la puntuación media

//Escribir un programa que devuelva el ranking

_order =GetOrder(first,_ave);

p=new Node(_number,_class_0,_name,_elec,

_c_prog,_media,_eng,_math,_sport,_polity,

_ave,_order,NULL);//Crea un nuevo nodo para almacenar información

if(first!=NULL)

r->link=p;

else first=p;

r=p;

RecordLength++;

cout<<"¿Desea ingresar información de calificaciones del estudiante? ?" <

while((c=getchar())=='n');

}

}

void StudentScore::Sort()//Clasificación de burbujas simple desde puntaje alto a puntaje bajo

{

int i=0;

Node* temp = primero;

Nodo* antes;

// Nodo* p=primero;

for(;temp->link;)

{

if(temp->avelink->ave)

{

if(temp==first)//El la descripción es El primer nodo

{

first=first->link;

// p=temp;

// temp =temp->enlace;

> temp->enlace=temp->enlace->enlace;

primero->enlace=temp;

antes=primero;

}

else//No es el primer nodo

{

before->link=temp->link;

temp->link= temp- >enlace->enlace;

antes->enlace->enlace=temp;

antes=antes->enlace;

}

}

else

{

temp=temp->enlace;

}

i++; //Número de cálculos

}

for(;i>0;i--)

{

temp=first ;

for(int j=0;j

{

if(temp->avelink->ave )

{

cout<<"small!"<

if(temp==first)//La descripción es el primer nodo

{

primero=primer->enlace;

// p=temp;

// temp=temp->enlace ;

temp->enlace=temp->enlace->enlace;

primero->enlace=temp;

antes=primero;

}

else//no es el primer nodo

{

before->link=temp->link;

temp ->enlace=temp->enlace->enlace;

antes->enlace->enlace=temp;

antes=antes->enlace;

}

}

else

{

temp=temp->enlace;

}

}

}

}

/*

bool IsSorted(Nodo* primero)

{

for(;first;first=first->link)

if(first->avelink->ave) return false;

return true;

}*/

void StudentScore::PrintList()//Imprimir programa de lista enlazada

{

cout<<"La lista contiene:"<

Nodo* temp=

primero;

for(;temp;temp=temp->link)

{

cout<class_0<<","<< temp->nombre<

cout<pedido<

}

}

void StudentScore::ClearList()//Borrar la lista enlazada

{

Node* p=new Node;

while(first)

{

p=first->enlace;

eliminar primero;

first=p;

}

}

//Función de lectura

void StudentScore::ReadInfo(int k)//Lee la información del késimo archivo y guárdalo en la lista vinculada

{

// int wordLength;//Longitud de la subsección del registro

int _number;//Número de estudiante

char* _class_0=new char[ 21];// Clase

char* _name=new char[9];//Nombre

float _elec;//Puntuación de tecnología electrónica

float _c_prog ;//Puntuaciones de diseño de programas C

float _media;//Puntuaciones de tecnología multimedia

float _eng;//Puntuaciones de inglés universitario

float _math;//Avanzado puntuaciones de matemáticas

float _sport;//puntuaciones de deportes universitarios

float _polity;//puntuaciones de economía política marxista

float _ave;//puntuaciones promedio

int _order;//clasificación

Nodo *p,*r=NULL;

first=NULL;

ifstream Infile(fileName[k ].c_str ());

if(!Infile)

{

cout<<"¡el archivo no está presente!"<

return;

}

Infile>>RecordLength;

cout<

for(int i =0; i

{

Infile>>_class_0;//clase

// cout<<_class_0;

Infile>>_number;

Infile>>_name;//nombre

Infile>>_elec;

Infile>>_c_prog;

Infile>>_media;

Infile>>_eng;

Infile>>_math;

Infile>>_sport;

Infile >>

_polity;

Infile>>_ave;

Infile>>_order;

_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity) /7;//Obtener la puntuación media

//Escribir un programa para devolver la clasificación

_order=GetOrder(first,_ave);

p= new Node(_number,_class_0,_name,_elec,

_c_prog,_media,_eng,_math,_sport,_polity,

_ave,_order,NULL);//Crear un nuevo nodo Haga clic para guardar información

if(first!=NULL)

r->link=p;

else first=p;

r=p;

}

}

void StudentScore::Save()

{

string tempName;

cout<<"Ingrese el nombre del archivo que se guardará:"<

//Para determinar si tiene el mismo nombre que un archivo existente file

cin>>tempName;

ofstream savefile(tempName.c_str());//Hacer una conversión

Node* temp=first;

archivo guardado <

for(;temp;temp=temp->link)

{

archivo guardado<< temp->clase_0<< " "<número<<" "<nombre<<" "<elec<<" "

< c_prog<<" "< media<<" "<eng<<" "<matemáticas<<" "

<deporte<< " "<polity<<" "<ave<<" "<orden<

}

savefile.close ();

//Leer información de la tabla de archivos

ifstream Readfileinfo("FileRecord.txt");

Readfileinfo>>fileNum;

for(int i=0;i

Readfileinfo>>fileName[i];

Readfileinfo.close();

fileNum++;

fileName[i]=tempName;

//Modificar la información de la tabla de archivos

ofstream changefile("FileRecord.txt");

changefile<

for(i=0 ;i

cambiararchivo<

cambiararchivo.close();

}

void StudentScore::Menu()

{

cout<<"Por favor, elija cómo leer los datos:"<

cout <<"(1) Crear manualmente una nueva tabla de datos"<

cout<<"(2) Leer datos del archivo"<

cout< <"Por favor seleccione:";

cin>>elección;

if(choice==1)

{

BuildList( );

}

if(choice==2)

{

cout<<"Actualmente existen para los siguientes archivos , elija leer el archivo: "<

ifstream fileRecord("fileRecord.txt");

if(!fileRecord)

{

cout<<"fileRecord no está presente!"<

return;

}

fileRecord>>fileNum;

cout<<"Actualmente hay archivos "<

for(int i=0;i

{

fileRecord>>fileName[i];

cout<

}< / p>

cout<<"Por favor seleccione un archivo:";

cin>>fileLoc;

ReadInfo(fileLoc-1);

PrintList ();

}

cout<<"Por favor seleccione la operación que necesita:"<

cout<<"(1) Estadísticas de puntuaciones de los estudiantes en varias materias"<

cout<<"(2) Eliminar el registro de puntuación de un estudiante"<

cout<<"(3) Agregar Registro de puntuación de un determinado estudiante"<

cout<<"(4) Ordenar todos los registros de puntuación de los estudiantes en la lista vinculada"<

cin>>operChoice;

if(operChoice==1)

Estadística();

if(operChoice==2)

Eliminar(

);

if(operChoice==3)

Agregar();

if(operChoice==4)

Ordenar( );

Guardar();

Borrar Lista();

}

int main()

{

cout<<"////////////////////////////////////"<< endl ;

cout<<"¡Bienvenido al sistema de gestión del desempeño estudiantil!"<

cout<<"///////////// // ////////////////////"<

cout<

cout<

StudentScore s;

s.Menu();

devuelve 0;

}