Ordenar Archivos en Memoria umg buble file c++

La información de todos los empleados de la empresa DATASYSTEM esta almacenada en una variable de tipo struct llamada empleado, la información con que se cuenta es ID, Nombres, Apellidos, Dirección, Teléfono, Genero y salario.

por tanto se pide realizar un programa en c++ que lea los datos del teclado para el ingreso correspondiente y los almacene en un archivo basado en la estructura anterior, dicho programa debe tener también una opción que permite realizar una consulta de todos los empleados, ordenados de forma ascendente.

en este caso lo hice lo mas sencillo posible:

viva la memoria dinámica.

/*
Choc Cac, Mynor R.
correo: mynorrene arroba choccac punto com
lmcc
*/

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

struct MisDatos{
int ID;
char Nombres[50];
char Apellidos[50];
char Direccion[50];
char Telefono[8];
char Genero[6];
double salario;
};

void Guardar(MisDatos guardar)
{
fstream archivo ;
archivo.open("choccac.bin",ios::out | ios::app | ios::binary);
archivo.write( (char *)&guardar,sizeof(MisDatos));
archivo.close();
}

int getNoRegistro()
{
int noRegg=0;
MisDatos nototal;
fstream archivo("choccac.bin", ios::in | ios::binary);
if(archivo.fail())
cerr << "Error al abrir." << endl;
else
while(!archivo.eof())
{
archivo.read((char*)&nototal,sizeof(MisDatos));

if(!archivo.eof())
{
noRegg++;
}
}
archivo.close();
return noRegg;
}

void Ordenar()
{
MisDatos ordenx;
int nuevoDinamica = getNoRegistro();
int contado=0;
MisDatos *burb = new MisDatos[nuevoDinamica];
fstream archivo("choccac.bin", ios::in | ios::binary);
if(archivo.fail())
cerr << "Error al abrir." << endl;
else
while(!archivo.eof())
{
archivo.read((char*)&ordenx,sizeof(MisDatos));

if(!archivo.eof())
{
burb[contado].ID=ordenx.ID;
strcpy(burb[contado].Nombres,ordenx.Nombres);
strcpy(burb[contado].Apellidos,ordenx.Apellidos);
strcpy(burb[contado].Direccion,ordenx.Direccion);
strcpy(burb[contado].Telefono,ordenx.Telefono);
strcpy(burb[contado].Genero,ordenx.Genero);
burb[contado].salario=ordenx.salario;
contado++;
}
}

int temp,i,j;

char Nombres[50];
char Apellidos[50];
char Direccion[50];
char Telefono[8];
char Genero[6];
double salario;
for (i=1; i<nuevoDinamica; i++)
for (j=0 ; j<nuevoDinamica - 1; j++)
if (burb[j].ID > burb[j+1].ID)
{
temp = burb[j].ID;
strcpy(Nombres,burb[j].Nombres);
strcpy(Apellidos,burb[j].Apellidos);
strcpy(Direccion,burb[j].Direccion);
strcpy(Telefono,burb[j].Telefono);
strcpy(Genero,burb[j].Genero);
salario = burb[j].salario;

burb[j].ID = burb[j+1].ID;
strcpy(burb[j].Nombres,burb[j+1].Nombres);
strcpy(burb[j].Apellidos,burb[j+1].Apellidos);
strcpy(burb[j].Direccion,burb[j+1].Direccion);
strcpy(burb[j].Telefono,burb[j+1].Telefono);
strcpy(burb[j].Genero,burb[j+1].Genero);
burb[j].salario = burb[j+1].salario;

burb[j+1].ID = temp;
strcpy(burb[j+1].Nombres,Nombres);
strcpy(burb[j+1].Apellidos,Apellidos);
strcpy(burb[j+1].Direccion,Direccion);
strcpy(burb[j+1].Telefono,Telefono);
strcpy(burb[j+1].Genero,Genero);
burb[j+1].salario = salario;

}
for(i=0; i<nuevoDinamica;i++)
{
cout << "\n\nId: " << burb[i].ID;
cout << "\nNombre: " << burb[i].Nombres;
cout << "\napellidos: " << burb[i].Apellidos;
cout << "\ndireccion: " << burb[i].Direccion;
cout << "\nTelefono: " << burb[i].Telefono;
cout << "\nGenero: " << burb[i].Genero;
cout << "\nSalario: " << burb[i].salario;
}

archivo.close();
delete [] burb;
}

int main()
{
int opcion=0;
char amor[2];
MisDatos acc;
do{
cout << "\n\nmenu\n\n";
cout << "1. Agregar.\n";
cout << "2. mostrar y ordenar.\n";
cout << "3. Salir.\n";
cout << "Que opcion desea: ";
cin >> opcion;
switch(opcion)
{
case 1:
cout << "id: ";
cin >> acc.ID;
cin.getline(amor,2);
cout << "Nombre: ";
cin.getline(acc.Nombres,50,'\n');
cout << "Apellido: ";
cin.getline(acc.Apellidos,50,'\n');
cout << "Direccion: ";
cin.getline(acc.Direccion,50,'\n');
cout << "Genero: ";
cin.getline(acc.Genero,6,'\n');
cout << "Telefono: ";
cin.getline(acc.Telefono,50,'\n');
cout << "Salario: ";
cin >> acc.salario;
Guardar(acc);
break;
case 2:
Ordenar();
break;

}
}while(opcion != 3);

return 0;
}

contaseña: lmcc

OrdenarArchivosEnMemo

Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.