Cordial saludo, alguien me puede ayudar con el siguiente ejercicio, esto es lo que tengo y esto es lo que pide el ejercicio:
Un menú con las siete opciones siguientes que permita en cualquier momento ingresar a:
• Una interfaz inicial que incluya la validación de una contraseña de acceso al menú de opciones con color de fondo y color de texto, que incluya a demás los datos básicos como: Nombre de la Universidad, el texto del escenario del problema, el nombre del estudiante, nombre del grupo a que pertenece y la fecha.
• Una opción para Insertar registros a la Cola
• Una opción para Visualizar los registros de la Cola
• Una opción para Eliminar o suprimir registros de la Cola
• Una opción para Buscar un registro en la Cola
• Una opción para mostrar el total recaudado para consignaciones y para retiros.
• Una opción para Salir del programa
usuario:admin
contraseña: 123
#include <iostream>//librerias a emplear
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <cstdlib>
using namespace std;//instrucción para utilizar los operadosres cout y cin
struct datos{//se declara la estructura
char nombrecliente[20];//esta estructura es de tipo char que recibe valores alfanumericos
char cedula[20];
char fecha[20];
int consignacion;
int retiro;
datos *sgte;//puntero de la estructura
}*inicio=NULL, *final=NULL, *aux=NULL, *ant=NULL;//apuntadores vacios
char nombre_cliente[25];//variable que permite la busqueda de nombres
float totalconsignacion=0;
float totalretiro=0;
//de declaran las funciones a emplear
void menu();
void ingresar();
void visualizar();
void buscar();
void eliminar();
void ingresar(){//función que permite ingresar datos
system ("cls");//instrucción de borrado de pantalla
aux=new datos;//reserva de memoria
aux->sgte=inicio;
if(inicio==NULL){
inicio=final=aux;
aux->sgte=NULL;
}else{
aux->sgte=NULL;
final->sgte=aux;
final=aux;
if(aux){//si existe información en el apuntador, se procede a mostrar en pantalla
cout<<endl<<"\n\t Datos de asistentes \n"<<endl;//encabezado
cout<<"\nIngrese Cliente: ";//solicita el nombre
fflush (stdin);//libera el woofer
gets(aux->nombrecliente);//variable que permite almacenar información a traves del apuntador
cout<<"\nIngrese la cedula del cliente: ";//solicita el nit
fflush (stdin);//libera el woofer
gets(aux->cedula);//variable que permite almacenar información a traves del apuntador
cout<<"\nIngrese valor a consignar: ";//solicita la ciudad
fflush (stdin);//libera el woofer
cin>>aux->consignacion;//variable que permite almacenar información a traves del apuntador
totalconsignacion=totalconsignacion + inicio->consignacion;
cout<<"\nIngrese valor a retirar: ";//
fflush (stdin);//libera el woofer
cin>>aux->retiro;//variable que permite almacenar información a traves del apuntador
totalretiro=totalretiro + inicio->retiro;
cout<<"\nIngrese la fecha: ";//solicita el nombre
fflush (stdin);//libera el woofer
gets(aux->fecha);
aux->sgte=NULL;//ultimo dato ingresado, el campo apunta a nada
totalconsignacion=totalconsignacion + aux->consignacion;
totalretiro=totalretiro + aux->retiro;
if (inicio==NULL)//si en el inicio de la lista no hay valores
{
totalconsignacion=totalconsignacion + aux->consignacion;
totalretiro=totalretiro + aux->retiro;
inicio=aux;//inicio continua igual al apuntador aux
final=aux;//final apunta a aux
}
}
}
}
void visualizar(){//función que permite mostrar datos
system ("cls");//instrucción de borrado de pantalla
cout<<"\n\tLista de Clientes\n\n"<<"\n";//encabezado
if(inicio==NULL)//si en el inicio de la lista no hay valores
{
cout<<"No hay informacion para mostrar\n\n"<<endl;//mensaje que retorna sin valores
}
else
{
aux=inicio;//datos en aux es igual a inicio, permite buscar desde el primer nodo recorriendo la lista
while(aux!=NULL)//si el apuntador no esta vacio, se recorre la lista
{
cout<<"\nNombre del cliente: "<<aux->nombrecliente<<endl;//se muestra el valor
cout<<"\nCedula: "<<aux->cedula<<endl;//se muestra el nit
cout<<"\nConsignado: "<<aux->consignacion<<endl;
cout<<"\nRetirado: "<<aux->retiro<<endl;
cout<<"\nFecha: "<<aux->fecha<<endl<<endl<<endl;//se muestra la ciudad
aux=aux->sgte;//avanza al siguiente valor hasta llegar a un valor vacio
}
}
}
void buscar()//función que permite buscar datos
{
system ("cls");//instrucción de borrado de pantalla
aux=inicio;//datos en aux es igual a inicio, permite buscar desde el primer nodo recorriendo la lista
cout<<"\n\tBuscar cliente\n\n";//cabecera
cout<<"Nombre del cliente a buscar: ";//solicita el valor a buscar
fflush(stdin);//libera el woofer
gets(nombre_cliente);//muestra la información contenida
if(inicio==NULL)//si en el inicio de la lista no hay valores
{
cout<<"\n\n NO HAY INFORMACION PARA MOSTRAR\n\n"<<endl;//mensaje que retorna sin valores
return;//regresa a la función
}
else
{
aux=inicio;//datos en aux es igual a inicio, permite buscar desde el primer nodo recorriendo la lista
while(aux!=NULL){//si el apuntador no esta vacio, se recorre la lista
if (strcmp(aux->nombrecliente,nombre_cliente)==0)//comparador para verificar si existe un valor diferente a cero
{
cout<<endl<<"\n\t El nombre es: "<<aux->nombrecliente;//muestra la información contenida
cout<<endl<<"\n\t El cedula es: "<<aux->cedula;//muestra la información contenida
cout<<endl<<"\n\t El valor consignado es: "<<aux->consignacion;
cout<<endl<<"\n\t El valor retirado es: "<<aux->retiro;
cout<<endl<<"\n\t La fecha es: "<<aux->fecha<<endl<<endl;//muestra la información contenida
return;//regresa a la función
}
aux=aux->sgte; //avanza al siguiente valor hasta llegar a un valor vacio
cout<<endl<<"\n\t El nombre no fue encontrado\n\n";//mensaje que retorna sin valores
return;//regresa a la función
}
}
}
void eliminar(){//función que permite eliminar datos
system ("cls");//instrucción de borrado de pantalla
if (aux==NULL)//si en el apuntador aux no hay valores
cout<<"\n\t lista vacia"<<endl<<endl;//mensaje que retorna sin valores
else{
cout<<"Nombre del Cliente a eliminar: ";//solicita el valor a eliminar
fflush(stdin);//libera el woofer
gets(nombre_cliente);//verifica si el valor esta almacenado
aux=inicio;//datos en aux es igual a inicio, permite buscar desde el primer nodo recorriendo la lista
while(aux!=NULL)//si el apuntador no esta vacio, se recorre la lista
{
if(strcmp(aux->nombrecliente,nombre_cliente)!=0)//comparador para verificar si existe un valor diferente a cero
{
ant=aux;//apuntadores ant es igual a aux indicando que los nodos son iguales
aux=aux->sgte;//avanza al siguiente valor hasta llegar a un valor vacio
cout<<"\n\t el nombre no coincide"<<endl<<endl;//valor que retorna si no existe el dato
}
else{
if (aux==inicio)//nodo actual si es igual al que se va a borrar
{
inicio=inicio->sgte;//avanza del primer nodo eliminado al siguiente
}
else{
if(aux->sgte==NULL){//si este es el ultimo valor
ant->sgte=NULL;//el apuntador anterior es el ultimo de la lista
final=ant;//apuntadores final es igual al ant
}
delete(aux);//elimina la información contenida en el apuntador aux
cout<<"Nombre eliminado"<<endl;; //valor que retorna al eliminar el dato
return;//regresa a la función
}
}
}
}
}
//solicitud de usuario y contraseña
int main(){//función principal
{
system ("color 97");
cout <<"\t \t BANCO SANTANDER"<<endl<<"\n\n\n";
string usuario("");
string contrasena("");
cout<<"usuario: ";
cin>>usuario;
cin.get();
if (usuario.compare("admin")==0){
cout<<"contrasena: ";
cin>>contrasena;
if (contrasena.compare("123")==0)
cout<<"\n\n\t\tBienvenido"<<endl<<"\n\n\n";
else
cout <<"Contrasena incorrecta";
}
else
cout <<"Usuario incorrecta";
cin.get();
cin.get();
}
//menu de opciones
int opc=0;//esta variable permite navegar por el menu
do{//ciclo do while
system ("cls");//instrucción de borrado de pantalla
system ("color 1a");
cout<<endl<<"\n\t SEMINARIO MINTIC ";//cabecera
cout<<endl<<"\n\t Menu de Opciones "<<endl;
cout<<"\n\t 1. Ingresar Cliente";
cout<<"\n\t 2. Mostrar lista";
cout<<"\n\t 3. Buscar en lista";
cout<<"\n\t 4. Total recaudado";
cout<<"\n\t 5. Total retirado";
cout<<"\n\t 6. Eliminar cliente";
cout<<"\n\t 7. Salir";
cout<<endl<<"\n\n\tIngrese una opcion: ";
cin>>opc;//permite leer la opción elegida
switch(opc)//permite recibir el valor digitado
{
//cada caso es llamado al elegir la opción en el menu
case 1:
ingresar();
system ("cls");//instrucción de borrado de pantalla
break;//corte
case 2:
visualizar();
system ("pause");//pausa para mostrar el menú
system ("cls");//instrucción de borrado de pantalla
break;//corte
case 3:
buscar();
system ("pause");//pausa para mostrar el menú
system ("cls");//instrucción de borrado de pantalla
break;//corte
case 4:
cout<<endl<<"Total recaudado: $"<<totalconsignacion<<endl;
system ("pause");//pausa para mostrar el menú
system ("cls");//instrucción de borrado de pantalla
break;//corte
case 5:
cout<<endl<<"Total retirado: $"<<totalretiro<<endl;
system ("pause");//pausa para mostrar el menú
system ("cls");//instrucción de borrado de pantalla
break;//corte
case 6:
eliminar();
system ("pause");//pausa para mostrar el menú
system ("cls");//instrucción de borrado de pantalla
break;//corte
case 7:
exit(0);
default: cout<<"\n\tOpcion no encontrada\n";
system ("pause");//pausa para mostrar
break; //corte
}cout<<endl; //salto de linea
}while(opc!=6);//variables diferentes al caso 7
return EXIT_SUCCESS;//retorno a cero
}