Skip to content

Instantly share code, notes, and snippets.

@jofese
Created November 9, 2014 20:59
Show Gist options
  • Save jofese/4e1305a4948abd4b7323 to your computer and use it in GitHub Desktop.
Save jofese/4e1305a4948abd4b7323 to your computer and use it in GitHub Desktop.
Ejercicios con Listas Enlazadas Simples en C++: Sistema sobre registro de Pacientes de un Hospital que cumpla con un menu(registrar, modificar, eliminar pacientes,...)
/*
Autor: Joel Cesar Fernandez Segura
Curso: Estructura de Datos
Ejercicio: REGISTRAR PACIENTES
IDE: CodeBlocks
Pagina Web: http://codebotic.blogspot.com
*/
#include<iostream>
#include<cstdlib>
#include<string.h>
#define maxchar 50
using namespace std;
struct nodo{
int codigo; // campo codigo
char nombres[maxchar]; // campo que almacena el nombre
char apellidos[maxchar];// campo que almacena el apellido
char direccion[maxchar];// campo que almacena la direccion
int telefono;// campo que almacena el telefono
struct nodo *sgte;
};
typedef struct nodo *PLista;
/*--------------------- FUNCION MENU PRINCIPAL --------------------*/
void menu(void){
cout<<"\n\t\t[ REGISTRO DE PACIENTES ]\n";
cout<<"\t\t----------------------------\n\n";
cout<<" 1. REGISTRAR PACIENTE "<<endl;
cout<<" 2. ELIMINAR DATOS DE PACIENTE "<<endl;
cout<<" 3. ACTUALIZAR PACIENTES "<<endl;
cout<<" 4. MOSTRAR LISTADO "<<endl;
cout<<" 5. COPIAR DATOS DE UN PACIENTE A OTRO "<<endl;
cout<<" 6. SALIR "<<endl;
cout<<"\n Ingrese opcion : ";
}
/*----------------- CUNCION PARA ACTUALIZAR UN DATO---------------*/
void menu_actualizar(void){
cout<<"\n\t\t[ ESPECIFIQUE CAMPO A ACTUALIZAR ]\n";
cout<<"\t\t----------------------------\n\n";
cout<<" 1. NOMBRES "<<endl;
cout<<" 2. APELLIDOS "<<endl;
cout<<" 3. DIRECCION "<<endl;
cout<<" 4. TELEFONO "<<endl;
cout<<" 5. SALIR "<<endl;
cout<<"\n Ingrese opcion : ";
}
/*-------------------- FUNCION REGISTRAR PACIENTES ------------------*/
void registrar_pacientes(PLista &lista){
PLista t,q = new(struct nodo);
cout<<"\n\n\t\t[ REGISTRO ]\n";
cout<<"\t\t------------";
cout<<"\n\tDATOS DEL PACIENTE ";
cin.ignore();cout<<"\n\n\tCODIGO:"; cin>>q->codigo;
cin.ignore();cout<<"\n\tNOMBRES:"; cin.getline(q->nombres,maxchar);
cin.ignore();cout<<"\tAPELLIDOS:"; cin.getline(q->apellidos,maxchar);
cin.ignore();cout<<"\tDIRECCION:"; cin.getline(q->direccion,maxchar);
cin.ignore();cout<<"\n\tTELEFONO:"; cin>>q->telefono;
system("cls");
q->sgte = NULL;
if(lista==NULL){
lista = q;
} else {
t = lista;
while(t->sgte!=NULL){
t = t->sgte;
}
t->sgte = q;
}
}
/*------------------------ FUNCION ELIMINAR PACIENTE ---------------------*/
void eliminar_paciente(PLista &lista){
int cod;
PLista q,t;
q=lista;
cout<<"\n\n\n\tELIMINAR UN PACIENTE";
cout<<"\n\n\tINGRESE CODIGO:"; cin>>cod;
while(q!=NULL){
if(q->codigo==cod){
if(q==lista)
lista=lista->sgte;
else
t->sgte=q->sgte;
delete(q);
cout<<"\n\n\tREGISTRO ELIMINADO...!!!!!\n";
return;
}else {
t=q;
q=q->sgte;
}
}
if(q==NULL)
cout<<"\n\tCODIGO INCORRECTO...!!\n";
}
/*-------------------- FUNCION ACTUALIZAR PACIENTE -------------------*/
void actualizar_paciente(PLista lista){
int cod, x;
PLista q;
q=lista;
cout<<"\n\n\n\tACTUALIZAR REGISTRO DE PACIENTE";
cout<<"\n\n\tINGRESE CODIGO:"; cin>>cod;
while(q!=NULL){
if(q->codigo==cod){
system("cls");
cout<<"\n\tDATOS DEL PACIENTE ";
cout<<"\n\t--------------------";
cout<<"\n\n\tCODIGO : "<<q->codigo<<endl;
cout<<"\n\tNOMBRES : "<<q->nombres<<endl;
cout<<"\tAPELLIDOS: "<<q->apellidos<<endl;
cout<<"\tDIRECCION: "<<q->direccion<<endl;
cout<<"\tTELEFONO : "<<q->telefono<<endl;
menu_actualizar();
cin>>x;
switch(x){
case 1: cout<<"\n\n\tINGRESE NOMBRES:";
cin.ignore(); cin.getline(q->nombres,maxchar);
break;
case 2: cout<<"\n\n\tINGRESE APELLIDOS:";
cin.ignore(); cin.getline(q->apellidos,maxchar);
break;
case 3: cout<<"\n\n\tINGRESE DIRECCION:";
cin.ignore(); cin.getline(q->direccion,maxchar);
break;
case 4: cout<<"\n\n\tINGRESE TELEFONO:";
cin>>q->telefono;
break;
default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
}
cout<<"\n\n\tREGISTRO ACTUALIZADO...!!!!!\n";
return;
}else {
q=q->sgte;
}
}
if(q==NULL)
cout<<"\n\tCODIGO INCORRECTO...!!\n";
}
/*---------------------- FUNCION MOSTRAR PACIENTE -------------------*/
void mostrar_pacientes(PLista q){
int i=1;
while(q!=NULL){
cout<<"\n\tDATOS DEL PACIENTE ["<<i<<"] ";
cout<<"\n\t------------------------";
cout<<"\n\n\tCODIGO : "<<q->codigo<<endl;
cout<<"\n\tNOMBRES : "<<q->nombres<<endl;
cout<<"\tAPELLIDOS: "<<q->apellidos<<endl;
cout<<"\tDIRECCION: "<<q->direccion<<endl;
cout<<"\tTELEFONO : "<<q->telefono<<endl;
q=q->sgte;
i++;
}
}
/*--------------- FUNCION COPIAR DATOS DE UN PACIENTEA OTRO ------------------*/
void copiar_datos_paciente(PLista lista){
int cod1,cod2, x;
PLista p,q,t;
p=lista;
q=lista;
char dato[maxchar];
cout<<"\n\n\n\tCOPIAR DATOS DE PACIENTE A OTRO";
cout<<"\n\n\n\t--------------------------------";
cout<<"\n\n\tINGRESE CODIGO DE PACIENTE A COPIAR:"; cin>>cod1;
cout<<"\n\n\tINGRESE CODIGO DE PACIENTE A SUSTITUIR:";cin>>cod2;
system("cls");
while(p!=NULL){
if(p->codigo==cod1){
t=p;
cout<<"\n\tDATOS DEL PACIENTE COPIAR ";
cout<<"\n\t---------------------------";
cout<<"\n\n\tCODIGO : "<<p->codigo<<endl;
cout<<"\n\tNOMBRES : "<<p->nombres<<endl;
cout<<"\tAPELLIDOS: "<<p->apellidos<<endl;
cout<<"\tDIRECCION: "<<p->direccion<<endl;
cout<<"\tTELEFONO : "<<p->telefono<<endl;
}
p=p->sgte;
}
while(q!=NULL){
if(q->codigo==cod2){
cout<<"\n\tDATOS DEL PACIENTE A SUSITUIR ";
cout<<"\n\t--------------------";
cout<<"\n\n\tCODIGO : "<<q->codigo<<endl;
cout<<"\n\tNOMBRES : "<<q->nombres<<endl;
cout<<"\tAPELLIDOS: "<<q->apellidos<<endl;
cout<<"\tDIRECCION: "<<q->direccion<<endl;
cout<<"\tTELEFONO : "<<q->telefono<<endl;
menu_actualizar();
cin>>x;
switch(x){
case 1: strcpy(dato,t->nombres);
strcpy(q->nombres,dato);
break;
case 2: strcpy(dato,t->apellidos);
strcpy(q->apellidos,dato);
break;
case 3: strcpy(dato,t->direccion);
strcpy(q->direccion,dato);
break;
case 4: q->telefono=t->telefono;
break;
default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
}
cout<<"\n\n\tREGISTRO ACTUALIZADO...!!!!!\n";
return;
}else {
q=q->sgte;
}
}
if(q==NULL)
cout<<"\n\tCODIGO INCORRECTO...!!\n";
}
/*------------------------- FUNCION PRINCIPAL -------------------*/
int main(void){
system("color 0a");
PLista lista=NULL;
int opcion;
do{
menu();
cin>>opcion;
switch(opcion){
case 1: registrar_pacientes(lista);
break;
case 2: if(lista==NULL){
cout<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
}else{
eliminar_paciente(lista);
}
break;
case 3: if(lista==NULL){
cout<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
}else{
actualizar_paciente(lista);
}
break;
case 4: if(lista==NULL){
cout<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
}else {
mostrar_pacientes(lista);
}
break;
case 5: if(lista==NULL){
cout<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
}else{
copiar_datos_paciente(lista);
}
break;
case 6: return 0;
default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
}
system("pause"); system("cls");
}while(opcion!=6);
system("pause");
return 0;
}
@eric90pdoihwe9
Copy link

/*
Autor: Joel Cesar Fernandez Segura
Curso: Estructura de Datos
Ejercicio: REGISTRAR PACIENTES
IDE: CodeBlocks
Pagina Web: http://codebotic.blogspot.com
*/

#include
#include
#include<string.h>
#define maxchar 50

using namespace std;

struct nodo{

int codigo;     // campo codigo
char nombres[maxchar]; // campo que almacena el nombre
char apellidos[maxchar];// campo que almacena el apellido
char direccion[maxchar];// campo que almacena la direccion
int telefono;// campo que almacena el telefono
struct nodo *sgte;

};

typedef struct nodo *PLista;

/--------------------- FUNCION MENU PRINCIPAL --------------------/
void menu(void){

cout<<"\n\t\t[    REGISTRO DE PACIENTES    ]\n";
cout<<"\t\t----------------------------\n\n";
cout<<" 1. REGISTRAR PACIENTE                          "<<endl;
cout<<" 2. ELIMINAR DATOS DE PACIENTE                  "<<endl;
cout<<" 3. ACTUALIZAR PACIENTES                        "<<endl;
cout<<" 4. MOSTRAR LISTADO                             "<<endl;
cout<<" 5. COPIAR DATOS DE UN PACIENTE A OTRO          "<<endl;
cout<<" 6. SALIR                                       "<<endl;

cout<<"\n Ingrese opcion : ";

}

/*----------------- CUNCION PARA ACTUALIZAR UN DATO---------------*/
void menu_actualizar(void){
	
	cout<<"\n\t\t[    ESPECIFIQUE CAMPO A ACTUALIZAR    ]\n";
	cout<<"\t\t----------------------------\n\n";
	cout<<" 1. NOMBRES                       "<<endl;
	cout<<" 2. APELLIDOS                     "<<endl;
	cout<<" 3. DIRECCION                     "<<endl;
	cout<<" 4. TELEFONO                      "<<endl;
	cout<<" 5. SALIR                         "<<endl;
	
	cout<<"\n Ingrese opcion : ";
}
	
	
	/*-------------------- FUNCION REGISTRAR PACIENTES ------------------*/
	void registrar_pacientes(PLista &lista){
		
		PLista t,q = new(struct nodo);
		
		cout<<"\n\n\t\t[  REGISTRO  ]\n";
		cout<<"\t\t------------";
		cout<<"\n\tDATOS DEL PACIENTE ";
		cin.ignore();cout<<"\n\n\tCODIGO:"; cin>>q->codigo;
		cin.ignore();cout<<"\n\tNOMBRES:"; cin.getline(q->nombres,maxchar);
		cin.ignore();cout<<"\tAPELLIDOS:"; cin.getline(q->apellidos,maxchar);
		cin.ignore();cout<<"\tDIRECCION:"; cin.getline(q->direccion,maxchar);
		cin.ignore();cout<<"\n\tTELEFONO:"; cin>>q->telefono;
		
		system("cls");
		
		q->sgte = NULL;
		
		if(lista==NULL){
			
			lista = q;
			
		} else {
			
			t = lista;
			
			while(t->sgte!=NULL){
				
				t = t->sgte;
			}
			
			t->sgte = q;
			
		}
	}
		
		/*------------------------ FUNCION ELIMINAR PACIENTE ---------------------*/
		void eliminar_paciente(PLista &lista){
			
			int cod;
			PLista q,t;
			q=lista;
			
			cout<<"\n\n\n\tELIMINAR UN PACIENTE";
			cout<<"\n\n\tINGRESE CODIGO:"; cin>>cod;
			
			while(q!=NULL){
				
				if(q->codigo==cod){
					
					if(q==lista)
						lista=lista->sgte;
					
					else
						t->sgte=q->sgte;
					
					delete(q);
					
					cout<<"\n\n\tREGISTRO ELIMINADO...!!!!!\n";
					
					return;
					
				}else {
					
					t=q;
					q=q->sgte;
					
				}
				
			}
			if(q==NULL)
				  cout<<"\n\tCODIGO INCORRECTO...!!\n";
			
		}
			
			
			/*-------------------- FUNCION ACTUALIZAR PACIENTE -------------------*/
			void actualizar_paciente(PLista lista){
				
				int cod, x;
				PLista q;
				q=lista;
				
				cout<<"\n\n\n\tACTUALIZAR REGISTRO DE PACIENTE";
				cout<<"\n\n\tINGRESE CODIGO:"; cin>>cod;
				
				while(q!=NULL){
					
					if(q->codigo==cod){
						system("cls");
						cout<<"\n\tDATOS DEL PACIENTE  ";
						cout<<"\n\t--------------------";
						cout<<"\n\n\tCODIGO   : "<<q->codigo<<endl;
						cout<<"\n\tNOMBRES  : "<<q->nombres<<endl;
						cout<<"\tAPELLIDOS: "<<q->apellidos<<endl;
						cout<<"\tDIRECCION: "<<q->direccion<<endl;
						cout<<"\tTELEFONO : "<<q->telefono<<endl;
						
						menu_actualizar();
						cin>>x;
						
						switch(x){
							
						case 1: cout<<"\n\n\tINGRESE NOMBRES:";
						cin.ignore(); cin.getline(q->nombres,maxchar);
						break;
						
						case 2: cout<<"\n\n\tINGRESE APELLIDOS:";
						cin.ignore(); cin.getline(q->apellidos,maxchar);
						break;
						
						case 3: cout<<"\n\n\tINGRESE DIRECCION:";
						cin.ignore(); cin.getline(q->direccion,maxchar);
						break;
						
						case 4: cout<<"\n\n\tINGRESE TELEFONO:";
						cin>>q->telefono;
						break;
						
						default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
						
						}
						cout<<"\n\n\tREGISTRO ACTUALIZADO...!!!!!\n";
						
						return;
						
					}else {
						
						
						q=q->sgte;
						
					}
					
				}
				if(q==NULL)
					  cout<<"\n\tCODIGO INCORRECTO...!!\n";
			}
				
				
				/*---------------------- FUNCION MOSTRAR PACIENTE -------------------*/
				void mostrar_pacientes(PLista q){
					
					int i=1;
					
					while(q!=NULL){
						
						cout<<"\n\tDATOS DEL PACIENTE ["<<i<<"] ";
						cout<<"\n\t------------------------";
						cout<<"\n\n\tCODIGO   : "<<q->codigo<<endl;
						cout<<"\n\tNOMBRES  : "<<q->nombres<<endl;
						cout<<"\tAPELLIDOS: "<<q->apellidos<<endl;
						cout<<"\tDIRECCION: "<<q->direccion<<endl;
						cout<<"\tTELEFONO : "<<q->telefono<<endl;
						
						q=q->sgte;
						
						i++;
					}
					
				}
					
					/*--------------- FUNCION COPIAR DATOS DE UN PACIENTEA OTRO ------------------*/
					void copiar_datos_paciente(PLista lista){
						
						int cod1,cod2, x;
						PLista p,q,t;
						p=lista;
						q=lista;
						char dato[maxchar];
						
						cout<<"\n\n\n\tCOPIAR DATOS DE PACIENTE A OTRO";
						cout<<"\n\n\n\t--------------------------------";
						cout<<"\n\n\tINGRESE CODIGO DE PACIENTE A COPIAR:"; cin>>cod1;
						cout<<"\n\n\tINGRESE CODIGO DE PACIENTE A SUSTITUIR:";cin>>cod2;
						system("cls");
						
						while(p!=NULL){
							
							if(p->codigo==cod1){
								t=p;
								cout<<"\n\tDATOS DEL PACIENTE  COPIAR ";
								cout<<"\n\t---------------------------";
								cout<<"\n\n\tCODIGO   : "<<p->codigo<<endl;
								cout<<"\n\tNOMBRES  : "<<p->nombres<<endl;
								cout<<"\tAPELLIDOS: "<<p->apellidos<<endl;
								cout<<"\tDIRECCION: "<<p->direccion<<endl;
								cout<<"\tTELEFONO : "<<p->telefono<<endl;
								
							}
							p=p->sgte;
							
						}
						while(q!=NULL){
							
							if(q->codigo==cod2){
								
								cout<<"\n\tDATOS DEL PACIENTE A SUSITUIR ";
								cout<<"\n\t--------------------";
								cout<<"\n\n\tCODIGO   : "<<q->codigo<<endl;
								cout<<"\n\tNOMBRES  : "<<q->nombres<<endl;
								cout<<"\tAPELLIDOS: "<<q->apellidos<<endl;
								cout<<"\tDIRECCION: "<<q->direccion<<endl;
								cout<<"\tTELEFONO : "<<q->telefono<<endl;
								
								menu_actualizar();
								cin>>x;
								
								switch(x){
									
								case 1: strcpy(dato,t->nombres);
								strcpy(q->nombres,dato);
								break;
								
								case 2: strcpy(dato,t->apellidos);
								strcpy(q->apellidos,dato);
								break;
								
								case 3: strcpy(dato,t->direccion);
								strcpy(q->direccion,dato);
								break;
								
								case 4: q->telefono=t->telefono;
								break;
								
								default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
								
								}
								cout<<"\n\n\tREGISTRO ACTUALIZADO...!!!!!\n";
								
								return;
								
							}else {
								
								
								q=q->sgte;
								
							}
							
						}
						
						if(q==NULL)
							  cout<<"\n\tCODIGO INCORRECTO...!!\n";
						
					}
						
						/*------------------------- FUNCION PRINCIPAL -------------------*/
						int main(void){
							
							system("color 0a");
							
							PLista lista=NULL;
							
							int opcion;
							
							do{
								menu();
								cin>>opcion;
								
								switch(opcion){
									
								case 1: registrar_pacientes(lista);
								break;
								
								case 2: if(lista==NULL){
									
									cout<<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
									
								}else{
									
									eliminar_paciente(lista);
									
								}
								break;
								
								case 3: if(lista==NULL){
									
									cout<<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
									
								}else{
									
									actualizar_paciente(lista);
									
								}
								break;
								
								case 4: if(lista==NULL){
									
									cout<<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
									
								}else {
									
									mostrar_pacientes(lista);
									
								}
								break;
								
								case 5: if(lista==NULL){
									
									cout<<"\n\tNo Hay Pacientes Registrados.....!!!!\n";
									
								}else{
									
									copiar_datos_paciente(lista);
									
								}
								break;
								
								case 6: return 0;
								
								
								default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
								
								}
								
								system("pause");  system("cls");
								
							}while(opcion!=6);
							
							system("pause");
							
							return 0;
						}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment