Demo entry 6737103

Pract9

   

Submitted by anonymous on Apr 29, 2018 at 07:38
Language: C++. Code size: 9.2 kB.

///Práctica 9.
///Equipo 2:
///Barajas Nieves Arturo.
///Escalera Cabriales Ulises Samuel.
///Martin del Campo Alvizo Jose Carlos.
///Rodriguez Fajardo Omi Yectli.

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include <fstream>
#include <conio.h>

using namespace std;

typedef class Producto *Tlista;

void menu();

//Definición de la clase Producto.
class Producto
{
	private:
		int clave, canNom;
		string nombre;
		double precio;
		Producto *sgte;
	public:
		Producto();
		int ingresar(Tlista &lista, int cla, string nom, double pre);
		int eliminar(Tlista &lista, int cla);
		int buscar(Tlista &lista, int cla);
		int mostrar(Tlista &lista);
		int lista_vacia(Tlista &lista);
		int imprimirArchivo(Tlista &lista);
		int LeerArchivo(Tlista &lista);
};//fin de la clase Producto.

//Constructor de la clase Producto.
Producto::Producto()
{
	
}//fin del constructor.

/*Método ingresar: Ingresa al final de la lista un nuevo nodo, tomando como parametros la lista,
la clave, el nombre y el precio del nuevo Producto establecido.*/
int Producto::ingresar(Tlista &lista, int cla, string nom, double pre)
{
	Tlista t, q=new(class Producto);//q es un nuevo nodo.
	q->clave=cla;
	int i=0, e=0;
	for(i=0; i<nom.size(); i++)
	{
		q->nombre[i]=nom[i];
	}//fin del for.
	q->canNom=i;
	q->precio=pre;
	q->sgte=NULL;
	if(lista==NULL)
	{
		lista=q;
	}//fin del if.
	else
	{
		t=lista;
		while(t->sgte!=NULL)
		{
			t=t->sgte;
		}//fin del while.
		t->sgte=q;
	}//fin del else.
	system("cls");
	cout<<"  \n\nPRODUCTO REGISTRADO CON EXITO!"<<endl;
	return 0;
}//fin del método ingresar.

/*Método eliminar: Elimina un nodo mediante su clave, recibe como parametros la lista y la clave del
producto a eliminar.*/
int Producto::eliminar(Tlista &lista, int cla)
{
	Tlista p=lista, d=lista, l=lista, t=lista;
	int tam=1, claE, pos=1;
	claE=cla;
	while(l->sgte!=NULL)
	{
		l=l->sgte;
		tam++;
	}//fin del while.
	switch(tam)
	{
		case 1:
			if((p->clave)==claE)
			{
				delete p;
				lista=NULL;
				cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
				return 0;
			}//fi del if.
			else
			{
				cout<<"  \nNO EXISTE NINGUN PRODUCTO CON ESA CLAVE...!"<<endl;
				return 0;
			}//fin del else.
			break;
		case 2:
			d=d->sgte;
			while(pos<tam)
			{
				if((p->clave)==claE)
				{
					if(pos==1)
					{
						delete p;
						lista=d;
						cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
						return 0;
					}//fin del if.
					else
					{
						t->sgte=NULL;
						delete p;
						cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
						return 0;
					}//fin del else.
				}//fin del if.
				else
				{
					pos++;
					p=p->sgte;
				}//fin del else.
			}//fin del while.
			if(p->clave==claE)
			{
				t->sgte=NULL;
				delete p;
				cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
				return 0;
			}//fin del if.
			else
			{
				cout<<"  \nNO EXISTE NINGUN PRODUCTO CON ESA CLAVE...!"<<endl;
				return 0;
			}//fin del else.
		default:
		{
			d=d->sgte;
			while(pos<tam)
			{
				if((p->clave)==claE)
				{
					if(pos==1)
					{
						lista=d;
						delete p;
						cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
						return 0;
					}//fin del if.
					else if(pos==tam)
					{
						t->sgte=NULL;
						delete p;
						cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
						return 0;
					}//fin del else if.
					else
					{
						t->sgte=d;
						delete p;
						cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
						return 0;
					}//fin del else.
				}//fin del if.
				else
				{
					if(pos<2)
					{
						pos++;
						p=p->sgte;
						d=d->sgte;
					}//fin del if.
					else
					{
						pos++;
						p=p->sgte;
						d=d->sgte;
						t=t->sgte;
					}//fin del else.
				}//fin del else.
			}//fin del while.
			if(p->clave==claE)
			{
				t->sgte=NULL;
				delete p;
				cout<<"  \nPRODUCTO ELIMINADO EXITOSAMENTE!"<<endl;
				return 0;
			}//fin del if.
			else
			{
				cout<<"  \nNO EXISTE NINGUN PRODUCTO CON ESA CLAVE...!"<<endl;
				return 0;
			}//fin del else.
		}//fin del default.
	}//fin del switch.
	return 0;
}//fin del método eliminar.

/*Método buscar: Busca en la lista un producto mediante su clave, recibe como parametros 
la lista y la clave. */
int Producto::buscar(Tlista &lista, int cla)
{
	Tlista b=lista;
	int claB=cla, i=0;
	while(b!=NULL)
	{
		if(b->clave==claB)
		{
			cout<<endl<<"  CLAVE : "<<b->clave
				<<endl<<"  NOMBRE: ";
			while(i<(b->canNom))
			{
				cout<<b->nombre[i];
				i++;
			}//fin del while.
			cout<<endl<<"  PRECIO: "<<b->precio<<endl<<endl;
			return 0;
		}//fin del if.
		else
		{
			b=b->sgte;
		}//fin del else.
	}//fin del while.
	cout<<"  \nNO EXISTE NINGUN PRODUCTO CON ESA CLAVE...!"<<endl;
	return 0;
}//fin del método buscar.

/*Método mostrar: Muestra todos los registros(nodos) que halla en la lista, 
recibe como parametros la lista.*/
int Producto::mostrar(Tlista &lista)
{
	Tlista q=lista;
	int vacia=lista_vacia(lista);
	int i=0;
	if(vacia==0)
	{
		cout<<"  \nLA LISTA SE ENCUENTRA VACIA...!"<<endl;
	}//fin del if.
	else
	{
		system("cls");
		cout<<"    \nLISTA DE PRODUCTOS.  "<<endl;
		while(q!=NULL)
		{
			i=0;
			cout<<endl<<"  CLAVE : "<<q->clave
				<<endl<<"  NOMBRE: ";
			while(i<(q->canNom))
			{
				cout<<q->nombre[i];
				i++;
			}//fin del while.
			cout<<endl<<"  PRECIO: "<<q->precio<<endl<<endl;
			q=q->sgte;
		}//fin del while.
	}//fin del else.
	return 0;
}//fin del método mostrar.

/*Método lista_vacia: Comprueba si la lista no tiene registros, 
recibe como parametros la lista. */
int Producto::lista_vacia(Tlista &lista)
{
	if(lista==NULL)
		return 0;//fin del if.
	else
		return 1;//fin del else.
}//fin del método lista_vacia.

/*Método imprimirArchivo: Método que imprime los registros(si los hay) en el archivo físico.*/
int Producto::imprimirArchivo(Tlista &lista)
{
	Tlista q=lista;
	int e;
	ofstream archivoSalida("prod_electronicos.txt");
	if(lista==NULL)
	{
		return 0;
	}//fin del if.
	else
	{
		while(q!=NULL)
		{
			e=0;
			archivoSalida<<q->clave<<" ";
			while(e<q->canNom)
			{
				archivoSalida<<q->nombre[e];
				e++;
			}//fin del while.
			archivoSalida<<" "<<q->precio<<" "<<q->canNom<<endl;
			q=q->sgte;
		}//fin del while.
		archivoSalida<<endl;
	}//fin del else
	archivoSalida.close();
	return 0;
}//fin del método imprimirArchivo.

/*Método cargarArchivo: Método que carga los registros guardados en el Archivo físico(si los hay)
y los introduce en la lista.*/
int Producto::LeerArchivo(Tlista &lista)
{
	ifstream archivoEntrada("prod_electronicos.txt");
	Tlista q=lista;
	int claA, i, canNomA;
	string nomA;
	double preA;
	while(archivoEntrada>>claA>>nomA>>preA>>canNomA)
	{
		Tlista p=new(class Producto);
		i=0;
		p->clave=claA;
		p->canNom=canNomA;
		while(i<=(p->canNom))
		{
			p->nombre[i]=nomA[i];
			i++;
		}//fin del while.
		p->precio=preA;
		p->sgte=NULL;
		if(lista==NULL)
		{
			lista=p;
		}//fin del if.
		else
		{
			q=lista;
			while(q->sgte!=NULL)
			{
				q=q->sgte;
			}//fin del while.
			q->sgte=p;
		}//fin del else.
	}//fin del while.
    return 0;
}//fin del método cargarArchivo.

/*Función principal.*/
int main() 
{
	Tlista lista=NULL;
	Producto c;
	char opc;
	int cla, valor;
	string nom;
	double pre;
	c.LeerArchivo(lista);
	do
	{
		menu();
		cin>>opc;
	
		switch(opc)
		{
			case '1':
				system("cls");
				cout<<"\n  INGRESE LA CLAVE DEL NUEVO PRODUCTO: "<<endl;
				cin>>cla;
				cout<<"  INGRESE EL NOMBRE DEL NUEVO PRODUCTO: "<<endl;
				cin>>nom;
				cout<<"  INGRESE EL PRECIO DEL NUEVO PRODUCTO: "<<endl;
				cin>>pre;
				c.ingresar(lista, cla, nom, pre);
				break;
			case '2':
				valor=c.lista_vacia(lista);
				if(valor==0)
					cout<<"  \nLA LISTA SE ENCUENTRA VACIA...!"<<endl;
				else
				{
					system("cls");
					cout<<"\n  INGRESE LA CLAVE DEL PRODUCTO QUE DESEA DAR DE BAJA: "<<endl;
					cin>>cla;
					c.eliminar(lista, cla);
				}
				break;
			case '3':
				cout<<"\n  INGRESE LA CLAVE DEL PRODUCTO QUE DESEA BUSCAR: "<<endl;
				cin>>cla;
				c.buscar(lista, cla);
				break;
			case '4':
				c.mostrar(lista);
				break;
			case '5':
				c.imprimirArchivo(lista);
				return 0;
			default:
				cout<<endl<<"  \nOpcion invalida!...Por favor seleccione una opcion valida"<<endl;
		}//fin del switch.
	}//fin del do.
	while(opc!='5');//fin del while.
	return 0;
}//fin del main.

/*Menú del programa.*/
void menu()
{
	cout<<"\n\nBIENVENIDO AL SISTEMA DE REGISTRO DE PRODUCTOS ELECTRONICOS"<<endl;
	cout<<"  1.- Registrar un nuevo producto."<<endl
		<<"  2.- Dar de baja un producto."<<endl
		<<"  3.- Verificar si un producto ya fue registrado."<<endl
		<<"  4.- Imprimir lista de productos regitrados."<<endl
		<<"  5.- Salir."<<endl
		<<"    Elige tu opcion: ";
}//fin de la función menu.

This snippet took 0.03 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).