Programas en C

1. Diseñar e implementar una aplicación en C++, que permita simular un buzón de sugerencias. Las sugerencias están compuestas por un remitente (estudiante, docente o administrativo), un asunto,
fecha de envió y la sugerencia. Se deben utilizar tres vectores dependiendo del tipo de remitente, y un cuarto vector para
almacenamiento general de todas las sugerencias. La aplicación contara con un menú principal con las siguientes opciones:
  •  Escribir sugerencia
  •  Visualizar mensajes: se muestra un listado general de todas las sugerencias enviadas al buzón.

*Recorrido de las sugerencias por tipo: se muestra un submenú con las siguientes opciones:
- “Primero”: permitirá visualizar el primer mensaje.
- “Anterior”: permitirá visualizar el anterior mensaje.
- “Siguiente”: permitirá visualizar el siguiente mensaje.
- “Ultimo”: permitirá visualizar el último mensaje.
- “Borrar actual”: permitirá borrar el mensaje que está visualizando.
Para ingresar la información se debe implementar un objeto de la clase Vector de STL.



Solución:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <sstream>
#include <string.h>
#include <ctime>
#include <vector>

using namespace::std;
vector <string> myvector;
vector <string> estudiante;
vector <string> docente;
vector <string> administrativo;
string mensaje;


void menu();
void redactar();
void estudiantes();
void docentes();
void administrativos();
void almacenar();
void visualizar();
void mestudiante();
void mdocente();
void madm();
void menuncito();
string cadena();

string cadena(){
   time_t tt;
   time( &tt );
   tm TM = *localtime( &tt );

   int year    = TM.tm_year + 1900;
   int month   = TM.tm_mon + 1;
   int day     = TM.tm_mday;

    string ano = "", dia ="", mes ="";

    ano = static_cast<ostringstream*>(&(ostringstream() << year))->str();
    dia = static_cast<ostringstream*>(&(ostringstream() << day))->str();
    mes = static_cast<ostringstream*>(&(ostringstream() << month))->str();

    string asunto,mensaje1, todo;
    cout<<"mensaje: \n";
    getline(cin, asunto, '\n');
    cout<<"Ingrese el asunto: \n";
    getline(cin, asunto, '\n');
    cout<<"Ingrese el mensaje: \n";
    getline(cin, mensaje1, '\n');
    todo = asunto +"/ "+dia+"-"+mes+"-"+ano+"\n"+ mensaje1+"\n";
    return todo;
}

void menu(){
    int opc = 0;
    do{
    system("cls");
        printf("------Menu------\n");
        printf("1. Redactar mensaje\n");
        printf("2. Visualizar mensajes\n");
        printf("0. Salir\n");
        printf("Seleccione una opcion\n");
        scanf("%d",&opc);
        switch(opc){
            case 1: redactar();break;
            case 2: visualizar();break;
            case 0: break;
            default: printf("Error! opcion incorrecta, presione una tecla...\n");getch();
        }
    }while(opc!=0);
}

void visualizar(){
int opc = 0;
    do{
    system("cls");
        printf("------Bandeja de entrada------\n");
        printf("1. Mostrar todos los mensajes\n");
        printf("2. Mostrar mensajes de Estudiantes\n");
        printf("3. Mostrar mensajes de Docentes\n");
        printf("4. Mostrar mensajes de Administrativos\n");
        printf("0. volver\n");
        printf("Seleccione una opcion\n");
        scanf("%d",&opc);
        switch(opc){
            case 1: almacenar(); break;
            case 2: mestudiante(); break;
            case 3: mdocente(); break;
            case 4: madm(); break;
            case 0: break;
            default: printf("Error! opcion incorrecta, presione una tecla...\n");getch();
        }
    }while(opc!=0);
}

void menuncito(){
    printf("------Bandeja de entrada------\n");
    printf("1. Ir al primer mensaje\n");
    printf("2. Ir al mensaje anterior\n");
    printf("3. Ir al mensaje siguiente\n");
    printf("4. Ir al ultimo mensaje\n");
    printf("5. Borar actual mensaje\n");
    printf("0. volver\n");
    printf("Seleccione una opcion\n");
}

void redactar(){
    int opc = 0;
    do{
    system("cls");
        printf("------Remitente------\n");
        printf("1. Estudiente\n");
        printf("2. Docente\n");
        printf("3. Administrativo\n");
        printf("0. volver\n");
        printf("Seleccione una opcion\n");
        scanf("%d",&opc);
        switch(opc){
            case 1: system("cls");estudiantes(); break;
            case 2: system("cls");docentes(); break;
            case 3: system("cls");administrativos(); break;
            case 0: break;
            default: printf("Error! opcion incorrecta, presione una tecla...\n");getch();
        }
    }while(opc!=0);
}

void estudiantes(){
string completo =cadena();
    mensaje = "\n Estudiante / "+completo;

    myvector.push_back(mensaje);
    estudiante.push_back(mensaje);
}

void docentes(){
string completo =cadena();
mensaje = "\n Docente / "+ completo;

    myvector.push_back(mensaje);
    docente.push_back(mensaje);
}

void administrativos(){
string completo =cadena();
    mensaje = "\n Administrativo / "+completo;

    myvector.push_back(mensaje);
    administrativo.push_back(mensaje);
}

void almacenar(){
system("cls");
if(myvector.empty()) printf("\nError, no tiene mensajes\n");
else{
printf("-----------Mensajes-----------\n");
    for(int i=0; i< myvector.size(); i++){
        cout<<myvector[i] << endl;
    }
}
    printf("\n\n Presione una tecla para volver...");
    getch();
}

void mestudiante(){
    int opc, i=0;
    do{
    system("cls");
    if(estudiante.empty()) {printf("\nError, no hay mensajes de estudiantes, presione una tecla...\n");getch();}
    else{
        cout<<estudiante[i] << endl;
        menuncito();
        scanf("%d",&opc);
        switch(opc){
        case 1:
                if(i==0) {printf("\n Ya esta en el primer mensaje, presione una tecla...\n"); getch();}
                else i=0;
                break;
        case 2:
                if(i==0) {printf("\n Error! esta en el primer mensaje, presione una tecla...\n");getch();}
                else i--; break;
        case 3:
                if(i==(estudiante.size()-1)) {printf("\n Error! esta en el ultimo mensaje, presione una tecla...\n");getch();}
                else i++; break;
        case 4:
                if(i==(estudiante.size()-1)) {printf("\n Ya esta en el ultimo mensaje, presione una tecla...\n");getch();}
                else i=estudiante.size()-1; break;
        case 5:
for(int j=0; j< myvector.size(); j++){
        if(myvector[j].compare(estudiante[i])==0){
        myvector.erase(myvector.begin()+j);
        j= myvector.size()-1;
        }
    }
estudiante.erase(estudiante.begin()+i);
if(i==0) i++; else if (i==(administrativo.size()-1)) i--; else i--;
break;
        case 0: break;
        default: printf("Error! opcion incorrecta, presione una tecla...\n");getch();
    }
        }
    }while(opc!=0 && !estudiante.empty());
    system("cls");
}

void mdocente(){
    int opc, i=0;
    do{
    system("cls");
    if(docente.empty()) {printf("\nError, no hay mensajes de docentes, presione una tecla...\n");getch();}
    else{
        cout<<docente[i] << endl;
        menuncito();
        scanf("%d",&opc);
        switch(opc){
        case 1:
                if(i==0) {printf("\n Ya esta en el primer mensaje, presione una tecla...\n"); getch();}
                else i=0;
                break;
        case 2:
                if(i==0) {printf("\n Error! esta en el primer mensaje, presione una tecla...\n");getch();}
                else i--; break;
        case 3:
                if(i==(docente.size()-1)) {printf("\n Error! esta en el ultimo mensaje, presione una tecla...\n");getch();}
                else i++; break;
        case 4:
                if(i==(docente.size()-1)) {printf("\n Ya esta en el ultimo mensaje, presione una tecla...\n");getch();}
                else i=docente.size()-1; break;
        case 5:
for(int j=0; j< myvector.size(); j++){
        if(myvector[j].compare(docente[i])==0){
        myvector.erase(myvector.begin()+j);
        j= myvector.size()-1;
        }
    }
docente.erase(docente.begin()+i);
if(i==0) i++; else if (i==(administrativo.size()-1)) i--; else i--;
break;
        case 0: break;
        default: printf("Error! opcion incorrecta, presione una tecla...\n");getch();
    }
        }
    }while(opc!=0 && !docente.empty());
    system("cls");
}

void madm(){
    int opc, i=0;
    do{
    system("cls");
    if(administrativo.empty()) {printf("\nError, no hay mensajes de administrativos, presione una tecla...\n");getch();}
    else{
        cout<<administrativo[i] << endl;
        menuncito();
        scanf("%d",&opc);
        switch(opc){
        case 1:
                if(i==0) {printf("\n Ya esta en el primer mensaje, presione una tecla...\n"); getch();}
                else i=0;
                break;
        case 2:
                if(i==0) {printf("\n Error! esta en el primer mensaje, presione una tecla...\n");getch();}
                else i--; break;
        case 3:
                if(i==(administrativo.size()-1)) {printf("\n Error! esta en el ultimo mensaje, presione una tecla...\n");getch();}
                else i++; break;
        case 4:
                if(i==(administrativo.size()-1)) {printf("\n Ya esta en el ultimo mensaje, presione una tecla...\n");getch();}
                else i=administrativo.size()-1; break;
        case 5:
for(int j=0; j< myvector.size(); j++){
        if(myvector[j].compare(administrativo[i])==0){
        myvector.erase(myvector.begin()+j);
        j= myvector.size()-1;
        }
    }
administrativo.erase(administrativo.begin()+i);
if(i==0) i++; else if (i==(administrativo.size()-1)) i--; else i--;
break;
        case 0: break;
        default: printf("Error! opcion incorrecta, presione una tecla...\n");getch();
    }
        }
    }while(opc!=0 && !administrativo.empty());
    system("cls");
}

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

Comentarios

Entradas populares