lunes, 28 de enero de 2013

proyecto final

//Proyecto final
//Leonardo fraire, Ezequiel mendez, Alejandra macias
#include <time.h>
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
void desplegar();

void fecha()
{
cout<<""<<endl;
cout<<"\t\tAGENDA"<<endl;
char sdate[9];
_strdate(sdate);
cout<<endl;
cout<<"                       "<<"\t\t\t\t\t fecha "<<sdate<<endl;
}

void reemplazar(char *str, char o, char v)
{
 char *p;
 while (p = strchr(str, o)) {*p = v;}
}

void datos() //Entrada de datos
{
ofstream salida;
salida.open("F://Agenda.txt", ios::app);
int telefono, celular;
char nombre[40], sigue;
char correo[30], cumpleanos[10];
char nextel[15];
char direccion[40];
char stime[10];
char sdate[10];

_strdate(sdate);
do{
_strtime(stime);
clrscr();
fecha();

cout << " Introduzca Nombre del contacto: ";
cin.ignore(9000, '\n');
cin.getline(nombre, 40, '\n');
cout <<endl;

cout<<" Introduzca No. de Telefono: [          ]\b\b\b\b\b\b\b\b\b\b\b";
cin>>telefono;
cout<<endl;

cout<<" Introduzca No. de Celular : 664[          ]\b\b\b\b\b\b\b\b\b\b\b";
cin>>celular;
cout<<endl;

cout<<" Introduzca No. de nextel :[          ]\b\b\b\b\b\b\b\b\b\b\b";
cin.ignore(9000, '\n');
cin.getline(nextel, 15, '\n');
cout<<endl;

cout<<" Introduzca su Email: ";
cin>>correo;
cout<<endl;

cout<<" Introduzca fecha de cumpleanos:[          ]\b\b\b\b\b\b\b\b\b\b";
cin>>cumpleanos;
cout<<endl;

cout<<" Introduzca su Direccion: ";
cin.ignore(9000, '\n');
cin.getline(direccion, 40, '\n');
cout<<endl;

reemplazar(nombre, ' ', '_');
reemplazar(direccion, ' ', '_');


salida<<nombre<<" "<<telefono<<" "<<celular<<" "<<correo<<" "<<direccion<<" "<<nextel<<" "<<cumpleanos<<endl;
cout<<" Desea registrar otro contacto: s/n? [ ] \b\b\b";
cin>>sigue;
}
while(sigue=='s' || sigue=='S');
clrscr();
}


void entrada_datos_file() //Busca nombre
{
 char nombre[40], nombrebuscar[40], direccion[40], nextel[15], correo[30], cumpleanos[10];
 int telefono, celular;

 clrscr();
 cout<<endl;
 fecha();
 ifstream entrada;

 entrada.open("F://Agenda.txt",ios::app);
 cout << "Nombre: ";
 cin.ignore(9001, '\n');
 cin.getline(nombrebuscar, 40, '\n');

 while(entrada.good())
 {
  entrada >> nombre;
  reemplazar(nombre, '_', ' ');
  if (!strcmp(nombre, nombrebuscar))
  {
   entrada >> telefono >> celular >> correo >> direccion >> nextel >> cumpleanos;
   reemplazar(direccion, '_', ' ');
   cout<< "Nombre: " <<nombre<<endl;
   cout<< "Telefono: " <<telefono<<endl;
   cout<< "Celular: " <<celular<<endl;
   cout<< "Correo: " <<correo<<endl;
         cout<< "nextel: " <<nextel<<endl;
         cout<< "cumpleaños: " <<cumpleanos<<endl;
   cout<< "Direccion: " <<direccion<<endl;
   return;

  }
 }

 cout<< "No encontrado" <<endl;
}


void menu ()
{
cout<<" \t\n\t\t Bienvenido \n "<<endl;
cout<<"\t Elija una opcion para continuar\n"<<endl;
cout<<"\t\t 1) Registrar un contacto\n "<<endl;
cout<<"\t\t 2) Consultar contacto\n  "<<endl;
cout<<"\t\t 3) Desplegar todos los contactos \n"<<endl;
cout<<"\t\t 4) Desplegar contactos por cumpleanos\n"<<endl;
cout<<"\t\t 5) Salir\n";

}
void desplegarcumple();
void main (void)
{
int opc;
do{
ofstream salida;
salida.open("F://Agenda.txt", ios::app);

menu();
cout<<"\n\t Selecione una opcion: ";
cin>>opc;

switch (opc)
{
case 1:
datos();
break;
case 2:
entrada_datos_file();
break;
case 3: desplegar();
break;
case 4: desplegarcumple();
break;
}
}
while (opc!=5);
}
void desplegarcumple()
{
ifstream entrada;
entrada.open("F://Agenda.txt");
int telefono, celular;
char nombre[40], sigue;
char correo[30], cumpleanos[10];
char nextel[15];
char direccion[40];
char mes[3];
 clrscr();
 cout << "Introducir el numero de mes: ";
 cin >> mes;


 entrada>>nombre;
 while(entrada.good())
 {
 entrada>>telefono;
 entrada>>celular;
 entrada>>correo;
 entrada>>direccion;
 entrada>>nextel;
 entrada>>cumpleanos;

 if (cumpleanos[3] == mes[0] && cumpleanos[4] == mes[1])
 {
 cout<<"Nombre: "<<nombre<<endl;
 cout<<"Telefono: "<<telefono<<endl;
 cout<<"Celular: "<<celular<<endl;
 cout<<"Correo: "<<correo<<endl;
 cout<<"Direccion: "<<direccion<<endl;
 cout<<"Nextel: "<<nextel<<endl;
 cout<<"Fecha de nacimiento: "<<cumpleanos<<endl;
 cout<<endl;
 cout<<"**************************************************************"<<endl;
 cout<<endl;
 }
 entrada>>nombre;
}
entrada.close();
getch();
}

void desplegar()  //Desplegar contactos
 {
 ifstream entrada;
 entrada.open("F://Agenda.txt");
 int telefono, celular;
char nombre[40], sigue;
char correo[30], cumpleanos[10];
char nextel[15];
char direccion[40];
 clrscr();
 //entrada.getline(nombre,40);
 entrada>>nombre;
 while(entrada.good())
 {
 entrada>>telefono;
 entrada>>celular;
 entrada>>correo;
 entrada>>direccion;
 entrada>>nextel;
 entrada>>cumpleanos;

 cout<<"Nombre: "<<nombre<<endl;
 cout<<"Telefono: "<<telefono<<endl;
 cout<<"Celular: "<<celular<<endl;
 cout<<"Correo: "<<correo<<endl;
 cout<<"Direccion: "<<direccion<<endl;
 cout<<"Nextel: "<<nextel<<endl;
 cout<<"Fecha de nacimiento: "<<cumpleanos<<endl;
 cout<<endl;
 cout<<"**************************************************************"<<endl;
 cout<<endl;
 entrada>>nombre;
}
entrada.close();
getch();
}


jueves, 13 de diciembre de 2012

tareas 1-2

IMPORTANCIA DE LA PROGRAMACIÓN DE COMPUTADORAS
Una computadora necesita tener programas para poder funcionar al igual que un programa sin computadora no sirve de nada a menos que el trabajo sea realizado por un procesador.


El área de mi interés esta dirigido a la medicina o  Biomedica .La computación o informática medica es la aplicación de la informática y las comunicaciones al área salud.El objeto es prestar servicio, ayudar a los profesionales de la salud para mejorar la calidad de atención.Se aplica a la medicina , laboratorio de análisis clínicos, dispositivos electrónicos para hacer mediciones, archivos de imágenes, software de gestión hospitalaria, de manejo de turnos, de historias clínicas, bases de datos de pacientes y mas.Por tal motivo, la computación medica es un campo multidisciplinario que se reparte entre profesionales del área salud, el área informática y sistemas, también sobre NUEVAS TECNOLOGÍAS.Es importante conocer nuevas tecnologías para diseñar un nuevo equipo de diagnostico por imagen, hacer tele-medicina o un programa que maneje el dispositivo para hacer un escaneo de determinado órgano.


CONCLUSIÓN
En la medicina es fundamental la computación , por que permite que esta se valla desarrollando y avanzando con nuevas tecnologías, con programas mejor diseñados y mas eficaces   que permiten que computadores y  equipo medico  faciliten el trabajo de los prestadores de salud   y así una atención oportuna con seguridad y calidad a sus pacientes.



Linkhttp://informaticaenlamedicina.blogspot.mx/ 



                                                                                                       





                                                                                                         Tarea 2

Lectura del libro C++ para ingeniería y ciencias.
Leer el capitulo 1
Hacer el siguiente cuestionario: 

1.-Que diferencia existe entre  programación y un programa de computadora. 

La programación es el procedimiento de escritura del código; la programación le indica al programa de computadora que acción tiene que llevar a cabo y producir un resultado especifico.

2.Explique la diferencia entre lenguaje ensamblador y lenguaje máquina.

El lenguaje ensamblador esta compuesto por comandos e instrucciones, mientras que el lenguaje maquina esta compuesto solamente por numero binarios.

3.-Explique la diferencia entre un lenguaje orientado a procedimientos y lenguaje orientado a objetos. 

En un lenguaje orientado a procedimientos las instrucciones disponibles se utilizan para crear unidades independientes, conocidas como procedimientos.

4.-Explique la diferencia entre Lenguaje de alto nivel y bajo nivel. 


El lenguaje ensamblador solo puede utilizarse en un tipo de computadora por lo que se le clasifica de nivel bajo al igual que lenguajes de maquinas.los lenguajes de alto nivel usan instrucción parecidas a los lenguajes escritos  y estos se pueden ejecutar en muchas tipos de computadora.Y estos dos niveles se les llama programas fuente y código fuente. Ambos deben traducirse ya sea con lenguaje interpretado; traducida individualmente y ejecutada de inmediato  o lenguaje compilado; cuando son traducidas como una unidad completa antes de que sea ejecutada y a los  programas se  les llama interprete y copilador respectivamente.


5.-Explique el procedimiento de desarrollo de software. 



Los programas que son escritos las que usamos a diario cual quier persona  se le llama software de aplicación.En cambio el software de sistema son programas que tienen que estar disponibles siempre en cualquier sistema de computo y que funcione cuando las encendamos. 
Sistema operativo son el conjunto de sistema para operar y controlar la computadora.
cuando mas de un usuario ejecuta un programa en la computadora se le llama multiusuario y este siente que la computadora y los periféricos son nada mas de el. También los sistemas multiprogramados y multitareas te permiten ejecutar múltiples tareas.

6.-Haga un ejemplo de un algoritmo

Cambiar una llanta desinflada de un automovil teniendo un gato mecanico en buen estado, una rueda de remplazo y una llave.
Inicio
Paso 1 Aflojar los tornillos de la rueda desinflada con la llave 
Paso 2 Ubicar el gato mecanico en su lugar
Paso 3 Levantar el gato hasta que la rueda pinchada pueda girar libremente
Paso 4 Quitar los tornillos y la rueda pinchada
Paso 5 Poner rueda de repuesto y después los tornillos
Paso 6 Bajar el gato hasta que se pueda liberar
Paso 7 sacar el gato de su sitio
Paso 8 Apretar los tornillos con la llave
FIN

7.-Haga un ejemplo de la solución de un problema por medio del diagrama de flujo.






8.-Explique la diferencia entre hardware y software

Software es todo lo k esta dentro de la computadora y no se puede tocar, son los programas k tienes en la computadora

hardware es todo lo k puedes tocar e instalar en la computadora, como las bocinas, monitor, camara web etc.

9.-Explique las unidades básicas de un computadora. 



  • La unidad de aritmetica y logica (ALU) efectua todas las funciones de aritmetica y logica de la computadora como sumar y restar.
  • la unidad de control dirige y vigila la operación general de la computadora.
  • la unidad de memoria almacena la información en un formato lógicamente consistente.
  • La unidad de entrada y salida  (I/O o E/S) proporcionan la interface a la que se conectan los componentes periféricos como los teclado, monitores, impresoras y lectores de tarjeta.
10.-Escriba un algoritmo para clasificar tres numeros difrentes en orden ascendente ( de menor a mayor).


Inicio
1.Ordenar de menor a mayor 3 numeros diferentes
Print” introduce 3 numero”
Read A,B,C
2Ordenar de menor a mayor
if(A<C)
else
{
Intercambiar A y C}
A>C
If(B<C)
else{
intercambiar B y C}
B>C
If(A<B)
else {
intercambiar A y B }
A>B
3.Desplegar números de menor a mayor
Print  “números de menor a mayor”
Read A>B>C

cuestionario 4


1¿Que elementos se requieren para almacenar y recuperar datos de un archivo creado en C++?
Un archivo
Un objeto en la corriente de archivos
Un modo y unidad de almacenamiento 

2¿Que es un archivo?
es un conjunto de datos que juntos se guardaran bajo un nombre común, por lo general en un disco, cinta magnética o CD ROM, o una unidada movil tales como usb entre otras mas.

3¿Que es el nombre externo del archivo?
es el nombre que reconoce el sistema operativo.

4¿Que es la corriente de archivos?
es una ruta en un sentido para transmisión utilizada para conectar un archivo almacenado en un dispositivo físico, tal como un disco o CD ROM  aun programa.

5¿Que determina el modo?
la dirección de los datos sobre la ruta de transmisión; esto es, si la ruta se utilizara para mover datos  de un archivo a un programa o si se utilizaran para mover datos de un programa a un archivo.

6¿Como se conoce a la corriente de archivos designado con el modo insumo de datos?
corriente de archivos insumo de datos.

7¿Y para que se utiliza?
para recibir o leer datos de un archivo.

8¿Como se conoce la corriente de salida de datos?
Corriente de archivos de salida de datos

9¿y para que se utiliza?
enviar o escribir datos a un archivo

10¿A que se le conoce como funciones de miembros y métodos?
Las funciones tales como open(), asociadas con objetos.

11¿Cual es la estructura de un archivo?
contiene informaron del archivo que se utiliza , en el tamaño del archivo y la localización de los buffers de datos.

12¿Que es un archivo de tipo secuencial?
son registros que se graban en secuencia o consecutivamente, deben accesar del mismo modo.

13¿Que es una variable en cadena?
es una variable que puede contener un valor en cadena de caracteres, la cual es cualquier secuencia de cero o mas caracteres encerrados entre comillas dobles.

14¿cual es la principal diferencia entre variable de carácter y en cadena?
es que una variable de carácter puede almacenar el valor de un solo carácter mientras que una variable de cadena puede almacenar un valor con cero o mas caracteres.

15¿Donde se posiciona el apuntador con frecuencia?
al inicio del archivo cuando se abre el archivo en modo de solo lectura, escritura y en modo agregar se posiciona al final del archivo.

16¿Que hace la función Close()?
rompe la conexion entre el nombre externo del archivo y el objeto de flujo de archivos .

17¿Como localizar el apuntador al final del archivo?
"feof()"

18¿Donde se aplica Rename()?
en archivos cerrados

19¿Que representa struct (variable que almacena la función fwrite?
el bloque de datos o campos

20¿Que es un objeto físico de archivo?
es una corriente que se conecta a un dispositivo de hardware, tal como un teclado , la pantalla o la impresora.

cuestinario 3

cuestionario 2

1¿Que es transmisión por valor?
en una invocación típica la función llamada asigna valores a la funcion que llama, almacena y manipula los valores transmitidos, y devuelve directamente un solo valor, como máximo  A la transmisión de datos de esta manera se le conoce como transmisión por valor.

2 Llamar una función y transmitirle argumentos ¿por valor es una ventaja que distingue al C++.¿que permite esto?
escribir las funciones como entidades independientes que pueden utilizar cualquier nombre de variable o parámetro sin preocuparse por que otras funciones puedan utilizar el mismo nombre.

3¿Que son parámetros?
se pueden considerar como variables inicialisadas o variables a las cuales se asignaran valores cuando se ejecute la función.

4¿A que se le conoce como transmisión por referencia?
en cuanto la función llamada tiene la dirección de la variable , sabe donde reside la variable, puede tener acceso al valor almacenado ahí y cambiarlo directamente.

5¿Por que?por que la función llamada puede hacer referencia, o tener acceso a la variable cuya dirección se le transmitió.

6¿Cuales son los dos tipos de parámetros que permite el C++?
referencias y apuntadores.

7¿Como se le conoce a la transmisión de referencia?
como transmisión de direcciones

8¿Que es una referencia?una referencia actúa igual que un puntero pero funciona de diferente modo, ya que no se puede modificar la variable a la que esta asociada a la referencia
.
9¿Cual es uno de los requisitos para escribir valnuevo( )?es declarar dos parámetros de referencia para aceptar los domicilios transmitidos.

10¿A que se refiere &?la dirección del;tipo precedente de dato
11¿y cuando esta en una declarante?
dirección de.

12¿Cuantos parámetros tiene una función void calcular (doble num1,double num2, double num3,double&total,double&producto)?esta función tiene cinco parámetros.

13¿De la función anterior cuales parámetros son declarados como referencias?
los dos últimos

14¿Dentro de main como se le llama a la función calc( )?
utilizando los argumentos primernum,segundonum,tercernum, suma y producto.

15¿A usar el argumento de referencias que es necesario mencionar?dos precauciones la primera es que los argumentos de referencia deben ser variables y la segunda es que una llamada a función en si no da indicio de que la función llamada usara parámetros de referencia.

16¿Cual es el esquema inicial de un programa de computadora?1 descripción del pseudocodigo, 2 diagrama de estructura de primer nivel

17¿que es función polar?
devuelve un objeto complejo en forma cartesiano correspondiente al numero complejo definido.

18¿Que se usa en una función obtrec ( )?
se usan los parámetros de referencia para devolver los valores que se introducen en respuesta a los indicadores .

19¿Como se usa la función mostrarlo( )?
despliega valores en sus parámetros correspondientes

20¿que algoritmo se usa mas cotidianamente?
1 obtener las entradas de salda, 2 calcular el resultado deseado, 3 reportar los resultados del calculo.


cuestionario 1

1¿A que se le conoce como transmitido por valor?cuando e transmite un valor a una función llamada con este método  al argumento transmitido se le conoce como transmitido por valor.
 o es la sucecion inmediata de caracteres 
2.¿Que elemento debe aportar  de lado de la transacción que devuelve la función llamada?
el tipo de datos del calor devuelto y el valor devuelto real


3¿que debe especificar una función que devuelve un valor ?
en al linea de encabezado , el tipo de datos del valor que devuelve.


4¿que forma tiene una función que utiliza una instrucción de return?
return expresión; es decir que retorna a ese mismo valor la cantidad de veses


5¿Que significa que la función se declara como un doble?
que la expresión en la instrucción de retorno en la función debe ser evaluada como numero en doble precisión, lo cual lleva a cabo.

6¿Cual es unos de los propósitos de las declaraciones?
avisar a la computadora del espacio de almacenamiento interno a reservar para los datos.

7¿que es una referencia?es otro nombre de una variable en esencia una referencia actúa igual que un puntero.

8¿cual es una ventaja de utilizar una función inline?
es un aumento en la velocidad de ejecución.

9¿y cual es una desventaja? es que el tamaño del programa aumenta cuando una función inline se llama en forma repetitiva.

10¿Para que deben utilizarse las funciones inline?
para funciones pequeñas que no son llamadas frecuentemente en un programa.


11¿A que se le llama transmisión por valor?
La función llamada asigna valores a la función que llama, almacena y manipula los valores transmitidos y devuelve directamente un solo valor, como máximo.

12 Llamar a una función y transmitirle argumentos por valor es una ventaja que distingue al c++.¿  que permite esto?
escribir las funciones con entidades independientes que pueden utilizar cualquier nombre de variable o parámetro sin preocuparse por que otras funciones puedan utilizar el mismo nombre.

13¿A que se le conoce como transmisión por referencia?
en cuanto la función llamada tiene la dirección de la variable , sabe donde reside la variable y puede tener acceso al valor almacenado ahí y cambiarlo directamente.

14¿Cuales son los dos parámetros de dirección que permite el C++?
referencias y apuntadores.


15¿De que manera actúa la instrucción de devolución?
el valor de la expresión es convertido de manera automática en el tipo de datos declarado en el encabezado de la función antes de ser enviado de regreso a la función que llama, después que es devuelto el valor el control del programa se revierte.

16¿Que es una instrucción de asignación estándar?
es la utilizada para almacenar el valor devuelto en una variable

17¿Debe almacenarse el valor devuelto por una función en una variable?
No.


18¿ Definición de una función?
comienza con la linea de encabezado de la función y termina con la llave de cierre después de la instrucción devolución.

19¿Que significa el símbolo ampersand (&&) en c++?
dentro de una declaración significa la dirección del tipo de datos precedentes.

o tambien que es una comparacion en la instruccion if.

20¿dentro de la función main ( ) la función calcular es llamada?
usando los cinco argumentos, primer_num,segundo_num,tercer_num,suma y producto.

practica 13


#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("E:\\datos\\PRODUCTO.SEC","rb+"); // Intenta abrir el archivo
// en modo de lectura/escritura
if(alias==NULL)
alias=fopen("E:\\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("E:\\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("E:\\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("E:\\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("E:\\datos\\PRODUCTO.SEC"); //Elimina el archivo original
rename("E:\\datos\\TEMPORAL.TMP","E:\\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;
}