Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Correguir el rumbo de mi programa

Estas en el tema de Correguir el rumbo de mi programa en el foro de C/C++ en Foros del Web. hola, soy nuevo en el foro y vengo por ayuda resulta que estoy en programación y me han dejado hacer un código que pide lo ...
  #1 (permalink)  
Antiguo 10/03/2016, 00:06
 
Fecha de Ingreso: marzo-2016
Mensajes: 1
Antigüedad: 8 años, 8 meses
Puntos: 0
Correguir el rumbo de mi programa

hola, soy nuevo en el foro y vengo por ayuda resulta que estoy en programación y me han dejado hacer un código que pide lo siguiente:

Utilizar dos archivos de texto, los cuales ambos serán utilizados para almacenar registros. En uno de ellos van a ingresar los datos del encabezado de la factura y en el otro el detalle de la factura. Utilice la estrategia de separación de registros y campos por medio de caracteres especiales.

La estructura del Encabezado de la Factura es: Número de factura, NIT, nombre
La estructura del Detalle de la Factura es: Número de factura, producto, monto unitario

Opciones del menu:
1. Agregar nuevas facturas. Debe permitir ingresar una factura completa, es decir, el encabezado y "n" líneas de detalle para cada factura.
2. Realizar busquedas por número de factura, para que el usuario ingrese el número y el sistema recorra todos los registros y al encontrarla debe mostrar en pantalla el encabezado y el detalle.


le compartiré lo que llevo

aquí he creado una librería
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include<cstdlib>
#include<cstring>

using namespace std;

#define FIN_CAMPO '~'
#define FIN_REGISTRO '|'

fstream archivo;
ofstream archivo2;

int noRegistroLeido=0;


struct Factura //Creamos una estructura para el archivo de la factura
{
string NoFactura;
int Nit;
string Nombre;
};

struct Detalle //Creamos una estructura para el detalle de la factura
{
string NoFactura;
char producto;
float MontoUnit;
};
//Este método nos permitira abrir el archivo del archivo archivo
//lectura (true=lectura, false=escritura)
int abrirArchivo(bool lectura){
string nombreArchivo;
string nombreArchivo2;
cout<<"Ingrese el nombre del archivo para encabezado: ";
cin>>nombreArchivo;
cout<<"Ingrese el nombre del archivo para detalle: ";
cin>>nombreArchivo2;
if(lectura)
archivo.open(nombreArchivo.c_str(),ios::in);
else
archivo.open(nombreArchivo.c_str(),ios::out|ios::a pp);

if(lectura)
archivo2.open(nombreArchivo2.c_str(),ios::in);
else
archivo2.open(nombreArchivo2.c_str(),ios::out|ios: :app);

return archivo2.is_open();
return archivo.is_open();
}

void cerrarArchivo()
{
archivo.close();
}

//Grabar el registro de a nueva Factura en el archivo
//utilizando la nomenclatura de separación por caracter
void escribirRegistro(Factura FacturaNuevo, Detalle DetalleNuevo)

{
archivo<<FacturaNuevo.NoFactura<<FIN_CAMPO<<Factur aNuevo.Nit<<FIN_CAMPO<<FacturaNuevo.Nombre<<FIN_RE GISTRO;
archivo2<<DetalleNuevo.NoFactura<<FIN_CAMPO<<Detal leNuevo.producto<<FIN_CAMPO<<DetalleNuevo.MontoUni t<<FIN_REGISTRO;
}

Factura leerRegistro()
{
Factura FacturaLeido;
string tempNit;
char caracter;
int noCampo=1;

while(archivo.get(caracter))
{
if(caracter==FIN_CAMPO)//fin del campo
noCampo++;
else if (caracter==FIN_REGISTRO)
{//fin del registro
noRegistroLeido++;
FacturaLeido.Nit=atoi( tempNit.c_str() );
return FacturaLeido;
}else

{//valores de los campos
switch(noCampo)
{
case 1:
FacturaLeido.NoFactura=FacturaLeido.NoFactura+cara cter;
break;
case 2:
tempNit=tempNit+caracter;
break;
case 3:
FacturaLeido.Nombre=caracter;
}
}
}
}

///// aquí el código///
#include <iostream>
#include <fstream>
#include "MgrTextFilel.h"

using namespace std;
int opcion;
//creamos el menu de opciones
void menu()
{
cout<<"------------------------------------"<<endl;
cout<<"1. Nueva Factura"<<endl;
cout<<"2. Registro de facturas"<<endl;
cout<<"------------------------------------"<<endl;
cout<<"Seleccione una opción: ";
cin>>opcion;
}

void escrituraRegistros()
{
Factura FacturaNuevo;
Detalle DetalleNuevo;
do
{
cout<<"Ingrese el numero de factura (o escriba fin para terminar el ingreso):";
cin>>FacturaNuevo.NoFactura;
if(FacturaNuevo.NoFactura=="fin")
return;
cout<<"Ingrese numero de nit de cliente:\n";
cin>>FacturaNuevo.Nit;
cout<<"Ingrese el nombre del cliente:\n";
cin>>FacturaNuevo.Nombre;
cout<<"Ingrese producto:\n";
cin>>DetalleNuevo.producto;
cout<<"Ingrese precio unitario:\n";
cin>>DetalleNuevo.MontoUnit;
escribirRegistro(FacturaNuevo,DetalleNuevo);
}while(true);

}

void lecturaRegistros(){
Factura Factura;
Factura=leerRegistro();
cout<<"No. NoFactura Nit Nombre\n";
cout<<"___________________________________________ _____\n";
while(Factura.NoFactura.length()>0)
{
cout<<noRegistroLeido <<" "<<Factura.NoFactura<<" "<<Factura.Nit<<" "<<Factura.Nombre<<endl;
Factura=leerRegistro();
}
}

int main()
{
menu();
if(abrirArchivo(opcion==1?false:true))
{
if(opcion==1)
escrituraRegistros();
else if(opcion==2)
lecturaRegistros();
cerrarArchivo();
}else
cout<<"Ocurrió un error al abrir el archivo";
}



/// LO PUEDE REVISAR Y ME COMPILA SIN ERRORES PERO NO LOGRO HACER TODO LO QUE ME PIDEN

estoy trabajando en dev c++

gracias por si me pueden ayudar

Etiquetas: char, int, numero, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:42.