Diseño de sistema de gestión de información estudiantil.
# 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); p>
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 p>
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[])
{ p>
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++;
}
} p >
//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)
{ p>
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 p>
}
//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)
{ p>
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 p>
& 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
} p>
}
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)
{ p>
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){ p>
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)
{ p>
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)
{ p>
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:"
}