15/04/2013, 12:27
|
| | Fecha de Ingreso: abril-2013
Mensajes: 1
Antigüedad: 11 años, 8 meses Puntos: 0 | |
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;
} |