Recompensa de 100 puntos por preguntas en lenguaje C
//Sistema de gestión de información estudiantil. cpp: define el punto de entrada de la aplicación de consola.
//
#Include " stdafx.h "
# include & ltiostream & gt
# include & ltfstream & gt
# incluir & ltstring& gt
# incluir & ltsstream & gt
# incluir & ltiomanip & gt
# incluir & ltvector & gt
# incluir & ltalgoritmo& gt
Usar espacio de nombres estándar
/////////////// ////// ///////////////////////////////////////////////// // /////
Estudiantes de la clase {
cadena _ ID
Número de secuencia de cadena
Nombre de cadena;
p>int math_score, phys_score, math1_score, comp_score, engl_score
Público:
cadena y cadena. ID();
Cadena y cadena. SN();
Cadena y cadena. nombre();
int & amp operator[](int index); //Operador[] sobrecargado
};
//* *** ****************************
Cadena a cadena. CStudent::ID(){
return _ ID
}
Cadena y cadena. CStudent::SN(){
Devuelve el número de serie;
}
Cadena y cadena.
CStudent::Name(){
Devolver nombre;
}
int & ampc estudiante::operador[](int index){
Cambiar (índice)
{
Caso 0:
Devolver math_score
Interrupción;
Caso 1:
Devolver phys _ puntuación
Descanso;
Caso 2:
Devolver matemáticas 1 _ puntuación;
p>Pausa;
Caso 3:
Devolver comp_score
Pausa;
Caso 4:
Regresar engl_score
Pausa;
Predeterminado:
Lanza "¡Debes dar un exponente no mayor que 4 ni menor que 0!"; p>
Descanso;
}
}
////////////// ////// ///////////////////////////////////////////////// // //////////
Categoría CCredit{
doble matemática, física, matemática1, comp, inglés
Público:
p>CCredit();
Operador doble & amp[](int index); //Operador[] sobrecargado
};
/ /************************************************ * ***
CCredit::CCredit():matemáticas(7.0), física(4.0), comp(4.0), matemáticas1(4.0), inglés(6.0){}
double& ampCCredit::operator[](int index){
switch(index)
{
Caso 0:
Volver a matemáticas;
Descanso;
Caso 1:
Volver a física
Descanso;
Caso 2:
devolver matemáticas 1;
Descanso;
Caso 3:
Devolución de compensación;
Descanso;
Caso 4:
Volver al inglés;
Pausa;
Predeterminado:
Tirar "Debes dar ¡Un exponente no mayor que 4 y no menor que 0! ";
Romper;
}
}
//////////////// /////////////////////////////////////////////////// //// ///////////
Estudiantes de gestión de clases {
Protegido:
Vector estático & lt estudiantes & datos gt ; // Almacena las calificaciones originales de los estudiantes.
void on brower(); //Buscar datos
void OnFind(); //Buscar datos
void on invalidateinput(char *); Mensaje de error de entrada
void OnAddData(); //Agregar datos
bool on save() //Guardar
cmanagementstudent * parent;
Público:
título de cadena estática[8]; //nombre del curso
static int wid[8]; //ancho de impresión
cmanagementstudent ( cmanagementstudent * p = 0):parent(p){ }
bool datos iniciales(); //Leer datos en la memoria
Virtual void ShowMenu() //Mostrar menú
Evento virtual void do(int ID); //Respuesta a la entrada del usuario
};
cmanagementstudent * pBase;
Oyster & ;operador& lt& lt(ostream & ampos, const CStudent & ampst)
{
CStudent obj = st
os & lt& ltsetw(cmanagementstudent: :wid[ 0])<<obj. ID();
os & lt& ltsetw(cmanagementstudent::wid[1])& lt;& ltobj. SN();
os & lt& ltsetw(cmanagementstudent::wid[2])& lt;& ltobj.
nombre();
os & lt& ltsetw(cmanagementstudent::wid[3])& lt;& ltobj[0];
os & lt& ltsetw(cmanagementstudent::wid[ 4])& lt;& ltobj[1];
os & lt& ltsetw(cmanagementstudent::wid[5])& lt;& ltobj[2];
os & lt& ltsetw(cmanagementstudent::wid[6])& lt;& ltobj[3];
os & lt& ltsetw(cmanagementstudent::wid[7])& lt;& ltobj[4];
Volver al sistema operativo;
}
///////////////////////// // ///////////////////////////////////
Vector<student>cmanagement estudiante::datos ;
string cmanagement Student::title[8]= { "ID de estudiante", "Número de serie", "Nombre", "Matemáticas avanzadas", "Física general", "Matemáticas discretas", "Computadora" , "Inglés" };
int cmanagement estudiante::wid[8]= { 12, 6, 8, 10, 10, 10, 8, 6 }
void cmanagementstudent ::ShowMenu(){
cout & lt& ltendl
cout & lt& lt"* * * * * * * * * * * * * * * * * * * *Estudiante Sistema de gestión de puntuaciones * * * * * * * * * * * * * * \n";
cout & lt& lt"1 Vista previa\t2 Buscar\t3 Agregar\t4 Guardar\t0 Salir\n" ;
cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n";
}
void cmanagementstudent::OnInvalidateInput(char * str){
cout & lt& ltstr & lt& ltendl
}
boolcmanagestudent::initial data()//Datos variables para la inicialización.
{
ifstream fin(" puntuación . txt ");
if(fin.fail()){
cout & lt& lt"Archivo de datos no encontrado"
Devuelve falso
}
String s; //Define un objeto de cadena que lee cada línea del archivo.
getline(fin, s); //Mira la línea del título, no es necesario.
while(getline(fin, s)){
istringstream istr
Student Street;
istr & gt& gtST . );
istr & gt& gtST . SN();
istr & gt& gtHoly Name();
for(int I = 0; I& lt5; i++)
istr & gt& gtST[I];
datos . push _ back(ST);
}
fin . close();
Devuelve verdadero
}
void cmanagementstudent::OnAddData()
{
char ch
if(data.size () == 0)
{
Hacer
{
Calle del estudiante;
cout & lt& lt"Ingrese el nombre del estudiante:";
CIN & gt;& gtHoly Name()
cout & lt& lt"Ingrese su ID de estudiante:";
CIN & gt;& gtST . ID();
ST SN()= 1;
. for(int I = 0;i<5;i++)
{
cout & lt& lt"Por favor ingrese"
CIN>>ST [I]; p>
}
cout & lt& lt"¿Es correcta la entrada? y significa sí; r significa volver a ingresar; n significa darse por vencido\ n "; gt;& gtch;
if(ch=='y ')
datos . push _ back(ST);
} while( ch = =. ' r ');
}
Otro
{
Hacer{
Student Street ; p>
ST .ID()= datos[tamaño de datos()-1]. ID();
st.ID()[st.ID(). tamaño()-1]++;
ST SN()= datos[tamaño()-1]. SN();
st.SN()[st.SN().
size()-1]++;
cout & lt& lt"Por favor ingrese el nombre del estudiante:";
CIN & gt;& gtHoly Name();
for(int I = 0;i<5;i++)
{
cout & lt& lt"Ingrese"
CIN & gt & gtST; [I];
}
cout & lt& lt"¿La entrada es correcta? y significa sí; r significa volver a ingresar; n significa darse por vencido\n";
CIN & gt;& gtch;
if(ch=='y ')
datos push _ back(ST);
} while(ch == ' r ');
}
}
bool cmanagementstudent::on save()
{
of stream fout(" score . txt ");
if(fout.fail()){
cout & lt& lt"No se puede guardar" p>
Devuelve falso
}
for(int I = 0;i<8;i++)
fout & lt& lttitle[I]& lt;& lt" ";
fout & lt& ltendl
vector & ltstudent& gt*iterator it = data.begin();
mientras (it! =data.end()){
CStudent st = * it
fout & lt& ltST .
fout & lt& lt " " " & lt& ltST . SN();
fout & lt& lt" " " & lt& ltHoly Name();
for(int I = 0; i<5 ;i++)
fout & lt& lt" " " & lt& ltST[I];
fout & lt& ltendl
it++;
}
fout . close();
Devuelve verdadero
}
void cmanagementstudent::do event(int ID){
Cambiar (ID)
{
Caso 1:
en el navegador();
Interrupción
Caso 2:
OnFind();
Romper
Caso 3:
OnAddData() ;
Pausa;
Caso 4:
al guardar();
Pausa;
Caso 0:
cout & lt& lt"Adiós\n";
Salir(0);
Valor predeterminado:
OnInvalidateInput(" entrada 1, 2, 3 , 4, 0 ");
Romper;
}
}
///// ////// ///////////////////////////////////////////////// // ////
Clase CFind:estudiante de administración pública {
void on find name();
void onfindhhighscore();
anular OnF
indLowScore();
Público:
CFind(cmanagementstudent * p = 0):cmanagementstudent(p){ }
void ShowMenu(); //Mostrar Menú
void do event(int ID); //Respuesta a la entrada del usuario
};
//////////// / /////////////////////////////////////////////////
void CFind::ShowMenu(){
cout & lt& ltendl
cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *";
cout & lt& lt" 1 Buscar por nombre \t2Buscar puntuaciones altas\t3Buscar puntuaciones bajas\t0Salir\n";
cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n";
}
void CFind: :DoEvent(int ID)
{
Cambiar (ID)
{
Caso 1:
en buscar nombre();
Pausa;
Caso 2:
onfindhhighscore();
Pausa;
Caso 3:
OnFindLowScore();
Pausa;
Caso 0:
cout & lt& lt" Salir el menú de búsqueda \n";
pBase = parent
Eliminar esto;
Romper;
Predeterminado:
OnInvalidateInput(" entrada 1, 2, 3, 0 ");
Break
}
}
void CFind; :: OnFindName(){
Nombre de cadena;
cout & lt& lt"Ingrese el nombre del estudiante que desea encontrar:";
CIN & gt;& gt nombre;
Vector & ltstudent& gt* iterador it = data .
String tmp
bool first = true p >
Y (¡eso! =data.end()){
Si ((*it).Name()==nombre)
{
Si (primero)
{
for(int I = 0;i<8;i++)
cout & lt& ltsetw(wid[I])<<title [I]; p>
cout & lt& ltendl
primero = false
}
cout & lt& lt(*it).
nombre()<<endl
}
it++;
}
}
void CFind :: onfindhhighscore(){
String scoring_name
cout & lt& lt"Ingrese el nombre del curso: ";
CIN & gt;& gtscore_ name
int num=0, index = 3;
while(index <8)//Calcula a qué curso ha ingresado el usuario.
{
if(title[index]==score_name)
descanso;
index++;
}
Vector <student>*iterator it = data.begin();
if(index>=8){
cout & lt& lt"El nombre del curso es incorrecto\n";
Retorno;
}
int puntuación;
cout & lt<"Puntuación de entrada:";
CIN>>Score;
bool first = true
Y (it!=data.end( )){
if(( * it)[index-3]>=score){
if (primero){
primero = false
for(int I = 0; i<8;i++)
cout & lt& ltsetw(wid[I])& lt;& lttitle[I];
cout & lt& ltendl
}
cout & lt& lt* it & lt& ltendl
num++;
}
it++;
}
cout & lt& lt" \n***ya"
}
void CFind::OnFindLowScore()
{ p>
Cadena nombre_puntuación
cout & lt& lt"Ingrese el nombre del curso: ";
CIN>& gtscore_name
int num=0, index = 3;
while(index <8)// Calcula dónde ha ingresado el usuario a los cursos.
{
if(title[index]==score_name)
descanso;
index++;
}
Vector <student>*iterator it = data.begin();
if(index>=8){
cout & lt& lt"El nombre del curso es incorrecto\n";
Retorno;
}
int puntuación;
cout & lt<"Puntuación de entrada:";
CIN>>Score;
bool first = true
Y (it!=data.end( ))
{
if((* it)[index-3]<=puntuación)
{
si (primero){
primero = falso
for(int I = 0;i<8;i++)
cout & lt& ltsetw(wid[ I])<<Title[I];// Genera la información de cada elegible alumno.
cout & lt& ltendl
}
cout & lt& lt* it & lt& ltendl
num++;
}
it++;
}
cout & lt& lt" \n***ya"
}
//////////////////////////////////////////////// / p>
navegador de clase c:estudiante de administración pública {
void OnOrigin();
void en promedio()
void OnScoreAnasys(); ;
nulo en crédito();
Público:
CB remero(cmanagementstudent * p = 0):cmanagementstudent(p){ }
void ShowMenu(); //Mostrar menú
void do event(int ID); //Responder a la entrada del usuario
};
/ // ///////////////////////////////////////////////// ////// /////////
void CBrower::ShowMenu(){
cout & lt& ltendl
cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
cout & lt& lt"1 Puntuación original\t2Puntuación media\t3 Análisis de puntuación\t4 Créditos\t0Salir\n";
cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n";
}
void CBrower::DoEvent(int ID){
Cambiar( ID){
Caso 1:
OnOrigin();
Interrupción;
Caso 2:
en promedio();
Pausa;
Caso 3:
OnScoreAnasys();
Pausa; p>
Caso 4:
OnCredit();
Pausa;
Caso 0:
cout & lt& lt" Salir del menú de vista previa\ n";
pBase = parent
Eliminar esto;
Romper;
Valor predeterminado:
OnInvalidateInput ("entrada,,,");
Break;
}
}
void CBrower::OnOrigin (){
Vector<Student>*Iterador it = data.begin();
for(int I = 0;i<8;i++)
cout & lt& ltsetw (ancho[I])& lt;& lt
Título[I];
cout & lt& ltendl
Y (it!=data.end()){
cout & lt& lt* it & lt& ltendl
it++;
}
}
void CBrower::OnAverage()
{ p>
vector <student>*iterator it = data.begin();
for(int I = 0;i<8;i++)
cout & lt& ltsetw(wid[I ])& lt;& lttitle[I];
cout & lt& lt"puntaje promedio";
y (it!= data.end ())
{
doble suma = 0;
for(int I = 3;i<8;i++)
{
suma+= (* it)[I-3];
}
cout & lt& lt* it & lt& lt" " " & lt& ltsum /5 & lt;& ltendl
it++;
}
cout & lt& ltendl
}
void CBrower::OnScoreAnasys()
{
Vector & lt estudiante & gt* iterador = datos .
cout & lt& lt "* * * * * * * * * * * * * *Análisis de desempeño personal* * * * * * * * * * * * \n";
for(int I = 0; I& lt3;i++)
cout & lt& ltsetw(wid[I])& lt;& lttitle[I];
cout & lt& ltendl
Y (it != data.end())
{
cout & lt& lt(*it).ID()& lt;& lt" ";
cout & lt& lt(*it). )& lt;& lt" ";
cout & lt& lt(*it).
nombre()& lt;& lt" " " & lt& ltendl
int recuento _ bueno = 0;
int recuento _ malo = 0;
cout & lt& lt"Excelentes resultados":
for(int I = 3;i<8;i++)
{
if((* it) [I- 3]>= 90)
{
cout & lt& lttitle[I]& lt;& lt":" & lt& lt(* it)[I -3]& lt;& lt" ";
count _ bueno++;
}
}
cout & lt& lt" \nA * * * "
cout & lt& lt"failed":
for(int I = 3;i<8;i++)
{
if((* it)[I-3]& lt;= 60)
{
cout & lt& lttitle[I]& lt & lt":" & lt& lt; (*it)[I-3]& lt;& lt" ";
cuenta_mala++;
}
}
cout & lt& lt" \na* * * "
it++;
cout & lt& lt"-"& lt;& ltendl
} p>
}
void CBrower::OnCredit()
{
Vector<Student> *Iterador it = comenzar();
.for(int I = 0;i<8;i++)
cout & lt& ltsetw(wid[I])& lt ;& ltTítulo[I];
cout & lt& ltendl
Y (it!=data.end())
{
Crédito de crédito;
cout & lt& ltsetw(wid [0])& lt;& lt(*it).ID()& lt;& ltsetw(wid[1]);
cout & lt& lt(*it). ;& lt" ";
cout & lt& ltsetw(wid[1])& lt;& lt(*it) .
nombre()<<setw(wid[1]);
for(int I = 0;i<5;i++)
{
if((* it)[I]& gt;= 60)
cout & lt& ltcredit[I]& lt;& ltsetw(wid[I+4]);
Otros
cout & lt& lt" 0 " & lt& ltsetw(wid[I+4]);
}
it++;
cout & lt& ltendl
}
}
void cmanagementstudent::on brower(){
pBase = new c brower( pBase);
}
void cmanagementstudent::OnFind()
{
pBase = new CFind(pBase);
p>}
//////////////////////////////////////// /////////
int main()
{
pBase = nuevo cmanagementstudent;
if(pBase ->;InitialData()){
int ID
mientras(1){
pBase->;ShowMenu();
CIN>>ID
pBase->hacer evento(ID);
}
}
Eliminar pBase
Devuelve 0;
}
Necesita configurar un socre.txt para almacenar inicialmente la información de los estudiantes.
Déjame mostrarte un ejemplo.
ID del estudiante Nombre Matemáticas avanzadas Física general Matemáticas discretas Computación Inglés
200611002 Chen Xiaobao
200611003 3 Chen Dalong 81 83 97 85 73
200611004 4 Chen Wen83 49 79 82 80
200611005 5 Cheng Zhengxing79 80 91 77 76
Puedes preguntarme si no entiendes.