viernes, 19 de abril de 2013

Practica 13

Problema 1


//PRACTICA No 13 PROBLEMA No 1 FECHA: 19/04/2013
//INTEGRANTES: Jesus Hernan Valdez Meza//


#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdio.h>
#include <ctype.h>
struct producto
{
int noProd;
char descrip[30];
float precio;
int cantidad;
};
producto Registro;
FILE *alias;
void ALTA_SECUENCIAL();
void CONSULTA_SECUENCIAL(void);
void LISTADO_SECUENCIAL(void);
void MODIFICACION_SECUENCIAL(void);
void BAJA_LOGICA_SECUENCIAL(void);
void BAJA_FISICA_SECUENCIAL(void);
int menu();
int main()
{
 int opc;
  do
  {
  clrscr();
  opc=menu();
  switch(opc)
  {
  case 1:
      ALTA_SECUENCIAL();
        break;
  case 2:
      CONSULTA_SECUENCIAL();
         break;
  case 3:
     LISTADO_SECUENCIAL();
         break;
  case 4: MODIFICACION_SECUENCIAL();
     break;
  case 5 :  BAJA_LOGICA_SECUENCIAL();
      break;
  case 6:    BAJA_FISICA_SECUENCIAL();
      break;

  case 7: cout<<"\n\nFinal programa ";
     break;
  default: cout<<"\nError en opcion"<<endl;
  }
  }
  while(opc !=7);
  getch();
  return 0;
  }

void ALTA_SECUENCIAL()
{
int no_prod; // Variable local para el numero de producto
clrscr();
cout << "\n\rALTAS DE REGISTROS DE PRODUCTOS";
alias=fopen("C:\\datos\\PRODUCTO.SEC","rb+"); // Intenta abrir el archivo
// en modo de lectura/escritura
if(alias==NULL)
alias=fopen("c:\\datos\\PRODUCTO.SEC","wb"); // Crea el archivo en caso de no
// existir
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
fread(&Registro,sizeof(Registro),1,alias);
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
// archivo
{
if(Registro.noProd==no_prod)
{
cout << "\n\n\n\rRegistro duplicado !!!";
fclose(alias);
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rDescripcion: "; gets(Registro.descrip);
cout << "\n\rCantidad : "; cin >> Registro.cantidad;
cout << "\n\rPrecio : "; cin >> Registro.precio;
Registro.noProd=no_prod;
fwrite(&Registro,sizeof(Registro),1,alias); // Grabar el Registro
fclose(alias); // Cierra el archivo
cout << "\n\n\n\rProducto registrado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void CONSULTA_SECUENCIAL(void)
{
int no_prod;
clrscr();
cout << "\n\rCONSULTA DE REGISTROS DE PRODUCTOS";
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb"); // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL)
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias))
{
if(Registro.noProd==no_prod)
{
cout << "\n\rNo Prod Descripcion Cantidad Precio ";
cout << "\n\r----------------------------------------------------\n\n";
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
fclose(alias);
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void LISTADO_SECUENCIAL(void)
{
clrscr();
cout << "\n\rLISTADO DE REGISTROS DE PRODUCTOS";
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb"); // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL)
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\rNo Prod Descripcion Cantidad Precio ";
cout << "\n\r-------------------------------------------------------------------\n\n";
fread(&Registro,sizeof(Registro),1,alias);
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
fread(&Registro,sizeof(Registro),1,alias);
}
fclose(alias); // Cierra el archivo
cout << "\n\r------------------------------------------------------------------\n\n";
cout << "\n\rFin del listado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
int menu()
{
int opcion;
cout<<"\n\n1)alta de producto "<<endl;
cout<<"\n2)Consulta de producto"<<endl;
cout<<"\n3)Listado de productos"<<endl;
cout<<"\n4)Modificar datos de productos"<<endl;
cout<<"\n5)Baja Logica de productos"<<endl;
cout<<"\n6)Baja Fisica de productos"<<endl;
cout<<"\n7)Salida Programa"<<endl;
cout<<"\n\nSelecciona opcion = ?  ";
cin>>opcion;
return opcion;
}
void MODIFICACION_SECUENCIAL(void)
{
int no_prod; // Variable local para el numero de producto que desea
//modificar
clrscr();
cout << "\n\rMODIFICACION DE REGISTROS DE PRODUCTOS";
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+"); // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de lectura/escritura
if(alias==NULL) // Valida la existencia del archivo
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
fread(&Registro,sizeof(Registro),1,alias);
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
if(Registro.noProd==no_prod)
{
cout << "\n\rNo Prod Descripcion Cantidad Precio \n\n";
cout << "\n\r--------------------------------------------------------------\n\n";
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
cout << "\n\n\n\rAnote los nuevos datos ...";
cout << "\n\rDescripcion: "; gets(Registro.descrip);
cout << "\n\rCantidad : "; cin >> Registro.cantidad;
cout << "\n\rPrecio : "; cin >> Registro.precio;
// Es necesario reposicionar el apuntador del archivo al principio
//del
// registro que desea modificar, ya que al leer un registro, el
// apuntador se posiciona en el registro siguiente
// La funcion ftell(alias) devuelve la posicion donde se encuentra
// el apuntador
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET);
fwrite(&Registro,sizeof(Registro),1,alias); // Graba el registro
// con los nuevos campos
fclose(alias); // Cierra el archivo
cout << "\n\n\n\rRegistro modificado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void BAJA_LOGICA_SECUENCIAL(void)
{
int no_prod; // Variable local para el numero de producto que desea
//eliminar
char op; //Variable local
clrscr();
cout << "\n\rBAJAS LOGICAS DE REGISTROS DE PRODUCTOS";
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+"); // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de lectura/escritura
if(alias==NULL) // Valida la existencia del archivo
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
fread(&Registro,sizeof(Registro),1,alias);
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
if(Registro.noProd==no_prod)
{
cout << "\n\rNo Prod Descripcion Cantidad Precio "<<endl;
cout<< "\n\r---------------------------------------------------------------\n\n";
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
Registro.noProd=0;
strcpy(Registro.descrip,"");
Registro.cantidad=0;
Registro.precio=0.0;
do {
cout <<"\n\n\rEsta seguro que desea borrarlo? [S/N] ---> ";
op=toupper(getche());
}while(op!='S' && op!='N');
if(op=='S')
{
// Es necesario reposicionar el apuntador del archivo al principio del
// registro que desea modificar, ya que al leer un registro, el
// apuntador se posiciona en el registro siguiente
// La funcion ftell(alias) devuelve la posicion donde se encuentra
// el apuntador
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET);
fwrite(&Registro,sizeof(Registro),1,alias); // Graba el registro
// con los nuevos campos
cout << "\n\n\n\rRegistro eliminado !!!";
}
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}

void BAJA_FISICA_SECUENCIAL(void)
{
FILE *temporal; //Declaracion local de una variable para controlar el
// archivo temporal
clrscr();
cout << "\n\rBAJAS FISICAS DE REGISTROS DE PRODUCTOS";
alias=fopen("C:\\datos\\PRODUCTO.SEC","rb"); // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL) // Valida la existencia del archivo
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
temporal=fopen("C:\\datos\\TEMPORAL.TMP","wb"); // Crea el archivo TEMPORAL.TMP
fread(&Registro,sizeof(Registro),1,alias);
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del archivo
{
if(Registro.noProd!=0)
fwrite(&Registro,sizeof(Registro),1,temporal);
// Graba el registro valido en el archivo temporal
fread(&Registro,sizeof(Registro),1,alias);
}
fcloseall(); // Cierra todos los archivos abiertos
remove("C:\\datos\\PRODUCTO.SEC"); //Elimina el archivo original
rename("C:\\datos\\TEMPORAL.TMP","C:\\datos\\PRODUCTO.SEC");
//Renombra el archivo temporal con el nombre del archivo original
cout << "\n\n\n\rArchivo compactado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}



Problema 2



//PRACTICA No 13 PROBLEMA No 2 19/04/2013
//Integrantes: Jesus Hernan Valdez Meza//
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdio.h>
void salida_datos_file(int n)
{
ofstream salida;
salida.open("C:\\Datos\\nombres.txt");
int i;
char name [30];

for (i=1; i<=n; i++)
 {
 cout<<" Nombre "<<i <<" = ? ";
   gets (name);
   salida<<name<<endl;
   }
   salida.close ();
}

void agregar_datos_file ()
{
ofstream salida;
salida.open("C:\\Datos\\nombres.txt",ios::app);
int i;
char name [30], sigue;
do
 {
   cout<<" Nombre "<<i <<" =? ";
   gets (name);
   salida<<name<<endl;
   cout<<"\nDeseas continuar s/n ? ";
   cin>>sigue;
   }
   while (sigue=='s' || sigue=='S');
   salida.close();
}

void entrada_datos_file()
{
ifstream entrada;
entrada.open("C://Datos//nombres.txt");
char name [30];
cout<<"\nListado de nombre\n";
entrada.getline(name,30);
cout<<name<<endl;
while (!entrada.eof())
 {
   entrada.getline(name,30);
   cout<<name<<endl;
   }
   entrada.close();
}

void almacena_calif (int n)
{
ofstream salida;
salida.open("C://Datos//calificaciones.txt");
int r, c, calif;
for (r=0; r<n; r++)
 {
   cout<<"Introduce calificaciones del estudiante "<<(r+1)<<endl;
   for (c=0; c<6; c++)
    {
    cout<<"Calificaciones "<< (c+1)<<" = ? ";
    cin>>calif;
    salida<<calif<<" ";
    }
    salida<<endl;
   }
   salida.close ();
}

void leer_archivo_calif(int a[20][6], int promedio [20], int n)
{
ifstream entrada;
entrada.open("C://Datos//calificaciones.txt");
int r, c, suma;
for (r=0; r<n; r++)
 {
   suma=0;
   for (c=0; c<6; c++)
    {
      entrada>>a[r][c];
      cout<<a[r][c]<<"\t";
      suma=suma+a[r][c];
      }
   promedio[r]=suma/6;
   cout<<promedio[r]<<endl;
   }
entrada.close();
}

void menu ()
{
cout<<"\nMenu de Opciones\n ";
cout<<"\n1)Agregar Nombres Alumnos\n";
cout<<"\n2)Listado Nombres Alumnos\n";
cout<<"\n3)Agregar Calificaciones Alumnos\n";
cout<<"\n4)Listado de Calificaciones Alumno\n";
cout<<"\n5)Fin de programa\n";
cout<<"\nElige Opcion ==> ";
}

void main ()
{
int n, opcion=0;
int c[20][6], p[20];
cout<<"Cantidad de alumnos = ";
cin>>n;
do
 {
   clrscr ();
 menu ();
 cin>>opcion;
 switch (opcion)
  {
    case 1: salida_datos_file(n);
         getch();
       break;
    case 2: entrada_datos_file();
         getch ();
       break;
    case 3: almacena_calif(n);
       break;
    case 4: cout<<"Listado de calificaciones alumnos\n\n";
       leer_archivo_calif(c, p, n);
               getch ();
             break;
    case 5: cout<<"\n\nFIN PROGRAMA\n";
       break;
  default: cout<<"Error en opcion\n";
  }
   }
while (opcion!=5);
getch ();
}




No hay comentarios:

Publicar un comentario