Ir al contenido principal

COMO MANEJAR ARCHIVOS EN C++

Buenas aquí les dejo una entrega con un ejemplo básico para manejar archivos en visual C++

el enunciado en el cual esta basado el programa es el siguiente:


EN UNA EMPRESA CON N EMPLEADOS SE NECESITA OBTENER CIERTA INFORMACION, POR CADA EMPLEADO SE INGRESAN LOS SIGUIENTES DATOS: APELLIDOS, NOMBRES,CLAVE,EDAD,SEXO,SUELDO HAGA UN PROGRAMA PARA CALCULAR E IMPRIMIR LO SIGUIENTE:
a) Número de hombres
b) Números de mujeres
c) Números de hombres menores de 40 años que ganen más de $1.000.000()
d) Números de empleados mayores de 50 años.
e) Listar el archivo
f) Eliminar archivo


#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "stdlib.h"


#define LON sizeof(struct CLIENTES)
struct CLIENTES{
char nombre[30];
char apellidos[30];
char clave[30];
int ed,edad,edee,hombres,mujeres;
char sexo[30];
char sueldo[30];
};

struct CLIENTES reg;
void crear_archivo();
void escribir_archivo();
void mostrar_archivo();
void eliminar_archivo();
void contar_hombresmenores();
void contar_hombres();
int id,eda=0,ede=0,hombre=0,mujer=0;
char N[20];
void main(){
char M='m';
int opcion;

while (M=='m' || M=='M')
{
system("cls");
printf("BIENVENIDO AL PROGRAMA DE ARCHIVOS\n");
printf("1. CREAR ARCHIVO\n");
printf("2. ESCRIBIR EN ARCHIVO\n");
printf("3. MOSTRAR ARCHIVO\n");
printf("4. ELIMINAR ARCHIVO\n");
printf("5. SALIR\n");
printf("DIGITE OPCION\n");
//2- error al leer la opcion ya que la variable es de tipo entero y no un string
scanf("%d",&opcion);
switch(opcion)
{
case 1:crear_archivo();
break;
case 2: escribir_archivo();
break;
case 3:mostrar_archivo();
break;
case 4:eliminar_archivo();
break;
case 5: exit(0);
}
printf("SI DESEA VOLVER AL MENU DIGITE M: \n");
scanf("%s",&M);
}

getch();
}
void crear_archivo(){
printf("INGRESE EL NOMBRE DEL ARCHIVO\n");
scanf("%s",&N);
//el parametro N no va dentro de las comillas ya que es e parametro para asignar el nombre
id=_creat(N, _S_IREAD|S_IWRITE);
if(id==-1)
{
printf("ERROR AL CREAR EL ARCHIVO\n");
getch();
exit(1);
}
else{
printf("EL ARCHIVO %s FUE CREADO SASTIFACTORIAMENTE\n",N);
}
if(_close(id)==-1){
printf("ERROR AL CERRAR EL ARCHIVO\n");
getch();
exit(1);
}
}
void escribir_archivo(){
int i;
int num=1;

id=_open(N,_O_WRONLY);
if(id==-1){
printf("ERROR AL ABRIR EL ARCHIVO\n");
getch();
exit(1);
}

while(num==1) {
printf("Digite el nombre del cliente:\n");
scanf("%s",&reg.nombre);
printf("Digite los apellidos del cliente:\n");
scanf("%s",&reg.apellidos);
printf("Digite la edad del cliente:\n");
scanf("%d",&reg.edad);
printf("Digite el sexo del cliente F/M\n");
scanf("%s",&reg.sexo);
printf("Digite la clave del cliente\n");
scanf("%s",&reg.clave);
printf("Digite el sueldo del cliente\n");
scanf("%s",&reg.sueldo);
contar_hombresmenores();
contar_hombres();
i=_write(id,(char *)&reg,LON);
if(i==-1){
printf("ERROR AL GRABAR EL ARCHIVO\n") ;
getch();
exit(1);
}

printf ("DESEA GRABAR MAS CLIENTES? (SI=1/NO=0)\n");
//el num1 no esta declarado la variable correcta en num
scanf_s("%d",&num);
}
if(_close(id)==-1){
printf("ERROR AL CERRAR EL ARCHIVO\n");
getch();
exit(1);
}
getch();
}

void mostrar_archivo(){
int i;
id=_open(N,_O_RDONLY);
if(id==-1){
printf("ERROR AL ABRIR EL ARCHIVO\n") ;
getch();
exit(1);
}
printf("****************************************************************************\n");
printf("* Cantidad de hombres: %d                                                   *\n", reg.hombres);
printf("* Cantidad de mujeres: %d                                                   *\n", reg.mujeres);
printf("* Cantidad de hombres menores a 40 años con sueldo mas  1 millon: %d        *\n",reg.ed);
printf("* numero de empleados mayores a 50 años:  %d                                *\n",reg.edee);
printf("****************************************************************************\n");

printf("****************************************************************************\n");
printf("*  NOMBRE       APELLIDOS      EDAD       SEXO        CLAVE       SUELDO   *\n");
printf("****************************************************************************\n");
while(!eof(id)){
i=_read(id,(char *)&reg,LON);
if(i==-1){
printf("ERROR AL LEER EL ARCHIVO\n") ;
getch();
exit(1);
}

printf("   %s      ",reg.nombre);
printf("   %s      ",reg.apellidos);
printf("   %d      ",reg.edad);
printf("   %s      ",reg.sexo);
printf("   %s      ",reg.clave);
printf("   %s\n    ",reg.sueldo);

}

//7- en close no se puede cerrar N se tiene que cerrar enviando el parametro id
if(_close(id)==-1){
printf("ERROR AL CERRAR EL ARCHIVO\n");
getch();
exit(1);
}

getch();
}
void eliminar_archivo()
{
if(id=_unlink(N)==-1)
{
printf("ERROR AL ELIMINAR EL ARCHIVO\n");
}
else {
printf("ARCHIVO ELIMINADO CORRECTAMENTE\n");
}

}

void contar_hombresmenores()
{
char a=1000000;
if(reg.edad<=40)
{
if( reg.hombres != NULL)
{
if (reg.sueldo[0]>=1000000)
{
eda= eda+1;
reg.ed=eda;
}
}
}

else{
(reg.edad>=50);
ede= ede+1;
reg.edee=ede;

}
}

void contar_hombres()
{
if(reg.sexo[0]=='m' || reg.sexo[0] == 'M')
{
hombre =hombre+1;
reg.hombres=hombre;
}
else
{
if(reg.sexo[0]=='f' || reg.sexo[0] == 'F')
{
mujer = mujer+1;
reg.mujeres=mujer;
}
}
}




Comentarios

Entradas populares de este blog

Tablas y gráficas estadísticas dinámicas con JavaScript, highcharts, HTML y JSON

Después de tener mucho tiempo sin entradas, quiero retomar  el blog  con un poco más de desarrollo códigos ejemplos y más cosas interesantes que he podido realizar en mi día a día. En esta ocasión quiero realizar un ejemplo para el cual pueda  graficar tablas, gráficas estadísticas  utilizando la librería de highcharts ( https://www.highcharts.com/ ), esta librería tiene muchas aplicaciones se puede  usar en diferentes campos y es realmente interesante para realizar todo tipo de tratamiento de data. Este ejemplo se va a trabajar sobre un proyecto realizado en visual studio 2015, pero se debe tener en cuenta que se puede aplicar a cualquier tipo de proyecto en el cual se use javascript y objetos JSON. La idea con este código es poder generar la cantidad de objetos JSON que sean necesarios desde  el code behind usado y este sea procesado para que se genere a nivel del cliente todas las gráficas requeridas. Ejemplo: 1- Se debe crear e...

Exportar Archivos en C# con NPOI

Siempre que se tiene que exportar un archivo, se tienen varias opciones; se puede pensar en usar reporting services, se puede usar librerías que se encuentran en la red, se pueden usar librerías especificas de .NET, pero hoy vamos a ver como usar la librería NPOI. La librería NPOI es una librería de código abierto que se usa para parsear data en archivos de excel, en este caso vamos a usar  un data set  para realizar toda la operación. Se va a crear un libro de excel con extensión xlsx, en el cual se va a crear la plantilla que se requiere para poder visualizar la data y la gráfica correspondiente. se crea el método dentro del cual se tendrá la lógica         public void ejemplonpoi()           { } Se crean la variables necesarias para realizar la conversión del archivo             var extension = "xlsx";             string result = Path.Get...

CREAR ARCHIVOS TXT EN VISUAL BASIC 2010

Buenas hoy veremos un ejemplo para crear un archivo .txt en visual basic .NET  utilizando la herramienta visual studio 2010. el manual de referencia lo podemos encontrar en el libro  VISUAL BASIC .NET lenguaje y aplicaciones 3ra edicion  Fco. Javier Ceballos el tipo de acceso mas simple a un fichero de datos es el secuencial, un fichero abierto  para acceso secuencial es un fichero que puede almacenar registros de cualquier longitud. Este tipo de acceso generalmente se utiliza con ficheros de texto en los que se escribe toda la información desde el principio hasta el final y se lee de la misma forma. las acciones mas comunes que se manejan a la hora de trabajar con archivos son: CreateNew: crea un nuevo fichero. Si el fichero existe se lanzara una excepción del tipo IOException Create: Crear un nuevo fichero. Si el fichero existe sera sobrescrito  Open: abrir el fichero existente OpenOrCreate: abrir un fichero si e...