Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2013, 12:27
Lennim07
 
Fecha de Ingreso: abril-2013
Mensajes: 1
Antigüedad: 11 años, 7 meses
Puntos: 0
Información Archivos .dat c++

Holaa!, tengo una super dudisima, en el programa que pondré mas adelante pido y guardo datos de alumnos en un archivo . dat y luego los imprimo en pantalla desde ahi, pero al abrir el programa por segunda vez, sobreescribe los anteriores y solo imprime los nuevos, como puedo corregir esto, para que se puedan ver los viejos y nuevos? MUCHAS GRACIAS DE ANTEMANO! es un examen :((

#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;

//Este programa almacena los datos de n alumnos mediante una clase, y el uso de estructura.Examen

class instituto
{

public:
instituto ();
~instituto ();
void leer ();
void promedio ();
void imprimir ();
void guardar ();
void cargar ();
int nene;

private:

struct datos
{
char nombre[32];
char grupo[5];
long int boleta;
float cal1,cal2,cal3,prom;
};
datos dat[30];


};
instituto::instituto ()
{
cout<<"\tInstituto Politecnico Nacional ESIME Zacatenco ICA"<<endl;
cout<<"NENE ingresa el numero de Alumnos para guardar tu sabe: ";
cin>>nene;


}
instituto::~instituto ()
{}
void instituto::leer ()
{
for(int i=0; i<nene; i++)
{



cout<<"\n\tNombre del Alumno: \n"<<endl;
cin.ignore(100,'\n');
cin.getline(dat[i].nombre,32);
cout<<"\n\tGrupo: \n"<<endl;
cin>>dat[i].grupo;
cout<<"\n\tBoleta: \n"<<endl;
cin>>dat[i].boleta;
cout<<"\n\tPrimer Calificacion: \n"<<endl;
cin>>dat[i].cal1;
cout<<"\n\tSegunda Calificacion: \n"<<endl;
cin>>dat[i].cal2;
cout<<"\n\tTercera Calificacion: \n"<<endl;
cin>>dat[i].cal3;
}
return;

}

void instituto::promedio ()
{
for(int i=0; i<nene; i++)
{

dat[i].prom=(dat[i].cal1+dat[i].cal2+dat[i].cal3)/3;
}
return;

}

void instituto::imprimir()
{
for(int i=0; i<nene; i++)
{

cout<<"Los datos del Alumno son los siguentes:"<<endl
<<"\t\tNombre: "<<dat[i].nombre<<endl
<<"\t\tBoleta: "<<dat[i].boleta<<endl
<<"\t\tGrupo: "<<dat[i].grupo<<endl
<<"\t\tPrimera calificacion: "<<dat[i].cal1<<endl
<<"\t\tSegunda calificacion: "<<dat[i].cal2<<endl
<<"\t\tTercera calificacion: "<<dat[i].cal3<<endl
<<"\t\tPromedio final: "<<dat[i].prom<<endl;

if(dat[i].prom>=6)
{
cout<<"\t\nNOTA: El Alumno tiene un promedio aprobatorio, es un nene inteligente\n\n"<<endl;
}
else
{
cout<<"\t\nNOTA: El Alumno tiene un promedio reprobatorio RECURSAMIENTO OBLIGATORIO\n\n"<<endl;
}
}
return;

}

void instituto::guardar()
{
const int MAXCARACTERES=15;
char nombrearchivo[MAXCARACTERES]="registro.dat";
ofstream archivo_sale;
archivo_sale.open(nombrearchivo);
if(archivo_sale.fail())
{

cout<<"El archivo no se abrio exitosamente"<<endl;
exit(1);
}
for (int i=0; i<nene; i++)
{
archivo_sale<<dat[i].nombre<<"\n"
<<dat[i].boleta<<"\n"
<<dat[i].grupo<<"\n"
<<dat[i].cal1<<"\n"
<<dat[i].cal2<<"\n"
<<dat[i].cal3<<"\n"
<<dat[i].prom<<"\n";
}
archivo_sale.close();
cout<<"Los datos fueron guardados correctamente en"<<nombrearchivo<<endl;
system("PAUSE");
return;
}
void instituto::cargar()
{

const int MAXCARACTERES=15;
char nombrearchivo[MAXCARACTERES]="registro.dat";
ifstream archivo_entra;
archivo_entra.open(nombrearchivo);
if (!archivo_entra)
{

cout<<"El archivo"<<nombrearchivo<<"no se abrio exitosamente \n verifique si existe"<<endl;
system("PAUSE");
exit(1);
}
cout<<"Los datos del registro de alumno son:";
for (int i=0; i<nene; i++)
{

archivo_entra>>dat[i].nombre;
cout<<"Nombre del alumno: "<<dat[i].nombre<<endl;
archivo_entra>>dat[i].boleta;
cout<<"Boleta: "<<dat[i].boleta<<endl;
archivo_entra>>dat[i].grupo;
cout<<"Grupo: "<<dat[i].grupo<<endl;
archivo_entra>>dat[i].cal1;
cout<<"Calificacion 1: "<<dat[i].cal1<<endl;
archivo_entra>>dat[i].cal2;
cout<<"Calificacion 2: "<<dat[i].cal2<<endl;
archivo_entra>>dat[i].cal3;
cout<<"Calificacion 3: "<<dat[i].cal3<<endl;
archivo_entra>>dat[i].prom;
cout<<"Promedio: "<<dat[i].prom<<endl;

}
system("PAUSE");
return;
}
int main ()
{

instituto datos;


system ("CLS");

if(datos.nene>30)
{
cout<<"ERROR SOBRE CUPO DE ALUMNOS VOY A MORIR XD \n Maximo pueden ser 30 alumnos asi que introduce un num maximo a 30"<<endl;
}
else
{


datos.leer();

datos.promedio();
datos.guardar();

system("CLS");

datos.imprimir();


cout<<"Los datos cargados desde el archivo:"<<endl;

datos.cargar();


}


system ("PAUSE");
return 0;
}