#include <iostream>
#include <fstream>
using namespace std;

class persona {
public:
    persona();
    ~persona();
    friend istream &operator >> (istream &entrada, persona &obj);
    friend ostream &operator << (ostream &entrada, persona &obj);
    void guardar_archivo();
    void leer_archivo();
    friend class agenda;

private:
    string nombre, email, tel;
};

persona::persona() {
    nombre = "sin asignar";
    email = "sin asignar";
    tel = "sin asignar";
}

persona::~persona() {}

istream &operator >> (istream &entrada, persona &obj) {
    cout << "Introduce nombre: "; entrada >> obj.nombre;
    cout << "Introduce email: "; entrada >> obj.email;
    cout << "Introduce telefono: "; entrada >> obj.tel;
    return entrada;
}

ostream &operator << (ostream &entrada, persona &obj) {
    entrada << "Nombre: " << obj.nombre << " e_mail: " << obj.email << " Telefono: " << obj.tel << endl;
    return entrada;
}

void persona::guardar_archivo() {
    ofstream archivo;
    archivo.open("Agenda.DOC", ios::app); // Cambiar 'apc' por 'app'
    cout << "Guardar datos" << endl;
    if (archivo.fail()) {
        cout << "Error de apertura" << endl;
    } else {
        archivo << "Nombre: " << nombre << endl;
        archivo << "e_mail: " << email << endl;
        archivo << "Telefono: " << tel << endl;
    }
    archivo.close();
}

void persona::leer_archivo() {
    ifstream archivo;
    string texto;
    archivo.open("Agenda.DOC");
    if (archivo.fail()) {
        cout << "Error de lectura..." << endl;
    } else {
        while (!archivo.eof()) {
            getline(archivo, texto);
            cout << texto << endl;
        }
    }
    archivo.close();
}

class agenda {
public:
    void actualizan_nombre(string nuevo_nombre, persona &p) {
        p.nombre = nuevo_nombre;
    }

    void actualizan_email(string nuevo_email, persona &p) {
        p.email = nuevo_email;
    }

    void actualiza_tel(string nuevo_tel, persona &p) {
        p.tel = nuevo_tel;
    }
};

void clases_amigos() {
    int opc;
    char reps;
    string nombre, mail, tel;

    persona p1;
    agenda a1;

    cout << "Introduce datos a la agenda: " << endl;
    cin >> p1;
    cout << "Persona agendada: " << endl;
    cout << p1;

    cout << "¿Son correctos los datos? (s/n): ";
    cin >> reps;
    cin.ignore();

    if (reps == 'N' || reps == 'n') {
        cout << "1. Actualiza nombre: " << endl;
        cout << "2. Actualiza email: " << endl;
        cout << "3. Actualiza telefono: " << endl;
        cout << "Elige una opcion: ";
        cin >> opc;

        cin.ignore();

        switch (opc) {
        case 1:
            cout << "Introduce nuevo nombre: ";
            getline(cin, nombre);
            a1.actualizan_nombre(nombre, p1);
            cout << "Nombre actualizado correctamente" << endl;
            break;
        case 2:
            cout << "Introduce nuevo e_mail: ";
            getline(cin, mail);
            a1.actualizan_email(mail, p1);
            cout << "Email actualizado correctamente" << endl;
            break;
        case 3:
            cout << "Introduce telefono: ";
            getline(cin, tel);
            a1.actualiza_tel(tel, p1);
            cout << "Telefono actualizado correctamente" << endl;
            break;
        default:
            cout << "Opcion no valida..." << endl;
            break;
        }

        cout << "Datos son correctos (s/n)?";
        cin >> reps;
    }

    cout << "Persona en la Agenda" << endl;
    p1.guardar_archivo();
    p1.leer_archivo();
}

int main() {
    clases_amigos();
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: