Red social c++ Simple (Spanish)




//---------------------------------INICIO--------------- >

#include <iostream>
#include <string>
#include <windows.h>
#include <vector> // son similares a los arreglos, pero tienen la ventaja de poder cambiar su tamaño durante la ejecución del programa.
using namespace std;

//---------------------------------------------------------  Macros ------------------------------------------------------------------------------>

#define Blanco "\033[0m"   // Blanco
#define Rojo "\033[1;31m"  // Rojo Para errores y boton volver
#define Verde "\033[1;32m" // Verde Para decir que es correcto

//---------------------------------------------------------  Interfaz ---------------------------------------------------------------------------->

#define ventana system("mode con: cols=95 lines=40"); // Le indicamos el tamaño de la ventana (95 clumnas x 40 lineas)
#define Limpiar_Pantalla system("cls");               // Borra lo escrito en pantalla (Limpia la pantalla)
#define Pausa system("pause");                        // Pausa y continua con enter

// Aqui se estamos creando unas macros para poner textos solo llamdolas ademas usamos "u8" para   poder colocar simbolos en consola, u8 significa

#define Titulo                                                                             \
cout << Blanco << u8"═══════════════════════════════════════════════════════" << endl; \
cout << u8"                 Red social en c++             " << endl;                   \
cout << Blanco << u8"═══════════════════════════════════════════════════════" << endl;

// Aqui creamos otra macro pero para el texto de error

#define error                                                                              \
cout << Blanco << u8"═══════════════════════════════════════════════════════" << endl; \
cout << "\t\t\t\t Opción inválida. Intente nuevamente." << endl;                       \
cout << Blanco << u8"═══════════════════════════════════════════════════════" << endl;

//---------------------------------------------------------  Estructuras ------------------------------------------------------------------------>

/* Estructura: es un tipo de dato que permite agrupar varios valores relacionados en una sola   entidad.
                    representan objetos más complejos en un programa.*/

struct User // La esctructura de nuestro vector se llama "User"
{
string username; // Aqui guardamos Usuarios
string password; // Aqui guardamos Contraseñas
};

//---------------------------------------------------------  Vectores   -------------------------------------------------------------------------->

vector<User> users; // Le creamos un vector "users" a unuestra estrectura "User"

//------------------------------------------------------ Llamando Funciones -------------------------------------------------------------------------->

// Aqui llamamos las funciones para dar  orden y leerlas mejor

int RegistrarUsuario(); // Registro de usuarios

int BuscarUsuario(string username); // Busqueda de usuarios

void ListaNombresUsuarios(); // Lista de amigos

int IniciarSesion(); // Inicia sesion

int MiPerfil(); // Mi Perfil

int Publicar(); // Publicar

 void Mensajes(); // Mensajes

 int Notificaciones(); // Notificaciones

void Tema(); // Personalizacion

//****************************************************************  MAIN         ***************************************************************************>

int main() {

SetConsoleOutputCP(CP_UTF8); // Le indicamos que usaremos simbolos en estec aso  ═ ║
int option;                  // Variables para opciones
bool volver = false;         // Variable para regresarse al menu y regresamos el false para evitar errores
Limpiar_Pantalla;

cout << u8"Bienvenido a la red social" << endl;

Pausa;

do
{
    // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

    Limpiar_Pantalla;
    ventana;
    Titulo;

    cout << Verde << u8"Menu>" << endl; // Comenzamos con el titulo
    cout << Blanco << u8"║ 1  Registrarse    ║" << endl;
    cout << Blanco << u8"║ 2  iniciar sesion ║" << endl;
    cout << Blanco << u8"║ 0  salir          ║" << endl;

    cin >> option;

    switch (option)
    {
    case 1:
    {
        Limpiar_Pantalla;
        RegistrarUsuario();
        break;
    }
    case 2:
    {
        Limpiar_Pantalla;
        IniciarSesion();
        break;
    }

    case 0:
    {
        Limpiar_Pantalla;
        cout << "Saliendo del programa..." << endl;
        return 0;
        break;
    }
    default:
    {
        Limpiar_Pantalla;
        error;
        Pausa;
        break;
    }
    }

} while (volver = true); // Regresamos al inicio si volver es verdadero

return 0;
}

//********************************************************  REGISTRO ******************************************************************************>

 int RegistrarUsuario()
{

int option;          // Variables para opciones
bool volver = false; // Variable para regresarse al menu y regresamos el false para evitar errores

do
{
    // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

    Limpiar_Pantalla;
    ventana;
    Titulo;

    cout << Verde << u8" Menu > Registrase" << Blanco << endl; // Comenzamos con el titulo

    string username, password; // Declaramos donde guardar nuestros Usuarios y Contraseñas
    cout << "Ingrese un nombre de usuario " << endl;
    cin >> username;
    cout << "Ingrese una contraseña:";
    cin >> password;
    users.push_back({username, password});
    cout << Verde << "Registro exitoso." << endl;
    cout << Blanco << "║ Ingrese una opcion:              ║" << endl;
    cout << Rojo << "0) Volver al menu"<<endl;
    cout << Blanco << "1) Registrar otra cuenta" << endl;
    cin >> option;
    switch (option)
    {
    case 0:
        return 0;
        break;
    case 1:
        volver = true;
        break;

    default:
        error;
        break;
    }
} while (volver = true); // Regresamos al inicio si volver es verdadero

return 0;
     }

 //********************************************************  Inicio Sesion ***************************************************************************>

int IniciarSesion()
{
bool volver = false;  // Variable para regresarse al menu y regresamos el false para evitar errores
int option, OpcError; // Variable de opciones y variables de cuando tenemos error le mensiona si quiere reintentar o salir
do
{
    // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

    Limpiar_Pantalla;
    ventana;
    Titulo;

    cout << Verde << u8" Menu > Iniciar Sesion" << endl; // Comenzamos con el titulo

            string username, password; // Declaramos donde guardar nuestros Usuarios y Contraseñas

            cout << "Ingrese un nombre de usuario ";
                    cin >> username;
                            cout << "Ingrese una contraseña:";
                    cin >> password;
                    /* Declaramos una variables llamada "user_index" para saber la posicion de la lista de usuarios que tiene ademas los buscamos
    y vemos si coenciden su usuario y contraseña */

    int user_index = BuscarUsuario(username);

    if (user_index == -1 || users[user_index].password != password)

    {
        // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

        Limpiar_Pantalla;
        ventana;
        Titulo;
        error;
        cout << "Para reintentar " << Rojo << "presione [1] " << Blanco << "Para salir " << Rojo << "presione [0]" << Blanco;
         cin >> OpcError;

        if (OpcError == 1)
        {
            volver = true;
        }
        else
        {
            return 0;
        }
    }
    else
    {

        // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

        Limpiar_Pantalla;
        ventana;
        Titulo;
    cout << Verde << u8"Inicio>" << endl; // menu
    cout << "║ Ingrese una opcion:              ║" << endl;
    cout << Rojo << "[0] Cerrar sesion" << endl;
        cout << Blanco << "[1] Mi perfil" << endl;
        cout << Verde << "[2] Mensajes" << endl;
        cout << Blanco << "[3] Publicar" << endl;
        cout << Verde << "[4] Notificaciones" << endl;
        cout << Blanco << "[5] Lista de amigos" << endl;
        cout << Verde << "[6] Tema" << endl;
        cin >> option;
        switch (option)
        {

        case 0:
            Limpiar_Pantalla;
            cout << "Saliste de la cuenta" << endl;
            Pausa;
            return 0;
            break;

        case 1:
            MiPerfil();

            break;
        case 2:
            Mensajes();
            Pausa;
            break;
        case 3:
            Publicar();

            break;
        case 4:
            Notificaciones();
            Pausa;
            break;
        case 5:
            ListaNombresUsuarios();
            Pausa;
            break;
        case 6:
            Tema();
            Pausa;
            break;
        default:
            error;
            Pausa;
            break;
        }
    }
} while (volver = true);
return 0;
}

//********************************************************  Buscar ********************************************************************************>

int BuscarUsuario(string username)
{
for (int i = 0; i < users.size(); i++) // size(): es un método que devuelve la cantidad de elementos que hay en un vector.
{                                      // si queremos saber cuántos elementos tiene el vector mi_vector, podemos usar el método size()
    if (users[i].username == username)
    {
        return i;
    }
}
return -1;
}

//********************************************************  Lista Usuarios *************************************************************************>

void ListaNombresUsuarios()
{
// INICIO

// INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

Limpiar_Pantalla;
ventana;
Titulo;

cout << Verde << u8" Menu > Lista amigos" << endl; // menu
cout << Blanco << u8"║       AMIGOS     ║"<< endl;
if (users.empty())
{
    cout << Rojo << "No hay usuarios registrados en el sistema." << Blanco << endl;
    return;
}

for (int i = 0; i < users.size(); i++)
{

    cout << endl
         << users[i].username << endl;
}
}

//******************************************************** Mensajes ***************************************************>

void Mensajes()
{
// INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

Limpiar_Pantalla;
ventana;
Titulo;

cout << "Bienvenido a la bandeja de mensajes" << endl;
cout << "Mensaje 1: Hola, ¿cómo estás?" << endl;
cout << "Mensaje 2: No te olvides de comprar leche en el supermercado" << endl;
cout << "Mensaje 3: Recordatorio: Tu cita con el dentista es mañana" << endl;
}

//********************************************************  TEMA  ***************************************************>

void Tema()
{

// INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

Limpiar_Pantalla;
ventana;
Titulo;

int fondo;

Limpiar_Pantalla;

cout << "Que color de fondo quieres elegir?" << endl;
cout<< "1. Negro" << endl;
cout << "2. Azul" << endl;
cout << "3. Verde" << endl;
cout << "4. Rojo" << endl;
cout << "5. Morado" << endl;
cout << "6. Amarillo" << endl;
cout << "7. Blanco hueso" << endl;
cout << "8. Gris" << endl;
cout << "9.Celeste" << endl;
cout << "10. Color Crema" << endl;

cin >> fondo;

switch (fondo)
{
case 1:
    system("Color 00");
    break;
case 2:
    system("Color 10");
    break;
case 3:
    system("Color 20");
    break;
case 4:
    system("Color 40");
    break;
case 5:
    system("Color 50");
    break;
case 6:
    system("Color 60");
    break;
case 7:
    system("Color 70");
    break;
case 8:
    system("Color 80");
    break;
case 9:
    system("Color 90");
    break;
case 10:
    system("Color E0");
    break;
default:
    error;
}
}

//******************************************************** Mi perfil ***************************************************>

int MiPerfil()

{

bool repetir = false;
int opc;

do
{
    // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

    Limpiar_Pantalla;
    ventana;
    Titulo;

     struct PerfilSocial
    {

        int edad;
        string nombre, ciudad, cumpleanos, apodo, mostrarinforamacion;
    };

    PerfilSocial perfil;

  cout << "Atencion !! trata de no equivocarte por que no podras \n cambiar tu informacion hasta que no te registres por completo... " << endl;

  cout << "Ingrese los detalles del Perfil Social:" << endl;

   cout << "nombre:";
    cin >> perfil.nombre;
    cout << "Edad: ";
    cin >> perfil.edad;
    cout << "apodo:";
    cin >> perfil.apodo;
    cout << "Ciudada actual: ";
    cin >> perfil.ciudad;
    cout << "fecha de cumpleaños: ";
    cin >> perfil.cumpleanos;
  
    Limpiar_Pantalla;

    cout << "Tu informacion" << endl;
    cout << "Perfil Social:" << endl;
    cout << "nombre: " << perfil.nombre << endl;
    cout << "Edad: " << perfil.edad << endl;
    cout << "apodo el cual te gustaria que te digan: " << perfil.apodo << endl;
    cout << "Ciudad actual: " << perfil.ciudad << endl;
    cout << "cumpleanos: " << perfil.cumpleanos << endl;
    cout << "fin de la informacion requerida..................." << std::endl;
    cout << "quieres repetir tu informacion? Si = 1, No = 0:";

    cin >> opc;

    switch (opc)
    {
    case 1:
        repetir = true;
        break;

    default:
        break;
    }

} while (repetir == true);

return 0;
}

//******************************************************** Publicar ***************************************************>

int Publicar()
{
int option;
bool volver = false;
string post;
do
{
    
    // INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

    Limpiar_Pantalla;
    ventana;
    Titulo;
            cout << Verde << u8" Inicio > Publicar" << endl; // menu
            cout << Blanco << "║ Ingrese una opcion:              ║" << endl;
            cout << Rojo << "[0] Cerrar sesion" << endl;
    cout << Blanco << "[1] Publicar" << endl;
    cout << Verde << "[2] Ver post" << Blanco << endl;
    cin >> option;

    switch (option)
    {

    case 0:
        return 0;
        break;

    case 1:
        cout << "Escribe tu post" << endl;
        cin >> post;
        cout << Verde << "Publicado" << Blanco << endl;
        volver = true;
        break;

    case 2:
        cout << "Posts" << endl;
        cout << "---" << post << "---" << endl;
        Pausa;
        return 0;
        break;
    }
} while (volver = true);

return 0;
}

//******************************************************** Notificaciones ***************************************************>

int Notificaciones()
 {
int option;

// INICIO empezaos limpiando pantalla, indicando el tamaño de ventana y colocando titulo

Limpiar_Pantalla;
ventana;
Titulo;

cout << "Ejecutando programa..." << endl;


cout << Verde << "Proceso completado." << endl;
cout << Blanco << "¡Tienes una nueva notificación!" << endl;
return 0;
}

//************************* fINAL DEL CODIGO ************************************************************************>