Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <ctime>
- #include "twitter.hpp"
- #include "UsuarioTwitter.hpp"
- using namespace std;
- using namespace bblProgII;
- // Escribe el menú de opciones, lee la opción por teclado y la devuelve
- char menu();
- // Pulsar una tecla para continuar
- void Seguir();
- // Escribir resultado de operación por pantalla
- void escribir_resultado(const Resultado res);
- int main(){
- string id_usuario, nom_fic_usuarios;
- unsigned numero;
- Tweet tweet;
- char opcion, seguir;
- Resultado res_sig, res_twt, res;
- bool hay_conectado;
- time_t tSac; // instante actual
- tm tms;
- system("clear");
- bool respuesta;
- Twitter red("usuarios_mi_twitter.usr", respuesta); // Cargarmos la red social
- if (respuesta){
- cout << "LA RED SE HA CARGADO DE DISCO CORRECTAMENTE..." << endl;
- }else{
- cout << "NO SE HA PODIDO CARGAR LA RED DESDE DISCO..." << endl;
- }
- Seguir();
- do{
- opcion = menu();
- switch(opcion){
- case 'a': if (red.usuario_actual().size()>0){
- cout << "Usuario conectado con id: @" << red.usuario_actual() << endl;
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'b': cout << "Introduzca el nombre del usuario a buscar: ";
- cin >> id_usuario; cin.ignore();
- red.me_sigue(id_usuario, respuesta, hay_conectado);
- if (hay_conectado){
- if (respuesta){
- cout << "El usuario @" << id_usuario << " me está siguiendo." << endl;
- }else{
- cout << "El usuario @" << id_usuario << " NO me está siguiendo." << endl;
- }
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'c': cout << "Introduzca el nombre del usuario a buscar: ";
- cin >> id_usuario; cin.ignore();
- red.estoy_siguiendo(id_usuario, respuesta, hay_conectado);
- if (hay_conectado){
- if (respuesta){
- cout << "Estoy siguiendo al usuario @" << id_usuario << endl;
- }else{
- cout << "NO estoy siguiendo al usuario @" << id_usuario << endl;
- }
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'd': if (red.usuario_actual().size() > 0){ // Hay usuario conectado
- cout << "ESTADÍSTICAS DEL USUARIO " << red.usuario_actual() << ":" << endl;
- red.num_seguidores(numero, hay_conectado);
- cout << "Seguidores: " << numero << endl;
- red.num_siguiendo(numero, hay_conectado);
- cout << "Siguiendo: " << numero << endl;
- red.num_tweets(numero, hay_conectado);
- cout << "Tweets: " << numero << endl;
- } else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'e': if (red.usuario_actual().size() > 0){
- unsigned num_usuarios, num_seguidores, num_siguiendo;
- red.num_seguidores(num_seguidores, hay_conectado);
- red.num_siguiendo(num_siguiendo, hay_conectado);
- cout << "Tiene actualmente " << num_seguidores << " seguidores "
- << " y está siguiendo a " << num_siguiendo << " usuarios " << endl;
- cout << "¿Número de usuarios a imprimir de ambas listas (0 -> todos): ";
- cin >> num_usuarios;
- cout << "Su lista de seguidores: " << endl;
- red.imprimir_seguidores(num_usuarios, hay_conectado); cout << endl;
- cout << "Su lista de usuarios a los que sigue: " << endl;
- red.imprimir_siguiendo(num_usuarios, hay_conectado); cout << endl;
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'f': if (red.usuario_actual().size() > 0){
- unsigned num_tweets;
- red.num_tweets(num_tweets, hay_conectado);
- cout << "Tiene actualmente " << num_tweets << " tweets..." << endl;
- cout << "¿Número de tweets a imprimir (0 -> todos): ";
- cin >> num_tweets;
- cout << "Estos son sus últimos tweets:" << endl;
- red.imprimir_tweets(num_tweets, hay_conectado);
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- // case 'g': if (red.usuario_actual().size() > 0){
- // unsigned num_menciones;
- // red.num_menciones(num_menciones, hay_conectado);
- // cout << "Tiene actualmente " << num_menciones << " de otros usuarios..." << endl;
- // cout << "¿Número de menciones a mostrar (0 -> todas): ";
- // cin >> num_menciones;
- // cout << "Éstas son las menciones: " << endl;
- // red.imprimir_menciones(num_menciones, hay_conectado);
- // }else{
- // cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- // }
- // Seguir();
- // break;
- // case 'h': if (red.usuario_actual().size() > 0){
- // red.obtener_menciones(hay_conectado);
- // unsigned num_menciones;
- // red.num_int(num_menciones, hay_conectado);
- // cout << "Tiene actualmente " << num_menciones << " de otros usuarios..." << endl;
- // cout << "¿Número de menciones a mostrar (0 -> todas): ";
- // cin >> num_menciones;
- // cout << "Éstas son las menciones: " << endl;
- // red.imprimir_menciones(num_menciones, hay_conectado);
- // }else{
- // cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- // }
- // Seguir();
- // break;
- case 'i': if (red.usuario_actual().size() > 0){
- cout << "Introduzca el nuevo id del usuario: ";
- cin >> id_usuario; cin.ignore();
- red.establecer_id(id_usuario, hay_conectado);
- cout << "Nuevo id del usuario: " << red.usuario_actual() << endl;
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'j': if (red.usuario_actual().size() > 0){
- cout << "Introduzca un tweet (máximo 140 caracteres): ";
- getline(cin, tweet.tweet);
- tSac = time(NULL); // instante actual
- tms = *localtime(&tSac);
- tweet.fecha_hora.dia = unsigned(tms.tm_mday);
- tweet.fecha_hora.mes = unsigned(tms.tm_mon+1);
- tweet.fecha_hora.anyo = unsigned(tms.tm_year+1900);
- tweet.fecha_hora.hora = unsigned(tms.tm_hour);
- tweet.fecha_hora.minuto = unsigned(tms.tm_min);
- tweet.fecha_hora.segundo = unsigned(tms.tm_sec);
- red.nuevo_tweet(tweet, res_twt, hay_conectado);
- escribir_resultado(res_twt);
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'k': if (red.usuario_actual().size() > 0){
- cout << "Introduzca el nombre del usuario a seguir: ";
- cin >> id_usuario; cin.ignore();
- red.nuevo_siguiendo(id_usuario, res_sig, hay_conectado);
- escribir_resultado(res_sig);
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'l': if (red.usuario_actual().size() > 0){
- cout << "Introduzca el nombre del usuario a eliminar de la lista de usuarios a los que sigo: ";
- cin >> id_usuario; cin.ignore();
- red.eliminar_siguiendo(id_usuario, res_sig, hay_conectado);
- escribir_resultado(res_sig);
- }else{
- cout << "Error! No hay ningún usuario actualmente conectado a la red." << endl;
- }
- Seguir();
- break;
- case 'm': cout << "Introduzca el nombre del usuario a conectar: ";
- cin >> id_usuario; cin.ignore();
- red.cambiar_usuario_actual(id_usuario, res);
- escribir_resultado(res);
- Seguir();
- break;
- case 'n': cout << "Introduzca el nombre del usuario a insertar: ";
- cin >> id_usuario; cin.ignore();
- red.insertar_usuario(id_usuario, res);
- escribir_resultado(res);
- Seguir();
- break;
- case 'o': cout << "Introduzca el nombre del usuario a eliminar de la red: ";
- cin >> id_usuario; cin.ignore();
- red.eliminar_usuario(id_usuario, res);
- escribir_resultado(res);
- Seguir();
- break;
- case 'p': cout << "La red tiene actualmente " << red.num_usuarios() << " usuarios." << endl
- << "Esta es la lista de usuarios:" << endl;
- red.imprimir_usuarios();
- Seguir();
- break;
- case 'x': do{
- cout << "¿Desea guardar todos los datos de la red (s/n)?: ";
- cin.get(seguir); cin.ignore();
- }while (tolower(seguir) != 's' && tolower(seguir) != 'n');
- if (seguir == 's'){
- cout << "Introduzca el nombre del fichero de usuarios: ";
- cin >> nom_fic_usuarios; cin.ignore();
- cout << "Guardando la red en fichero..." << endl;
- red.guardar_todo(nom_fic_usuarios);
- cout << "¡Hasta la próxima!" << endl;
- }
- }
- }while(opcion != 'x');
- }
- char menu(){
- char opcion;
- system("clear"); // Limpiamos la pantalla
- do{
- cout << "MENÚ DE OPCIONES (elija una opción y pulse <enter>):" << endl << endl;
- cout << "a -> Obtener id del usuario actualmente conectado" << endl;
- cout << "b -> Consultar si un usuario me sigue" << endl;
- cout << "c -> Consultar si estoy siguiendo a un usuario" << endl;
- cout << "d -> Imprimir mis estadísticas (seguidores, siguiendo, etc.)" << endl;
- cout << "e -> Imprimir mi lista de seguidores y usuarios a los que sigo" << endl;
- cout << "f -> Imprimir mi lista de tweets" << endl;
- // cout << "g -> Imprimir mi lista de menciones por otros usuarios" << endl;
- // cout << "h -> Actualizar mi lista de menciones que me han hecho otros usuarios de la red" << endl;
- cout << "i -> Modificar el id de mi usuario" << endl;
- cout << "j -> Insertar un nuevo tweet" << endl;
- cout << "k -> Insertar un nuevo usuario en mi lista de usuarios a los que sigo" << endl;
- cout << "l -> Eliminar un usuario de mi lista de usuarios a los que sigo" << endl;
- cout << "m -> Cambiar el usuario actualmente conectado" << endl;
- cout << "n -> Insertar un nuevo usuario en red" << endl;
- cout << "o -> Eliminar un usuario de la red" << endl;
- cout << "p -> Imprimir la lista de usuarios de la red social" << endl;
- cout << "x -> SALIR DEL PROGRAMA" << endl;
- cin.get(opcion); cin.ignore(); opcion = char(tolower(int(opcion)));
- }while((opcion < 'a' || opcion > 'p') && (opcion != 'x'));
- return opcion;
- }
- void Seguir(){
- char tecla;
- cout << endl << "Pulse una tecla y <enter> para continuar..." << endl;
- cin >> tecla; cin.ignore();
- }
- void escribir_resultado(const Resultado res){
- switch(res){
- case OK: std::cout << "Operación realizada correctamente." << std::endl;
- break;
- case LISTA_LLENA: std::cout << "Operación NO realizada: lista llena." << std::endl;
- break;
- case YA_EXISTE: std::cout << "Operación NO realizada: el elemento ya existe" << std::endl;
- break;
- case NO_EXISTE: std::cout << "Operación NO realizada: el elemento no existe" << std::endl;
- break;
- case FIC_ERROR: std::cout << "Error en la apertura de fichero" << std::endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement