Dev - C++ - Ayuda, menú de archivos

 
Vista:
sin imagen de perfil

Ayuda, menú de archivos

Publicado por marianela (8 intervenciones) el 12/08/2022 23:28:07
hola a todos de nuevo, necesito ayuda con mi ejercicio para ver si pueden solucionar el error, lo he intentado y no lo he logrado. tengo que entregarlo este fin de semana y aun no le logrado realizarlo ya que aun me ando desarrollando en esto de la programación.


programa en c++ que contenga un menú de opciones para permitir hacer un crud (insertar, mostrar, modificar y eliminar) registros del archivo.

Me falta la parte de modificar el texto (nombre, apellido, edad) ya que no he podido proseguir por el error, si me pueden ayudar en esa parte también estaría muy agradecida


Esto es lo que he echo hasta ahora


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <fstream>
 
using namespace std;
 
string Nombre, Apellido, Edad;
fstream Esc;
void agregar(fstream &esc);
void leer();
void Modificar();
 
int main(){
 
int opcion;
 
    bool repetir = true;
 
 ofstream archivo("Datos.txt");
 
    do {
        system("cls");
 
        // Menu
        cout << "\n\nMenu de Opciones" << endl;
        cout << "1. Insertar texto" << endl;
        cout << "2. Mostrar texto" << endl;
        cout << "3. Modificar texto" << endl;
        cout << "4. Eliminar texto" << endl;
        cout << "0. SALIR" << endl;
 
        cout << "\nIngrese una opcion: ";
        cin >> opcion;
 
        switch (opcion) {
            case 1:
            //Escribir
            cout << "Agregue los datos\n";
 
                 agregar(Esc);
                system("pause>nul");
                break;
 
            case 2:
                // leer
             cout << "Datos obtenidos"<<endl;
			 leer();
 
                system("pause>nul");
                break;
 
            case 3:
                //modificar
                 cout << "Modificar texto"<<endl;
                 Modificar();
                system("pause>nul");
                break;
 
            case 4:
                // borrar
			cout<<"Archivo borrado"<<endl;
             remove("Datos.txt");
 
                system("pause>nul");
                break;
 
            case 0:
            	repetir = false;
            	break;
        }
    } while (repetir);
 
    return 0;
}
 
void agregar(fstream &esc)
{
//agregar los datos al archivo
    esc.open("Datos.txt",ios::out);
 
    cout << "Escriba su nombre: ";
    cin>> Nombre;
    cout << "Escriba su apellido: ";
    cin >> Apellido;
    cout << "Escriba su edad: ";
    cin >> Edad;
    esc <<"\t"<< Nombre <<"\t"<< Apellido <<"\t"<< Edad <<endl;
    esc.close();
}
 
void leer()
{
 
while(getline(archivo,Nombre,Apellido,Edad)){
cout <<"\t"<<Nombre<<"\t"<<Apellido<<"\t"<<Edad<<endl;
}}
 
void Modificar()
{
//me falta esta parte para modificar los nombres, apellidos y edades
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda, menú de archivos

Publicado por antonio (85 intervenciones) el 13/08/2022 12:51:22
Hola buenas tardes, lo que he hecho en modificar es pedir el numero de registro que modificar es decir línea que es un registro
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
void leer();
void insertar();
void modificar( int modificado);
string Nombre, Apellido, Edad;

int main() {
int opcion = 3;
do{
// Menu
cout << "\n\nMenu de Opciones\n";
cout << "1. Insertar texto\n";
cout << "2. Mostrar texto\n" ;
cout << "3. Modificar texto\n";
cout << "4. Eliminar texto\n";
cout << "0. SALIR\n";
cout << "\nIngrese una opcion: \n";
cin>>opcion;
switch(opcion){
case 0:
cout << "\nAdios";
break;
case 1:
insertar();
break;
case 2:
leer();
break;
case 3:
cout << "Que regitro quiere modificar";
int modificado;
cin>> modificado;
modificar(modificado);
break;
case 4:
cout<<"Archivo borrado"<<endl;
remove("Datos.txt");
break;
}
}while(opcion!=0);

}
void leer(){

ifstream archivo("Datos.txt");
string linea;
cout << "Nombre\tApellido\tEdad\n";
while (getline(archivo, linea)) {
cout << linea << "\n";
}
archivo.close();

}
void insertar( ){
FILE* archivo = fopen("Datos.txt", "a+");
cout << "Escriba su nombre: \n";
cin>>Nombre;

Nombre=Nombre+"\t";
cout << "Escriba su apellido: \n";
cin>>Apellido;
Apellido=Apellido+"\t";
cout << "Escriba la edad: \n";
cin>>Edad;
string inserta = Nombre + Apellido +Edad;
int n = inserta.length();
char char_array[n+1];
strcpy(char_array, inserta.c_str());
fprintf(archivo, "%s", char_array);

fclose(archivo);
}
void modificar(int modificado){
ifstream in("Datos.txt", ios::in);
ofstream out("temp.txt", ios::out);
int cont =0;


if(in.is_open() && out.is_open()){
while (!in.eof()) {
string linea;
getline(in, linea);
if(modificado == cont){
cout << "Escriba su nombre: \n";
cin>>Nombre;
Nombre=Nombre+"\t";
cout << "Escriba su apellido: \n";
cin>>Apellido;
Apellido=Apellido+"\t";
cout << "Escriba la edad: \n";
cin>>Edad;

string inserta = Nombre + Apellido +Edad;
out << inserta <<endl;
}else{
out << linea << endl;
}
cont++;

}

in.close();
out.close();


}else{
std::cout<<"Error"<<endl;
}

remove("Datos.txt");
rename( "temp.txt" , "Datos.txt" );
remove("temp.txt");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar