Red de Respuestas Legales - Derecho de patentes - Diseño de sistema de gestión de información estudiantil.

Diseño de sistema de gestión de información estudiantil.

Este programa requiere que tenga un archivo gradeInfo.txt para almacenar la información del estudiante, y los datos de salida finales también se escriben aquí. Si necesita la salida en un archivo diferente, simplemente cambie el nombre del archivo de la función en la salida. El siguiente programa es mi tarea anterior de C++, tiene más funciones de las que pediste y tengo comentarios. Espero que pueda darle a lz alguna referencia. La tarea de C ++ sigue siendo muy interesante, espero que lz la haga.

# include & ltiostream & gt

Usar STD::CIN;

Usar STD::cout;

Usar STD:: cerr;

Usar STD::endl;

Usar STD::IOs;

# include & ltfstream & gt

Usar STD ::of stream;

Usar STD::if stream;

Usar STD::fstream;

# include & ltstring& gt

Usar STD::string;

# include & ltiomanip & gt

Usar STD::setw;

int enter option();

void searchGrade(nombres de cadena[], ID de cadena[], int Chinese[], int Math[], int Eng[], int fila);

void changeGrade(nombres de cadena [], ID de cadena[], int Chino[], int Math[], int Eng[], int fila);

void deleteGrade(nombre de cadena[], ID de cadena[], int Chino[], int Math[], int Eng[], int &

void addGrade(string name[], string ID[], int Chinese[], int Math[ ], int Eng[], int & inp;

int getRow(if flujo y entrada);

void getID(si flujo y entrada, nombre de cadena[], ID de cadena[], int chino[], int math). [], int ingeniería[]);

void countGrade(string nombres[], string ID[], int Chinese[], int Math[], int Eng[], int fila);

void saveResult(nombre de cadena[], ID de cadena[], int chino[], int math[], int ingeniería[ ], int fila);

void showGrade(nombres de cadena[ ], ID de cadena[], int Chino[], int Math[], int Eng[], int fila);

void averGrade(int Chinese[], int Math[], int Eng[] , int fila);

int main()

{

ifstream infile(" información de calificaciones . txt ");

if (! infile){

cerr & lt& ltError al abrir el archivo, gradeInfo.txt no existe< & ltendl

Salir (1);}

int fila = getRow (infile);

infile . close(); // Asegúrese de que el número actual de estudiantes sea la fila.

ifstream infile 2(" grade info . txt ");

// Proporciona gestión del rendimiento para hasta 60 estudiantes. Se determina en base al número razonable actual de clases. Se puede cambiar según sea necesario.

String name[60]; //Nombre del estudiante

String ID[60]; //ID del estudiante

int Chinese[60];/ /Idioma Puntuación

int Math[60]; //Puntuación de matemáticas

int Eng[60] //Puntuación de inglés

getID(infile2, nombres, ID, Chino, Matemáticas, Inglés); //Leer la información del estudiante del archivo.

infile 2. close();

int part; // Su valor representa el módulo seleccionado por el usuario.

//El menú principal del sistema. El usuario selecciona una acción a realizar.

Y (parte!=4){

cout & lt& lt" \n **Bienvenido al Sistema de gestión de información estudiantil* * " & lt& ltEndel

& lt& lt"-"& lt;& ltEndel

& lt& lt"Por favor seleccione la operación que desea realizar"

& lt& lt" 1-Información de desempeño del estudiante Mantener"

& lt& lt"2-Consulta de información de desempeño de los estudiantes"

& lt& lt"3-Estadísticas de desempeño de los estudiantes"

& lt& lt"4- Salir del sistema"

& lt& lt"-"& lt;& ltendl

CIN>>Part;

if (part==1) {

int Selection; //La función de ejecución seleccionada por el usuario en el módulo de mantenimiento de información.

while((choice=enterChoice())!=4){

Cambiar (seleccionar){

Caso 1:

addGrade(nombre, ID, chino, matemáticas, inglés, fila);

Break

Caso 2:

deleteGrade(nombre, ID, chino, matemáticas); , inglés, fila);

Break;

Caso 3:

changeGrade(nombre, ID, chino, matemáticas, inglés, fila

Pausa;

Predeterminado:

cerr & lt& lt"Su selección es incorrecta"< & ltendl

Pausa;

}

}

}

if (part==2){

cout & lt& lt"Seleccione: "

& lt& lt" 1-Buscar por número o nombre de estudiante"

& lt& lt"2-Ver toda la información del estudiante"

int allOrPart

CIN & gt; & gtallOrPart

if (allOrPart==1)

searchGrade(nombre, ID, chino, matemáticas, inglés, fila);

if (allOrPart==2)

showGrade(nombre, ID, chino, matemáticas, inglés, fila);

}

if (parte= =3){

cout & lt& lt"Seleccione:"

& lt& lt" 1-Consultar la distribución de los estudiantes en puntuaciones de una sola materia"

& lt& lt"2-Calcular la puntuación media de una sola asignatura"

int averOrPart

CIN & gt;& gtaverOrPart

if (averOrPart==2 )

averGrade(Chino, Matemáticas, Inglés, Fila);

if (averOrPart==1)

countGrade(Nombre, ID, Chino, Matemáticas, Inglés, fila);

}

}

Devuelve 0;

}

//Esta función Se utiliza para obtener la información del número de estudiante actualmente almacenada en el sistema.

int getRow(if stream & inp)

{

int fila = 0;

Cadena a, nombre, ID <; /p>

int tag;

inp & gt& gta & gt& gta & gt& gta & gt& gta & gt& gta;

mientras(inp){

inp & gt& gtName& gt& gtID & gt& gtMark& gt& gtMark& gt& gtMark;

fila++;

}

Línea de retorno -1;

}

//Esta función se utiliza para leer los datos del documento de texto en la memoria para que los usuarios operen en él. Terminal.

void getID(if stream & inp, nombre de cadena[], ID de cadena[], int chino[], int math[], int ingeniería[])

{

String a;

inp & gt& gta & gt& gta & gt& gta & gt& gta & gt& gta // Omite la estructura de directorios de la primera línea.

int I = 0;

mientras(inp){

inp & gt& gtNombre[I]& gt;& gtID[I]& gt; gt中文[I]& gt;& gtmath[I]& gt;& gteng[I];

i++;

}

}

//Esta función implementa el submenú del módulo de mantenimiento de información de desempeño del estudiante.

int enterChoice()

{

cout & lt& lt"Ingrese la operación que desea realizar"

& lt& lt " | 1-Agregar información del estudiante| "

& lt& lt" | 2-Eliminar información del estudiante| "

& lt& lt" | 3-Modificar información del estudiante| "

& lt& lt" | 4-Volver al nivel anterior | "

intSelect;

CIN & gt;& gtSelect;

Volver Seleccionar ;

}

//Esta función proporciona a los usuarios una función de consulta de las puntuaciones de los estudiantes, ya sea utilizando el nombre o el número del estudiante.

void searchGrade(Nombre de cadena[], ID de cadena[], Chino entero[], Matemáticas enteras[], Ingeniería entera[], Fila entera)

{

Cadena objetivo de búsqueda

cout & lt& lt"\nIngrese el ID o el nombre del estudiante"

CIN>& gtsearchGoal

Booleano encontrado;

for(int j = 0; j<j++){

if(nombres[j]= = objetivo de búsqueda | | ID[j]= = objetivo de búsqueda){

cout & lt& lt"Resultados de la consulta"

& lt& lt"Nombre, número de estudiante, chino, matemáticas, inglés"< & ltEndel

& lt& ltsetw(6)& lt; & ltnames[j]& lt;& ltsetw(6)& lt;& ltID[j]& lt;& ltsetw(6)& lt;& lt中文[j]& lt;& ltsetw(6)& lt;& ltmath[j]& lt;& ltsetw(6)& lt;& lteng[j]& lt;& ltendl

find=true;

Romper;

}

}

if (find!=True)

cout & lt& lt"buscado Las calificaciones del estudiante no existen”< & ltendl

}

//Esta función puede eliminar los registros de información del estudiante almacenados en el sistema.

void deleteGrade(String name[], String ID[], int Chinese[], int Math[], int Eng[], int & row)

{

cout & lt& lt"\nIngrese el nombre o número de estudiante del estudiante cuya información desea eliminar"

String delName

CIN & gtdelName

Booleano encontrado;

for(int j = 0; j<j++){

if(names[j]= = delName | | ID[j] = = delName){

Encontrado=Verdadero;

nombres[j]= " \ 0 ";

ID[j] = " \ 0 ";

chino[j]=-1;

matemáticas[j]=-1;

eng[j]=-1;

saveResult(nombre, ID, chino, matemáticas, inglés, fila);

cout & lt& lt"La información del estudiante se ha eliminado correctamente"

}

}

If (find!=True)

cout & lt& lt"La información del estudiante a eliminar no existe"

}

//Esta función puede escribir información de nuevos estudiantes en un archivo de texto.

void addGrade(String name[], String ID[], int Chinese[], int Math[], int Eng[], int & row)

{

Cadena newID

cout & lt& lt"Ingrese primero el ID del estudiante:"

//Entonces, el ID del estudiante se utiliza para determinar si la información que se agregará es repetido.

CIN>>newID

booleano existe;

for(int j = 0; j<j++)

if(newID== ID[j]){

cout & lt& lt"La información del estudiante ya existe"

Exists=True;

Break;}

Si (existe!=True){

cout & lt& lt\ nPor favor, ingrese nuevamente el nombre del estudiante y tres calificaciones, separados por la barra espaciadora. endl

ID[fila]= nuevoID;

CIN & gt;& gtnames[fila]& gt;& gt中文[fila]& gt;& gtmath[fila]& gt ; & gteng[fila];

fila++;

saveResult(nombre, ID, chino, matemáticas, inglés, fila

cout & lt& lt" La información del estudiante se agregó correctamente"

}

}

//Esta función puede cambiar diversa información de los estudiantes.

void changeGrade(Nombre de cadena[], ID de cadena[], Chino entero[], Matemáticas enteras[], Ingeniería entera[], Fila entera)

{

String changeGoal

cout & lt& lt"\nIngrese el nombre o el número de estudiante cuya información desea cambiar:";

CIN>

Descubrimiento booleano;

int changeNum//Opciones para que los usuarios modifiquen el contenido

for(int j = 0; j & lt row; j++){

if(names[j]= = cambiar objetivo | | ID[j]= = cambiar objetivo){

find=true;

cout & lt& lt "La información original de este estudiante es:"

& lt& lt"Nombre, número de estudiante, chino, matemáticas, inglés"< & ltEndel

& lt& ltsetw (6)& lt ;& ltnames[j]& lt;& ltsetw(6)& lt;& ltID[j]

& lt& ltsetw(6)& lt;& lt中文[j]& lt;& ltsetw( 6)& lt;& ltMatemáticas[j]

& lt& ltsetw(6)& lt;& lteng[j]& lt;& ltEndel

& lt& lt"Por favor seleccione: "

& lt& lt" 1-Modificar nombre de estudiante"

& lt& lt" 2-Modificar ID de estudiante"

& lt& lt“3-Modificar chino puntuación”

& lt& lt“4-Modificar puntuación de matemáticas”

& lt& lt“5-Modificar puntuación de inglés”

CIN & gt;& gtchangeNum

cout & lt& lt"Ingrese el contenido modificado:";

Cambiar (changeNum){

Caso 1:

CIN> >Name[j];

Descanso;

Caso 2:

CIN>>ID[ j];

Descanso;

Caso 3:

CIN>& gt中文[j];

Pausa;

Caso 4:

CIN & gt;& gtmath[j];

Pausa;

Caso 5:

CIN>& gteng[j];

Break;

}

saveResult(nombre, ID, chino, matemáticas, inglés, fila) ;

cout & lt& lt" \n¡Modificación exitosa! "& lt& ltEndel

& lt& lt"La información del estudiante modificada es:"

& lt& lt"Nombre, número de estudiante, chino, matemáticas, inglés"< & lt Endel

& lt& ltsetw(6)& lt;& ltnames[j]& lt;& ltsetw(6)& lt;& ltID[j]

& lt& ltsetw( 6)< <Chino[j]<<setw(6)<<Matemáticas[j]

& lt& ltsetw(6)<<eng[j]& lt;& ltendl

}

}

if (find!=True)

cout & lt& lt"La información del estudiante a modificar no existe"

}

//Esta función puede contar la distribución de los estudiantes en una determinada materia y un determinado rango de puntuación, incluido el nombre del estudiante, el número de estudiante, el grado y el

El número de personas en el segmento.

void countGrade(Nombre de cadena[], ID de cadena[], Chino entero[], Matemáticas enteras[], Ingeniería entera[], Fila entera)

{

Asunto de cadena;

int bajo, alto;

int recuento resultado = 0;

cout & lt& lt\ nIngrese el curso deseado Consulta el curso nombre y rango de puntuación, separados por espacios, como Inglés 60 70

CIN>>Topic>>Low>>High;

cout & lt& lt Asunto<<"logro en"

for( int I = 0;i< row;i++){

If (subject== "中文" &;& amp中文[I]>=bajo&&中文[I]<=alto){

resultado del recuento++;

cout & lt& ltsetw(7)<& ltName[I]& lt;& ltsetw(7)& lt;& lt"Número de estudiante"

& lt& ltsetw(5)& lt;& ltID[I]& lt;& ltsetw(7 )<<"puntuación"

<<setw(7)<<Chino[I]< <endl

}

If (subject== "Matemáticas" &;& ampmath[I]>=bajo&&math[I]<=alto){

contar resultado++;

cout & lt& ltsetw(7)& lt;& ltNombre[I]& lt;& ltsetw(7)& lt;& lt"Número de estudiante"

& lt& ltsetw(5)& lt; & ltID[I]& lt;& ltsetw(7)& lt;& lt"puntuación"

& lt& ltsetw(7)& lt;& ltmath[I ]& lt;& ltendl

}

if(subject = = " English " &;& ampeng[I]& gt;=bajo& amp& ampeng[I]& lt;= alto){

contar resultado++;

cout & lt& ltsetw(7)& lt;& ltName[I]& lt;& ltsetw(7)& lt;& lt"Estudiante Número"

& lt& ltsetw(5)& lt;& ltID[I]& lt;& ltsetw(7)& lt;& lt"puntuación"

& lt& ltsetw( 7)& lt;& lteng [I]& lt;& ltendl

}

}

cout & lt& lt" \ n * * * " & lt& ltcountResult & lt& lt" people ”

}

//Esta función puede guardar los cambios en los datos de información del estudiante en la memoria en un archivo de texto.

void saveResult(Nombre de cadena[], ID de cadena[], Chino entero[], Matemáticas enteras[], Proyecto entero[], Fila entera)

{

of stream outfile(" información de calificaciones. txt ");

outfile & lt& lt"Nombre, número de estudiante, chino, matemáticas, inglés"< & ltendl

for( int n = 0; n & lt fila; n++){

if (nombres[n]!="\0")

archivo de salida & lt& ltsetw(7)& lt; & ltNombre[n]& lt;& ltsetw(6)& lt;& ltID[n]

& lt& ltsetw(7)& lt;& ltChino[n]& lt;& ltsetw(7) & lt;& ltMatemáticas

& lt& ltsetw(7)& lt;& lteng[n]& lt;& ltendl

}

}

//Muestra toda la información de los estudiantes registrada en el sistema actual.

void showGrade(Nombre de cadena[], ID de cadena[], Chino entero[], Matemáticas enteras[], Ingeniería entera[], Fila entera)

{

for(int n = 0; n & lt fila; n++){

if (nombres[n]!="\0")

cout & lt& ltsetw( 7)& lt;& ltNombre[n]& lt;& ltsetw(6)& lt;& ltID[n]

& lt& ltsetw(7)& lt;& ltChino[n ]& lt; & ltsetw(7)& lt;& ltMatemáticas

& lt& ltsetw(7)& lt;& lteng[n]& lt;& ltendl

}

}

//Calcular la puntuación media de una sola materia

promedio vacío(int Chinese[], int Math[], int Eng[], int row)

{

cout & lt& lt"Seleccione la cuenta para la cual desea calcular la puntuación promedio:"

& lt& lt" 1-中文"

& lt& lt"2-Matemáticas"<& ltEndel

& lt& lt"3-Inglés"

intTopic;

CIN> ; cuerpo;

int suma = 0;

for(int n = 0; n & lt fila; n++){

if (Eng[ n]! =-1)

{

if (asunto==1)

suma+=中文[n];

si (asunto ==2)

suma+= Matemáticas[n];

if (sujeto==3)

suma+= Eng[n];

}

else fila = fila-1

}

Doble averGrade

averGrade = static _ cast & ltdouble & gt(sum)/static _ cast & lt;double & gt(row);

cout & lt& lt"La puntuación media de esta asignatura es:"

}