Hola chicos! Quisiera que me ayudaran con los flujos de entrada y salida de archivos.
Pasa que el programa me guarda las cosas, pero al momento de volver a iniciar el programa las borra, la verdad no sé que estoy haciendo mal, llevo menos de 2 meses aprendiendo este lenguaje..
Aqui está la base del programa
Código C++:
Ver original// Seccion Declaracion de Variables GLOBALES
struct T_clientes{
int clave;
char direccion[30];
char e_mail[30];
int telefono;
char nombre[30];
};
T_clientes datos_clientes[500];
int contador_clientes = 0;
struct T_catalogo {
char director[30];
char nombre_peli[100];
char genero_peli[30];
};
T_catalogo datos_peliculas[500];
int contador_peliculas;
struct T_prestamos {
char fecha_prestamo[30];
int cliente_prestamo;
char titulo_prestamo[100];
char devolucion[30];
};
T_prestamos prestamo_pelicula[500];
int contador_prestamo;
struct T_ventas {
char fecha_venta[30];
char cliente_venta[30];
char alta_venta[30];
};
T_ventas venta_pelicula[500];
int contador_venta;
// sECCION DE LIBRERIAS
#include <iostream>
#include <fstream>
using namespace std;
#include "L_clientes.h"
#include "L_catalogo.h"
#include "L_prestamos.h"
#include "L_ventas.h"
// seccion de inicio
void main(){
// Seccion Declaracion de Variables
int opcion = 0;
int i = 0;
// abrir un archivo Clientecitos.txt para entrada
ifstream archent("Clientecitos.txt");
if (!archent) cout << "NO SE PUEDE ABRIR EL ARCHIVO PARA ENTRADA. ";
else {
contador_clientes = 0;
while (archent >> datos_clientes[contador_clientes].clave){
archent.getline(datos_clientes[contador_clientes].nombre, 30);
archent.getline(datos_clientes[contador_clientes].direccion, 30);
archent.getline(datos_clientes[contador_clientes].e_mail, 30);
cout << datos_clientes[contador_clientes].telefono;
contador_clientes++;
}
};
archent.close();
// Adquisicion de Datos
do{
cout << " BIENVENIDO!" << endl << endl;
cout << " *** MENU PRINCIPAL ***" << endl;
cout << " 1.- Clientes " << endl;
cout << " 2.- Catalogo de Peliculas " << endl;
cout << " 3.- Prestamo de Peliculas " << endl;
cout << " 4.- Ventas " << endl;
cout << " 5.- Salir del Sistema " << endl;
cin >> opcion;
switch (opcion){
case 1: { clientes(); break; }
case 2: { peliculas();
break; }
case 3: {prestamos();
break; }
case 4: { ventas();
break; }
}; // Fin del switch
} while (opcion != 5);
ofstream archsal;
archsal.open("Clientecitos.txt");
if (!archsal)
cout << "\n No se puede abrir el archivo para salida";
else {
for (int i = 0; i < contador_clientes; i++){
archsal << datos_clientes[i].clave << endl;
archsal << datos_clientes[i].nombre << endl;
archsal << datos_clientes[i].direccion << endl;
archsal << datos_clientes[i].e_mail << endl;
archsal << datos_clientes[i].telefono << endl;
}
archsal.close();
};
}; // fin del programa
y aqui está el modulo de clientes, de donde quiero sacar la info
Código C++:
Ver originalvoid registro_clientes(){
cout << "****REGISTRO DE CLIENTES****" << endl << endl;
cout << "Clave del cliente: ";
cin >> datos_clientes[contador_clientes].clave;
cout << "Nombre del cliente: ";
cin.getline(datos_clientes[contador_clientes].nombre, 30);
cout << "Direccion del cliente: ";
cin.getline(datos_clientes[contador_clientes].direccion, 30);
cout << "Correo electronico del cliente: ";
cin.getline(datos_clientes[contador_clientes].e_mail, 30);
cout << "Telefono del cliente: ";
cin >> datos_clientes[contador_clientes].telefono;
contador_clientes++;
}; // Fin de Registro Clientes
void busca_clientes(){
int busca;
cout << " *** BUSQUEDA DE CLIENTES ***";
cout << "INGRESE LA CLAVE DEL CLIENTE: " << endl;
cin >> busca;
for (int i = 0; i < contador_clientes; i++){
if (busca == datos_clientes[i].clave){
cout << "Clave del cliente: " << datos_clientes[i].clave << endl;
cout << "Nombre del cliente: " << datos_clientes[i].nombre << endl;
cout << "Direccion del cliente: " << datos_clientes[i].direccion << endl;
cout << "Correo electronico del cliente: " << datos_clientes[i].e_mail << endl;
cout << "Telefono del cliente: " << datos_clientes[i].telefono << endl;
}; // Cierre del IF
}; // cierre del for
}; // Fin de Busqueda de clientes
void modif_clientes(){
int opcion, busca;
cout << " Dame la cuenta a buscar: ";
cin >> busca;
for (int i = 0; i < contador_clientes; i++){
if (busca == datos_clientes[i].clave){
cout << " *** MENU DE MODIFICACIÓN DE CLIENTES ***" << endl << endl;
cout << " Que deseas modificar? " << endl;
cout << " 1.- Direccion " << endl;
cout << " 2.- Telefono " << endl;
cout << " 3.- Correo Electronico " << endl;
cout << " 4.- salir" << endl;
cin >> opcion;
switch (opcion){
case 1: {cout
<< " Direccion Anterior: " << datos_clientes
[i
].
direccion << " Nueva Direccion: "; fflush stdin
; cin.getline(datos_clientes[i].direccion, 30); break; }
case 2: {cout << " Telefono Anterior " << datos_clientes[i].telefono << " Nuevo Telefono: "; cin >> datos_clientes[i].telefono; break; }
case 3: {cout << " Correo Electronico Anterior: " << datos_clientes[i].e_mail << " Nuevo Correo Electronico: ";
fflush stdin
; cin.
getline(datos_clientes
[i
].
e_mail, 30); break; }
};
}//fin del if
}//fin del for
}; // Fin de modificacion
void baja_clientes(){
int i = 0, j = 0, busca_baja;
cout << endl << "***MENU DE BAJA DE CLIENTES ***" << endl;
cout << "Ingresa la clave del cliente: " << endl;
cin >> busca_baja;
for (i = 0; i < contador_clientes; i++){
if (busca_baja == datos_clientes[i].clave){
for (j = i; j < contador_clientes; j++){
datos_clientes[j] = datos_clientes[j++];
};
contador_clientes--;
cout << endl << "EL REGISTRO SE HA ELIMINADO";
};//FIN DE IF
}; //FIN DE FOR
}; // FIN BAJA DE CLIENTES
void clientes(){
int opcion;
cout << " estoy en el modulo de clientes" << endl;
do{
cout << " ****** MENU CLIENTES *****" << endl;
cout << " 1.- Registro de Clientes " << endl;
cout << " 2.- Modificacion de Clientes " << endl;
cout << " 3.- Baja de Clientes " << endl;
cout << " 4.- Busqueda de Clientes " << endl;
cout << " 5.- Salir del Menu de Clientes " << endl;
cin >> opcion;
switch (opcion){
case 1: { registro_clientes(); break; }
case 2: { modif_clientes(); break; }
case 3: { baja_clientes();
break; }
case 4: {busca_clientes();
break; }
}; // Fin del switch
} while (opcion != 5);
}; // Modulo de Clientes
mil Gracias!!