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 ************************************************************************>