Advertisement
Guest User

main_red_social.cpp

a guest
May 22nd, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <ctime>
  5. #include "twitter.hpp"
  6. #include "UsuarioTwitter.hpp"
  7.  
  8.  
  9. using namespace std;
  10. using namespace bblProgII;
  11.  
  12. // Escribe el menú de opciones, lee la opción por teclado y la devuelve
  13. char menu();
  14.  
  15. // Pulsar una tecla para continuar
  16. void Seguir();
  17.  
  18. // Escribir resultado de operación por pantalla
  19. void escribir_resultado(const Resultado res);
  20.  
  21.  
  22. int main(){
  23.     string id_usuario, nom_fic_usuarios;
  24.     unsigned numero;
  25.     Tweet tweet;
  26.     char opcion, seguir;
  27.     Resultado res_sig, res_twt, res;
  28.     bool hay_conectado;
  29.     time_t tSac; // instante actual
  30.     tm tms;
  31.  
  32.     system("clear");
  33.     bool respuesta;
  34.     Twitter red("usuarios_mi_twitter.usr", respuesta); // Cargarmos la red social
  35.  
  36.     if (respuesta){
  37.       cout << "LA RED SE HA CARGADO DE DISCO CORRECTAMENTE..." << endl;
  38.     }else{
  39.       cout << "NO SE HA PODIDO CARGAR LA RED DESDE DISCO..." << endl;
  40.     }
  41.     Seguir();
  42.    
  43.     do{
  44.         opcion = menu();
  45.         switch(opcion){
  46.             case 'a': if (red.usuario_actual().size()>0){
  47.                         cout << "Usuario conectado con id: @" << red.usuario_actual() << endl;
  48.                       }else{
  49.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  50.                       }
  51.                       Seguir();
  52.                       break;
  53.             case 'b': cout << "Introduzca el nombre del usuario a buscar: ";
  54.                       cin >> id_usuario; cin.ignore();
  55.                       red.me_sigue(id_usuario, respuesta, hay_conectado);
  56.                       if (hay_conectado){
  57.                         if (respuesta){
  58.                           cout << "El usuario @" << id_usuario << " me está siguiendo." << endl;
  59.                         }else{
  60.                           cout << "El usuario @" << id_usuario << " NO me está siguiendo." << endl;
  61.                         }
  62.                       }else{
  63.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  64.                       }
  65.                       Seguir();
  66.                       break;
  67.             case 'c': cout << "Introduzca el nombre del usuario a buscar: ";
  68.                       cin >> id_usuario; cin.ignore();
  69.                       red.estoy_siguiendo(id_usuario, respuesta, hay_conectado);
  70.                       if (hay_conectado){
  71.                         if (respuesta){
  72.                           cout << "Estoy siguiendo al usuario @" << id_usuario << endl;
  73.                         }else{
  74.                           cout << "NO estoy siguiendo al usuario @" << id_usuario << endl;
  75.                         }
  76.                       }else{
  77.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  78.                       }
  79.                       Seguir();
  80.                       break;
  81.             case 'd': if (red.usuario_actual().size() > 0){ // Hay usuario conectado
  82.                         cout << "ESTADÍSTICAS DEL USUARIO " << red.usuario_actual() << ":" << endl;
  83.                         red.num_seguidores(numero, hay_conectado);
  84.                         cout << "Seguidores: " << numero << endl;
  85.                         red.num_siguiendo(numero, hay_conectado);
  86.                         cout << "Siguiendo: " << numero << endl;
  87.                         red.num_tweets(numero, hay_conectado);
  88.                         cout << "Tweets: " << numero << endl;
  89.                       } else{
  90.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  91.                       }
  92.                       Seguir();
  93.                       break;
  94.             case 'e': if (red.usuario_actual().size() > 0){
  95.                         unsigned num_usuarios, num_seguidores, num_siguiendo;
  96.                         red.num_seguidores(num_seguidores, hay_conectado);
  97.                         red.num_siguiendo(num_siguiendo, hay_conectado);
  98.                         cout << "Tiene actualmente " << num_seguidores << " seguidores "
  99.                              << " y está siguiendo a " << num_siguiendo << " usuarios " << endl;
  100.  
  101.                         cout << "¿Número de usuarios a imprimir de ambas listas (0 -> todos): ";
  102.                         cin >> num_usuarios;
  103.                         cout << "Su lista de seguidores: " << endl;
  104.                         red.imprimir_seguidores(num_usuarios, hay_conectado); cout << endl;
  105.                         cout << "Su lista de usuarios a los que sigue: " << endl;
  106.                         red.imprimir_siguiendo(num_usuarios, hay_conectado); cout << endl;
  107.                       }else{
  108.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  109.                       }
  110.                       Seguir();
  111.                       break;
  112.             case 'f': if (red.usuario_actual().size() > 0){
  113.                         unsigned num_tweets;
  114.                         red.num_tweets(num_tweets, hay_conectado);
  115.                         cout << "Tiene actualmente " << num_tweets << " tweets..." << endl;
  116.                         cout << "¿Número de tweets a imprimir (0 -> todos): ";
  117.                         cin >> num_tweets;
  118.                         cout << "Estos son sus últimos tweets:" << endl;
  119.                         red.imprimir_tweets(num_tweets, hay_conectado);
  120.                       }else{
  121.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  122.                       }
  123.                       Seguir();
  124.                       break;
  125.             // case 'g': if (red.usuario_actual().size() > 0){
  126.             //             unsigned num_menciones;
  127.             //             red.num_menciones(num_menciones, hay_conectado);
  128.             //             cout << "Tiene actualmente " << num_menciones << " de otros usuarios..." << endl;
  129.             //             cout << "¿Número de menciones a mostrar (0 -> todas): ";
  130.             //             cin >> num_menciones;
  131.             //             cout << "Éstas son las menciones: " << endl;
  132.             //             red.imprimir_menciones(num_menciones, hay_conectado);
  133.             //           }else{
  134.             //             cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  135.             //           }
  136.             //           Seguir();
  137.             //           break;
  138.             // case 'h': if (red.usuario_actual().size() > 0){
  139.             //             red.obtener_menciones(hay_conectado);
  140.             //             unsigned num_menciones;
  141.             //             red.num_int(num_menciones, hay_conectado);
  142.             //             cout << "Tiene actualmente " << num_menciones << " de otros usuarios..." << endl;
  143.             //             cout << "¿Número de menciones a mostrar (0 -> todas): ";
  144.             //             cin >> num_menciones;
  145.             //             cout << "Éstas son las menciones: " << endl;
  146.             //             red.imprimir_menciones(num_menciones, hay_conectado);
  147.             //           }else{
  148.             //             cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  149.             //           }
  150.             //           Seguir();
  151.             //           break;
  152.             case 'i': if (red.usuario_actual().size() > 0){  
  153.                         cout << "Introduzca el nuevo id del usuario: ";
  154.                         cin >> id_usuario; cin.ignore();
  155.                         red.establecer_id(id_usuario, hay_conectado);
  156.                         cout << "Nuevo id del usuario: " << red.usuario_actual() << endl;
  157.                       }else{
  158.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  159.                       }
  160.                       Seguir();
  161.                       break;
  162.             case 'j': if (red.usuario_actual().size() > 0){
  163.                         cout << "Introduzca un tweet (máximo 140 caracteres): ";
  164.                         getline(cin, tweet.tweet);
  165.                         tSac = time(NULL); // instante actual
  166.                         tms = *localtime(&tSac);
  167.                         tweet.fecha_hora.dia = unsigned(tms.tm_mday);
  168.                         tweet.fecha_hora.mes = unsigned(tms.tm_mon+1);
  169.                         tweet.fecha_hora.anyo = unsigned(tms.tm_year+1900);
  170.                         tweet.fecha_hora.hora = unsigned(tms.tm_hour);
  171.                         tweet.fecha_hora.minuto = unsigned(tms.tm_min);
  172.                         tweet.fecha_hora.segundo = unsigned(tms.tm_sec);
  173.                         red.nuevo_tweet(tweet, res_twt, hay_conectado);
  174.                         escribir_resultado(res_twt);
  175.                       }else{
  176.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  177.                       }
  178.                       Seguir();
  179.                       break;
  180.             case 'k': if (red.usuario_actual().size() > 0){
  181.                         cout << "Introduzca el nombre del usuario a seguir: ";
  182.                         cin >> id_usuario;  cin.ignore();
  183.                         red.nuevo_siguiendo(id_usuario, res_sig, hay_conectado);
  184.                         escribir_resultado(res_sig);
  185.                       }else{
  186.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  187.                       }
  188.                       Seguir();
  189.                       break;
  190.             case 'l': if (red.usuario_actual().size() > 0){
  191.                         cout << "Introduzca el nombre del usuario a eliminar de la lista de usuarios a los que sigo: ";
  192.                         cin >> id_usuario;  cin.ignore();
  193.                         red.eliminar_siguiendo(id_usuario, res_sig, hay_conectado);
  194.                         escribir_resultado(res_sig);
  195.                       }else{
  196.                         cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
  197.                       }
  198.                       Seguir();
  199.                       break;
  200.             case 'm': cout << "Introduzca el nombre del usuario a conectar: ";
  201.                       cin >> id_usuario;  cin.ignore();
  202.                       red.cambiar_usuario_actual(id_usuario, res);
  203.                       escribir_resultado(res);
  204.                       Seguir();
  205.                       break;
  206.             case 'n': cout << "Introduzca el nombre del usuario a insertar: ";
  207.                       cin >> id_usuario;  cin.ignore();
  208.                       red.insertar_usuario(id_usuario, res);
  209.                       escribir_resultado(res);
  210.                       Seguir();
  211.                       break;
  212.             case 'o': cout << "Introduzca el nombre del usuario a eliminar de la red: ";
  213.                       cin >> id_usuario;  cin.ignore();
  214.                       red.eliminar_usuario(id_usuario, res);
  215.                       escribir_resultado(res);
  216.                       Seguir();
  217.                       break;
  218.             case 'p': cout << "La red tiene actualmente " << red.num_usuarios() << " usuarios." << endl
  219.                            << "Esta es la lista de usuarios:" << endl;
  220.                       red.imprimir_usuarios();
  221.                       Seguir();
  222.                       break;
  223.             case 'x': do{
  224.                         cout << "¿Desea guardar todos los datos de la red (s/n)?: ";
  225.                         cin.get(seguir); cin.ignore();
  226.                       }while (tolower(seguir) != 's' && tolower(seguir) != 'n');
  227.                       if (seguir == 's'){
  228.                         cout << "Introduzca el nombre del fichero de usuarios: ";
  229.                         cin >> nom_fic_usuarios; cin.ignore();
  230.                         cout << "Guardando la red en fichero..." << endl;
  231.                         red.guardar_todo(nom_fic_usuarios);
  232.                         cout << "¡Hasta la próxima!" << endl;
  233.                       }
  234.         }
  235.     }while(opcion != 'x');
  236. }
  237.  
  238. char menu(){
  239.     char opcion;
  240.  
  241.     system("clear"); // Limpiamos la pantalla
  242.  
  243.     do{
  244.         cout << "MENÚ DE OPCIONES (elija una opción y pulse <enter>):" << endl << endl;
  245.         cout << "a -> Obtener id del usuario actualmente conectado" << endl;
  246.         cout << "b -> Consultar si un usuario me sigue" << endl;
  247.         cout << "c -> Consultar si estoy siguiendo a un usuario" << endl;
  248.         cout << "d -> Imprimir mis estadísticas (seguidores, siguiendo, etc.)" << endl;
  249.         cout << "e -> Imprimir mi lista de seguidores y usuarios a los que sigo" << endl;
  250.         cout << "f -> Imprimir mi lista de tweets" << endl;
  251.         // cout << "g -> Imprimir mi lista de menciones por otros usuarios" << endl;
  252.         // cout << "h -> Actualizar mi lista de menciones que me han hecho otros usuarios de la red" << endl;
  253.         cout << "i -> Modificar el id de mi usuario" << endl;
  254.         cout << "j -> Insertar un nuevo tweet" << endl;
  255.         cout << "k -> Insertar un nuevo usuario en mi lista de usuarios a los que sigo" << endl;
  256.         cout << "l -> Eliminar un usuario de mi lista de usuarios a los que sigo" << endl;
  257.         cout << "m -> Cambiar el usuario actualmente conectado" << endl;
  258.         cout << "n -> Insertar un nuevo usuario en red" << endl;
  259.         cout << "o -> Eliminar un usuario de la red" << endl;
  260.         cout << "p -> Imprimir la lista de usuarios de la red social" << endl;
  261.         cout << "x -> SALIR DEL PROGRAMA" << endl;
  262.  
  263.         cin.get(opcion); cin.ignore(); opcion = char(tolower(int(opcion)));
  264.     }while((opcion < 'a' || opcion > 'p') && (opcion != 'x'));
  265.  
  266.     return opcion;
  267. }
  268.  
  269. void Seguir(){
  270.     char tecla;
  271.  
  272.     cout << endl << "Pulse una tecla y <enter> para continuar..." << endl;
  273.     cin >> tecla; cin.ignore();
  274. }
  275.  
  276.  
  277. void escribir_resultado(const Resultado res){
  278.     switch(res){
  279.         case OK: std::cout << "Operación realizada correctamente." << std::endl;
  280.                  break;
  281.         case LISTA_LLENA: std::cout << "Operación NO realizada: lista llena." << std::endl;
  282.                           break;
  283.         case YA_EXISTE: std::cout << "Operación NO realizada: el elemento ya existe" << std::endl;
  284.                         break;
  285.         case NO_EXISTE: std::cout << "Operación NO realizada: el elemento no existe" << std::endl;
  286.                         break;
  287.         case FIC_ERROR: std::cout << "Error en la apertura de fichero" << std::endl;
  288.     }
  289. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement