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:
- “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;
}
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
Publicar un comentario