Título: problema estructura de datos tipo cola Publicado por: charlyvaron en 23 Mayo 2015, 00:30 am 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 } |