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",®.nombre);
printf("Digite los apellidos del cliente:\n");
scanf("%s",®.apellidos);
printf("Digite la edad del cliente:\n");
scanf("%d",®.edad);
printf("Digite el sexo del cliente F/M\n");
scanf("%s",®.sexo);
printf("Digite la clave del cliente\n");
scanf("%s",®.clave);
printf("Digite el sueldo del cliente\n");
scanf("%s",®.sueldo);
contar_hombresmenores();
contar_hombres();
i=_write(id,(char *)®,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 *)®,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;
}
}
}
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",®.nombre);
printf("Digite los apellidos del cliente:\n");
scanf("%s",®.apellidos);
printf("Digite la edad del cliente:\n");
scanf("%d",®.edad);
printf("Digite el sexo del cliente F/M\n");
scanf("%s",®.sexo);
printf("Digite la clave del cliente\n");
scanf("%s",®.clave);
printf("Digite el sueldo del cliente\n");
scanf("%s",®.sueldo);
contar_hombresmenores();
contar_hombres();
i=_write(id,(char *)®,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 *)®,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
Publicar un comentario