/*
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;
}